# GNSPairsStorage

*Facet #1: Pairs storage*

## constructor

```solidity
constructor() public
```

## initializeGroupLiquidationParams

```solidity
function initializeGroupLiquidationParams(struct IPairsStorage.GroupLiquidationParams[] _groupLiquidationParams) external
```

*Initializes liquidation params for all existing groups*

### Parameters

| Name                     | Type                                                                                                                                          | Description                                                          |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| \_groupLiquidationParams | [IPairsStorage.GroupLiquidationParams\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#groupliquidationparams) | liquidation params for each group (index corresponds to group index) |

## initializeNewFees

```solidity
function initializeNewFees(struct IPairsStorage.GlobalTradeFeeParams _tradeFeeParams) external
```

*Copies all existing fee groups to new mapping, multiplies existing groups min/max lev by 1e3, initializes new global trade fee params*

### Parameters

| Name             | Type                                                                                                                                  | Description             |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| \_tradeFeeParams | [IPairsStorage.GlobalTradeFeeParams](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#globaltradefeeparams) | global trade fee params |

## addPairs

```solidity
function addPairs(struct IPairsStorage.Pair[] _pairs) external
```

*Adds new trading pairs*

### Parameters

| Name    | Type                                                                                                      | Description  |
| ------- | --------------------------------------------------------------------------------------------------------- | ------------ |
| \_pairs | [IPairsStorage.Pair\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#pair) | pairs to add |

## updatePairs

```solidity
function updatePairs(uint256[] _pairIndices, struct IPairsStorage.Pair[] _pairs) external
```

*Updates trading pairs*

### Parameters

| Name          | Type                                                                                                      | Description      |
| ------------- | --------------------------------------------------------------------------------------------------------- | ---------------- |
| \_pairIndices | uint256\[]                                                                                                | indices of pairs |
| \_pairs       | [IPairsStorage.Pair\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#pair) | new pairs values |

## addGroups

```solidity
function addGroups(struct IPairsStorage.Group[] _groups) external
```

*Adds new pair groups*

### Parameters

| Name     | Type                                                                                                        | Description   |
| -------- | ----------------------------------------------------------------------------------------------------------- | ------------- |
| \_groups | [IPairsStorage.Group\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#group) | groups to add |

## updateGroups

```solidity
function updateGroups(uint256[] _ids, struct IPairsStorage.Group[] _groups) external
```

*Updates pair groups*

### Parameters

| Name     | Type                                                                                                        | Description       |
| -------- | ----------------------------------------------------------------------------------------------------------- | ----------------- |
| \_ids    | uint256\[]                                                                                                  | indices of groups |
| \_groups | [IPairsStorage.Group\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#group) | new groups values |

## addFees

```solidity
function addFees(struct IPairsStorage.FeeGroup[] _fees) external
```

*Adds new pair fees groups*

### Parameters

| Name   | Type                                                                                                              | Description |
| ------ | ----------------------------------------------------------------------------------------------------------------- | ----------- |
| \_fees | [IPairsStorage.FeeGroup\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#feegroup) | fees to add |

## updateFees

```solidity
function updateFees(uint256[] _ids, struct IPairsStorage.FeeGroup[] _fees) external
```

*Updates pair fees groups*

### Parameters

| Name   | Type                                                                                                              | Description     |
| ------ | ----------------------------------------------------------------------------------------------------------------- | --------------- |
| \_ids  | uint256\[]                                                                                                        | indices of fees |
| \_fees | [IPairsStorage.FeeGroup\[\]](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#feegroup) | new fees values |

## setGroupLiquidationParams

```solidity
function setGroupLiquidationParams(uint256 _groupIndex, struct IPairsStorage.GroupLiquidationParams _params) external
```

*Updates group liquidation params (will only apply for trades opened after the change)*

### Parameters

| Name         | Type                                                                                                                                      | Description            |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| \_groupIndex | uint256                                                                                                                                   | index of group         |
| \_params     | [IPairsStorage.GroupLiquidationParams](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#groupliquidationparams) | new liquidation params |

## setGlobalTradeFeeParams

```solidity
function setGlobalTradeFeeParams(struct IPairsStorage.GlobalTradeFeeParams _feeParams) external
```

*Updates global trade fee params*

### Parameters

| Name        | Type                                                                                                                                  | Description    |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| \_feeParams | [IPairsStorage.GlobalTradeFeeParams](/developer/technical-reference/contracts/interfaces/types/ipairsstorage.md#globaltradefeeparams) | new fee params |

## setPairCustomMaxLeverages

```solidity
function setPairCustomMaxLeverages(uint256[] _indices, uint256[] _values) external
```

*Updates pair custom max leverages (if unset group default is used); useful to delist a pair if new value is below the pair's group minLeverage*

### Parameters

| Name      | Type       | Description                              |
| --------- | ---------- | ---------------------------------------- |
| \_indices | uint256\[] | indices of pairs                         |
| \_values  | uint256\[] | new custom max leverages (1e3 precision) |

## pairJob

```solidity
function pairJob(uint256 _pairIndex) external view returns (string, string)
```

*Returns data needed by price aggregator when doing a new price request*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

### Return Values

| Name | Type   | Description |
| ---- | ------ | ----------- |
| \[0] | string |             |
| \[1] | string |             |

## isPairListed

```solidity
function isPairListed(string _from, string _to) external view returns (bool)
```

*Returns whether a pair is listed*

### Parameters

| Name   | Type   | Description         |
| ------ | ------ | ------------------- |
| \_from | string | pair from (eg. BTC) |
| \_to   | string | pair to (eg. USD)   |

## isPairIndexListed

```solidity
function isPairIndexListed(uint256 _pairIndex) external view returns (bool)
```

*Returns whether a pair index is listed*

### Parameters

| Name        | Type    | Description            |
| ----------- | ------- | ---------------------- |
| \_pairIndex | uint256 | index of pair to check |

## pairs

```solidity
function pairs(uint256 _index) external view returns (struct IPairsStorage.Pair)
```

*Returns a pair's details*

### Parameters

| Name    | Type    | Description   |
| ------- | ------- | ------------- |
| \_index | uint256 | index of pair |

## pairsCount

```solidity
function pairsCount() external view returns (uint256)
```

*Returns number of listed pairs*

## pairSpreadP

```solidity
function pairSpreadP(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's spread % (1e10 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairMinLeverage

```solidity
function pairMinLeverage(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's min leverage (1e3 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairTotalPositionSizeFeeP

```solidity
function pairTotalPositionSizeFeeP(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's total position size fee % (1e10 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairTotalLiqCollateralFeeP

```solidity
function pairTotalLiqCollateralFeeP(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's total liquidation collateral fee % (1e10 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairOraclePositionSizeFeeP

```solidity
function pairOraclePositionSizeFeeP(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's oracle position size fee % (1e10 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairMinPositionSizeUsd

```solidity
function pairMinPositionSizeUsd(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's min position size in USD (1e18 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## getGlobalTradeFeeParams

```solidity
function getGlobalTradeFeeParams() external view returns (struct IPairsStorage.GlobalTradeFeeParams)
```

*Returns global trade fee params*

## pairMinFeeUsd

```solidity
function pairMinFeeUsd(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's minimum trading fee in USD (1e18 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## groups

```solidity
function groups(uint256 _index) external view returns (struct IPairsStorage.Group)
```

*Returns a group details*

### Parameters

| Name    | Type    | Description    |
| ------- | ------- | -------------- |
| \_index | uint256 | index of group |

## groupsCount

```solidity
function groupsCount() external view returns (uint256)
```

*Returns number of listed groups*

## fees

```solidity
function fees(uint256 _index) external view returns (struct IPairsStorage.FeeGroup)
```

*Returns a fee group details*

### Parameters

| Name    | Type    | Description        |
| ------- | ------- | ------------------ |
| \_index | uint256 | index of fee group |

## feesCount

```solidity
function feesCount() external view returns (uint256)
```

*Returns number of listed fee groups*

## pairMaxLeverage

```solidity
function pairMaxLeverage(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's active max leverage; custom if set, otherwise group default (1e3 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## pairCustomMaxLeverage

```solidity
function pairCustomMaxLeverage(uint256 _pairIndex) external view returns (uint256)
```

*Returns a pair's custom max leverage; 0 if not set (1e3 precision)*

### Parameters

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_pairIndex | uint256 | index of pair |

## getAllPairsRestrictedMaxLeverage

```solidity
function getAllPairsRestrictedMaxLeverage() external view returns (uint256[])
```

*Returns all listed pairs custom max leverages (1e3 precision)*

## getGroupLiquidationParams

```solidity
function getGroupLiquidationParams(uint256 _groupIndex) external view returns (struct IPairsStorage.GroupLiquidationParams)
```

*Returns a group's liquidation params*

## getPairLiquidationParams

```solidity
function getPairLiquidationParams(uint256 _pairIndex) external view returns (struct IPairsStorage.GroupLiquidationParams)
```

*Returns a pair's group liquidation params*


---

# 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/core/facets/gnspairsstorage.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.
