import { DZapClient, signGaslessDzapUserIntent } from '@dzapio/sdk';
import { createWalletClient, http } from 'viem';
import { arbitrum } from 'viem/chains';
const dzap = DZapClient.getInstance();
const walletClient = createWalletClient({ account: '0xUser', chain: arbitrum, transport: http() });
// 1. Quote
const quote = await dzap.getZapQuote({
srcChainId: 42161,
destChainId: 8453,
account: '0xUser',
srcToken: '0xaf88...',
destToken: '0x4200000000000000000000000000000000000006',
amount: '100000000',
recipient: '0xUser',
refundee: '0xUser',
slippage: 1,
});
// 2. Sign
const signature = await signGaslessDzapUserIntent({
chainId: 42161,
spender: dzap.getDZapContractAddress(42161),
account: '0xUser',
signer: walletClient,
txType: 'swapBridge',
txId: quote.txId,
executorFeesHash: quote.executorFeesHash,
swapDataHash: quote.swapDataHash,
contractVersion: 'v1',
});
// 3. Submit
await fetch('https://zap.dzap.io/v1/execute', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ intent: quote, signature, txType: 'swapBridge' }),
});
// 4. Track
const status = await dzap.getZapTxnStatus({ txId: quote.txId });