import { type CompileFeasibilityInput, type FeasibilityIR } from '../feasibility/index.js'; import type { DimensionDeclaration, DimensionClassification, DimensionNarrowingResult } from './types.js'; /** Registry format version. Bump on any breaking change to the declarations. */ export declare const SCOPE_REGISTRY_VERSION = "1.0.0"; /** The canonical dimension set this registry ships, sorted by id. */ export declare const CANONICAL_DIMENSIONS: readonly DimensionDeclaration[]; /** A scope dimension registry: a sorted, de-duplicated set of declarations. */ export interface ScopeDimensionRegistry { version: string; /** Declarations, sorted by id. */ dimensions: DimensionDeclaration[]; /** sha256 hex of the canonical declarations. Lets a consumer pin a registry. */ registryHash: string; } /** Build a registry from a set of declarations. Defaults to CANONICAL_DIMENSIONS. * Rejects duplicate ids and any non-decidable dimension marked 'strict' * (a 'text' value type can never be strictly enforced). Deterministic. */ export declare function buildRegistry(dimensions?: readonly DimensionDeclaration[]): ScopeDimensionRegistry; /** Partition a registry into the strict decidable dimensions (routed into the * M6 hard check) and the advisory dimensions (excluded, reported, never * silently dropped). Mirrors the checks_run / checks_skipped convention. */ export declare function classifyDimensions(registry: ScopeDimensionRegistry): DimensionClassification; /** Compile the strict decidable dimensions into the M6 feasibility obligation. * This is a thin pass-through to compileFeasibility: the registry classifies * and routes, M6 emits the obligation. The advisory dimensions are NOT part * of the returned IR; the classification reports them separately. */ export declare function compileStrictDimensions(input: CompileFeasibilityInput): FeasibilityIR; /** Check that a child set-valued dimension value is a subset of the parent * value: the partial order all strict set-valued dimensions narrow under. * Authority may only narrow. A child member the parent did not grant is a * widening and fails the check. * * Advisory dimensions return status 'not_applicable' and narrows=false: they * are not decided here and cannot be the basis of a hard deny. */ export declare function checkSetNarrowing(declaration: DimensionDeclaration, parentValue: string[], childValue: string[]): DimensionNarrowingResult; /** Whether an advisory dimension may be the basis of a hard deny. * Always false. This is the registry's central invariant: advisory * dimensions never hard-deny. Strict decidable dimensions deny through the * M6 obligation, not through this predicate. */ export declare function canHardDeny(declaration: DimensionDeclaration): boolean; //# sourceMappingURL=registry.d.ts.map