# BoostedPositionBase

**Inherits:** ERC20, [Multicall](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-common-contracts/base/multicall), [Checks](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/base/checks), [IBoostedPositionBase](https://docs.mav.xyz/technical-reference/maverick-v2/v2-contracts/maverick-v2-supplemental-contracts/boostedpositionbase/iboostedpositionbase)

Base BP contract functions.

### State Variables <a href="#state-variables" id="state-variables"></a>

#### pool <a href="#pool" id="pool"></a>

BP Pool.

```solidity
IMaverickV2Pool public immutable pool;
```

#### kind <a href="#kind" id="kind"></a>

BP Bin kind (static, right, left, both).

```solidity
uint8 public immutable kind;
```

#### binCount <a href="#bincount" id="bincount"></a>

Number of bins in the BP.

```solidity
uint8 public immutable binCount;
```

#### binBalances <a href="#binbalances" id="binbalances"></a>

Liquidity balance in given BP bin since last mint/burn operation.

```solidity
uint128[] public binBalances;
```

#### SUBACCOUNT <a href="#subaccount" id="subaccount"></a>

```solidity
uint256 internal constant SUBACCOUNT = 0;
```

### Functions <a href="#functions" id="functions"></a>

#### constructor <a href="#constructor" id="constructor"></a>

```solidity
constructor(string memory name_, string memory symbol_, IMaverickV2Pool pool_, uint8 kind_, uint8 binCount_)
    ERC20(name_, symbol_);
```

#### getBinBalances <a href="#getbinbalances" id="getbinbalances"></a>

Liquidity balance in BP bins since last mint/burn operation.

```solidity
function getBinBalances() public view returns (uint128[] memory binBalances_);
```

#### \_removeLiquidityAndUpdateBalances <a href="#removeliquidityandupdatebalances" id="removeliquidityandupdatebalances"></a>

```solidity
function _removeLiquidityAndUpdateBalances(
    uint256 amount,
    address recipient,
    uint32[] memory binIds_,
    uint128[] memory ratios_
) internal returns (uint256 tokenAOut, uint256 tokenBOut);
```

#### \_checkAndUpdateBinBalances <a href="#checkandupdatebinbalances" id="checkandupdatebinbalances"></a>

```solidity
function _checkAndUpdateBinBalances(uint32[] memory binIds_, uint128[] memory ratios_)
    internal
    returns (uint128 deltaSupply);
```

<br>
