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.
WriteuseMutation

useAddComplianceDelegate

Grant delegate permanent user-decryption delegation over this compliance clone's airdrop.

Import
@tokenops/sdk/fhe-airdrop/react
Return
{ mutate, mutateAsync, isPending, error, data }
Lifecycle
Write

Description

Grant delegate permanent user-decryption delegation over this compliance clone's airdrop. options.address is the CLONE. Requires DELEGATION_ADMIN_ROLE on it (check with useComplianceHasRole).

The gateway lag is this hook's headline. The delegation is live in the ACL the instant the transaction lands, but the Zama gateway learns about it out of band - @zama-fhe/sdk 3.6 cites about 10 blocks, longer behind a lagging RPC. Do not tell the user delegated decryption is ready on success; classify the first delegated reads' failures with isAclPropagationError and retry with backoff.

Invalidates: this clone's useComplianceInfo entry (the client-delegate set grew) and its useIsActiveDelegate entry for exactly delegate. Both keyed on the clone address - the airdrop instance is a different contract with its own cache namespace and is untouched.

Signature

@tokenops/sdk/fhe-airdrop/react
ts
function useAddComplianceDelegate(options: AirdropInstanceClientOptions): UseMutationResult<Hex, Error, AddComplianceDelegateArgs>;

Parameters

Shape of the object you pass to .mutate(args) is the SDK type AddComplianceDelegateArgs. Inspect the type for the full shape (discriminated unions collapse to a tagged variant at call time).

Want to run a similar shape interactively? The Playground ships 12 ready presets across vesting / airdrop / disperse / faucet — deploy a manager, create a vesting, claim, and run the product equivalents. The deep-link above auto-selects the closest preset to useAddComplianceDelegate; pick another from the dropdown if you'd rather start there.

Example

@tokenops/sdk/fhe-airdrop/react · @example
tsx
const add = useAddComplianceDelegate({ address: managerAddress });
await add.mutateAsync({ delegate: complianceOfficer });

Pulled directly from the hook's TSDoc block — the same snippet your IDE shows on hover.

Errors

This mutation can reject with SDK-level, product-level, or generic-fallback errors. Product classes carry the offending value as fields — render them inline instead of a generic "transaction failed." See Airdrop v2 › Errors for the per-class recovery table.

Invalidation recipe

After this mutation succeeds, invalidate the queries it affects so consumer UI re-fetches fresh state. The SDK never auto-invalidates — that's a consumer decision (different apps cache different shapes).

patterns/invalidation.ts
ts
import { useQueryClient } from "@tanstack/react-query";

const queryClient = useQueryClient();
const addComplianceDelegate = useAddComplianceDelegate(/* options */);

addComplianceDelegate.mutate(args, {
  onSuccess() {
    // Coarse invalidation: refresh every cached read on this product surface.
    queryClient.invalidateQueries({
      queryKey: ["tokenops-sdk", "fhe-airdrop"],
    });
  },
});

See also

Other Write hooks in airdrop v2: