import { type ConversationRunEventQueueController } from "./durable.js"; export type ConversationRunMirrorDisableReason = "cursor_resyncs_exhausted" | "cursor_mismatch_ambiguous" | "non_appendable" | "ignorable_append_rejection" | "run_terminal" | "payload_too_large" | "auth_rejected"; /** Public API contract for conversation run mirror snapshot. */ export interface ConversationRunMirrorSnapshot { latestEventId: number; latestExternalEventSequence: number; pendingEventCount: number; consecutiveFailures: number; disabled: boolean; hasFlushTimer: boolean; hasRetryTimer: boolean; inFlight: boolean; appendRequestCount?: number; disableReason?: ConversationRunMirrorDisableReason; } /** State for conversation run mirror stopped. */ export interface ConversationRunMirrorStoppedState { outcome: "stopped"; latestEventId: number; latestExternalEventSequence: number; pendingEventCount: 0; consecutiveFailures: number; disabled: true; disableReason?: ConversationRunMirrorDisableReason; } /** State for conversation run mirror retry scheduled. */ export interface ConversationRunMirrorRetryScheduledState { outcome: "retry_scheduled"; latestEventId: number; latestExternalEventSequence: number; pendingEventCount: number; consecutiveFailures: number; disabled: false; errorMessage: string; retryDelayMs: number; } export interface ConversationRunMirrorHighBacklogState { latestEventId: number; latestExternalEventSequence: number; pendingEventCount: number; consecutiveFailures: number; disabled: false; threshold: number; } /** Public API contract for conversation run mirror. */ export interface ConversationRunMirror { enqueue(events: unknown[]): void; flush(options?: { abortSignal?: AbortSignal; throwOnTimeoutRetry?: boolean; }): Promise; getSnapshot(): ConversationRunMirrorSnapshot; dispose(): void; } /** Create conversation run mirror. */ export declare function createConversationRunMirror(input: { queueController: ConversationRunEventQueueController; immediateFlushEventCount: number; flushDelayMs?: number; getRetryDelayMs?: (consecutiveFailures: number) => number; highBacklogEventCount?: number; onHighBacklog?: (state: ConversationRunMirrorHighBacklogState) => Promise | void; onRetryScheduled?: (state: ConversationRunMirrorRetryScheduledState) => Promise | void; onStopped?: (state: ConversationRunMirrorStoppedState) => Promise | void; }): ConversationRunMirror; //# sourceMappingURL=run-mirror.d.ts.map