@vkontakte/calls-sdk 2.8.13-dev.9394b771.0 → 2.8.13-dev.939924e7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CallsSDK.d.ts +8 -4
  2. package/abstract/BaseApi.d.ts +1 -1
  3. package/calls-sdk.cjs.js +7 -7
  4. package/calls-sdk.esm.js +2470 -2088
  5. package/classes/AudioOutput.d.ts +2 -0
  6. package/classes/CallRegistry.d.ts +17 -4
  7. package/classes/MediaSource.d.ts +5 -0
  8. package/classes/SignalingErrors.d.ts +6 -0
  9. package/classes/StatsLogger.d.ts +1 -1
  10. package/classes/conversation/Conversation.d.ts +26 -10
  11. package/classes/conversation/Conversation.testUtils.d.ts +1 -0
  12. package/classes/screenshare/ScreenCaptureSender.d.ts +2 -2
  13. package/classes/stat/BatteryStats.d.ts +25 -0
  14. package/classes/stat/ClientResourceStats.d.ts +41 -0
  15. package/classes/stat/ConversationStats.d.ts +5 -1
  16. package/classes/stat/SdpStats.d.ts +2 -1
  17. package/classes/stat/StatAggregator.d.ts +3 -1
  18. package/classes/stat/StatEventCollector.d.ts +1 -1
  19. package/classes/stat/StatQueue.d.ts +2 -2
  20. package/classes/transport/BaseTransport.d.ts +3 -3
  21. package/classes/transport/DirectStatReporter.d.ts +2 -2
  22. package/classes/transport/DirectTransport.d.ts +2 -2
  23. package/classes/transport/PerfStatReporter.d.ts +7 -3
  24. package/classes/transport/ServerTransport.d.ts +4 -2
  25. package/classes/transport/SimulcastSender.d.ts +2 -2
  26. package/classes/transport/Transport.d.ts +2 -2
  27. package/default/Api.d.ts +3 -0
  28. package/default/Signaling.d.ts +9 -16
  29. package/default/SignalingSession.d.ts +92 -0
  30. package/enums/ActiveFeature.d.ts +19 -0
  31. package/package.json +3 -3
  32. package/static/AuthData.d.ts +11 -1
  33. package/static/External.d.ts +4 -0
  34. package/static/Params.d.ts +42 -11
  35. package/types/AddParticipantParams.d.ts +18 -0
  36. package/types/ClientStatsEvent.d.ts +2 -1
  37. package/types/FastHangup.d.ts +7 -5
  38. package/types/PerfStatReporter.d.ts +25 -1
  39. package/types/SignalingMessage.d.ts +2 -0
  40. package/types/Statistics.d.ts +22 -7
  41. package/abstract/BaseSignaling.d.ts +0 -143
  42. package/default/SignalingTransport.d.ts +0 -80
