export interface RetryOptions {
    retries: number;
    factor: number;
    minTimeout: number;
    maxTimeout: number;
    randomize?: boolean;
    onRetry?: (error: Error, attempt: number) => void;
}
export declare class RetryError extends Error {
    readonly attempts: number;
    readonly lastError: Error;
    constructor(message: string, attempts: number, lastError: Error);
}
export declare function retry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T>;
export declare function retryMethod(options: RetryOptions): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
export declare function retryOnError<T>(fn: () => Promise<T>, options: RetryOptions, retryableErrors: (string | RegExp)[]): Promise<T>;
export declare function exponentialBackoff<T>(fn: () => Promise<T>, maxRetries?: number, baseDelay?: number): Promise<T>;
//# sourceMappingURL=retry.d.ts.map