Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dzap.io/llms.txt

Use this file to discover all available pages before exploring further.

A complete same-chain swap, end to end. Source: USDC on Arbitrum → WETH on Arbitrum.

SDK

1

Install + initialize

import { DZapClient, ApprovalModes } from '@dzapio/sdk';
import { createWalletClient, http } from 'viem';
import { arbitrum } from 'viem/chains';

const dzap = DZapClient.getInstance();

const walletClient = createWalletClient({
  account: '0xYourAddress',
  chain: arbitrum,
  transport: http(),
});
2

Quote

const quotes = await dzap.getTradeQuotes({
  fromChain: 42161,
  account: '0xYourAddress',
  data: [{
    amount: '1000000',                                          // 1 USDC
    srcToken: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
    destToken: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
    slippage: 1,
  }],
});
3

Approve

const allowance = await dzap.getAllowance({
  chainId: 42161,
  sender: '0xYourAddress',
  tokens: [{ address: '0xaf88...', amount: 1_000_000n }],
  service: 'swap',
  mode: ApprovalModes.AutoPermit,
});

if (allowance.data['0xaf88...'].allowance < 1_000_000n) {
  await dzap.approve({
    chainId: 42161,
    signer: walletClient,
    sender: '0xYourAddress',
    tokens: [{ address: '0xaf88...', amount: 1_000_000n }],
    service: 'swap',
    mode: ApprovalModes.AutoPermit,
  });
}
4

Execute

const result = await dzap.trade({
  request: {
    fromChain: 42161,
    sender: '0xYourAddress',
    refundee: '0xYourAddress',
    data: [{
      amount: '1000000',
      srcToken: '0xaf88...',
      destToken: '0x82aF...',
      protocol: quotes[0].protocol,
      recipient: '0xYourAddress',
      slippage: 1,
    }],
  },
  signer: walletClient,
});

console.log(result.txnHash);
5

Track

const status = await dzap.getTradeTxnStatus({
  txHash: result.txnHash,
  chainId: '42161',
});

API equivalent

curl -X POST https://api.dzap.io/v1/quotes \
  -H "Content-Type: application/json" \
  -d '{
    "fromChain": 42161,
    "account": "0xYourAddress",
    "data": [{
      "amount": "1000000",
      "srcToken": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
      "destToken": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
      "slippage": 1
    }]
  }'
Then POST /v1/buildTx and submit the returned data to the chain.

Common gotchas

  • Native token sentinel — use 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE for ETH/native, not the zero address.
  • Decimals matteramount is wei. USDC is 6 decimals (1000000 = 1 USDC), WETH is 18.
  • Slippage units1 = 1%, not 100bps. Default is 1.
  • Approvals once — for AutoPermit flows the on-chain approval to Permit2 is one-time.
See Approvals for the full approval-mode breakdown.