Pool
This documentation provides an overview of the IPool.sol. This contract defines the functions and events for interacting with a liquidity pool in Maverick AMM.
Last updated
This documentation provides an overview of the IPool.sol. This contract defines the functions and events for interacting with a liquidity pool in Maverick AMM.
Last updated
Name : IPool
Solidity Version : ^0.8.0
SPDX License-Identifier : GPL-2.0-or-later
sender
: The address
that executed this swap
recipient
: The address
receiving this swap
tokenAIn
: A boolean
to determine if there is any input for Token A
exactOutput
: A boolean
to determine if there is any exact amount of tokens expected to receive
amountIn
: The uint256
amount of the input token
amountOut
: The uint256
amount of the output token
activeTick
: The active tick int32
value for the pool
sender
: The indexed sender address
that executed addLiquidity()
tokenId
: The uint256
indexed ID of the receiving token
binDeltas
: An array of BinDelta
structures
sender
: The indexed sender address
that executed MigrateBinsUpStack()
binId
: The uint128
bin ID that was migrated
maxRecursion
: Maximum recursion depth in uint32
fromTokenId
: Transfer liquidity from token ID uint256
toTokenId
: Transfer liquidity to token ID uint256
params
: Array of RemoveLiquidityParams
that specify the bins and amounts
sender
: Remove liquidity from sender address
recipient
: Remove liquidity to receiver address
tokenId
: Current indexed uint256
tokenId to remove liquidity from
binDeltas
: Array of BinDelta
that specify the bins and amounts
binId
: The indexed bin ID uint128
that was merged.
reserveA
: amount of A token uint128
in bin.
reserveB
: amount of B token uint128
in bin.
mergeId
: The current active bin uint128
.
binId
: The indexed bin ID uint128
that was moved.
previousTick
: Previous tick value in int128
.
newTick
: New tick value in uint128
.
protocolFee
: Amount of Protocol fee collected in uint256
.
isTokenA
: boolean
check if Token A was used for Protocol fee.
protocolFee
: The new amount of Protocol fee set in uint256
.
Return parameters for Add/Remove liquidity.
deltaA
: The amount of A token uint128
that has been added or removed
deltaB
: The amount of B token uint128
that has been added or removed
deltaLpBalance
: The amount of LP balance uint256
that has increase (add) or decreased (remove)
binId
: The bin ID uint128
of the bin that changed
kind
: One of the 4 Kinds (0=static, 1=right, 2=left, 3=both) in uint8
lowerTick
: The lower price tick int32
of the bin in its current state
isActive
: A boolean
to indicate whether the bin is still active
Time weighted average state.
twa
: The twa int96
at the last update instant
value
: The new value int96
that was passed in at the last update
lastTimestamp
: The timestamp uint64
of the last update in seconds
The bin state parameters.
reserveA
: The amount of A token uint128
in bin
reserveB
: The amount of B token uint128
in bin
mergeBinBalance
: The LP token balance uint128
that this bin possesses after merge
mergeId
: The binId
that this bin uint128
has merged in to
totalSupply
: The total amount of LP tokens uint128
in this bin
kind
: one of the 4 Kinds (0=static, 1=right, 2=left, 3=both) in uint8
lowerTick
: The lower price tick int32
of the bin in its current state
Parameters for each bin that will get new liquidity.
kind
: one of the 4 Kinds (0=static, 1=right, 2=left, 3=both) in uint8
pos
: The bin position in int32
isDelta
: A boolean
that indicates whether the bin position is relative to the current bin or an absolute position
deltaA
: The amount of A token uint128
to add
deltaB
: The amount of B token uint128
to add
Parameters for each bin that will have liquidity removed.
binId
: The index of the bin uint128
losing liquidity
amount
: The LP balance amount uint128
to remove
The state of the pool.
activeTick
: The current bin position int32
that contains the active bins
status
: The status values uint8
defined in Pool.sol
e.g. locked or unlocked;
binCounter
: The index uint128
of the last bin created
protocolFeeRatio
: The ratio of the swap fee that is kept for the protocol in uint64
Retrieves the fee for the pool in 18 decimal format.
Returns :
The fee uint256
for the pool as a uint256 value
Retrieves the tick spacing of the pool. The tick spacing is used to calculate the bin width.
Returns :
The tick spacing as a uint256
value
Retrieves the address of token A associated with the pool.
Returns :
The address
of token A as an IERC20 interface
Retrieves the address of token B associated with the pool.
Returns :
The address
of token B as an IERC20 interface
Retrieves the address of the factory contract associated with the pool.
Returns :
The address
of the factory contract as an IFactory
interface
Retrieves the bitmap of active bins at the given tick.
Parameters :
tick : The tick int32
for which to retrieve the active bin map
Returns :
The bitmap of active bins as a uint256
value
Retrieves the bin ID for the given tick and bin kind
Parameters:
tick
: The tick int32
for which to retrieve the bin ID
kind
: The kind uint256
of the bin (0=static, 1=right, 2=left, 3=both)
Returns:
The bin ID as a uint128 value
Retrieves the internal accounting of the sum of token A balances across bins.
Returns: The sum of token A balances as a uint128
value
Retrieves the internal accounting of the sum of token B balances across bins.
Returns:
The sum of token B balances as a uint128
value
Retrieves the time-weighted average (TWA) state values.
Returns:
A TwaState
structure containing the TWA, value, last timestamp, and look back
Retrieves the log base binWidth of the time-weighted average price.
Returns:
The log base binWidth of the TWA as an int256
value.
Retrieves the state of the pool.
Returns:
A State
structure containing the active tick, status, bin counter, and protocol fee ratio
Adds liquidity to a pool.
Parameters:
tokenId
: The NFT token ID uint256
that will hold the position.
params
: An array of AddLiquidityParams
structures that specify the mode, position, and liquidity details.
data
: A callback function that addLiquidity
will call to transfer tokens.
Returns:
tokenAAmount
: The amount of token A added as a uint256
value.
tokenBAmount
: The amount of token B added as a uint256
value.
binDeltas
: An array of BinDelta
structures representing the changes in bin states.
Transfers liquidity from one NFT token ID to another using an array of bins.
Parameters:
fromTokenId
: The NFT token ID uint256
that holds the position being transferred.
toTokenId
: The NFT token ID uint256
that is receiving the liquidity.
params
: An array of RemoveLiquidityParams
structures specifying the bins and amounts to transfer.
Removes liquidity from a pool.
Parameters:
recipient
: The address
that will receive the removed tokens.
tokenId
: The NFT token ID uint256
that holds the position being removed.
params
: An array of RemoveLiquidityParams
structures specifying the bins and amounts to remove.
Returns:
tokenAOut
: The amount of token A uin256
received as a result of removing liquidity.
tokenBOut
: The amount of token B uin256
received as a result of removing liquidity.
binDeltas
: An array of BinDelta
structures representing the changes in bin states.
Migrates bins up the linked list of merged bins so that its mergeId is the current active bin.
Parameters:
binId
: An array of the bin IDs uint128
to be migrated.
maxRecursion
: The maximum recursion depth uint32
of the migration. Set to zero
to recurse until the active bin is found.
Swaps tokens.
Parameters:
recipient
: The address
that will receive the output tokens.
amount
: The amount of tokens uint256
to swap.
tokenAIn
: A boolean
indicating whether token A is the input.
exactOutput
: A boolean
indicating whether the amount specified is the exact output amount (true).
sqrtPriceLimit
: The limiting square root price uint256
of the swap. A value of 0
indicates no limit. The limit is only engaged for exactOutput=false
. If the limit is reached, only part of the input amount will be swapped, and the callback will only require that amount of the swap to be paid.
data
: A callback function bytes
that swap will call to transfer tokens.
Returns:
amountIn
: The amount of tokens uint256
swapped as input.
amountOut
: The amount of tokens uint256
received as output.
Retrieves the bin information for a given bin ID.
Parameters:
binId
: The index of the bin uint128
.
Returns:
A BinState
structure containing the details of the bin.
Retrieves the LP token balance for a given tokenId at a specific binId.
Parameters:
tokenId
: The NFT token ID uint256
.
binId
: The index of the bin uint128
.
Returns:
The LP token balance as a uint256
value.
Retrieves the tokenA scale value.
msb
is a flag to indicate whether tokenA has more or less than 18 decimals. Scale is used in conjuction withMath.toScale/Math.fromScale
functions to convert from token amounts to D18 scale internal pool accounting.
Returns:
The tokenA scale value as a uint256
.
Retrieves the tokenB scale value.
msb
is a flag to indicate whether tokenA has more or less than 18 decimals. Scale is used in conjuction withMath.toScale/Math.fromScale
functions to convert from token amounts to D18 scale internal pool accounting.
Returns:
The tokenB scale value as a uint256
.
Code: