import { type SkipMatch } from '@czap/gauntlet'; import type { PlumbGateSummary } from '../registry.js'; /** * The skip detector the scan folds — a `(source) => SkipMatch[]`. INJECTED by the caller so the * SOUND AST detector (`@czap/audit`'s `detectSkipsAST`, line-agnostic + the structural * conditionality) can be used WITHOUT `@czap/command` gaining a `typescript`/`@czap/audit` edge * (the boundary LAW: the lean token `detectSkips` is the FALLBACK; the CLI host — which deps * `@czap/audit` — injects the AST detector). Defaults to the dependency-free token `detectSkips`. */ export type PlumbSkipDetector = (source: string) => readonly SkipMatch[]; /** * Run the plumb-completeness gate over `root` (the host's `cwd`). Pure scan: * `ok` ⟺ a generated corpus is present, no `*.skip` placeholders in * `tests/generated/`, AND every published package classified in `PACKAGE_PLUMB`. * * The optional `skipDetector` (a `(source) => SkipMatch[]`) is the INJECTED SOUND AST detector * (`@czap/audit`'s `detectSkipsAST`); the CLI host passes it so a generated multi-line / ASI / * inner-describe skip the token scanner would miss is caught here too — `(skipDetector ?? * detectSkips)`. Omitted (a lean caller) ⇒ the dependency-free token `detectSkips` fallback runs. */ export declare function runPlumbScan(root: string, skipDetector?: PlumbSkipDetector): PlumbGateSummary; //# sourceMappingURL=plumb-scan.d.ts.map