Squid Dev Documentation
  • Getting Started
    • Overview
    • Get an Integrator ID
    • Integrator Quickstart
  • Widget Integration
    • Add A Widget
      • Swap widget
        • Getting Started
        • Installing the Widget
        • React Installation
        • NextJS Installation
        • Vite Installation
        • Iframe Installation
        • Customization Guide
          • Default User Settings
          • Configuring Content
          • Default Chains and Tokens
          • Configuration Types
          • Collect Fees
        • Information for Integrators
        • Set default chains and tokens via URL
        • Errors
    • Upgrade Your Widget
  • API & SDK Integration
    • API
      • Swap & Bridge Example
      • Staking Example
      • Cross-chain NFT Purchase Example
      • Get Route Status
    • SDK
      • Cross-chain Swap Example
      • Staking Example
      • Cross-chain NFT Purchase Example
      • Get Route Status
    • Key Concepts
      • Route Request Parameters
      • Get a route
      • Execute the route
      • 🪝Hooks
        • How do hooks work
        • Build a preHook
        • Build a postHook
        • Using the full ERC20 or Native balance in a call
        • ❗Transfer the remainder to the user
        • Get a route and execute as normal
      • Express
      • Track status
      • Types
      • Collect Fees
      • Get supported tokens and chains
    • Coral: Intent Swaps
      • Integrating Coral
    • NEW: Bitcoin and Solana
  • Adding Tokens
    • Whitelist a Token
    • Interchain Token(ITS) Listings
      • How To List
    • Circle's EURC Integration Guide
  • Adding Chains
    • Integrate Your Chain
  • Additional Resources
    • Contracts
    • Additional Dev Resources
      • Choose How To Integrate Squid
      • Squid x Tenderly
      • Testnet or Mainnet?
      • Understanding Gas Payments
      • Supported Chains and Tokens
      • Request a new supported token
      • Liquidity Sources
        • axlASSET Liquidity
      • Integrator type specific docs
        • DEXs
        • Aggregators
        • NFTs
      • Setting up an EVM signer
      • Setting up Cosmos signer
      • Contract addresses
      • SDK easter eggs
        • Setting toAmount
        • getAllBalances
        • Advanced set up
        • Manually approve a route
        • Manually approve an ERC20
      • Whitelist a token
      • Security & Audits
        • Security
        • Audits
        • Axelar
      • Get an integrator-id
    • Architecture
      • FAQ
      • Liquidity model
      • Architecture
      • General message passing (GMP)
      • Transaction times and fees
      • Fallback behaviour on failed transactions
      • Axelar
    • Brand Assets
      • "Powered by Squid" Policy
    • Audits & Security
    • Contact
  • Changelog
    • SDK
      • v1.3
      • v1.2
    • API
      • v1.9
      • v1.8
      • v1.7
      • v1.6
Powered by GitBook
On this page
  • executeRoute
  • executionSettings
  • Example code snippet
  1. Additional Resources
  2. Squid v1 Docs
  3. SDK

Execute your swap or call

We allow you to execute any on-chain or cross-chain swap and bridging process and a combination of both.

Last updated 1 year ago

Executing a route requires a signer to be set up.

executeRoute

Type:

const tx = await squid.executeRoute({ signer, route, executionSettings })

const txReceipt = await tx.wait()

executionSettings

In addition to the first two parameters, executeRoute takes an optional executionSettings object as a third parameter.

type executionSettings?: {
    infiniteApproval?: boolean;
    setGasPrice: boolean;
};

infiniteApproval defaults totrue if not set by the user. This will set the SquidRouter contract's allowance of fromToken to max.

When infiniteApproval is false, the Squid SDK will approve only the amount necessary for this trade.

On some chains, you may need to set setGasPrice to true, since gas estimation is different across different EVMs.

Example code snippet

const signer = new ethers.Wallet(privateKey, provider)

const params = {
    fromChain: 5, // Goerli testnet
    fromToken: "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6", // WETH on Goerli
    fromAmount: "50000000000000000", // 0.05 WETH
    toChain: 43113, // Avalanche Fuji Testnet
    toToken: "0x57f1c63497aee0be305b8852b354cec793da43bb", // aUSDC on Avalanche Fuji Testnet
    fromAddress: signer.address, // transaction sender address
    toAddress: "0xAD3A87a43489C44f0a8A33113B2745338ae71A9D", // the recipient of the trade
    slippage: 3.00, // 3.00 = 3% max slippage across the entire route, acceptable value range is 1-99
    enableForecall: true, // instant execution service, defaults to true
    quoteOnly: false // optional, defaults to false
};

const { route } = await squid.getRoute(params)

const tx = await squid.executeRoute({
  signer,
  route
})

const txReceipt = await tx.wait()

console.log(txReceipt)
How to set up a signer.
Types