/**
 * `olam flywheel k5-validate` — port of `shared/engineering/scripts/k5-rubric-helper.py`
 * validate mode. Schema-checks a plan's frontmatter `k5_scores` / `k5_boost` /
 * `k5_composite` / `k5_scored_at` block.
 *
 * Exit codes mirror the Python script:
 *   0 = valid (or all k5 fields absent — absence is acceptable for legacy plans)
 *   1 = malformed (one or more present k5 fields fail validation)
 *   2 = unexpected error (cannot stat / read / oversize file)
 *
 * Plan reference: docs/plans/olam-flywheel-cli-namespace/phase-a-tasks.md § A4
 */
import type { Command } from 'commander';
/**
 * Structured validation outcome. Stable shape consumed by `--json` mode — the
 * /10x: chain reads `status` + `errors` programmatically instead of parsing the
 * human-readable `message` prose.
 *
 *   status 'pass'    → file is valid (k5 block present + well-formed)
 *   status 'absent'  → no k5 fields present (acceptable for legacy plans)
 *   status 'fail'    → one or more present k5 fields fail schema validation
 *   status 'error'   → file could not be read / parsed (stat / oversize / YAML)
 */
type ValidateStatus = 'pass' | 'absent' | 'fail' | 'error';
interface ValidateJson {
    path: string;
    status: ValidateStatus;
    /** Schema-violation messages (empty unless status is 'fail' or 'error'). */
    errors: string[];
    /** The parsed k5 field values, when present + valid (null otherwise). */
    k5_scores: Record<string, number> | null;
    k5_boost: number | null;
    k5_composite: number | null;
    k5_scored_at: string | null;
    /** min(k5_scores) convenience for the chain's gate logic (null if no scores). */
    min_score: number | null;
}
export interface ValidateResult {
    ok: boolean;
    message: string;
    json: ValidateJson;
}
export declare function validatePlan(path: string): ValidateResult;
export declare function registerFlywheelK5Validate(parent: Command): void;
export {};
//# sourceMappingURL=k5-validate.d.ts.map