UPP — Universal Private PoolSDK Reference
SDK Overview
UPP SDK module structure, subpath exports, and installation.
UPP SDK
@permissionless-technologies/upp-sdk is a TypeScript SDK for integrating UPP privacy into any application. It uses viem for Ethereum interaction and supports optional wagmi/React integration.
Installation
npm install @permissionless-technologies/upp-sdkSubpath Exports
The SDK uses subpath exports for tree-shaking:
| Import path | Contents |
|---|---|
@permissionless-technologies/upp-sdk | Main entry — re-exports createUPPClient and core types |
@permissionless-technologies/upp-sdk/core | UPPClient class, note management, proof generation, ProofWorkerManager, CircuitArtifactCache |
@permissionless-technologies/upp-sdk/keys | Master key derivation, SNARK/STARK dual-system support |
@permissionless-technologies/upp-sdk/utils | Poseidon (BLS12-381), Merkle tree utilities |
@permissionless-technologies/upp-sdk/react | UPPAccountProvider, useUPPAccount, usePrivateBalance, useProofWorker, useCircuitCache hooks |
@permissionless-technologies/upp-sdk/indexer | makeRpcIndexer for note scanning |
@permissionless-technologies/upp-sdk/worker | Web Worker entry for off-main-thread proof generation |
@permissionless-technologies/upp-sdk/stwo-prover | Circle STARK prover (WebAssembly) |
Quick Example
import { createUPPClient } from '@permissionless-technologies/upp-sdk'
import { createPublicClient, createWalletClient, http } from 'viem'
import { sepolia } from 'viem/chains'
const publicClient = createPublicClient({ chain: sepolia, transport: http() })
const walletClient = createWalletClient({ chain: sepolia, transport: http() })
const upp = await createUPPClient({ publicClient, walletClient })
// Shield 100 UPD
const { commitment } = await upp.shield({
token: '0xUPDTokenAddress',
amount: 100n * 10n ** 18n,
})Module Pages
- Client API —
createUPPClientand all client methods - React Hooks —
UPPAccountProvideranduseUPPAccount - Note Indexer —
makeRpcIndexerfor scanning notes