Skip to documentation

Guides

Providing liquidity

Full-range and concentrated positions, staking, compounding and rebalancing.

V2 positions

Depositing both assets into a V2 pool mints LP tokens. Router.zapIn also supports entry from one token and can stake the actual minted LP amount internally. Router.zapOut removes liquidity and swaps the outputs into a selected token such as USDC.

Arc Mainnet has no V2 markets yet; V2 positions are currently available only on the Arc Testnet QA deployment.

V3 positions

Each NFT records its token pair, tick spacing, lower and upper ticks, liquidity and owed tokens. Liquidity is active only inside its range. Outside the range, the position may hold a single asset and stops contributing active swap liquidity.

Amounts and prices must account for each token's decimals: USDC and EURC use 6, cirBTC 8 and WETH 18. A pool's tick spacing constrains valid range boundaries — 50 for WETH / USDC and cirBTC / USDC, 10 for WETH / cirBTC and 1 for USDC / EURC on Arc Mainnet. Token ordering determines the price orientation.

Stake in a gauge

V2 gauges hold LP tokens; V3 gauges hold position NFTs. depositFor records the beneficiary who can claim and withdraw, even when ArcheryUtils supplies the assets. New mint-and-stake requires token approvals to ArcheryUtils, not a user NFT approval. For an existing NFT, execute requires approval to the utility; an owner can instead transfer it directly with safeTransferFrom and encoded instructions.

On Arc Mainnet every pool has a gauge, but staking opens in the app at TGE. Before the first emission epoch a staked position earns no ARCHERY, and a staked V3 position's trading fees go to the gauge for voters instead of to you. You can withdraw a stake at any time.

Compound an existing position

The helper uses explicit quoted amounts. Newly accrued rewards or unused deposit amounts can remain in the wallet. Compounding here is a user-signed action, not a scheduled vault or keeper service.

  1. Claim eligible rewards and collect position fees.
  2. Quote any swaps needed to obtain the two pool assets.
  3. Compose approvals, swaps and increaseLiquidity for the existing NFT.
  4. Restake the same NFT and simulate the full batch before signing.

Move to a new range

A range cannot be edited in place. The rebalance batch unstakes, removes and collects liquidity, performs quoted swaps, mints a new position and burns the empty old NFT. ArcheryUtils stakes the new NFT for you before the transaction finishes; if that path fails, the app reads its actual ID from the receipt and asks you to stake afterwards.

If removing a position empties its pool, that pool cannot also supply the rebalance swap. Use another liquid route. Unspent tokens return to the recipient. With the one-transaction stake the gauge holds the NFT and your wallet owns the stake rights; with the fallback the new NFT stays in your wallet until staked.