For the complete documentation index, see llms.txt. This page is also available as Markdown.

GenericStorage

Interface for async key-value storage used to persist transport key pairs and signed permits.

Interface for async key-value storage used to persist transport key pairs and signed permits. The SDK ships with four built-in implementations -- you only need this interface if building a custom backend.

Import

import type { GenericStorage } from "@zama-fhe/sdk";

Definition

interface GenericStorage {
  get<T = unknown>(key: string): Promise<T | null>;
  set<T = unknown>(key: string, value: T): Promise<void>;
  delete(key: string): Promise<void>;
}

Usage

import { ZamaSDK } from "@zama-fhe/sdk";
import type { GenericStorage } from "@zama-fhe/sdk";

const redisStorage: GenericStorage = {
  async get(key) {
    return redis.get(key);
  },
  async set(key, value) {
    await redis.set(key, value);
  },
  async delete(key) {
    await redis.del(key);
  },
};

const config = createConfig({
  chains: [sepolia],
  signer: mySigner,
  provider: myProvider,
  storage: redisStorage,
  relayers: { [sepolia.id]: node() },
});
const sdk = new ZamaSDK(config);

Methods

get

Retrieve a value by key. Return null if the key does not exist. The generic T allows typed reads.

set

Store a value under the given key. Overwrites any existing value. Accepts any serializable type.

delete

Remove a key and its value. No-op if the key does not exist.

Built-in implementations

indexedDBStorage

Browser-based persistent storage backed by IndexedDB. Survives page reloads and browser restarts. Use this as the primary storage in browser apps.

memoryStorage

In-memory storage cleared when the process exits. Suitable for tests and throwaway scripts.

asyncLocalStorage

Node.js per-request storage using AsyncLocalStorage. Isolates transport key pairs across concurrent requests on a server.

chromeSessionStorage

MV3 web extension storage backed by chrome.storage.session. Survives service worker restarts and is shared across popup, background, and content script contexts. Cleared when the browser closes.

Pass as permitStorage (not storage) to persist signed permits across service worker restarts:

Last updated