export interface RetryOptions {
    maxAttempts?: number;
    initialDelay?: number;
    maxDelay?: number;
    backoffMultiplier?: number;
    shouldRetry?: (error: Error) => 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 class RateLimitError extends Error {
    readonly retryAfter?: number | undefined;
    constructor(message: string, retryAfter?: number | undefined);
}
export declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
export declare function retryWithJitter<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
export declare function createRetryableFunction<T extends (...args: unknown[]) => Promise<unknown>>(fn: T, options?: RetryOptions): T;
export declare function isRateLimitError(error: Error): boolean;
export declare function isRateLimitOrUsageError(message: string): boolean;
export declare function extractRetryAfter(error: Error): number | undefined;
export declare const retryDefaults: {
    maxAttempts: number;
    initialDelay: number;
    maxDelay: number;
    backoffMultiplier: number;
};
