import type { ScreenIr } from "./irTypes.js";
export type StructuralTestCategory = "field-presence" | "field-validation" | "control-action" | "screen-render" | "state" | "navigation" | "flow" | "a11y" | "coverage-notice";
/** One deterministic, per-screen-attributable test item derived from the Screen-IR. */
export interface StructuralTestItem {
    readonly id: string;
    readonly title: string;
    readonly category: StructuralTestCategory;
    /** Screen provenance so a generated test is attributable to its origin screen. */
    readonly screenId: string;
    readonly screenName: string;
    /** The IR node the item was derived from, when applicable (screen-level items omit it). */
    readonly sourceNodeId?: string;
}
/** The structural baseline for a single screen: ordered, deterministic test items. */
export interface ScreenTestBaseline {
    readonly screenId: string;
    readonly screenName: string;
    readonly items: readonly StructuralTestItem[];
}
/**
 * Total, defensive Screen-IR parser for the snapshot's opaque `irJson`. Returns `undefined` for a
 * missing or malformed value (no `root`, malformed node tree) so the caller can skip an unparseable
 * screen without crashing. A valid IR is returned verbatim through the typed shape.
 */
export declare function parseScreenIr(value: unknown): ScreenIr | undefined;
/**
 * Derive the deterministic structural baseline for one screen. The screen-render item comes first,
 * then field / control / state items in stable depth-first node order. `extraItems` is the additive
 * seam (#811 navigation, #812 a11y): a sibling derivation may contribute already-built test items
 * for this screen without changing the baseline shape. The result is reproducible for a given IR.
 */
export declare function deriveScreenTestBaseline(screen: ScreenIr, extraItems?: readonly StructuralTestItem[]): ScreenTestBaseline;
/**
 * Render the structural baseline as citation-ready canonical text carrying per-screen provenance.
 * The text is deterministic (no timestamps, stable order) and is what the QI ingestion turns into a
 * content-bearing atom. Vision-derived hints, when present, are appended SEPARATELY by the caller
 * (visionAugmentation.ts) and never replace these lines.
 */
export declare function renderBaselineText(baseline: ScreenTestBaseline): string;
//# sourceMappingURL=screenIrTestBaseline.d.ts.map