export interface RetryConfig { readonly maxAttempts: number; readonly baseDelayMs: number; readonly maxDelayMs: number; } export declare const DEFAULT_RETRY_CONFIG: RetryConfig; /** * Retry profile for long-lived voice-provider WebSockets (STT/TTS). * * Keeps the SAME fast first reconnect as the default (~125-250 ms) so a transient * blip during a live call recovers without dead air, but raises the backoff cap to * 10 s and allows more attempts so a persistent provider failure (rate limit / * outage) is retried patiently instead of giving up after ~2 s. This intentionally * does NOT use a multi-second *floor* (a 4 s first-retry would mean seconds of dead * air on a live call); "every 10 ms matters" applies to the first reconnect, patient * backoff applies only after repeated failures. */ export declare const VOICE_PROVIDER_RETRY_CONFIG: RetryConfig; export declare const VOICE_PROVIDER_OUTAGE_RETRY_CONFIG: RetryConfig; export declare function readRetryConfig(config: Record): RetryConfig; /** Read retry config for a voice-provider WebSocket; defaults to the patient-backoff profile. */ export declare function readProviderRetryConfig(config: Record): RetryConfig; export declare function retryDelayMs(attemptIndex: number, config: RetryConfig): number; /** * Equal-jitter backoff: half the deterministic exponential delay plus a random half. * Spreads out retries so many sessions hitting the same provider rate/concurrency limit * at once don't reconnect in lockstep (thundering herd). `rng` is injectable for tests. */ export declare function retryDelayWithJitterMs(attemptIndex: number, config: RetryConfig, rng?: () => number): number; export declare function waitForRetryDelay(attemptIndex: number, config: RetryConfig, signal?: AbortSignal): Promise; //# sourceMappingURL=retry.d.ts.map