The SDK is published as @dzapio/sdk. Latest stable: 2.0.44. Targets Node 16+ and modern browsers (see Browser bundler setup). It ships its own wallet libraries — there are no peer dependencies to install separately.
The SDK pins its wallet libraries to exact versions, not ranges:
Dependency
Pinned version
viem
2.48.4
ethers
5.7.2
@solana/web3.js
1.95.8
If your app resolves a different viem, WalletClient becomes a structurally different type and
passing a signer stops typechecking — with an error that never mentions versions. Force a single
copy:
{ "overrides": { "viem": "2.48.4" }}
{ "resolutions": { "viem": "2.48.4" }}
overrides: viem: 2.48.4
The same applies to ethers@5.7.2 if you use the ethers adapter.
The SDK pulls in @solana/web3.js, tonweb and ethers@5, which expect Node globals. In a stock
Vite or Next app the build fails or breaks at runtime until Buffer, global and process are
polyfilled.
import { ethers } from 'ethers';// The SDK bundles ethers v5, use the v5 provider APIconst provider = new ethers.providers.JsonRpcProvider('https://arbitrum.llamarpc.com');const signer = new ethers.Wallet('0xPrivateKey', provider);
Pass either as the signer field to dzap.trade(), dzap.zap(), etc.
Never put private keys in client code or commit them. Use a wallet provider (RainbowKit, ConnectKit, etc.) on the frontend; use a secrets manager on the backend.