import { CallManager } from '../CallManager'; /** * Алгоритм восстановления "main stream": * 1) Внешний код вызывает `recover()`. * 2) Срабатывает throttling, чтобы не выполнять renegotiate слишком часто. * 3) `requestRenegotiate()` инициирует renegotiate через `CancelableRequest`. * 4) Если renegotiate уже выполняется (есть in-flight request), повторный вызов игнорируется. * 5) Успех/ошибка логируются (но recovery не меняет внешний state напрямую). * 6) Если сессия завершилась (`CallManager` -> событие `ended`), подписка отменяет throttling и отменяет in-flight renegotiate. */ declare class MainStreamRecovery { private readonly renegotiateRequester; private renegotiateThrottled; private readonly callManager; constructor(callManager: CallManager, throttleRecoveryTimeout?: number); private static assertValidThrottleRecoveryTimeout; setThrottleRecoveryTimeout(throttleRecoveryTimeout: number): void; recover(): void; private readonly requestRenegotiate; private createRenegotiateThrottled; private subscribe; private cancel; } export default MainStreamRecovery;