import { EndEvent } from '@krivega/jssip'; import { CallManager } from '../CallManager'; import { ConnectionManager } from '../ConnectionManager'; import { ICallReconnectOptions, ICallReconnectOptionsResolved, TCallRedialParameters } from './types'; type TEmitters = { emitStatusChange: (payload: { isReconnecting: boolean; }) => void; }; type TRuntimeParameters = { callManager: CallManager; connectionManager: ConnectionManager; options?: ICallReconnectOptions; emitters: TEmitters; }; /** * Runtime инкапсулирует все side-effects `CallReconnectManager`. * * Машина только декларирует переходы и дергает runtime через `TCallReconnectMachineDeps`. * Здесь живут: `CancelableRequest` над `startCall`, `DelayRequester` для backoff, * координация с `ConnectionManager` (ожидание готовности сигнализации), `AttemptsState`. */ export declare class CallReconnectRuntime { readonly resolvedOptions: ICallReconnectOptionsResolved; private readonly callManager; private readonly connectionManager; private readonly attemptsState; private readonly delayRequester; private readonly performCall; private readonly isNetworkFailureFn; private readonly canRetryOnErrorFn; private unsubscribeConnectionWait?; constructor(parameters: TRuntimeParameters); isNetworkFailure(event: EndEvent): boolean; canRetryOnError(error: unknown): boolean; isSignalingReady(): boolean; hasLimitReached(): boolean; computeNextDelayMs(attempt: number): number; delayBeforeAttempt(nextDelayMs: number): Promise; waitSignalingReady(): Promise; performAttempt(parameters: TCallRedialParameters): Promise; registerAttemptStart(): void; registerAttemptFinish(): void; resetAttemptsState(): void; cancelAll(): void; getWaitSignalingTimeoutMs(): number; } export {};