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.
Encrypted readuseMutationencrypted handle

useAdminDiscloseBalanceToParty

Submits a transaction. Discloses the instance's confidential pool balance to party.

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

Description

Submits a transaction. Discloses the instance's confidential pool balance to party. Requires DISCLOSURE_ADMIN_ROLE.

The grantee is `party`, not the caller. The handle is recovered from the ACL Allowed event naming party, so unless the caller is also party the returned data.handle is one it cannot decrypt - hand it to party rather than to your own userDecrypt, or the relayer rejects it with "not authorized to decrypt". As with every encrypted view here, the handle comes from the receipt and never from a simulation.

Invalidates: nothing. ACL is append-only and no read hook in this subpath caches who is allowed on a handle.

Signature

@tokenops/sdk/fhe-airdrop/react
ts
function useAdminDiscloseBalanceToParty(options: AirdropInstanceClientOptions): UseMutationResult<EncryptedViewResult, Error, AdminDiscloseBalanceToPartyArgs>;

Parameters

Shape of the object you pass to .mutate(args) is the SDK type AdminDiscloseBalanceToPartyArgs. 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 useAdminDiscloseBalanceToParty; pick another from the dropdown if you'd rather start there.

Example

@tokenops/sdk/fhe-airdrop/react · @example
tsx
const disclose = useAdminDiscloseBalanceToParty({ address: airdropAddress });
const { handle } = await disclose.mutateAsync({ party: auditorAddress });

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 adminDiscloseBalanceToParty = useAdminDiscloseBalanceToParty(/* options */);

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

See also

Other Encrypted read hooks in airdrop v2: