import type { DesignInventory } from "./inventory.js"; import type { BatchOutcome, Candidate, ConformanceFinding, RawFinding } from "./conformance-types.js"; import type { ResolvedConfig } from "../types.js"; /** Everything one batch needs that is the same for every batch in a run. */ export interface BatchContext { resolved: ResolvedConfig; /** The composed skill text, loaded once so two batches cannot be asked differently. */ skillText: string; /** The project's design system, as the skill is shown it. */ inv: DesignInventory; model: string; /** Every file this run chose, by absolute path: what a reply may name. */ byPath: Map; /** What the kit exports, for checking a claimed component against reality. */ kitExports: string[]; } /** * Turn one claim into a finding, or say why it cannot be one. * * Everything here is a check against the file on disk, because every one of * these has a failure mode that ends with somebody opening a file that does not * contain what they were told it contains. The line is the worst of them: a * model reading a long file will estimate, so the symbol is searched for and * the file's own answer wins over the reply's. */ export declare function verifyClaim(raw: RawFinding, text: string, candidate: Candidate, kitExports: string[]): { ok: true; finding: ConformanceFinding; } | { ok: false; reason: string; }; /** * One model call, and everything that survived checking it. * * A batch is its own unit of failure. Nothing it produces reaches the run's * result without being checked back against the file it names, and a batch that * fails, or comes back as something other than JSON, reports the files it * covered as unread rather than as clean. */ export declare function readBatch(ctx: BatchContext, batch: Candidate[]): Promise;