import { IncomingResponse, RTCSession } from '@krivega/jssip'; import { EventEmitterProxy } from 'events-constructor'; import { StreamsManagerProvider } from './StreamsManagerProvider'; import { ApiManager } from '../ApiManager'; import { CallSessionState } from '../CallSessionState'; import { ContentedStreamManager } from '../ContentedStreamManager'; import { ICallStateMachine } from './CallStateMachine'; import { TEventMap } from './events'; import { TRestartIceOptions } from './MCUSession'; import { TEffectiveQuality, TRecvQuality } from './quality'; import { TTools } from './RecvSession'; import { TAnswerToIncomingCall, TRemoteStreams, TReplaceMediaStream, TStartCall } from './types'; /** Для тестов и использования в deferred runner: возвращает token или выбрасывает при отсутствии inRoomContext. */ export declare function getInRoomTokenOrThrow(stateMachine: ICallStateMachine): string; declare class CallManager extends EventEmitterProxy { readonly stateMachine: ICallStateMachine; readonly sessionState: CallSessionState; protected isPendingCall: boolean; protected isPendingAnswer: boolean; private readonly mainRemoteStreamsManager; private readonly recvRemoteStreamsManager; private readonly streamsManagerProvider; private readonly contentedStreamManager; private readonly tools; private readonly roleManager; private readonly mcuSession; private recvSession?; private disposeRecvSessionTrackListener?; private disposeInRoomCredentialsListener?; private readonly deferredStartRecvSessionRunner; private readonly streamsChangeTracker; constructor({ contentedStreamManager }: { contentedStreamManager: ContentedStreamManager; }, tools: TTools, { callSessionState }: { callSessionState: CallSessionState; }); get requested(): boolean; get connection(): RTCPeerConnection | undefined; get isCallActive(): boolean; get number(): string | undefined; get isCallInitiator(): boolean; get isDirectP2PRoom(): boolean; get isPresentationCall(): boolean; get isDisconnecting(): boolean; get localPorts(): number[]; getStreamsManagerProvider(): StreamsManagerProvider; getContentedStreamManager(): ContentedStreamManager; getEstablishedRTCSession: () => RTCSession | undefined; subscribeToApiEvents(apiManager: ApiManager): void; startCall: TStartCall; endCall(): Promise; renegotiate(): Promise; answerToIncomingCall: TAnswerToIncomingCall; getMainRemoteStream(): MediaStream | undefined; getRemoteStreams(): TRemoteStreams; getToken(): string | undefined; getRecvQuality(): { effectiveQuality: TEffectiveQuality; quality: TRecvQuality; } | undefined; readonly getActivePeerConnection: () => RTCPeerConnection | undefined; hasSpectator(): boolean; replaceMediaStream(mediaStream: Parameters[0], options?: Parameters[1]): Promise; restartIce(options?: TRestartIceOptions): Promise; restartRecvSession(): Promise; setRecvQuality(quality: TRecvQuality): Promise; applyQuality(quality: TRecvQuality): Promise; failed(message: IncomingResponse, cause: string): Promise; private emitFailedCall; private readonly reset; private subscribeCallEndedStateMachine; private subscribeCallStatusChange; /** Хранит prev/next и эмитит CALL_STATUS_CHANGED только при реальном изменении. */ private createCallStatusChangeListener; private subscribeMcuRemoteTrackEvents; private addRemoteTrack; private handleChangedRemoteTracks; private emitEventChangedRemoteTracks; private readonly emitEventChangedRemoteStreamsConnected; private emitEventChangedRemoteStreams; private getActiveStreamsManagerTools; private attachRecvSessionTracks; private startRecvSessionForced; private startRecvSession; private stopRecvSession; private readonly onRoleChanged; private subscribeContentedStreamEvents; private renegotiateRecvSession; private renegotiateMcuSession; } export default CallManager;