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

# GNSOtc

*Facet #11: OTC (Handles buy backs and distribution)*

## constructor

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

## initializeOtc

```solidity theme={null}
function initializeOtc(struct IOtc.OtcConfig _config) external
```

*Initializer for OTC facet*

### Parameters

| Name     | Type                                                                                       | Description    |
| -------- | ------------------------------------------------------------------------------------------ | -------------- |
| \_config | [IOtc.OtcConfig](/developer/technical-reference/contracts/interfaces/types/iotc#otcconfig) | new OTC Config |

## updateOtcConfig

```solidity theme={null}
function updateOtcConfig(struct IOtc.OtcConfig _config) external
```

*Updates OTC config*

### Parameters

| Name     | Type                                                                                       | Description                                                                                                                                        |
| -------- | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| \_config | [IOtc.OtcConfig](/developer/technical-reference/contracts/interfaces/types/iotc#otcconfig) | new OTC Config. Sum of `treasuryShareP`, `stakingShareP`, `burnShareP` must equal 100 and `premiumP` must be less than or equal to MAX\_PREMIUM\_P |

## addOtcCollateralBalance

```solidity theme={null}
function addOtcCollateralBalance(uint8 _collateralIndex, uint256 _collateralAmount) external virtual
```

*Increases OTC balance for a collateral*

### Parameters

| Name               | Type    | Description                                             |
| ------------------ | ------- | ------------------------------------------------------- |
| \_collateralIndex  | uint8   | collateral index                                        |
| \_collateralAmount | uint256 | amount of collateral to increase (collateral precision) |

## sellGnsForCollateral

```solidity theme={null}
function sellGnsForCollateral(uint8 _collateralIndex, uint256 _collateralAmount) external
```

*OTC Buys GNS from caller for `_amountCollateral` of `_collateralIndex`*

### Parameters

| Name               | Type    | Description                                          |
| ------------------ | ------- | ---------------------------------------------------- |
| \_collateralIndex  | uint8   | collateral index                                     |
| \_collateralAmount | uint256 | amount of collateral to trade (collateral precision) |

## getOtcConfig

```solidity theme={null}
function getOtcConfig() external view returns (struct IOtc.OtcConfig)
```

*Returns OTC Config*

## getOtcBalance

```solidity theme={null}
function getOtcBalance(uint8 _collateralIndex) external view returns (uint256)
```

*Returns OTC balance for a collateral (collateral precision)*

### Parameters

| Name              | Type  | Description      |
| ----------------- | ----- | ---------------- |
| \_collateralIndex | uint8 | collateral index |

## getOtcRate

```solidity theme={null}
function getOtcRate(uint8 _collateralIndex) external view returns (uint256)
```

*Returns OTC rate (price + premium) of GNS in collateral (1e10)*

### Parameters

| Name              | Type  | Description      |
| ----------------- | ----- | ---------------- |
| \_collateralIndex | uint8 | collateral index |
