export type StreamFailureKind = "aborted" | "empty" | "context-overflow" | "rate-limit" | "server" | "network" | "stall" | "auth" | "not-found" | "unknown"; export interface StreamRecoveryState { empty: number; rateLimit: number; server: number; serverAttempts: number; network: number; stall: number; context: number; structural: number; progressed: number; total: number; } export interface StreamRecoveryLimits { readonly maxEmpty: number; readonly maxRateLimit: number; readonly maxServer: number; readonly maxServerAttempts: number; readonly maxNetwork: number; readonly maxStall: number; readonly maxContext: number; readonly maxStructural: number; readonly maxProgressed: number; readonly maxTotal: number; readonly maxDelayMs: number; } export declare const DEFAULT_STREAM_RECOVERY_LIMITS: StreamRecoveryLimits; export interface StreamRecoveryPlan { readonly action: "retry" | "give-up"; readonly kind: StreamFailureKind; readonly delayMs: number; readonly forceCompact: boolean; readonly disableThinking: boolean; readonly allowModelFallback: boolean; readonly preferModelFallback?: boolean | undefined; readonly nudge?: string | undefined; readonly notice?: string | undefined; } export declare function classifyStreamFailure(error: unknown): StreamFailureKind; export declare function createStreamRecoveryState(): StreamRecoveryState; export declare function resetStreamRecoveryState(state: StreamRecoveryState): void; export declare function recordRecoveryAttempt(state: StreamRecoveryState, kind: StreamFailureKind, progressed?: boolean): void; export declare function recordServerErrorAttempts(state: StreamRecoveryState, attempts: number): void; export declare function serverErrorAttemptsFrom(error: unknown): number; export declare function planStreamRecovery(input: { error?: unknown; kind?: StreamFailureKind; state: StreamRecoveryState; limits?: StreamRecoveryLimits; progressed?: boolean | undefined; }): StreamRecoveryPlan;