Airdrop type surface.
EIP-712-shaped surface. The admin signs a Claim(address recipient,bytes32 encryptedAmount) message off chain; the recipient submits exactly that { encryptedInput, signature } pair on claim.
Branded primitives· 2
AirdropIdHex alias (softened brand)Identifies an airdrop clone deployed by the factory. Brand at the boundary with asAirdropId.
Concept primer →EncryptedHandleHex alias (softened brand)Raw euint64 handle, e.g. the bytes32 the admin signed over. Brand inbound hex with asEncryptedHandle.
Concept primer →
Args· 5
AirdropParams{ token, startTimestamp, endTimestamp, canExtendClaimWindow, admin }Campaign parameters. The SDK maps startTimestamp/endTimestamp to the on-chain startTime/endTime fields.
CreateAirdropArgs{ params: AirdropParams, userSalt, account? }Factory deploy. userSalt is combined with msg.sender to derive the CREATE2 salt.
CreateAndFundAirdropArgs{ params, userSalt, (amount + encryptor?) | encryptedInput, account? }Deploy and seed the pool in one tx. Supply exactly one of amount (SDK encrypts) or encryptedInput.
FundAirdropArgs{ token, params, userSalt, deployer, gasFee, (amount + encryptor?) | encryptedInput, account? }Factory-side funding of an existing (or predicted) clone. gasFee must match the fee active at create time.
ClaimArgs{ encryptedInput, signature, value?, account? }Recipient-side claim. Submit the admin-issued payload as-is; the SDK never re-encrypts.
Config· 2
ConfidentialAirdropFactoryClientConfig{ publicClient, walletClient?, address?, chainId?, encryptor?, telemetry? }Factory client constructor. encryptor is required at call time for the fund methods.
ConfidentialAirdropClientConfig{ publicClient, walletClient?, address, aclAddress?, telemetry? }Per-clone client constructor. No encryptor: claims submit pre-encrypted admin payloads.
Result· 2
CreateAirdropResult{ hash, airdrop }Factory deploy output. airdrop is parsed from the ConfidentialAirdropCreated event and always present.
EncryptedViewResult{ handle, hash }Returned by getClaimAmount. Pass handle to the Zama relayer's userDecrypt.