export type RetryStrategyType = 'exponential' | 'exponential-jitter' | 'linear' | 'fixed'; export interface RetryStrategyOptions { strategy?: RetryStrategyType; maxAttempts?: number; initialDelay?: number; maxDelay?: number; factor?: number; jitter?: boolean; retryableErrors?: string[]; retryableStatusCodes?: number[]; circuitBreaker?: CircuitBreakerOptions; } export interface CircuitBreakerOptions { enabled?: boolean; threshold?: number; timeout?: number; halfOpenRequests?: number; } export interface RetryContext { attempt: number; error: Error; statusCode?: number; startTime: number; } type CircuitState = 'closed' | 'open' | 'half-open'; export declare class RetryStrategy { private readonly strategy; private readonly maxAttempts; private readonly initialDelay; private readonly maxDelay; private readonly factor; private readonly jitter; private readonly retryableErrors; private readonly retryableStatusCodes; private readonly circuitBreakerEnabled; private readonly circuitBreakerThreshold; private readonly circuitBreakerTimeout; private readonly halfOpenRequests; private circuitState; private failureCount; private lastFailureTime; private halfOpenAttempts; constructor(options?: RetryStrategyOptions); shouldRetry(context: RetryContext): boolean; getDelay(attempt: number): number; recordSuccess(): void; recordFailure(): void; private updateCircuitState; getCircuitState(): CircuitState; getStats(): { circuitState: CircuitState; failureCount: number; enabled: boolean; }; reset(): void; } export {}; //# sourceMappingURL=RetryStrategy.d.ts.map