> ## Documentation Index
> Fetch the complete documentation index at: https://tech.ramses.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# LiquidityManagement

Internal functions for safely managing liquidity in Ramses V3

## Parameter Structs

### AddLiquidityParams

```solidity theme={null}
    struct AddLiquidityParams {
        address token0;
        address token1;
        int24 tickSpacing;
        address recipient;
        uint256 index;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
    }
```

## Functions

### uniswapV3MintCallback

```solidity theme={null}
  function uniswapV3MintCallback(
    uint256 amount0Owed,
    uint256 amount1Owed,
    bytes data
  ) external
```

Called to `msg.sender` after minting liquidity to a position from IRamsesV3Pool#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 RamsesV3Pool deployed by the canonical RamsesV3Factory.

#### 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 IRamsesV3PoolActions#mint call |

### addLiquidity

```solidity theme={null}
  function addLiquidity(
    AddLiquidityParams memory params
  ) internal returns (uint128 liquidity, uint256 amount0, uint256 amount1, contract IRamsesV3Pool pool)
```

Add liquidity to an initialized pool