@@ -0,0 +1,92 @@
1
+ import SignalingConnectionType from '../enums/SignalingConnectionType';
2
+ import { SignalingTransportType } from '../enums/SignalingTransportStat';
3
+ import { DebugLogger } from '../static/Debug';
4
+ import SignalingMessage from '../types/SignalingMessage';
5
+ export declare enum SignalingSessionFailure {
6
+ EMPTY_ENDPOINT = "EMPTY_ENDPOINT",
7
+ CONNECTION_TIMEOUT = "CONNECTION_TIMEOUT",
8
+ RECONNECT_TIMEOUT = "RECONNECT_TIMEOUT",
9
+ ABORTED = "ABORTED"
10
+ }
11
+ export type SignalingSessionFailedEvent = {
12
+ failure: SignalingSessionFailure;
13
+ message: string;
14
+ source: SignalingTransportType;
15
+ remote?: boolean;
16
+ };
17
+ export type SignalingSessionReconnectEvent = {
18
+ count: number;
19
+ delay: number;
20
+ };
21
+ export type SignalingSessionConnectingEvent = {
22
+ connectionType: SignalingConnectionType;
23
+ source: SignalingTransportType;
24
+ };
25
+ export type SignalingSessionHandlers = {
26
+ onConnecting: (event: SignalingSessionConnectingEvent) => void;
27
+ onOpen: () => void;
28
+ onMessage: (message: SignalingMessage | 'ping') => void;
29
+ onParseError: (error: unknown, data: unknown) => void;
30
+ onError: (event: Event) => void;
31
+ onClose: (event: CloseEvent) => void;
32
+ onFailed: (event: SignalingSessionFailedEvent) => void;
33
+ onReconnectScheduled: (event: SignalingSessionReconnectEvent) => void;
34
+ onInactive: () => void;
35
+ };
36
+ export default class SignalingSession {
37
+ private readonly _debug;
38
+ private readonly handlers;
39
+ private socket;
40
+ private state;
41
+ private endpoint;
42
+ private wtEndpoint;
43
+ private peerId;
44
+ private lastStamp;
45
+ private connectionType;
46
+ private reconnectCount;
47
+ /** Таймер задержки перед следующей попыткой подключения. */
48
+ private retryTimer;
49
+ /** Таймер ожидания нотификации connection при подключении или восстановлении; повторные попытки не продлевают общий срок. */
50
+ private connectionDeadlineTimer;
51
+ /** Таймер текущей попытки: сначала ждёт открытия сокета, затем перезапускается для ожидания нотификации connection. */
52
+ private attemptTimer;
53
+ /** Таймер ожидания ping в установленной сессии; обычные сообщения не продлевают ожидание. */
54
+ private pingTimer;
55
+ private pingTimeoutMs;
56
+ private reconnectTimeoutMs;
57
+ private forceWebSocket;
58
+ private hasEstablished;
59
+ private abortSignal;
60
+ private currentType;
61
+ private readonly onAbort;
62
+ constructor(_debug: DebugLogger | undefined, handlers: SignalingSessionHandlers);
63
+ get active(): boolean;
64
+ get established(): boolean;
65
+ get canSend(): boolean;
66
+ get type(): SignalingTransportType;
67
+ getPeerId(): number | null;
68
+ setAbortSignal(signal?: AbortSignal): void;
69
+ connect(connectionType: SignalingConnectionType, endpoints: {
70
+ endpoint: string;
71
+ webTransportEndpoint?: string | null;
72
+ }): void;
73
+ close(code?: number): void;
74
+ send(data: string): Promise<void>;
75
+ private _connect;
76
+ private _buildUrl;
77
+ private _onMessage;
78
+ private _updateRecoveryStamp;
79
+ private _onAbort;
80
+ private _retry;
81
+ private _disconnect;
82
+ private _startRetryTimer;
83
+ private _stopRetryTimer;
84
+ private _startConnectionDeadlineTimer;
85
+ private _stopConnectionDeadlineTimer;
86
+ private _startAttemptTimer;
87
+ private _stopAttemptTimer;
88
+ private _updateTimeouts;
89
+ private _startPingTimer;
90
+ private _stopPingTimer;
91
+ private _fail;
92
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Фичи, активные во время звонка. Уходят в метрику active_features,
3
+ * чтобы по ним разрезать остальную статистику: сколько фризов при включённой камере,
4
+ * какой битрейт при шаре и так далее.
5
+ *
6
+ * Здесь только то, что реально включено прямо сейчас, а не то, что разрешено настройками:
7
+ * иначе фича попадала бы в метрику у всех, кому ее просто не запретили.
8
+ *
9
+ * Сервер принимает только имена из своего списка, незнакомые отбрасывает с ошибкой.
10
+ * Новое имя добавляем сюда после того, как его добавят на сервере.
11
+ */
12
+ declare enum ActiveFeature {
13
+ MICROPHONE = "MICROPHONE",
14
+ CAMERA = "CAMERA",
15
+ /** Любая шара экрана, в том числе быстрая */
16
+ SCREEN = "SCREEN",
17
+ ANIMOJI = "ANIMOJI"
18
+ }
19
+ export default ActiveFeature;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.13-dev.9394b771.0",
3
+ "version": "2.8.13-dev.939924e7.0",
4
4
  "author": "vk.com",
5
5
  "description": "Library for video calls based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -14,9 +14,9 @@
14
14
  "**/*.d.ts"
15
15
  ],
