[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FRW1YDEP13JS0SNY9ZFXQR":3,"skill-same:01M6FRW1YDEP13JS0SNY9ZFXQR":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6FRW1YDEP13JS0SNY9ZFXQR","wdk",null,"Tether Wallet Development Kit (WDK) for building non-custodial multi-chain wallets. Use when working with @tetherto\u002Fwdk-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\u002Fborrowing.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumanrupert\u002Ftether-wallet-development-kit\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"multi-chain","tron","kit","gasless","chain","non-custodial","creation","token","swaps","development","btc","aave","Wallet","modules","cross-chain","bridge","transactions","defi","core","2026-11-10 10:12:30",false,"---\nname: wdk\ndescription: Tether Wallet Development Kit (WDK) for building non-custodial multi-chain wallets. Use when working with @tetherto\u002Fwdk-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\u002Fborrowing.\n---\n\n# Tether WDK\n\nMulti-chain wallet SDK. All modules share common interfaces from `@tetherto\u002Fwdk-wallet`.\n\n\n## Documentation\n\n**Official Docs**: https:\u002F\u002Fdocs.wallet.tether.io\n\n### URL Fetching Workflow\nWhen working with WDK tasks, follow this workflow to access documentation:\n\nIdentify relevant URLs - Based on the task, determine which module documentation pages are needed (see Module Documentation Links below)\nAttempt to fetch - Try web_fetch on the URL directly\nIf fetch fails - Search for the exact URL:\n\n   web_search(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\nThis makes the URL appear in search results, which unlocks fetching.\n\nFetch after search - Now web_fetch will work on that URL\n\nExample workflow:\nTask: Build a Spark wallet app\n\n1. Relevant URLs identified:\n   - https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\n   - https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fconfiguration\n\n2. web_fetch(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → If permission error, proceed to step 3\n\n3. web_search(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → URL now appears in results\n\n4. web_fetch(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → Success - full page content retrieved\n\nFor each module, documentation is organized into subpages:\n\n\u002Fusage - Example usage and patterns\n\u002Fconfiguration - Configuration options and settings\n\u002Fapi-reference - Complete API documentation\n\n\n## Architecture\n\n```\n@tetherto\u002Fwdk-core          # Orchestrator - registers wallets + protocols\n    ├── @tetherto\u002Fwdk-wallet    # Base classes (WalletManager, IWalletAccount)\n    │   ├── wdk-wallet-btc      # Bitcoin (BIP-84, SegWit)\n    │   ├── wdk-wallet-evm      # Ethereum & EVM chains\n    │   ├── wdk-wallet-evm-erc-4337  # EVM with Account Abstraction\n    │   ├── wdk-wallet-solana   # Solana\n    │   ├── wdk-wallet-spark    # Spark\u002FLightning\n    │   ├── wdk-wallet-ton      # TON\n    │   ├── wdk-wallet-ton-gasless   # TON gasless\n    │   ├── wdk-wallet-tron     # TRON\n    │   └── wdk-wallet-tron-gasfree  # TRON gas-free\n    └── Protocol Modules\n        ├── wdk-protocol-swap-velora-evm   # DEX swaps on EVM\n        ├── wdk-protocol-bridge-usdt0-evm  # Cross-chain USDT0 bridge\n        └── wdk-protocol-lending-aave-evm  # Aave V3 lending\n```\n\n## Quick Start\n\n**Docs**: https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fget-started\n\n### With WDK Core (Multi-chain)\n```javascript\nimport WDK from '@tetherto\u002Fwdk'\nimport WalletManagerEvm from '@tetherto\u002Fwdk-wallet-evm'\nimport WalletManagerBtc from '@tetherto\u002Fwdk-wallet-btc'\n\nconst wdk = new WDK(seedPhrase)\n  .registerWallet('ethereum', WalletManagerEvm, { provider: 'https:\u002F\u002Feth.drpc.org' })\n  .registerWallet('bitcoin', WalletManagerBtc, { host: 'electrum.blockstream.info', port: 50001 })\n\nconst ethAccount = await wdk.getAccount('ethereum', 0)\nconst btcAccount = await wdk.getAccount('bitcoin', 0)\n```\n\n### Single Chain (Direct)\n```javascript\nimport WalletManagerBtc from '@tetherto\u002Fwdk-wallet-btc'\n\nconst wallet = new WalletManagerBtc(seedPhrase, {\n  host: 'electrum.blockstream.info',\n  port: 50001,\n  network: 'bitcoin'\n})\nconst account = await wallet.getAccount(0)\n```\n\n## Common Interface (All Wallets)\n\nAll wallet accounts implement `IWalletAccount`:\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `getAddress()` | `Promise\u003Cstring>` | Account address |\n| `getBalance()` | `Promise\u003Cbigint>` | Native token balance (base units) |\n| `getTokenBalance(addr)` | `Promise\u003Cbigint>` | Token balance |\n| `sendTransaction({to, value})` | `Promise\u003C{hash, fee}>` | Send native tokens |\n| `quoteSendTransaction({to, value})` | `Promise\u003C{fee}>` | Estimate tx fee |\n| `transfer({token, recipient, amount})` | `Promise\u003C{hash, fee}>` | Transfer tokens |\n| `quoteTransfer(opts)` | `Promise\u003C{fee}>` | Estimate transfer fee |\n| `sign(message)` | `Promise\u003Cstring>` | Sign message |\n| `verify(message, signature)` | `Promise\u003Cboolean>` | Verify signature |\n| `dispose()` | `void` | Clear private keys from memory |\n\nProperties: `index`, `path`, `keyPair` (⚠️ sensitive)\n\n## Module Documentation Links\n\n### Core Module\n| Resource | URL |\n|----------|-----|\n| Overview | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module |\n| Usage | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fusage |\n| Configuration | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fconfiguration |\n| API Reference | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fapi-reference |\n\n### Wallet Modules\n\n| Module | Docs |\n|--------|------|\n| **Bitcoin** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-btc |\n| **EVM** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-evm |\n| **EVM ERC-4337** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-evm-erc-4337 |\n| **Solana** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-solana |\n| **Spark** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark |\n| **TON** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-ton |\n| **TON Gasless** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-ton-gasless |\n| **TRON** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-tron |\n| **TRON Gasfree** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-tron-gasfree |\n\nEach wallet module has `\u002Fusage`, `\u002Fconfiguration`, and `\u002Fapi-reference` subpages.\n\n### Protocol Modules\n\n| Module | Docs |\n|--------|------|\n| **Swap (Velora EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fswap-modules\u002Fswap-velora-evm |\n| **Bridge (USDT0 EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fbridge-modules\u002Fbridge-usdt0-evm |\n| **Lending (Aave EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Flending-modules\u002Flending-aave-evm |\n\nEach protocol module has `\u002Fusage`, `\u002Fconfiguration`, and `\u002Fapi-reference` subpages.\n\n### UI Kits & Examples\n\n| Resource | URL |\n|----------|-----|\n| React Native UI Kit | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Fget-started |\n| Theming | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Ftheming |\n| UI Kit API Reference | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Fapi-reference |\n| React Native Starter | https:\u002F\u002Fdocs.wallet.tether.io\u002Fexamples-and-starters\u002Freact-native-starter |\n\n## Chain-Specific Notes\n\n### Bitcoin\n- BIP-84 (Native SegWit only, `bc1...` addresses)\n- Uses Electrum servers, fees in sat\u002FvB\n- No token support (`getTokenBalance`, `transfer` throw)\n- `getTransfers({direction, limit, skip})` for history\n\n### EVM\n- BIP-44 (`m\u002F44'\u002F60'`), EIP-1559 fee model\n- Supports ERC20 via `transfer()`\n- Fee rates: `normal` = base×1.1, `fast` = base×2.0\n\n### ERC-4337 (Account Abstraction)\n- Gasless via UserOperations + Paymaster\n- Fees paid in paymaster token (e.g., USDT)\n- `getPaymasterTokenBalance()` for fee balance\n- Batch transactions: `sendTransaction([tx1, tx2])`\n\n### Solana\n- BIP-44 (`m\u002F44'\u002F501'`), Ed25519\n- Fees in lamports (1 SOL = 1B lamports)\n- SPL tokens via `transfer()`\n\n### Spark\n- Bitcoin L2 with Lightning support\n- Zero fees for Spark txs\n- `getSingleUseDepositAddress()`, `claimDeposit(txId)`\n- `createLightningInvoice({value, memo})`, `payLightningInvoice({invoice, maxFeeSats})`\n- `withdraw({to, value})` for L1 withdrawal\n\n### TON\n- BIP-44 (`m\u002F44'\u002F607'`), Ed25519\n- Fees in nanotons (1 TON = 1B nanotons)\n- Jettons via `transfer()`\n\n### TRON\n- BIP-44 (`m\u002F44'\u002F195'`), secp256k1\n- Fees in sun (1 TRX = 1M sun)\n- TRC20 via `transfer()`\n- Energy + bandwidth costs\n\n### Gasless Variants\n- **TON Gasless**: Requires `tonApiClient`, `paymasterToken` config\n- **TRON Gasfree**: Requires `gasFreeProvider`, `gasFreeApiKey`, `serviceProvider`, `verifyingContract`\n- Both: `sendTransaction()` not supported, use `transfer()` only\n\n## Protocol Quick Reference\n\n### Swap (DEX)\n```javascript\n\u002F\u002F EVM (Velora)\nconst velora = new VeloraProtocolEvm(evmAccount, { swapMaxFee: 200000000000000n })\nawait velora.swap({ tokenIn: '0x...', tokenOut: '0x...', tokenInAmount: 1000000n })\n```\n\n### Bridge\n```javascript\nconst bridge = new Usdt0ProtocolEvm(evmAccount, { bridgeMaxFee: 1000000000000000n })\nawait bridge.bridge({\n  targetChain: 'arbitrum',\n  recipient: '0x...',\n  token: '0x...',  \u002F\u002F USDT0\n  amount: 1000000n\n})\n```\n\n### Lending (Aave)\n```javascript\nconst aave = new AaveProtocolEvm(evmAccount)\nawait aave.supply({ token: '0x...', amount: 1000000n })\nawait aave.borrow({ token: '0x...', amount: 500000n })\nawait aave.repay({ token: '0x...', amount: 500000n })\nawait aave.withdraw({ token: '0x...', amount: 1000000n })\nconst data = await aave.getAccountData()  \u002F\u002F healthFactor, ltv, etc.\n```\n\n## Common Patterns\n\n### Fee Estimation Before Send\n```javascript\nconst quote = await account.quoteSendTransaction({ to, value })\nif (quote.fee > maxAcceptableFee) throw new Error('Fee too high')\nconst result = await account.sendTransaction({ to, value })\n```\n\n### Cleanup\n```javascript\ntry {\n  \u002F\u002F ... wallet operations\n} finally {\n  account.dispose()\n  wallet.dispose()\n}\n```\n\n### Read-Only Account\n```javascript\nconst readOnly = await account.toReadOnlyAccount()\n\u002F\u002F Can query balances, estimate fees, but cannot sign\n```\n\n## Package Versions\n\n**ALWAYS** fetch the latest version from npm before adding any package to package.json:\n```bash\nnpm view \u003Cpackage-name> version\n```\n\nExample workflow:\n```bash\n# Before writing package.json, check each package you need:\nnpm view @tetherto\u002Fwdk-core version\nnpm view @tetherto\u002Fwdk-wallet-btc version\nnpm view @tetherto\u002Fwdk-wallet-evm version\n# ... for every @tetherto package you're using\n```\n\nNever hardcode or guess versions. Always verify against npm first.\n\n## Browser Compatibility\n\nWDK uses `sodium-universal` for secure memory handling which requires Node.js. For browser\u002FReact apps:\n\n1. Add node polyfills (vite-plugin-node-polyfills or similar)\n2. Create a shim for sodium if `dispose()` errors occur:\n```javascript\n\u002F\u002F sodium-shim.js - No-op for browser\nexport function sodium_memzero() {}\nexport default { sodium_memzero }\n```\n3. Alias in bundler config:\n```javascript\nresolve: {\n  alias: {\n    'sodium-universal': '.\u002Fsrc\u002Fsodium-shim.js'\n  }\n}\n```","# Tether WDK\n\nMulti-chain wallet SDK. All modules share common interfaces from `@tetherto\u002Fwdk-wallet`.\n\n\n## Documentation\n\n**Official Docs**: https:\u002F\u002Fdocs.wallet.tether.io\n\n### URL Fetching Workflow\nWhen working with WDK tasks, follow this workflow to access documentation:\n\nIdentify relevant URLs - Based on the task, determine which module documentation pages are needed (see Module Documentation Links below)\nAttempt to fetch - Try web_fetch on the URL directly\nIf fetch fails - Search for the exact URL:\n\n   web_search(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\nThis makes the URL appear in search results, which unlocks fetching.\n\nFetch after search - Now web_fetch will work on that URL\n\nExample workflow:\nTask: Build a Spark wallet app\n\n1. Relevant URLs identified:\n   - https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\n   - https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fconfiguration\n\n2. web_fetch(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → If permission error, proceed to step 3\n\n3. web_search(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → URL now appears in results\n\n4. web_fetch(\"https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark\u002Fusage\")\n   → Success - full page content retrieved\n\nFor each module, documentation is organized into subpages:\n\n\u002Fusage - Example usage and patterns\n\u002Fconfiguration - Configuration options and settings\n\u002Fapi-reference - Complete API documentation\n\n\n## Architecture\n\n```\n@tetherto\u002Fwdk-core          # Orchestrator - registers wallets + protocols\n    ├── @tetherto\u002Fwdk-wallet    # Base classes (WalletManager, IWalletAccount)\n    │   ├── wdk-wallet-btc      # Bitcoin (BIP-84, SegWit)\n    │   ├── wdk-wallet-evm      # Ethereum & EVM chains\n    │   ├── wdk-wallet-evm-erc-4337  # EVM with Account Abstraction\n    │   ├── wdk-wallet-solana   # Solana\n    │   ├── wdk-wallet-spark    # Spark\u002FLightning\n    │   ├── wdk-wallet-ton      # TON\n    │   ├── wdk-wallet-ton-gasless   # TON gasless\n    │   ├── wdk-wallet-tron     # TRON\n    │   └── wdk-wallet-tron-gasfree  # TRON gas-free\n    └── Protocol Modules\n        ├── wdk-protocol-swap-velora-evm   # DEX swaps on EVM\n        ├── wdk-protocol-bridge-usdt0-evm  # Cross-chain USDT0 bridge\n        └── wdk-protocol-lending-aave-evm  # Aave V3 lending\n```\n\n## Quick Start\n\n**Docs**: https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fget-started\n\n### With WDK Core (Multi-chain)\n```javascript\nimport WDK from '@tetherto\u002Fwdk'\nimport WalletManagerEvm from '@tetherto\u002Fwdk-wallet-evm'\nimport WalletManagerBtc from '@tetherto\u002Fwdk-wallet-btc'\n\nconst wdk = new WDK(seedPhrase)\n  .registerWallet('ethereum', WalletManagerEvm, { provider: 'https:\u002F\u002Feth.drpc.org' })\n  .registerWallet('bitcoin', WalletManagerBtc, { host: 'electrum.blockstream.info', port: 50001 })\n\nconst ethAccount = await wdk.getAccount('ethereum', 0)\nconst btcAccount = await wdk.getAccount('bitcoin', 0)\n```\n\n### Single Chain (Direct)\n```javascript\nimport WalletManagerBtc from '@tetherto\u002Fwdk-wallet-btc'\n\nconst wallet = new WalletManagerBtc(seedPhrase, {\n  host: 'electrum.blockstream.info',\n  port: 50001,\n  network: 'bitcoin'\n})\nconst account = await wallet.getAccount(0)\n```\n\n## Common Interface (All Wallets)\n\nAll wallet accounts implement `IWalletAccount`:\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `getAddress()` | `Promise\u003Cstring>` | Account address |\n| `getBalance()` | `Promise\u003Cbigint>` | Native token balance (base units) |\n| `getTokenBalance(addr)` | `Promise\u003Cbigint>` | Token balance |\n| `sendTransaction({to, value})` | `Promise\u003C{hash, fee}>` | Send native tokens |\n| `quoteSendTransaction({to, value})` | `Promise\u003C{fee}>` | Estimate tx fee |\n| `transfer({token, recipient, amount})` | `Promise\u003C{hash, fee}>` | Transfer tokens |\n| `quoteTransfer(opts)` | `Promise\u003C{fee}>` | Estimate transfer fee |\n| `sign(message)` | `Promise\u003Cstring>` | Sign message |\n| `verify(message, signature)` | `Promise\u003Cboolean>` | Verify signature |\n| `dispose()` | `void` | Clear private keys from memory |\n\nProperties: `index`, `path`, `keyPair` (⚠️ sensitive)\n\n## Module Documentation Links\n\n### Core Module\n| Resource | URL |\n|----------|-----|\n| Overview | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module |\n| Usage | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fusage |\n| Configuration | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fconfiguration |\n| API Reference | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fcore-module\u002Fapi-reference |\n\n### Wallet Modules\n\n| Module | Docs |\n|--------|------|\n| **Bitcoin** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-btc |\n| **EVM** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-evm |\n| **EVM ERC-4337** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-evm-erc-4337 |\n| **Solana** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-solana |\n| **Spark** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-spark |\n| **TON** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-ton |\n| **TON Gasless** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-ton-gasless |\n| **TRON** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-tron |\n| **TRON Gasfree** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fwallet-modules\u002Fwallet-tron-gasfree |\n\nEach wallet module has `\u002Fusage`, `\u002Fconfiguration`, and `\u002Fapi-reference` subpages.\n\n### Protocol Modules\n\n| Module | Docs |\n|--------|------|\n| **Swap (Velora EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fswap-modules\u002Fswap-velora-evm |\n| **Bridge (USDT0 EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Fbridge-modules\u002Fbridge-usdt0-evm |\n| **Lending (Aave EVM)** | https:\u002F\u002Fdocs.wallet.tether.io\u002Fsdk\u002Flending-modules\u002Flending-aave-evm |\n\nEach protocol module has `\u002Fusage`, `\u002Fconfiguration`, and `\u002Fapi-reference` subpages.\n\n### UI Kits & Examples\n\n| Resource | URL |\n|----------|-----|\n| React Native UI Kit | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Fget-started |\n| Theming | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Ftheming |\n| UI Kit API Reference | https:\u002F\u002Fdocs.wallet.tether.io\u002Fui-kits\u002Freact-native-ui-kit\u002Fapi-reference |\n| React Native Starter | https:\u002F\u002Fdocs.wallet.tether.io\u002Fexamples-and-starters\u002Freact-native-starter |\n\n## Chain-Specific Notes\n\n### Bitcoin\n- BIP-84 (Native SegWit only, `bc1...` addresses)\n- Uses Electrum servers, fees in sat\u002FvB\n- No token support (`getTokenBalance`, `transfer` throw)\n- `getTransfers({direction, limit, skip})` for history\n\n### EVM\n- BIP-44 (`m\u002F44'\u002F60'`), EIP-1559 fee model\n- Supports ERC20 via `transfer()`\n- Fee rates: `normal` = base×1.1, `fast` = base×2.0\n\n### ERC-4337 (Account Abstraction)\n- Gasless via UserOperations + Paymaster\n- Fees paid in paymaster token (e.g., USDT)\n- `getPaymasterTokenBalance()` for fee balance\n- Batch transactions: `sendTransaction([tx1, tx2])`\n\n### Solana\n- BIP-44 (`m\u002F44'\u002F501'`), Ed25519\n- Fees in lamports (1 SOL = 1B lamports)\n- SPL tokens via `transfer()`\n\n### Spark\n- Bitcoin L2 with Lightning support\n- Zero fees for Spark txs\n- `getSingleUseDepositAddress()`, `claimDeposit(txId)`\n- `createLightningInvoice({value, memo})`, `payLightningInvoice({invoice, maxFeeSats})`\n- `withdraw({to, value})` for L1 withdrawal\n\n### TON\n- BIP-44 (`m\u002F44'\u002F607'`), Ed25519\n- Fees in nanotons (1 TON = 1B nanotons)\n- Jettons via `transfer()`\n\n### TRON\n- BIP-44 (`m\u002F44'\u002F195'`), secp256k1\n- Fees in sun (1 TRX = 1M sun)\n- TRC20 via `transfer()`\n- Energy + bandwidth costs\n\n### Gasless Variants\n- **TON Gasless**: Requires `tonApiClient`, `paymasterToken` config\n- **TRON Gasfree**: Requires `gasFreeProvider`, `gasFreeApiKey`, `serviceProvider`, `verifyingContract`\n- Both: `sendTransaction()` not supported, use `transfer()` only\n\n## Protocol Quick Reference\n\n### Swap (DEX)\n```javascript\n\u002F\u002F EVM (Velora)\nconst velora = new VeloraProtocolEvm(evmAccount, { swapMaxFee: 200000000000000n })\nawait velora.swap({ tokenIn: '0x...', tokenOut: '0x...', tokenInAmount: 1000000n })\n```\n\n### Bridge\n```javascript\nconst bridge = new Usdt0ProtocolEvm(evmAccount, { bridgeMaxFee: 1000000000000000n })\nawait bridge.bridge({\n  targetChain: 'arbitrum',\n  recipient: '0x...',\n  token: '0x...',  \u002F\u002F USDT0\n  amount: 1000000n\n})\n```\n\n### Lending (Aave)\n```javascript\nconst aave = new AaveProtocolEvm(evmAccount)\nawait aave.supply({ token: '0x...', amount: 1000000n })\nawait aave.borrow({ token: '0x...', amount: 500000n })\nawait aave.repay({ token: '0x...', amount: 500000n })\nawait aave.withdraw({ token: '0x...', amount: 1000000n })\nconst data = await aave.getAccountData()  \u002F\u002F healthFactor, ltv, etc.\n```\n\n## Common Patterns\n\n### Fee Estimation Before Send\n```javascript\nconst quote = await account.quoteSendTransaction({ to, value })\nif (quote.fee > maxAcceptableFee) throw new Error('Fee too high')\nconst result = await account.sendTransaction({ to, value })\n```\n\n### Cleanup\n```javascript\ntry {\n  \u002F\u002F ... wallet operations\n} finally {\n  account.dispose()\n  wallet.dispose()\n}\n```\n\n### Read-Only Account\n```javascript\nconst readOnly = await account.toReadOnlyAccount()\n\u002F\u002F Can query balances, estimate fees, but cannot sign\n```\n\n## Package Versions\n\n**ALWAYS** fetch the latest version from npm before adding any package to package.json:\n```bash\nnpm view \u003Cpackage-name> version\n```\n\nExample workflow:\n```bash\n# Before writing package.json, check each package you need:\nnpm view @tetherto\u002Fwdk-core version\nnpm view @tetherto\u002Fwdk-wallet-btc version\nnpm view @tetherto\u002Fwdk-wallet-evm version\n# ... for every @tetherto package you're using\n```\n\nNever hardcode or guess versions. Always verify against npm first.\n\n## Browser Compatibility\n\nWDK uses `sodium-universal` for secure memory handling which requires Node.js. For browser\u002FReact apps:\n\n1. Add node polyfills (vite-plugin-node-polyfills or similar)\n2. Create a shim for sodium if `dispose()` errors occur:\n```javascript\n\u002F\u002F sodium-shim.js - No-op for browser\nexport function sodium_memzero() {}\nexport default { sodium_memzero }\n```\n3. Alias in bundler config:\n```javascript\nresolve: {\n  alias: {\n    'sodium-universal': '.\u002Fsrc\u002Fsodium-shim.js'\n  }\n}\n```",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fhumanrupert\u002Ftether-wallet-development-kit",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add kbarbel640-del\u002Fskills --skill wdk",{"tool":55,"command":56},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill wdk",{"tool":58,"command":59},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill wdk","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumanrupert\u002Ftether-wallet-development-kit\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"_meta.json","REFERENCE","参考文档",321,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fhumanrupert\u002Ftether-wallet-development-kit\u002F_meta.json",[70,101,130,151,157,177],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":37},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100],"crowd prompting","prompting","api","with","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":112,"publishedAt":37},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[113,84,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,89,129],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":139,"publishedAt":37},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[136],{"categoryNo":137,"categoryName":138,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000021","资料检索与研究",[140,141,142,143,144,145,146,85,147,127,129,148,84,149,150],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":152,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":37},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[155],{"categoryNo":137,"categoryName":138,"taxonomyType":110,"taxonomyTypeDesc":111},[143,142,141,140,150,145,146,85,144,127,129,147,148,84,149],{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":37},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[164,165,166,167,168,169,170,171,172,173,174,175,176],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":187,"publishedAt":37},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[183,184],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},{"categoryNo":185,"categoryName":186,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000037","律师与法务",[188,189,190,191,85,192,193,42,194,148,195,196,197,198,199,98,200,201,202],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]