Actions
getPrice
Get a lightweight quote for a crosschain relay (bridge, swap, call, etc)
Parameters
Property | Description | Required |
---|---|---|
originChainId | The chain id to deposit funds on | ✅ |
destinationChainId | The chain id to execute the txs on | ✅ |
originCurrency | Address for a supported native currency or valid erc20 | ✅ |
destinationCurrency | Address for a supported native currency or valid erc20 | ✅ |
tradeType | Either EXACT_INPUT or EXACT_OUTPUT , this will inform the api whether or not to use the amount as the input or the output for the trade. For calls (when supplying txs), you’ll need to set the tradeType to EXACT_OUPUT | ✅ |
amount | Amount in wei, in the supplied currency | ❌ |
user | The wallet address initiating the relay | ❌ |
recipient | A valid address to send the funds to, defaults to wallet address if not sepcified | ❌ |
txs | An array of either transaction objects (made up of a to, data and value properties) or viem request objects returned from viem’s simulateContract function | ❌ |
options | Additional options that map directly to the price API | ❌ |
Native Bridge Example
import { getClient } from "@reservoir0x/relay-sdk";
import { useWalletClient } from "wagmi";
const { data: wallet } = useWalletClient();
const price = await getClient()?.actions.getPrice({
originChainId: 1,
destinationChainId: 10,
originCurrency: "0x0000000000000000000000000000000000000000",
destinationCurrency: "0x0000000000000000000000000000000000000000",
value: "10000000000000000", // 0.01 ETH
user: "0x03508bB71268BBA25ECaCC8F620e018666501111"
});
Cross-Chain Swap Example
// Cross-Chain Swap from USDC on Ethereum to DAI on Optimism
const price = await getClient()?.actions.getPrice({
originChainId: 1,
destinationChainId: 10,
originCurrency: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC on Ethereum
destinationCurrency: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", // DAI on Optimism
value: "100000", // 100 USDC
user: "0x03508bB71268BBA25ECaCC8F620e018666501111"
});
Wrap/Unwrap Example
// Unwrap ETH
const price = await getClient()?.actions.getPrice({
originChainId: 1,
destinationChainId: 1,
originCurrency: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH
destinationCurrency: "0x0000000000000000000000000000000000000000",
value: "10000000000000000", // 0.01 ETH
user: "0x03508bB71268BBA25ECaCC8F620e018666501111"
});
Send Example
// Send ERC20 / Native Currency to another address on the same chain
// Note: The recipient address must be specified for send transactions and be different from the wallet address
const price = await getClient()?.actions.getPrice({
originChainId: 1,
destinationChainId: 1,
originCurrency: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
destinationCurrency: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
value: "100000", // 100 USDC
user: "0x03508bB71268BBA25ECaCC8F620e018666501111",
recipient: "0x0000c3caa36e2d9a8cd5269c976ede05018f0000",
});
The Price is a lightweight quote, excluding steps and calldata but it includes a preview of what the full quote might contain. Prices are subject to change once you get the quote so you should handle price changes accordingly.