import type { AmqMessage } from "../transport/amq-message.js"; export interface FreshSessionProjectionEvidence { readonly messageId: string; readonly sessionId: string; readonly diskVisible: boolean; } export interface FreshSessionCapabilityProbe { probe(): Promise<{ readonly capable: true; } | { readonly capable: false; readonly reason: string; readonly dependencies: readonly string[]; }>; dispatch(message: AmqMessage, signal?: AbortSignal, canReplaceSession?: (signal?: AbortSignal) => Promise): Promise; } export interface FreshSessionReplacementPort { waitForIdle(signal?: AbortSignal): Promise; replace(message: AmqMessage, signal?: AbortSignal): Promise<{ readonly cancelled: boolean; readonly projection?: FreshSessionProjectionEvidence; }>; } export declare class FreshSessionInterlockError extends Error { constructor(); } /** Full capable path; a real adapter must bind replace() to replacement-context-only session control. */ export declare class CommandContextFreshSessionCapability implements FreshSessionCapabilityProbe { #private; constructor(port: FreshSessionReplacementPort); probe(): Promise<{ readonly capable: true; }>; dispatch(message: AmqMessage, signal?: AbortSignal, canReplaceSession?: (signal?: AbortSignal) => Promise): Promise; } export interface FreshSessionPolicy { readonly trustedProject: boolean; readonly allowlisted: (sender: string, project: string) => boolean; readonly confirm?: (message: AmqMessage, signal?: AbortSignal) => Promise; readonly canReplaceSession: (signal?: AbortSignal) => Promise; readonly notifyOnce?: (message: string) => void; } export type FreshSessionDecision = { readonly kind: "ordinary"; } | { readonly kind: "refused"; readonly reason: "not-authorized" | "worker-runtime-active"; } | { readonly kind: "pending"; readonly reason: string; readonly action: "/amq ingest"; } | { readonly kind: "dispatched"; readonly projection: FreshSessionProjectionEvidence; }; /** Serializes privileged session replacement behind explicit policy and capability ports. */ export declare class FreshSessionDispatcher { #private; constructor(options: { readonly capability: FreshSessionCapabilityProbe; readonly policy: FreshSessionPolicy; }); dispatch(message: AmqMessage, signal?: AbortSignal): Promise; } export declare function requestsFreshSession(message: AmqMessage): boolean; //# sourceMappingURL=fresh-session-dispatcher.d.ts.map