/**
 * RetryStrategy
 */
interface RetryStrategy {
    /**
     * Calculate delay based on attempt times
     * @param attempt Attempt times
     * @returns Delay time
     */
    getDelay(attempt: number): number;
    /**
     * Max timeout
     */
    maxTimeout: number;
}
/**
 * FixedDelayStrategy
 */
declare class FixedDelayStrategy implements RetryStrategy {
    private delay;
    maxTimeout: number;
    constructor(delay: number, // Fixed delay time (ms)
    maxTimeout?: number);
    /**
     * Default fixed delay strategy
     */
    static default: FixedDelayStrategy;
    getDelay(): number;
}
/**
 * RandomDelayStrategy
 */
declare class RandomDelayStrategy implements RetryStrategy {
    private minDelay;
    private maxDelay;
    maxTimeout: number;
    constructor(minDelay: number, // Minimum delay time (ms)
    maxDelay: number, // Maximum delay time (ms)
    maxTimeout?: number);
    /**
     * Default random delay strategy
     */
    static default: RandomDelayStrategy;
    getDelay(): number;
}
/**
 * ExponentialBackoffStrategy
 */
declare class ExponentialBackoffStrategy implements RetryStrategy {
    private baseDelay;
    private factor;
    maxTimeout: number;
    private randomize;
    constructor(baseDelay: number, // Base delay time (ms)
    factor: number, // Exponential factor
    maxTimeout?: number, randomize?: boolean);
    /**
     * Default exponential backoff strategy
     */
    static default: ExponentialBackoffStrategy;
    getDelay(attempt: number): number;
}
/**
 * RetryHandler
 */
declare class RetryHandler<T> {
    private strategy;
    private retries;
    private onRetry?;
    constructor(strategy: RetryStrategy, // Retry strategy
    retries: number, // Maximum retry times
    onRetry?: ((error: Error, attempt: number) => void) | undefined);
    /**
     * Execute the async function and retry according to the strategy
     * @param fn The async function to execute
     * @returns The result of the async function
     */
    execute(fn: () => Promise<T>): Promise<T>;
}
export { type RetryStrategy, FixedDelayStrategy, RandomDelayStrategy, ExponentialBackoffStrategy, RetryHandler };
//# sourceMappingURL=retry_handler.d.ts.map