import { EventEmitterProxy } from 'events-constructor'; import { ECallReconnectStatus, ICallReconnectStateMachine } from './CallReconnectStateMachine'; import { CallManager } from '../CallManager'; import { ConnectionManager } from '../ConnectionManager'; import { TEventMap } from './events'; import { ICallReconnectOptions, TCallRedialParameters, TCancelledReason } from './types'; /** * Менеджер автоматического перезвона при сетевых обрывах звонка. * * Фасад управляет XState-машиной и подписками на `CallManager`/`ConnectionManager`. * Контракт: * - `arm()` — активирует наблюдение за сетевыми обрывами и запоминает параметры звонка. * - `disarm()` — отменяет текущую попытку (in-flight `startCall` + задержку) и уводит в `idle`. * - `forceReconnect()` — немедленный повтор даже после `limit-reached`. * - События фасада дублируются в `SipConnector` с префиксом `call-reconnect:*`. */ declare class CallReconnectManager extends EventEmitterProxy { readonly stateMachine: ICallReconnectStateMachine; private readonly runtime; private readonly callManager; private readonly connectionManager; private readonly unsubscribes; constructor({ callManager, connectionManager, }: { callManager: CallManager; connectionManager: ConnectionManager; }, options?: ICallReconnectOptions); get isReconnecting(): boolean; get state(): ECallReconnectStatus; /** * Армирует менеджер: сохраняет параметры редиала и начинает слушать `call:failed` с сетевой причиной. * * Роль spectator не редиалим автоматически (это не наш сценарий), поэтому early-exit * с событием `cancelled('spectator-role')`. */ arm(parameters: TCallRedialParameters): void; disarm(reason?: TCancelledReason): void; forceReconnect(): void; cancelCurrentAttempt(): void; stop(): void; private subscribeToManagers; } export default CallReconnectManager;