/**
 * The seven-blocker gate and narrowed claim for repository readiness (RRR-5,
 * #1857).
 *
 * RRR-3 (#1855) produces the eight readiness dimensions and persists the report;
 * this module turns their findings into the thing that decides what the
 * repository may be *claimed* to be. It is a pure mapping from dimension
 * findings to the closed set of seven ship blockers (B1..B7 per the
 * `readiness-rubric` rule, RRR-1 #1853), a verdict flip to `NOT_READY` when any
 * blocker stands, and the required operator-language narrowed claim. Blocker 7
 * ("no way to prove the claimed user-visible outcome") is expressed in PRD
 * #1738's claim→evidence shape (`claim-evidence-mapping`) so there is exactly
 * one definition of what establishes a claim across both PRDs.
 *
 * It gates a *claim*, not a *process*: per intake decision O1 nothing here
 * hard-blocks. The verdict ladder is the shipped one — no new enum (F2). The
 * blocker set is closed in v1 and extended only by editing this module and the
 * rule (intake decision O4).
 * @module cli/doctor-readiness-blockers
 */
/** Verdict ladder reused from the shipped doctor surface (readiness-rubric). */
export type ReadinessVerdict = "READY" | "READY_WITH_WARNINGS" | "NOT_READY";
/**
 * The closed v1 set of seven ship blockers (readiness-rubric, RRR-1 #1853).
 * Extending it is a deliberate rule edit, never a configuration surface (intake
 * decision O4). A standing blocker makes the claim "an unattended fleet may run
 * here" false and flips the verdict to `NOT_READY`.
 */
export declare const SHIP_BLOCKER_IDS: readonly ["B1", "B2", "B3", "B4", "B5", "B6", "B7"];
/** One of the seven closed-set ship blocker ids. */
export type ShipBlockerId = (typeof SHIP_BLOCKER_IDS)[number];
/**
 * The reason blocker 7 renders `SKIP` when PRD #1738's claim→evidence contract
 * is unavailable — a stated reason, never a guessed provability verdict
 * (RRR-5 technical approach point 4).
 */
export declare const CLAIM_EVIDENCE_UNAVAILABLE_REASON = "claim-evidence contract not yet available";
/**
 * PRD #1738's claim→evidence shape (`claim-evidence-mapping`), consumed — never
 * redefined — by blocker 7. A claim binds to one boundary and is established
 * only by evidence of a kind that reaches it; a non-empty `not_established`
 * means the user-visible outcome is not provable.
 */
interface ClaimEvidence {
    readonly claim_id?: string;
    readonly boundary?: string;
    readonly required_evidence_kinds?: readonly string[];
    readonly not_established?: readonly string[];
    readonly not_established_reviewed?: boolean;
}
/**
 * A finding attached to a readiness dimension. Loosely typed because findings
 * arrive from the persisted `.lisa/readiness.json` (or a fixture) as JSON. A
 * finding evidences a blocker only when it names one and carries evidence.
 */
interface ReadinessFinding {
    readonly blocker?: string;
    readonly severity?: string;
    readonly blocking?: boolean;
    readonly invariant_violated?: string;
    readonly evidence?: string;
    readonly claim_evidence?: ClaimEvidence;
    readonly why_proof_missed?: string;
    readonly root_correction?: string;
    readonly machinery_to_remove?: readonly string[];
}
/** The minimal dimension shape blocker detection reads (record or fixture). */
export interface ReadinessDimensionInput {
    readonly id: string;
    readonly status: string;
    readonly findings: readonly unknown[];
}
/**
 * A standing ship blocker plus the finding that evidences it. A blocker is
 * never emitted without an evidencing finding — the same discipline
 * `convergent-review` applies to blocking findings without a failure scenario.
 */
