import { type Draft } from "../draft.js"; import { type Flags } from "../utils/cli.js"; import { type Report } from "./validate.js"; declare const FIXER_ORDER: readonly ["gc", "init-meta", "register", "sync-timelines"]; type FixerName = (typeof FIXER_ORDER)[number]; export interface FixPlanEntry { fixer: FixerName; finding_ids: string[]; action: string; destructive: boolean; blocked: boolean; } export interface FixPlan { blocked: boolean; plan: FixPlanEntry[]; excluded: Array<{ finding_id: string; reason: string; }>; unfixable: Array<{ finding_id: string; location_ref: string | null; reason: string; }>; } /** Pure: the aggregated fix plan derived from a validate report + the in-memory * draft. Reads (planGc) but never writes. `blocked` (hasBlockingErrors) flags the * gc entry — the umbrella refuses to APPLY when blocked, but still shows the plan. */ export declare function planValidateFix(report: Report, draft: Draft, blocked: boolean): FixPlan; /** * CLI entry for `validate --fix [--apply]`. Returns the process exit code: * - dry-run preview → always 0 (it previewed, it did not fail); * - --apply → reportExitCode(residual) after re-validating; * - --apply on a blocking-error draft → 2, zero writes (B1); * - sync-timelines failure → throws CliError → exit 1 (B3). * * NOTE: orphan findings are info-severity, so reportExitCode is VACUOUS for the * gc path (a clean fix and a no-op both exit 0, even under --strict). The success * signal for gc is fix.results[].wrote, never the exit code (B7). */ export declare function cmdValidateFix(draft: Draft, filePath: string, projectInput: string, flags: Flags): number; export {};