import { LayerError, LayerType } from '../core/types.js';
export interface RetryOptions {
    maxRetries: number;
    maxAttempts?: number;
    delay: number;
    backoffMultiplier: number;
    maxDelay: number;
    operationName?: string;
}
export declare class ErrorHandler {
    private static defaultRetryOptions;
    static retry<T>(operation: () => Promise<T>, options?: Partial<RetryOptions>): Promise<T>;
    static safeExecute<T>(operation: () => Promise<T>, context: {
        operationName: string;
        layer?: LayerType;
        timeout?: number;
    }): Promise<T>;
    static createCircuitBreaker<T extends any[], R>(operation: (...args: T) => Promise<R>, options: {
        failureThreshold: number;
        timeout: number;
        resetTimeout: number;
    }): (...args: T) => Promise<R>;
    static handleLayerError(error: Error, layer: LayerType): LayerError;
    static recoverFromError<T>(error: Error, recoveryStrategies: Array<() => Promise<T>>): Promise<T>;
    private static sleep;
    private static executeWithTimeout;
    private static shouldNotRetry;
    private static enhanceError;
}
export declare const retry: typeof ErrorHandler.retry;
export declare const safeExecute: typeof ErrorHandler.safeExecute;
export declare const handleLayerError: typeof ErrorHandler.handleLayerError;
export declare const recoverFromError: typeof ErrorHandler.recoverFromError;
//# sourceMappingURL=errorHandler.d.ts.map