import { EventEmitterProxy } from 'events-constructor'; import { AutoConnectorManager } from '../AutoConnectorManager'; import { CallManager } from '../CallManager'; import { CallReconnectManager } from '../CallReconnectManager'; import { CallSessionState } from '../CallSessionState'; import { ConnectionManager } from '../ConnectionManager'; import { IncomingCallManager } from '../IncomingCallManager'; import { PresentationManager } from '../PresentationManager'; import { TEventMap } from './events'; import { TSessionMachines, TSessionSnapshot } from './types'; type TEqualityFunction = (previous: T, next: T) => boolean; type TSelector = (snapshot: TSessionSnapshot) => T; type TCallSessionSource = Pick; type TSessionManagerDeps = { connectionManager: Pick; callManager: Pick; incomingCallManager: Pick; presentationManager: Pick; autoConnectorManager: Pick; callReconnectManager: Pick; callSessionState: TCallSessionSource; }; declare class SessionManager extends EventEmitterProxy { readonly machines: TSessionMachines; private readonly callSessionState; private currentSnapshot; private readonly subscribers; private readonly actorSubscriptions; constructor(deps: TSessionManagerDeps); getSnapshot(): TSessionSnapshot; subscribe(listener: (snapshot: TSessionSnapshot) => void): () => void; subscribe(selector: TSelector, listener: (value: T) => void, equals?: TEqualityFunction): () => void; stop(): void; private readonly notifySubscribers; } export default SessionManager;