import type { ExtensionFqnParts, ExtensionType, ExtensionVisibility } from "../extensions/common.js"; import type { DeprecationView } from "../extensions/deprecation.js"; import type { Version, VersionRange } from "../version-constraints/version-constraints.js"; export interface PackDependencyTarget extends ExtensionFqnParts { readonly type: Exclude; } export interface PackDependency extends PackDependencyTarget { readonly range: VersionRange; } /** Registry facts are independent of the constraint chosen by any one pack. */ export interface PackDependencySnapshot { readonly target: PackDependencyTarget; readonly exists: boolean; readonly visibility: ExtensionVisibility | null; readonly lifecycleState: "active" | "unavailable" | null; readonly deprecation: DeprecationView | null; readonly versions: ReadonlyArray<{ readonly version: Version; readonly status: "available" | "unavailable"; readonly yanked: boolean; readonly purged: boolean; }>; } export type PackPublicationCandidate = { readonly target: ExtensionFqnParts; readonly kind: "unavailable"; } | { readonly target: ExtensionFqnParts & { readonly version: Version; }; readonly kind: "resolved"; readonly participation: "publish" | "verified-existing"; readonly visibility: ExtensionVisibility | null; }; /** Findings contain only disclosable domain facts; interfaces own their wording. */ export interface PackDependencyPolicyFinding { readonly dependency: PackDependency; readonly severity: "error" | "warning"; readonly reason: "missing" | "not-public" | "selected-unavailable" | "selected-new-private" | "selected-existing-private" | "lifecycle-unavailable" | "no-installable-version" | "range-unsatisfied" | "deprecated"; readonly effectiveVisibility?: ExtensionVisibility; readonly lifecycle?: "active" | "unavailable"; readonly deprecation?: DeprecationView; } export interface PackDependencyPolicyResult { readonly findings: ReadonlyArray; readonly resolutions: ReadonlyArray<{ readonly dependency: PackDependency; readonly effectiveVersion: Version; }>; } /** Evaluate admission and version selection once against the same prospective facts. */ export declare const evaluatePackDependencies: (input: { readonly packVisibility: ExtensionVisibility; readonly dependencies: ReadonlyArray; readonly snapshots: ReadonlyArray; readonly candidates?: ReadonlyArray; }) => PackDependencyPolicyResult; //# sourceMappingURL=dependency-policy.d.ts.map