/** * Retry utility with exponential backoff */ /** * Retry configuration options */ export interface RetryOptions { /** Maximum number of retry attempts (default: 6) */ maxAttempts?: number; /** Base delay in milliseconds (default: 1000) */ baseDelayMs?: number; /** Maximum delay in milliseconds (default: 14400000 = 4 hours) */ maxDelayMs?: number; /** Backoff multiplier (default: 2) */ backoffMultiplier?: number; /** Add jitter to delays (default: true) */ jitter?: boolean; /** Callback for each retry attempt */ onRetry?: (attempt: number, error: Error, delayMs: number) => void; /** Predicate to determine if error is retryable (default: all errors) */ isRetryable?: (error: Error) => boolean; } /** * Default retry delays based on Bota spec: * Attempt 1: Immediate * Attempt 2: 30 seconds * Attempt 3: 2 minutes * Attempt 4: 10 minutes * Attempt 5: 1 hour * Attempt 6: 4 hours */ export declare const DEFAULT_RETRY_DELAYS: number[]; /** * Calculate delay for a retry attempt using exponential backoff */ export declare function calculateDelay(attempt: number, options?: RetryOptions): number; /** * Sleep for a specified duration */ export declare function sleep(ms: number): Promise; /** * Execute a function with retry logic */ export declare function withRetry(fn: () => Promise, options?: RetryOptions): Promise; /** * Create a retryable wrapper for a function */ export declare function makeRetryable Promise>(fn: T, options?: RetryOptions): T; /** * Check if we should continue retrying based on total time elapsed */ export declare function shouldContinueRetrying(startTime: Date, maxDurationMs?: number): boolean; //# sourceMappingURL=retry.d.ts.map