Note: This package is currently in beta. Please test thoroughly in development environments before using in production.
Manage TON wallets and relay Jetton transfers through TON API gasless paymaster flows using WDK (Wallet Development Kit) by Tether. The package derives TON accounts from BIP-39 seed phrases, reads native TON and Jetton balances, and pays transfer fees with a configured paymaster Jetton instead of native TON.
About WDK
This module is part of the WDK (Wallet Development Kit) project, which empowers developers to build secure, non-custodial wallets with unified blockchain access, stateless architecture, and complete user control.
For detailed documentation about the complete WDK ecosystem, visit docs.wdk.tether.io.
Installation
npm install @tetherto/wdk-wallet-ton-gasless
Quick Start
Existing wallets:getAccount(index) changed its default derivation in v1.0.0-beta.5, from m/44'/607'/0'/0/{index} to m/44'/607'/{index}'. The same seed therefore produces different addresses after upgrading from v1.0.0-beta.4 or earlier. Use getAccountByPath("0'/0/0") to reopen the old account at index 0; see Configuration for migration details.
Provide a TON Center JSON-RPC client for chain queries, a TON API client for gasless estimation and relay, and a paymaster Jetton supported by the service's gasless configuration. Use the TON API origin without /v2; the client adds that prefix. Add secretKey to either client configuration from secure runtime configuration when your provider requires one.
Gasless operations support Jetton transfers through transfer() only. Native sendTransaction(), quoteSendTransaction(), and signTransaction() are not supported.
The mnemonic below is public test data; never use it to hold funds. Keep seed phrases and API keys out of source control. This example requires configuration: replace every EQ... placeholder with a valid mainnet address, and adjust the amount and fee cap for the selected Jettons' decimals. Before transferring, verify the token, recipient, and paymaster addresses; check the account's transfer-token and paymaster-token balances; and set transferMaxFee. Quoted and charged fees use the paymaster Jetton's base units.
BIP-44 Derivation Paths: Derive TON accounts under m/44'/607'
Multi-Account Management: Derive multiple accounts from one seed phrase
Gasless Jetton Transfers: Estimate and relay Jetton transfers through TON API's gasless service
Paymaster Fee Controls: Pay commissions in a configured Jetton and reject transfers above transferMaxFee
TON and Jetton Balances: Query native TON, Jetton, and paymaster-token balances
Transaction Tracking: Look up transactions with getTransaction() and poll for finality with waitForTransaction()
Provider Failover: Supply arrays of TON Center and TON API clients with configurable retries
Message Signing: Sign messages and verify signatures with TON accounts
Read-Only Accounts: Monitor TON wallets from public keys without private-key access
Secure Memory Disposal: Clear private keys from memory when done
Compatibility
TON Mainnet
TON Testnet with matching TON Center and TON API testnet clients and a supported paymaster Jetton. getFeeRates() still returns mainnet fee rates, regardless of the configured clients.
TON Center-compatible clients with JSON-RPC for chain queries and /api/v3 on the same origin for transaction lookup
TON API endpoints with gasless support for fee estimation and transaction relay