SDK 2.1: platform toolkit + vesting engine
1.x: critical fixes onlyView 2.x docs
ReaduseQuery Curated

usePreflightDisperse

Dry-run validator — checks operator + balance + paused state before broadcasting.

Import
@tokenops/sdk/fhe-disperse/react
Return
{ data, isLoading, error, refetch }
Lifecycle
Read

Description

Comprehensive pre-flight report — one call gives a UI everything it needs to render a "ready to disperse" checklist: registration state, wallet approvals, fee preview, batch-limit check, per-recipient validation, pre-computed wallet-mode subtotals, and a ready flag plus structured blockers list.

Hook is disabled until user, token, recipients, amounts, and mode are all set.

Amount units: TokenOps confidential (ERC-7984) tokens use a 6-decimals convention (1 token = 1_000_000 base units), not the 18 decimals typical of ERC-20. Amount parameters are base units of the token's actual decimals: for the CTTT test token (6 decimals) 1_000_000n = 1 CTTT, while the transparent TTT test token uses 18 decimals. Pass amounts[] in the same units you will pass to useDisperse so the report reflects the real call.

For live dashboards, set refetchInterval so the report stays current as the user toggles approvals in a wallet UI:

const preflight = usePreflightDisperse({ user, token, recipients, amounts, mode });
// pass through TanStack Query options via queryClient.setQueryDefaults or a
// wrapping useQuery, e.g. refetchInterval: 5_000.

Signature

@tokenops/sdk/fhe-disperse/react
ts
function usePreflightDisperse(args?: UsePreflightDisperseArgs): UseQueryResult<PreflightReport, Error>;

Parameters

Shape of the options object passed to the hook itself.

PropertyTypeDescription
userAddress
tokenAddress
recipientsAddress[]
amountsbigint[]
modeDisperseMode
Want to run a similar shape interactively? The Playground ships 8 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 usePreflightDisperse; pick another from the dropdown if you'd rather start there.

Example

@tokenops/sdk/fhe-disperse/react · @example
tsx
const { data: report } = usePreflightDisperse({
  user, token, recipients, amounts, mode: "direct",
});
if (report?.ready) { /* enable submit *\/ }

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

See also

Other Read hooks in disperse: