# MoCInrate

View Source: [contracts/MoCInrate.sol](https://github.com/money-on-chain/main-RBTC-contract/blob/master-gitbook/contracts/MoCInrate.sol)

**↗ Extends:** [**MoCInrateEvents**](https://github.com/money-on-chain/main-RBTC-contract/blob/master-gitbook/docs/abis/MoCInrateEvents.md)**,** [**MoCInrateStructs**](https://github.com/money-on-chain/main-RBTC-contract/blob/master-gitbook/docs/abis/MoCInrateStructs.md)**,** [**MoCBase**](https://github.com/money-on-chain/main-RBTC-contract/blob/master-gitbook/docs/abis/MoCBase.md)**,** [**MoCLibConnection**](/main-rbtc-contract/smart-contracts/abis-documentation/moclibconnection.md)**,** [**Governed**](/main-rbtc-contract/smart-contracts/abis-documentation/governed.md)**,** [**IMoCInrate**](https://github.com/money-on-chain/main-RBTC-contract/blob/master-gitbook/docs/abis/IMoCInrate.md)

**MoCInrate** - version: 0.1.12

## Structs

### InrateParams

```js
struct InrateParams {
 uint256 tMax,
 uint256 tMin,
 uint256 power
}
```

### InitializeParams

```js
struct InitializeParams {
 address connectorAddress,
 address governor,
 uint256 btcxTmin,
 uint256 btcxPower,
 uint256 btcxTmax,
 uint256 bitProRate,
 uint256 blockSpanBitPro,
 address payable bitProInterestTargetAddress,
 address payable commissionsAddressTarget,
 uint256 docTmin,
 uint256 docPower,
 uint256 docTmax
}
```

## Contract Members

**Constants & Variables**

```js
struct MoCInrateStructs.InrateParams internal btcxParams;
```

***

```js
contract IMoCState internal mocState;
```

***

```js
address internal DEPRECATED_mocConverter;
```

***

```js
contract MoCBProxManager internal bproxManager;
```

***

```js
uint256 public lastDailyPayBlock;
```

***

```js
uint256 public bitProRate;
```

***

```js
address payable public bitProInterestAddress;
```

***

```js
uint256 public lastBitProInterestBlock;
```

***

```js
uint256 public bitProInterestBlockSpan;
```

***

```js
address payable public commissionsAddress;
```

***

```js
uint256 public DEPRECATED_commissionRate;
```

***

```js
uint256 public docTmin;
```

***

```js
uint256 public docPower;
```

***

```js
uint256 public docTmax;
```

***

```js
uint8 public constant MINT_BPRO_FEES_RBTC;
```

***

```js
uint8 public constant REDEEM_BPRO_FEES_RBTC;
```

***

```js
uint8 public constant MINT_DOC_FEES_RBTC;
```

***

```js
uint8 public constant REDEEM_DOC_FEES_RBTC;
```

***

```js
uint8 public constant MINT_BTCX_FEES_RBTC;
```

***

```js
uint8 public constant REDEEM_BTCX_FEES_RBTC;
```

***

```js
uint8 public constant MINT_BPRO_FEES_MOC;
```

***

```js
uint8 public constant REDEEM_BPRO_FEES_MOC;
```

***

```js
uint8 public constant MINT_DOC_FEES_MOC;
```

***

```js
uint8 public constant REDEEM_DOC_FEES_MOC;
```

***

```js
uint8 public constant MINT_BTCX_FEES_MOC;
```

***

```js
uint8 public constant REDEEM_BTCX_FEES_MOC;
```

***

```js
mapping(uint8 => uint256) public commissionRatesByTxType;
```

***

```js
uint256[50] private upgradeGap;
```

***

## InrateDailyPay

**Parameters**

| Name             | Type    | Description |
| ---------------- | ------- | ----------- |
| amount           | uint256 |             |
| daysToSettlement | uint256 |             |
| nReserveBucketC0 | uint256 |             |

## RiskProHoldersInterestPay

**Parameters**

| Name                      | Type    | Description |
| ------------------------- | ------- | ----------- |
| amount                    | uint256 |             |
| nReserveBucketC0BeforePay | uint256 |             |

## Modifiers

* [onlyOnceADay](#onlyonceaday)
* [onlyWhenBitProInterestsIsEnabled](#onlywhenbitprointerestsisenabled)

### onlyOnceADay

```js
modifier onlyOnceADay() internal
```

**Arguments**

### onlyWhenBitProInterestsIsEnabled

```js
modifier onlyWhenBitProInterestsIsEnabled() internal
```

**Arguments**

## Functions

* [setDoCTmin(uint256 \_docTmin)](#setdoctmin)
* [setDoCTmax(uint256 \_docTmax)](#setdoctmax)
* [setDoCPower(uint256 \_docPower)](#setdocpower)
* [getDoCTmin()](#getdoctmin)
* [getDoCTmax()](#getdoctmax)
* [getDoCPower()](#getdocpower)
* [docInrateAvg(uint256 docRedeem)](#docinrateavg)
* [initialize(struct MoCInrateStructs.InitializeParams params)](#initialize)
* [getBtcxTmin()](#getbtcxtmin)
* [getBtcxTmax()](#getbtcxtmax)
* [getBtcxPower()](#getbtcxpower)
* [getBitProInterestBlockSpan()](#getbitprointerestblockspan)
* [setBtcxTmin(uint256 \_btxcTmin)](#setbtcxtmin)
* [setBtcxTmax(uint256 \_btxcTax)](#setbtcxtmax)
* [setBtcxPower(uint256 \_btxcPower)](#setbtcxpower)
* [getBitProRate()](#getbitprorate)
* [setBitProRate(uint256 newBitProRate)](#setbitprorate)
* [setBitProInterestBlockSpan(uint256 newBitProBlockSpan)](#setbitprointerestblockspan)
* [getBitProInterestAddress()](#getbitprointerestaddress)
* [setBitProInterestAddress(address payable newBitProInterestAddress)](#setbitprointerestaddress)
* [setCommissionsAddress(address payable newCommissionsAddress)](#setcommissionsaddress)
* [spotInrate()](#spotinrate)
* [btcxInrateAvg(bytes32 bucket, uint256 btcAmount, bool onMinting)](#btcxinrateavg)
* [dailyInrate()](#dailyinrate)
* [calcMintInterestValues(bytes32 bucket, uint256 rbtcAmount)](#calcmintinterestvalues)
* [calcDocRedInterestValues(uint256 docAmount, uint256 rbtcAmount)](#calcdocredinterestvalues)
* [calcFinalRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem)](#calcfinalredeeminterestvalue)
* [calcCommissionValue(uint256 rbtcAmount, uint8 txType)](#calccommissionvalue)
* [calcCommissionValue(uint256 rbtcAmount)](#calccommissionvalue)
* [calculateVendorMarkup(address vendorAccount, uint256 amount)](#calculatevendormarkup)
* [calcRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem)](#calcredeeminterestvalue)
* [dailyInratePayment()](#dailyinratepayment)
* [isDailyEnabled()](#isdailyenabled)
* [isBitProInterestEnabled()](#isbitprointerestenabled)
* [calculateBitProHoldersInterest()](#calculatebitproholdersinterest)
* [payBitProHoldersInterestPayment()](#paybitproholdersinterestpayment)
* [setCommissionRateByTxType(uint8 txType, uint256 value)](#setcommissionratebytxtype)
* [inrateToSettlement(uint256 inrate, bool countAllDays)](#inratetosettlement)
* [calcProportionalInterestValue(bytes32 bucket, uint256 redeemInterest)](#calcproportionalinterestvalue)
* [calcFullRedeemInterestValue(bytes32 bucket)](#calcfullredeeminterestvalue)
* [simulateDocMovement(bytes32 bucket, uint256 btcAmount, bool onMinting)](#simulatedocmovement)
* [inrateDayCount(bool countAllDays)](#inratedaycount)
* [initializeContracts()](#initializecontracts)
* [initializeValues(address \_governor, uint256 btcxMin, uint256 btcxPower, uint256 btcxMax, uint256 \_bitProRate, address payable commissionsAddressTarget, uint256 blockSpanBitPro, address payable bitProInterestsTarget, uint256 \_docTmin, uint256 \_docPower, uint256 \_docTmax)](#initializevalues)

### setDoCTmin

```js
function setDoCTmin(uint256 _docTmin) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name      | Type    | Description |
| --------- | ------- | ----------- |
| \_docTmin | uint256 |             |

### setDoCTmax

```js
function setDoCTmax(uint256 _docTmax) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name      | Type    | Description |
| --------- | ------- | ----------- |
| \_docTmax | uint256 |             |

### setDoCPower

```js
function setDoCPower(uint256 _docPower) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| \_docPower | uint256 |             |

### getDoCTmin

```js
function getDoCTmin() public view
returns(uint256)
```

**Arguments**

### getDoCTmax

```js
function getDoCTmax() public view
returns(uint256)
```

**Arguments**

### getDoCPower

```js
function getDoCPower() public view
returns(uint256)
```

**Arguments**

### docInrateAvg

Calculates an average interest rate between after and before free doc Redemption

```js
function docInrateAvg(uint256 docRedeem) public view
returns(uint256)
```

**Returns**

Interest rate value \[using mocPrecision]

**Arguments**

| Name      | Type    | Description                          |
| --------- | ------- | ------------------------------------ |
| docRedeem | uint256 | Docs to redeem \[using mocPrecision] |

### initialize

Initializes the contract

```js
function initialize(struct MoCInrateStructs.InitializeParams params) public nonpayable initializer 
```

**Arguments**

| Name   | Type                                     | Description                               |
| ------ | ---------------------------------------- | ----------------------------------------- |
| params | struct MoCInrateStructs.InitializeParams | Params defined in InitializeParams struct |

### getBtcxTmin

gets tMin param of BTCX tokens

```js
function getBtcxTmin() public view
returns(uint256)
```

**Returns**

returns tMin of BTCX

**Arguments**

### getBtcxTmax

gets tMax param of BTCX tokens

```js
function getBtcxTmax() public view
returns(uint256)
```

**Returns**

returns tMax of BTCX

**Arguments**

### getBtcxPower

gets power param of BTCX tokens

```js
function getBtcxPower() public view
returns(uint256)
```

**Returns**

returns power of BTCX

**Arguments**

### getBitProInterestBlockSpan

⤾ overrides IMoCInrate.getBitProInterestBlockSpan

Gets the blockspan of BPRO that represents the frecuency of BitPro holders intereset payment

```js
function getBitProInterestBlockSpan() public view
returns(uint256)
```

**Returns**

returns power of bitProInterestBlockSpan

**Arguments**

### setBtcxTmin

sets tMin param of BTCX tokens

```js
function setBtcxTmin(uint256 _btxcTmin) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name       | Type    | Description  |
| ---------- | ------- | ------------ |
| \_btxcTmin | uint256 | tMin of BTCX |

### setBtcxTmax

sets tMax param of BTCX tokens

```js
function setBtcxTmax(uint256 _btxcTax) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name      | Type    | Description  |
| --------- | ------- | ------------ |
| \_btxcTax | uint256 | tMax of BTCX |

### setBtcxPower

sets power param of BTCX tokens

```js
function setBtcxPower(uint256 _btxcPower) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name        | Type    | Description   |
| ----------- | ------- | ------------- |
| \_btxcPower | uint256 | power of BTCX |

### getBitProRate

⤾ overrides IMoCInrate.getBitProRate

Gets the rate for BitPro Holders

```js
function getBitProRate() public view
returns(uint256)
```

**Returns**

BitPro Rate

**Arguments**

### setBitProRate

Sets BitPro Holders rate

```js
function setBitProRate(uint256 newBitProRate) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name          | Type    | Description     |
| ------------- | ------- | --------------- |
| newBitProRate | uint256 | New BitPro rate |

### setBitProInterestBlockSpan

⤾ overrides IMoCInrate.setBitProInterestBlockSpan

Sets the blockspan BitPro Intereset rate payment is enable to be executed

```js
function setBitProInterestBlockSpan(uint256 newBitProBlockSpan) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name               | Type    | Description           |
| ------------------ | ------- | --------------------- |
| newBitProBlockSpan | uint256 | New BitPro Block span |

### getBitProInterestAddress

⤾ overrides IMoCInrate.getBitProInterestAddress

Gets the target address to transfer BitPro Holders rate

```js
function getBitProInterestAddress() public view
returns(address payable)
```

**Returns**

Target address to transfer BitPro Holders interest

**Arguments**

### setBitProInterestAddress

Sets the target address to transfer BitPro Holders rate

```js
function setBitProInterestAddress(address payable newBitProInterestAddress) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name                     | Type            | Description     |
| ------------------------ | --------------- | --------------- |
| newBitProInterestAddress | address payable | New BitPro rate |

### setCommissionsAddress

Sets the target address to transfer commissions of Mint/Redeem transactions

```js
function setCommissionsAddress(address payable newCommissionsAddress) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name                  | Type            | Description            |
| --------------------- | --------------- | ---------------------- |
| newCommissionsAddress | address payable | New commisions address |

### spotInrate

Calculates interest rate for BProx Minting, redeem and Free Doc Redeem

> ⚠ This has been deprecated since the [Proposal to remove leveraged positions](https://forum.moneyonchain.com/t/removal-of-leveraged-positions/298) from the protocol was **approved**, however it is necessary to maintain the contracts and their documentation for legacy support.

```js
function spotInrate() public view
returns(uint256)
```

**Returns**

Interest rate value \[using RatePrecsion]

**Arguments**

### btcxInrateAvg

Calculates an average interest rate between after and before mint/redeem

```js
function btcxInrateAvg(bytes32 bucket, uint256 btcAmount, bool onMinting) public view
returns(uint256)
```

**Returns**

Interest rate value \[using mocPrecision]

**Arguments**

| Name      | Type    | Description                                                                       |
| --------- | ------- | --------------------------------------------------------------------------------- |
| bucket    | bytes32 | Name of the bucket involved in the operation                                      |
| btcAmount | uint256 | Value of the operation from which calculates the inrate \[using reservePrecision] |
| onMinting | bool    | Value that represents if the calculation is based on mint or on redeem            |

### dailyInrate

returns the amount of BTC to pay in concept of interest to bucket C0

```js
function dailyInrate() public view
returns(uint256)
```

**Arguments**

### calcMintInterestValues

⤾ overrides IMoCInrate.calcMintInterestValues

Extract the inrate from the passed RBTC value for Bprox minting operation

> ⚠ This has been deprecated since the [Proposal to remove leveraged positions](https://forum.moneyonchain.com/t/removal-of-leveraged-positions/298) from the protocol was **approved**, however it is necessary to maintain the contracts and their documentation for legacy support.

```js
function calcMintInterestValues(bytes32 bucket, uint256 rbtcAmount) public view
returns(uint256)
```

**Returns**

RBTC to pay in concept of interests \[using reservePrecision]

**Arguments**

| Name       | Type    | Description                                                                |
| ---------- | ------- | -------------------------------------------------------------------------- |
| bucket     | bytes32 | Bucket to use to calculate interés                                         |
| rbtcAmount | uint256 | Total value from which extract the interest rate \[using reservePrecision] |

### calcDocRedInterestValues

⤾ overrides IMoCInrate.calcDocRedInterestValues

Extract the inrate from the passed RBTC value for the Doc Redeem operation

```js
function calcDocRedInterestValues(uint256 docAmount, uint256 rbtcAmount) public view
returns(uint256)
```

**Returns**

RBTC to pay in concept of interests \[using reservePrecision]

**Arguments**

| Name       | Type    | Description                                                                |
| ---------- | ------- | -------------------------------------------------------------------------- |
| docAmount  | uint256 | Doc amount of the redemption \[using mocPrecision]                         |
| rbtcAmount | uint256 | Total value from which extract the interest rate \[using reservePrecision] |

### calcFinalRedeemInterestValue

⤾ overrides IMoCInrate.calcFinalRedeemInterestValue

This function calculates the interest to return to the user in a BPRox redemption. It uses a mechanism to counteract the effect of free docs redemption. It will be replaced with FreeDoC redemption interests in the future

> ⚠ This has been deprecated since the [Proposal to remove leveraged positions](https://forum.moneyonchain.com/t/removal-of-leveraged-positions/298) from the protocol was **approved**, however it is necessary to maintain the contracts and their documentation for legacy support.

```js
function calcFinalRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem) public view
returns(uint256)
```

**Returns**

RBTC to recover in concept of interests \[using reservePrecision]

**Arguments**

| Name         | Type    | Description                                                         |
| ------------ | ------- | ------------------------------------------------------------------- |
| bucket       | bytes32 | Bucket to use to calculate interest                                 |
| rbtcToRedeem | uint256 | Total value from which calculate interest \[using reservePrecision] |

### calcCommissionValue

⤾ overrides IMoCInrate.calcCommissionValue

calculates the Commission rate from the passed RBTC amount and the transaction type for mint/redeem operations

```js
function calcCommissionValue(uint256 rbtcAmount, uint8 txType) public view
returns(uint256)
```

**Returns**

finalCommissionAmount \[using reservePrecision]

**Arguments**

| Name       | Type    | Description                                                                |
| ---------- | ------- | -------------------------------------------------------------------------- |
| rbtcAmount | uint256 | Total value from which apply the Commission rate \[using reservePrecision] |
| txType     | uint8   | Transaction type according to constant values defined in this contract     |

### calcCommissionValue

DEPRECATED calculates the Commission rate from the passed RBTC amount for mint/redeem operations

```js
function calcCommissionValue(uint256 rbtcAmount) external view
returns(uint256)
```

**Returns**

finalCommissionAmount \[using reservePrecision]

**Arguments**

| Name       | Type    | Description                                                                |
| ---------- | ------- | -------------------------------------------------------------------------- |
| rbtcAmount | uint256 | Total value from which apply the Commission rate \[using reservePrecision] |

### calculateVendorMarkup

⤾ overrides IMoCInrate.calculateVendorMarkup

calculates the vendor markup rate from the passed vendor account and amount

```js
function calculateVendorMarkup(address vendorAccount, uint256 amount) public view
returns(markup uint256)
```

**Returns**

finalCommissionAmount \[using reservePrecision]

**Arguments**

| Name          | Type    | Description                                                                   |
| ------------- | ------- | ----------------------------------------------------------------------------- |
| vendorAccount | address | Vendor address                                                                |
| amount        | uint256 | Total value from which apply the vendor markup rate \[using reservePrecision] |

### calcRedeemInterestValue

Calculates RBTC value to return to the user in concept of interests

```js
function calcRedeemInterestValue(bytes32 bucket, uint256 rbtcToRedeem) public view
returns(uint256)
```

**Returns**

RBTC to recover in concept of interests \[using reservePrecision]

**Arguments**

| Name         | Type    | Description                                                         |
| ------------ | ------- | ------------------------------------------------------------------- |
| bucket       | bytes32 | Bucket to use to calculate interest                                 |
| rbtcToRedeem | uint256 | Total value from which calculate interest \[using reservePrecision] |

### dailyInratePayment

⤾ overrides IMoCInrate.dailyInratePayment

Moves the daily amount of interest rate to C0 bucket

```js
function dailyInratePayment() public nonpayable onlyWhitelisted onlyOnceADay 
returns(uint256)
```

**Arguments**

### isDailyEnabled

⤾ overrides IMoCInrate.isDailyEnabled

```js
function isDailyEnabled() public view
returns(bool)
```

**Arguments**

### isBitProInterestEnabled

⤾ overrides IMoCInrate.isBitProInterestEnabled

```js
function isBitProInterestEnabled() public view
returns(bool)
```

**Arguments**

### calculateBitProHoldersInterest

⤾ overrides IMoCInrate.calculateBitProHoldersInterest

Calculates BitPro Holders interest rates

```js
function calculateBitProHoldersInterest() public view
returns(uint256, uint256)
```

**Returns**

toPay interest in RBTC \[using RBTCPrecsion]

**Arguments**

### payBitProHoldersInterestPayment

⤾ overrides IMoCInrate.payBitProHoldersInterestPayment

Pays the BitPro Holders interest rates

```js
function payBitProHoldersInterestPayment() public nonpayable onlyWhitelisted onlyWhenBitProInterestsIsEnabled 
returns(uint256)
```

**Returns**

interest payed in RBTC \[using RBTCPrecsion]

**Arguments**

### setCommissionRateByTxType

Sets the commission rate to a particular transaction type

```js
function setCommissionRateByTxType(uint8 txType, uint256 value) public nonpayable onlyAuthorizedChanger 
```

**Arguments**

| Name   | Type    | Description                                                            |
| ------ | ------- | ---------------------------------------------------------------------- |
| txType | uint8   | Transaction type according to constant values defined in this contract |
| value  | uint256 | Commission rate                                                        |

### inrateToSettlement

Calculates the interest rate to pay until the settlement day

```js
function inrateToSettlement(uint256 inrate, bool countAllDays) internal view
returns(uint256)
```

**Returns**

Interest rate value \[using RatePrecsion]

**Arguments**

| Name         | Type    | Description                                                                |
| ------------ | ------- | -------------------------------------------------------------------------- |
| inrate       | uint256 | Spot interest rate                                                         |
| countAllDays | bool    | Value that represents if the calculation will use all days or one day less |

### calcProportionalInterestValue

This function calculates the interest to return to a user redeeming BTCx as a proportion of the amount in the interestBag.

```js
function calcProportionalInterestValue(bytes32 bucket, uint256 redeemInterest) internal view
returns(uint256)
```

**Returns**

InterestsInBag \* (RedeemInterests / FullRedeemInterest) \[using reservePrecision]

**Arguments**

| Name           | Type    | Description                                                         |
| -------------- | ------- | ------------------------------------------------------------------- |
| bucket         | bytes32 | Bucket to use to calculate interest                                 |
| redeemInterest | uint256 | Total value from which calculate interest \[using reservePrecision] |

### calcFullRedeemInterestValue

This function calculates the interest to return if a user redeem all Btcx in existance

```js
function calcFullRedeemInterestValue(bytes32 bucket) internal view
returns(uint256)
```

**Returns**

Interests \[using reservePrecision]

**Arguments**

| Name   | Type    | Description                         |
| ------ | ------- | ----------------------------------- |
| bucket | bytes32 | Bucket to use to calculate interest |

### simulateDocMovement

Calculates the final amount of Bucket 0 DoCs on BProx mint/redeem

> ⚠ This has been deprecated since the [Proposal to remove leveraged positions](https://forum.moneyonchain.com/t/removal-of-leveraged-positions/298) from the protocol was **approved**, however it is necessary to maintain the contracts and their documentation for legacy support.

```js
function simulateDocMovement(bytes32 bucket, uint256 btcAmount, bool onMinting) internal view
returns(uint256)
```

**Returns**

Final bucket 0 Doc amount

**Arguments**

| Name      | Type    | Description                                                                       |
| --------- | ------- | --------------------------------------------------------------------------------- |
| bucket    | bytes32 | Name of the bucket involved in the operation                                      |
| btcAmount | uint256 | Value of the operation from which calculates the inrate \[using reservePrecision] |
| onMinting | bool    |                                                                                   |

### inrateDayCount

Returns the days to use for interests calculation

```js
function inrateDayCount(bool countAllDays) internal view
returns(uint256)
```

**Returns**

days \[using dayPrecision]

**Arguments**

| Name         | Type | Description                                                            |
| ------------ | ---- | ---------------------------------------------------------------------- |
| countAllDays | bool | Value that represents if the calculation is based on mint or on redeem |

### initializeContracts

Initialize the contracts with which it interacts

```js
function initializeContracts() internal nonpayable
```

**Arguments**

### initializeValues

Initialize the parameters of the contract

```js
function initializeValues(address _governor, uint256 btcxMin, uint256 btcxPower, uint256 btcxMax, uint256 _bitProRate, address payable commissionsAddressTarget, uint256 blockSpanBitPro, address payable bitProInterestsTarget, uint256 _docTmin, uint256 _docPower, uint256 _docTmax) internal nonpayable
```

**Arguments**

| Name                     | Type            | Description                                                             |
| ------------------------ | --------------- | ----------------------------------------------------------------------- |
| \_governor               | address         | the address of the IGovernor contract                                   |
| btcxMin                  | uint256         | Minimum interest rate \[using mocPrecision]                             |
| btcxPower                | uint256         | Power is a parameter for interest rate calculation \[using noPrecision] |
| btcxMax                  | uint256         | Maximun interest rate \[using mocPrecision]                             |
| \_bitProRate             | uint256         | BitPro holder interest rate \[using mocPrecision]                       |
| commissionsAddressTarget | address payable |                                                                         |
| blockSpanBitPro          | uint256         | BitPro blockspan to configure payments periods\[using mocPrecision]     |
| bitProInterestsTarget    | address payable | Target address to transfer the weekly BitPro holders interest           |
| \_docTmin                | uint256         |                                                                         |
| \_docPower               | uint256         |                                                                         |
| \_docTmax                | uint256         |                                                                         |


---

# 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.moneyonchain.com/main-rbtc-contract/smart-contracts/abis-documentation/mocinrate.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.
