import type { ErrorEvent, OperationStatusEvent, ProviderStreamEvent } from '../types/types.js'; export interface FailureClassification { error: string; recoverable: boolean; terminal: boolean; code?: string; details?: unknown; reason?: string; } export declare function createOperationStatusEvent(event: Omit): OperationStatusEvent; interface FailureNormalizationOptions extends Partial> { retryableErrors?: Iterable; retryableStatusCodes?: Iterable; } export declare function normalizeFailure(failure: unknown, overrides?: FailureNormalizationOptions): FailureClassification; export declare function selectMoreSevereFailure(current: FailureClassification | undefined, next: FailureClassification): FailureClassification; export declare function toErrorEvent(failure: FailureClassification, event?: Omit): ErrorEvent; export declare function createProviderErrorEvent(error: unknown, options: { prefix: string; request_id?: string; reason?: string; recoverable?: boolean; details?: unknown; retryableErrors?: Iterable; retryableStatusCodes?: Iterable; }): ErrorEvent; export declare function isTerminalFailureEvent(event: ProviderStreamEvent): boolean; export declare class RequestLifecycleController { private state; private requestId?; begin(requestId: string): OperationStatusEvent | null; retrying(failure: FailureClassification, attempt: number, maxAttempts: number): OperationStatusEvent | null; complete(): OperationStatusEvent | null; fail(failure: FailureClassification, attempt: number, maxAttempts: number): OperationStatusEvent | null; getRequestId(): string | undefined; isTerminal(): boolean; } export declare function createOperationGuard(options: { operationName: string; abortSignal?: AbortSignal; timeoutMs?: number; }): { signal: AbortSignal; abort: (reason?: Error) => void; cleanup: () => void; }; export declare function streamWithAbortAndTimeout(stream: AsyncGenerator, options: { abortSignal?: AbortSignal; }): AsyncGenerator; export {}; //# sourceMappingURL=failure_detection.d.ts.map