@vkontakte/calls-sdk 2.8.11-dev.fdf6f999.0 → 2.8.12-beta.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 (41) hide show
  1. package/CallsSDK.d.ts +12 -24
  2. package/abstract/BaseApi.d.ts +4 -5
  3. package/abstract/BaseSignaling.d.ts +3 -4
  4. package/calls-sdk.cjs.js +9 -11
  5. package/calls-sdk.esm.js +6147 -5794
  6. package/classes/CallRegistry.d.ts +26 -0
  7. package/classes/Conversation.d.ts +48 -31
  8. package/classes/MediaSource.d.ts +7 -0
  9. package/classes/SpecListener.d.ts +5 -0
  10. package/classes/StatsLogger.d.ts +17 -5
  11. package/classes/codec/WorkerBase.d.ts +2 -0
  12. package/classes/stat/CallLifecycleStats.d.ts +47 -0
  13. package/classes/stat/ConversationStats.d.ts +5 -4
  14. package/classes/stat/FirstMediaSentProbe.d.ts +13 -0
  15. package/classes/stat/StatPings.d.ts +1 -2
  16. package/classes/stat/StatSignalingCommands.d.ts +1 -2
  17. package/classes/transport/BaseTransport.d.ts +7 -1
  18. package/classes/transport/DirectTransport.d.ts +6 -11
  19. package/classes/transport/ServerTransport.d.ts +1 -15
  20. package/classes/transport/Transport.d.ts +9 -21
  21. package/default/Api.d.ts +9 -8
  22. package/default/Signaling.d.ts +2 -0
  23. package/default/SignalingTransport.d.ts +3 -1
  24. package/enums/HangupType.d.ts +1 -0
  25. package/enums/SignalingNotification.d.ts +3 -1
  26. package/enums/Stat.d.ts +6 -1
  27. package/package.json +1 -1
  28. package/static/Capabilities.d.ts +5 -0
  29. package/static/External.d.ts +143 -76
  30. package/static/Params.d.ts +103 -100
  31. package/static/ParticipantConnectionStatusUtils.d.ts +16 -0
  32. package/types/Capabilities.d.ts +24 -0
  33. package/types/Conversation.d.ts +12 -2
  34. package/types/ExternalId.d.ts +1 -1
  35. package/types/Participant.d.ts +12 -1
  36. package/types/PushData.d.ts +3 -0
  37. package/types/SignalingMessage.d.ts +14 -1
  38. package/types/Statistics.d.ts +0 -4
  39. package/types/WebTransport.d.ts +3 -1
  40. package/static/DebugVideoStats.d.ts +0 -37
  41. package/types/VideoStreamDebug.d.ts +0 -5
@@ -23,7 +23,6 @@ import { ParticipantsStateList, ParticipantStateMapped } from '../types/Particip
23
23
  import { MediaType } from '../types/ParticipantStreamDescription';
