7.1k★by humanrupert
wdk – OpenClaw Skill
wdk is an OpenClaw Skills integration for coding workflows. Tether Wallet Development Kit (WDK) for building non-custodial multi-chain wallets. Use when working with @tetherto/wdk-core, wallet modules (wdk-wallet-btc, wdk-wallet-evm, wdk-wallet-evm-erc-4337, wdk-wallet-solana, wdk-wallet-spark, wdk-wallet-ton, wdk-wallet-tron, ton-gasless, tron-gasfree), and protocol modules including swap (wdk-protocol-swap-velora-evm), bridge (wdk-protocol-bridge-usdt0-evm), and lending (wdk-protocol-lending-aave-evm). Covers wallet creation, transactions, token transfers, DEX swaps, cross-chain bridges, and DeFi lending/borrowing.
Skill Snapshot
| name | wdk |
| description | Tether Wallet Development Kit (WDK) for building non-custodial multi-chain wallets. Use when working with @tetherto/wdk-core, wallet modules (wdk-wallet-btc, wdk-wallet-evm, wdk-wallet-evm-erc-4337, wdk-wallet-solana, wdk-wallet-spark, wdk-wallet-ton, wdk-wallet-tron, ton-gasless, tron-gasfree), and protocol modules including swap (wdk-protocol-swap-velora-evm), bridge (wdk-protocol-bridge-usdt0-evm), and lending (wdk-protocol-lending-aave-evm). Covers wallet creation, transactions, token transfers, DEX swaps, cross-chain bridges, and DeFi lending/borrowing. OpenClaw Skills integration. |
| owner | humanrupert |
| repository | humanrupert/tether-wallet-development-kit |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @humanrupert/tether-wallet-development-kit |
| last updated | Feb 7, 2026 |
Maintainer

