2.0 RC docsView 1.x docs
v2.0.0-rc.1 release candidate
The API is frozen and later candidates carry fixes only, except the receipt-free and Safe create surface of /fhe-airdrop, which is @beta. Published on the next dist-tag; latest stays on 1.6.0 until 2.0.0.
This page also documents AirdropBaseClient
Every method below except claim, claimAndUnwrap, getClaimAmount, isSignatureValid, the EIP-712 identity reads, and SIGNER_ROLE lives on the shared AirdropBaseClient both EcdsaAirdropClient and MerkleAirdropClient extend. See MerkleAirdropClient for the Merkle-specific surface built on the same base.
Airdrop v2 · Client@tokenops/sdk/fhe-airdrop

EcdsaAirdropClient

Extends AirdropBaseClient. The config takes no dedupMode - the policy is frozen at create, read it from the chain with readDedupMode(). Optional gasHeadroomPercent pads every write; each write object also takes a per-call gas. Recipients claim with a { encryptedInput, dedupId, deadline, signer, signature } payload over a 4-field EIP-712 Claim struct; the gas fee attaches automatically as msg.value.

Construct

Headless TS — non-React consumers (Node, Vite, server workers). React hosts use the per-hook surface; same method names, lazy encryptor.

@tokenops/sdk/fhe-airdrop
ts
import { createEcdsaAirdropClient } from "@tokenops/sdk/fhe-airdrop";

const client = createEcdsaAirdropClient({
  publicClient,
  walletClient,
  // address optional: resolved from publicClient.chain.id
});

Methods

Write · 4

Encrypted read · 6

Read · 21

Recovery · 7

Roles · RBAC · 17