export interface DetectedBlocker {
    readonly id: ShipBlockerId;
    readonly label: string;
    readonly owning_dimensions: readonly string[];
    readonly dimension_id: string;
    readonly invariant_violated: string;
    readonly evidence: string;
    readonly claim_evidence?: ClaimEvidence;
}
/** Options shared by the blocker-detection surfaces. */
export interface BlockerDetectionOptions {
    /**
     * Whether PRD #1738's claim→evidence contract is available. When `false`,
     * blocker 7 degrades to `SKIP` with a stated reason instead of guessing.
     * Defaults to `true` — #1738 has landed.
     */
    readonly claimEvidenceContractAvailable?: boolean;
}
/** The provability (blocker 7) sub-assessment for the execution/proof dimension. */
export interface ProvabilityAssessment {
    readonly status: "STANDS" | "CLEAR" | "SKIP";
    readonly reason?: string;
    readonly finding?: ReadinessFinding;
}
/** The blocker-gate assessment `checkRepositoryReadiness` persists. */
export interface ReadinessAssessment {
    readonly verdict: ReadinessVerdict;
    readonly blockers: readonly DetectedBlocker[];
    readonly narrowed_claim: string | null;
}
/**
 * Gate the unattended-operation claim on the seven ship blockers and, when any
 * stands, emit the narrowed claim. This is RRR-5's pure core: it consumes the
 * dimension findings, maps them to blockers (blocker 7 via PRD #1738's evidence
 * shape), flips the verdict to `NOT_READY` when a blocker stands, and produces
 * the operator-language narrowed claim. It gates a *claim*, not a *process* —
 * intake decision O1 keeps every Lisa surface warn-only.
 * @param dimensions - Per-dimension records (from the report or a fixture)
 * @param options - Blocker-detection options (claim→evidence availability)
 * @returns The verdict, standing blockers, and narrowed claim
 */
export declare function assessReadiness(dimensions: readonly ReadinessDimensionInput[], options?: BlockerDetectionOptions): ReadinessAssessment;
/**
 * Assess blocker 7 — "no way to prove the claimed user-visible outcome" — from
 * the execution/proof dimension, expressed in PRD #1738's claim→evidence shape.
 * The outcome is unprovable (the blocker STANDS) when a claim's
 * `not_established` list is non-empty; it is CLEAR when that list is empty. If
 * #1738's contract is unavailable, or a blocker-7 finding is not expressed in
 * its shape, the assessment is `SKIP` with a stated reason rather than a guess.
 * @param dimension - The execution/proof dimension record, if present
 * @param options - Blocker-detection options (claim→evidence availability)
 * @returns The provability sub-assessment
 */
export declare function assessProvabilityBlocker(dimension: ReadinessDimensionInput | undefined, options?: BlockerDetectionOptions): ProvabilityAssessment;
/**
 * Detect the standing ship blockers from dimension findings — a pure mapping
 * from findings to the closed set B1..B7. Blockers 1-6 stand on an evidencing
 * finding that names them; blocker 7 stands only via {@link assessProvabilityBlocker}
 * over PRD #1738's evidence shape. Emitted in fixed id order for a deterministic
 * report; a blocker with no evidencing finding is absent.
 * @param dimensions - Per-dimension records (from the report or a fixture)
 * @param options - Blocker-detection options (claim→evidence availability)
 * @returns The standing blockers, ordered by id
 */
export declare function detectShipBlockers(dimensions: readonly ReadinessDimensionInput[], options?: BlockerDetectionOptions): readonly DetectedBlocker[];
/**
 * Produce the narrowed claim: the required, operator-language statement of what
 * the repository is NOT ready for AND what it IS ready for whenever a blocker
 * stands. Returns `null` when no blocker stands (a `READY`/`READY_WITH_WARNINGS`
 * report carries no narrowed claim). Governed by the `factory-model` rule —
 * written outward for a non-technical operator at the gate.
 * @param blockers - Standing ship blockers
 * @returns The narrowed claim, or null when nothing stands
 */
export declare function computeNarrowedClaim(blockers: readonly DetectedBlocker[]): string | null;
export {};
//# sourceMappingURL=doctor-readiness-blockers.d.ts.map