Liquidity positions
Position ranges, fee ownership, lifecycle, custody accounts, and locking.
Position ranges
A position supplies liquidity between a lower tick and upper tick. It is active when:
tickLower <= currentTick < tickUpperIn-range positions hold both assets and earn fees from steps executed while their liquidity is active. Below or above the range, the position becomes single-sided and stops earning until price returns.
Position NFT and custody account
The Abyss position manager represents each managed position as an ERC-721 token. Each token ID is bound to a deterministically created immutable AbyssPositionAccount. That account, not the manager itself, is the owner key used by the pool.
This separation has several consequences:
- NFT transfer changes who controls the account.
- The underlying pool position does not need to move on NFT transfer.
- The account accepts liquidity and collection commands only from the position manager.
- Mint callbacks are accepted only from the account's immutable canonical pool.
- Pool-owned fee growth and owed amounts remain in pool accounting, not shadow manager bookkeeping.
Minting
A mint specifies the pool, recipient, tick range, liquidity amount, maximum token amounts, and deadline. During settlement, only the expected position account may ask the manager to transfer the payer's tokens to the expected pool.
Maximum token amounts protect against consuming more than intended. An existing pool can move between transaction construction and execution, so the user should review the range and limits immediately before signing.
Increasing liquidity
Increasing liquidity adds to the same pool and tick range. The caller must control the NFT. Required token amounts depend on current price and range position.
Decreasing and collecting
Decreasing liquidity burns a selected liquidity amount and enforces caller-selected minimum token amounts plus a deadline. Burned principal becomes tokens owed to the position account. It is not automatically transferred.
Collect first updates the account position and then transfers requested owed amounts directly from the pool to the recipient. Owed balances can include both burned principal and fees.
Closing a position
A position can be burned only when:
- liquidity is zero;
- token0 owed is zero; and
- token1 owed is zero.
A complete close therefore normally requires decreasing all liquidity, collecting both assets, and then burning the NFT.
Optional locker
The optional position locker can custody manager NFTs until a finite timestamp or permanently with zero expiry. While locked, custody blocks transfer and liquidity removal. Accrued fees may still be collected to the lock-specific recipient.
The locker does not affect direct pool positions and is not a protocol-wide liquidity guarantee. Pool core itself does not require liquidity to be locked.