@vkontakte/calls-sdk 2.8.11-dev.5500645b.0 → 2.8.11-dev.553e9358.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 (76) hide show
  1. package/CallsSDK.d.ts +59 -27
  2. package/abstract/BaseApi.d.ts +3 -5
  3. package/abstract/BaseSignaling.d.ts +5 -7
  4. package/calls-sdk.cjs.js +16 -14
  5. package/calls-sdk.esm.js +11903 -14
  6. package/classes/AudioFix.d.ts +5 -1
  7. package/classes/AudioOutput.d.ts +5 -1
  8. package/classes/CallRegistry.d.ts +25 -0
  9. package/classes/Conversation.d.ts +23 -12
  10. package/classes/ConversationResponseValidator.d.ts +3 -0
  11. package/classes/DebugInfo.d.ts +3 -0
  12. package/classes/DisplayLayoutRequester.d.ts +39 -0
  13. package/classes/ExternalIdCache.d.ts +19 -0
  14. package/classes/MediaSource.d.ts +12 -1
  15. package/classes/ParticipantIdRegistry.d.ts +3 -0
  16. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  17. package/classes/SignalingActor.d.ts +3 -1
  18. package/classes/SpeakerDetector.d.ts +2 -1
  19. package/classes/SpecListener.d.ts +10 -1
  20. package/classes/StatsLogger.d.ts +29 -0
  21. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  22. package/classes/asr/AsrReceiver.d.ts +3 -1
  23. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  24. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  25. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  26. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  27. package/classes/codec/WorkerBase.d.ts +5 -0
  28. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  29. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  30. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  31. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  32. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  33. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  34. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  35. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  36. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  37. package/classes/stat/ConversationStats.d.ts +21 -0
  38. package/classes/stat/StatAggregator.d.ts +6 -6
  39. package/classes/stat/StatFirstMediaReceived.d.ts +6 -2
  40. package/classes/stat/StatPings.d.ts +9 -9
  41. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  42. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  43. package/classes/transport/BaseTransport.d.ts +1 -1
  44. package/classes/transport/DirectStatReporter.d.ts +3 -1
  45. package/classes/transport/DirectTransport.d.ts +9 -6
  46. package/classes/transport/PerfStatReporter.d.ts +5 -1
  47. package/classes/transport/ServerTransport.d.ts +10 -10
  48. package/classes/transport/Transport.d.ts +12 -30
  49. package/default/Api.d.ts +4 -14
  50. package/default/Signaling.d.ts +40 -45
  51. package/default/SignalingTransport.d.ts +68 -0
  52. package/enums/HangupType.d.ts +2 -1
  53. package/enums/SignalingNotification.d.ts +2 -1
  54. package/enums/TransportState.d.ts +10 -0
  55. package/enums/TransportTopology.d.ts +5 -0
  56. package/package.json +1 -1
  57. package/static/Capabilities.d.ts +5 -0
  58. package/static/Debug.d.ts +27 -8
  59. package/static/External.d.ts +146 -75
  60. package/static/Params.d.ts +97 -86
  61. package/static/Utils.d.ts +3 -2
  62. package/static/WebRTCUtils.d.ts +7 -4
  63. package/types/Capabilities.d.ts +24 -0
  64. package/types/Conversation.d.ts +1 -1
  65. package/types/FastStart.d.ts +1 -0
  66. package/types/Participant.d.ts +1 -0
  67. package/types/ParticipantLayout.d.ts +33 -0
  68. package/types/PerfStatReporter.d.ts +2 -1
  69. package/types/SignalingMessage.d.ts +9 -1
  70. package/types/Statistics.d.ts +1 -5
  71. package/types/WebTransport.d.ts +5 -0
  72. package/utils/DebugStorage.d.ts +100 -1
  73. package/classes/Logger.d.ts +0 -41
  74. package/classes/stat/EventMetricsService.d.ts +0 -9
  75. package/static/ConversationDebugLogger.d.ts +0 -13
  76. package/static/DebugVideoStats.d.ts +0 -22