name: wdk description: Tether Wallet Development Kit (WDK) for building non-custodial multi-chain wallets. Use when working with @tetherto/wdk-core, wallet modules (wdk-wallet-btc, wdk-wallet-evm, wdk-wallet-evm-erc-4337, wdk-wallet-solana, wdk-wallet-spark, wdk-wallet-ton, wdk-wallet-tron, ton-gasless, tron-gasfree), and protocol modules including swap (wdk-protocol-swap-velora-evm), bridge (wdk-protocol-bridge-usdt0-evm), and lending (wdk-protocol-lending-aave-evm). Covers wallet creation, transactions, token transfers, DEX swaps, cross-chain bridges, and DeFi lending/borrowing.
Tether WDK
Multi-chain wallet SDK. All modules share common interfaces from @tetherto/wdk-wallet.
Documentation
Official Docs: https://docs.wallet.tether.io
URL Fetching Workflow
When working with WDK tasks, follow this workflow to access documentation:
Identify relevant URLs - Based on the task, determine which module documentation pages are needed (see Module Documentation Links below) Attempt to fetch - Try web_fetch on the URL directly If fetch fails - Search for the exact URL:
web_search("https://docs.wallet.tether.io/sdk/wallet-modules/wallet-spark/usage") This makes the URL appear in search results, which unlocks fetching.
Fetch after search - Now web_fetch will work on that URL
Example workflow: Task: Build a Spark wallet app
-
Relevant URLs identified:
-
web_fetch("https://docs.wallet.tether.io/sdk/wallet-modules/wallet-spark/usage") → If permission error, proceed to step 3
-
web_search("https://docs.wallet.tether.io/sdk/wallet-modules/wallet-spark/usage") → URL now appears in results
-
web_fetch("https://docs.wallet.tether.io/sdk/wallet-modules/wallet-spark/usage") → Success - full page content retrieved
For each module, documentation is organized into subpages:
/usage - Example usage and patterns /configuration - Configuration options and settings /api-reference - Complete API documentation
Architecture
@tetherto/wdk-core # Orchestrator - registers wallets + protocols
├── @tetherto/wdk-wallet # Base classes (WalletManager, IWalletAccount)
│ ├── wdk-wallet-btc # Bitcoin (BIP-84, SegWit)
│ ├── wdk-wallet-evm # Ethereum & EVM chains
│ ├── wdk-wallet-evm-erc-4337 # EVM with Account Abstraction
│ ├── wdk-wallet-solana # Solana
│ ├── wdk-wallet-spark # Spark/Lightning
│ ├── wdk-wallet-ton # TON
│ ├── wdk-wallet-ton-gasless # TON gasless
│ ├── wdk-wallet-tron # TRON
│ └── wdk-wallet-tron-gasfree # TRON gas-free
└── Protocol Modules
├── wdk-protocol-swap-velora-evm # DEX swaps on EVM
├── wdk-protocol-bridge-usdt0-evm # Cross-chain USDT0 bridge
└── wdk-protocol-lending-aave-evm # Aave V3 lending
Quick Start
Docs: https://docs.wallet.tether.io/sdk/get-started
With WDK Core (Multi-chain)
import WDK from '@tetherto/wdk'
import WalletManagerEvm from '@tetherto/wdk-wallet-evm'
import WalletManagerBtc from '@tetherto/wdk-wallet-btc'
const wdk = new WDK(seedPhrase)
.registerWallet('ethereum', WalletManagerEvm, { provider: 'https://eth.drpc.org' })
.registerWallet('bitcoin', WalletManagerBtc, { host: 'electrum.blockstream.info', port: 50001 })
const ethAccount = await wdk.getAccount('ethereum', 0)
const btcAccount = await wdk.getAccount('bitcoin', 0)
Single Chain (Direct)
import WalletManagerBtc from '@tetherto/wdk-wallet-btc'
const wallet = new WalletManagerBtc(seedPhrase, {
host: 'electrum.blockstream.info',
port: 50001,
network: 'bitcoin'
})
const account = await wallet.getAccount(0)
Common Interface (All Wallets)
All wallet accounts implement IWalletAccount:
| Method | Returns | Description |
|---|---|---|
getAddress() | Promise<string> | Account address |
getBalance() | Promise<bigint> | Native token balance (base units) |
getTokenBalance(addr) | Promise<bigint> | Token balance |
sendTransaction({to, value}) | Promise<{hash, fee}> | Send native tokens |
quoteSendTransaction({to, value}) | Promise<{fee}> | Estimate tx fee |
transfer({token, recipient, amount}) | Promise<{hash, fee}> | Transfer tokens |
quoteTransfer(opts) | Promise<{fee}> | Estimate transfer fee |
sign(message) | Promise<string> | Sign message |
verify(message, signature) | Promise<boolean> | Verify signature |
dispose() | void | Clear private keys from memory |
Properties: index, path, keyPair (⚠️ sensitive)
Module Documentation Links
Core Module
Wallet Modules
Each wallet module has /usage, /configuration, and /api-reference subpages.
Protocol Modules
| Module | Docs |
|---|---|
| Swap (Velora EVM) | https://docs.wallet.tether.io/sdk/swap-modules/swap-velora-evm |
| Bridge (USDT0 EVM) | https://docs.wallet.tether.io/sdk/bridge-modules/bridge-usdt0-evm |
| Lending (Aave EVM) | https://docs.wallet.tether.io/sdk/lending-modules/lending-aave-evm |
Each protocol module has /usage, /configuration, and /api-reference subpages.
UI Kits & Examples
| Resource | URL |
|---|---|
| React Native UI Kit | https://docs.wallet.tether.io/ui-kits/react-native-ui-kit/get-started |
| Theming | https://docs.wallet.tether.io/ui-kits/react-native-ui-kit/theming |
| UI Kit API Reference | https://docs.wallet.tether.io/ui-kits/react-native-ui-kit/api-reference |
| React Native Starter | https://docs.wallet.tether.io/examples-and-starters/react-native-starter |
Chain-Specific Notes
Bitcoin
- BIP-84 (Native SegWit only,
bc1...addresses) - Uses Electrum servers, fees in sat/vB
- No token support (
getTokenBalance,transferthrow) getTransfers({direction, limit, skip})for history
EVM
- BIP-44 (
m/44'/60'), EIP-1559 fee model - Supports ERC20 via
transfer() - Fee rates:
normal= base×1.1,fast= base×2.0
ERC-4337 (Account Abstraction)
- Gasless via UserOperations + Paymaster
- Fees paid in paymaster token (e.g., USDT)
getPaymasterTokenBalance()for fee balance- Batch transactions:
sendTransaction([tx1, tx2])
Solana
- BIP-44 (
m/44'/501'), Ed25519 - Fees in lamports (1 SOL = 1B lamports)
- SPL tokens via
transfer()
Spark
- Bitcoin L2 with Lightning support
- Zero fees for Spark txs
getSingleUseDepositAddress(),claimDeposit(txId)createLightningInvoice({value, memo}),payLightningInvoice({invoice, maxFeeSats})withdraw({to, value})for L1 withdrawal
TON
- BIP-44 (
m/44'/607'), Ed25519 - Fees in nanotons (1 TON = 1B nanotons)
- Jettons via
transfer()
TRON
- BIP-44 (
m/44'/195'), secp256k1 - Fees in sun (1 TRX = 1M sun)
- TRC20 via
transfer() - Energy + bandwidth costs
Gasless Variants
- TON Gasless: Requires
tonApiClient,paymasterTokenconfig - TRON Gasfree: Requires
gasFreeProvider,gasFreeApiKey,serviceProvider,verifyingContract - Both:
sendTransaction()not supported, usetransfer()only
Protocol Quick Reference
Swap (DEX)
// EVM (Velora)
const velora = new VeloraProtocolEvm(evmAccount, { swapMaxFee: 200000000000000n })
await velora.swap({ tokenIn: '0x...', tokenOut: '0x...', tokenInAmount: 1000000n })
Bridge
const bridge = new Usdt0ProtocolEvm(evmAccount, { bridgeMaxFee: 1000000000000000n })
await bridge.bridge({
targetChain: 'arbitrum',
recipient: '0x...',
token: '0x...', // USDT0
amount: 1000000n
})
Lending (Aave)
const aave = new AaveProtocolEvm(evmAccount)
await aave.supply({ token: '0x...', amount: 1000000n })
await aave.borrow({ token: '0x...', amount: 500000n })
await aave.repay({ token: '0x...', amount: 500000n })
await aave.withdraw({ token: '0x...', amount: 1000000n })
const data = await aave.getAccountData() // healthFactor, ltv, etc.
Common Patterns
Fee Estimation Before Send
const quote = await account.quoteSendTransaction({ to, value })
if (quote.fee > maxAcceptableFee) throw new Error('Fee too high')
const result = await account.sendTransaction({ to, value })
Cleanup
try {
// ... wallet operations
} finally {
account.dispose()
wallet.dispose()
}
Read-Only Account
const readOnly = await account.toReadOnlyAccount()
// Can query balances, estimate fees, but cannot sign
Package Versions
ALWAYS fetch the latest version from npm before adding any package to package.json:
npm view <package-name> version
Example workflow:
# Before writing package.json, check each package you need:
npm view @tetherto/wdk-core version
npm view @tetherto/wdk-wallet-btc version
npm view @tetherto/wdk-wallet-evm version
# ... for every @tetherto package you're using
Never hardcode or guess versions. Always verify against npm first.
Browser Compatibility
WDK uses sodium-universal for secure memory handling which requires Node.js. For browser/React apps:
- Add node polyfills (vite-plugin-node-polyfills or similar)
- Create a shim for sodium if
dispose()errors occur:
// sodium-shim.js - No-op for browser
export function sodium_memzero() {}
export default { sodium_memzero }
- Alias in bundler config:
resolve: {
alias: {
'sodium-universal': './src/sodium-shim.js'
}
}
No README available.
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install wdk?
Run openclaw add @humanrupert/tether-wallet-development-kit in your terminal. This installs wdk into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/humanrupert/tether-wallet-development-kit. Review commits and README documentation before installing.
