# IBorrowingFees

*Contains the types for the GNSBorrowingFees facet*

## BorrowingFeesStorage

```solidity
struct BorrowingFeesStorage {
  mapping(uint8 => mapping(uint16 => struct IBorrowingFees.BorrowingData)) pairs;
  mapping(uint8 => mapping(uint16 => struct IBorrowingFees.BorrowingPairGroup[])) pairGroups;
  mapping(uint8 => mapping(uint16 => struct IBorrowingFees.OpenInterest)) pairOis;
  mapping(uint8 => mapping(uint16 => struct IBorrowingFees.BorrowingData)) groups;
  mapping(uint8 => mapping(uint16 => struct IBorrowingFees.OpenInterest)) groupOis;
  mapping(uint8 => mapping(address => mapping(uint32 => struct IBorrowingFees.BorrowingInitialAccFees))) initialAccFees;
  uint256[44] __gap;
}
```

## BorrowingData

```solidity
struct BorrowingData {
  uint32 feePerBlock;
  uint64 accFeeLong;
  uint64 accFeeShort;
  uint48 accLastUpdatedBlock;
  uint48 feeExponent;
}
```

## BorrowingPairGroup

```solidity
struct BorrowingPairGroup {
  uint16 groupIndex;
  uint48 block;
  uint64 initialAccFeeLong;
  uint64 initialAccFeeShort;
  uint64 prevGroupAccFeeLong;
  uint64 prevGroupAccFeeShort;
  uint64 pairAccFeeLong;
  uint64 pairAccFeeShort;
  uint64 __placeholder;
}
```

## OpenInterest

```solidity
struct OpenInterest {
  uint72 long;
  uint72 short;
  uint72 max;
  uint40 __placeholder;
}
```

## BorrowingInitialAccFees

```solidity
struct BorrowingInitialAccFees {
  uint64 accPairFee;
  uint64 accGroupFee;
  uint48 block;
  uint80 __placeholder;
}
```

## BorrowingPairParams

```solidity
struct BorrowingPairParams {
  uint16 groupIndex;
  uint32 feePerBlock;
  uint48 feeExponent;
  uint72 maxOi;
}
```

## BorrowingGroupParams

```solidity
struct BorrowingGroupParams {
  uint32 feePerBlock;
  uint72 maxOi;
  uint48 feeExponent;
}
```

## BorrowingFeeInput

```solidity
struct BorrowingFeeInput {
  uint8 collateralIndex;
  address trader;
  uint16 pairIndex;
  uint32 index;
  bool long;
  uint256 collateral;
  uint256 leverage;
}
```

## LiqPriceInput

```solidity
struct LiqPriceInput {
  uint8 collateralIndex;
  address trader;
  uint16 pairIndex;
  uint32 index;
  uint64 openPrice;
  bool long;
  uint256 collateral;
  uint256 leverage;
  bool useBorrowingFees;
  struct IPairsStorage.GroupLiquidationParams liquidationParams;
}
```

## PendingBorrowingAccFeesInput

```solidity
struct PendingBorrowingAccFeesInput {
  uint64 accFeeLong;
  uint64 accFeeShort;
  uint256 oiLong;
  uint256 oiShort;
  uint32 feePerBlock;
  uint256 currentBlock;
  uint256 accLastUpdatedBlock;
  uint72 maxOi;
  uint48 feeExponent;
  uint128 collateralPrecision;
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gains.trade/developer/technical-reference/contracts/interfaces/types/iborrowingfees.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