@@ -104,13 +104,6 @@ export type ParamsObject = {
104
104
  debugLog: boolean;
105
105
  /** @hidden */
106
106
  debug: boolean;
107
- /**
108
- * Вкчлючает отправку на клиент статы по входящим/исходящим видео-потокам
109
- * @hidden
110
- *
111
- * _По умолчанию: `false`_
112
- */
113
- debugVideoStreams: boolean;
114
107
  /**
115
108
  * Выставляет таймаут в ms для fetch запросов от sdk
116
109
  * По умолчанию 5000 ms
@@ -313,6 +306,12 @@ export type ParamsObject = {
313
306
  * _По умолчанию: `30`_
314
307
  */
315
308
  videoTracksCount: number;
309
+ /**
310
+ * Минимальный интервал отправки diff для requestDisplayLayout в миллисекундах.
311
+ *
312
+ * _По умолчанию: `250`_
313
+ */
314
+ requestDisplayLayoutThrottleMs: number;
316
315
  /** @hidden */
317
316
  movieShare: boolean;
318
317
  /** @hidden */
@@ -350,7 +349,14 @@ export type ParamsObject = {
350
349
  * Включает поддержку режима WAIT_FOR_ADMIN в звонках.
351
350
  */
352
351
  waitForAdminInGroupCalls: boolean;
352
+ /**
353
+ * Включает поддержку удержания звонка
354
+ */
353
355
  hold: boolean;
356
+ /**
357
+ * Максимальное количество параллельных звонков
358
+ */
359
+ maxParallelCalls: number;
354
360
  /**
355
361
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
356
362
  *
@@ -497,104 +503,104 @@ export type ParamsObject = {
497
503
  /**
498
504
  * Получен локальный стрим с камеры/микрофона
499
505
  */
500
- onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
506
+ onLocalStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
501
507
  /**
502
508
  * Локальный стрим изменился
503
509
  */
504
- onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind) => void;
510
+ onLocalStreamUpdate?: (mediaSettings: MediaSettings, kind: MediaTrackKind, conversationId?: string) => void;
505
511
  /**
506
512
  * Локальный стрим с экрана добавлен/удалён
507
513
  */
508
- onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
514
+ onScreenStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
509
515
  /**
510
516
  * Локальный стрим вимоджи добавлен/удалён
511
517
  */
512
- onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings) => void;
518
+ onVmojiStream?: (stream: MediaStream | null, mediaSettings: MediaSettings, conversationId?: string) => void;
513
519
  /**
514
520
  * Произошла ошибка вимоджи
515
521
  */
516
- onVmojiError?: (error: VmojiError) => void;
522
+ onVmojiError?: (error: VmojiError, conversationId?: string) => void;
517
523
  /**
518
524
  * Изменился статус локального соединения
519
525
  */
520
- onLocalStatus?: (status: ParticipantStatus) => void;
526
+ onLocalStatus?: (status: ParticipantStatus, conversationId?: string) => void;
521
527
  /**
522
528
  * Получен стрим собеседника.
523
529
  * Если сервер закончил стримить собеседника, вместо стрима будет передан null
524
530
  */
525
- onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
531
+ onRemoteStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
526
532
  /**
527
533
  * Cтрим собеседника приостановлен/возобновлен.
528
534
  */
529
- onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean) => void;
535
+ onRemoteStreamSuspended?: (userId: ExternalParticipantId, mediaType: MediaType, suspended: boolean, conversationId?: string) => void;
530
536
  /**
531
537
  * Получен стрим с экрана собеседника.
532
538
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
533
539
  */
534
- onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
540
+ onRemoteScreenStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
535
541
  /**
536
542
  * Получен стрим вимоджи собеседника.
537
543
  * Если сервер закончил стримить вимоджи собеседника, вместо стрима будет передан null
538
544
  */
539
- onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null) => void;
545
+ onRemoteVmojiStream?: (userId: ExternalParticipantId, stream: MediaStream | null, conversationId?: string) => void;
540
546
  /**
541
547
  * Получен стрим трансляция или мувик от собеседника.
542
548
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
543
549
  */
544
- onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
550
+ onRemoteLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
545
551
  /**
546
552
  * Получен собственный стрим трансляция или мувик.
547
553
  * Если сервер закончил стримить экран собеседника, вместо стрима будет передан null
548
554
  */
