/** * Shared invariant facts for desired extension version constraints. * * @experimental This API is unstable and may change without notice. */ import { type ExtensionType } from "../extensions/index.js"; import type { PackDependencyAuthority, PackDependencyReachability } from "../packs/dependency-reachability.js"; import type { CanonicalConstraintContributor, CanonicalConstraintMismatchObservation } from "../workspace/canonical-observation.js"; import type { DesiredExtensionNode } from "../workspace/desired-state-graph.js"; export declare const EXTENSION_CONSTRAINT_INVARIANT_PREDICATE: "workspace/extension-constraints-satisfied"; export interface ExtensionConstraintFactContributor extends CanonicalConstraintContributor { readonly authority?: PackDependencyAuthority; } export interface ExtensionConstraintInvariantFact { readonly predicate: typeof EXTENSION_CONSTRAINT_INVARIANT_PREDICATE; readonly subject: { readonly type: ExtensionType; readonly name: string; readonly identity: string; readonly path?: string; }; readonly authority: { readonly source: "desired-state-graph" | "prospective-publish-selection"; readonly locator: string; readonly constraints: ReadonlyArray; }; readonly observation: { readonly status: "constraint-mismatch"; readonly acceptedVersion?: string; readonly observedVersion?: string; readonly candidateVersion?: string; readonly violations?: ReadonlyArray; }; readonly expectation: { readonly status: "satisfied"; readonly ranges: ReadonlyArray; }; } export interface ProspectiveExtensionConstraintCandidate { readonly fqn: string; readonly type: ExtensionType; readonly version: string; readonly dependencies?: Readonly>; } /** * Evaluate prospective selected versions against the locally represented Pack * constraints. Selected Pack manifests replace their current local declaration * for this fact evaluation, matching the state that a coordinated publication * would establish. */ export declare const makeProspectiveExtensionConstraintFacts: (args: { readonly candidates: ReadonlyArray; readonly reachability: ReadonlyArray; }) => ReadonlyArray; export type ExtensionConstraintPlanningDecision = { readonly readiness: "ready"; readonly reason: "satisfying-version-resolved"; readonly version: string; } | { readonly readiness: "blocked"; readonly reason: "no-satisfying-version" | "candidate-violates-constraints"; readonly candidateVersion?: string; }; export declare const makeExtensionConstraintInvariantFact: (desired: DesiredExtensionNode, observation: CanonicalConstraintMismatchObservation) => ExtensionConstraintInvariantFact; export declare const planExtensionConstraintFact: (fact: ExtensionConstraintInvariantFact, candidateVersion: string | undefined) => ExtensionConstraintPlanningDecision; /** Stable human and machine-display detail shared by lint and sync. */ export declare const extensionConstraintFactText: (fact: ExtensionConstraintInvariantFact) => string; //# sourceMappingURL=constraint-invariant-fact.d.ts.map