Skip to main content
Leo assertions do not carry the application error codes a production SDK might prefer. Client and support tooling should classify rejections from request context and current state.

Authorization

  • Caller is not the current admin.
  • accept_admin caller does not match pending_admin.
  • Position record is not owned by the signer.
  • Confidential address does not match program, signer, domain, and factor.
  • Claim caller or recipient does not match the stored confidential address.

Pool creation

  • Pool creation is closed and caller is not admin.
  • Token is not allowed or is paused.
  • Pair or global state is paused.
  • Tokens are identical.
  • Pool already exists.
  • Fee or spacing is unregistered.
  • Fee-to-spacing binding does not match.
  • Initial tick is unaligned or outside the allowed domain.
  • Initial square-root price does not lie in the tick interval.

Mint and increase

  • Pool is disabled or paused.
  • Token IDs do not match canonical pool tokens.
  • Signer, recipient, or withdrawal freezelist proof is invalid.
  • Range is invalid or unaligned.
  • Calculated liquidity is zero.
  • Used amounts do not meet minimums.
  • New boundary exceeds per-tick liquidity cap.
  • Insertion hint is not the immediate initialized predecessor.
  • Position token ID already exists.
  • Position is frozen.

Decrease, collect, and burn

  • Position fields do not match the public mapping.
  • Requested removal exceeds liquidity.
  • Principal does not meet raw minimums.
  • Requested collection exceeds total owed.
  • Owner or withdrawal freezelist proof is invalid.
  • Position is frozen.
  • Burn sees nonzero liquidity or owed balances.

Swap

  • Deadline has passed.
  • Global, token, pair, or pool control blocks trading.
  • Token IDs do not match the pool.
  • Price limit lies outside the domain or on the wrong side of current price.
  • Amount is zero.
  • Actual raw output is below amount_out_min.
  • Swap ID already exists.
  • Confidential address has already been used.
  • Wide arithmetic cannot represent the result.

Multi-hop

  • Hop count is not two or three.
  • Token chain between hops is discontinuous.
  • Final route token does not match requested output.
  • Any hop has invalid pause, limit, pool, or arithmetic state.

Claim

  • Pending output is absent, already claimed, or uses different fields.
  • Any token or amount differs from stored SwapOutput.
  • Signer freezelist proof is invalid.
  • Token program rejects a public-to-private transfer.

Operator response

Do not blindly retry a rejection. Refresh records, mappings, deadline, price, hints, and control state. Escalate repeated arithmetic, linked-list, or reconciliation failures as possible invariant incidents.