export type FixtureExpect = { rowCount?: { min?: number; max?: number; }; columns?: string[]; types?: Record; patterns?: Record; notEmpty?: string[]; /** * Substrings/regex fragments that MUST NOT appear in the column value. * * Catches silent content contamination that `notEmpty` alone misses — * e.g. a `description` field that accidentally carries "address: ..." / * "category: ..." fragments from sibling DOM nodes, or a `title` that * bled in a navigation-breadcrumb prefix. Each entry is matched as a * plain substring against the stringified column value. */ mustNotContain?: Record; /** * Columns whose values must be truthy. Complements `notEmpty` (which * only rejects empty-string/null/undefined) by also catching silent * `|| 0` / `|| false` fallbacks in numeric/boolean fields. Fires when * the value coerces to `false` in JS. */ mustBeTruthy?: string[]; }; export type FixtureArgs = Record | unknown[]; export type Fixture = { args?: FixtureArgs; expect?: FixtureExpect; }; export type ValidationFailure = { rule: 'rowCount' | 'column' | 'type' | 'pattern' | 'notEmpty' | 'mustNotContain' | 'mustBeTruthy' | 'shapeKeyCount' | 'shapeDepth' | 'shapeNestedId'; detail: string; rowIndex?: number; }; export type Row = Record; export type RowShapeOptions = { maxTopLevelKeys?: number; maxNestedDepth?: number; }; export declare function fixturePath(site: string, command: string): string; export declare function loadFixture(site: string, command: string): Fixture | null; export declare function writeFixture(site: string, command: string, fixture: Fixture): string; /** * Derive a reasonable fixture from sample output. Used by `--write-fixture` * to seed a first draft the author can hand-tune. * * Heuristics: * - rowCount.min = 1 if rows non-empty, else 0 * - columns = keys from the first row * - types = typeof of the first row's values, with "number|string" for mixed * - no auto patterns / notEmpty — author should add those deliberately */ export declare function deriveFixture(rows: Row[], args?: FixtureArgs): Fixture; export declare function validateRows(rows: Row[], fixture: Fixture): ValidationFailure[]; export declare function validateRowShape(rows: Row[], opts?: RowShapeOptions): ValidationFailure[]; /** * Convert fixture args into argv tokens appended after the command name. * - Array form is passed through verbatim (stringified), supporting positional subjects. * - Object form is expanded to `--key value` pairs. */ export declare function expandFixtureArgs(args: FixtureArgs | undefined): string[]; export declare function parseSeedArgs(raw: string | undefined): FixtureArgs | undefined;