Swap Flows
Call swapWithExactIn(input, options?)
- •Use when input amount is fixed and sources are known.
- •Signature:
- •
sdk.swapWithExactIn(input, { onEvent? })
- •
- •Params (
ExactInSwapInput):- •
from: { chainId: number; amount: bigint; tokenAddress: Hex }[] - •
toChainId: number - •
toTokenAddress: Hex
- •
- •Notes:
- •Ensure
fromamounts are in smallest units. - •Use chain-specific token addresses (see
TOKEN_CONTRACT_ADDRESSES).
- •Ensure
- •Result (
SwapResult):- •
{ success: true; result: SuccessfulSwapResult }
- •
Call swapWithExactOut(input, options?)
- •Use when desired output amount is fixed.
- •Signature:
- •
sdk.swapWithExactOut(input, { onEvent? })
- •
- •Params (
ExactOutSwapInput):- •
toChainId: number - •
toTokenAddress: Hex - •
toAmount: bigint - •
toNativeAmount?: bigint(optional native token output) - •
fromSources?: { chainId: number; tokenAddress: Hex }[](optional)
- •
- •Notes:
- •If
fromSourcesis omitted, SDK auto-selects sources.
- •If
Call swapAndExecute(input, options?)
- •Use to perform swap (if needed) and then execute a contract call.
- •Signature:
- •
sdk.swapAndExecute(input, { onEvent? })
- •
- •Params (
SwapAndExecuteParams):- •
toChainId: number - •
toTokenAddress: Hex - •
toAmount: bigint - •
fromSources?: { chainId: number; tokenAddress: Hex }[] - •
execute: SwapExecuteParams
- •
- •
SwapExecuteParams:- •
to: Hex - •
data?: Hex - •
value?: bigint - •
gas: bigint - •
gasPrice?: 'low' | 'medium' | 'high' - •
tokenApproval?: { token: Hex; amount: bigint; spender: Hex }
- •
- •Result (
SwapAndExecuteResult):- •
swapResult: SuccessfulSwapResult | null(null if swap skipped)
- •
Use token addresses and chains
- •Use SDK constants for addresses and chain IDs:
- •
SUPPORTED_CHAINS - •
TOKEN_CONTRACT_ADDRESSES
- •
Attach swap intent hook
- •Set
sdk.setOnSwapIntentHook(...)and callallow()to proceed. - •If the hook is not set, the SDK auto-approves.
Stream swap events
- •Listen for
NEXUS_EVENTS.SWAP_STEP_COMPLETE. - •Handle special cases like swap skipped (e.g., already on destination token).
Convert amounts to bigint
- •Use
sdk.utils.parseUnits(value, decimals)or - •
sdk.convertTokenReadableAmountToBigInt(value, tokenSymbol, chainId)when decimals vary by chain.