> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gains.trade/llms.txt
> Use this file to discover all available pages before exploring further.

# GNSPairsStorage

*Facet #1: Pairs storage*

## constructor

```solidity theme={null}
constructor() public
```

## initializeGroupLiquidationParams

```solidity theme={null}
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#groupliquidationparams) | liquidation params for each group (index corresponds to group index) |

## initializeNewFees

```solidity theme={null}
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#globaltradefeeparams) | global trade fee params |

## addPairs

```solidity theme={null}
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#pair) | pairs to add |

## updatePairs

```solidity theme={null}
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#pair) | new pairs values |

## addGroups

```solidity theme={null}
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#group) | groups to add |

## updateGroups

```solidity theme={null}
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#group) | new groups values |

## addFees

```solidity theme={null}
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#feegroup) | fees to add |

## updateFees

```solidity theme={null}
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#feegroup) | new fees values |

## setGroupLiquidationParams

```solidity theme={null}
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#groupliquidationparams) | new liquidation params |

## setGlobalTradeFeeParams

```solidity theme={null}
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#globaltradefeeparams) | new fee params |

## setPairCustomMaxLeverages

```solidity theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
function pairsCount() external view returns (uint256)
```

*Returns number of listed pairs*

## pairSpreadP

```solidity theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
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 theme={null}
function getGlobalTradeFeeParams() external view returns (struct IPairsStorage.GlobalTradeFeeParams)
```

*Returns global trade fee params*

## pairMinFeeUsd

```solidity theme={null}
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 theme={null}
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 theme={null}
function groupsCount() external view returns (uint256)
```

*Returns number of listed groups*

## fees

```solidity theme={null}
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 theme={null}
function feesCount() external view returns (uint256)
```

*Returns number of listed fee groups*

## pairMaxLeverage

```solidity theme={null}
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 theme={null}
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 theme={null}
function getAllPairsRestrictedMaxLeverage() external view returns (uint256[])
```

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

## getGroupLiquidationParams

```solidity theme={null}
function getGroupLiquidationParams(uint256 _groupIndex) external view returns (struct IPairsStorage.GroupLiquidationParams)
```

*Returns a group's liquidation params*

## getPairLiquidationParams

```solidity theme={null}
function getPairLiquidationParams(uint256 _pairIndex) external view returns (struct IPairsStorage.GroupLiquidationParams)
```

*Returns a pair's group liquidation params*
