import type { ClassifiedRun, CoverageEvent } from "../../../../core/src/classify/classifier.js";
import type { ClosureFixture, ClosureScenario, CurrentBuildInputs, InventoryProvenanceKind } from "../../../../universal/fixtures/closure/types.js";
import type { ClosureViolation } from "../../../../universal/src/primitives/closure/types.js";
import type { LifecycleEvidence } from "../fault/types.js";
export declare const CLOSURE_CASE_KINDS: readonly ["runtime-file-presence", "stale-artifact", "accidental-test-route", "absent-environment-binding", "descriptor-cleanup", "lock-cleanup", "process-cleanup", "empty-selection"];
export type ClosureCaseKind = (typeof CLOSURE_CASE_KINDS)[number];
export declare const CLOSURE_UNI_RULES: readonly ["UNI-050", "UNI-051", "UNI-052", "UNI-053", "UNI-054", "UNI-080", "UNI-081", "UNI-082", "UNI-083", "UNI-084"];
export type ClosureUniRule = (typeof CLOSURE_UNI_RULES)[number];
export type ClosureInventoryEntry = {
    surfaceId: string;
    path: string;
    actualProvenance: InventoryProvenanceKind;
    declaredProvenance?: InventoryProvenanceKind;
    sourcePresent: boolean;
    packagedReachable: boolean;
    includedInProductionInventory: boolean;
};
export type ClosureInventory = {
    id: string;
    environment: string;
    entries: ClosureInventoryEntry[];
};
export type ClosureInventorySpec = {
    id: string;
    environment: string;
    entries: ClosureInventoryEntry[];
};
export type EnvironmentBinding = {
    bindingId: string;
    name: string;
    requiredInProduction: boolean;
    referencedInCode: boolean;
    present: boolean;
};
export type EnvironmentBindingScenario = {
    scenarioId: string;
    kind: "environment-binding";
    environment: string;
    bindings: EnvironmentBinding[];
};
export type ClosureCase = {
    caseId: string;
    kind: ClosureCaseKind;
    rule: ClosureUniRule;
    description: string;
    scenario: ClosureScenario | EnvironmentBindingScenario;
};
export type ClosureContractSpec = {
    id: string;
    closureVersion: string;
    environment: string;
    currentInputs: CurrentBuildInputs;
    inventory: ClosureInventorySpec;
    bindings?: EnvironmentBinding[];
};
export type ExtendedClosureScenario = ClosureScenario | EnvironmentBindingScenario;
export type ClosureCheckInput = Omit<ClosureFixture, "scenarios"> & {
    scenarios: ExtendedClosureScenario[];
    lifecycle?: LifecycleEvidence;
    selection?: {
        matched: number;
        expectedEmpty?: boolean;
    };
};
export type ClosureViolationsByRule = Partial<Record<ClosureUniRule, ClosureViolation[]>>;
export type ClosureCheckResult = {
    fixtureId: string;
    holds: boolean;
    violations: ClosureViolation[];
    violationsByRule: ClosureViolationsByRule;
    coverageOutcomes: CoverageEvent[];
    classified: ClassifiedRun;
    laneEligibility: "advisory" | "blocking-eligible" | "blocking";
};
//# sourceMappingURL=types.d.ts.map