Maverick Docs
  • Introducing Maverick
  • Getting Started
    • 🖥️The Maverick V2 UI
    • 👛Connect a Wallet
    • ⛓️Choose a Network
    • 🪙Approving Tokens
  • Guides
    • 🤝Traders
      • How to Make a Swap
    • 💰Liquidity Providers
      • Understanding Liquidity Provision
      • Understanding Modes
      • How to Add Liquidity
      • How to Deploy a New Pool
      • How to Check Position Balances
      • How to Manage Liquidity in a Pool
      • How to Migrate from V1 to V2
      • Understanding Permanent Loss
      • Liquidity Strategies
    • ⚡Incentives
      • Understanding Boosted Positions
      • Understanding Incentives
      • How to Join a Boosted Position
      • How to Create a Boosted Position
      • How to Manage a Boosted Position
      • How to Add Incentives
    • 🎡veFlywheel
      • veFlywheel Basics
      • Guide to veFlywheel Emissions
      • How to Vote to Direct Emissions
    • 👩‍🏫Advanced Tutorials
      • Single-Sided Incentives
  • Technical Reference
    • Contract Addresses
      • V1 Contract Addresses
      • V2 Contract Addresses
    • Maverick V1
      • V1 Whitepaper
      • V1 Contracts
        • Router
        • Pool
        • Factory
        • SlimRouter
    • Maverick V2
      • V2 Whitepaper
      • V2 Contracts
        • Maverick V2 Common Contracts
          • base
            • IMulticall
            • IPayableMulticall
            • Multicall
            • PayableMulticall
          • interfaces
            • IMaverickV2AddLiquidityCallback
            • IMaverickV2Factory
            • IMaverickV2FactoryAdmin
            • IMaverickV2FlashLoanCallback
            • IMaverickV2Pool
            • IMaverickV2PoolAdmin
            • IMaverickV2SwapCallback
          • libraries
            • ArrayOperations
            • Constants
            • Math
            • PoolLib
            • TickMath
            • TransferLib
        • Maverick V2 AMM Contracts
          • poollib
            • Bin
            • Delta
            • Deployer
            • DeployerPermissioned
            • SwapMath
            • Twa
          • MaverickV2Factory
          • MaverickV2Pool
          • MaverickV2PoolPermissioned
        • Maverick V2 Reward Contracts
          • interfaces
            • IMaverickV2IncentiveMatcher
            • IMaverickV2IncentiveMatcherFactory
            • IMaverickV2Reward
            • IMaverickV2RewardFactory
            • IMaverickV2RewardRouter
            • IMaverickV2RewardVault
            • IMaverickV2VotingEscrowBase
            • IMaverickV2VotingEscrow
            • IMaverickV2VotingEscrowFactory
            • IMaverickV2VotingEscrowLens
            • IMaverickV2VotingEscrowWSync
          • libraries
            • IncentiveMatcherDeployer
            • RewardDeployer
            • VotingEscrowDeployer
            • VotingEscrowWSyncDeployer
          • rewardbase
            • IRewardAccounting
            • RewardAccounting
          • votingescrowbase
            • HistoricalBalance
            • IHistoricalBalance
            • ILegacyVeMav
            • VotingEscrow
          • MaverickV2IncentiveMatcher
          • MaverickV2IncentiveMatcherFactory
          • MaverickV2Reward
          • MaverickV2RewardFactory
          • MaverickV2RewardRouter
          • MaverickV2RewardVault
          • MaverickV2VotingEscrow
          • MaverickV2VotingEscrowFactory
          • MaverickV2VotingEscrowLens
          • MaverickV2VotingEscrowWSync
        • Maverick V2 Supplemental Contracts
          • base
            • Checks
            • IChecks
            • IMigrateBins
            • MigrateBins
          • boostedpositionbase
            • BoostedPositionBase
            • IBoostedPositionBase
            • ImmutableArrayGetter
          • interfaces
            • IMaverickV2BoostedPosition
            • IMaverickV2BoostedPositionFactory
            • IMaverickV2LiquidityManager
            • IMaverickV2PoolLens
            • IMaverickV2Position
            • IMaverickV2Quoter
            • IMaverickV2Router
            • IPositionImage
          • libraries
            • BoostedPositionDeployerDynamic
            • BoostedPositionDeployerStatic
            • BytesLib
            • LiquidityUtilities
            • PackLib
            • Path
            • PoolInspection
          • liquiditybase
            • ArgPacker
            • IArgPacker
          • paymentbase
            • IERC20PermitAllowed
            • IPayment
            • ISelfPermit
            • IState
            • IWETH9
            • Payment
            • SelfPermit
            • State
          • positionbase
            • INft
            • Nft
          • routerbase
            • CallbackOperations
            • ExactOutputSlim
            • ICallbackOperations
            • IExactOutputSlim
            • IPushOperations
            • IRouterErrors
            • PushOperations
          • MaverickV2BoostedPositionDynamic
          • MaverickV2BoostedPositionFactory
          • MaverickV2BoostedPositionStatic
          • MaverickV2LiquidityManager
          • MaverickV2PoolLens
          • MaverickV2Position
          • MaverickV2Quoter
          • MaverickV2Router
          • PositionImage
      • V2 API Documentation
      • V2 Testnet Guide
        • Get Sepolia ETH & Test Tokens
        • How to Create a Boosted Position in V2
        • How to Add & Match Incentives
        • How to Create a veFlywheel
    • Development FAQ
    • Finding LP Balances
  • MAV token
    • MAV Token & Tokenomics
    • veMAV & MAV Staking
    • How to Stake MAV
    • Syncing V1 veMAV
    • Airdrop Information
      • Maverick Ecosystem Rewards Pre-Season Airdrop
      • Maverick Governance & S1 Airdrops
  • Further Information
    • Frequently Asked Questions
    • Glossary
    • Security
    • Maverick Wallets
    • Dune Analytics
    • Rebasing Tokens
    • Restricted Territories
    • Delphi Digital Report
