/** * coverage/items — normalizing and refusing coverage lists. * * Pattern: one validator, two doors (`absent()` and `coverage()`), so the two * primitives cannot disagree about what a well-formed piece of * ground looks like. * Role: core/ layer, pure. Throws at the CALL SITE (the * `resolveEvidenceGate` precedent): a malformed declaration is a * mistake in the line the author just wrote, and the stack should * say so — not fail on the first absence of the first incident. * Emits: N/A. */ import type { CoverageInput, CoverageItem } from './types.js'; /** Section names, as the author spells them — used verbatim in refusals. */ export type CoverageSection = 'checked' | 'notChecked' | 'cannotCover'; /** * Normalize one author list into {@link CoverageItem}s, refusing anything a * reader could not act on. * * `requireWhy` is true only for `cannotCover`. The asymmetry is deliberate: * "we checked the fcns database" and "we did not check the archive" are * complete statements on their own, but "this tool can never see host-side * multipathing" is a claim about capability — and a permanent blind spot with * no reason attached cannot be acted on, escalated, or disproved. It is also * the one an operator is most likely to want to fix, so the reason is the * useful half. */ export declare function normalizeCoverageList(fn: string, section: CoverageSection, list: readonly CoverageInput[] | undefined, requireWhy: boolean): readonly CoverageItem[]; /** Two entries are the same ground when they say the same two things. Used to * fold the run's declarations into ONE answer-level block: five tools that * all name the same missing collector should say it once. */ export declare function sameItem(a: CoverageItem, b: CoverageItem): boolean; /** Merge lists in declaration order, dropping repeats. Order is the run's own * order on purpose — it is the only ordering that means anything here. */ export declare function mergeItems(lists: ReadonlyArray): readonly CoverageItem[];