# JavFeeTiers

## General Description

The **JavFeeTiers** contract used for managing and calculating fee tiers and volume multipliers for a trading system. It supports defining and updating fee-related parameters for different trading groups and individual traders.

## Core Functionalities

### **`initializeFeeTiers`**

Initializes fee tiers and group volume multipliers.

* **Parameters**:
  * `_groupIndices`: Array of group indices (pairs storage fee index) to initialize.
  * `_groupVolumeMultipliers`: Corresponding group volume multipliers (scaled by 1e3).
  * `_feeTiersIndices`: Array of fee tier indices to initialize.
  * `_feeTiers`: Array of fee tier configurations, including `feeMultiplier` and `pointsThreshold`.

***

### **`setGroupVolumeMultipliers`**

Updates volume multipliers for specified groups.

* **Parameters**:
  * `_groupIndices`: Array of group indices to update.
  * `_groupVolumeMultipliers`: Array of new volume multipliers (scaled by 1e3).

***

### **`setFeeTiers`**

Updates fee tiers with new configurations.

* **Parameters**:
  * `_feeTiersIndices`: Array of fee tier indices to update.
  * `_feeTiers`: Array of updated fee tier configurations, including `feeMultiplier` and `pointsThreshold`.

***

### **`updateTraderPoints`**

Updates a trader’s daily points based on a new trade, recalculates trailing points, and caches the trader's daily fee tier.

* **Parameters**:
  * `_trader`: Address of the trader.
  * `_volumeUsd`: Trading volume in USD (scaled by 1e18).
  * `_pairIndex`: Pair index associated with the trade.

***

### **`calculateFeeAmount`**

Calculates the fee amount for a trader after applying their active fee tier multiplier.

* **Parameters**:
  * `_trader`: Address of the trader.
  * `_normalFeeAmountCollateral`: Base fee amount (in collateral precision).
* **Returns**: Adjusted fee amount after applying the active multiplier.

***

### **`getFeeTiersCount`**

Retrieves the total number of active fee tiers.

* **Returns**: The count of active fee tiers.

***

### **`getFeeTier`**

Fetches the details of a specific fee tier.

* **Parameters**:
  * `_feeTierIndex`: Index of the fee tier.
* **Returns**: Fee tier details including `feeMultiplier` and `pointsThreshold`.

***

### **`getGroupVolumeMultiplier`**

Retrieves the volume multiplier for a specific group.

* **Parameters**:
  * `_groupIndex`: Index of the group (pairs storage fee index).
* **Returns**: Volume multiplier for the specified group.

***

### **`getFeeTiersTraderInfo`**

Gets a trader’s general fee-related information, including the last day updated and trailing points.

* **Parameters**:
  * `_trader`: Address of the trader.
* **Returns**: Trader info as `lastDayUpdated` and `trailingPoints`.

***

### **`getFeeTiersTraderDailyInfo`**

Fetches a trader’s fee tier information for a specific day, including the cached fee multiplier and points.

* **Parameters**:
  * `_trader`: Address of the trader.
  * `_day`: Specific day for which to fetch the information.
* **Returns**: Daily fee tier information as `feeMultiplierCache` and `points`.


---

# 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/javfeetiers.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.