Powered by GitBook
On this page
  • Functions
  • Structs
  1. Technical Reference
  2. Maverick V2
  3. V2 Contracts
  4. Maverick V2 AMM Contracts
  5. poollib

Bin

Functions

lpBalancesFromDeltaReserve

Calculate pro rata liquidity balances based on delta reserves.

function lpBalancesFromDeltaReserve(
    Bin.Instance storage self,
    IMaverickV2Pool.TickState storage tickState,
    uint256 deltaA,
    uint256 deltaB
) internal view returns (uint256 proRataLiquidity);

Parameters

Name
Type
Description

self

Bin.Instance

The Bin.Instance storage.

tickState

IMaverickV2Pool.TickState

The TickState storage.

deltaA

uint256

The change in A (token A) reserves.

deltaB

uint256

The change in B (token B) reserves.

Returns

Name
Type
Description

proRataLiquidity

uint256

The pro rata liquidity balance.

addLiquidityByReserves

Add liquidity to the bin based on delta reserves.

function addLiquidityByReserves(
    Bin.Instance storage self,
    IMaverickV2Pool.TickState storage tickState,
    uint128 deltaA,
    uint128 deltaB,
    uint128 deltaLpBalance
) internal;

Parameters

Name
Type
Description

self

Bin.Instance

The Bin.Instance storage.

tickState

IMaverickV2Pool.TickState

The TickState storage.

deltaA

uint128

The change in A (token A) reserves.

deltaB

uint128

The change in B (token B) reserves.

deltaLpBalance

uint128

addLiquidity

Add liquidity to the bin. note: lp balance is not the same a "liquidity"; as fees accumulate in a bin, a unit of lp balance will diverge from a unit of liquidity.

function addLiquidity(
    Bin.Instance storage self,
    IMaverickV2Pool.TickState storage tickState,
    address recipient,
    uint256 subaccount,
    uint128 deltaLpBalance,
    PoolLib.AddLiquidityInfo memory addLiquidityInfo
) internal;

Parameters

Name
Type
Description

self

Bin.Instance

The Bin.Instance storage.

tickState

IMaverickV2Pool.TickState

The TickState storage.

recipient

address

The recipient address.

subaccount

uint256

The subaccount.

deltaLpBalance

uint128

The change in LP balance.

addLiquidityInfo

PoolLib.AddLiquidityInfo

The AddLiquidityInfo structure.

Migrate bins up the stack.

function migrateBinsUpStack(Instance storage self, mapping(uint32 => Instance) storage bins, uint32 maxRecursion)
    internal;

Parameters

Name
Type
Description

self

Instance

The Instance storage.

bins

mapping(uint32 => Instance)

The bins mapping.

maxRecursion

uint32

The maximum recursion depth.

removeLiquidity

Remove liquidity from the bin.

function removeLiquidity(
    Instance storage self,
    mapping(int32 => IMaverickV2Pool.TickState) storage tickStates,
    mapping(uint32 => Instance) storage bins,
    address user,
    uint256 subaccount,
    uint256 deltaLpAmount
) internal returns (IMaverickV2Pool.BinDelta memory binDelta);

Parameters

Name
Type
Description

self

Instance

The Instance storage.

tickStates

mapping(int32 => IMaverickV2Pool.TickState)

The TickState mapping.

bins

mapping(uint32 => Instance)

The bins mapping.

user

address

The user address.

subaccount

uint256

The subaccount.

deltaLpAmount

uint256

The change in LP balance.

Returns

Name
Type
Description

binDelta

IMaverickV2Pool.BinDelta

The BinDelta structure.

_updateBinState

Updates the state of a bin and tick in the MaverickV2Pool.

function _updateBinState(
    Bin.Instance storage self,
    IMaverickV2Pool.TickState storage tickState,
    address user,
    uint256 subaccount,
    uint128 deltaA,
    uint128 deltaB,
    uint128 deltaLpBalance,
    uint128 deltaTickBalance
) private;

Parameters

Name
Type
Description

self

Bin.Instance

The bin instance to be updated.

tickState

IMaverickV2Pool.TickState

The tick state of the pool.

user

address

The address of the user performing the action.

subaccount

uint256

The subaccount identifier for the user.

deltaA

uint128

The change in reserveA.

deltaB

uint128

The change in reserveB.

deltaLpBalance

uint128

The change in LP token balance.

deltaTickBalance

uint128

The change in tick balance.

Structs

Instance

struct Instance {
    IMaverickV2Pool.BinState state;
    mapping(address => mapping(uint256 => uint128)) balances;
}
PreviouspoollibNextDelta

Last updated 1 year ago

migrateBinsUpStack