16
16
  "dependencies": {
17
- "@vkontakte/calls-audio-effects": "1.4.2-dev.4a2ab040.0",
17
+ "@vkontakte/calls-audio-effects": "1.4.1",
18
18
  "@vkontakte/calls-video-effects": "2.2.3-beta.7",
19
- "@vkontakte/calls-vmoji": "1.0.10-dev.1b7a636b.0",
19
+ "@vkontakte/calls-vmoji": "1.0.10-beta.17",
20
20
  "@vkontakte/libvpx": "2.0.9",
21
21
  "bit-buffer": "0.2.5",
22
22
  "fflate": "^0.8.2",
@@ -1,9 +1,16 @@
1
- import type { OkUserId } from '../types/Participant';
1
+ import type { ExternalParticipantId } from '../types/ExternalId';
2
+ import type { OkUserId, ParticipantId } from '../types/Participant';
3
+ /** Свой участник и его внешний id */
4
+ export type SelfExternalId = {
5
+ participantId: ParticipantId;
6
+ externalId: ExternalParticipantId;
7
+ };
2
8
  export default abstract class AuthData {
3
9
  private static _sessionKey;
4
10
  private static _sessionSecretKey;
5
11
  private static _accessToken;
6
12
  private static _userId;
13
+ private static _selfExternalId;
7
14
  private static _reauthorizePromise;
8
15
  static get sessionKey(): string | undefined;
9
16
  static set sessionKey(value: string | undefined);
@@ -13,6 +20,9 @@ export default abstract class AuthData {
13
20
  static set accessToken(value: string | undefined);
14
21
  static get userId(): OkUserId | null;
15
22
  static set userId(value: OkUserId | null);
23
+ /** Свой участник и его внешний id из ответа auth.anonymLogin */
24
+ static get selfExternalId(): SelfExternalId | null;
25
+ static set selfExternalId(value: SelfExternalId | null);
16
26
  static isEmpty(): boolean;
17
27
  /**
18
28
  * Дедуплицирует одновременные попытки реавторизации из разных инстансов Api.
@@ -635,6 +635,10 @@ declare namespace External {
635
635
  */
636
636
  function onParticipantIdChanged(prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string): void;
637
637
  function onVideoSuspendSuggest(bandwidth: number, conversationId?: string): void;
638
+ /**
639
+ * Успешно применено первое подключение к сигналингу или переподключение.
640
+ */
641
+ function onSignalingConnected(conversationId: string): void;
638
642
  /**
639
643
  * Одобрено повышение пользователя в зеле ожидания/зале в режиме Audience
640
644
  *
@@ -108,19 +108,41 @@ export type ParamsObject = {
108
108
  wtsBase: string;
109
109
  /** @hidden */
110
110
  wssToken: string;
111
- /** @hidden */
111
+ /**
112
+ * Начальная задержка повторного подключения сигналинга; удваивается с каждой попыткой, мс.
113
+ * _По умолчанию `1000`_
114
+ * @hidden
115
+ */
112
116
  signalingReconnectDelay: number;
113
- /** @hidden */
117
+ /**
118
+ * Максимальная задержка между повторными подключениями сигналинга, мс.
119
+ * _По умолчанию `5000`_
120
+ * @hidden
121
+ */
114
122
  signalingReconnectMaxDelay: number;
115
- /** @hidden */
116
- signalingReconnectMaxCount: number;
117
- /** @hidden */
123
+ /**
124
+ * Общий лимит времени первого подключения и резервный срок восстановления без серверного activityTimeout, мс.
125
+ * _По умолчанию `60000`_
126
+ * @hidden
127
+ */
118
128
  signalingReconnectMaxDuration: number;
119
- /** @hidden */
129
+ /**
130
+ * Время ожидания уведомления connection после открытия сокета; пинги не продлевают ожидание, мс.
131
+ * _По умолчанию `10000`_
132
+ * @hidden
133
+ */
120
134
  waitConnectionDelay: number;
121
- /** @hidden */
135
+ /**
136
+ * Время ожидания ответа на команду сигналинга; во время восстановления ожидание может продлеваться, мс.
137
+ * _По умолчанию `10000`_
138
+ * @hidden
139
+ */
122
140
  waitResponseDelay: number;
123
- /** @hidden */
141
+ /**
142
+ * Время ожидания открытия сокета, а после установления сессии — резервное время ожидания ping без серверного activityTimeout, мс.
143
+ * _По умолчанию `15000`_
144
+ * @hidden
145
+ */
124
146
  waitMessageDelay: number;
125
147
  /** @hidden */
126
148
  waitAnotherTabDelay: number;
@@ -562,7 +584,9 @@ export type ParamsObject = {
562
584
  */
563
585
  forwardEmptyIceCandidate: boolean;
564
586
  /**
565
- * Получен локальный стрим с камеры/микрофона
587
+ * Получен локальный стрим с камеры/микрофона, в том числе до подключения сигналинга.
588
+ * Повторяется после изменения видео (включение, выключение, смена камеры).
589
+ * Повторное событие может содержать тот же MediaStream с обновлёнными треками.
566
590
  */
567
591
  onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
568
592
  /**
@@ -744,7 +768,8 @@ export type ParamsObject = {
744
768
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
745
769
  onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
746
770
  /**
747
- * Звонок был завершен
771
+ * Звонок завершён локально. При hangup callback планируется сразу, ровно один раз, без ожидания сети.
772
+ * Доставляется асинхронно; Promise hangup отдельно ждёт известную SDK работу по завершению.
748
773
  */
749
774
  onHangup?: (type: HangupReason | Error, conversationId: string | null) => void;
750
775
  /**
@@ -933,6 +958,13 @@ export type ParamsObject = {
933
958
  * @param bandwidth текущая полоса пропускания, kbps
934
959
  */
935
960
  onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
961
+ /**
962
+ * Первое подключение к сигналингу или переподключение успешно применено к состоянию звонка.
963
+ * Звонок зарегистрирован под conversationId, локальное управление доступно, в том числе в зале ожидания.
964
+ * Событие не означает принятие звонка собеседником или готовность WebRTC.
965
+ * Callback вызывается асинхронно; к моменту вызова звонок может уже завершиться.
966
+ */
967
+ onSignalingConnected?: (conversationId: string) => void;
936
968
  /**
937
969
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
938
970
  *
@@ -1015,7 +1047,6 @@ export default abstract class Params {
1015
1047
  static set wssToken(value: string);
1016
1048
  static get signalingReconnectDelay(): number;
1017
1049
  static get signalingReconnectMaxDelay(): number;
1018
- static get signalingReconnectMaxCount(): number;
1019
1050
  static get signalingReconnectMaxDuration(): number;
1020
1051
  static get waitConnectionDelay(): number;
1021
1052
  static get waitResponseDelay(): number;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Параметры добавления пользователя в звонок
3
+ */
4
+ export interface AddParticipantParams {
5
+ /**
6
+ * @deprecated
7
+ */
8
+ showChatHistory?: boolean;
9
+ ttChat?: boolean;
10
+ /**
11
+ * Удалить юзера из бан-листа. Доступно только админу звонка
12
+ */
13
+ unban?: boolean;
14
+ /**
15
+ * JSON.stringify(\{show_chat_history: boolean\})
16
+ */
17
+ payload?: string;
18
+ }
@@ -1,7 +1,8 @@
1
+ import { StatPayload } from '../classes/stat/StatQueue';
1
2
  /**
2
3
  * Событие статистики SDK, которое получает `onClientStats`
3
4
  */
4
- export type ClientStatsEvent = Record<string, string | number | boolean | null> & {
5
+ export type ClientStatsEvent = StatPayload & {
5
6
  /** Имя события из `Stat`. У периодической статистики звонка его нет */
6
7
  name?: string;
7
8
  /** ID звонка, `null` — пока он неизвестен */
@@ -34,13 +34,15 @@ export interface FastHangupResponse {
34
34
  *
35
35
  * `reason` и `conversationId` идут в signaling hangup.
36
36
  * `onFastHangup` заменяет Calls API `vchat.hangupConversation`, если обработчик передан
37
- * (явный hangup/decline или delayed hangup во время init).
38
- * Если обработчик не передан, API hangup не вызывается — кроме закрытия вкладки (`pagehide`),
39
- * где SDK всегда шлёт beacon, и delayed hangup без handler.
37
+ * (явный hangup/decline, включая отмену инициализации).
38
+ * При `hangup` без обработчика SDK отправляет Calls API beacon, если серверный ID уже известен.
39
+ * При `declineCall` без обработчика остаётся только signaling hangup.
40
+ * На закрытии вкладки (`pagehide`) SDK всегда использует beacon вместо обработчика.
40
41
  */
41
42
  export interface HangupParams {
42
43
  /**
43
- * ID звонка. Если опущен — завершается текущий активный звонок.
44
+ * Текущий или исходный ID для локального hangup; declineCall требует текущий ID готового звонка.
45
+ * Без ID: активный готовый, затем первый готовый, а для hangup — также единственный готовящийся звонок.
44
46
  */
45
47
  conversationId?: string;
46
48
  /**
@@ -61,6 +63,6 @@ export interface HangupParams {
61
63
  * На `pagehide` не используется — SDK всегда отправляет `sendBeacon`.
62
64
  *
63
65
  * @param params Параметры запроса
64
- * @param signal AbortSignal текущего звонка, если он ещё жив на момент вызова
66
+ * @param signal При `hangup` — отдельный AbortSignal завершения, при `declineCall` — сигнал текущего звонка, если он есть
65
67
  */
66
68
  export type FastHangupHandler = (params: FastHangupParams, signal?: AbortSignal) => Promise<FastHangupResponse>;
@@ -40,9 +40,33 @@ export interface ICallStatLog extends Pick<CallStatReport, 'call_topology' | 'na
40
40
  is_simulcast?: boolean;
41
41
  concealed_silent_audio_samples?: number;
42
42
  concealment_audio_avg_size?: number;
43
+ /** Потери исходящего видео: 100 * ΣΔpacketsLost / (ΣΔpacketsLost + ΣΔpacketsSent), по парам SSRC со свежим RR */
43
44
  video_loss?: number;
45
+ /** Потери исходящего аудио: 100 * ΣΔpacketsLost / (ΣΔpacketsLost + ΣΔpacketsSent), по парам SSRC со свежим RR */
44
46
  audio_loss?: number;
47
+ /** Потери входящего видео за период, в процентах */
48
+ in_video_loss?: number;
49
+ /** Потери входящего аудио за период, в процентах */
50
+ in_audio_loss?: number;
51
+ /** Байты, отправленные по исходящим аудио потокам за период, включая шару звука */
52
+ audio_bytes_sent?: number;
53
+ /** Уровень исходящего звука в шкале 16-битного PCM, от 0 до 32767 */
54
+ audio_level?: number;
55
+ /** Битрейт исходящего видео без ретрансмитов, кибибит/с */
56
+ br_encode?: number;
57
+ /** Битрейт отправки видео камеры, кибибит/с */
58
+ br_transmit?: number;
59
+ /** Битрейт ретрансмитов видео камеры, кибибит/с */
60
+ br_retransmit?: number;
61
+ /** Кадры камеры, закодированные энкодером за период */
62
+ frames_encoded?: number;
45
63
  cpu_hardware_concurrency?: number;
46
64
  audio_tracks?: number;
47
- [k: string]: string | number | boolean | undefined;
65
+ /** Максимум участников за интервал между отправками */
66
+ participants_max?: number;
67
+ /** Фичи, включенные в любой момент интервала */
68
+ active_features?: string[];
69
+ /** Максимальная площадь окна приложения за интервал, в мегапикселях */
70
+ app_total_area_mpx_max?: number;
71
+ [k: string]: string | string[] | number | boolean | undefined;
48
72
  }
@@ -383,6 +383,8 @@ declare namespace SignalingMessage {
383
383
  conversation: Conversation;
384
384
  conversationParams: {
385
385
  serverTime: number;
386
+ /** Таймаут удаления неактивного участника сервером, мс. */
387
+ activityTimeout?: number;
386
388
  };
387
389
  isConcurrent: boolean;
388
390
  peerId: PeerId;
@@ -36,8 +36,14 @@ interface StatRtpOutboundVideo {
36
36
  framesSent?: number;
37
37
  framesPerSecond?: number;
38
38
  targetBitrate?: number;
39
+ /**
40
+ * Общее количество кадров, закодированных энкодером
41
+ */
42
+ framesEncoded?: number;
39
43
  }
40
44
  export interface StatRtp extends StatRtpOutboundVideo {
45
+ /** Время измерения, для remote-inbound-rtp — время получения RTCP Receiver Report */
46
+ timestamp: number;
41
47
  /**
42
48
  * Уникальный идентификатор источника синхронизации RTP
43
49
  */
@@ -65,6 +71,10 @@ export interface StatRtp extends StatRtpOutboundVideo {
65
71
  * Общее количество байтов, отправленных по этому потоку
66
72
  */
67
73
  bytesSent: number;
74
+ /**
75
+ * Общее количество байтов, отправленных повторно (ретрансмиты) по этому потоку
76
+ */
77
+ retransmittedBytesSent?: number;
68
78
  /**
69
79
  * Общее количество байтов заголовков, полученных по этому потоку
70
80
  */
@@ -73,6 +83,11 @@ export interface StatRtp extends StatRtpOutboundVideo {
73
83
  * Общее количество байтов заголовков, отправленных по этому потоку
74
84
  */
75
85
  headerBytesSent: number;
86
+ /**
87
+ * Уровень звука исходящего аудио потока в момент снятия статистики, от 0 до 1.
88
+ * Берется из media-source, у входящих потоков его нет.
89
+ */
90
+ audioLevel?: number;
76
91
  /**
77
92
  * Среднее значение джиттера в секундах
78
93
  * Джиттер — это вариация задержки в получении пакетов данных.
@@ -81,19 +96,15 @@ export interface StatRtp extends StatRtpOutboundVideo {
81
96
  /**
82
97
  * Общее количество потерянных пакетов
83
98
  */
84
- packetsLost: number;
99
+ packetsLost?: number;
85
100
  /**
86
101
  * Общее количество полученных пакетов
87
102
  */
88
- packetsReceived: number;
103
+ packetsReceived?: number;
89
104
  /**
90
105
  * Общее количество отправленных пакетов
91
106
  */
92
- packetsSent: number;
93
- /**
94
- * Доля потерянных пакетов
95
- */
96
- fractionLost: number;
107
+ packetsSent?: number;
97
108
  /**
98
109
  * Количество Picture Loss Indication (PLI) сообщений
99
110
  * PLI — это сообщения, указывающие на потерю кадров изображения.
@@ -113,6 +124,10 @@ export interface StatRtp extends StatRtpOutboundVideo {
113
124
  * Идентификатор пользователя, связанный с этим потоком
114
125
  */
115
126
  userId?: string;
127
+ /**
128
+ * Поток демонстрации экрана (быстрая шара), а не камеры
129
+ */
130
+ isScreenShare?: boolean;
116
131
  /**
117
132
  * Пропускная способность в битах в секунду
118
133
  */
@@ -1,143 +0,0 @@
1
- import EventEmitter from '../classes/EventEmitter';
2
- import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
3
- import { TCapabilities } from '../types/Capabilities';
4
- import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
5
- import { PerfStatReport } from '../types/PerfStatReporter';
6
- import { NetworkStatReport } from '../types/NetworkStatReport';
7
- import TransportTopology from '../enums/TransportTopology';
8
- import ConversationFeature from '../enums/ConversationFeature';
9
- import ConversationOption from '../enums/ConversationOption';
10
- import MediaOption from '../enums/MediaOption';
11
- import SignalingConnectionType from '../enums/SignalingConnectionType';
12
- import UserRole from '../enums/UserRole';
13
- import { JSONObject } from '../static/Json';
14
- import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
15
- import ConversationResponse from '../types/ConversationResponse';
16
- import MediaModifiers from '../types/MediaModifiers';
17
- import MediaSettings from '../types/MediaSettings';
18
- import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
19
- import MuteStates from '../types/MuteStates';
20
- import { CompositeUserId, ParticipantId, ParticipantStateData } from '../types/Participant';
21
- import { ParticipantLayout, RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
22
- import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
23
- import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse } from '../types/SignalingMessage';
24
- import { ChangeSimulcast } from '../types/ChangeSimulcast';
25
- import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
26
- import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
27
- /**
28
- * Параметры добавления пользователя в звонок
29
- */
30
- export interface AddParticipantParams {
31
- /**
32
- * @deprecated
33
- */
34
- showChatHistory?: boolean;
35
- ttChat?: boolean;
36
- /**
37
- * Удалить юзера из бан-листа. Доступно только админу звонка
38
- */
39
- unban?: boolean;
40
- /**
41
- * JSON.stringify(\{show_chat_history: boolean\})
42
- */
43
- payload?: string;
44
- }
45
- export declare class SignalingDisposedError extends Error {
46
- constructor(command?: string);
47
- }
48
- export declare class ProducerConnectionClosedError extends Error {
49
- constructor(command?: string);
50
- }
51
- /**
52
- * Should trigger SignalingEvent.NOTIFICATION on notification message and SignalingEvent.FAILED on error
53
- * https://wiki.odkl.ru/display/projects/Signaling+API#SignalingAPI-Notifications
54
- * @hidden
55
- */
56
- export default abstract class BaseSignaling extends EventEmitter {
57
- protected _abortSignal?: AbortSignal;
58
- /**
59
- * Устанавливает сигнал прерывания для запуска звонка, если не успели отменить до установки соединения с другим участником, то он больше ни как не будет использоваться
60
- * @param signal - Сигнал прерывания или undefined для очистки
61
- */
62
- setAbortSignal(signal: AbortSignal | undefined): void;
63
- abstract connect(connectionType: SignalingConnectionType, conversation?: ConversationResponse): Promise<SignalingMessage.Connection>;
64
- abstract dispose(cause?: Error): void;
65
- abstract hangup(reason: string): Promise<SignalingMessage | void>;
66
- abstract acceptCall(mediaSettings: MediaSettings): Promise<SignalingMessage>;
67
- abstract sendSdp(participantId: ParticipantId, sdp: RTCSessionDescriptionInit, extraPayload?: Record<string, any>): Promise<SignalingMessage>;
68
- abstract sendCandidate(participantId: ParticipantId, candidate: RTCIceCandidateInit): Promise<SignalingMessage>;
69
- abstract changeMediaSettings(mediaSettings: MediaSettings): Promise<SignalingMessage>;
70
- abstract changeParticipantState(state: ParticipantStateData, compositeUserId?: CompositeUserId): Promise<SignalingMessage>;
71
- abstract hold(hold: boolean, capabilities?: TCapabilities): Promise<SignalingMessage>;
72
- abstract putHandsDown(): Promise<SignalingMessage>;
73
- abstract addParticipant(externalIds: CompositeUserId[], params?: AddParticipantParams): Promise<SignalingMessage>;
74
- abstract addParticipantLegacy(participantIds: CompositeUserId[], params?: AddParticipantParams): Promise<SignalingMessage>;
75
- abstract removeParticipant(participantId: CompositeUserId, ban?: boolean): Promise<SignalingMessage>;
76
- abstract allocateConsumer(description: RTCSessionDescription | null, capabilities: TCapabilities): Promise<SignalingMessage>;
77
- abstract acceptProducer(description: RTCSessionDescriptionInit, ssrcs: string[], sessionId: string): Promise<SignalingMessage>;
78
- /**
79
- * @deprecated Use updateDisplayLayout instead
80
- */
81
- abstract changePriorities(priorities: {
82
- [key: string]: number;
83
- }): Promise<SignalingMessage | void>;
84
- abstract updateDisplayLayout(layouts: {
85
- [streamDesc: StreamDescriptionString]: ParticipantLayout | StopStream | RequestKeyFrame;
86
- }): Promise<SignalingMessage | void>;
87
- abstract addMovie(data: IAddMovieParams): Promise<SignalingMessage>;
88
- abstract updateMovie(data: IUpdateMovieData): Promise<SignalingMessage>;
89
- abstract removeMovie(data: any): Promise<SignalingMessage>;
90
- abstract startUrlSharing(sharedUrl: string): Promise<SignalingMessage>;
91
- abstract stopUrlSharing(): Promise<SignalingMessage>;
92
- abstract updateRooms(rooms: Record<any, any>[], assignRandomly?: boolean): Promise<SignalingMessage>;
93
- abstract activateRooms(roomIds: number[], deactivate: boolean): Promise<SignalingMessage>;
94
- abstract switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<SignalingMessage>;
95
- abstract getRooms(withParticipants: boolean): Promise<GetRoomsSignalingResponse>;
96
- abstract removeRooms(roomIds: number[]): Promise<SignalingMessage>;
97
- abstract startStream(data: IStartStreamData): Promise<SignalingMessage>;
98
- abstract stopStream(data: IStopStreamData): Promise<SignalingMessage>;
99
- abstract publishStream(data: IPublishStreamData): Promise<SignalingMessage>;
100
- abstract getRecordStatus(): Promise<SignalingMessage>;
101
- abstract switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
102
- abstract reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
103
- abstract reportSharingStat(report: SharingStatReport): Promise<SignalingMessage>;
104
- abstract reportNetworkStat(report: NetworkStatReport): Promise<SignalingMessage>;
105
- abstract chatMessage(message: string, participantId: CompositeUserId | null): Promise<SignalingMessage>;
106
- abstract chatHistory(count: number): Promise<SignalingMessage>;
107
- abstract customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
108
- abstract grantRoles(participantId: ParticipantId, roles: UserRole[], revoke: boolean): Promise<SignalingMessage>;
109
- abstract muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId: number | null): Promise<SignalingMessage>;
110
- abstract enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<SignalingMessage>;
111
- abstract pinParticipant(participantId: ParticipantId, unpin: boolean, roomId: number | null): Promise<SignalingMessage>;
112
- abstract updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
113
- abstract enableVideoSuspend(enabled: boolean): Promise<SignalingMessage>;
114
- abstract enableVideoSuspendSuggest(enabled: boolean): Promise<SignalingMessage>;
115
- abstract changeSimulcast(changeSimulcast: ChangeSimulcast): Promise<SignalingMessage>;
116
- abstract changeOptions(changes: {
117
- [key in ConversationOption]?: boolean;
118
- }): Promise<SignalingMessage>;
119
- abstract getWaitingHall(fromId: SignalingMessage.WaitingParticipantId | null, count?: number, backward?: boolean): Promise<SignalingMessage>;
120
- abstract promoteParticipant(participantId?: CompositeUserId, demote?: boolean): Promise<SignalingMessage>;
121
- abstract requestPromotion(unrequest: boolean): Promise<SignalingMessage>;
122
- abstract acceptPromotion(reject: boolean): Promise<SignalingMessage>;
123
- abstract feedback(key: string): Promise<SignalingMessage>;
124
- abstract getHandQueue(): Promise<SignalingMessage>;
125
- abstract setProducerNotificationDataChannel(dataChannel: RTCDataChannel): void;
126
- abstract setProducerCommandDataChannel(dataChannel: RTCDataChannel): void;
127
- abstract useCommandDataChannel(status: boolean): void;
128
- abstract resetProducerConnection(cause?: Error): void;
129
- abstract getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<SignalingMessage>;
130
- abstract getParticipants(externalIds: SignalingMessage.ExternalId[]): Promise<GetParticipantsSignalingResponse>;
131
- abstract getPeerId(): number | null;
132
- abstract startAsr(params: IAsrStartParams): Promise<SignalingMessage>;
133
- abstract stopAsr(params?: IAsrStopParams): Promise<SignalingMessage>;
134
- abstract requestAsr(request: boolean): Promise<SignalingMessage>;
135
- get ready(): boolean;
136
- setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
137
- requestRealloc(): void;
138
- setEndpoint(endpoint: string): void;
139
- setWebTransportEndpoint(endpoint: string | null): void;
140
- readyToSend(isReady?: boolean): void;
141
- requestTestMode(consumerCommand: string, producerCommand: string | null): Promise<SignalingMessage | void>;
142
- getNextCommandSequenceNumber(): number;
143
- }