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
Source chain ID where the swap originates
Destination chain ID where tokens will be received
Exact amount of source tokens to be swapped (in smallest unit)
Expected amount of destination tokens to be received (in smallest unit)This is the expected output. Actual output may vary due to slippage.
Minimum guaranteed amount of destination tokensThe swap will revert if output is less than this amount. This protects against excessive slippage.
Available execution presets with their parameters
Fast execution preset (higher cost, faster execution)
Medium execution preset (balanced cost and speed)
Slow execution preset (lower cost, slower execution)
Custom preset (only if requested via getQuoteWithCustomPreset)
Recommended preset based on market conditionsValues: PresetEnum.fast, PresetEnum.medium, or PresetEnum.slow
Unique quote identifier for order submissionOnly present when enableEstimate: true in quote request
Integrator fee details (if configured)Show IntegratorFeeResponse structure
Address receiving the integrator fee
Total fee in basis points
Integrator’s share of the fee (remainder goes to protocol)
Resolver fee configurationShow ResolverFeeParams structure
Resolver fee recipient address
Discount for whitelisted users
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
})
}
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.