/** * pop vote execute — finalize an ended proposal (announceWinner). * * Finalize an ended proposal by calling HybridVoting.announceWinner. * This is the one canonical path: announceWinner both announces the winner * and executes the winning option's calls through the Executor. The Executor * is gated to `allowedCaller()` (HybridVoting), so there is no way to execute * proposal calls by calling the Executor directly. * * Relationship to other commands: * - `pop vote announce-all` — batch-announces all ended proposals (preferred) * - `pop vote announce` — announces one (alias of this command) * - `pop vote execute` — this command, kept for symmetry with the docs * * DESTRUCTIVE: announcing is irreversible and executes on-chain calls. The * confirm policy requires an explicit --yes in non-interactive sessions. * * Safety layers, in order: * 1. subgraph state gate (already executed / failed / still active) * 2. callStatic.announceWinner probe (skippable with --no-preflight) — * catches would-revert BEFORE gas is burned * 3. receipt log scan — the Executor catches failed sub-calls and emits * CallFailed/ProposalExecutionFailed while the OUTER tx succeeds, so * "tx mined" alone is not success * * A proposal announced whose execution REVERTED (executionFailed=true) is retryable * since audit H-05: the contract releases the in-flight `executed` lock in its catch * branch, so re-running announceWinner replays the batch. This command warns and then * lets the callStatic pre-flight decide, which keeps it correct against both the * upgraded and the pre-audit contracts. */ import type { Argv, ArgumentsCamelCase } from 'yargs'; interface ExecuteArgs { org: string; proposal: string; chain?: number; rpc?: string; 'private-key'?: string; 'dry-run'?: boolean; yes?: boolean; preflight?: boolean; 'idempotency-key'?: string; 'no-idempotency'?: boolean; } export declare const executeHandler: { builder: (yargs: Argv) => Argv<{ proposal: string; } & { "idempotency-key": string | undefined; } & { "no-idempotency": boolean; }>; handler: (argv: ArgumentsCamelCase) => Promise; }; export {};