import { type Event, type Spec, type Step, type StepOptions, type World } from "../spec/index.ts"; export type Choice = { kind: "act"; instance: string; key: string; inputs: Record; } /** A pending entry taken by one of the steps that can take it: a timer's own, or one of the steps on a message. */ | { kind: "fire"; pending: number; step: string; } | { kind: "guard"; instance: string; key: string; }; /** A path from the initial world, replayed with every world along it. */ /** Where in a scenario the checker started a search: the world its setup sets, or where it ends. */ export interface ScenarioPlace { scenario: string; at: "start" | "end"; } /** A scenario place in words: `the end of scenario "First push"`, `the setup of scenario "Second push"`. */ export declare function placeText(place: ScenarioPlace): string; export interface Counterexample { /** The scenario world the path starts from; none for the spec's start. */ from?: ScenarioPlace; initial: World; choices: Choice[]; events: Event[]; worlds: World[]; } export declare function branches(spec: Spec, world: World): Choice[]; /** Exploring reads only the next world, errors, violations and what was sent; counterexamples are replayed in full. */ export declare const QUIET: StepOptions; export declare function apply(spec: Spec, world: World, choice: Choice, how?: StepOptions): Step; export declare function replay(spec: Spec, initial: World, choices: Choice[]): Counterexample; /** Values to try for each input: its examples, or a small set per type. At most 12 combinations. */ export declare function inputCombinations(spec: Spec, world: World, inputs: Record unknown[]; }>): Record[];