549
- onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData) => void;
555
+ onLocalLive?: (userId: ExternalParticipantId, data: IOnRemoteMovieData, conversationId?: string) => void;
550
556
  /**
551
557
  * Получено обновление стрима или лайва от собеседника.
552
558
  */
553
- onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
559
+ onRemoteLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
554
560
  /**
555
561
  * Получено обновление собственного стрима или лайва.
556
562
  */
557
- onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState) => void;
563
+ onLocalLiveUpdate?: (userId: ExternalParticipantId, data: ISharedMovieState, conversationId?: string) => void;
558
564
  /**
559
565
  * Начат звонок
560
566
  */
561
- onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms) => void;
567
+ onConversation?: (userId: ExternalParticipantId, mediaModifiers: MediaModifiers, muteStates: MuteStates, participants: ExternalParticipant[], rooms?: Rooms, conversationId?: string) => void;
562
568
  /**
563
569
  * Начальный список участников для постраничного звонка
564
570
  */
565
- onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk) => void;
571
+ onConversationParticipantListChunk?: (chunk: ExternalParticipantListChunk, conversationId?: string) => void;
566
572
  /**
567
573
  * Изменились данные стрима собеседника
568
574
  */
569
- onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null) => void;
575
+ onRemoteMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
570
576
  /**
571
577
  * Изменились данные стрима собеседника
572
578
  */
573
- onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings) => void;
579
+ onLocalMediaSettings?: (userId: ExternalParticipantId, mediaSettings: MediaSettings, conversationId?: string) => void;
574
580
  /**
575
581
  * Полученны данные по стримам (лайв/мувик) от собеседника
576
582
  */
577
- onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
583
+ onRemoteSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
578
584
  /**
579
585
  * Полученны данные по остановленным стримам (лайв/мувик) от собеседника
580
586
  */
581
- onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
587
+ onRemoteSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
582
588
  /**
583
589
  * Полученны данные по собственным стримам (лайв/мувик)
584
590
  */
585
- onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId) => void;
591
+ onLocalSharedMovieInfo?: (userId: ExternalParticipantId, sharedMovieInfo: ISharedMovieInfo, roomId?: IRoomId, conversationId?: string) => void;
586
592
  /**
587
593
  * Полученны данные по собственным остановленным стримам (лайв/мувик)
588
594
  */
589
- onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId) => void;
595
+ onLocalSharedMovieStoppedInfo?: (userId: ExternalParticipantId, sharedMovieStoppedInfo: ISharedMovieStoppedInfo, roomId?: IRoomId, conversationId?: string) => void;
590
596
  /**
591
597
  * Добавили участника
592
598
  */
593
- onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
599
+ onParticipantAdded?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
594
600
  /**
595
601
  * Участник присоединился к звонку
596
602
  */
597
- onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers) => void;
603
+ onParticipantJoined?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers, conversationId?: string) => void;
598
604
  /**
599
605
  * Получены данные по изменению локальных состояний со стороны админа
600
606
  * Например, принудительно опущена рука
@@ -602,19 +608,19 @@ export type ParamsObject = {
602
608
  * @param participantState Полный объект состояния участника, полученный от SDK/сервера.
603
609
  * @param global `true` – действие глобальное (для всех участников), `false` – действие локальное (только у текущего пользователя).
604
610
  */
605
- onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean) => void;
611
+ onLocalParticipantState?: (participantState: ParticipantStateMapped, global: boolean, conversationId?: string) => void;
606
612
  /**
607
613
  * Изменились данные состояний собеседника
608
614
  */
609
- onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null) => void;
615
+ onRemoteParticipantState?: (userId: ExternalParticipantId, participantState: ParticipantStateMapped, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
610
616
  /**
611
617
  * Изменились данные состояний нескольких собеседников
612
618
  */
613
- onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId) => void;
619
+ onRemoteParticipantsState?: (stateList: ParticipantsStateList, roomId?: IRoomId, conversationId?: string) => void;
614
620
  /**
615
621
  * Изменился статус соединения собеседников
616
622
  */
