# LiquidityManagement

Internal functions for safely managing liquidity in BonsaiswapV3

### Parameter Structs[​](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#parameter-structs) <a href="#parameter-structs" id="parameter-structs"></a>

#### AddLiquidityParams[​](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#addliquidityparams) <a href="#addliquidityparams" id="addliquidityparams"></a>

```solidity
    struct AddLiquidityParams {
        address token0;
        address token1;
        uint24 fee;
        address recipient;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
    }
```

### Functions[​](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#functions) <a href="#functions" id="functions"></a>

#### bonsaiswapV3MintCallback[​](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#uniswapv3mintcallback) <a href="#uniswapv3mintcallback" id="uniswapv3mintcallback"></a>

```solidity
  function bonsaiswapV3MintCallback(
    uint256 amount0Owed,
    uint256 amount1Owed,
    bytes data
  ) external
```

Called to `msg.sender` after minting liquidity to a position from IBonsaiswapV3Pool#mint.

In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a BonsaiswapV3Pool deployed by the canonical BonsaiswapV3Factory.

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#parameters)

| Name          | Type    | Description                                                                      |
| ------------- | ------- | -------------------------------------------------------------------------------- |
| `amount0Owed` | uint256 | The amount of token0 due to the pool for the minted liquidity                    |
| `amount1Owed` | uint256 | The amount of token1 due to the pool for the minted liquidity                    |
| `data`        | bytes   | Any data passed through by the caller via the IBonsaiswapV3PoolActions#mint call |

#### addLiquidity[​](https://docs.uniswap.org/contracts/v3/reference/periphery/base/LiquidityManagement#addliquidity) <a href="#addliquidity" id="addliquidity"></a>

```solidity
  function addLiquidity(
    AddLiquidityParams memory params
  ) internal returns (uint128 liquidity, uint256 amount0, uint256 amount1, contract IBonsaiswapV3Pool pool)
```

Add liquidity to an initialized pool
