ConcentratedLiquidityPool
It is an AMM Pool contract implemented with concentrated liquidity, and provides low-level methods for liquidity supply / removal / fee receipt / swap.
Overview
Concentrated Liquidity Pool
is a core contract among Pangea's Exchange Modules, and performs 6 major functions.
MINT : Creates position
BURN : Burns position
SWAP : Swaps in pool
COLLECT : Receives accrued swap fee
FLASH : Performs a flash loan
DEPOSIT_AIRDROP : Deposits airdrop reward (deposited airdrop rewards are distributed linearly for 1 week)
The Concentrated Liquidity Pool is designed as a Non-Upgradable Contract and consists of low-level methods because it directly handles the user's assets.
It is recommended to call the ConcentratedLiquidityPool method through the high level contract ConcentratedLiquidityPoolManager and poolRouter rather than directly calling the ConcentratedLiquidityPool method.
Methods
burn
function burn(int24 lower, int24 upper, uint128 amount) external nonpayable returns (uint256 token0Amount, uint256 token1Amount)
Burns LP tokens - should be called via the Concentrated Liquidity pool manager contract.
collect
function collect(int24 lower, int24 upper, uint256 desiredToken0Fees, uint256 desiredToken1Fees) external nonpayable returns (uint256 token0Fees, uint256 token1Fees)
Collects tokens owed to a position
collectProtocolFee
function collectProtocolFee() external nonpayable returns (uint128, uint128)
factory
function factory() external view returns (address)
Returns the address of the factory contract
feeGrowthGlobal0
function feeGrowthGlobal0() external view returns (uint256)
The fee growth of token0 collected per unit of liquidity for the entire life of the pool
feeGrowthGlobal1
function feeGrowthGlobal1() external view returns (uint256)
The fee growth of token1 collected per unit of liquidity for the entire life of the pool
flash
function flash(address recipient, uint256 amount0, uint256 amount1, bytes data) external nonpayable
Receives token0 or token1 and pays it back with fee
getAssets
function getAssets() external view returns (address[] tokens)
Returns the list of the tokens of the pool, sorted by address
getImmutables
function getImmutables() external view returns (uint128 MAX_TICK_LIQUIDITY, uint24 tickSpacing, uint24 swapFee, address factory, address masterDeployer, address token0, address token1)
getPriceAndNearestTicks
function getPriceAndNearestTicks() external view returns (uint160 price, int24 nearestTick)
Returns the price and nearestTick
getReserves
function getReserves() external view returns (uint128 reserve0, uint128 reserve1)
Returns the reserve of token0 and token1
getSecondsGrowthAndLastObservation
function getSecondsGrowthAndLastObservation() external view returns (uint160 secondGrowthGlobal, uint32 lastObservation)
Returns the information about seconds growth global and the timestamp of the observation
liquidity
function liquidity() external view returns (uint128)
Returns the current in range liquidity available to the pool
mint
function mint(IConcentratedLiquidityPoolStruct.MintParams data) external nonpayable returns (uint256 liquidityMinted)
nearestTick
function nearestTick() external view returns (int24)
Returns the tick that is just below the current price.
positions
function positions(address owner, int24 lower, int24 upper) external view returns (struct IConcentratedLiquidityPoolStruct.Position)
Returns the information about the position
price
function price() external view returns (uint160)
Sqrt of price aka. √(token1/token0), multiplied by 2^96.
rangeFeeGrowth
function rangeFeeGrowth(int24 lower, int24 upper) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1)
Returns the fee growth of token0 & token1 inside the given price range
swap
function swap(bytes data) external nonpayable returns (uint256 amountOut)
Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.
swapFee
function swapFee() external view returns (uint24)
1000 corresponds to 0.1% fee. Fee is measured in pips.
tickSpacing
function tickSpacing() external view returns (uint24)
Returns the tick spacing of the pool.
Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be created every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...Reference: tickSpacing of 100 -> 1% between ticks.
ticks
function ticks(int24 tick) external view returns (struct IConcentratedLiquidityPoolStruct.Tick)
Looks up the information about a specific tick in the pool
token0
function token0() external view returns (address)
Returns the address of the first of the two tokens of the pool, sorted by address
token1
function token1() external view returns (address)
Returns the address of the second of the two tokens of the pool, sorted by address
totalTicks
function totalTicks() external view returns (uint256)
Returns the number of ticks in the Pool, starts with two ticks (MIN_TICK ~ MAX_TICK)
Last updated