/** * pop token request — request participation tokens (PT) from the org. * * Calls ParticipationToken.requestTokens(uint96 amount, string ipfsHash) — * VERIFIED against contracts origin/main src/ParticipationToken.sol: the * function is isMember-gated (the caller must be the executor or wear one of * the allowed member hats) and reverts ZeroAmount on amount == 0 or an empty * ipfsHash. Minting happens later, when an approver runs pop token approve. * * Pre-flight (skippable with --no-preflight) resolves the member hat set * from the token contract (memberHatIds()) and fails fast when the signer * wears none of them. * * The IPFS reason metadata key order ({reason, submittedAt}) matches the * frontend exactly — do not reorder. */ import type { Argv, ArgumentsCamelCase } from 'yargs'; import { ethers } from 'ethers'; interface RequestArgs { org?: string; amount: number; reason: string; chain?: number; rpc?: string; 'private-key'?: string; 'dry-run'?: boolean; yes?: boolean; preflight?: boolean; } /** Parse --amount to 18-decimal wei, enforcing the contract's uint96 bound. */ export declare function parseRequestAmount(amount: number | string): ethers.BigNumber; export declare const requestHandler: { builder: (yargs: Argv) => Argv<{ amount: number; } & { reason: string; }>; handler: (argv: ArgumentsCamelCase) => Promise; }; export {};