Import
import { useGetSwapRoutes } from '@0xsequence/hooks'
This hook replaces the useGetSwapPrices
hook which was removed in v5.2.3.
Usage
import { useGetSwapRoutes } from '@0xsequence/hooks'
import { useState } from 'react'
function SwapList() {
const [selectedCurrency, setSelectedCurrency] = useState('')
const toTokenAddress = '0x...'
const toTokenAmount = '1000000000'
const walletAddress = '0x...'
const chainId = 137
const {
data: swapRoutes = [],
isLoading,
isError
} = useGetSwapRoutes({
walletAddress,
toTokenAddress,
toTokenAmount,
chainId
})
if (isLoading) return <div>Loading swap options...</div>
if (isError) return <div>Error loading swap options</div>
const noOptionsFound = swapRoutes.flatMap(route => route.fromTokens).length === 0
if (noOptionsFound) return <div>No swap options found</div>
return (
<div>
{swapRoutes.flatMap(route => route.fromTokens).map(token => (
<div
key={token.address}
onClick={() => setSelectedCurrency(token.address)}
style={{
border: selectedCurrency === token.address ? '2px solid blue' : '1px solid gray',
padding: '10px',
margin: '5px',
cursor: 'pointer'
}}
>
<img src={token.logoUri} alt={token.symbol} width="24" height="24" />
<span>{token.symbol}: {token.name}</span>
<div>Required: {token.price}</div>
</div>
))}
</div>
)
}
export default SwapList
Return Type: UseQueryResult<LifiSwapRoute[]>
The hook returns all properties from React Query’s UseQueryResult
with swap routes data. Here’s the detailed structure of the LifiSwapRoute
object:
interface LifiToken {
chainId: number;
address: string;
symbol: string;
name: string;
decimals: number;
priceUsd: number;
price?: string;
coinKey: string;
logoUri: string;
}
interface LifiSwapRoute {
fromChainId: number;
toChainId: number;
fromTokens: Array<LifiToken>;
toTokens: Array<LifiToken>;
}
Properties
data
LifiSwapRoute[] | undefined
Array of swap route objects containing:
route
fromChainId
: The chain ID of the token to sell
toChainId
: The chain ID of the token to buy
fromTokens
: Array of tokens that can be used to pay for the swap
toTokens
: Array of tokens that can be received from the swap
isLoading
boolean
Loading state for the data fetch.
isError
boolean
Error state indicating if the query failed.
error
Error | null
Any error that occurred during data fetching.
Parameters
The hook accepts two parameters:
args: UseGetSwapRoutesArgs
interface UseGetSwapRoutesArgs {
walletAddress: string
toTokenAddress: string
chainId: number
toTokenAmount: string
}
Parameter | Type | Description |
---|
walletAddress | string | The address of the user’s wallet |
toTokenAddress | string | The address of the token to buy |
chainId | number | The chain ID where the swap will occur |
toTokenAmount | string | The amount of token to buy (in wei) |
options: HooksOptions
interface HooksOptions {
disabled?: boolean
retry?: boolean
}
Parameter | Type | Description |
---|
disabled | boolean | (Optional) Disable the query from automatically running |
retry | boolean | (Optional) Whether to retry failed queries (defaults to true) |
Additional Notes
- This hook uses React Query to fetch and cache swap routes from the Sequence API.
- Stale time is set to one hour by default to avoid refreshing quotes while the user is completing transactions.
- This hook will not return “fromTokens” that the user does not have in their wallet.