617
- onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any) => void;
623
+ onRemoteStatus?: (userIds: ExternalParticipantId[], status: ParticipantStatus, data: any, conversationId?: string) => void;
618
624
  /**
619
625
  * Разрешения на доступы были запрошены в браузере
620
626
  */
@@ -626,56 +632,56 @@ export type ParamsObject = {
626
632
  /**
627
633
  * Пользователь отключился от звонка
628
634
  */
629
- onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null) => void;
635
+ onRemoteRemoved?: (userId: ExternalParticipantId, markers: ExternalParticipantListMarkers | null, conversationId?: string) => void;
630
636
  /**
631
637
  * Изменилось состояние звонка
632
638
  */
633
- onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData) => void;
639
+ onCallState?: (isCallActive: boolean, canAddParticipants: boolean, conversation: ConversationData, conversationId?: string) => void;
634
640
  /**
635
641
  * Изменилось состояние камеры или микрофона
636
642
  */
637
- onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean) => void;
643
+ onDeviceSwitched?: (mediaOption: MediaOption, enabled: boolean, conversationId?: string) => void;
638
644
  /**
639
645
  * Изменились состояния устройств пользователя или разрешения включать камеру/микрофон
640
646
  */
641
- 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;
647
+ 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;
642
648
  /**
643
649
  * Изменились роли собеседника в звонке
644
650
  */
645
- onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean) => void;
651
+ onRolesChanged?: (userId: ExternalParticipantId, roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
646
652
  /**
647
653
  * Изменились свои роли в звонке
648
654
  */
649
- onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean) => void;
655
+ onLocalRolesChanged?: (roles: UserRole[], isInitial?: boolean, conversationId?: string) => void;
650
656
  /**
651
657
  * Закрепляет/открепляет собеседника для всех
652
658
  */
653
- onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null) => void;
659
+ onPinnedParticipant?: (userId: ExternalParticipantId, unpin: boolean, markers: ExternalParticipantListMarkers | null, roomId?: number | null, conversationId?: string) => void;
654
660
  /**
655
661
  * Закрепляет/открепляет текущего пользователя у других собеседников
656
662
  */
657
- onLocalPin?: (unpin: boolean) => void;
663
+ onLocalPin?: (unpin: boolean, conversationId?: string) => void;
658
664
  /**
659
665
  * Изменились опции звонка
660
666
  */
661
- onOptionsChanged?: (options: ConversationOption[]) => void;
662
- onRateNeeded?: Function;
667
+ onOptionsChanged?: (options: ConversationOption[], conversationId?: string) => void;
668
+ onRateNeeded?: (conversationId?: string) => void;
663
669
  /**
664
670
  * Изменился говорящий в звонке
665
671
  */
666
- onSpeakerChanged?: (userId: ExternalParticipantId) => void;
672
+ onSpeakerChanged?: (userId: ExternalParticipantId, conversationId?: string) => void;
667
673
  /**
668
674
  * Громкость собеседников
669
675
  */
670
676
  onVolumesDetected?: (volumes: {
671
677
  uid: ExternalParticipantId;
672
678
  volume: number;
673
- }[]) => void;
679
+ }[], conversationId?: string) => void;
674
680
  /**
675
681
  * Громкость своего микрофона
676
682
  */
677
683
  onLocalVolume?: (volume: number, isMicEnabled: boolean) => void;
678
- onJoinStatus?: Function;
684
+ onJoinStatus?: (available: boolean, chatId: string, conversationId?: string) => void;
679
685
  /**
680
686
  * Звонок был завершен
681
687
  */
@@ -683,12 +689,12 @@ export type ParamsObject = {
683
689
  /**
684
690
  * Входящий звонок был принят мной
685
691
  */
686
- onCallAccepted?: () => void;
692
+ onCallAccepted?: (conversationId?: string) => void;
687
693
  /**
688
694
  * Исходящий звонок был принят кем-то
689
695
  * @param userId
690
696
  */
691
- onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
697
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities, conversationId?: string) => void;
692
698
  /**
693
699
  * Список устройств изменился
694
700
  */
