@uzolabs/sdk gives you typed chain objects, contract addresses, ABIs and a BOTScan client for BOT Chain, so you can build with viem without copying values by hand.
Early release. This is published in
@uzolabs/sdk 0.2.0 on npm and you can use it today. The API may change before 1.0, so pin the version.What it does
The SDK is a small TypeScript library that works alongside viem. It doesn’t replace viem. It gives viem the BOT Chain values you would otherwise look up and paste in yourself:- Chain objects for mainnet (677) and testnet (968), with the RPC, explorer and Multicall3 already set.
- Contract addresses for WBOT, USDT, BDEX, Permit2, the Universal Router and the bridge router, typed for each network.
- ABIs fetched from verified contracts on BOTScan.
- An explorer client that reads address and contract details from BOTScan’s API. It needs no API key.
- Typed errors with stable codes you can check in your code.
Design principles
- Built for viem. Every export works with viem’s own clients and actions. viem v2 is a peer dependency, so you choose its version.
- No keys. The SDK never touches private keys and never signs. You sign with your own wallet client.
- No guessing. When a value isn’t public, such as a Routing API URL, the SDK asks you for it. If you don’t pass it, the SDK throws
MissingConfigErrorinstead of falling back to a default. - Small imports. Each module has its own subpath.
@uzolabs/sdk/chainsis under 2 KB gzipped. - Checked against the chain. CI fails if a committed ABI no longer matches BOTScan. A nightly job checks that every address still has code.
Modules
The version numbers for the planned modules come from the SDK README. No release dates have been announced. Until those modules ship, each of their pages links to a guide that does the same job with viem today.
How it fits
Your app creates viem clients from the SDK’s chain objects and calls contracts using its addresses and ABIs. Your wallet does all the signing.Before you start
Read Known limitations. Two of them affect how you use the SDK: the mainnet RPC doesn’t serveeth_getLogs, and there’s no public WebSocket endpoint.
Next steps
Install the SDK
Add it to your project.
SDK quickstart
Read a block in five lines.
Contracts
Addresses, ABIs and constants.
Source on GitHub
Code, issues and releases.