24
24
  import { IRoomId, Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../types/Room';
25
25
  import { IAPIBaseUrl, IApiEnv } from '../types/Params';
26
- import type { VideoStreamDebugInfo } from '../types/VideoStreamDebug';
27
26
  import { VmojiError } from '../types/Vmoji';
28
27
  import { DebugMessageType } from './Debug';
29
28
  import { ParticipantStatus } from './External';
@@ -101,17 +100,15 @@ export type ParamsObject = {
101
100
  waitMessageDelay: number;
102
101
  /** @hidden */
103
102
  waitAnotherTabDelay: number;
103
+ /**
104
+ * Время ожидания регистрации вызываемого абонента после запуска исходящего звонка, ms.
105
+ * Если параметр не задан или равен 0, ожидание не ограничивается.
106
+ */
107
+ calleeUnavailableWaitingTime?: number;
104
108
  /** @hidden */
105
109
  debugLog: boolean;
106
110
  /** @hidden */
107
111
  debug: boolean;
108
- /**
109
- * Вкчлючает отправку на клиент статы по входящим/исходящим видео-потокам
110
- * @hidden
111
- *
112
- * _По умолчанию: `false`_
113
- */
114
- debugVideoStreams: boolean;
115
112
  /**
116
113
  * Выставляет таймаут в ms для fetch запросов от sdk
117
114
  * По умолчанию 5000 ms
@@ -264,13 +261,6 @@ export type ParamsObject = {
264
261
  perfStatReportEnabled: boolean;
265
262
  /** @hidden */
266
263
  callStatReportEnabled: boolean;
267
- /**
268
- * Включает логирование событий продуктовой статистики.
269
- *
270
- * _По умолчанию: `false`_
271
- * @hidden
272
- */
273
- clientEventsLoggingEnabled: boolean;
274
264
  /**
275
265
  * Отдавать приоритет кодеку H264 для исходящего видео
276
266
  *
@@ -357,7 +347,14 @@ export type ParamsObject = {
357
347
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
358
348
  */
359
349
  waitForAdminInGroupCalls: boolean;
350
+ /**
351
+ * Включает поддержку удержания звонка
352
+ */
360
353
  hold: boolean;
354
+ /**
355
+ * Максимальное количество параллельных звонков
356
+ */
357
+ maxParallelCalls: number;
361
358
  /**
362
359
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
363
360
  *
@@ -489,119 +486,126 @@ export type ParamsObject = {
489
486
  */
490
487
  webtransport: boolean;
491
488
  /**
492
- * Включить поддержку webtransport для сигналинга в FireFox
493
- * Отдельная ручка, так как есть проблемы сейчас с FF
489
+ * Ждать подтверждения от бэкенда для команд startStream/stopStream.
490
+ * При включении: reject без соединения, resolve/reject по ответу бэкенда,
491
+ * а при реконнекте — по стейту записи из Connection-сообщения.
494
492
  *
495
493
  * _По умолчанию: `false`_
496
494
  */
497
- webtransportFF: boolean;
495
+ waitForRecordResponse: boolean;
498
496
  /**
499
497
  * Включить поддержку прозрачного аудио
500
498
  *
501
499
  * _По умолчанию: `false`_
502
500
  */
503
501
  transparentAudio: boolean;
502
+ /**
503
+ * Включить получение обновлений состояния медийной сессии участников
504
+ *
505
+ * _По умолчанию: `false`_
506
+ */
507
+ enableSessionStateUpdates: boolean;
504
508
  /**
505
509
  * Получен локальный стрим с камеры/микрофона
506
510
  */
507
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
511
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
508
512
  /**
509
513
  * Локальный стрим изменился
510
514
  */
511
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
515
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
512
516
  /**
513
517
  * Локальный стрим с экрана добавлен/удалён
514
518
  */
515
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
519
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
516
520
  /**
517
521
  * Локальный стрим вимоджи добавлен/удалён
518
522
  */
519
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
523
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
520
524
  /**
521
525
  * Произошла ошибка вимоджи
522
526
  */
523
- onVmojiError?: (error: VmojiError) => void;
527
+ onVmojiError?: (error: VmojiError, conversationId?: string) => void;
524
528
  /**
525
529
  * Изменился статус локального соединения
526
530
  */
527
- onLocalStatus?: (status: ParticipantStatus) => void;
531
+ onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
528
532
  /**
529
533
  * Получен стрим собеседника.
530
534
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
531
535
  */
532
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
536
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
533
537
  /**
534
538
  * Cтрим собеседника приостановлен/возобновлен.
535
539
  */
536
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
540
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
537
541
  /**
538
542
  * Получен стрим с экрана собеседника.
539
543
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
540
544
  */
541
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
545
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
542
546
  /**
543
547
  * Получен стрим вимоджи собеседника.
544
548
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
545
549
  */
546
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
550
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
547
551
  /**
548
552
  * Получен стрим трансляция или мувик от собеседника.
549
553
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
550
554
  */
551
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
555
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
552
556
  /**
553
557
  * Получен собственный стрим трансляция или мувик.
554
558
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
555
559
  */
556
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
560
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
557
561
  /**
558
562
  * Получено обновление стрима или лайва от собеседника.
559
563
  */
560
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
564
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
561
565
  /**
562
566
  * Получено обновление собственного стрима или лайва.
563
567
  */
564
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
568
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
565
569
  /**
566
570
  * Начат звонок
567
571
  */
568
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
572
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
569
573
  /**
570
574
  * Начальный список участников для постраничного звонка
571
575
  */
572
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
576
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
573
577
  /**
574
578
  * Изменились данные стрима собеседника
575
579
  */
576
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
580
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
577
581
  /**
578
582
  * Изменились данные стрима собеседника
579
583
  */
580
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
584
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
581
585
  /**
582
586
  * Полученны данные по стримам (лайв/мувик) от собеседника
583
587
  */
584
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
588
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
585
589
  /**
586
590
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
587
591
  */
588
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
592
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
589
593
  /**
590
594
  * Полученны данные по собственным стримам (лайв/мувик)
591
595
  */
592
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
596
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
593
597
  /**
594
598
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
595
599
  */
596
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
600
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
597
601
  /**
598
602
  * Добавили участника
599
603
  */
600
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
604
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
601
605
  /**
602
606
  * Участник присоединился к звонку
603
607
  */
604
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
608
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
605
609
  /**
606
610
  * Получены данные по изменению локальных состояний со стороны админа
607
611
  * Например, принудительно опущена рука
@@ -609,19 +613,19 @@ export type ParamsObject = {
609
613
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
610
614
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
611
615
  */
612
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
616
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
613
617
  /**
614
618
  * Изменились данные состояний собеседника
615
619
  */
616
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
620
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
617
621
  /**
618
622
  * Изменились данные состояний нескольких собеседников
619
623
  */
620
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
624
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
621
625
  /**
622
626
  * Изменился статус соединения собеседников
623
627
  */
624
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
628
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
625
629
  /**
626
630
  * Разрешения на доступы были запрошены в браузере
627
631
  */
@@ -633,56 +637,56 @@ export type ParamsObject = {
633
637
  /**
634
638
  * Пользователь отключился от звонка
635
639
  */
636
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
640
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
637
641
  /**
638
642
  * Изменилось состояние звонка
639
643
  */
640
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
644
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
641
645
  /**
642
646
  * Изменилось состояние камеры или микрофона
643
647
  */
644
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
648
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
645
649
  /**
646
650
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
647
651
  */
648
- onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null) => void;
652
+ onMuteStates?: (muteStates: MuteStates, unmuteOptions: MediaOption[], mediaOptions: MediaOption[], muteAll: boolean, unmute: boolean, userId: ExternalParticipantId | null, adminId: ExternalParticipantId | null, stateUpdated?: boolean, requestedMedia?: MediaOption[], roomId?: number | null, conversationId?: string) => void;
649
653
  /**
650
654
  * Изменились роли собеседника в звонке
651
655
  */
652
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
656
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
653
657
  /**
654
658
  * Изменились свои роли в звонке
655
659
  */
656
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
660
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
657
661
  /**
658
662
  * Закрепляет/открепляет собеседника для всех
659
663
  */
660
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
664
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
661
665
  /**
662
666
  * Закрепляет/открепляет текущего пользователя у других собеседников
663
667
  */
664
- onLocalPin?: (unpin: boolean) => void;
668
+ onLocalPin?: (unpin: boolean, conversationId?: string) => void;
665
669
  /**
666
670
  * Изменились опции звонка
667
671
  */
668
- onOptionsChanged?: (options: ConversationOption[]) => void;
669
- onRateNeeded?: Function;
672
+ onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
673
+ onRateNeeded?: (conversationId?: string) => void;
670
674
  /**
671
675
  * Изменился говорящий в звонке
672
676
  */
673
- onSpeakerChanged?: (userId: ExternalParticipantId) => void;
677
+ onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
674
678
  /**
675
679
  * Громкость собеседников
676
680
  */
677
681
  onVolumesDetected?: (volumes: {
678
682
  uid: ExternalParticipantId;
679
683
  volume: number;
680
- }[]) => void;
684
+ }[], conversationId?: string) => void;
681
685
  /**
682
686
  * Громкость своего микрофона
683
687
  */
