# LiquidityConversionRates

{% hint style="warning" %}
You are referring to the **`Legacy`** version of KyberSwap docs.

For the most updated information, please refer to:

* [**`Classic`**](https://github.com/KyberNetwork/kyberswap-documentation/blob/main/reference/legacy/api-abi/core-smart-contracts/broken-reference/README.md)
* [**`Elastic`**](/reference/legacy/kyberswap-elastic.md)
* [**`Limit Order`**](/kyberswap-solutions/limit-order.md)
* [**`Aggregator`**](/kyberswap-solutions/kyberswap-aggregator.md)
  {% endhint %}

## contract LiquidityConversionRates

is [ConversionRatesInterface](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-conversionratesinterface.md), LiquidityFormula, [Withdrawable](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-withdrawable.md), Utils\ imports [ConversionRatesInterface](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-conversionratesinterface.md), LiquidityFormula, [Withdrawable](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-withdrawable.md), Utils

*Source*: [LiquidityConversionRates.sol](https://github.com/KyberNetwork/smart-contracts/blob/master/contracts/reserves/aprConversionRate/LiquidityConversionRates.sol)

The LiquidityConversionRates contract's role is to allow reserve operators to set liquidity parameters to the automated reserve for automated rate adjustment based on trades.

***

### INDEX[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#index) <a href="#index" id="index"></a>

\<AUTOGENERATED\_TABLE\_OF\_CONTENTS>

### REFERENCE[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#reference) <a href="#reference" id="reference"></a>

#### Events[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#events) <a href="#events" id="events"></a>

#### `LiquidityParamsSet`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#liquidityparamsset) <a href="#liquidityparamsset" id="liquidityparamsset"></a>

Event for logging the setting of liquidity parameters.

***

event **LiquidityParamsSet**(uint rInFp, uint pMinInFp, uint numFpBits, uint maxCapBuyInFp, uint maxEthCapSellInFp, uint feeInBps, uint formulaPrecision, uint maxQtyInFp, uint maxBuyRateInPrecision, uint minBuyRateInPrecision, uint maxSellRateInPrecision, uint minSellRateInPrecision) | Parameter | Type | Description | | --------- |:----------------------:|:---------------------------:| | `uint` | rInFp | price move per 1 ETH inventory change in formula precision | | `uint` | pMinInFp | pMin boundary in formula precision | | `uint` | numFpBits | formula precision (currently 40 is recommended) | | `uint` | maxCapBuyInFp | allowed ETH quantity for a single buy trade in ETH | | `uint` | maxEthCapSellInFp | allowed ETH quantity for a single sell trade in ETH | | `uint` | feeInBps | fees in base points | | `uint` | formulaPrecision | formula precision | | `uint` | maxQtyInFp | max quantity in formula precision | | `uint` | maxBuyRateInPrecision | maximum buy rate in formula precision | | `uint` | minBuyRateInPrecision | minimum buy rate in formula precision | | `uint` | maxSellRateInPrecision | maximum sell rate in formula precision | | `uint` | minSellRateInPrecision | minimum sell rate in formula precision |\\

#### `ReserveAddressSet`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#reserveaddressset) <a href="#reserveaddressset" id="reserveaddressset"></a>

Event for logging the setting of the reserve contract address.

***

event **ReserveAddressSet**(address reserve) | Parameter | Type | Description | | --------- |:--------:|:---------------------------:| | `address` | reserve | reserve's contract address |\\

#### `CollectedFeesReset`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#collectedfeesreset) <a href="#collectedfeesreset" id="collectedfeesreset"></a>

Event for logging of the resetting of the fees collected.

***

event **CollectedFeesReset**(address reserve) | Parameter | Type | Description | | --------- |:----------------:|:---------------------------:| | `uint` | resetFeesInTwei | resetted fees in token wei |\\

#### Functions[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#functions) <a href="#functions" id="functions"></a>

#### `LiquidityConversionRates`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#liquidityconversionrates) <a href="#liquidityconversionrates" id="liquidityconversionrates"></a>

Contract constructor. Note that constructor methods are called exactly once during contract instantiation and cannot be called again.

***

function **LiquidityConversionRates**(address \_admin, ERC20 \_token) public | Parameter | Type | Description | | ---------- |:-------:|:----------------------------:| | `_admin` | address | admin's wallet address | | `_token` | ERC20 | ERC20 token contract address |

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

const fs = require('fs');
const solc = require('solc');
const Web3 = require('web3');

const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
const input = fs.readFileSync('LiquidityConversionRates.sol', 'utf8');
const output = await solc.compile(input, 1);
const bytecode = output.contracts['LiquidityConversionRates'].bytecode;
const abi = JSON.parse(output.contracts['LiquidityConversionRates'].interface);

const LiquidityConversionRates = new web3.eth.Contract(JSON.parse(abi));
const _admin = '<ADMIN ADDRESS>';
const _token = '<TOKEN ADDRESS>';

const deploy = LiquidityConversionRates.deploy({
  data: `0x${bytecode}`,
  arguments: [_admin, _token],
});

broadcastTx(deploy);
```

Code snippet reference: [broadcastTx()](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-web3.md#broadcasting-transactions)

\\

#### `getRate`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#getrate) <a href="#getrate" id="getrate"></a>

Gets the conversion rate of the token to swap.

***

function **getRate**(ERC20 conversionToken, uint currentBlockNumber, bool buy, uint qtyInSrcWei) public view returns(uint) | Parameter | Type | Description | | --------- |:------------------:|:------------------------------------------------------------------:| | `ERC20` | conversionToken | source ERC20 token contract address | | `uint` | currentBlockNumber | current block number | | `bool` | buy | `true` to get the buy rate, otherwise `false` to get the sell rate | | `uint` | qtyInSrcWei | quantity in wei for the source token | **Returns:**\ Conversion rate of the source token and reserve token

\\

#### `resetCollectedFees`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#resetcollectedfees) <a href="#resetcollectedfees" id="resetcollectedfees"></a>

Reset the amount of collected fees. Collected fees can be read through the state variable `collectedFeesInTwei`. Only admin can invoke.

***

function **resetCollectedFees**() public onlyAdmin Modifiers: [onlyAdmin](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-permissiongroups.md#onlyadmin)

\\

#### `setLiquidityParams`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#setliquidityparams) <a href="#setliquidityparams" id="setliquidityparams"></a>

Sets the liquidity parameters of the automated reserve. Only admin can invoke.

***

function **setLiquidityParams**(uint \_rInFp, uint \_pMinInFp, uint \_numFpBits, uint \_maxCapBuyInWei, uint \_maxCapSellInWei, uint \_feeInBps, uint \_maxTokenToEthRateInPrecision, uint \_minTokenToEthRateInPrecision) public onlyAdmin | Parameter | Type | Description | | --------- |:-----------------------------:|:---------------------------:| | `uint` | \_rInFp | price move per 1 ETH inventory change in formula precision | | `uint` | \_pMinInFp | pMin boundary in formula precision | | `uint` | \_numFpBits | formula precision (currently 40 is recommended) | | `uint` | \_maxCapBuyInWei | maximum token quantity in wei for a single buy trade | | `uint` | \_maxCapSellInWei | maximum token quantity in wei for a single sell trade | | `uint` | \_feeInBps | fees in base points | | `uint` | \_maxTokenToEthRateInPrecision | maximum allowed token to ETH rate in formula precision | | `uint` | \_minTokenToEthRateInPrecision | minimum allowed token to ETH rate in formula precision | Modifiers: [onlyAdmin](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-permissiongroups.md#onlyadmin)

\\

#### `setReserveAddress`[​](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-liquidityconversionrates#setreserveaddress) <a href="#setreserveaddress" id="setreserveaddress"></a>

Sets the reserve contract address. Only admin can invoke.

***

function **setReserveAddress**(address reserve) public onlyAdmin | Parameter | Type | Description | | --------- |:-------:|:---------------------------:| | `address` | reserve | reserve's contract address | Modifiers: [onlyAdmin](https://docs.kyberswap.com/Legacy/api-abi/core-smart-contracts/api_abi-permissiongroups.md#onlyadmin)


---

# 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.kyberswap.com/reference/legacy/api-abi/core-smart-contracts/liquidityconversionrates.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.
