Documentation Index
Fetch the complete documentation index at: https://sdk.umbraprivacy.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Every operation that generates a Groth16 ZK proof requires a prover passed through deps. There is no hard-coded default - you must always supply one. All provers follow the same prove(inputs) → { proofA, proofB, proofC } contract.
For instantiation, Web Worker setup, and remote proving backends, see ZK Provers.
IZkProverForUserRegistration
interface IZkProverForUserRegistration {
prove(inputs: UserRegistrationCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getUserRegistrationFunction deps (zkProver).
IZkProverForSelfClaimableUtxo
interface IZkProverForSelfClaimableUtxo {
prove(inputs: SelfClaimableUtxoCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getEncryptedBalanceToSelfClaimableUtxoCreatorFunction deps (zkProver). For public-balance UTXO creation, see ZkProverForSelfClaimableUtxoFromPublicBalance below.
IZkProverForReceiverClaimableUtxo
interface IZkProverForReceiverClaimableUtxo {
prove(inputs: ReceiverClaimableUtxoCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getEncryptedBalanceToReceiverClaimableUtxoCreatorFunction deps (zkProver). For public-balance UTXO creation, see ZkProverForReceiverClaimableUtxoFromPublicBalance below.
IZkProverForClaimSelfClaimableUtxoIntoEncryptedBalance
interface IZkProverForClaimSelfClaimableUtxoIntoEncryptedBalance {
readonly maxUtxoCapacity: 1;
prove(inputs: ClaimSelfClaimableUtxoIntoEncryptedBalanceCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getSelfClaimableUtxoToEncryptedBalanceClaimerFunction deps (zkProver).
IZkProverForClaimReceiverClaimableUtxoIntoEncryptedBalance
interface IZkProverForClaimReceiverClaimableUtxoIntoEncryptedBalance {
prove(
inputs: ClaimReceiverClaimableUtxoIntoEncryptedBalanceCircuitInputs,
nLeaves: ClaimBatchSize,
): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getReceiverClaimableUtxoToEncryptedBalanceClaimerFunction deps (zkProver). This prover accepts a batch size nLeaves (1–16) because there are 16 distinct circuits, one per batch size.
IZkProverForClaimSelfClaimableUtxoIntoPublicBalance
interface IZkProverForClaimSelfClaimableUtxoIntoPublicBalance {
readonly maxUtxoCapacity: 1;
prove(inputs: ClaimSelfClaimableUtxoIntoPublicBalanceCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getSelfClaimableUtxoToPublicBalanceClaimerFunction deps (zkProver).
ZkProverForSelfClaimableUtxoFromPublicBalance
interface ZkProverForSelfClaimableUtxoFromPublicBalance {
prove(inputs: SelfClaimableUtxoFromPublicBalanceCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getPublicBalanceToSelfClaimableUtxoCreatorFunction deps (zkProver).
ZkProverForReceiverClaimableUtxoFromPublicBalance
interface ZkProverForReceiverClaimableUtxoFromPublicBalance {
prove(inputs: ReceiverClaimableUtxoFromPublicBalanceCircuitInputs): Promise<{
proofA: Groth16ProofA;
proofB: Groth16ProofB;
proofC: Groth16ProofC;
}>;
}
Required by: getPublicBalanceToReceiverClaimableUtxoCreatorFunction deps (zkProver).
Unified Prover Suite
All six provers can be combined into a single object and passed wherever individual provers are expected:
interface IZkProverSuite {
readonly registration: IZkProverForUserRegistration;
readonly utxoSelfClaimable: IZkProverForSelfClaimableUtxo;
readonly utxoReceiverClaimable: IZkProverForReceiverClaimableUtxo;
readonly claimSelfClaimableIntoEncryptedBalance: IZkProverForClaimSelfClaimableUtxoIntoEncryptedBalance;
readonly claimReceiverClaimableIntoEncryptedBalance: IZkProverForClaimReceiverClaimableUtxoIntoEncryptedBalance;
readonly claimSelfClaimableIntoPublicBalance: IZkProverForClaimSelfClaimableUtxoIntoPublicBalance;
}
Quick Setup with @umbra-privacy/web-zk-prover
The @umbra-privacy/web-zk-prover package provides ready-made factory functions for each prover interface. It uses snarkjs Groth16 under the hood and fetches proving keys from a CDN.
import {
getUserRegistrationProver,
getCreateSelfClaimableUtxoFromEncryptedBalanceProver,
getCreateReceiverClaimableUtxoFromEncryptedBalanceProver,
getCreateSelfClaimableUtxoFromPublicBalanceProver,
getCreateReceiverClaimableUtxoFromPublicBalanceProver,
getClaimSelfClaimableUtxoIntoEncryptedBalanceProver,
getClaimReceiverClaimableUtxoIntoEncryptedBalanceProver,
getClaimSelfClaimableUtxoIntoPublicBalanceProver,
} from "@umbra-privacy/web-zk-prover";
const registrationProver = getUserRegistrationProver();
const utxoSelfClaimableProver = getCreateSelfClaimableUtxoFromEncryptedBalanceProver();
const utxoReceiverClaimableProver = getCreateReceiverClaimableUtxoFromEncryptedBalanceProver();
const utxoSelfClaimableFromPublicProver = getCreateSelfClaimableUtxoFromPublicBalanceProver();
const utxoReceiverClaimableFromPublicProver = getCreateReceiverClaimableUtxoFromPublicBalanceProver();
const claimSelfClaimableEncryptedBalanceProver = getClaimSelfClaimableUtxoIntoEncryptedBalanceProver();
const claimReceiverClaimableEncryptedBalanceProver = getClaimReceiverClaimableUtxoIntoEncryptedBalanceProver();
const claimSelfClaimablePublicBalanceProver = getClaimSelfClaimableUtxoIntoPublicBalanceProver();
Each factory accepts an optional IZkAssetProvider parameter - a simple interface with one method: getAssetUrls(type, variant?). When no provider is passed, the factories default to the CDN provider (equivalent to calling getCdnZkAssetProvider() from @umbra-privacy/web-zk-prover/cdn), which fetches proving keys from Umbra’s CDN. You can supply your own provider to customise asset resolution.
See ZK Provers for Web Worker setup, custom asset providers, and remote proving backends.