import type { RuntimePromotionConflictPolicy, RuntimePromotionRoute, RuntimePromotionSourceClassification } from './runtime-promotion-journal-schema.js'; export type RuntimePromotionPreliminaryEquality = 'not-required' | 'verified-equal' | 'verified-different' | 'unverified'; export type RuntimePromotionPreflightConflictReason = 'cache-candidates-ambiguous' | 'cache-marker-invalid' | 'cache-path-unsafe' | 'project-path-unsafe' | 'keep-project-requires-destination' | 'weak-source-requires-use-cache' | 'weak-source-not-deduplicable' | 'runtime-diverged' | 'runtime-equivalence-unverified'; export interface RuntimePromotionAuthorityPolicyInput { readonly sourceClassification: RuntimePromotionSourceClassification; readonly destinationRuntimePreexisting: boolean; readonly requestedConflict?: RuntimePromotionConflictPolicy; readonly preliminaryEquality?: RuntimePromotionPreliminaryEquality; } export type RuntimePromotionAuthorityPolicySelection = { readonly status: 'selected'; readonly route: RuntimePromotionRoute; readonly effectiveConflict: RuntimePromotionConflictPolicy; } | { readonly status: 'conflict'; readonly reason: RuntimePromotionPreflightConflictReason; readonly effectiveConflict: RuntimePromotionConflictPolicy; readonly sourcePreserved: boolean; readonly allowedPolicies: readonly RuntimePromotionConflictPolicy[]; }; /** * Select fresh runtime authority without touching the filesystem. * * Policies are normalized to `abort` only when no cache source exists and the * supplied choice is therefore irrelevant. An explicit `keep-project` is * never reinterpreted when a source exists: without a destination it is a * conflict that preserves the source. */ export declare function selectRuntimePromotionAuthority(input: RuntimePromotionAuthorityPolicyInput): RuntimePromotionAuthorityPolicySelection; //# sourceMappingURL=runtime-promotion-preflight-policy.d.ts.map