# JavBorrowingFees

## General Description

The **JavBorrowingFees** contract used for managing borrowing fees, parameters, and related data in LeverageX.

## Core Functionalities

### **setBorrowingPairParams**

Updates the parameters of a borrowing pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
  * `_value` (`BorrowingPairParams`): New parameters.

***

### **setBorrowingPairParamsArray**

Updates the parameters of multiple borrowing pairs.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_indices` (`uint16[]`): Array of pair indices.
  * `_values` (`BorrowingPairParams[]`): Array of new parameters.

***

### **setBorrowingGroupParams**

Updates the parameters of a borrowing group.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_groupIndex` (`uint16`): Group index.
  * `_value` (`BorrowingGroupParams`): New parameters.

***

### **setBorrowingGroupParamsArray**

Updates the parameters of multiple borrowing groups.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_indices` (`uint16[]`): Array of group indices.
  * `_values` (`BorrowingGroupParams[]`): Array of new parameters.

***

### **handleTradeBorrowingCallback**

Handles borrowing fees and open interests when a trade is opened or closed.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_trader` (`address`): Trader's address.
  * `_pairIndex` (`uint16`): Pair index.
  * `_index` (`uint32`): Trade index.
  * `_positionSizeCollateral` (`uint256`): Trade position size in collateral tokens.
  * `_open` (`bool`): True if trade is opened.
  * `_long` (`bool`): True if trade is long.

***

### **resetTradeBorrowingFees**

Resets borrowing fees for a trade.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_trader` (`address`): Trader's address.
  * `_pairIndex` (`uint16`): Pair index.
  * `_index` (`uint32`): Trade index.
  * `_long` (`bool`): True if trade is long.

***

### **getBorrowingPairPendingAccFees**

Returns pending accumulated borrowing fees for a pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
  * `_currentBlock` (`uint256`): Current block number.
* **Returns:**
  * `accFeeLong` (`uint64`): Accumulated fees on the long side.
  * `accFeeShort` (`uint64`): Accumulated fees on the short side.
  * `pairAccFeeDelta` (`uint64`): Fee delta for the changed side.

***

### **getBorrowingGroupPendingAccFees**

Returns pending accumulated borrowing fees for a group.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_groupIndex` (`uint16`): Group index.
  * `_currentBlock` (`uint256`): Current block number.
* **Returns:**
  * `accFeeLong` (`uint64`): Accumulated fees on the long side.
  * `accFeeShort` (`uint64`): Accumulated fees on the short side.
  * `groupAccFeeDelta` (`uint64`): Fee delta for the changed side.

***

### **getTradeBorrowingFee**

Calculates borrowing fees for a trade.

* **Parameters:**
  * `_input` (`BorrowingFeeInput`): Trade input data.
* **Returns:**
  * `feeAmountCollateral` (`uint256`): Borrowing fee in collateral tokens.

***

### **getTradeLiquidationPrice**

Calculates the liquidation price for a trade.

* **Parameters:**
  * `_input` (`LiqPriceInput`): Trade input data.
* **Returns:**
  * `uint256`: Liquidation price.

***

### **getPairOisCollateral**

Gets open interests for a pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `longOi` (`uint256`): Long open interest.
  * `shortOi` (`uint256`): Short open interest.

***

### **getBorrowingPairGroupIndex**

Gets the borrowing group index for a pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `groupIndex` (`uint16`): Group index.

***

### **getPairOiCollateral**

Gets open interest for a pair on one side.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
  * `_long` (`bool`): True if long side.
* **Returns:**
  * `uint256`: Open interest in collateral tokens.

***

### **withinMaxBorrowingGroupOi**

Checks if a trade is within the max group borrowing open interest.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
  * `_long` (`bool`): True if long side.
  * `_positionSizeCollateral` (`uint256`): Position size in collateral tokens.
* **Returns:**
  * `bool`: True if within max borrowing OI.

***

### **getBorrowingGroup**

Gets data for a borrowing group.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_groupIndex` (`uint16`): Group index.
* **Returns:**
  * `BorrowingData`: Group data.

***

### **getBorrowingPair**

Gets data for a borrowing pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `BorrowingData`: Pair data.

***

### **getBorrowingPairOi**

Gets open interest data for a borrowing pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `OpenInterest`: Open interest data.

***

### **getBorrowingPairGroups**

Gets groups data for a borrowing pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `BorrowingPairGroup[]`: Groups data.

***

### **getAllBorrowingPairs**

Gets all borrowing pair data, open interests, and group data.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
* **Returns:**
  * `BorrowingData[]`: Pair data.
  * `OpenInterest[]`: Open interests.
  * `BorrowingPairGroup[][]`: Group data.

***

### **getBorrowingGroups**

Gets borrowing groups’ data and open interest.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_indices` (`uint16[]`): Group indices.
* **Returns:**
  * `BorrowingData[]`: Group data.
  * `OpenInterest[]`: Open interests.

***

### **getBorrowingInitialAccFees**

Gets initial accumulated borrowing fees for a trade.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_trader` (`address`): Trader’s address.
  * `_index` (`uint32`): Trade index.
* **Returns:**
  * `BorrowingInitialAccFees`: Initial fees data.

***

### **getPairMaxOi**

Gets the max open interest for a pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `uint256`: Max open interest.

***

### **getPairMaxOiCollateral**

Gets the max open interest in collateral tokens for a pair.

* **Parameters:**
  * `_collateralIndex` (`uint8`): Collateral index.
  * `_pairIndex` (`uint16`): Pair index.
* **Returns:**
  * `uint256`: Max open interest in collateral tokens.


---

# 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.javsphere.com/engineering/smart-contracts/leveragex/javborrowingfees.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.