@@ -705,25 +711,25 @@ export type ParamsObject = {
705
711
  /**
706
712
  * Получено сообщение чата
707
713
  */
708
- onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean) => void;
714
+ onChatMessage?: (message: string, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
709
715
  /**
710
716
  * Получены данные от собеседника
711
717
  */
712
- onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean) => void;
718
+ onCustomData?: (data: JSONObject, from: ExternalParticipantId, direct: boolean, conversationId?: string) => void;
713
719
  /**
714
720
  * Начата трансляция/запись звонка
715
721
  */
716
- onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null) => void;
722
+ onRecordStarted?: (initiator: ExternalParticipantId, movieId: number, startTime: number, type: 'STREAM' | 'RECORD', externalMovieId?: string, externalOwnerId?: string, roomId?: number | null, conversationId?: string) => void;
717
723
  /**
718
724
  * Закончена трансляция/запись звонка
719
725
  */
720
- onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null) => void;
726
+ onRecordStopped?: (roomId: number | null, stopBy: ExternalParticipantId | null, conversationId?: string) => void;
721
727
  /**
722
728
  * Состояние своей сети
723
729
  *
724
730
  * @param rating Оценка качества соединения от 0 до 1
725
731
  */
726
- onLocalNetworkStatusChanged?: (rating: number) => void;
732
+ onLocalNetworkStatusChanged?: (rating: number, conversationId?: string) => void;
727
733
  /**
728
734
  * Состояние сети участников
729
735
  *
@@ -732,11 +738,17 @@ export type ParamsObject = {
732
738
  onNetworkStatusChanged?: (status: {
733
739
  uid: ExternalParticipantId;
734
740
  rating: number;
735
- }[]) => void;
741
+ }[], conversationId?: string) => void;
736
742
  /**
737
743
  * Получено отладочное сообщение. Работает только при выключенном режиме отладки
738
744
  */
739
745
  onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
746
+ /**
747
+ * Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
748
+ */
749
+ onDebugMessageWithContext?: (type: DebugMessageType, context: {
750
+ conversationId: string | null;
751
+ }, ...args: any[]) => void;
740
752
  /**
741
753
  * Статистика звонка
742
754
  */
@@ -754,74 +766,74 @@ export type ParamsObject = {
754
766
  * @param addedParticipantIds Некоторое количество участников, добавленных в зал
755
767
  * @param removedParticipantIds Некоторое количество участников, убранных из зала
756
768
  */
757
- onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[]) => void;
769
+ onChatRoomUpdated?: (eventType: ChatRoomEventType, totalCount: number, firstParticipants: ExternalId[], addedParticipantIds: ExternalId[], removedParticipantIds: ExternalId[], conversationId?: string) => void;
758
770
  /**
759
771
  * Получен микшированный аудио стрим.
760
772
  * @hidden
761
773
  * @param stream стрим от WebRTC
762
774
  */
763
- onRemoteMixedAudioStream?: (stream: MediaStream) => void;
775
+ onRemoteMixedAudioStream?: (stream: MediaStream, conversationId?: string) => void;
764
776
  /**
765
777
  * Получена новая ссылка на звонок
766
778
  * @param joinLink токен присоединения к звонку
767
779
  */
768
- onJoinLinkChanged?: (joinLink: string) => void;
780
+ onJoinLinkChanged?: (joinLink: string, conversationId?: string) => void;
769
781
  /**
770
782
  * Получено обновление списка сессионных залов
771
783
  * @param updates список обновлений по залам
772
784
  */
773
- onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>) => void;
785
+ onRoomsUpdated?: (updates: Partial<Record<RoomsEventType, RoomsUpdate>>, conversationId?: string) => void;
774
786
  /**
775
787
  * Получено обновление сессионных зало
776
788
  * @param eventTypes список событий
777
789
  * @param roomId номер сессионного зала
778
790
  * @param room сессионный зал
779
791
  */
780
- onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null) => void;
792
+ onRoomUpdated?: (eventTypes: RoomsEventType[], roomId: number, room: Room | null, deactivate: boolean | null, conversationId?: string) => void;
781
793
  /**
782
794
  * Получение обновление списка участников в сессионном зале
783
795
  * @param update обновление списка участников
784
796
  */
