Skip to main content
Outcome tokens (CTF positions) are traded on AMMs. Pools are always outcome token / main collateral for the chain. Quotes go through Lens smart quoter (lensQuoter), which picks the best DEX (Uniswap V3/V4 or Swapr) and returns calldata for that DEX’s own router. Swaps execute against the official DEX routers — Lens is not an AMM or a swap router. Use @seer-pm/sdk to get quotes and build swap flows. The SDK handles routing, amounts, and slippage for all supported chains (Gnosis, Ethereum, Base, Optimism).

Main collateral by chain

Each market’s pool is outcome token / that market’s collateral (market.collateralToken). On Gnosis, multiple primaries are registered (sDAI, s-gCRC); call configureCollateral for the profile your site uses, then use getActivePrimaryCollateral for quotes and swaps.
See Collateral profiles for the full registry and white-label configuration.

Getting quotes with @seer-pm/sdk

Chain coverage:
  • AMM via Lens smart quoter on Gnosis, Ethereum, Base, Optimism: fetchAmmQuote with TradeType (exact-in / exact-out). Requires a viem PublicClient.
Result type: QuoteTradeResult — value (bigint), decimals, buyToken, sellToken, sellAmount, swapType, and trade (AmmTrade).

Token and collateral

Quote: exact input (e.g. “I spend 10 collateral → how many outcome tokens?”)

Quote: exact output (e.g. “I want exactly N outcome tokens → how much collateral?”)

Using TradeType for exact-in vs exact-out


Executing the swap

The SDK provides execution functions that take a trade (from a quote) and send the transaction. You need wagmi (config, getConnectorClient) and optionally a toast/notification layer for UX.

Execute any trade (AMM via Lens)

Use tradeTokens to execute an AMM trade (including complete-set / PSM3 composite routes when present on the props):
Wrap with toastifyTx in your app to show “Executing…” and “Done!” notifications.

Execute AMM trade

Execute with 7702 batch (approvals + swap)

For wallets that support EIP-7702, you can batch approvals and the swap in a single flow:

Build execution without sending

To build the transaction data and send it yourself: