@zerodev/smart-routing-address
v0.1.8
Published
The **Smart Routing Address SDK** allows you to create "Smart Routing Addresses" that can receive funds on multiple chains and automatically route them to a destination chain and token.
Keywords
Readme
@zerodev/smart-routing-address
The Smart Routing Address SDK allows you to create "Smart Routing Addresses" that can receive funds on multiple chains and automatically route them to a destination chain and token.
For full documentation, visit https://docs.zerodev.app/smart-routing-address.
Installation
bun install @zerodev/smart-routing-address
# or
npm install @zerodev/smart-routing-address
# or
yarn add @zerodev/smart-routing-address
# or
pnpm add @zerodev/smart-routing-addressUsage
1. Create a Smart Routing Address
Use createSmartRoutingAddress to generate an address that users can deposit funds into. You specify the destination chain, the owner (who receives the funds), and the source tokens you want to accept.
import { createSmartRoutingAddress, CallType } from "@zerodev/smart-routing-address"
import { base, optimism, arbitrum } from "viem/chains"
const { smartRoutingAddress } = await createSmartRoutingAddress({
owner: "0xYourWalletAddress...",
destChain: base, // Destination chain (e.g., Base)
srcTokens: [
{ tokenType: "USDC", chain: optimism },
{ tokenType: "USDC", chain: arbitrum },
{ tokenType: "NATIVE", chain: optimism }, // ETH on Optimism
],
actions: {
// Define what happens when funds arrive
USDC: {
action: [], // Empty array means just transfer the token to owner
fallBack: [],
},
NATIVE: {
action: [],
fallBack: [],
},
},
slippage: 50, // 0.5% slippage
})
console.log("Deposit funds to:", smartRoutingAddress)2. Check Smart Routing Address Status
Use getSmartRoutingAddressStatus to check if funds have been received and bridged.
import { getSmartRoutingAddressStatus } from "@zerodev/smart-routing-address"
const status = await getSmartRoutingAddressStatus({
smartRoutingAddress: "0xSmartRoutingAddress...",
})
console.log("Deposited tokens:", status.depositedTokens)3. Estimate Fees
Use getSmartRoutingAddressFeeEstimates to get fee estimates for the bridging and execution.
import { getSmartRoutingAddressFeeEstimates } from "@zerodev/smart-routing-address"
import { base, optimism } from "viem/chains"
const fees = await getSmartRoutingAddressFeeEstimates({
destChain: base,
srcChain: optimism,
tokenType: "USDC",
owner: "0xYourWalletAddress...",
})
console.log("Fee estimate:", fees)Supported Chains & Tokens
The SDK supports various chains and tokens including:
- Chains: Ethereum, Arbitrum, Base, Optimism, Polygon, BSC, and more.
- Tokens: USDC, USDT, DAI, WBTC, WETH, and ETH.
See src/constants.ts for the full list of supported networks and token addresses.
Types
CreateSmartRoutingAddressParams
| Property | Type | Description |
| :--- | :--- | :--- |
| owner | string | The address that will ultimately receive the funds. |
| destChain | Chain | The chain where funds should settle. |
| srcTokens | Array | List of { tokenType, chain } that the address will accept. |
| actions | Object | Configuration for actions to execute on the destination chain. |
| slippage | number | (Optional) Max slippage in basis points (e.g., 50 = 0.5%). |