785
- onRoomParticipantsUpdated?: (update: RoomParticipantUpdate) => void;
797
+ onRoomParticipantsUpdated?: (update: RoomParticipantUpdate, conversationId?: string) => void;
786
798
  /**
787
799
  * Получение информации о смене зала
788
800
  * @param roomId номер сессионного зала
789
801
  */
790
- onRoomSwitched?: (roomId: number | null) => void;
802
+ onRoomSwitched?: (roomId: number | null, conversationId?: string) => void;
791
803
  /**
792
804
  * Установить id сессионного зала на старте звонка
793
805
  * @param roomId номер сессионного зала
794
806
  */
795
- onRoomStart?: (roomId: number | null) => void;
807
+ onRoomStart?: (roomId: number | null, conversationId?: string) => void;
796
808
  /**
797
809
  * Получены новые реакции в звонке
798
810
  * @param feedback массив с реакциями
799
811
  */
800
- onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null) => void;
812
+ onFeedback?: (feedback: IFeedbackExternal[], roomId: number | null, conversationId?: string) => void;
801
813
  /**
802
814
  * Изменился список ролей, которым доступны ConversationFeatures
803
815
  *
804
816
  * @param featuresPerRole Объект вида ключ: ConversationFeature = значение: UserRole[]
805
817
  * (если ключ фичи отсутствует, или в ролях пустой массив, считаем фичу доступной для всех пользователей)
806
818
  */
807
- onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole) => void;
819
+ onFeaturesPerRoleChanged?: (featuresPerRole: IFeaturesPerRole, conversationId?: string) => void;
808
820
  /**
809
821
  * Изменился Vmoji-аватар пользователя
810
822
  * @param externalId Id пользователя, у которого изменился аватар
811
823
  */
812
- onParticipantVmojiUpdate?: (externalId: ExternalParticipantId) => void;
824
+ onParticipantVmojiUpdate?: (externalId: ExternalParticipantId, conversationId?: string) => void;
813
825
  /**
814
826
  * Начата текстовая расшифровка звонка
815
827
  * @param initiatorId Id пользователя, запустившего расшифровку звонка
816
828
  * @param movieId Id расшифровки
817
829
  * @param roomId Id комнаты
818
830
  */
819
- onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null) => void;
831
+ onAsrStarted?: (initiatorId: ExternalParticipantId, movieId: number, roomId: number | null, conversationId?: string) => void;
820
832
  /**
821
833
  * Закончена текстовая расшифровка звонка
822
834
  * @param roomId Id комнаты
823
835
  */
824
- onAsrStopped?: (roomId: number | null) => void;
836
+ onAsrStopped?: (roomId: number | null, conversationId?: string) => void;
825
837
  /**
826
838
  * Получена расшифровка речи
827
839
  * @param id Id пользователя, произнесшего реплику
@@ -829,56 +841,53 @@ export type ParamsObject = {
829
841
  * @param timestamp Время расшифровки
830
842
  * @param duration Длительность реплики в расшифровке
831
843
  */
832
- onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number) => void;
844
+ onAsrTranscription?: (id: ExternalParticipantId, text: string, timestamp: number, duration: number, conversationId?: string) => void;
833
845
  /**
834
846
  * Установка начальных параметров текстовой расшифровки звонка. (Используется при входе в звонок/ смене комнаты)
835
847
  * @param data Начальная информация по ASR
836
848
  * @param roomId Id Комнаты
837
849
  */
838
- onAsrSet?: (data: IAsrData | null, roomId: number | null) => void;
850
+ onAsrSet?: (data: IAsrData | null, roomId: number | null, conversationId?: string) => void;
839
851
  /**
840
852
  * Админ начал/остановил совместное использование стороннего web-приложения
841
853
  * @param userId id участника-админа
842
854
  * @param sharedUrl url страницы
843
855
  */