684
688
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
685
- onJoinStatus?: Function;
689
+ onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
686
690
  /**
687
691
  * Звонок был завершен
688
692
  */
@@ -690,12 +694,12 @@ export type ParamsObject = {
690
694
  /**
691
695
  * Входящий звонок был принят мной
692
696
  */
693
- onCallAccepted?: () => void;
697
+ onCallAccepted?: (conversationId?: string) => void;
694
698
  /**
695
699
  * Исходящий звонок был принят кем-то
696
700
  * @param userId
697
701
  */
698
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
702
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
699
703
  /**
700
704
  * Список устройств изменился
701
705
  */
@@ -712,25 +716,25 @@ export type ParamsObject = {
712
716
  /**
713
717
  * Получено сообщение чата
714
718
  */
715
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
719
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
716
720
  /**
717
721
  * Получены данные от собеседника
718
722
  */
719
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
723
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
720
724
  /**
721
725
  * Начата трансляция/запись звонка
722
726
  */
723
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
727
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
724
728
  /**
725
729
  * Закончена трансляция/запись звонка
726
730
  */
727
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
731
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
728
732
  /**
729
733
  * Состояние своей сети
730
734
  *
731
735
  * @param rating Оценка качества соединения от 0 до 1
732
736
  */
733
- onLocalNetworkStatusChanged?: (rating: number) => void;
737
+ onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
734
738
  /**
735
739
  * Состояние сети участников
736
740
  *
@@ -739,7 +743,7 @@ export type ParamsObject = {
739
743
  onNetworkStatusChanged?: (status: {
740
744
  uid: ExternalParticipantId;
741
745
  rating: number;
742
- }[]) => void;
746
+ }[], conversationId?: string) => void;
743
747
  /**
744
748
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
745
749
  */
@@ -767,74 +771,74 @@ export type ParamsObject = {
767
771
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
768
772
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
769
773
  */
770
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
774
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
771
775
  /**
772
776
  * Получен микшированный аудио стрим.
773
777
  * @hidden
774
778
  * @param stream стрим от WebRTC
775
779
  */
776
- onRemoteMixedAudioStream?: (stream: MediaStream) => void;
780
+ onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
777
781
  /**
778
782
  * Получена новая ссылка на звонок
779
783
  * @param joinLink токен присоединения к звонку
780
784
  */
781
- onJoinLinkChanged?: (joinLink: string) => void;
785
+ onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
782
786
  /**
783
787
  * Получено обновление списка сессионных залов
784
788
  * @param updates список обновлений по залам
785
789
  */
786
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
790
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
787
791
  /**
788
792
  * Получено обновление сессионных зало
789
793
  * @param eventTypes список событий
790
794
  * @param roomId номер сессионного зала
791
795
  * @param room сессионный зал
792
796
  */
793
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
797
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
794
798
  /**
795
799
  * Получение обновление списка участников в сессионном зале
796
800
  * @param update обновление списка участников
797
801
  */
798
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
802
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
799
803
  /**
800
804
  * Получение информации о смене зала
801
805
  * @param roomId номер сессионного зала
802
806
  */
803
- onRoomSwitched?: (roomId: number | null) => void;
807
+ onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
804
808
  /**
805
809
  * Установить id сессионного зала на старте звонка
806
810
  * @param roomId номер сессионного зала
807
811
  */
808
- onRoomStart?: (roomId: number | null) => void;
812
+ onRoomStart?: (roomId: number | null, conversationId?: string) => void;
809
813
  /**
810
814
  * Получены новые реакции в звонке
811
815
  * @param feedback массив с реакциями
812
816
  */
813
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
817
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
814
818
  /**
815
819
  * Изменился список ролей, которым доступны ConversationFeatures
816
820
  *
817
821
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
818
822
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
819
823
  */
820
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
824
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
821
825
  /**
822
826
  * Изменился Vmoji-аватар пользователя
823
827
  * @param externalId Id пользователя, у которого изменился аватар
824
828
  */
825
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
829
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
826
830
  /**
827
831
  * Начата текстовая расшифровка звонка
828
832
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
829
833
  * @param movieId Id расшифровки
830
834
  * @param roomId Id комнаты
831
835
  */
832
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
836
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
833
837
  /**
834
838
  * Закончена текстовая расшифровка звонка
835
839
  * @param roomId Id комнаты
836
840
  */
837
- onAsrStopped?: (roomId: number | null) => void;
841
+ onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
838
842
  /**
839
843
  * Получена расшифровка речи
840
844
  * @param id Id пользователя, произнесшего реплику
@@ -842,56 +846,53 @@ export type ParamsObject = {
842
846
  * @param timestamp Время расшифровки
843
847
  * @param duration Длительность реплики в расшифровке
844
848
  */
845
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
849
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
846
850
  /**
847
851
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
848
852
  * @param data Начальная информация по ASR
849
853
  * @param roomId Id Комнаты
850
854
  */
851
- onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
855
+ onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
852
856
  /**
853
857
  * Админ начал/остановил совместное использование стороннего web-приложения
854
858
  * @param userId id участника-админа
855
859
  * @param sharedUrl url страницы
856
860
  */
857
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
861
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
858
862
  /**
859
863
  * Изменился id участника (деанонимизация)
860
864
  * @param prevId
861
865
  * @param newId
862
866
  */
863
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
867
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
864
868
  /**
865
869
  * Предложение включить режим автоматического отключения приёма видео
866
870
  * в плохой сети
867
871
  * @param bandwidth текущая полоса пропускания, kbps
868
872
  */
869
- onVideoSuspendSuggest?: (bandwidth: number) => void;
873
+ onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
870
874
  /**
871
875
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
872
876
  *
873
877
  * @param adminParticipantId админ, одобривший повышение
874
878
  */
875
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
879
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
876
880
  /**
877
881
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
878
882
  *
879
883
  * @param demoted участник разжалован
880
884
  */
881
- onPromoted?: (demoted: boolean) => void;
885
+ onPromoted?: (demoted: boolean, conversationId?: string) => void;
882
886
  /**
883
- * Собеседник подключился к сигналлингу
887
+ * Активным установлен определенный звонок
888
+ *
889
+ * @param conversationId ID звонка
884
890
  */
885
- onPeerRegistered?: () => void;
891
+ onCallActive?: (conversationId: string) => void;
886
892
  /**
887
- * Дебаг информация по видеопотоку, отформатированная SDK для отображения в клиенте.
888
- *
889
- * Работает только если включен `debugVideoStreams`.
890
- *
891
- * @param externalParticipantId Id участника, к которому относится видеопоток
892
- * @param info Структурированные данные о дебаге видеопотока
893
+ * Собеседник подключился к сигналлингу
893
894
  */
894
- onVideoStreamDebug?: (externalParticipantId: ExternalParticipantId, info: VideoStreamDebugInfo) => void;
895
+ onPeerRegistered?: (conversationId?: string) => void;
895
896
  };
896
897
  export default abstract class Params {
897
898
  private static _params;
@@ -942,8 +943,8 @@ export default abstract class Params {
942
943
  static get waitResponseDelay(): number;
943
944
  static get waitMessageDelay(): number;
944
945
  static get waitAnotherTabDelay(): number;
946
+ static get calleeUnavailableWaitingTime(): number | undefined;
945
947
  static get debugLog(): boolean;
946
- static get debugVideoStreams(): false | ((externalParticipantId: ExternalParticipantId, info: VideoStreamDebugInfo) => void) | undefined;
947
948
  static get forceRelayPolicy(): boolean;
948
949
  static set forceRelayPolicy(value: boolean);
949
950
  static get videoMinWidth(): number;
@@ -982,7 +983,6 @@ export default abstract class Params {
982
983
  static get networkStatisticsInterval(): number;
983
984
  static get perfStatReportEnabled(): boolean;
984
985
  static get callStatReportEnabled(): boolean;
985
- static get clientEventsLoggingEnabled(): boolean;
986
986
  static get enableLogPerfStatReport(): boolean;
987
987
  static get asrDataChannel(): boolean;
988
988
  static get consumerScreenDataChannelPacketSize(): number;
@@ -1002,6 +1002,7 @@ export default abstract class Params {
1002
1002
  static get addParticipant(): boolean;
1003
1003
  static get waitForAdminInGroupCalls(): boolean;
1004
1004
  static get hold(): boolean;
1005
+ static get maxParallelCalls(): number;
1005
1006
  static get participantListChunkInitIndex(): number;
1006
1007
  static get participantListChunkInitCount(): number | null;
1007
1008
  static get filterObservers(): boolean;
@@ -1023,8 +1024,9 @@ export default abstract class Params {
1023
1024
  static get enableVideoEffectsFpsDegradation(): boolean;
1024
1025
  static get simulcast(): boolean;
1025
1026
  static get webtransport(): boolean;
1026
- static get webtransportFF(): boolean;
1027
+ static get waitForRecordResponse(): boolean;
1027
1028
  static get transparentAudio(): boolean;
1029
+ static get enableSessionStateUpdates(): boolean;
1028
1030
  static toJSON(): {
1029
1031
  apiKey: string;
1030
1032
  apiEnv: string;
@@ -1058,7 +1060,8 @@ export default abstract class Params {
1058
1060
  switchVideoAtBadNetwork: boolean;
1059
1061
  simulcast: boolean;
1060
1062
  webtransport: boolean;
1061
- webtransportFF: boolean;
1063
+ waitForRecordResponse: boolean;
1062
1064
  transparentAudio: boolean;
1065
+ enableSessionStateUpdates: boolean;
1063
1066
  };
1064
1067
  }
@@ -0,0 +1,16 @@
1
+ import { ParticipantConnectionStatus, ParticipantSessionState } from '../types/Participant';
2
+ import { ParticipantStatus } from './External';
3
+ import TransportState from '../enums/TransportState';
4
+ type StatusTransition = {
5
+ status: ParticipantStatus;
6
+ shouldNotify: boolean;
7
+ };
8
+ declare namespace ParticipantConnectionStatusUtils {
9
+ function create(status?: Partial<ParticipantConnectionStatus> | null): ParticipantConnectionStatus;
10
+ function fromTransportState(state?: TransportState): ParticipantStatus | null;
11
+ function computeEffective(status: ParticipantConnectionStatus): ParticipantStatus;
12
+ function setSessionState(status: ParticipantConnectionStatus, sessionState?: ParticipantSessionState, sessionStateConnectedBySpeaker?: boolean): StatusTransition;
13
+ function setTransport(status: ParticipantConnectionStatus, transport: ParticipantStatus): StatusTransition;
14
+ function setSessionStateApplicable(status: ParticipantConnectionStatus, applicable: boolean): StatusTransition;
15
+ }
16
+ export default ParticipantConnectionStatusUtils;
@@ -0,0 +1,24 @@
1
+ export type TCapabilities = {
2
+ estimatedPerformanceIndex: number;
3
+ audioMix: boolean;
4
+ consumerUpdate: boolean;
5
+ producerNotificationDataChannelVersion: number;
6
+ producerCommandDataChannelVersion: number;
7
+ consumerScreenDataChannelVersion: number;
8
+ producerScreenDataChannelVersion: number;
9
+ asrDataChannelVersion: number;
10
+ animojiDataChannelVersion: number;
11
+ animojiBackendRender: boolean;
12
+ onDemandTracks: boolean;
13
+ unifiedPlan: boolean;
14
+ singleSession: boolean;
15
+ videoTracksCount: number;
16
+ red: boolean;
17
+ audioShare: boolean;
18
+ fastScreenShare: boolean;
19
+ videoSuspend: boolean;
20
+ simulcast: boolean;
21
+ consumerFastScreenShare: boolean;
22
+ consumerFastScreenShareQualityOnDemand: boolean;
23
+ transparentAudio: boolean;
24
+ };
@@ -7,7 +7,8 @@ import MediaOption from '../enums/MediaOption';
7
7
  import UserRole from '../enums/UserRole';
8
8
  import { AsrInfo } from './Asr';
9
9
  import { IFeaturesPerRole } from './ConversationFeature';
10
- import { ExternalId, ExternalParticipantId } from './ExternalId';
10
+ import { ExternalId, ExternalParticipantId, ExternalUserId } from './ExternalId';
11
+ import { FastJoinHandler } from './FastJoin';
11
12
  import { FastStartHandler } from './FastStart';
12
13
  import MediaModifiers from './MediaModifiers';
13
14
  import MuteStates from './MuteStates';
@@ -84,6 +85,16 @@ export type ConversationOnStartParams = {
84
85
  onFastStart?: FastStartHandler;
85
86
  conversationId?: string;
86
87
  };
88
+ export type ConversationOnJoinParams = {
89
+ conversationId?: string;
90
+ mediaOptions: MediaOption[];
91
+ chatId?: string;
92
+ joinLink?: string;
93
+ observedIds?: ExternalUserId[];
94
+ payload?: string;
95
+ onFastJoin?: FastJoinHandler;
96
+ anonymous?: boolean;
97
+ };
87
98
  export type StartConversationParams = {
88
99
  opponentIds?: OkUserId[];
89
100
  opponentType: CallType;
@@ -94,7 +105,6 @@ export type StartConversationParams = {
94
105
  requireAuthToJoin?: boolean;
95
106
  onlyAdminCanShareMovie?: boolean;
96
107
  externalIds?: ExternalId[];
97
- startedTime: number;
98
108
  onFastStart?: FastStartHandler;
99
109
  conversationId?: string;
100
110
  };