import { ErrorCode } from './codes'; import { Logger } from '../util/logger'; /** * Configuration for retry policies */ export interface RetryPolicy { maxAttempts: number; backoff: { initial: number; multiplier: number; maxDelay: number; /** * The strategy to use for the backoff. * @default "exponential" */ strategy?: 'exponential' | 'linear'; }; retryableErrors: ErrorCode[]; retryDelay?: number; } /** * Wrapper for operations that can be retried */ export declare class RetryableOperation { private operation; private policy; private logger; private allErrors; constructor(operation: () => Promise, policy: RetryPolicy, logger: Logger); /** * Execute the operation with retry logic */ execute(): Promise; /** * Check if an error is retryable based on the policy */ private isRetryable; /** * Calculate delay for the next retry attempt */ private calculateDelay; }