import { DZapClient, ApprovalModes } from '@dzapio/sdk';
import { createWalletClient, http } from 'viem';
import { arbitrum } from 'viem/chains';
const dzap = DZapClient.getInstance();
const walletClient = createWalletClient({ account: '0x...', chain: arbitrum, transport: http() });
const quotes = await dzap.getTradeQuotes({
fromChain: 42161,
account: '0x...',
data: [{
amount: '10000000', // 10 USDC
srcToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // Arbitrum USDC
destToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // Base USDC
toChain: 8453,
slippage: 1,
}],
});
// Approve (if needed) — same as swap, see /sdk/approvals
const result = await dzap.trade({
request: {
fromChain: 42161,
sender: '0x...',
refundee: '0x...',
data: [{
amount: '10000000',
srcToken: '0xaf88...',
destToken: '0x8335...',
toChain: 8453,
protocol: quotes[0].protocol,
recipient: '0xRecipientOnBase',
slippage: 1,
}],
},
signer: walletClient,
});