export declare const FILE_SYSTEM_BUSY = "FILE_SYSTEM_BUSY";
export declare const TEMPORARY_ERROR = "TEMPORARY_ERROR";
export declare const IO_ERROR = "IO_ERROR";
/**
 * Retry options
 */
export interface RetryOptions {
    /**
     * Maximum number of retry attempts
     * @default 3
     */
    maxRetries?: number;
    /**
     * Base delay in milliseconds between retries (will be exponentially increased)
     * @default 300
     */
    baseDelay?: number;
    /**
     * Factor to multiply delay by for each retry
     * @default 2
     */
    backoffFactor?: number;
    /**
     * Maximum delay in milliseconds
     * @default 2000
     */
    maxDelay?: number;
    /**
     * Custom error filter to determine if an error is retryable
     * @default (error) => isRetryableError(error)
     */
    retryableErrorFilter?: (error: unknown) => boolean;
}
/**
 * Determines if an error is retryable
 * @param error Error to check
 * @returns True if the error is retryable, false otherwise
 */
export declare function isRetryableError(error: unknown): boolean;
/**
 * Retry a function with exponential backoff
 * @param fn Function to retry
 * @param options Retry options
 * @returns Promise resolving to the result of the function
 * @throws The last error if all retries fail
 */
export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
/**
 * Wrapper for file system operations to automatically retry on retryable errors
 * @param operation Operation name for logging
 * @param fn Function to execute
 * @param options Retry options
 * @returns Promise resolving to the result of the function
 */
export declare function withFileSystemRetry<T>(operation: string, fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
//# sourceMappingURL=FileSystemRetryUtils.d.ts.map