@cofhe/sdk is the TypeScript client SDK for CoFHE. It handles the client-side operations required to interact with FHE-enabled smart contracts: encrypting inputs with ZK proofs, decrypting ciphertext handles via the Threshold Network, and managing EIP-712 permits for access control.
On-chain, contracts use FHE.sol to operate on encrypted data. Off-chain, this SDK prepares the inputs and reads the outputs.
What the SDK does
Encrypt Inputs
Packs plaintext values, generates a ZKPoK, and submits them to the CoFHE verifier. Returns signed EncryptedItemInput objects for use in contract calls.
Decrypt for View
Requests decryption of a ciphertext handle via the Threshold Network using a permit. Returns the plaintext locally, not published on-chain.
Decrypt for Tx
Requests decryption and returns the plaintext with a Threshold Network signature for on-chain verification.
Manage Permits
Creates, stores, and manages EIP-712 permits that authorize decryption of specific ciphertext handles.
Entrypoints
| Entrypoint | Contents |
|---|---|
@cofhe/sdk | Core types (Encryptable, FheTypes, EncryptStep, CofheError), shared across runtimes |
@cofhe/sdk/web | createCofheConfig / createCofheClient with browser defaults (IndexedDB storage, TFHE WASM, Web Workers) |
@cofhe/sdk/node | createCofheConfig / createCofheClient with Node.js defaults (filesystem storage, node-tfhe) |
@cofhe/sdk/permits | Permit creation, validation, serialization, and storage utilities |
@cofhe/sdk/adapters | Ethers5Adapter, Ethers6Adapter, WagmiAdapter, HardhatSignerAdapter |
@cofhe/sdk/chains | Built-in chain definitions and getChainById / getChainByName helpers |
Client lifecycle
The SDK follows a three-step lifecycle: config → client → connect.Key concepts
Quick Start
Install the SDK, write a contract, and run your first encrypt → store → decrypt test in minutes.
Encrypting Inputs
Encrypt plaintext values with ZK proofs before passing them to your smart contract.
Permits
Create and manage EIP-712 permits that authorize decryption of confidential data.
Decrypt to View
Reveal encrypted values locally for UI display using permits.
Decrypt to Transact
Decrypt with a verifiable Threshold Network signature for on-chain use.