import type { AnimojiSvgData, RGBTuple } from '@vkontakte/calls-vmoji'; import BaseSignaling from '../../abstract/BaseSignaling'; import { ParticipantId } from '../../types/Participant'; import ServerSettings from '../../types/ServerSettings'; import EventEmitter from '../EventEmitter'; import { MediaSource } from '../MediaSource'; export declare const enum TransportEvent { REMOTE_TRACK_ADDED = "REMOTE_TRACK_ADDED", REMOTE_TRACK_REMOVED = "REMOTE_TRACK_REMOVED", REMOTE_STREAM_SECOND = "REMOTE_STREAM_SECOND", AUDIO_MIX_STALL = "AUDIO_MIX_STALL", REMOTE_DATA_STATS = "REMOTE_DATA_STATS", STATE_CHANGED = "STATE_CHANGED", LOCAL_STATE_CHANGED = "LOCAL_STATE_CHANGED", SIGNALLED_ACTIVE_PARTICIPANTS = "SIGNALLED_ACTIVE_PARTICIPANTS", SIGNALLED_SPEAKER_CHANGED = "SIGNALLED_SPEAKER_CHANGED", SIGNALLED_STALLED_PARTICIPANTS = "SIGNALLED_STALLED_PARTICIPANTS", TOPOLOGY_CHANGED = "TOPOLOGY_CHANGED", NETWORK_STATUS = "NETWORK_STATUS", PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED", ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION", ANIMOJI_STREAM = "ANIMOJI_STREAM", ANIMOJI_ERROR = "ANIMOJI_ERROR", SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT" } export declare const enum TransportState { IDLE = "IDLE", OPENED = "OPENED", CONNECTING = "CONNECTING", RECONNECTING = "RECONNECTING", CONNECTED = "CONNECTED", CLOSED = "CLOSED", FAILED = "FAILED" } export declare const enum TransportTopology { DIRECT = "DIRECT", SERVER = "SERVER" } export declare class Transport extends EventEmitter { private readonly _signaling; private readonly _mediaSource; private _topology; private _allocated; private _opened; private _directTransport; private _serverTransport; private _serverSettings; private _dtListeners; private _stListeners; private _states; private _localState; private _animojiReceiver; private _animojiSender; constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings); updateSettings(settings: ServerSettings): void; updateStatisticsInterval(): void; allocate(participantId: ParticipantId, isMaster?: boolean): void; open(participantIds: ParticipantId[], peerId?: string | null, observer?: boolean, force?: boolean): void; close(participantId: ParticipantId): void; destroy(): void; getTopology(): TransportTopology; isAllocated(participantId: ParticipantId): boolean; allocated(): string[]; opened(): string[]; getState(): TransportState | undefined; getStates(): Record; setAnimojiSvg(participantId: ParticipantId, svgData: AnimojiSvgData): void; setAnimojiFill(fill: RGBTuple | string): void; onCameraResolutionChanged(): Promise; private _setStates; private _setLocalState; private _onSignalingNotification; private _onTopologyChanged; private _createDirectTransport; private _createServerTransport; private _releaseDirectTransport; private _releaseServerTransport; private _onDirectTransportChanged; private _onServerTransportChanged; private _onTransportActiveParticipants; private _onTransportStalledParticipants; private _onTransportSpeakerChanged; private _onTransportNetworkStatus; private _onRemoteStreamSecond; private _onPeerConnectionClosed; private _onServerAudioMixStall; private _onRemoteDataStats; private _onRemoteTrackAdded; private _onRemoteTrackRemoved; private _onAsrTranscription; private _onSourceChanged; private _onAnimojiStream; /** Обработчик, досылающий MediaSourceEvent.SOURCE_CHANGED событие до аллокации транспортов */ private _onAnimojiStatus; private _createAnimojiTransport; private _removeAnimojiTransport; getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number; }