Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/1inch/cross-chain-sdk/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Quote object contains all pricing, routing, and execution details for a cross-chain swap.

Type Definition

class Quote {
  srcChainId: NetworkEnum
  dstChainId: NetworkEnum
  srcTokenAmount: string
  dstTokenAmount: string
  dstMinTokenAmount: string
  presets: Presets
  recommendedPreset: PresetEnum
  quoteId?: string
  integratorFee?: IntegratorFeeResponse
  resolverFee?: ResolverFeeParams
  
  // Methods
  createEvmOrder(params: EvmCrossChainOrderParamsData): EvmCrossChainOrder
  createSolanaOrder(params: SvmCrossChainOrderParamsData): SvmCrossChainOrder
  getPreset(preset: PresetEnum): Preset
  isEvmQuote(): boolean
  isSolanaQuote(): boolean
}

Fields

srcChainId
NetworkEnum
Source chain ID where the swap originates
dstChainId
NetworkEnum
Destination chain ID where tokens will be received
srcTokenAmount
string
Exact amount of source tokens to be swapped (in smallest unit)
dstTokenAmount
string
Expected amount of destination tokens to be received (in smallest unit)This is the expected output. Actual output may vary due to slippage.
dstMinTokenAmount
string
Minimum guaranteed amount of destination tokensThe swap will revert if output is less than this amount. This protects against excessive slippage.
presets
Presets
Available execution presets with their parameters
Recommended preset based on market conditionsValues: PresetEnum.fast, PresetEnum.medium, or PresetEnum.slow
quoteId
string
Unique quote identifier for order submission
Only present when enableEstimate: true in quote request
integratorFee
IntegratorFeeResponse
Integrator fee details (if configured)
resolverFee
ResolverFeeParams
Resolver fee configuration

Methods

createEvmOrder

Creates an EVM cross-chain order from the quote.
createEvmOrder(params: EvmCrossChainOrderParamsData): EvmCrossChainOrder
Parameters:
  • hashLock - Hash lock for the swap
  • preset - Execution preset to use
  • receiver - Optional destination address (defaults to maker)
  • nonce - Optional order nonce
  • permit - Optional EIP-2612 permit

createSolanaOrder

Creates a Solana cross-chain order from the quote.
createSolanaOrder(params: SvmCrossChainOrderParamsData): SvmCrossChainOrder
Parameters:
  • hashLock - Hash lock for the swap
  • receiver - Destination EVM address (required)
  • preset - Execution preset to use

getPreset

Retrieves a specific preset’s configuration.
getPreset(preset: PresetEnum): Preset

isEvmQuote / isSolanaQuote

Type guards to check quote type.
isEvmQuote(): boolean
isSolanaQuote(): boolean

Examples

Accessing Quote Data

const quote = await sdk.getQuote({
  srcChainId: NetworkEnum.ETHEREUM,
  dstChainId: NetworkEnum.POLYGON,
  srcTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
  dstTokenAddress: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',
  amount: '1000000',
  walletAddress: '0x...',
  enableEstimate: true
})

console.log(`Source: ${quote.srcTokenAmount} tokens`)
console.log(`Expected output: ${quote.dstTokenAmount} tokens`)
console.log(`Minimum output: ${quote.dstMinTokenAmount} tokens`)
console.log(`Recommended preset: ${quote.recommendedPreset}`)
console.log(`Quote ID: ${quote.quoteId}`)

Exploring Presets

const fastPreset = quote.getPreset(PresetEnum.fast)
const slowPreset = quote.getPreset(PresetEnum.slow)

console.log(`Fast preset fills: ${fastPreset.secretsCount}`)
console.log(`Slow preset fills: ${slowPreset.secretsCount}`)

Creating Orders from Quote

import { HashLock } from '@1inch/cross-chain-sdk'
import { randomBytes } from 'crypto'

// Generate secrets
const preset = quote.getPreset(quote.recommendedPreset)
const secrets = Array.from({ length: preset.secretsCount })
  .map(() => '0x' + randomBytes(32).toString('hex'))

const hashLock = secrets.length === 1
  ? HashLock.forSingleFill(secrets[0])
  : HashLock.forMultipleFills(HashLock.getMerkleLeaves(secrets))

// Create EVM order
if (quote.isEvmQuote()) {
  const order = quote.createEvmOrder({
    hashLock,
    preset: quote.recommendedPreset
  })
}

// Create Solana order
if (quote.isSolanaQuote()) {
  const order = quote.createSolanaOrder({
    hashLock,
    receiver: EvmAddress.fromString('0x...'),
    preset: quote.recommendedPreset
  })
}

Checking Fee Information

if (quote.integratorFee) {
  console.log(`Integrator fee: ${quote.integratorFee.value.toString()} bps`)
  console.log(`Integrator share: ${quote.integratorFee.share.toString()} bps`)
  console.log(`Fee receiver: ${quote.integratorFee.receiver.toString()}`)
}

if (quote.resolverFee) {
  console.log(`Resolver fee: ${quote.resolverFee.bps.toString()} bps`)
  console.log(`Whitelist discount: ${quote.resolverFee.whitelistDiscount.toString()} bps`)
}

Preset Object

interface Preset {
  secretsCount: number // Number of fills required
  auctionDuration: bigint // Auction duration in seconds
  auctionStartAmount: bigint // Starting amount for auction
  auctionEndAmount: bigint // Ending amount for auction
  points: Array<{ delay: bigint; coefficient: bigint }> // Auction curve points
}

Notes

The quoteId is essential for order submission. Always use enableEstimate: true when you plan to create an order.
Quotes expire after a short time (typically 2-5 minutes). Create and submit orders promptly after receiving a quote.
The difference between dstTokenAmount and dstMinTokenAmount represents the maximum acceptable slippage.