Introduction
TypeScript SDK for uploading to Walrus, registering blobs on Sui, and reading them back — without depending on the Waldrop dapp's backend.
What's in this SDK
The SDK is intentionally narrow: it wraps the Walrus publisher / aggregator HTTP API and the Waldrop Sui Move contract. Nothing else. If a feature requires the dapp's Next.js backend (transform engine, cloud connectors, JWT-authed publisher), it lives in the dapp — not here.
Single blob, multi-file tar bundle, or resume a half-finished upload.
SEAL threshold encryption scoped to a BlobStore. No wallet signature needed for encryption itself.
List, fetch, and decrypt blobs registered through Waldrop on Sui.
Forecast Walrus storage cost in WAL/FROST before you upload. Reads live pricing from the on-chain System object.
The one signature
Across the whole upload pipeline — SHA-256, SEAL encryption, publisher PUT,
on-chain registration — the wallet only signs once: the register_blob
transaction at the very end.
Reading an encrypted blob does require a wallet signature — SEAL needs a session key. That's at read time, not upload time.
Install
@mysten/sui is a peer dependency. @mysten/seal is lazy-loaded —
SealNotInstalledError is thrown if you call encrypt/decrypt without it.
Five lines to your first upload
Where to go next
Add the SDK to your project + grab a testnet wallet.
A 5-minute walkthrough that lands a real blob on testnet Walrus.
Every method, argument, and return type — generated from the source.
Seven copy-pasteable scenarios — plaintext, encrypted, bundle, resume, cost, share, list+fetch.