844
- onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId) => void;
856
+ onRemoteSharedUrl?: (userId: ExternalParticipantId, sharedUrl: string | undefined, roomId: IRoomId, conversationId?: string) => void;
845
857
  /**
846
858
  * Изменился id участника (деанонимизация)
847
859
  * @param prevId
848
860
  * @param newId
849
861
  */
850
- onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId) => void;
862
+ onParticipantIdChanged?: (prevId: ExternalParticipantId, newId: ExternalParticipantId, conversationId?: string) => void;
851
863
  /**
852
864
  * Предложение включить режим автоматического отключения приёма видео
853
865
  * в плохой сети
854
866
  * @param bandwidth текущая полоса пропускания, kbps
855
867
  */
856
- onVideoSuspendSuggest?: (bandwidth: number) => void;
868
+ onVideoSuspendSuggest?: (bandwidth: number, conversationId?: string) => void;
857
869
  /**
858
870
  * Одобрено повышение пользователя в зале ожидания/зале в режиме Audience
859
871
  *
860
872
  * @param adminParticipantId админ, одобривший повышение
861
873
  */
862
- onPromotionApproved?: (adminParticipantId: ExternalParticipantId) => void;
874
+ onPromotionApproved?: (adminParticipantId: ExternalParticipantId, conversationId?: string) => void;
863
875
  /**
864
876
  * Участник повышен/разжалован в зале ожидания/зале в режиме Audience
865
877
  *
866
878
  * @param demoted участник разжалован
867
879
  */
868
- onPromoted?: (demoted: boolean) => void;
880
+ onPromoted?: (demoted: boolean, conversationId?: string) => void;
869
881
  /**
870
- * Собеседник подключился к сигналлингу
882
+ * Активным установлен определенный звонок
883
+ *
884
+ * @param conversationId ID звонка
871
885
  */
872
- onPeerRegistered?: () => void;
886
+ onCallActive?: (conversationId: string) => void;
873
887
  /**
874
- * Дебаг информация по видеопотоку, отформатированная SDK для отображения в клиенте.
875
- *
876
- * Работает только если включен `debugVideoStreams`.
877
- *
878
- * @param externalParticipantId Id участника, к которому относится видеопоток
879
- * @param debug Отформатированный текст для отображения
888
+ * Собеседник подключился к сигналлингу
880
889
  */
881
- onVideoStreamDebug?: (externalParticipantId: ExternalParticipantId, debug: string) => void;
890
+ onPeerRegistered?: (conversationId?: string) => void;
882
891
  };
