Package
The SDK is a single package —@umbra-privacy/sdk. The ZK prover, indexer client, relayer client, store adapters, and Solana primitives are all subpaths of the same package. There is no separate @umbra-privacy/web-zk-prover — it is folded into @umbra-privacy/sdk/zk-prover.
snarkjs is a required peer dependency — the SDK imports it for Groth16 proving. Install it alongside the SDK (as shown above) or the first prover import throws ERR_MODULE_NOT_FOUND.TypeScript
The SDK is written in TypeScript and ships full type declarations. No additional@types packages are needed.
Minimum TypeScript version: 5.0.
For Node.js:
Subpath imports
The main@umbra-privacy/sdk barrel only re-exports:
getUmbraClient, the four signer factories (createInMemorySigner,createSignerFromPrivateKeyBytes,createSignerFromKeyPair,createSignerFromWalletAccount).- The full error hierarchy and the
Result<T, E>helpers. - Everything from
infrastructure/{arcium, indexer, relayer, solana, zk-prover}— includinggetUmbraRelayer,getUmbraIndexer, RPC providers, transaction forwarders.
@umbra-privacy/sdk/client—IUmbraClient,IUmbraSignerinterfaces.@umbra-privacy/sdk/shared— protocol-wide constants.UMBRA_MESSAGE_TO_SIGNlives here, not on the main barrel.@umbra-privacy/sdk/registration—getUserRegistrationFunction+ executors.@umbra-privacy/sdk/deposit— direct depositor + the four Stealth Pool Note creators.@umbra-privacy/sdk/withdrawal— ETA → ATA withdrawer.@umbra-privacy/sdk/burn— note scanner + three burner factories +enrichWithMerkleProof.@umbra-privacy/sdk/query— encrypted-balance + user-account queriers.@umbra-privacy/sdk/conversion— MXE-only → Shared converter.@umbra-privacy/sdk/compliance— grant issue / revoke / re-encrypt / query.@umbra-privacy/sdk/account— staged-token recoverers, key rotation, maintenance.@umbra-privacy/sdk/zk-prover— Groth16 provers (one factory per circuit) +getCdnZkAssetProvider.@umbra-privacy/sdk/zk-prover/cdn— direct access to the CDN asset provider.@umbra-privacy/sdk/store-adapters—createBrowserStorageBackend,createShardedUtxoDataStore,createShardedNullifierStore.@umbra-privacy/sdk/store— base store interfaces (for custom storage backends).@umbra-privacy/sdk/indexer,@umbra-privacy/sdk/indexer/utxo,@umbra-privacy/sdk/indexer/nullifier— typed indexer clients.@umbra-privacy/sdk/relayer— typed relayer client (re-exported from main barrel).@umbra-privacy/sdk/solana,@umbra-privacy/sdk/pda,@umbra-privacy/sdk/token— Solana primitives.@umbra-privacy/sdk/arcium— Arcium MPC types + helpers.@umbra-privacy/sdk/constants—BPS_DIVISOR, mint lists, etc.@umbra-privacy/sdk/types— branded primitives (U64,Address, …).@umbra-privacy/sdk/crypto,…/crypto/poseidon,…/crypto/rescue,…/crypto/aes,…/crypto/key-derivation,…/crypto/challenges,…/crypto/commitment— cryptographic primitives.@umbra-privacy/sdk/errors— error classes +is*type guards.@umbra-privacy/sdk/converters,@umbra-privacy/sdk/temporal,@umbra-privacy/sdk/validation,@umbra-privacy/sdk/hooks,@umbra-privacy/sdk/pipeline,@umbra-privacy/sdk/fee-provider,@umbra-privacy/sdk/math— utilities.
The burner ZK prover factories are spelled
getClaim…ClaimableUtxo…. The creator prover factories are getETAIntoStealthPoolNoteCreatorProver (ETA-source) and getATAIntoStealthPoolNoteCreatorProver (ATA-source).Runtime Requirements
The SDK works in both Node.js (18+) and modern browser environments. It has no native dependencies — all cryptography is pure TypeScript / WebAssembly.If you are using a bundler (Vite, webpack, Next.js), no special configuration is needed for the SDK itself. For Next.js, add
@umbra-privacy/sdk to transpilePackages in next.config.ts if you hit ESM/CJS interop issues.