import { type CapabilityProfile } from "../../../core/src/sdk/capability.js";
export type CoverageReason = "empty-selection" | "unproven-precondition" | "inert-perturbation" | "failed-known-bad" | "unsupported-capability" | "unreachable-target" | "missing-artifact";
export type WitnessKind = "non-vacuity" | "perturbation" | "positive-control" | "calibration" | "precondition";
export type DetectorRef = {
    id: string;
    version: string;
};
export type CoverageGap = {
    reason: "empty-selection";
    witnessKind: "non-vacuity";
    selection: {
        matched: number;
        expectedEmpty: boolean;
    };
} | {
    reason: "inert-perturbation";
    witnessKind: "perturbation";
    probe: {
        applied: boolean;
        observedAtBoundary: boolean;
    };
} | {
    reason: "unreachable-target";
    witnessKind: "positive-control";
    ownedItemObserved: false;
} | {
    reason: "failed-known-bad";
    witnessKind: "calibration";
    detectorRef: DetectorRef;
    profileFeature: string;
} | {
    reason: "unsupported-capability";
    witnessKind: "calibration";
    detectorRef: DetectorRef;
    profileFeature: string;
} | {
    reason: "unproven-precondition";
    witnessKind: "precondition";
    failedPrecondition: string;
};
export type WitnessResult = {
    ok: true;
    witness: {
        kind: WitnessKind;
        evidence: unknown;
    };
} | {
    ok: false;
    gap: CoverageGap;
};
export declare function witnessNonVacuity(selection: {
    matched: number;
    expectedEmpty: boolean;
}): WitnessResult;
export declare function witnessPerturbation(probe: {
    applied: boolean;
    observedAtBoundary: boolean;
}): WitnessResult;
export declare function witnessPositiveControl(check: {
    ownedItemObserved: boolean;
}): WitnessResult;
export declare function witnessCalibration(detectorRef: DetectorRef, profile: CapabilityProfile, knownBad: {
    fired: boolean;
    profileFeature: string;
}): WitnessResult;
export declare function witnessPrecondition(preconditions: {
    name: string;
    proven: boolean;
}[]): WitnessResult;
//# sourceMappingURL=witnesses.d.ts.map