/** * pop zkemail build-allowlist — compute an allowlist doc + merkle root, optionally pin it. * * This is the local half of publishing an invite list. It is deliberately separate from the * governance write: the root/CID must exist before a proposal can commit them, and an operator * should be able to inspect the computed root before anything is broadcast. * * The doc format, Poseidon identifier hashes, and merkle leaf encoding all come from * src/lib/zkemail.ts, whose conformance is pinned against the live on-chain ceremony root. * Getting any of them wrong yields an allowlist that pins fine and then silently rejects * every claim, so this command never invents its own encoding. * * Input file — a JSON array (or an existing allowlist doc, to re-publish it): * [ * { "type": "domain", "identifier": "anthropic.com", "hatIds": ["0x1f..."], "roleIndexes": [0] }, * { "type": "email", "identifier": "alice@org.com", "hatIds": ["0x1f..."] } * ] */ import type { Argv, ArgumentsCamelCase } from 'yargs'; interface BuildArgs { org?: string; chain?: number; file?: string; domain?: string[]; email?: string[]; hat?: string[]; pin?: boolean; out?: string; } export declare const buildAllowlistHandler: { builder: (yargs: Argv) => Argv<{ file: string | undefined; } & { domain: string[] | undefined; } & { email: string[] | undefined; } & { hat: string[] | undefined; } & { pin: boolean; } & { out: string | undefined; }>; handler: (argv: ArgumentsCamelCase) => Promise; }; export {};