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 price | Composition for the range |
|---|---|
| At or below the lower boundary | Token A only |
| Strictly between the boundaries | Both token A and token B |
| At or above the upper boundary | Token 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.