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