883
892
  export default abstract class Params {
884
893
  private static _params;
@@ -930,7 +939,6 @@ export default abstract class Params {
930
939
  static get waitMessageDelay(): number;
931
940
  static get waitAnotherTabDelay(): number;
932
941
  static get debugLog(): boolean;
933
- static get debugVideoStreams(): false | ((externalParticipantId: ExternalParticipantId, debug: string) => void) | undefined;
934
942
  static get forceRelayPolicy(): boolean;
935
943
  static set forceRelayPolicy(value: boolean);
936
944
  static get videoMinWidth(): number;
@@ -980,6 +988,7 @@ export default abstract class Params {
980
988
  static get audioNack(): boolean;
981
989
  static get movieShare(): boolean;
982
990
  static get videoTracksCount(): number;
991
+ static get requestDisplayLayoutThrottleMs(): number;
983
992
  static get breakVideoPayloadTypes(): boolean;
984
993
  static get useCallsToContacts(): boolean;
985
994
  static get useParticipantListChunk(): boolean;
@@ -988,6 +997,7 @@ export default abstract class Params {
988
997
  static get addParticipant(): boolean;
989
998
  static get waitForAdminInGroupCalls(): boolean;
990
999
  static get hold(): boolean;
1000
+ static get maxParallelCalls(): number;
991
1001
  static get participantListChunkInitIndex(): number;
992
1002
  static get participantListChunkInitCount(): number | null;
993
1003
  static get filterObservers(): boolean;
@@ -1027,6 +1037,7 @@ export default abstract class Params {
1027
1037
  screenShareCongestionControl: boolean;
1028
1038
  screenShareCongestionControlThreshold: number;
1029
1039
  videoTracksCount: number;
1040
+ requestDisplayLayoutThrottleMs: number;
1030
1041
  asrDataChannel: boolean;
1031
1042
  videoMaxHeight: number;
1032
1043
  videoMaxWidth: number;
package/static/Utils.d.ts CHANGED
@@ -3,6 +3,7 @@ import { ExternalParticipant, ExternalParticipantListMarker } from '../types/Ext
3
3
  import { CompositeUserId, OkUserId, Participant, ParticipantId, ParticipantStateMapped } from '../types/Participant';
4
4
  import SignalingMessage from '../types/SignalingMessage';
5
5
  import VideoSettings from '../types/VideoSettings';
6
+ import { type DebugLogger } from './Debug';
6
7
  export declare const PARAMETERS_SEPARATOR = ":";
7
8
  export declare const DEVICE_IDX_PARAMETER = "d";
8
9
  /** @hidden */
@@ -36,8 +37,8 @@ declare namespace Utils {
36
37
  function delay(time: number, { signal }?: {
37
38
  signal?: AbortSignal;
38
39
  }): Promise<void>;
39
- function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any): any;
40
- function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any): void;
40
+ function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any, debug?: DebugLogger): any;
41
+ function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any, debug?: DebugLogger): void;
41
42
  /**
42
43
  * Проверяет, есть ли в первом массиве хотя бы один элемент из второго массива
43
44
  * @param arr Где ищем
@@ -2,6 +2,8 @@
2
2
  * Вспомогательный плагин для работы с WebRTC
3
3
  */
4
4
  import { IVideoDimentions } from '../types/MediaSettings';
5
+ import type StatsLogger from '../classes/StatsLogger';
6
+ import { type DebugLogger } from './Debug';
5
7
  /**
6
8
  * Тип камеры мобильного устройства
7
9
  */
@@ -75,6 +77,7 @@ declare namespace WebRTCUtils {
75
77
  * Проверяет получены ли разрешения, необходимые для текущего звонка
76
78
  */
77
79
  function hasPermissions(needVideo?: boolean): boolean;
80
+ function releaseFirefoxMicrophonePermissionWarmup(): void;
78
81
  /**
79
82
  * Запрашивает камеру и микрофон пользователя
80
83
  *
@@ -82,24 +85,24 @@ declare namespace WebRTCUtils {
82
85
  * @param needAudio Нужно ли аудио
83
86
  * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
84
87
  */
85
- function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise<MediaStream>;
88
+ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
86
89
  /**
87
90
  * Запрашивает трансляцию экрана пользователя с опциональным захватом звука
88
91
  */
89
- function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
92
+ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
90
93
  /**
91
94
  * Запрашивает камеру пользователя
92
95
  *
93
96
  * @param deviceId ID устройства
94
97
  * @param resolution Размеры видео
95
98
  */
96
- function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise<MediaStream>;
99
+ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
97
100
  /**
98
101
  * Запрашивает микрофон пользователя
99
102
  *
100
103
  * @param deviceId ID устройства
101
104
  */
102
- function getUserAudio(deviceId?: string): Promise<MediaStream>;
105
+ function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
103
106
  /**
104
107
  * Устанавливает размер видео в стриме
105
108
  *
@@ -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
+ };
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
1
+ import TransportTopology from '../enums/TransportTopology';
2
2
  import CallDirection from '../enums/CallDirection';
3
3
  import CallType from '../enums/CallType';
4
4
  import ConversationFeature from '../enums/ConversationFeature';
@@ -31,6 +31,7 @@ export interface FastStartParams {
31
31
  conversationId: string;
32
32
  internalParams: string;
33
33
  externalIds?: ExternalId[];
34
+ payload: string;
34
35
  opponentType: CallType;
35
36
  mediaOptions: MediaOption[];
36
37
  joiningAllowed?: boolean;
@@ -72,6 +72,7 @@ export interface Participant {
72
72
  clientType: string;
73
73
  roles: UserRole[];
74
74
  participantState: ParticipantStateMapped;
75
+ isOnHold?: boolean;
75
76
  networkRating: number;
76
77
  lastRequestedLayouts: {
77
78
  [key: StreamDescriptionString]: ParticipantLayout;