What a Position Represents
A DAMM v2 position tracks the liquidity and rewards tied to one position NFT.Liquidity Ownership
The position records how much liquidity belongs to the NFT holder.
Pending Fees
Trading fees accrue to the position until the owner claims them.
Liquidity Mining Rewards
Built-in reward campaigns accrue to each position based on total liquidity.
Locks and Vesting
A position can contain unlocked, vesting, and permanently locked liquidity.
Liquidity Buckets
DAMM v2 positions separate liquidity into three buckets:
Locked liquidity still earns. DAMM v2 uses total position liquidity when tracking trading fees and liquidity mining rewards, so vesting and permanently locked liquidity can continue participating while withdrawal is restricted.
Position NFTs
Position NFTs are Token 2022 NFTs created by the DAMM v2 program. They are minted with zero decimals and supply1, use Token 2022 metadata, and are tied to a DAMM v2 position account.
For product users, the important behavior is simple:
- Holding the NFT gives control over the position.
- Transferring the NFT transfers control of the position.
- The NFT makes the position discoverable and composable.
DAMM v2 uses the pool as the freeze authority for position NFTs and the pool authority as mint/update authority. The default metadata name is
Meteora Position NFT with symbol MPN.Fees and Rewards
Position fees are separate from liquidity removal. A position can hold pending token A fees, pending token B fees, and pending rewards from up to two liquidity mining reward slots. The exact fee tokens depend on the pool’s collect fee mode:Splitting Positions
DAMM v2 positions can be split. This lets one position become two positions while dividing unlocked liquidity, permanent locked liquidity, pending token A fees, pending token B fees, pending rewards, and supported inner vesting state. Split numerators use a denominator of1,000,000,000. Each split amount is rounded down, so tiny residual amounts can remain in the source position.
This is useful when you want to:
- Transfer only part of a position.
- Separate treasury, market maker, or community allocations.
- Split vesting tranches before distributing position ownership.
- Sell or custody part of an LP position without exiting the rest.
Liquidity Locks
DAMM v2 supports two lock styles:- Vesting lock: liquidity unlocks on a schedule, such as a cliff followed by periodic releases.
- Permanent lock: liquidity cannot be withdrawn, creating a durable liquidity commitment.
Inner vesting stores the vesting schedule inside the position itself. A position must not already have active inner vesting when a new inner vesting lock is applied.
Delegates
The NFT holder can approve one Token-2022 delegate on the position NFT account.Approve must use amount 0. A non-zero delegated_amount fails with DelegatedAmountNonZero (6070), because that amount would let the delegate transfer or burn the NFT.
update_delegate_permission writes Position.delegate_permission. The NFT holder signs it. permission = 0 clears the bitmask. The SPL delegate stays until you revoke it with the Token-2022 program.
A delegate can call add_liquidity, remove_liquidity, remove_all_liquidity, claim_position_fee, claim_reward, lock_position, lock_inner_position, and permanent_lock_position when the matching bit is set. close_position, split_position, and split_position2 stay with the NFT holder.
The ToOwner bits only allow the token destination to be the NFT holder’s account. If both an unrestricted bit and its ToOwner bit are set, the unrestricted bit applies.
Transferring the NFT does not clear delegate_permission. The new holder sets a new SPL delegate, and that delegate receives the bitmask already stored on the position.
The instruction account is signer. @meteora-ag/cp-amm-sdk still names that parameter owner. updateDelegatePermission approves the delegate with amount 0 and writes the bitmask in one transaction. Pass the token account that currently holds the NFT.
Closing a Position
A position can only be closed after it is empty. That means total liquidity is zero, pending token A and token B fees are zero, and pending rewards in both reward slots are zero. When a position is closed, the program burns the position NFT, closes the NFT token account, closes the NFT mint, and closes the position account.Why NFT Positions Matter
NFT positions make DAMM v2 liquidity easier to reason about as a product:- LP ownership is represented by a familiar token object.
- Transfers are simple because ownership follows the NFT.
- Positions can contain complex state without making the user manage separate farm or lock accounts.
- Integrators can build dashboards, custody flows, marketplaces, and collateral products around the NFT.

