Skip to content

Positions and single-asset liquidity

Distinguish a range deposit, an edge launch, a zap, and a strategy vault.

Design semantics. A position identifies an owner, a lower and upper tick, liquidity, fee checkpoints, and tokens owed. Public instruction availability is separate; see instructions.

What a range needs

For a range [lower, upper], with price measured as B per A:

Current priceComposition for the range
At or below the lower boundaryToken A only
Strictly between the boundariesBoth token A and token B
At or above the upper boundaryToken B only

At boundaries, fixed-point rounding and the program's active-tick convention still apply. A one-sided budget does not fund an arbitrary in-range position.

Four different operations

Single-asset range deposit

Choose a range whose composition at the current price needs only the supplied asset. The position may remain inactive until price enters its range.

Direct range launch

Initialize price at the relevant edge and fund inventory in prescribed ranges. The inventory does not create quote reserves for buybacks before buyers provide quote assets.

Atomic zap

Swap part of a single-asset budget, then fund an in-range position. The swap has fees, price impact, and user limits. The zap_in and zap_out instructions compose those operations; see zaps for limits and verification.

Strategy vault — planned

A separate layer owns a portfolio of positions and accounts for shares. Shares require valuation and withdrawal rules; they are not a native global CLMM LP token.

Fees and principal

Collecting fees transfers an existing claim and does not increase liquidity. Compounding requires an explicit reinvestment operation, potentially including a swap to obtain the range's required composition. Removing liquidity returns principal and must settle position checkpoints without deleting an existing fee claim.

See fee accounting and launch modes.