import * as fc from "fast-check"; import { CampaignMetricOutcome, CampaignMetrics } from "./campaign-metrics.js"; import { InvariantCampaign } from "./campaign-types.js"; export interface CampaignInvariantFailure { readonly code: string; readonly invariant: string; readonly message: string; } export declare function evaluateCampaignInvariantsAsync(init: readonly { readonly check: () => Promise<{ readonly code: string; readonly message: string; } | undefined>; readonly name: string; }[]): Promise; export declare function runCampaignCheckAsync(init: { readonly arbitrary: fc.Arbitrary; readonly executeAsync: (input: Input) => Promise<{ readonly passed: boolean; readonly trace: Trace; }>; readonly key: (input: Input) => string; readonly numRuns: number; readonly path?: string; readonly seed?: number; readonly timeoutMs?: number; }): Promise<{ readonly counterexampleTrace?: Trace; readonly details: fc.RunDetails<[Input]>; }>; export interface CampaignExecutableAction { readonly actor: string; readonly targetKey: string; } export type CampaignLifecyclePhase = { readonly kind: "before-run"; } | { readonly action: Action; readonly kind: "after-action"; } | { readonly kind: "after-run"; } | { readonly kind: "post-cleanup"; }; export interface CampaignLifecycleTrace { readonly actions: readonly { readonly action: Action; readonly outcome: CampaignMetricOutcome; }[]; readonly failures: readonly CampaignInvariantFailure[]; readonly metrics: CampaignMetrics; readonly failureKind?: "execution-error" | "invalid-depth"; } /** * Runs generated fixed-depth action sequences with Foundry-style revert * handling. Runtime-specific setup, reconciliation, and cleanup stay in * caller-provided hooks so this remains usable with any ledger adapter. */ export declare function runCampaignLifecycleCheckAsync(init: { readonly arbitrary: fc.Arbitrary; readonly checkInvariantsAsync?: (context: Context, phase: CampaignLifecyclePhase) => Promise; readonly cleanupAsync?: (context: Context) => Promise; readonly depth: number; readonly executeAsync: (context: Context, action: Action) => Promise; readonly failOnRevert: boolean; readonly key: (actions: readonly Action[]) => string; readonly numRuns: number; readonly path?: string; readonly reconcileAsync?: (context: Context, phase: CampaignLifecyclePhase) => Promise; readonly seed?: number; /** Receives the candidate so setup can derive deterministic run state. */ readonly setupAsync: (actions: readonly Action[]) => Promise; readonly timeoutMs?: number; }): Promise<{ readonly counterexampleTrace?: CampaignLifecycleTrace; readonly details: fc.RunDetails<[readonly Action[]]>; }>; /** * Runs a declared invariant campaign and evaluates its invariant functions at * every lifecycle checkpoint. The caller supplies the ledger-specific action * executor and model hydration hooks; the campaign supplies runs, depth, * seed, revert policy, and declared invariants. */ export declare function runInvariantCampaignCheckAsync(init: { readonly arbitrary: fc.Arbitrary; readonly campaign: InvariantCampaign; readonly checkInvariantsAsync?: (context: Context, phase: CampaignLifecyclePhase) => Promise; readonly cleanupAsync?: (context: Context) => Promise; readonly executeAsync: (context: Context, action: Action) => Promise; readonly key: (actions: readonly Action[]) => string; readonly reconcileAsync?: (context: Context, phase: CampaignLifecyclePhase) => Promise; readonly setupAsync: (actions: readonly Action[]) => Promise; }): Promise<{ readonly counterexampleTrace?: CampaignLifecycleTrace; readonly details: fc.RunDetails<[readonly Action[]]>; }>;