Raw Airdrop v2 ABI exports.
Five ABIs replace v1's two: a shared interface, both concrete variants, the factory, and the new compliance manager - plus the shared ERC-7984 operator ABI every funding call depends on.
Available ABIs
airdropFactoryAbi@tokenops/sdk/fhe-airdropAirdropFactory: createEcdsaAirdrop / createMerkleAirdrop / createAndFund*, the deployment registry, fee/impl/compliance/upgradeability policy admin, and the factory's own 5-role RBAC.
58 fns31 eventsconfidentialAirdropBaseAbi@tokenops/sdk/fhe-airdropIConfidentialAirdropBase interface only: lifecycle, treasury, rescue, and disclosure entrypoints shared by both variants. No AccessControl/Pausable selectors - those are merged in separately for AirdropBaseClient's default ABI.
33 fns10 eventsecdsaConfidentialAirdropAbi@tokenops/sdk/fhe-airdropECDSAConfidentialAirdrop, the concrete deployed contract: EIP-712 claim/getClaimAmount/isSignatureValid, plus the OZ AccessControl/Pausable/UUPS mixins.
57 fns19 eventsmerkleConfidentialAirdropAbi@tokenops/sdk/fhe-airdropMerkleConfidentialAirdrop, the concrete deployed contract: claim/getClaimAmount/getClaimedAmount with explicit account + merkleProof, setMerkleRoot, plus the same OZ mixins.
56 fns19 eventscomplianceRoleManagerAbi@tokenops/sdk/fhe-airdropComplianceRoleManager, the per-instance compliance clone the factory deploys atomically alongside every campaign: platform + client delegate management, DELEGATION_ADMIN_ROLE.
18 fns7 eventserc7984OperatorAbi@tokenops/sdk/fheMinimal ERC-7984 isOperator / setOperator fragment, not airdrop-specific. This is the funding prerequisite: fundAirdrop / createAndFund* pull from the caller's confidential balance and revert ERC7984UnauthorizedSpender without a prior setOperator. setOperator / revokeOperator are re-exported at the airdrop root; isOperator / ensureOperator come from @tokenops/sdk/fhe.
2 fns1 events
Direct viem usage
The SDK client classes are the recommended surface — they handle encryptor resolution, branded ids, retries, telemetry. But the ABIs themselves ship for one-off reads, indexing, or third-party tooling integration.
import { getContract } from "viem";
import { ecdsaConfidentialAirdropAbi } from "@tokenops/sdk/fhe-airdrop";
// Attach directly to viem if you'd rather skip the SDK client class —
// useful for one-off reads or for surfacing the contract in your own tooling.
const contract = getContract({
address: contractAddress,
abi: ecdsaConfidentialAirdropAbi,
client: { public: publicClient, wallet: walletClient },
});
// Now you have a viem-typed contract — every method exists on contract.read /
// contract.write. The SDK client class wraps this with retries, encryptor resolution, branded ids —
// but the underlying ABI is the same.