/** * pop zkemail propose-allowlist — commit an allowlist root + CID via governance. * * `ZkEmailInvites.setActiveAllowlist` is onlyExecutor, so this cannot be sent directly by a * member wallet — it goes through a HybridVoting proposal whose option 0 executes the call * from the Executor. Same shape as the treasury proposals. * * `--cid` takes the CIDv0 string (Qm…); the contract stores the 32-byte digest, so it is * converted here. Passing a raw bytes32 also works. * * Guard: the supplied root is checked against the pinned file before proposing. Committing a * root that does not match the file it points at produces an allowlist where every claim fails * to prove — and undoing it costs another full governance cycle. */ import type { Argv, ArgumentsCamelCase } from 'yargs'; interface ProposeArgs { org?: string; chain?: number; root: string; cid: string; duration: number; skipVerify?: boolean; yes?: boolean; dryRun?: boolean; } export declare const proposeAllowlistHandler: { builder: (yargs: Argv) => Argv<{ root: string; } & { cid: string; } & { duration: number; } & { "skip-verify": boolean; }>; handler: (argv: ArgumentsCamelCase) => Promise; }; export {};