/** * Retry utility with exponential backoff for network requests */ /** * Thrown when a request exceeds its configured timeout. Carries the limit so * callers (e.g. `parseHttpError`) can render a precise, user-facing message. */ export declare class TimeoutError extends Error { readonly timeoutMs: number; constructor(timeoutMs: number); } export interface RetryOptions { /** Maximum number of retry attempts (default: 4) */ maxRetries?: number; /** Initial delay in milliseconds (default: 2000) */ initialDelayMs?: number; /** Maximum delay in milliseconds (default: 16000) */ maxDelayMs?: number; /** Multiplier for exponential backoff (default: 2) */ backoffMultiplier?: number; /** HTTP status codes that should trigger a retry */ retryableStatusCodes?: number[]; /** Custom function to determine if error is retryable */ isRetryable?: (error: Error) => boolean; /** Per-request timeout in milliseconds (default: REQUEST_TIMEOUT_MS) */ timeoutMs?: number; } /** * Check if an error is a network-related error that should be retried */ export declare function isNetworkError(error: Error): boolean; /** * Check if an HTTP status code should trigger a retry */ export declare function isRetryableStatus(status: number, retryableCodes: number[]): boolean; /** * Calculate delay for the current retry attempt using exponential backoff */ export declare function calculateDelay(attempt: number, options: Required): number; /** * Wrapper for fetch with automatic retry on network errors */ export declare function fetchWithRetry(url: string, init?: RequestInit, options?: RetryOptions): Promise; /** * Retry configuration presets for different scenarios */ export declare const RETRY_PRESETS: { /** Standard retry for API requests */ readonly DEFAULT: RetryOptions; /** Aggressive retry for critical requests */ readonly AGGRESSIVE: RetryOptions; /** Quick retry for fast-failing requests */ readonly QUICK: RetryOptions; /** No retry */ readonly NONE: RetryOptions; }; //# sourceMappingURL=retry.d.ts.map