import { type Spec, type World } from "../spec/index.ts"; import { type Verdicts } from "./judge.ts"; import { type Choice, type Counterexample } from "./steps.ts"; import type { Bounds } from "./explore.ts"; export interface WalkFinding { id: string; root: number; choices: Choice[]; } export interface WalkResult { runs: number; steps: number; deepest: number; findings: WalkFinding[]; errors: { message: string; root: number; choices: Choice[]; }[]; /** The first run that got stuck, if any. */ stuck?: { root: number; choices: Choice[]; }; } /** Where runs start. */ export interface WalkRoot { world: World; } export declare function walk(spec: Spec, roots: WalkRoot[], b: Bounds, v: Verdicts, until: number): WalkResult; /** The same choice in another world: the pending event that carries the same thing, if any. */ export declare function rebind(spec: Spec, was: World, world: World, choice: Choice): Choice | null; /** Drop steps one at a time while the property still breaks; at most `budget` replays. */ export declare function shrink(spec: Spec, initial: World, found: WalkFinding, replayed: Counterexample, budget?: number): Counterexample;