tbusd
v0.1.0
Published
JavaScript SDK for TBUSD gasless transfers
Maintainers
Readme
TBUSD JavaScript SDK
Gasless TBUSD transfers on Base L2. No ETH required.
Installation
npm install tbusdQuick Start
import { Client } from 'tbusd';
// Initialize with your API key and wallet
const client = new Client({
apiKey: 'tbusd_your_api_key', // Get one at https://tbusd.io/developers
privateKey: '0x...' // Your wallet's private key
});
// Send TBUSD - no gas needed!
const tx = await client.transfer('0xRecipient...', 10.0);
console.log(`Sent! TX: ${tx.txHash}`);
// Check balance
const balance = await client.balance();
console.log(`Balance: ${balance} TBUSD`);
// Check API usage
const usage = await client.usage();
console.log(`Today: ${usage.today.used}/${usage.today.limit} transactions`);Features
- Gasless transfers - We pay the gas, you just need TBUSD
- Simple API - No Web3 complexity, just
transfer(to, amount) - TypeScript support - Full type definitions included
- EIP-712 signing - Secure, standard meta-transactions
- Works everywhere - Node.js, browsers, React Native
API Reference
new Client(config)
Create a new TBUSD client.
const client = new Client({
apiKey: 'tbusd_...', // Required
privateKey: '0x...', // Required
rpcUrl: '...' // Optional, defaults to Base public RPC
});client.transfer(to, amount): Promise<TransferResult>
Send TBUSD to an address.
const tx = await client.transfer('0x...', 10.0);
// { success: true, txHash: '0x...', gasUsed: '85000' }client.balance(address?): Promise<number>
Get TBUSD balance. Defaults to your wallet if no address provided.
const balance = await client.balance();
// 150.5client.usage(): Promise<UsageResult>
Check your API usage and remaining daily limit.
const usage = await client.usage();
// {
// email: '[email protected]',
// total_transactions: 142,
// today: { used: 5, remaining: 15, limit: 20 }
// }client.health(): Promise<boolean>
Check if the relayer service is operational.
Error Handling
import { Client, TBUSDError, RateLimitError, InsufficientBalanceError } from 'tbusd';
try {
const tx = await client.transfer('0x...', 100);
} catch (error) {
if (error instanceof RateLimitError) {
console.log('Daily limit reached, try again tomorrow');
} else if (error instanceof InsufficientBalanceError) {
console.log('Not enough TBUSD in wallet');
} else if (error instanceof TBUSDError) {
console.log(`Error: ${error.message}`);
}
}Example: Express.js Payment Endpoint
import express from 'express';
import { Client } from 'tbusd';
const app = express();
const tbusd = new Client({
apiKey: process.env.TBUSD_API_KEY!,
privateKey: process.env.WALLET_KEY!
});
app.post('/pay', async (req, res) => {
const { to, amount } = req.body;
try {
const tx = await tbusd.transfer(to, amount);
res.json({ success: true, txHash: tx.txHash });
} catch (error) {
res.status(400).json({ error: error.message });
}
});Rate Limits
| Limit | Value | |-------|-------| | Transactions per day | 20 | | Minimum transfer | $1 TBUSD | | Reset time | Midnight UTC |
Links
License
MIT
