import { type Spec } from "../spec/index.ts"; import { type Bounds, type CheckOptions, type Report } from "./explore.ts"; /** What became of one property that needs a rule, in the design without the rule. */ export interface NeededBy { property: string; /** "breaks": the claim holds. "holds": the rule was not needed (it fails the check). "unfinished": held, but the search stopped early. */ verdict: "breaks" | "holds" | "unfinished"; /** With "breaks": the events in its shortest counterexample, or in the scenario up to the break. */ events?: number; /** With "breaks", when the search did not get there: the scenario that breaks it without the rule. */ scenario?: string; } export interface RuleVerdict { name: string; description: string; neededBy: NeededBy[]; } /** A spec's check from its scenarios, and each rule some property needs: what the explorer's checks page shows. */ export declare function checkWithRules(spec: Spec, bounds: Partial): Promise; /** Each rule some property needs, checked in the design without it. */ export declare function checkRules(spec: Spec, bounds: Partial, options?: CheckOptions): Promise;