Skip to content

LimitPool

Manages limit liquidity positions.

Functions

mint

    function mint(
        MintParams memory params
    ) external lock

    struct MintParams {
            address to;
            uint128 amount;
            int24 lower;
            int24 claim;
            int24 upper;
            bool zeroForOne;
    }
Mints a Limit LP for the range lower to upper.

lower will be the lower price tick for the position.

upper will be the upper tick for the position.

Both lower and upper must be multiples of the tickSpread for the pool.

claim only need be an exact value in the case the user has already minted a position with the same lower and upper.

If this is the case, the claim tick must be the furthest tick crossed into the position.

zeroForOne as true means the LP deposits token0 and is filled with token1. zeroForOne as false means the LP deposits token1 and is filled with token0.

Parameters:

Name Type Description
to int24 The recipient of the fungible position
lower int24 The lower price tick of the range
claim int24 The claim price tick of the range
upper int24 The upper price tick of the range
amount uint128 The amount of the input token to add to the Position
zeroForOne bool true for token0 => token1 and false for token1 => token0

Return Values:

Name Type Description
amount uint256 The amount of the input token that was added to mint liquidity.

burn

    function burn(
        BurnParams memory params
    ) external lock

    struct BurnParams {
            address to;
            uint128 burnPercent;
            int24 lower;
            int24 claim;
            int24 upper;
            bool zeroForOne;
            bool sync;
    }

Burns liquidity from msg.sender. The token received from the burned liquidity is then sent to the address to.

burnPercent is a number no greater than 1e38 which equals 100%.

lower and upper must match a position owned by the caller.

zeroForOne will be true if the LP is trading token1 for token0 and false if the LP is trading token1 for token0.

sync should be true in most cases to receive the syncFee if available. false should only be used if the user wants to exit their LP without syncing the pool.

Parameters:

Name Type Description
to int24 The recipient of the token from the burned liquidity
burnPercent uint128 The percent of the user's liquidity to be burned and collected (1e38 = 100%)
lower int24 The lower price tick of the range
claim int24 The claim price tick of the range
upper int24 The upper price tick of the range
zeroForOne bool true for token0 => token1 and false for token1 => token0
zeroForOne bool true to allow sync and false to skip sync

Return Values:

Name Type Description
amount0 uint256 The amount of token0 collected for burning liquidity. Matches the value in the callback
amount1 uint256 The amount of token1 collected for burning liquidity. Matches the value in the callback

swap

    function swap(
        address recipient,
        bool zeroForOne,
        uint256 amountIn,
        uint160 priceLimit
    ) external override lock

Swaps token0 for token1 or token1 for token0.

Parameters:

Name Type Description
recipient address The address to receive the output of the swap
zeroForOne bool The direction of the swap, true for token0 => token1, false for token1 => token0
amountIn int256 The token amount for the swap
priceLimit uint160 The Q64.96 sqrt price limit. If zeroForOne is true, the price cannot be less than this value after the swap. If zeroForOne is false, the price cannot be greater than this value after the swap.
data bytes Raw data being passed through to the callback

quote

    function quote(
        address recipient,
        bool zeroForOne,
        uint256 amountIn,
        uint160 priceLimit
    ) external override lock

Swap token0 for token1, or token1 for token0.

Parameters:

Name Type Description
recipient address The address to receive the output of the swap
zeroForOne bool The direction of the swap, true for token0 => token1, false for token1 => token0
amountIn int256 The token amount for the swap
priceLimit uint160 The Q64.96 sqrt price limit. If zeroForOne is true, the price cannot be less than this value after the swap. If zeroForOne is false, the price cannot be greater than this value after the swap.
data bytes Raw data being passed through to the callback

Return Values:

Name Type Description
amount0 uint128 The change in the pool token0 balance
amount1 uint128 The change in the pool token1 balance

collectProtocolFees

    function protocolFees(
        uint16 fillFee,
        bool setFees
    ) external ownerOnly returns (
        uint128 token0Fees,
        uint128 token1Fees
    )

Collect the protocol fees accrued by the pool.

Parameters:

Name Type Description
fillFee uint16 The feet set based on fill amount
setFees bool Whether the fee should be set in this call or not

Return Values:

Name Type Description
token0Fees uint128 The protocol fee collected in token0
token1Fees uint128 The protocol fee collected in token1