@100mslive/react-native-hms 2.0.0-alpha.0 → 2.0.0-alpha.1

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 (960) hide show
  1. package/README.md +21 -15
  2. package/android/build.gradle +95 -48
  3. package/android/src/main/java/com/reactnativehmssdk/HMSAudioshareActivity.kt +8 -10
  4. package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +177 -3
  5. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayer.kt +149 -29
  6. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManagerImpl.kt +185 -0
  7. package/android/src/main/java/com/reactnativehmssdk/HMSHelper.kt +80 -20
  8. package/android/src/main/java/com/reactnativehmssdk/{HMSManager.kt → HMSManagerImpl.kt} +517 -145
  9. package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +503 -312
  10. package/android/src/main/java/com/reactnativehmssdk/HMSReactNativeEvent.kt +29 -0
  11. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManagerImpl.kt +119 -0
  12. package/android/src/main/java/com/reactnativehmssdk/HMSView.kt +64 -12
  13. package/android/src/main/java/com/reactnativehmssdk/HmsScreenshareActivity.kt +9 -9
  14. package/android/src/main/java/com/reactnativehmssdk/HmssdkPackage.kt +44 -8
  15. package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSInteractivityDecoder.kt +435 -0
  16. package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSInteractivityHelper.kt +353 -0
  17. package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSRNInteractivityCenter.kt +245 -0
  18. package/android/src/main/java/com/reactnativehmssdk/PipActionReceiver.kt +13 -3
  19. package/android/src/newarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +128 -0
  20. package/android/src/newarch/java/com/reactnativehmssdk/HMSManager.kt +332 -0
  21. package/android/src/newarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +102 -0
  22. package/android/src/oldarch/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +61 -0
  23. package/android/src/oldarch/java/com/reactnativehmssdk/HMSManager.kt +351 -0
  24. package/android/src/oldarch/java/com/reactnativehmssdk/HMSSDKViewManager.kt +87 -0
  25. package/ios/HMSConstants.swift +4 -0
  26. package/ios/HMSDecoder.swift +154 -18
  27. package/ios/HMSHLSPlayerComponentView.mm +325 -0
  28. package/ios/HMSHLSPlayerManager.m +16 -0
  29. package/ios/HMSHLSPlayerManager.swift +236 -70
  30. package/ios/HMSHelper.swift +126 -14
  31. package/ios/HMSInteractivityDecoder.swift +314 -0
  32. package/ios/HMSInteractivityHelper.swift +169 -0
  33. package/ios/HMSManager.m +203 -10
  34. package/ios/HMSManager.mm +365 -0
  35. package/ios/HMSManager.swift +431 -87
  36. package/ios/HMSRNInteractivityCenter.swift +161 -0
  37. package/ios/HMSRNSDK.swift +961 -134
  38. package/ios/HMSView.m +9 -0
  39. package/ios/HMSView.swift +45 -16
  40. package/ios/HMSViewComponentView.mm +229 -0
  41. package/ios/PIPMode/HMSPipModel.swift +18 -0
  42. package/ios/PIPMode/HMSPipView.swift +36 -0
  43. package/ios/PIPMode/HMSSampleBufferSwiftUIView.swift +45 -0
  44. package/lib/commonjs/classes/HMSAudioCodec.js +1 -2
  45. package/lib/commonjs/classes/HMSAudioCodec.js.map +1 -1
  46. package/lib/commonjs/classes/HMSAudioDevice.js +10 -2
  47. package/lib/commonjs/classes/HMSAudioDevice.js.map +1 -1
  48. package/lib/commonjs/classes/HMSAudioFilePlayerNode.js.map +1 -1
  49. package/lib/commonjs/classes/HMSAudioMixerSource.js +3 -3
  50. package/lib/commonjs/classes/HMSAudioMixerSource.js.map +1 -1
  51. package/lib/commonjs/classes/HMSAudioMixingMode.js +12 -2
  52. package/lib/commonjs/classes/HMSAudioMixingMode.js.map +1 -1
  53. package/lib/commonjs/classes/HMSAudioMode.js +1 -2
  54. package/lib/commonjs/classes/HMSAudioMode.js.map +1 -1
  55. package/lib/commonjs/classes/HMSAudioNode.js +3 -3
  56. package/lib/commonjs/classes/HMSAudioNode.js.map +1 -1
  57. package/lib/commonjs/classes/HMSAudioSettings.js +3 -3
  58. package/lib/commonjs/classes/HMSAudioSettings.js.map +1 -1
  59. package/lib/commonjs/classes/HMSAudioTrack.js +9 -0
  60. package/lib/commonjs/classes/HMSAudioTrack.js.map +1 -1
  61. package/lib/commonjs/classes/HMSAudioTrackSettings.js +12 -5
  62. package/lib/commonjs/classes/HMSAudioTrackSettings.js.map +1 -1
  63. package/lib/commonjs/classes/HMSBrowserRecordingState.js +5 -3
  64. package/lib/commonjs/classes/HMSBrowserRecordingState.js.map +1 -1
  65. package/lib/commonjs/classes/HMSCameraControl.js +3 -4
  66. package/lib/commonjs/classes/HMSCameraControl.js.map +1 -1
  67. package/lib/commonjs/classes/HMSCameraFacing.js +10 -2
  68. package/lib/commonjs/classes/HMSCameraFacing.js.map +1 -1
  69. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js +3 -3
  70. package/lib/commonjs/classes/HMSChangeTrackStateRequest.js.map +1 -1
  71. package/lib/commonjs/classes/HMSConfig.js +30 -3
  72. package/lib/commonjs/classes/HMSConfig.js.map +1 -1
  73. package/lib/commonjs/classes/HMSConstants.js +1 -2
  74. package/lib/commonjs/classes/HMSConstants.js.map +1 -1
  75. package/lib/commonjs/classes/HMSEncoder.js +57 -14
  76. package/lib/commonjs/classes/HMSEncoder.js.map +1 -1
  77. package/lib/commonjs/classes/HMSEventEmitter.js +1 -2
  78. package/lib/commonjs/classes/HMSEventEmitter.js.map +1 -1
  79. package/lib/commonjs/classes/HMSException.js +21 -3
  80. package/lib/commonjs/classes/HMSException.js.map +1 -1
  81. package/lib/commonjs/classes/HMSHLSConfig.js +3 -3
  82. package/lib/commonjs/classes/HMSHLSConfig.js.map +1 -1
  83. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js +3 -3
  84. package/lib/commonjs/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  85. package/lib/commonjs/classes/HMSHLSPlaylistType.js +12 -0
  86. package/lib/commonjs/classes/HMSHLSPlaylistType.js.map +1 -0
  87. package/lib/commonjs/classes/HMSHLSRecordingConfig.js +3 -3
  88. package/lib/commonjs/classes/HMSHLSRecordingConfig.js.map +1 -1
  89. package/lib/commonjs/classes/HMSHLSRecordingState.js +7 -7
  90. package/lib/commonjs/classes/HMSHLSRecordingState.js.map +1 -1
  91. package/lib/commonjs/classes/HMSHLSStreamingState.js +9 -3
  92. package/lib/commonjs/classes/HMSHLSStreamingState.js.map +1 -1
  93. package/lib/commonjs/classes/HMSHLSTimedMetadata.js +2 -0
  94. package/lib/commonjs/classes/HMSHLSTimedMetadata.js.map +1 -0
  95. package/lib/commonjs/classes/HMSHLSVariant.js +5 -3
  96. package/lib/commonjs/classes/HMSHLSVariant.js.map +1 -1
  97. package/lib/commonjs/classes/HMSHelper.js.map +1 -1
  98. package/lib/commonjs/classes/HMSIOSAudioMode.js +16 -2
  99. package/lib/commonjs/classes/HMSIOSAudioMode.js.map +1 -1
  100. package/lib/commonjs/classes/HMSInteractivityCenter.js +174 -0
  101. package/lib/commonjs/classes/HMSInteractivityCenter.js.map +1 -0
  102. package/lib/commonjs/classes/HMSInteractivityEncoder.js +83 -0
  103. package/lib/commonjs/classes/HMSInteractivityEncoder.js.map +1 -0
  104. package/lib/commonjs/classes/HMSLayer.js +1 -2
  105. package/lib/commonjs/classes/HMSLayer.js.map +1 -1
  106. package/lib/commonjs/classes/HMSLocalAudioStats.js +3 -3
  107. package/lib/commonjs/classes/HMSLocalAudioStats.js.map +1 -1
  108. package/lib/commonjs/classes/HMSLocalAudioTrack.js +3 -3
  109. package/lib/commonjs/classes/HMSLocalAudioTrack.js.map +1 -1
  110. package/lib/commonjs/classes/HMSLocalPeer.js +3 -3
  111. package/lib/commonjs/classes/HMSLocalPeer.js.map +1 -1
  112. package/lib/commonjs/classes/HMSLocalVideoStats.js +3 -3
  113. package/lib/commonjs/classes/HMSLocalVideoStats.js.map +1 -1
  114. package/lib/commonjs/classes/HMSLocalVideoTrack.js +3 -3
  115. package/lib/commonjs/classes/HMSLocalVideoTrack.js.map +1 -1
  116. package/lib/commonjs/classes/HMSLogAlarmManager.js +13 -2
  117. package/lib/commonjs/classes/HMSLogAlarmManager.js.map +1 -1
  118. package/lib/commonjs/classes/HMSLogLevel.js +13 -2
  119. package/lib/commonjs/classes/HMSLogLevel.js.map +1 -1
  120. package/lib/commonjs/classes/HMSLogSettings.js +17 -3
  121. package/lib/commonjs/classes/HMSLogSettings.js.map +1 -1
  122. package/lib/commonjs/classes/HMSLogger.js +4 -5
  123. package/lib/commonjs/classes/HMSLogger.js.map +1 -1
  124. package/lib/commonjs/classes/HMSMessage.js +3 -3
  125. package/lib/commonjs/classes/HMSMessage.js.map +1 -1
  126. package/lib/commonjs/classes/HMSMessageRecipient.js +3 -3
  127. package/lib/commonjs/classes/HMSMessageRecipient.js.map +1 -1
  128. package/lib/commonjs/classes/HMSMessageRecipientType.js +1 -2
  129. package/lib/commonjs/classes/HMSMessageRecipientType.js.map +1 -1
  130. package/lib/commonjs/classes/HMSMicNode.js.map +1 -1
  131. package/lib/commonjs/classes/HMSNativeEventEmitter.js +4 -6
  132. package/lib/commonjs/classes/HMSNativeEventEmitter.js.map +1 -1
  133. package/lib/commonjs/classes/HMSNativeEventListener.js +3 -4
  134. package/lib/commonjs/classes/HMSNativeEventListener.js.map +1 -1
  135. package/lib/commonjs/classes/HMSNetworkQuality.js +14 -3
  136. package/lib/commonjs/classes/HMSNetworkQuality.js.map +1 -1
  137. package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js +158 -0
  138. package/lib/commonjs/classes/HMSNoiseCancellationPlugin.js.map +1 -0
  139. package/lib/commonjs/classes/HMSPIPConfig.js +6 -0
  140. package/lib/commonjs/classes/HMSPIPConfig.js.map +1 -0
  141. package/lib/commonjs/classes/HMSPIPListenerActions.js +10 -2
  142. package/lib/commonjs/classes/HMSPIPListenerActions.js.map +1 -1
  143. package/lib/commonjs/classes/HMSPeer.js +186 -5
  144. package/lib/commonjs/classes/HMSPeer.js.map +1 -1
  145. package/lib/commonjs/classes/HMSPeerListIterator.js +25 -7
  146. package/lib/commonjs/classes/HMSPeerListIterator.js.map +1 -1
  147. package/lib/commonjs/classes/HMSPeerListIteratorOptions.js.map +1 -1
  148. package/lib/commonjs/classes/HMSPeerType.js +24 -0
  149. package/lib/commonjs/classes/HMSPeerType.js.map +1 -0
  150. package/lib/commonjs/classes/HMSPeerUpdate.js +2 -4
  151. package/lib/commonjs/classes/HMSPeerUpdate.js.map +1 -1
  152. package/lib/commonjs/classes/HMSPeersCache.js +6 -7
  153. package/lib/commonjs/classes/HMSPeersCache.js.map +1 -1
  154. package/lib/commonjs/classes/HMSPermissions.js +11 -3
  155. package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
  156. package/lib/commonjs/classes/HMSPollsListenerActions.js +11 -0
  157. package/lib/commonjs/classes/HMSPollsListenerActions.js.map +1 -0
  158. package/lib/commonjs/classes/HMSPublishSettings.js +3 -3
  159. package/lib/commonjs/classes/HMSPublishSettings.js.map +1 -1
  160. package/lib/commonjs/classes/HMSQualityLimitationReason.js +1 -2
  161. package/lib/commonjs/classes/HMSQualityLimitationReason.js.map +1 -1
  162. package/lib/commonjs/classes/HMSQualityLimitationReasons.js +3 -3
  163. package/lib/commonjs/classes/HMSQualityLimitationReasons.js.map +1 -1
  164. package/lib/commonjs/classes/HMSRTCStats.js +3 -3
  165. package/lib/commonjs/classes/HMSRTCStats.js.map +1 -1
  166. package/lib/commonjs/classes/HMSRTCStatsReport.js +3 -3
  167. package/lib/commonjs/classes/HMSRTCStatsReport.js.map +1 -1
  168. package/lib/commonjs/classes/HMSRTMPConfig.js +17 -3
  169. package/lib/commonjs/classes/HMSRTMPConfig.js.map +1 -1
  170. package/lib/commonjs/classes/HMSRecordingState.js +17 -0
  171. package/lib/commonjs/classes/HMSRecordingState.js.map +1 -0
  172. package/lib/commonjs/classes/HMSRemoteAudioStats.js +3 -3
  173. package/lib/commonjs/classes/HMSRemoteAudioStats.js.map +1 -1
  174. package/lib/commonjs/classes/HMSRemoteAudioTrack.js +3 -3
  175. package/lib/commonjs/classes/HMSRemoteAudioTrack.js.map +1 -1
  176. package/lib/commonjs/classes/HMSRemotePeer.js +3 -3
  177. package/lib/commonjs/classes/HMSRemotePeer.js.map +1 -1
  178. package/lib/commonjs/classes/HMSRemoteVideoStats.js +3 -3
  179. package/lib/commonjs/classes/HMSRemoteVideoStats.js.map +1 -1
  180. package/lib/commonjs/classes/HMSRemoteVideoTrack.js +3 -3
  181. package/lib/commonjs/classes/HMSRemoteVideoTrack.js.map +1 -1
  182. package/lib/commonjs/classes/HMSRole.js +20 -3
  183. package/lib/commonjs/classes/HMSRole.js.map +1 -1
  184. package/lib/commonjs/classes/HMSRoleChangeRequest.js +3 -3
  185. package/lib/commonjs/classes/HMSRoleChangeRequest.js.map +1 -1
  186. package/lib/commonjs/classes/HMSRoom.js +17 -4
  187. package/lib/commonjs/classes/HMSRoom.js.map +1 -1
  188. package/lib/commonjs/classes/HMSRoomCache.js +13 -7
  189. package/lib/commonjs/classes/HMSRoomCache.js.map +1 -1
  190. package/lib/commonjs/classes/HMSRoomUpdate.js +2 -2
  191. package/lib/commonjs/classes/HMSRoomUpdate.js.map +1 -1
  192. package/lib/commonjs/classes/HMSRtmpStreamingState.js +5 -5
  193. package/lib/commonjs/classes/HMSRtmpStreamingState.js.map +1 -1
  194. package/lib/commonjs/classes/HMSRtmpVideoResolution.js +16 -3
  195. package/lib/commonjs/classes/HMSRtmpVideoResolution.js.map +1 -1
  196. package/lib/commonjs/classes/HMSSDK.js +1313 -327
  197. package/lib/commonjs/classes/HMSSDK.js.map +1 -1
  198. package/lib/commonjs/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  199. package/lib/commonjs/classes/HMSServerRecordingState.js +5 -3
  200. package/lib/commonjs/classes/HMSServerRecordingState.js.map +1 -1
  201. package/lib/commonjs/classes/HMSSessionStore.js +20 -23
  202. package/lib/commonjs/classes/HMSSessionStore.js.map +1 -1
  203. package/lib/commonjs/classes/HMSSimulcastLayerDefinition.js +3 -3
  204. package/lib/commonjs/classes/HMSSimulcastLayerDefinition.js.map +1 -1
  205. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js +3 -3
  206. package/lib/commonjs/classes/HMSSimulcastLayerSettings.js.map +1 -1
  207. package/lib/commonjs/classes/HMSSimulcastLayerSettingsPolicy.js +3 -3
  208. package/lib/commonjs/classes/HMSSimulcastLayerSettingsPolicy.js.map +1 -1
  209. package/lib/commonjs/classes/HMSSimulcastSettings.js +3 -3
  210. package/lib/commonjs/classes/HMSSimulcastSettings.js.map +1 -1
  211. package/lib/commonjs/classes/HMSSimulcastSettingsPolicy.js +3 -3
  212. package/lib/commonjs/classes/HMSSimulcastSettingsPolicy.js.map +1 -1
  213. package/lib/commonjs/classes/HMSSpeaker.js +3 -3
  214. package/lib/commonjs/classes/HMSSpeaker.js.map +1 -1
  215. package/lib/commonjs/classes/HMSStreamingState.js +15 -0
  216. package/lib/commonjs/classes/HMSStreamingState.js.map +1 -0
  217. package/lib/commonjs/classes/HMSSubscribeDegradationPolicy.js +3 -3
  218. package/lib/commonjs/classes/HMSSubscribeDegradationPolicy.js.map +1 -1
  219. package/lib/commonjs/classes/HMSSubscribeSettings.js +3 -3
  220. package/lib/commonjs/classes/HMSSubscribeSettings.js.map +1 -1
  221. package/lib/commonjs/classes/HMSTrack.js +16 -3
  222. package/lib/commonjs/classes/HMSTrack.js.map +1 -1
  223. package/lib/commonjs/classes/HMSTrackSettings.js +13 -3
  224. package/lib/commonjs/classes/HMSTrackSettings.js.map +1 -1
  225. package/lib/commonjs/classes/HMSTrackSettingsInitState.js +10 -2
  226. package/lib/commonjs/classes/HMSTrackSettingsInitState.js.map +1 -1
  227. package/lib/commonjs/classes/HMSTrackSource.js +11 -2
  228. package/lib/commonjs/classes/HMSTrackSource.js.map +1 -1
  229. package/lib/commonjs/classes/HMSTrackType.js +8 -2
  230. package/lib/commonjs/classes/HMSTrackType.js.map +1 -1
  231. package/lib/commonjs/classes/HMSTrackUpdate.js +1 -2
  232. package/lib/commonjs/classes/HMSTrackUpdate.js.map +1 -1
  233. package/lib/commonjs/classes/HMSUpdateListenerActions.js +44 -5
  234. package/lib/commonjs/classes/HMSUpdateListenerActions.js.map +1 -1
  235. package/lib/commonjs/classes/HMSVideoCodec.js +1 -2
  236. package/lib/commonjs/classes/HMSVideoCodec.js.map +1 -1
  237. package/lib/commonjs/classes/HMSVideoResolution.js +3 -3
  238. package/lib/commonjs/classes/HMSVideoResolution.js.map +1 -1
  239. package/lib/commonjs/classes/HMSVideoSettings.js +3 -3
  240. package/lib/commonjs/classes/HMSVideoSettings.js.map +1 -1
  241. package/lib/commonjs/classes/HMSVideoTrack.js +20 -3
  242. package/lib/commonjs/classes/HMSVideoTrack.js.map +1 -1
  243. package/lib/commonjs/classes/HMSVideoTrackSettings.js +18 -7
  244. package/lib/commonjs/classes/HMSVideoTrackSettings.js.map +1 -1
  245. package/lib/commonjs/classes/HMSVideoViewMode.js +1 -2
  246. package/lib/commonjs/classes/HMSVideoViewMode.js.map +1 -1
  247. package/lib/commonjs/classes/HmsView.js +77 -28
  248. package/lib/commonjs/classes/HmsView.js.map +1 -1
  249. package/lib/commonjs/classes/polls/DecodedPollLeaderboardResponse.js +6 -0
  250. package/lib/commonjs/classes/polls/DecodedPollLeaderboardResponse.js.map +1 -0
  251. package/lib/commonjs/classes/polls/HMSPoll.js +6 -0
  252. package/lib/commonjs/classes/polls/HMSPoll.js.map +1 -0
  253. package/lib/commonjs/classes/polls/HMSPollCategory.js +12 -0
  254. package/lib/commonjs/classes/polls/HMSPollCategory.js.map +1 -0
  255. package/lib/commonjs/classes/polls/HMSPollCreateParams.js +6 -0
  256. package/lib/commonjs/classes/polls/HMSPollCreateParams.js.map +1 -0
  257. package/lib/commonjs/classes/polls/HMSPollLeaderboardEntry.js +6 -0
  258. package/lib/commonjs/classes/polls/HMSPollLeaderboardEntry.js.map +1 -0
  259. package/lib/commonjs/classes/polls/HMSPollLeaderboardSummary.js +2 -0
  260. package/lib/commonjs/classes/polls/HMSPollLeaderboardSummary.js.map +1 -0
  261. package/lib/commonjs/classes/polls/HMSPollQuestion.js +6 -0
  262. package/lib/commonjs/classes/polls/HMSPollQuestion.js.map +1 -0
  263. package/lib/commonjs/classes/polls/HMSPollQuestionAnswer.js +2 -0
  264. package/lib/commonjs/classes/polls/HMSPollQuestionAnswer.js.map +1 -0
  265. package/lib/commonjs/classes/polls/HMSPollQuestionCreateParams.js +6 -0
  266. package/lib/commonjs/classes/polls/HMSPollQuestionCreateParams.js.map +1 -0
  267. package/lib/commonjs/classes/polls/HMSPollQuestionOption.js +2 -0
  268. package/lib/commonjs/classes/polls/HMSPollQuestionOption.js.map +1 -0
  269. package/lib/commonjs/classes/polls/HMSPollQuestionOptionCreateParams.js +6 -0
  270. package/lib/commonjs/classes/polls/HMSPollQuestionOptionCreateParams.js.map +1 -0
  271. package/lib/commonjs/classes/polls/HMSPollQuestionQuizOptionCreateParams.js +6 -0
  272. package/lib/commonjs/classes/polls/HMSPollQuestionQuizOptionCreateParams.js.map +1 -0
  273. package/lib/commonjs/classes/polls/HMSPollQuestionResponse.js +6 -0
  274. package/lib/commonjs/classes/polls/HMSPollQuestionResponse.js.map +1 -0
  275. package/lib/commonjs/classes/polls/HMSPollQuestionResponseCreateParams.js +6 -0
  276. package/lib/commonjs/classes/polls/HMSPollQuestionResponseCreateParams.js.map +1 -0
  277. package/lib/commonjs/classes/polls/HMSPollQuestionResponseResult.js +2 -0
  278. package/lib/commonjs/classes/polls/HMSPollQuestionResponseResult.js.map +1 -0
  279. package/lib/commonjs/classes/polls/HMSPollQuestionResult.js +2 -0
  280. package/lib/commonjs/classes/polls/HMSPollQuestionResult.js.map +1 -0
  281. package/lib/commonjs/classes/polls/HMSPollQuestionType.js +14 -0
  282. package/lib/commonjs/classes/polls/HMSPollQuestionType.js.map +1 -0
  283. package/lib/commonjs/classes/polls/HMSPollResponsePeerInfo.js +2 -0
  284. package/lib/commonjs/classes/polls/HMSPollResponsePeerInfo.js.map +1 -0
  285. package/lib/commonjs/classes/polls/HMSPollResult.js +6 -0
  286. package/lib/commonjs/classes/polls/HMSPollResult.js.map +1 -0
  287. package/lib/commonjs/classes/polls/HMSPollState.js +13 -0
  288. package/lib/commonjs/classes/polls/HMSPollState.js.map +1 -0
  289. package/lib/commonjs/classes/polls/HMSPollType.js +12 -0
  290. package/lib/commonjs/classes/polls/HMSPollType.js.map +1 -0
  291. package/lib/commonjs/classes/polls/HMSPollUpdateType.js +13 -0
  292. package/lib/commonjs/classes/polls/HMSPollUpdateType.js.map +1 -0
  293. package/lib/commonjs/classes/polls/HMSPollUserTrackingMode.js +13 -0
  294. package/lib/commonjs/classes/polls/HMSPollUserTrackingMode.js.map +1 -0
  295. package/lib/commonjs/classes/polls/PollLeaderboardResponse.js +6 -0
  296. package/lib/commonjs/classes/polls/PollLeaderboardResponse.js.map +1 -0
  297. package/lib/commonjs/classes/transcriptions/HMSTranscript.js +6 -0
  298. package/lib/commonjs/classes/transcriptions/HMSTranscript.js.map +1 -0
  299. package/lib/commonjs/classes/transcriptions/OnTranscriptionError.js +2 -0
  300. package/lib/commonjs/classes/transcriptions/OnTranscriptionError.js.map +1 -0
  301. package/lib/commonjs/classes/transcriptions/TranscriptionState.js +14 -0
  302. package/lib/commonjs/classes/transcriptions/TranscriptionState.js.map +1 -0
  303. package/lib/commonjs/classes/transcriptions/Transcriptions.js +6 -0
  304. package/lib/commonjs/classes/transcriptions/Transcriptions.js.map +1 -0
  305. package/lib/commonjs/classes/transcriptions/TranscriptionsMode.js +12 -0
  306. package/lib/commonjs/classes/transcriptions/TranscriptionsMode.js.map +1 -0
  307. package/lib/commonjs/classes/transcriptions/index.js +61 -0
  308. package/lib/commonjs/classes/transcriptions/index.js.map +1 -0
  309. package/lib/commonjs/classes/whiteboard/HMSWhiteboard.js +6 -0
  310. package/lib/commonjs/classes/whiteboard/HMSWhiteboard.js.map +1 -0
  311. package/lib/commonjs/classes/whiteboard/HMSWhiteboardListenerActions.js +11 -0
  312. package/lib/commonjs/classes/whiteboard/HMSWhiteboardListenerActions.js.map +1 -0
  313. package/lib/commonjs/classes/whiteboard/HMSWhiteboardState.js +12 -0
  314. package/lib/commonjs/classes/whiteboard/HMSWhiteboardState.js.map +1 -0
  315. package/lib/commonjs/classes/whiteboard/HMSWhiteboardUpdateType.js +12 -0
  316. package/lib/commonjs/classes/whiteboard/HMSWhiteboardUpdateType.js.map +1 -0
  317. package/lib/commonjs/classes/whiteboard/index.js +39 -0
  318. package/lib/commonjs/classes/whiteboard/index.js.map +1 -0
  319. package/lib/commonjs/classes/whiteboard/registerCallbacks.js +26 -0
  320. package/lib/commonjs/classes/whiteboard/registerCallbacks.js.map +1 -0
  321. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js +155 -49
  322. package/lib/commonjs/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  323. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +5 -6
  324. package/lib/commonjs/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
  325. package/lib/commonjs/components/HMSHLSPlayer/hooks.js +26 -16
  326. package/lib/commonjs/components/HMSHLSPlayer/hooks.js.map +1 -1
  327. package/lib/commonjs/components/HMSHLSPlayer/index.js +22 -1
  328. package/lib/commonjs/components/HMSHLSPlayer/index.js.map +1 -1
  329. package/lib/commonjs/hooks/hmsviews.js +17 -0
  330. package/lib/commonjs/hooks/hmsviews.js.map +1 -0
  331. package/lib/commonjs/hooks/polls.js +17 -0
  332. package/lib/commonjs/hooks/polls.js.map +1 -0
  333. package/lib/commonjs/hooks/useHMSPeerUpdates.js +3 -5
  334. package/lib/commonjs/hooks/useHMSPeerUpdates.js.map +1 -1
  335. package/lib/commonjs/index.js +233 -6
  336. package/lib/commonjs/index.js.map +1 -1
  337. package/lib/commonjs/modules/HMSManagerModule.js +10 -0
  338. package/lib/commonjs/modules/HMSManagerModule.js.map +1 -0
  339. package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js +75 -0
  340. package/lib/commonjs/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
  341. package/lib/commonjs/specs/HMSViewNativeComponent.js +55 -0
  342. package/lib/commonjs/specs/HMSViewNativeComponent.js.map +1 -0
  343. package/lib/commonjs/specs/NativeHMSManager.js +38 -0
  344. package/lib/commonjs/specs/NativeHMSManager.js.map +1 -0
  345. package/lib/commonjs/stores/hls-player-playback-slice.js +10 -0
  346. package/lib/commonjs/stores/hls-player-playback-slice.js.map +1 -1
  347. package/lib/commonjs/stores/hls-player-stats-store.js +28 -17
  348. package/lib/commonjs/stores/hls-player-stats-store.js.map +1 -1
  349. package/lib/commonjs/stores/hms-interactivity-store.js +21 -0
  350. package/lib/commonjs/stores/hms-interactivity-store.js.map +1 -0
  351. package/lib/commonjs/stores/hms-polls-slice.js +19 -0
  352. package/lib/commonjs/stores/hms-polls-slice.js.map +1 -0
  353. package/lib/commonjs/stores/hms-store.js +5 -6
  354. package/lib/commonjs/stores/hms-store.js.map +1 -1
  355. package/lib/commonjs/stores/hmsviews-slice.js +19 -0
  356. package/lib/commonjs/stores/hmsviews-slice.js.map +1 -0
  357. package/lib/commonjs/stores/types.js.map +1 -1
  358. package/lib/commonjs/types.js +4 -7
  359. package/lib/commonjs/types.js.map +1 -1
  360. package/lib/commonjs/utils/emitter/EventEmitter.js +23 -7
  361. package/lib/commonjs/utils/emitter/EventEmitter.js.map +1 -1
  362. package/lib/commonjs/utils/emitter/_EmitterSubscription.js +3 -3
  363. package/lib/commonjs/utils/emitter/_EmitterSubscription.js.map +1 -1
  364. package/lib/commonjs/utils/emitter/_EventSubscription.js +3 -3
  365. package/lib/commonjs/utils/emitter/_EventSubscription.js.map +1 -1
  366. package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js +3 -4
  367. package/lib/commonjs/utils/emitter/_EventSubscriptionVendor.js.map +1 -1
  368. package/lib/commonjs/utils/index.js.map +1 -1
  369. package/lib/commonjs/utils/keyboard.js +46 -0
  370. package/lib/commonjs/utils/keyboard.js.map +1 -0
  371. package/lib/commonjs/utils/notification.js +13 -0
  372. package/lib/commonjs/utils/notification.js.map +1 -0
  373. package/lib/commonjs/utils/windowController.js +30 -0
  374. package/lib/commonjs/utils/windowController.js.map +1 -0
  375. package/lib/module/classes/HMSAudioCodec.js.map +1 -1
  376. package/lib/module/classes/HMSAudioDevice.js +9 -0
  377. package/lib/module/classes/HMSAudioDevice.js.map +1 -1
  378. package/lib/module/classes/HMSAudioFilePlayerNode.js.map +1 -1
  379. package/lib/module/classes/HMSAudioMixerSource.js +3 -3
  380. package/lib/module/classes/HMSAudioMixerSource.js.map +1 -1
  381. package/lib/module/classes/HMSAudioMixingMode.js +11 -0
  382. package/lib/module/classes/HMSAudioMixingMode.js.map +1 -1
  383. package/lib/module/classes/HMSAudioMode.js.map +1 -1
  384. package/lib/module/classes/HMSAudioNode.js +3 -3
  385. package/lib/module/classes/HMSAudioNode.js.map +1 -1
  386. package/lib/module/classes/HMSAudioSettings.js +3 -3
  387. package/lib/module/classes/HMSAudioSettings.js.map +1 -1
  388. package/lib/module/classes/HMSAudioTrack.js +9 -0
  389. package/lib/module/classes/HMSAudioTrack.js.map +1 -1
  390. package/lib/module/classes/HMSAudioTrackSettings.js +12 -5
  391. package/lib/module/classes/HMSAudioTrackSettings.js.map +1 -1
  392. package/lib/module/classes/HMSBrowserRecordingState.js +5 -3
  393. package/lib/module/classes/HMSBrowserRecordingState.js.map +1 -1
  394. package/lib/module/classes/HMSCameraControl.js +2 -3
  395. package/lib/module/classes/HMSCameraControl.js.map +1 -1
  396. package/lib/module/classes/HMSCameraFacing.js +9 -0
  397. package/lib/module/classes/HMSCameraFacing.js.map +1 -1
  398. package/lib/module/classes/HMSChangeTrackStateRequest.js +3 -3
  399. package/lib/module/classes/HMSChangeTrackStateRequest.js.map +1 -1
  400. package/lib/module/classes/HMSConfig.js +30 -3
  401. package/lib/module/classes/HMSConfig.js.map +1 -1
  402. package/lib/module/classes/HMSConstants.js.map +1 -1
  403. package/lib/module/classes/HMSEncoder.js +56 -13
  404. package/lib/module/classes/HMSEncoder.js.map +1 -1
  405. package/lib/module/classes/HMSEventEmitter.js.map +1 -1
  406. package/lib/module/classes/HMSException.js +21 -3
  407. package/lib/module/classes/HMSException.js.map +1 -1
  408. package/lib/module/classes/HMSHLSConfig.js +3 -3
  409. package/lib/module/classes/HMSHLSConfig.js.map +1 -1
  410. package/lib/module/classes/HMSHLSMeetingURLVariant.js +3 -3
  411. package/lib/module/classes/HMSHLSMeetingURLVariant.js.map +1 -1
  412. package/lib/module/classes/HMSHLSPlaylistType.js +6 -0
  413. package/lib/module/classes/HMSHLSPlaylistType.js.map +1 -0
  414. package/lib/module/classes/HMSHLSRecordingConfig.js +3 -3
  415. package/lib/module/classes/HMSHLSRecordingConfig.js.map +1 -1
  416. package/lib/module/classes/HMSHLSRecordingState.js +7 -7
  417. package/lib/module/classes/HMSHLSRecordingState.js.map +1 -1
  418. package/lib/module/classes/HMSHLSStreamingState.js +9 -3
  419. package/lib/module/classes/HMSHLSStreamingState.js.map +1 -1
  420. package/lib/module/classes/HMSHLSTimedMetadata.js +2 -0
  421. package/lib/module/classes/HMSHLSTimedMetadata.js.map +1 -0
  422. package/lib/module/classes/HMSHLSVariant.js +5 -3
  423. package/lib/module/classes/HMSHLSVariant.js.map +1 -1
  424. package/lib/module/classes/HMSHelper.js.map +1 -1
  425. package/lib/module/classes/HMSIOSAudioMode.js +15 -0
  426. package/lib/module/classes/HMSIOSAudioMode.js.map +1 -1
  427. package/lib/module/classes/HMSInteractivityCenter.js +166 -0
  428. package/lib/module/classes/HMSInteractivityCenter.js.map +1 -0
  429. package/lib/module/classes/HMSInteractivityEncoder.js +76 -0
  430. package/lib/module/classes/HMSInteractivityEncoder.js.map +1 -0
  431. package/lib/module/classes/HMSLayer.js.map +1 -1
  432. package/lib/module/classes/HMSLocalAudioStats.js +3 -3
  433. package/lib/module/classes/HMSLocalAudioStats.js.map +1 -1
  434. package/lib/module/classes/HMSLocalAudioTrack.js +3 -3
  435. package/lib/module/classes/HMSLocalAudioTrack.js.map +1 -1
  436. package/lib/module/classes/HMSLocalPeer.js +3 -3
  437. package/lib/module/classes/HMSLocalPeer.js.map +1 -1
  438. package/lib/module/classes/HMSLocalVideoStats.js +3 -3
  439. package/lib/module/classes/HMSLocalVideoStats.js.map +1 -1
  440. package/lib/module/classes/HMSLocalVideoTrack.js +3 -3
  441. package/lib/module/classes/HMSLocalVideoTrack.js.map +1 -1
  442. package/lib/module/classes/HMSLogAlarmManager.js +12 -0
  443. package/lib/module/classes/HMSLogAlarmManager.js.map +1 -1
  444. package/lib/module/classes/HMSLogLevel.js +12 -0
  445. package/lib/module/classes/HMSLogLevel.js.map +1 -1
  446. package/lib/module/classes/HMSLogSettings.js +17 -3
  447. package/lib/module/classes/HMSLogSettings.js.map +1 -1
  448. package/lib/module/classes/HMSLogger.js +3 -3
  449. package/lib/module/classes/HMSLogger.js.map +1 -1
  450. package/lib/module/classes/HMSMessage.js +3 -3
  451. package/lib/module/classes/HMSMessage.js.map +1 -1
  452. package/lib/module/classes/HMSMessageRecipient.js +3 -3
  453. package/lib/module/classes/HMSMessageRecipient.js.map +1 -1
  454. package/lib/module/classes/HMSMessageRecipientType.js.map +1 -1
  455. package/lib/module/classes/HMSMicNode.js.map +1 -1
  456. package/lib/module/classes/HMSNativeEventEmitter.js +4 -6
  457. package/lib/module/classes/HMSNativeEventEmitter.js.map +1 -1
  458. package/lib/module/classes/HMSNativeEventListener.js +1 -1
  459. package/lib/module/classes/HMSNativeEventListener.js.map +1 -1
  460. package/lib/module/classes/HMSNetworkQuality.js +14 -3
  461. package/lib/module/classes/HMSNetworkQuality.js.map +1 -1
  462. package/lib/module/classes/HMSNoiseCancellationPlugin.js +152 -0
  463. package/lib/module/classes/HMSNoiseCancellationPlugin.js.map +1 -0
  464. package/lib/module/classes/HMSPIPConfig.js +2 -0
  465. package/lib/module/classes/HMSPIPConfig.js.map +1 -0
  466. package/lib/module/classes/HMSPIPListenerActions.js +9 -0
  467. package/lib/module/classes/HMSPIPListenerActions.js.map +1 -1
  468. package/lib/module/classes/HMSPeer.js +187 -5
  469. package/lib/module/classes/HMSPeer.js.map +1 -1
  470. package/lib/module/classes/HMSPeerListIterator.js +24 -6
  471. package/lib/module/classes/HMSPeerListIterator.js.map +1 -1
  472. package/lib/module/classes/HMSPeerListIteratorOptions.js.map +1 -1
  473. package/lib/module/classes/HMSPeerType.js +18 -0
  474. package/lib/module/classes/HMSPeerType.js.map +1 -0
  475. package/lib/module/classes/HMSPeerUpdate.js.map +1 -1
  476. package/lib/module/classes/HMSPeersCache.js +4 -4
  477. package/lib/module/classes/HMSPeersCache.js.map +1 -1
  478. package/lib/module/classes/HMSPermissions.js +11 -3
  479. package/lib/module/classes/HMSPermissions.js.map +1 -1
  480. package/lib/module/classes/HMSPollsListenerActions.js +5 -0
  481. package/lib/module/classes/HMSPollsListenerActions.js.map +1 -0
  482. package/lib/module/classes/HMSPublishSettings.js +3 -3
  483. package/lib/module/classes/HMSPublishSettings.js.map +1 -1
  484. package/lib/module/classes/HMSQualityLimitationReason.js.map +1 -1
  485. package/lib/module/classes/HMSQualityLimitationReasons.js +3 -3
  486. package/lib/module/classes/HMSQualityLimitationReasons.js.map +1 -1
  487. package/lib/module/classes/HMSRTCStats.js +3 -3
  488. package/lib/module/classes/HMSRTCStats.js.map +1 -1
  489. package/lib/module/classes/HMSRTCStatsReport.js +3 -3
  490. package/lib/module/classes/HMSRTCStatsReport.js.map +1 -1
  491. package/lib/module/classes/HMSRTMPConfig.js +17 -3
  492. package/lib/module/classes/HMSRTMPConfig.js.map +1 -1
  493. package/lib/module/classes/HMSRecordingState.js +11 -0
  494. package/lib/module/classes/HMSRecordingState.js.map +1 -0
  495. package/lib/module/classes/HMSRemoteAudioStats.js +3 -3
  496. package/lib/module/classes/HMSRemoteAudioStats.js.map +1 -1
  497. package/lib/module/classes/HMSRemoteAudioTrack.js +3 -3
  498. package/lib/module/classes/HMSRemoteAudioTrack.js.map +1 -1
  499. package/lib/module/classes/HMSRemotePeer.js +3 -3
  500. package/lib/module/classes/HMSRemotePeer.js.map +1 -1
  501. package/lib/module/classes/HMSRemoteVideoStats.js +3 -3
  502. package/lib/module/classes/HMSRemoteVideoStats.js.map +1 -1
  503. package/lib/module/classes/HMSRemoteVideoTrack.js +3 -3
  504. package/lib/module/classes/HMSRemoteVideoTrack.js.map +1 -1
  505. package/lib/module/classes/HMSRole.js +20 -3
  506. package/lib/module/classes/HMSRole.js.map +1 -1
  507. package/lib/module/classes/HMSRoleChangeRequest.js +3 -3
  508. package/lib/module/classes/HMSRoleChangeRequest.js.map +1 -1
  509. package/lib/module/classes/HMSRoom.js +17 -4
  510. package/lib/module/classes/HMSRoom.js.map +1 -1
  511. package/lib/module/classes/HMSRoomCache.js +11 -4
  512. package/lib/module/classes/HMSRoomCache.js.map +1 -1
  513. package/lib/module/classes/HMSRoomUpdate.js +1 -0
  514. package/lib/module/classes/HMSRoomUpdate.js.map +1 -1
  515. package/lib/module/classes/HMSRtmpStreamingState.js +5 -5
  516. package/lib/module/classes/HMSRtmpStreamingState.js.map +1 -1
  517. package/lib/module/classes/HMSRtmpVideoResolution.js +16 -3
  518. package/lib/module/classes/HMSRtmpVideoResolution.js.map +1 -1
  519. package/lib/module/classes/HMSSDK.js +1314 -328
  520. package/lib/module/classes/HMSSDK.js.map +1 -1
  521. package/lib/module/classes/HMSScreenBroadcastAudioReceiverNode.js.map +1 -1
  522. package/lib/module/classes/HMSServerRecordingState.js +5 -3
  523. package/lib/module/classes/HMSServerRecordingState.js.map +1 -1
  524. package/lib/module/classes/HMSSessionStore.js +19 -22
  525. package/lib/module/classes/HMSSessionStore.js.map +1 -1
  526. package/lib/module/classes/HMSSimulcastLayerDefinition.js +3 -3
  527. package/lib/module/classes/HMSSimulcastLayerDefinition.js.map +1 -1
  528. package/lib/module/classes/HMSSimulcastLayerSettings.js +3 -3
  529. package/lib/module/classes/HMSSimulcastLayerSettings.js.map +1 -1
  530. package/lib/module/classes/HMSSimulcastLayerSettingsPolicy.js +3 -3
  531. package/lib/module/classes/HMSSimulcastLayerSettingsPolicy.js.map +1 -1
  532. package/lib/module/classes/HMSSimulcastSettings.js +3 -3
  533. package/lib/module/classes/HMSSimulcastSettings.js.map +1 -1
  534. package/lib/module/classes/HMSSimulcastSettingsPolicy.js +3 -3
  535. package/lib/module/classes/HMSSimulcastSettingsPolicy.js.map +1 -1
  536. package/lib/module/classes/HMSSpeaker.js +3 -3
  537. package/lib/module/classes/HMSSpeaker.js.map +1 -1
  538. package/lib/module/classes/HMSStreamingState.js +9 -0
  539. package/lib/module/classes/HMSStreamingState.js.map +1 -0
  540. package/lib/module/classes/HMSSubscribeDegradationPolicy.js +3 -3
  541. package/lib/module/classes/HMSSubscribeDegradationPolicy.js.map +1 -1
  542. package/lib/module/classes/HMSSubscribeSettings.js +3 -3
  543. package/lib/module/classes/HMSSubscribeSettings.js.map +1 -1
  544. package/lib/module/classes/HMSTrack.js +16 -3
  545. package/lib/module/classes/HMSTrack.js.map +1 -1
  546. package/lib/module/classes/HMSTrackSettings.js +13 -3
  547. package/lib/module/classes/HMSTrackSettings.js.map +1 -1
  548. package/lib/module/classes/HMSTrackSettingsInitState.js +9 -0
  549. package/lib/module/classes/HMSTrackSettingsInitState.js.map +1 -1
  550. package/lib/module/classes/HMSTrackSource.js +10 -0
  551. package/lib/module/classes/HMSTrackSource.js.map +1 -1
  552. package/lib/module/classes/HMSTrackType.js +7 -0
  553. package/lib/module/classes/HMSTrackType.js.map +1 -1
  554. package/lib/module/classes/HMSTrackUpdate.js.map +1 -1
  555. package/lib/module/classes/HMSUpdateListenerActions.js +43 -3
  556. package/lib/module/classes/HMSUpdateListenerActions.js.map +1 -1
  557. package/lib/module/classes/HMSVideoCodec.js.map +1 -1
  558. package/lib/module/classes/HMSVideoResolution.js +3 -3
  559. package/lib/module/classes/HMSVideoResolution.js.map +1 -1
  560. package/lib/module/classes/HMSVideoSettings.js +3 -3
  561. package/lib/module/classes/HMSVideoSettings.js.map +1 -1
  562. package/lib/module/classes/HMSVideoTrack.js +20 -3
  563. package/lib/module/classes/HMSVideoTrack.js.map +1 -1
  564. package/lib/module/classes/HMSVideoTrackSettings.js +18 -7
  565. package/lib/module/classes/HMSVideoTrackSettings.js.map +1 -1
  566. package/lib/module/classes/HMSVideoViewMode.js.map +1 -1
  567. package/lib/module/classes/HmsView.js +77 -25
  568. package/lib/module/classes/HmsView.js.map +1 -1
  569. package/lib/module/classes/polls/DecodedPollLeaderboardResponse.js +2 -0
  570. package/lib/module/classes/polls/DecodedPollLeaderboardResponse.js.map +1 -0
  571. package/lib/module/classes/polls/HMSPoll.js +2 -0
  572. package/lib/module/classes/polls/HMSPoll.js.map +1 -0
  573. package/lib/module/classes/polls/HMSPollCategory.js +6 -0
  574. package/lib/module/classes/polls/HMSPollCategory.js.map +1 -0
  575. package/lib/module/classes/polls/HMSPollCreateParams.js +2 -0
  576. package/lib/module/classes/polls/HMSPollCreateParams.js.map +1 -0
  577. package/lib/module/classes/polls/HMSPollLeaderboardEntry.js +2 -0
  578. package/lib/module/classes/polls/HMSPollLeaderboardEntry.js.map +1 -0
  579. package/lib/module/classes/polls/HMSPollLeaderboardSummary.js +2 -0
  580. package/lib/module/classes/polls/HMSPollLeaderboardSummary.js.map +1 -0
  581. package/lib/module/classes/polls/HMSPollQuestion.js +2 -0
  582. package/lib/module/classes/polls/HMSPollQuestion.js.map +1 -0
  583. package/lib/module/classes/polls/HMSPollQuestionAnswer.js +2 -0
  584. package/lib/module/classes/polls/HMSPollQuestionAnswer.js.map +1 -0
  585. package/lib/module/classes/polls/HMSPollQuestionCreateParams.js +2 -0
  586. package/lib/module/classes/polls/HMSPollQuestionCreateParams.js.map +1 -0
  587. package/lib/module/classes/polls/HMSPollQuestionOption.js +2 -0
  588. package/lib/module/classes/polls/HMSPollQuestionOption.js.map +1 -0
  589. package/lib/module/classes/polls/HMSPollQuestionOptionCreateParams.js +2 -0
  590. package/lib/module/classes/polls/HMSPollQuestionOptionCreateParams.js.map +1 -0
  591. package/lib/module/classes/polls/HMSPollQuestionQuizOptionCreateParams.js +2 -0
  592. package/lib/module/classes/polls/HMSPollQuestionQuizOptionCreateParams.js.map +1 -0
  593. package/lib/module/classes/polls/HMSPollQuestionResponse.js +2 -0
  594. package/lib/module/classes/polls/HMSPollQuestionResponse.js.map +1 -0
  595. package/lib/module/classes/polls/HMSPollQuestionResponseCreateParams.js +2 -0
  596. package/lib/module/classes/polls/HMSPollQuestionResponseCreateParams.js.map +1 -0
  597. package/lib/module/classes/polls/HMSPollQuestionResponseResult.js +2 -0
  598. package/lib/module/classes/polls/HMSPollQuestionResponseResult.js.map +1 -0
  599. package/lib/module/classes/polls/HMSPollQuestionResult.js +2 -0
  600. package/lib/module/classes/polls/HMSPollQuestionResult.js.map +1 -0
  601. package/lib/module/classes/polls/HMSPollQuestionType.js +8 -0
  602. package/lib/module/classes/polls/HMSPollQuestionType.js.map +1 -0
  603. package/lib/module/classes/polls/HMSPollResponsePeerInfo.js +2 -0
  604. package/lib/module/classes/polls/HMSPollResponsePeerInfo.js.map +1 -0
  605. package/lib/module/classes/polls/HMSPollResult.js +2 -0
  606. package/lib/module/classes/polls/HMSPollResult.js.map +1 -0
  607. package/lib/module/classes/polls/HMSPollState.js +7 -0
  608. package/lib/module/classes/polls/HMSPollState.js.map +1 -0
  609. package/lib/module/classes/polls/HMSPollType.js +6 -0
  610. package/lib/module/classes/polls/HMSPollType.js.map +1 -0
  611. package/lib/module/classes/polls/HMSPollUpdateType.js +7 -0
  612. package/lib/module/classes/polls/HMSPollUpdateType.js.map +1 -0
  613. package/lib/module/classes/polls/HMSPollUserTrackingMode.js +7 -0
  614. package/lib/module/classes/polls/HMSPollUserTrackingMode.js.map +1 -0
  615. package/lib/module/classes/polls/PollLeaderboardResponse.js +2 -0
  616. package/lib/module/classes/polls/PollLeaderboardResponse.js.map +1 -0
  617. package/lib/module/classes/transcriptions/HMSTranscript.js +2 -0
  618. package/lib/module/classes/transcriptions/HMSTranscript.js.map +1 -0
  619. package/lib/module/classes/transcriptions/OnTranscriptionError.js +2 -0
  620. package/lib/module/classes/transcriptions/OnTranscriptionError.js.map +1 -0
  621. package/lib/module/classes/transcriptions/TranscriptionState.js +8 -0
  622. package/lib/module/classes/transcriptions/TranscriptionState.js.map +1 -0
  623. package/lib/module/classes/transcriptions/Transcriptions.js +2 -0
  624. package/lib/module/classes/transcriptions/Transcriptions.js.map +1 -0
  625. package/lib/module/classes/transcriptions/TranscriptionsMode.js +6 -0
  626. package/lib/module/classes/transcriptions/TranscriptionsMode.js.map +1 -0
  627. package/lib/module/classes/transcriptions/index.js +6 -0
  628. package/lib/module/classes/transcriptions/index.js.map +1 -0
  629. package/lib/module/classes/whiteboard/HMSWhiteboard.js +2 -0
  630. package/lib/module/classes/whiteboard/HMSWhiteboard.js.map +1 -0
  631. package/lib/module/classes/whiteboard/HMSWhiteboardListenerActions.js +5 -0
  632. package/lib/module/classes/whiteboard/HMSWhiteboardListenerActions.js.map +1 -0
  633. package/lib/module/classes/whiteboard/HMSWhiteboardState.js +6 -0
  634. package/lib/module/classes/whiteboard/HMSWhiteboardState.js.map +1 -0
  635. package/lib/module/classes/whiteboard/HMSWhiteboardUpdateType.js +6 -0
  636. package/lib/module/classes/whiteboard/HMSWhiteboardUpdateType.js.map +1 -0
  637. package/lib/module/classes/whiteboard/index.js +4 -0
  638. package/lib/module/classes/whiteboard/index.js.map +1 -0
  639. package/lib/module/classes/whiteboard/registerCallbacks.js +18 -0
  640. package/lib/module/classes/whiteboard/registerCallbacks.js.map +1 -0
  641. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js +157 -49
  642. package/lib/module/components/HMSHLSPlayer/HMSHLSPlayer.js.map +1 -1
  643. package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js +3 -3
  644. package/lib/module/components/HMSHLSPlayer/RCTHMSHLSPlayer.js.map +1 -1
  645. package/lib/module/components/HMSHLSPlayer/hooks.js +16 -4
  646. package/lib/module/components/HMSHLSPlayer/hooks.js.map +1 -1
  647. package/lib/module/components/HMSHLSPlayer/index.js +1 -1
  648. package/lib/module/components/HMSHLSPlayer/index.js.map +1 -1
  649. package/lib/module/hooks/hmsviews.js +12 -0
  650. package/lib/module/hooks/hmsviews.js.map +1 -0
  651. package/lib/module/hooks/polls.js +12 -0
  652. package/lib/module/hooks/polls.js.map +1 -0
  653. package/lib/module/hooks/useHMSPeerUpdates.js +1 -2
  654. package/lib/module/hooks/useHMSPeerUpdates.js.map +1 -1
  655. package/lib/module/index.js +29 -2
  656. package/lib/module/index.js.map +1 -1
  657. package/lib/module/modules/HMSManagerModule.js +3 -0
  658. package/lib/module/modules/HMSManagerModule.js.map +1 -0
  659. package/lib/module/specs/HMSHLSPlayerNativeComponent.js +69 -0
  660. package/lib/module/specs/HMSHLSPlayerNativeComponent.js.map +1 -0
  661. package/lib/module/specs/HMSViewNativeComponent.js +49 -0
  662. package/lib/module/specs/HMSViewNativeComponent.js.map +1 -0
  663. package/lib/module/specs/NativeHMSManager.js +33 -0
  664. package/lib/module/specs/NativeHMSManager.js.map +1 -0
  665. package/lib/module/stores/hls-player-playback-slice.js +10 -0
  666. package/lib/module/stores/hls-player-playback-slice.js.map +1 -1
  667. package/lib/module/stores/hls-player-stats-store.js +27 -15
  668. package/lib/module/stores/hls-player-stats-store.js.map +1 -1
  669. package/lib/module/stores/hms-interactivity-store.js +15 -0
  670. package/lib/module/stores/hms-interactivity-store.js.map +1 -0
  671. package/lib/module/stores/hms-polls-slice.js +12 -0
  672. package/lib/module/stores/hms-polls-slice.js.map +1 -0
  673. package/lib/module/stores/hms-store.js +5 -5
  674. package/lib/module/stores/hms-store.js.map +1 -1
  675. package/lib/module/stores/hmsviews-slice.js +12 -0
  676. package/lib/module/stores/hmsviews-slice.js.map +1 -0
  677. package/lib/module/stores/types.js.map +1 -1
  678. package/lib/module/types.js +3 -1
  679. package/lib/module/types.js.map +1 -1
  680. package/lib/module/utils/emitter/EventEmitter.js +23 -7
  681. package/lib/module/utils/emitter/EventEmitter.js.map +1 -1
  682. package/lib/module/utils/emitter/_EmitterSubscription.js +3 -3
  683. package/lib/module/utils/emitter/_EmitterSubscription.js.map +1 -1
  684. package/lib/module/utils/emitter/_EventSubscription.js +3 -3
  685. package/lib/module/utils/emitter/_EventSubscription.js.map +1 -1
  686. package/lib/module/utils/emitter/_EventSubscriptionVendor.js +3 -4
  687. package/lib/module/utils/emitter/_EventSubscriptionVendor.js.map +1 -1
  688. package/lib/module/utils/index.js.map +1 -1
  689. package/lib/module/utils/keyboard.js +38 -0
  690. package/lib/module/utils/keyboard.js.map +1 -0
  691. package/lib/module/utils/notification.js +5 -0
  692. package/lib/module/utils/notification.js.map +1 -0
  693. package/lib/module/utils/windowController.js +22 -0
  694. package/lib/module/utils/windowController.js.map +1 -0
  695. package/lib/typescript/classes/HMSAudioDevice.d.ts +14 -0
  696. package/lib/typescript/classes/HMSAudioMixingMode.d.ts +11 -0
  697. package/lib/typescript/classes/HMSAudioTrack.d.ts +9 -0
  698. package/lib/typescript/classes/HMSAudioTrackSettings.d.ts +9 -0
  699. package/lib/typescript/classes/HMSBrowserRecordingState.d.ts +3 -0
  700. package/lib/typescript/classes/HMSCameraFacing.d.ts +11 -0
  701. package/lib/typescript/classes/HMSConfig.d.ts +27 -0
  702. package/lib/typescript/classes/HMSEncoder.d.ts +5 -0
  703. package/lib/typescript/classes/HMSException.d.ts +18 -0
  704. package/lib/typescript/classes/HMSHLSPlaylistType.d.ts +4 -0
  705. package/lib/typescript/classes/HMSHLSRecordingState.d.ts +6 -4
  706. package/lib/typescript/classes/HMSHLSStreamingState.d.ts +8 -0
  707. package/lib/typescript/classes/HMSHLSTimedMetadata.d.ts +16 -0
  708. package/lib/typescript/classes/HMSHLSVariant.d.ts +3 -0
  709. package/lib/typescript/classes/HMSIOSAudioMode.d.ts +15 -0
  710. package/lib/typescript/classes/HMSInteractivityCenter.d.ts +62 -0
  711. package/lib/typescript/classes/HMSInteractivityEncoder.d.ts +9 -0
  712. package/lib/typescript/classes/HMSLogAlarmManager.d.ts +12 -0
  713. package/lib/typescript/classes/HMSLogLevel.d.ts +12 -0
  714. package/lib/typescript/classes/HMSLogSettings.d.ts +14 -0
  715. package/lib/typescript/classes/HMSNetworkQuality.d.ts +11 -0
  716. package/lib/typescript/classes/HMSNoiseCancellationPlugin.d.ts +87 -0
  717. package/lib/typescript/classes/HMSPIPConfig.d.ts +47 -0
  718. package/lib/typescript/classes/HMSPIPListenerActions.d.ts +17 -0
  719. package/lib/typescript/classes/HMSPeer.d.ts +144 -1
  720. package/lib/typescript/classes/HMSPeerListIterator.d.ts +3 -1
  721. package/lib/typescript/classes/HMSPeerListIteratorOptions.d.ts +19 -0
  722. package/lib/typescript/classes/HMSPeerType.d.ts +16 -0
  723. package/lib/typescript/classes/HMSPeersCache.d.ts +2 -0
  724. package/lib/typescript/classes/HMSPermissions.d.ts +18 -0
  725. package/lib/typescript/classes/HMSPollsListenerActions.d.ts +3 -0
  726. package/lib/typescript/classes/HMSRTMPConfig.d.ts +14 -0
  727. package/lib/typescript/classes/HMSRecordingState.d.ts +9 -0
  728. package/lib/typescript/classes/HMSRole.d.ts +17 -0
  729. package/lib/typescript/classes/HMSRoom.d.ts +3 -0
  730. package/lib/typescript/classes/HMSRoomUpdate.d.ts +2 -1
  731. package/lib/typescript/classes/HMSRtmpStreamingState.d.ts +3 -2
  732. package/lib/typescript/classes/HMSRtmpVideoResolution.d.ts +13 -0
  733. package/lib/typescript/classes/HMSSDK.d.ts +1123 -249
  734. package/lib/typescript/classes/HMSServerRecordingState.d.ts +3 -0
  735. package/lib/typescript/classes/HMSSessionStore.d.ts +23 -22
  736. package/lib/typescript/classes/HMSStreamingState.d.ts +7 -0
  737. package/lib/typescript/classes/HMSTrack.d.ts +13 -0
  738. package/lib/typescript/classes/HMSTrackSettings.d.ts +10 -0
  739. package/lib/typescript/classes/HMSTrackSettingsInitState.d.ts +11 -0
  740. package/lib/typescript/classes/HMSTrackSource.d.ts +10 -0
  741. package/lib/typescript/classes/HMSTrackType.d.ts +7 -0
  742. package/lib/typescript/classes/HMSUpdateListenerActions.d.ts +290 -3
  743. package/lib/typescript/classes/HMSVideoTrack.d.ts +17 -0
  744. package/lib/typescript/classes/HMSVideoTrackSettings.d.ts +23 -2
  745. package/lib/typescript/classes/HmsView.d.ts +16 -0
  746. package/lib/typescript/classes/polls/DecodedPollLeaderboardResponse.d.ts +37 -0
  747. package/lib/typescript/classes/polls/HMSPoll.d.ts +73 -0
  748. package/lib/typescript/classes/polls/HMSPollCategory.d.ts +10 -0
  749. package/lib/typescript/classes/polls/HMSPollCreateParams.d.ts +6 -0
  750. package/lib/typescript/classes/polls/HMSPollLeaderboardEntry.d.ts +9 -0
  751. package/lib/typescript/classes/polls/HMSPollLeaderboardSummary.d.ts +7 -0
  752. package/lib/typescript/classes/polls/HMSPollQuestion.d.ts +61 -0
  753. package/lib/typescript/classes/polls/HMSPollQuestionAnswer.d.ts +17 -0
  754. package/lib/typescript/classes/polls/HMSPollQuestionCreateParams.d.ts +25 -0
  755. package/lib/typescript/classes/polls/HMSPollQuestionOption.d.ts +21 -0
  756. package/lib/typescript/classes/polls/HMSPollQuestionOptionCreateParams.d.ts +3 -0
  757. package/lib/typescript/classes/polls/HMSPollQuestionQuizOptionCreateParams.d.ts +4 -0
  758. package/lib/typescript/classes/polls/HMSPollQuestionResponse.d.ts +47 -0
  759. package/lib/typescript/classes/polls/HMSPollQuestionResponseCreateParams.d.ts +2 -0
  760. package/lib/typescript/classes/polls/HMSPollQuestionResponseResult.d.ts +17 -0
  761. package/lib/typescript/classes/polls/HMSPollQuestionResult.d.ts +29 -0
  762. package/lib/typescript/classes/polls/HMSPollQuestionType.d.ts +18 -0
  763. package/lib/typescript/classes/polls/HMSPollResponsePeerInfo.d.ts +21 -0
  764. package/lib/typescript/classes/polls/HMSPollResult.d.ts +22 -0
  765. package/lib/typescript/classes/polls/HMSPollState.d.ts +14 -0
  766. package/lib/typescript/classes/polls/HMSPollType.d.ts +4 -0
  767. package/lib/typescript/classes/polls/HMSPollUpdateType.d.ts +5 -0
  768. package/lib/typescript/classes/polls/HMSPollUserTrackingMode.d.ts +14 -0
  769. package/lib/typescript/classes/polls/PollLeaderboardResponse.d.ts +7 -0
  770. package/lib/typescript/classes/transcriptions/HMSTranscript.d.ts +8 -0
  771. package/lib/typescript/classes/transcriptions/OnTranscriptionError.d.ts +4 -0
  772. package/lib/typescript/classes/transcriptions/TranscriptionState.d.ts +6 -0
  773. package/lib/typescript/classes/transcriptions/Transcriptions.d.ts +12 -0
  774. package/lib/typescript/classes/transcriptions/TranscriptionsMode.d.ts +4 -0
  775. package/lib/typescript/classes/transcriptions/index.d.ts +5 -0
  776. package/lib/typescript/classes/whiteboard/HMSWhiteboard.d.ts +10 -0
  777. package/lib/typescript/classes/whiteboard/HMSWhiteboardListenerActions.d.ts +3 -0
  778. package/lib/typescript/classes/whiteboard/HMSWhiteboardState.d.ts +4 -0
  779. package/lib/typescript/classes/whiteboard/HMSWhiteboardUpdateType.d.ts +4 -0
  780. package/lib/typescript/classes/whiteboard/index.d.ts +3 -0
  781. package/lib/typescript/classes/whiteboard/registerCallbacks.d.ts +8 -0
  782. package/lib/typescript/components/HMSHLSPlayer/HMSHLSPlayer.d.ts +6 -0
  783. package/lib/typescript/components/HMSHLSPlayer/RCTHMSHLSPlayer.d.ts +11 -9
  784. package/lib/typescript/components/HMSHLSPlayer/hooks.d.ts +5 -0
  785. package/lib/typescript/components/HMSHLSPlayer/index.d.ts +1 -1
  786. package/lib/typescript/hooks/hmsviews.d.ts +3 -0
  787. package/lib/typescript/hooks/polls.d.ts +3 -0
  788. package/lib/typescript/index.d.ts +29 -2
  789. package/lib/typescript/specs/HMSHLSPlayerNativeComponent.d.ts +115 -0
  790. package/lib/typescript/specs/HMSViewNativeComponent.d.ts +97 -0
  791. package/lib/typescript/specs/NativeHMSManager.d.ts +147 -0
  792. package/lib/typescript/stores/hls-player-stats-store.d.ts +4 -3
  793. package/lib/typescript/stores/hms-interactivity-store.d.ts +9 -0
  794. package/lib/typescript/stores/hms-polls-slice.d.ts +5 -0
  795. package/lib/typescript/stores/hms-store.d.ts +4 -3
  796. package/lib/typescript/stores/hmsviews-slice.d.ts +5 -0
  797. package/lib/typescript/stores/types.d.ts +27 -3
  798. package/lib/typescript/types.d.ts +18 -5
  799. package/lib/typescript/utils/emitter/EventEmitter.d.ts +7 -0
  800. package/lib/typescript/utils/keyboard.d.ts +16 -0
  801. package/lib/typescript/utils/notification.d.ts +5 -0
  802. package/lib/typescript/utils/windowController.d.ts +10 -0
  803. package/package.json +49 -7
  804. package/react-native-hms.podspec +56 -2
  805. package/sdk-versions.json +4 -3
  806. package/src/classes/HMSAudioDevice.ts +18 -0
  807. package/src/classes/HMSAudioMixingMode.ts +11 -0
  808. package/src/classes/HMSAudioTrack.ts +9 -0
  809. package/src/classes/HMSAudioTrackSettings.ts +11 -0
  810. package/src/classes/HMSBrowserRecordingState.ts +4 -0
  811. package/src/classes/HMSCameraControl.ts +1 -1
  812. package/src/classes/HMSCameraFacing.ts +11 -0
  813. package/src/classes/HMSConfig.ts +27 -0
  814. package/src/classes/HMSEncoder.ts +57 -4
  815. package/src/classes/HMSException.ts +18 -0
  816. package/src/classes/HMSHLSPlaylistType.ts +4 -0
  817. package/src/classes/HMSHLSRecordingState.ts +9 -7
  818. package/src/classes/HMSHLSStreamingState.ts +15 -1
  819. package/src/classes/HMSHLSTimedMetadata.ts +16 -0
  820. package/src/classes/HMSHLSVariant.ts +5 -0
  821. package/src/classes/HMSIOSAudioMode.ts +15 -0
  822. package/src/classes/HMSInteractivityCenter.ts +246 -0
  823. package/src/classes/HMSInteractivityEncoder.ts +92 -0
  824. package/src/classes/HMSLogAlarmManager.ts +12 -0
  825. package/src/classes/HMSLogLevel.ts +12 -0
  826. package/src/classes/HMSLogSettings.ts +14 -0
  827. package/src/classes/HMSNativeEventEmitter.ts +1 -7
  828. package/src/classes/HMSNativeEventListener.ts +1 -1
  829. package/src/classes/HMSNetworkQuality.ts +11 -0
  830. package/src/classes/HMSNoiseCancellationPlugin.ts +162 -0
  831. package/src/classes/HMSPIPConfig.ts +54 -0
  832. package/src/classes/HMSPIPListenerActions.ts +18 -0
  833. package/src/classes/HMSPeer.ts +193 -3
  834. package/src/classes/HMSPeerListIterator.ts +29 -7
  835. package/src/classes/HMSPeerListIteratorOptions.ts +21 -0
  836. package/src/classes/HMSPeerType.ts +20 -0
  837. package/src/classes/HMSPeersCache.ts +3 -1
  838. package/src/classes/HMSPermissions.ts +25 -0
  839. package/src/classes/HMSPollsListenerActions.ts +3 -0
  840. package/src/classes/HMSRTMPConfig.ts +14 -0
  841. package/src/classes/HMSRecordingState.ts +9 -0
  842. package/src/classes/HMSRole.ts +17 -0
  843. package/src/classes/HMSRoom.ts +27 -0
  844. package/src/classes/HMSRoomCache.ts +10 -1
  845. package/src/classes/HMSRoomUpdate.ts +1 -0
  846. package/src/classes/HMSRtmpStreamingState.ts +4 -3
  847. package/src/classes/HMSRtmpVideoResolution.ts +13 -0
  848. package/src/classes/HMSSDK.tsx +1379 -345
  849. package/src/classes/HMSServerRecordingState.ts +4 -0
  850. package/src/classes/HMSSessionStore.ts +34 -45
  851. package/src/classes/HMSStreamingState.ts +7 -0
  852. package/src/classes/HMSTrack.ts +13 -0
  853. package/src/classes/HMSTrackSettings.ts +10 -0
  854. package/src/classes/HMSTrackSettingsInitState.ts +11 -0
  855. package/src/classes/HMSTrackSource.ts +10 -0
  856. package/src/classes/HMSTrackType.ts +7 -0
  857. package/src/classes/HMSUpdateListenerActions.ts +313 -3
  858. package/src/classes/HMSVideoTrack.ts +17 -0
  859. package/src/classes/HMSVideoTrackSettings.ts +27 -2
  860. package/src/classes/HmsView.tsx +92 -57
  861. package/src/classes/polls/DecodedPollLeaderboardResponse.ts +43 -0
  862. package/src/classes/polls/HMSPoll.ts +99 -0
  863. package/src/classes/polls/HMSPollCategory.ts +11 -0
  864. package/src/classes/polls/HMSPollCreateParams.ts +19 -0
  865. package/src/classes/polls/HMSPollLeaderboardEntry.ts +10 -0
  866. package/src/classes/polls/HMSPollLeaderboardSummary.ts +7 -0
  867. package/src/classes/polls/HMSPollQuestion.ts +92 -0
  868. package/src/classes/polls/HMSPollQuestionAnswer.ts +29 -0
  869. package/src/classes/polls/HMSPollQuestionCreateParams.ts +36 -0
  870. package/src/classes/polls/HMSPollQuestionOption.ts +24 -0
  871. package/src/classes/polls/HMSPollQuestionOptionCreateParams.ts +8 -0
  872. package/src/classes/polls/HMSPollQuestionQuizOptionCreateParams.ts +6 -0
  873. package/src/classes/polls/HMSPollQuestionResponse.ts +72 -0
  874. package/src/classes/polls/HMSPollQuestionResponseCreateParams.ts +6 -0
  875. package/src/classes/polls/HMSPollQuestionResponseResult.ts +19 -0
  876. package/src/classes/polls/HMSPollQuestionResult.ts +41 -0
  877. package/src/classes/polls/HMSPollQuestionType.ts +21 -0
  878. package/src/classes/polls/HMSPollResponsePeerInfo.ts +24 -0
  879. package/src/classes/polls/HMSPollResult.ts +26 -0
  880. package/src/classes/polls/HMSPollState.ts +16 -0
  881. package/src/classes/polls/HMSPollType.ts +4 -0
  882. package/src/classes/polls/HMSPollUpdateType.ts +5 -0
  883. package/src/classes/polls/HMSPollUserTrackingMode.ts +16 -0
  884. package/src/classes/polls/PollLeaderboardResponse.ts +8 -0
  885. package/src/classes/transcriptions/HMSTranscript.ts +13 -0
  886. package/src/classes/transcriptions/OnTranscriptionError.ts +5 -0
  887. package/src/classes/transcriptions/TranscriptionState.ts +6 -0
  888. package/src/classes/transcriptions/Transcriptions.ts +19 -0
  889. package/src/classes/transcriptions/TranscriptionsMode.ts +4 -0
  890. package/src/classes/transcriptions/index.ts +5 -0
  891. package/src/classes/whiteboard/HMSWhiteboard.tsx +16 -0
  892. package/src/classes/whiteboard/HMSWhiteboardListenerActions.ts +3 -0
  893. package/src/classes/whiteboard/HMSWhiteboardState.tsx +4 -0
  894. package/src/classes/whiteboard/HMSWhiteboardUpdateType.tsx +4 -0
  895. package/src/classes/whiteboard/index.ts +3 -0
  896. package/src/classes/whiteboard/registerCallbacks.ts +34 -0
  897. package/src/components/HMSHLSPlayer/HMSHLSPlayer.tsx +176 -92
  898. package/src/components/HMSHLSPlayer/RCTHMSHLSPlayer.ts +20 -13
  899. package/src/components/HMSHLSPlayer/hooks.ts +22 -4
  900. package/src/components/HMSHLSPlayer/index.ts +3 -0
  901. package/src/hooks/hmsviews.ts +15 -0
  902. package/src/hooks/polls.ts +14 -0
  903. package/src/index.ts +38 -3
  904. package/src/modules/HMSManagerModule.ts +5 -0
  905. package/src/specs/HMSHLSPlayerNativeComponent.ts +203 -0
  906. package/src/specs/HMSViewNativeComponent.ts +119 -0
  907. package/src/specs/NativeHMSManager.ts +307 -0
  908. package/src/stores/hls-player-playback-slice.ts +11 -0
  909. package/src/stores/hls-player-stats-store.ts +28 -18
  910. package/src/stores/hms-interactivity-store.ts +18 -0
  911. package/src/stores/hms-polls-slice.ts +20 -0
  912. package/src/stores/hms-store.ts +2 -0
  913. package/src/stores/hmsviews-slice.ts +20 -0
  914. package/src/stores/types.ts +50 -4
  915. package/src/types.ts +28 -3
  916. package/src/utils/emitter/EventEmitter.ts +26 -0
  917. package/src/utils/keyboard.ts +37 -0
  918. package/src/utils/notification.ts +10 -0
  919. package/src/utils/windowController.ts +23 -0
  920. package/android/.gradle/6.7.1/executionHistory/executionHistory.lock +0 -0
  921. package/android/.gradle/6.7.1/fileChanges/last-build.bin +0 -0
  922. package/android/.gradle/6.7.1/fileHashes/fileHashes.lock +0 -0
  923. package/android/.gradle/6.7.1/gc.properties +0 -0
  924. package/android/.gradle/6.9/executionHistory/executionHistory.bin +0 -0
  925. package/android/.gradle/6.9/executionHistory/executionHistory.lock +0 -0
  926. package/android/.gradle/6.9/fileChanges/last-build.bin +0 -0
  927. package/android/.gradle/6.9/fileHashes/fileHashes.bin +0 -0
  928. package/android/.gradle/6.9/fileHashes/fileHashes.lock +0 -0
  929. package/android/.gradle/6.9/fileHashes/resourceHashesCache.bin +0 -0
  930. package/android/.gradle/6.9/gc.properties +0 -0
  931. package/android/.gradle/6.9/javaCompile/classAnalysis.bin +0 -0
  932. package/android/.gradle/6.9/javaCompile/jarAnalysis.bin +0 -0
  933. package/android/.gradle/6.9/javaCompile/javaCompile.lock +0 -0
  934. package/android/.gradle/6.9/javaCompile/taskHistory.bin +0 -0
  935. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  936. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  937. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  938. package/android/.gradle/checksums/checksums.lock +0 -0
  939. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  940. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  941. package/android/.gradle/configuration-cache/gc.properties +0 -0
  942. package/android/.gradle/vcs-1/gc.properties +0 -0
  943. package/android/.idea/compiler.xml +0 -6
  944. package/android/.idea/gradle.xml +0 -18
  945. package/android/.idea/jarRepositories.xml +0 -45
  946. package/android/.idea/misc.xml +0 -10
  947. package/android/.idea/vcs.xml +0 -6
  948. package/android/local.properties +0 -8
  949. package/android/src/main/java/com/reactnativehmssdk/HMSHLSPlayerManager.kt +0 -114
  950. package/android/src/main/java/com/reactnativehmssdk/HMSSDKViewManager.kt +0 -115
  951. package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  952. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  953. package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  954. package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  955. package/lib/commonjs/classes/HMSManagerModule.js +0 -18
  956. package/lib/commonjs/classes/HMSManagerModule.js.map +0 -1
  957. package/lib/module/classes/HMSManagerModule.js +0 -11
  958. package/lib/module/classes/HMSManagerModule.js.map +0 -1
  959. package/src/classes/HMSManagerModule.ts +0 -18
  960. /package/lib/typescript/{classes → modules}/HMSManagerModule.d.ts +0 -0
@@ -9,34 +9,46 @@ var _reactNative = require("react-native");
9
9
  var _HMSEncoder = require("./HMSEncoder");
10
10
  var _HMSHelper = require("./HMSHelper");
11
11
  var _HMSLogger = require("./HMSLogger");
12
- var _HMSTrackType = require("./HMSTrackType");
13
12
  var _HMSUpdateListenerActions = require("./HMSUpdateListenerActions");
14
13
  var _HmsView = require("./HmsView");
15
- var _HMSManagerModule = _interopRequireDefault(require("./HMSManagerModule"));
14
+ var _HMSManagerModule = _interopRequireDefault(require("../modules/HMSManagerModule"));
16
15
  var _HMSPIPListenerActions = require("./HMSPIPListenerActions");
17
16
  var _HMSNativeEventListener = _interopRequireDefault(require("./HMSNativeEventListener"));
18
17
  var _HMSPeersCache = require("./HMSPeersCache");
19
18
  var _HMSRoomCache = require("./HMSRoomCache");
20
19
  var _HMSPeerUpdate = require("./HMSPeerUpdate");
21
20
  var _HMSSessionStore = require("./HMSSessionStore");
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
25
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
26
- // import type { HMSPeerListIteratorOptions } from './HMSPeerListIteratorOptions';
27
- // import { HMSPeerListIterator } from './HMSPeerListIterator';
28
- // TODO: Rename to HMSPIPConfig & to be moved to a separate file
21
+ var _HMSPeerListIterator = require("./HMSPeerListIterator");
22
+ var _HMSInteractivityCenter = require("./HMSInteractivityCenter");
23
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
24
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
25
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
26
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
29
27
  const ReactNativeVersion = require('react-native/Libraries/Core/ReactNativeVersion');
30
28
  let HmsSdk;
29
+
30
+ /**
31
+ * Represents the main SDK class for the 100ms (HMS) video conferencing service in a React Native application.
32
+ * This class provides methods to manage the video conferencing lifecycle including joining a room, leaving a room,
33
+ * managing streams, and handling events.
34
+ *
35
+ * @export
36
+ * @class HMSSDK
37
+ * @example
38
+ * const hmsInstance = await HMSSDK.build();
39
+ * await hmsInstance.join({ authToken: 'your_auth_token', username: 'John Appleseed' });
40
+ * @see https://www.100ms.live/docs/react-native/v2/quickstart/quickstart
41
+ */
31
42
  class HMSSDK {
32
43
  constructor(id) {
33
- var _this = this;
34
44
  _defineProperty(this, "id", void 0);
35
- _defineProperty(this, "muteStatus", void 0);
45
+ _defineProperty(this, "_interactivityCenter", null);
36
46
  _defineProperty(this, "appStateSubscription", void 0);
37
47
  _defineProperty(this, "onPreviewDelegate", void 0);
38
48
  _defineProperty(this, "onJoinDelegate", void 0);
49
+ _defineProperty(this, "onPermissionsRequestedDelegate", void 0);
39
50
  _defineProperty(this, "onRoomDelegate", void 0);
51
+ _defineProperty(this, "onTranscriptsDelegate", void 0);
40
52
  _defineProperty(this, "onPeerDelegate", void 0);
41
53
  _defineProperty(this, "onPeerListUpdatedDelegate", void 0);
42
54
  _defineProperty(this, "onTrackDelegate", void 0);
@@ -59,7 +71,20 @@ class HMSSDK {
59
71
  _defineProperty(this, "onPIPModeChangedDelegate", void 0);
60
72
  _defineProperty(this, "emitterSubscriptions", {});
61
73
  /**
62
- * - Calls removeListeners that in turn breaks all connections with native listeners.
74
+ * Asynchronously destroys the HMSSDK instance.
75
+ *
76
+ * - This method performs a series of cleanup actions before destroying the HMSSDK instance.
77
+ * - It logs the destruction process, clears both the HMS peers and room caches, removes all event listeners to prevent memory leaks, and finally calls the native
78
+ * `destroy` method on the `HMSManager` with the instance's ID.
79
+ * - This is typically used to ensure that all resources are properly released when the HMSSDK instance is no longer needed, such as when a user leaves a room or the application is shutting down.
80
+ *
81
+ * @returns {Promise<void>} A promise that resolves when the destruction process has completed.
82
+ * @throws {Error} If the HMSSDK instance cannot be destroyed.
83
+ *
84
+ * @example
85
+ * await hmsInstance.destroy();
86
+ *
87
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/install-the-sdk/hmssdk
63
88
  *
64
89
  * @memberof HMSSDK
65
90
  */
@@ -75,10 +100,23 @@ class HMSSDK {
75
100
  });
76
101
  });
77
102
  /**
78
- * - getAuthTokenByRoomCode function is used to get the Auth Token by Room Code
79
- *
80
- * checkout {@link https://www.100ms.live/docs/concepts/v2/concepts/rooms/room-codes/room-codes} for more info
81
- *
103
+ * Asynchronously retrieves an authentication token using the room code, user ID, and endpoint.
104
+ *
105
+ * This method is responsible for fetching an authentication token that is required to join a room in the HMS ecosystem.
106
+ * It makes a call to the HMSManager's `getAuthTokenByRoomCode` method, passing in the necessary parameters.
107
+ * The function logs the attempt and returns the token as a string.
108
+ *
109
+ * @param {string} roomCode - The unique code of the room for which the token is being requested.
110
+ * @param {string} [userId] - Optional. The user ID of the participant requesting the token. This can be used for identifying the user in the backend.
111
+ * @param {string} [endpoint] - Optional. The endpoint URL to which the token request is sent. This can be used to specify a different authentication server if needed.
112
+ * @returns {Promise<string>} A promise that resolves to the authentication token as a string.
113
+ * @throws {Error} If the authentication token cannot be retrieved.
114
+ * @example
115
+ * const authToken = await hmsInstance.getAuthTokenByRoomCode('room-code');
116
+ *
117
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods#getauthtokenbyroomcode
118
+ * @async
119
+ * @function getAuthTokenByRoomCode
82
120
  * @memberof HMSSDK
83
121
  */
84
122
  _defineProperty(this, "getAuthTokenByRoomCode", async (roomCode, userId, endpoint) => {
@@ -96,12 +134,23 @@ class HMSSDK {
96
134
  });
97
135
  });
98
136
  /**
99
- * takes an instance of [HMSConfig]{@link HMSConfig} and joins the room.
100
- * after joining the room user will start receiving the events and updates of the room.
137
+ * Asynchronously joins a room with the provided configuration
138
+ *
139
+ * This method is responsible for initiating the process of joining a room in the HMS ecosystem. It performs several key actions:
140
+ * - Logs the attempt to join with the provided configuration and instance ID.
141
+ * - Initializes the peers and room caches for the current session.
142
+ * - Calls the `join` method on the `HMSManager` with the provided configuration and the instance ID.
101
143
  *
102
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/join} for more info
144
+ * @param {HMSConfig} config - The configuration object required to join a room. This includes credentials, room details, and user information.
145
+ * @returns {Promise<void>} A promise that resolves when the join operation has been successfully initiated.
146
+ * @throws {Error} If the join operation cannot be completed.
103
147
  *
104
- * @param {HMSConfig} config
148
+ * @example
149
+ * await hmsInstance.join(hmsConfig);
150
+ *
151
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/join
152
+ * @async
153
+ * @function join
105
154
  * @memberof HMSSDK
106
155
  */
107
156
  _defineProperty(this, "join", async config => {
@@ -109,7 +158,6 @@ class HMSSDK {
109
158
  config,
110
159
  id: this.id
111
160
  });
112
- this.addAppStateListener();
113
161
  (0, _HMSPeersCache.setHmsPeersCache)(new _HMSPeersCache.HMSPeersCache(this.id));
114
162
  (0, _HMSRoomCache.setHmsRoomCache)(new _HMSRoomCache.HMSRoomCache(this.id));
115
163
  await _HMSManagerModule.default.join({
@@ -118,32 +166,61 @@ class HMSSDK {
118
166
  });
119
167
  });
120
168
  /**
121
- * - preview function is used to initiate a preview for the localPeer.
122
- * - We can call this function and wait for a response in previewListener, the response will contain previewTracks for local peer.
123
- *
124
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/preview} for more info
125
- *
126
- * @param {HMSConfig} config
169
+ * Initiates a preview for the local peer.
170
+ *
171
+ * This function triggers the preview process for the local peer, allowing the application to display
172
+ * preview tracks (e.g., video or audio tracks) before joining a room. The response from the previewListener
173
+ * will contain the preview tracks for the local peer, which can be used to render a preview UI.
174
+ *
175
+ * @param {HMSConfig} config - The configuration object required for previewing, including credentials and user details.
176
+ * @example
177
+ * // Example usage of the preview function
178
+ * const previewConfig = {
179
+ * authToken: "your_auth_token",
180
+ * userName: "John Doe",
181
+ * roomCode: "your_room_code"
182
+ * };
183
+ * hmsInstance.preview(previewConfig);
184
+ *
185
+ * @see https://www.100ms.live/docs/react-native/v2/features/preview
186
+ *
187
+ * @async
188
+ * @function preview
127
189
  * @memberof HMSSDK
128
190
  */
129
- _defineProperty(this, "preview", config => {
191
+ _defineProperty(this, "preview", async config => {
130
192
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function preview', {
131
193
  config,
132
194
  id: this.id
133
195
  });
134
- _HMSManagerModule.default.preview({
196
+ await _HMSManagerModule.default.preview({
135
197
  ...config,
136
198
  id: this.id
137
199
  });
138
200
  });
139
201
  /**
140
- * - HmsView is react component that takes trackId and starts showing that track on a tile.
141
- * - The appearance of tile is completely customizable with style prop.
142
- * - Scale type can determine how the incoming video will fit in the canvas check {@link HMSVideoViewMode} for more information.
143
- * - Mirror to flip the video vertically.
144
- * - Auto Simulcast to automatically select the best Streaming Quality of track if feature is enabled in Room.
202
+ * `HmsView` is a React component that renders a video track within a view.
203
+ *
204
+ * It utilizes the `HmsViewComponent` to display the media track specified by the `trackId`.
205
+ * This component is designed to be used with React's `forwardRef` to allow for ref forwarding,
206
+ * enabling direct interaction with the DOM element.
207
+ *
208
+ * Props:
209
+ * - `trackId`: The unique identifier for the track to be displayed.
210
+ * - `style`: Custom styles to apply to the view.
211
+ * - `mirror`: If true, the video will be mirrored; commonly used for local video tracks.
212
+ * - `scaleType`: Determines how the video fits within the bounds of the view (e.g., aspect fill, aspect fit).
213
+ * - `setZOrderMediaOverlay`: When true, the video view will be rendered above the regular view hierarchy.
214
+ * - `autoSimulcast`: Enables automatic simulcast layer switching based on network conditions (if supported).
215
+ *
216
+ * @param {Object} props - The properties passed to the HmsView component.
217
+ * @param {React.Ref} ref - A ref provided by `forwardRef` for accessing the underlying DOM element.
218
+ * @returns {React.Element} A `HmsViewComponent` element configured with the provided props and ref.
219
+ * @memberof HMSSDK
220
+ * @example
221
+ * <HmsView trackId="track-id" style={{ width: 100, height: 100 }} mirror={true} scaleType="aspectFill" />
145
222
  *
146
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/render-video} for more info
223
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview
147
224
  *
148
225
  * @param {HmsViewProps}
149
226
  * @memberof HMSSDK
@@ -170,17 +247,29 @@ class HMSSDK {
170
247
  }));
171
248
  _defineProperty(this, "roomLeaveCleanup", () => {
172
249
  var _this$appStateSubscri;
173
- this.muteStatus = undefined;
174
250
  this === null || this === void 0 || (_this$appStateSubscri = this.appStateSubscription) === null || _this$appStateSubscri === void 0 || _this$appStateSubscri.remove();
175
251
  (0, _HMSPeersCache.clearHmsPeersCache)();
176
252
  (0, _HMSRoomCache.clearHmsRoomCache)();
177
253
  _HMSEncoder.HMSEncoder.clearData(); // Clearing cached data in encoder
178
254
  });
179
255
  /**
180
- * Calls leave function of native sdk and session of current user is invalidated.
256
+ * Asynchronously leaves the current room and performs cleanup.
257
+ *
258
+ * This method triggers the leave process for the current user, effectively disconnecting them from the room they are in.
259
+ * It logs the leave action with the user's ID, calls the native `leave` method in `HMSManager` with the user's ID,
260
+ * and then performs additional cleanup through `roomLeaveCleanup`. This cleanup includes removing app state subscriptions
261
+ * and clearing cached data related to peers and the room.
262
+ *
263
+ * @returns {Promise<boolean>} A promise that resolves to `true` if the user has successfully left the room, or `false` otherwise.
264
+ * @throws {Error} If the user cannot leave the room.
265
+ * @memberof HMSSDK
266
+ * @example
267
+ * await hmsInstance.leave();
181
268
  *
182
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/leave} for more info
269
+ * @see https://www.100ms.live/docs/react-native/v2/features/leave
183
270
  *
271
+ * @async
272
+ * @function leave
184
273
  * @memberof HMSSDK
185
274
  */
186
275
  _defineProperty(this, "leave", async () => {
@@ -195,86 +284,137 @@ class HMSSDK {
195
284
  return op;
196
285
  });
197
286
  /**
198
- * - This function sends message to all the peers in the room, the get the message in onMessage listener.
287
+ * Sends a broadcast message to all peers in the room.
199
288
  *
200
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/chat} for more info
289
+ * This asynchronous function sends a message to all peers in the room, which they can receive through the `onMessage` listener.
290
+ * It can be used to send chat messages or custom types of messages like emoji reactions or notifications.
201
291
  *
292
+ * @param {string} message - The message to be sent to all peers.
293
+ * @param {string} [type='chat'] - The type of the message. Default is 'chat'. Custom types can be used for specific purposes.
294
+ * @returns {Promise<{messageId: string | undefined}>} A promise that resolves with the message ID of the sent message, or undefined if the message could not be sent.
295
+ *
296
+ * @example
297
+ * // Sending a chat message to all peers
298
+ * await hmsInstance.sendBroadcastMessage("Hello everyone!", "chat");
299
+ *
300
+ * @example
301
+ * // Sending a custom notification to all peers
302
+ * await hmsInstance.sendBroadcastMessage("Meeting starts in 5 minutes", "notification");
303
+ *
304
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/chat
305
+ *
306
+ * @async
307
+ * @function sendBroadcastMessage
202
308
  * @memberof HMSSDK
203
- * @param message the message that is to be sent
204
- * @param type the default type is set to CHAT. You can pass a custom type here for sending events like Emoji Reactions, Notifications, etc
205
309
  */
206
- _defineProperty(this, "sendBroadcastMessage", async function (message) {
207
- let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'chat';
310
+ _defineProperty(this, "sendBroadcastMessage", async (message, type = 'chat') => {
208
311
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function sendBroadcastMessage', {
209
312
  message,
210
313
  type: type || null,
211
- id: _this.id
314
+ id: this.id
212
315
  });
213
316
  const data = await _HMSManagerModule.default.sendBroadcastMessage({
214
317
  message,
215
318
  type: type || null,
216
- id: _this.id
319
+ id: this.id
217
320
  });
218
321
  return data;
219
322
  });
220
323
  /**
221
- * - sendGroupMessage sends a message to specific set of roles, whoever has any of those role in room
222
- * will get the message in onMessage listener.
324
+ * Sends a message to a specific set of roles within the room.
325
+ *
326
+ * This method allows for targeted communication by sending a message to peers who have any of the specified roles.
327
+ * The message is received by the peers through the `onMessage` listener. This can be useful for sending announcements,
328
+ * instructions, or other types of messages to a subset of the room based on their roles.
329
+ *
330
+ * @param {string} message - The message to be sent.
331
+ * @param {HMSRole[]} roles - An array of roles to which the message will be sent. Peers with these roles will receive the message.
332
+ * @param {string} [type='chat'] - The type of the message. Defaults to 'chat'. Custom types can be used for specific messaging scenarios.
333
+ * @returns {Promise<{messageId: string | undefined}>} A promise that resolves with an object containing the `messageId` of the sent message. If the message could not be sent, `messageId` will be `undefined`.
223
334
  *
224
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/chat} for more info
335
+ * @example
336
+ * // Sending a message to all peers with the role of 'moderator'
337
+ * await hmsInstance.sendGroupMessage("Please start the meeting.", [moderator]);
225
338
  *
339
+ * @see https://www.100ms.live/docs/react-native/v2/features/chat
340
+ *
341
+ * @async
342
+ * @function sendGroupMessage
226
343
  * @memberof HMSSDK
227
344
  */
228
- _defineProperty(this, "sendGroupMessage", async function (message, roles) {
229
- let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'chat';
345
+ _defineProperty(this, "sendGroupMessage", async (message, roles, type = 'chat') => {
230
346
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function sendGroupMessage', {
231
347
  message,
232
348
  roles,
233
- id: _this.id,
349
+ id: this.id,
234
350
  type: type || null
235
351
  });
236
352
  const data = await _HMSManagerModule.default.sendGroupMessage({
237
353
  message,
238
354
  roles: _HMSHelper.HMSHelper.getRoleNames(roles),
239
- id: _this.id,
355
+ id: this.id,
240
356
  type: type || null
241
357
  });
242
358
  return data;
243
359
  });
244
360
  /**
245
- * - sendDirectMessage sends a private message to a single peer, only that peer will get the message
246
- * in onMessage Listener.
361
+ * Sends a direct message to a specific peer in the room.
362
+ *
363
+ * This method allows sending a private message to a single peer, ensuring that only the specified recipient can receive and view the message.
364
+ * The message is delivered to the recipient through the `onMessage` listener. This functionality is useful for implementing private chat features
365
+ * within a larger group chat context.
366
+ *
367
+ * @param {string} message - The message text to be sent.
368
+ * @param {HMSPeer} peer - The peer object representing the recipient of the message.
369
+ * @param {string} [type='chat'] - The type of the message being sent. Defaults to 'chat'. This can be customized to differentiate between various message types (e.g., 'private', 'system').
370
+ * @returns {Promise<{messageId: string | undefined}>} A promise that resolves with an object containing the `messageId` of the sent message. If the message could not be sent, `messageId` will be `undefined`.
371
+ * @throws {Error} Throws an error if the message could not be sent.
247
372
  *
248
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/chat} for more info
373
+ * @example
374
+ * // Sending a private chat message to a specific peer
375
+ * const peer = { peerID: 'peer123', ... };
376
+ * await hmsInstance.sendDirectMessage("Hello, this is a private message.", peer, "chat");
249
377
  *
378
+ * @see https://www.100ms.live/docs/react-native/v2/features/chat
379
+ *
380
+ * @async
381
+ * @function sendDirectMessage
250
382
  * @memberof HMSSDK
251
383
  */
252
- _defineProperty(this, "sendDirectMessage", async function (message, peer) {
253
- let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'chat';
384
+ _defineProperty(this, "sendDirectMessage", async (message, peer, type = 'chat') => {
254
385
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function sendDirectMessage', {
255
386
  message,
256
387
  peerId: peer.peerID,
257
- id: _this.id,
388
+ id: this.id,
258
389
  type: type || null
259
390
  });
260
391
  const data = await _HMSManagerModule.default.sendDirectMessage({
261
392
  message,
262
393
  peerId: peer.peerID,
263
- id: _this.id,
394
+ id: this.id,
264
395
  type: type || null
265
396
  });
266
397
  return data;
267
398
  });
268
399
  /**
269
- * - changeMetadata changes a specific field in localPeer which is [metadata] it is a string that can
270
- * be used for various functionalities like raiseHand, beRightBack and many more that explains the
271
- * current status of the peer.
272
- *
273
- * - it is advised to use a json object in string format to store multiple dataPoints in metadata.
274
- *
275
- * checkout {@link https://www.100ms.live/docs/react-native/v2/advanced-features/change-metadata} for more info
276
- *
277
- * @param {string}
400
+ * Asynchronously changes the metadata for the local peer.
401
+ *
402
+ * This method updates the metadata field of the local peer in the room. The metadata is a versatile field that can be used
403
+ * to store various information such as the peer's current status (e.g., raising hand, be right back, etc.). It is recommended
404
+ * to use a JSON object in string format to store multiple data points within the metadata. This allows for a structured and
405
+ * easily parseable format for metadata management.
406
+ *
407
+ * @param {string} metadata - The new metadata in string format. It is advised to use a JSON string for structured data.
408
+ * @returns {Promise<void>} A promise that resolves when the metadata has been successfully changed.
409
+ * @throws {Error} Throws an error if the metadata change operation fails.
410
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata
411
+ * @example
412
+ * // Changing metadata to indicate the peer is raising their hand
413
+ * const newMetadata = JSON.stringify({ status: 'raiseHand' });
414
+ * await hmsInstance.changeMetadata(newMetadata);
415
+ *
416
+ * @async
417
+ * @function changeMetadata
278
418
  * @memberof HMSSDK
279
419
  */
280
420
  _defineProperty(this, "changeMetadata", async metadata => {
@@ -288,12 +428,28 @@ class HMSSDK {
288
428
  });
289
429
  });
290
430
  /**
291
- * - startRTMPOrRecording takes a configuration object {@link HMSRTMPConfig} and stats the RTMP recording
292
- * - this object of {@link HMSRTMPConfig} sets the urls for streaming and weather to set recording on or not
293
- * - we get the response of this function in onRoomUpdate as RTMP_STREAMING_STATE_UPDATED.
294
- *
295
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/recording} for more info
296
- *
431
+ * Initiates RTMP streaming or recording based on the provided configuration.
432
+ *
433
+ * This method starts RTMP streaming or recording by taking a configuration object of type HMSRTMPConfig.
434
+ * The configuration specifies the URLs for streaming and whether recording should be enabled. The response to this
435
+ * operation can be observed in the `onRoomUpdate` event, specifically when the `RTMP_STREAMING_STATE_UPDATED` action is triggered.
436
+ *
437
+ * @param {HMSRTMPConfig} data - The configuration object for RTMP streaming or recording. It includes streaming URLs and recording settings.
438
+ * @returns {Promise<any>} A promise that resolves with the operation result when the streaming or recording starts successfully.
439
+ * @throws {Error} Throws an error if the operation fails or the configuration is invalid.
440
+ *
441
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording
442
+ *
443
+ * @example
444
+ * const rtmpConfig = {
445
+ * meetingURL: "https://meet.example.com/myMeeting",
446
+ * rtmpURLs: ["rtmp://live.twitch.tv/app", "rtmp://a.rtmp.youtube.com/live2"],
447
+ * record: true,
448
+ * resolution: { width: 1280, height: 720 }
449
+ * };
450
+ * await hmsInstance.startRTMPOrRecording(rtmpConfig);
451
+ * @async
452
+ * @function startRTMPOrRecording
297
453
  * @memberof HMSSDK
298
454
  */
299
455
  _defineProperty(this, "startRTMPOrRecording", async data => {
@@ -308,12 +464,19 @@ class HMSSDK {
308
464
  return op;
309
465
  });
310
466
  /**
311
- * - this function stops all the ongoing RTMP streaming and recording.
312
- * - we get the response of this function in onRoomUpdate as RTMP_STREAMING_STATE_UPDATED.
467
+ * Stops all ongoing RTMP streaming and recording.
313
468
  *
314
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/recording} for more info
469
+ * This function is responsible for halting any active RTMP streaming or recording sessions.
470
+ * It communicates with the native `HMSManager` module to execute the stop operation.
471
+ * The completion or status of this operation can be monitored through the `onRoomUpdate` event, specifically when the `RTMP_STREAMING_STATE_UPDATED` action is triggered, indicating that the streaming or recording has been successfully stopped.
315
472
  *
473
+ * @async
474
+ * @function stopRtmpAndRecording
475
+ * @returns {Promise<any>} A promise that resolves when the RTMP streaming and recording have been successfully stopped.
476
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording
316
477
  * @memberof HMSSDK
478
+ * @example
479
+ * await hmsInstance.stopRtmpAndRecording();
317
480
  */
318
481
  _defineProperty(this, "stopRtmpAndRecording", async () => {
319
482
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function stopRtmpAndRecording', {});
@@ -323,13 +486,21 @@ class HMSSDK {
323
486
  return op;
324
487
  });
325
488
  /**
326
- * - This function starts HLSStreaming.
327
- * - we get the response of this function in onRoomUpdate as HLS_STREAMING_STATE_UPDATED.
328
- *
329
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/hls-streaming} for more info
330
- *
331
- * @param {HMSHLSConfig}
489
+ * Initiates HLS (HTTP Live Streaming) based on the provided configuration.
490
+ *
491
+ * This asynchronous function starts HLS streaming, allowing for live video content to be delivered over the internet in a scalable manner.
492
+ * The function takes an optional `HMSHLSConfig` object as a parameter, which includes settings such as the meeting URL, HLS variant parameters, and recording settings.
493
+ * The operation's response can be observed through the `onRoomUpdate` event, specifically when the `HLS_STREAMING_STATE_UPDATED` action is triggered, indicating the streaming state has been updated.
494
+ *
495
+ * @param {HMSHLSConfig} [data] - Optional configuration object for HLS streaming. Defines parameters such as meeting URL, HLS variants, and recording options.
496
+ * @returns {Promise<any>} A promise that resolves when the HLS streaming starts successfully. The promise resolves with the operation result.
497
+ * @throws {Error} Throws an error if the operation fails or if the provided configuration is invalid.
498
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls
499
+ * @async
500
+ * @function startHLSStreaming
332
501
  * @memberof HMSSDK
502
+ * @example
503
+ * await hmsInstance.startHLSStreaming();
333
504
  */
334
505
  _defineProperty(this, "startHLSStreaming", async data => {
335
506
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function startHLSStreaming', {
@@ -342,12 +513,19 @@ class HMSSDK {
342
513
  });
343
514
  });
344
515
  /**
345
- * - stopHLSStreaming function stops the ongoing HLSStreams.
346
- * - we get the response of this function in onRoomUpdate as HLS_STREAMING_STATE_UPDATED.
516
+ * Stops the ongoing HLS (HTTP Live Streaming) streams.
347
517
  *
348
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/hls-streaming} for more info
518
+ * This asynchronous function is responsible for stopping any active HLS streaming sessions.
519
+ * It communicates with the native `HMSManager` module to execute the stop operation.
520
+ * The completion or status of this operation can be observed through the `onRoomUpdate` event, specifically when the `HLS_STREAMING_STATE_UPDATED` action is triggered, indicating that the HLS streaming has been successfully stopped.
349
521
  *
522
+ * @async
523
+ * @function stopHLSStreaming
524
+ * @returns {Promise<void>} A promise that resolves when the HLS streaming has been successfully stopped.
525
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls for more details on HLS streaming.
350
526
  * @memberof HMSSDK
527
+ * @example
528
+ * await hmsInstance.stopHLSStreaming();
351
529
  */
352
530
  _defineProperty(this, "stopHLSStreaming", async () => {
353
531
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function stopHLSStreaming', {});
@@ -356,67 +534,123 @@ class HMSSDK {
356
534
  });
357
535
  });
358
536
  /**
359
- * @deprecated This function has been deprecated in favor of #Function changeRoleOfPeer
360
- *
361
- * - This function can be used in a situation when we want to change role hence manipulate their
362
- * access and rights in the current room, it takes the peer {@link HMSPeer} whom role we want to change,
363
- * role {@link HMSRole} which will be the new role for that peer and weather to forcefully change
364
- * the role or ask the to accept the role change request using a boolean force.
365
- *
366
- * - if we change the role forcefully the peer's role will be updated without asking the peer
367
- * otherwise the user will get the roleChangeRequest in roleChangeRequest listener.
368
- * for more information on this checkout {@link onRoleChangeRequestListener}
369
- *
370
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-role} for more info
371
- *
537
+ * Sends timed metadata for HLS (HTTP Live Streaming) playback.
538
+ *
539
+ * This asynchronous function is designed to send metadata that can be synchronized with the HLS video playback.
540
+ * The metadata is sent to all viewers of the HLS stream, allowing for a variety of use cases such as displaying
541
+ * song titles, ads, or other information at specific times during the stream.
542
+ * The metadata should be an array of HMSHLSTimedMetadata objects, each specifying the content and timing for the metadata display.
543
+ *
544
+ * @async
545
+ * @function sendHLSTimedMetadata
546
+ * @param {HMSHLSTimedMetadata[]} metadata - An array of metadata objects to be sent.
547
+ * @returns {Promise<boolean>} A promise that resolves to `true` if the metadata was successfully sent, or `false` otherwise.
548
+ * @example
549
+ * const metadata = [
550
+ * { time: 10, data: "Song: Example Song Title" },
551
+ * { time: 20, data: "Advertisement: Buy Now!" }
552
+ * ];
553
+ * await hmsInstance.sendHLSTimedMetadata(metadata);
554
+ *
555
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-use-hls-timed-metadata-with-100ms-hls-player
556
+ */
557
+ _defineProperty(this, "sendHLSTimedMetadata", async metadata => {
558
+ const data = {
559
+ metadata,
560
+ id: this.id
561
+ };
562
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function sendHLSTimedMetadata', data);
563
+ return await _HMSManagerModule.default.sendHLSTimedMetadata(data);
564
+ });
565
+ /**
566
+ * Deprecated. Changes the role of a specified peer within the room.
567
+ *
568
+ * This function is marked as deprecated and should not be used in new implementations. Use `changeRoleOfPeer` instead.
569
+ * It allows for the dynamic adjustment of a peer's permissions and capabilities within the room by changing their role.
570
+ * The role change can be enforced immediately or offered to the peer as a request, depending on the `force` parameter.
571
+ *
572
+ * @deprecated Since version 1.1.0. Use `changeRoleOfPeer` instead.
573
+ * @param {HMSPeer} peer - The peer whose role is to be changed.
574
+ * @param {HMSRole} role - The new role to be assigned to the peer.
575
+ * @param {boolean} [force=false] - If `true`, the role change is applied immediately without the peer's consent. If `false`, the peer receives a role change request.
576
+ * @returns {Promise<void>} A promise that resolves when the role change operation is complete.
577
+ * @throws {Error} Throws an error if the operation fails.
578
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
579
+ * @example
580
+ * // Change the role of a peer to 'viewer' forcefully
581
+ * const peer = { peerID: 'peer123', ... };
582
+ * const newRole = { name: 'viewer', ... };
583
+ * await hmsInstance.changeRole(peer, newRole, true);
584
+ * @async
585
+ * @function changeRole
372
586
  * @memberof HMSSDK
373
587
  */
374
- _defineProperty(this, "changeRole", async function (peer, role) {
375
- let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
588
+ _defineProperty(this, "changeRole", async (peer, role, force = false) => {
376
589
  const data = {
377
590
  peerId: peer === null || peer === void 0 ? void 0 : peer.peerID,
378
591
  role: role === null || role === void 0 ? void 0 : role.name,
379
592
  force: force,
380
- id: _this.id
593
+ id: this.id
381
594
  };
382
595
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function changeRole', data);
383
596
  return await _HMSManagerModule.default.changeRole(data);
384
597
  });
385
598
  /**
386
- * - This function can be used in a situation when we want to change role hence manipulate their
387
- * access and rights in the current room, it takes the peer {@link HMSPeer} whom role we want to change,
388
- * role {@link HMSRole} which will be the new role for that peer and weather to forcefully change
389
- * the role or ask the to accept the role change request using a boolean force.
390
- *
391
- * - if we change the role forcefully the peer's role will be updated without asking the peer
392
- * otherwise the user will get the roleChangeRequest in roleChangeRequest listener.
393
- * for more information on this checkout {@link onRoleChangeRequestListener}
394
- *
395
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-role} for more info
396
- *
599
+ * Asynchronously changes the role of a specified peer within the room.
600
+ *
601
+ * This function is designed to dynamically adjust a peer's permissions and capabilities within the room by changing their role.
602
+ * It can enforce the role change immediately or offer it to the peer as a request, depending on the `force` parameter.
603
+ * If the role change is forced, it is applied immediately without the peer's consent. Otherwise, the peer receives a role change request,
604
+ * which can be accepted or declined. This functionality supports flexible room management and control over participant permissions.
605
+ *
606
+ * @async
607
+ * @function changeRoleOfPeer
608
+ * @param {HMSPeer} peer - The peer whose role is to be changed.
609
+ * @param {HMSRole} role - The new role to be assigned to the peer.
610
+ * @param {boolean} [force=false] - Determines whether the role change should be applied immediately (`true`) or sent as a request (`false`).
611
+ * @returns {Promise<void>} A promise that resolves to `true` if the role change operation is successful, or `false` otherwise.
612
+ * @throws {Error} Throws an error if the operation fails.
613
+ * @see https://www.100ms.live/docs/react-native/v2/features/change-role
614
+ * @example
615
+ * // Change the role of a peer to 'viewer' forcefully
616
+ * const peer = { peerID: 'peer123', ... };
617
+ * const newRole = { name: 'viewer', ... };
618
+ * await hmsInstance.changeRoleOfPeer(peer, newRole, true);
619
+ *
620
+ * @async
621
+ * @function changeRoleOfPeer
397
622
  * @memberof HMSSDK
398
623
  */
399
- _defineProperty(this, "changeRoleOfPeer", async function (peer, role) {
400
- let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
624
+ _defineProperty(this, "changeRoleOfPeer", async (peer, role, force = false) => {
401
625
  const data = {
402
626
  peerId: peer.peerID,
403
627
  role: role.name,
404
628
  force: force,
405
- id: _this.id
629
+ id: this.id
406
630
  };
407
631
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function changeRoleOfPeer', data);
408
632
  return _HMSManagerModule.default.changeRoleOfPeer(data);
409
633
  });
410
634
  /**
411
- * - This function can be used in a situation when we want to change role of multiple peers by specifying their roles.
412
- * Hence manipulate their access and rights in the current room.
413
- * It takes the list of roles {@link HMSRole} whom role we want to change
414
- * and role {@link HMSRole} which will be the new role for peers.
415
- *
416
- * - Note that role will be updated without asking the peers.
417
- * Meaning, Peers will not get the roleChangeRequest in roleChangeRequest listener.
418
- *
419
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-role} for more info
635
+ * Asynchronously changes the roles of multiple peers within the room.
636
+ *
637
+ * This function is designed to batch update the roles of peers based on their current roles. It is particularly useful
638
+ * in scenarios where a group of users need to be granted or restricted permissions en masse, such as promoting all viewers
639
+ * to participants or demoting all speakers to viewers. The function updates the roles of all peers that have any of the specified
640
+ * `ofRoles` to the new `toRole` without requiring individual consent, bypassing the `roleChangeRequest` listener on the peer's end.
641
+ *
642
+ * @async
643
+ * @function changeRoleOfPeersWithRoles
644
+ * @param {HMSRole[]} ofRoles - An array of roles to identify the peers whose roles are to be changed.
645
+ * @param {HMSRole} toRole - The new role to be assigned to the identified peers.
646
+ * @returns {Promise<void>} A promise that resolves when the role change operation is complete.
647
+ * @throws {Error} Throws an error if the operation fails.
648
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
649
+ * @example
650
+ * // Change the role of all peers with 'viewer' role to 'participant'
651
+ * const viewerRole = { name: 'viewer', ... };
652
+ * const participantRole = { name: 'participant', ... };
653
+ * await hmsInstance.changeRoleOfPeersWithRoles([viewerRole], participantRole);
420
654
  *
421
655
  * @memberof HMSSDK
422
656
  */
@@ -430,13 +664,33 @@ class HMSSDK {
430
664
  return _HMSManagerModule.default.changeRoleOfPeersWithRoles(data);
431
665
  });
432
666
  /**
433
- * - This function can be used to manipulate mute status of any track.
434
- * - Targeted peer affected by this action will get a callback in onChangeTrackStateRequestListener.
667
+ * Asynchronously changes the mute state of a specified track.
668
+ *
669
+ * This function is designed to control the mute state of any track (audio or video) within the room.
670
+ * When invoked, it sends a request to the HMSManager to change the mute state of the specified track.
671
+ * The targeted peer, whose track is being manipulated, will receive a callback on the `onChangeTrackStateRequestListener`,
672
+ * allowing for custom handling or UI updates based on the mute state change.
673
+ *
674
+ * @async
675
+ * @function changeTrackState
676
+ * @param {HMSTrack} track - The track object whose mute state is to be changed.
677
+ * @param {boolean} mute - The desired mute state of the track. `true` to mute the track, `false` to unmute.
678
+ * @returns {Promise<void>} A promise that resolves when the operation to change the track's mute state is complete.
679
+ * @throws {Error} Throws an error if the operation fails or the track cannot be found.
680
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/remote-mute
681
+ * @async
682
+ * @function changeTrackState
683
+ * @memberof HMSSDK
435
684
  *
436
- * * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-track-state} for more info
685
+ * @example
686
+ * // Mute a specific track
687
+ * const trackToMute = { trackId: 'track123', ... };
688
+ * await hmsInstance.changeTrackState(trackToMute, true);
437
689
  *
438
- * @param {HMSTrack}
439
- * @memberof HMSSDK
690
+ * @example
691
+ * // Unmute a specific track
692
+ * const trackToUnmute = { trackId: 'track456', ... };
693
+ * await hmsInstance.changeTrackState(trackToUnmute, false);
440
694
  */
441
695
  _defineProperty(this, "changeTrackState", async (track, mute) => {
442
696
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function changeTrackState', {
@@ -452,12 +706,30 @@ class HMSSDK {
452
706
  return await _HMSManagerModule.default.changeTrackState(data);
453
707
  });
454
708
  /**
455
- * - changeTrackStateForRoles is an enhancement on the functionality of {@link changeTrackState}.
456
- * - We can change mute status for all the tracks of peers having a particular role.
457
- * - @param source determines the source of the track ex. video, audio etc.
458
- * - The peers affected by this action will get a callback in onChangeTrackStateRequestListener.
459
- *
709
+ * Asynchronously changes the mute state of tracks for peers with specified roles.
710
+ *
711
+ * This method extends the functionality of `changeTrackState` by allowing the mute state of all tracks (audio, video, etc.)
712
+ * belonging to peers with certain roles to be changed in a single operation. It is particularly useful for managing the audio
713
+ * and video state of groups of users, such as muting all participants except the speaker in a conference call.
714
+ *
715
+ * The peers whose track states are being changed will receive a callback on `onChangeTrackStateRequestListener`, allowing for
716
+ * custom handling or UI updates based on the mute state change.
717
+ *
718
+ * @async
719
+ * @function changeTrackStateForRoles
720
+ * @param {boolean} mute - The desired mute state of the tracks. `true` to mute, `false` to unmute.
721
+ * @param {HMSTrackType} [type] - Optional. The type of the tracks to be muted/unmuted (e.g., audio, video).
722
+ * @param {string} [source] - Optional. The source of the track (e.g., camera, screen).
723
+ * @param {Array<HMSRole>} [roles] - The roles of the peers whose tracks are to be muted/unmuted. If not specified, affects all roles.
724
+ * @returns {Promise<void>} A promise that resolves when the operation to change the track's mute state is complete.
725
+ * @throws {Error} Throws an error if the operation fails.
726
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/change-track-state-roles
460
727
  * @memberof HMSSDK
728
+ *
729
+ * @example
730
+ * // Mute all audio tracks for peers with the role of 'viewer'
731
+ * const viewerRole = { name: 'viewer', ... };
732
+ * await hmsInstance.changeTrackStateForRoles(true, 'audio', undefined, [viewerRole]);
461
733
  */
462
734
  _defineProperty(this, "changeTrackStateForRoles", async (mute, type, source, roles) => {
463
735
  let roleNames = null;
@@ -481,11 +753,27 @@ class HMSSDK {
481
753
  return await _HMSManagerModule.default.changeTrackStateForRoles(data);
482
754
  });
483
755
  /**
484
- * - removePeer can forcefully disconnect a Peer from the room.
485
- * - the user who's removed from this action will get a callback in {@link onRemovedFromRoomListener}.
756
+ * Asynchronously removes a peer from the room.
486
757
  *
487
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/remove-peer} for more info
758
+ * This method forcefully disconnects a specified peer from the room.
759
+ * Upon successful removal, the removed peer will receive a callback through the `onRemovedFromRoomListener`, indicating
760
+ * they have been removed from the room.
761
+ * This can be used for managing room participants, such as removing disruptive users or managing room capacity.
488
762
  *
763
+ * @param {HMSPeer} peer - The peer object representing the participant to be removed.
764
+ * @param {string} reason - A string detailing the reason for the removal. This reason is communicated
765
+ * to the removed peer, providing context for the action.
766
+ * @returns {Promise<void>} A promise that resolves when the peer has been successfully removed.
767
+ * If the operation fails, the promise will reject with an error.
768
+ *
769
+ * @example
770
+ * // Assuming `peer` is an instance of HMSPeer representing the participant to remove
771
+ * await hmsInstance.removePeer(peer, "Violation of room rules");
772
+ *
773
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/remove-peer
774
+ *
775
+ * @async
776
+ * @function removePeer
489
777
  * @memberof HMSSDK
490
778
  */
491
779
  _defineProperty(this, "removePeer", async (peer, reason) => {
@@ -502,34 +790,58 @@ class HMSSDK {
502
790
  return await _HMSManagerModule.default.removePeer(data);
503
791
  });
504
792
  /**
505
- * - endRoom can be used in a situation where we want to disconnect all the peers from current room
506
- * and end the call.
507
- * - everyone in the room will get an update of this action in {@link onRemovedFromRoomListener}.
793
+ * Asynchronously ends the current room session for all participants.
794
+ *
795
+ * This method is used to programmatically end the current room session, effectively disconnecting all participants.
796
+ * It can also optionally lock the room to prevent new participants from joining. This is particularly useful for
797
+ * managing the end of scheduled events or meetings, ensuring that all participants are removed at the same time.
798
+ * Upon successful execution, all participants will receive a notification through the `onRemovedFromRoomListener`
799
+ * indicating that they have been removed from the room.
800
+ *
801
+ * @param {string} reason - A descriptive reason for ending the room session. This reason is communicated to all participants.
802
+ * @param {boolean} [lock=false] - Optional. Specifies whether the room should be locked after ending the session. Default is `false`.
803
+ * @returns {Promise<void>} A promise that resolves when the room has been successfully ended and, optionally, locked.
508
804
  *
509
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/end-room} for more info
805
+ * @example
806
+ * // End the room and lock it to prevent rejoining
807
+ * await hmsInstance.endRoom("Meeting concluded", true);
510
808
  *
809
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/end-room
810
+ * @async
811
+ * @function endRoom
511
812
  * @memberof HMSSDK
512
813
  */
513
- _defineProperty(this, "endRoom", async function (reason) {
514
- let lock = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
814
+ _defineProperty(this, "endRoom", async (reason, lock = false) => {
515
815
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function endRoom', {
516
816
  lock,
517
817
  reason,
518
- id: _this.id
818
+ id: this.id
519
819
  });
520
820
  const data = {
521
821
  lock,
522
822
  reason,
523
- id: _this.id
823
+ id: this.id
524
824
  };
525
825
  return await _HMSManagerModule.default.endRoom(data);
526
826
  });
527
827
  /**
528
- * - This function can be used to change name of localPeer.
828
+ * Asynchronously changes the name of the local peer.
829
+ *
830
+ * This function updates the name of the local peer in the room. It is useful for scenarios where a user's display name needs to be updated during a session, such as when a user decides to change their nickname or when correcting a typo in the user's name. The updated name is reflected across all participants in the room.
529
831
  *
530
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-name} for more info
832
+ * Once the name change is successful, all the peers receive HMSUpdateListenerActions.ON_PEER_UPDATE event with HMSPeerUpdate.NAME_CHANGED as update type. When this event is received, the UI for that peer should be updated.
531
833
  *
834
+ * @param {string} name - The new name to be set for the local peer.
835
+ * @returns {Promise<void>} A promise that resolves when the name change operation has been successfully completed.
836
+ * @throws {Error} Throws an error if the name change operation fails.
837
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-name for more information on changing the peer's name.
838
+ * @async
839
+ * @function changeName
532
840
  * @memberof HMSSDK
841
+ *
842
+ * @example
843
+ * // Change the name of the local peer to 'Alice'
844
+ * await hmsInstance.changeName("Alice");
533
845
  */
534
846
  _defineProperty(this, "changeName", async name => {
535
847
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function changeName', {
@@ -543,13 +855,22 @@ class HMSSDK {
543
855
  return await _HMSManagerModule.default.changeName(data);
544
856
  });
545
857
  /**
546
- * -Preview for a specific Role before changing it.
858
+ * Asynchronously previews the audio and video tracks for a specific role before applying the role change.
859
+ *
860
+ * This method allows users to preview the expected audio and video tracks that will be visible to other peers in the room
861
+ * after changing their role. It is useful for scenarios where a user wants to understand the impact of a role change on their
862
+ * media tracks before making the change. This can help in ensuring that the right media settings are applied for the new role.
547
863
  *
548
- * By previewing before doing a Role Change, users can see their expected Audio & Video tracks which will be visible to other Peers in Room post changing the Role.
864
+ * @param {string} role - The role for which the preview is requested. The role should be defined within the room's role configurations.
865
+ * @returns {Promise<any>} A promise that resolves with the preview tracks information. The resolved object contains details about the audio and video tracks that would be available to the user if the role were changed to the specified role.
549
866
  *
550
- * checkout {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role} for more info
867
+ * @example
868
+ * // Preview the tracks for the 'speaker' role
869
+ * const previewTracks = await hmsInstance.previewForRole('speaker');
870
+ * console.log(previewTracks);
551
871
  *
552
- * @param {role: string}
872
+ * @async
873
+ * @function previewForRole
553
874
  * @memberof HMSSDK
554
875
  */
555
876
  _defineProperty(this, "previewForRole", async role => {
@@ -565,13 +886,22 @@ class HMSSDK {
565
886
  return previewTracks;
566
887
  });
567
888
  /**
568
- * Cancel the Previewing for Role invocation.
889
+ * Asynchronously cancels the preview for a role change.
569
890
  *
570
- * If a [previewForRole] call was performed previously then calling this method clears the tracks created anticipating a Change of Role
571
- *
572
- * checkout {@link https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role} for more info
891
+ * This method is intended to be used after a `previewForRole` invocation. It cancels the ongoing preview operation,
892
+ * effectively clearing any tracks that were created in anticipation of a role change. This is useful in scenarios where
893
+ * a role change preview was initiated but needs to be aborted before the actual role change occurs, allowing for clean
894
+ * state management and resource cleanup.
573
895
  *
896
+ * @async
897
+ * @function cancelPreview
574
898
  * @memberof HMSSDK
899
+ * @returns {Promise<{data: string}>} A promise that resolves with an object containing a data string.
900
+ *
901
+ * @example
902
+ * // Cancel a previously initiated role change preview
903
+ * await hmsInstance.cancelPreview();
904
+ *
575
905
  */
576
906
  _defineProperty(this, "cancelPreview", async () => {
577
907
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function cancelPreview', {
@@ -583,11 +913,25 @@ class HMSSDK {
583
913
  return data;
584
914
  });
585
915
  /**
586
- * - Calling this function will accept the most recent roleChange request made by anyone in the room
916
+ * Asynchronously accepts a role change request for the local peer.
587
917
  *
588
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/change-role} for more info
918
+ * This method is used when a role change request has been made to the local peer, typically by an admin or moderator of the room.
919
+ * Invoking this method signals acceptance of the new role, and the role change is applied to the local peer. This can affect the peer's
920
+ * permissions and capabilities within the room, such as the ability to send video, audio, or chat messages.
589
921
  *
922
+ * The successful execution of this method triggers an update across the room, notifying other peers of the role change.
923
+ * It is important to handle this method's response to ensure the local UI reflects the new role's permissions and capabilities.
924
+ *
925
+ * @async
926
+ * @function acceptRoleChange
590
927
  * @memberof HMSSDK
928
+ * @returns {Promise<void>} A promise that resolves when the role change has been successfully accepted and applied.
929
+ * @throws {Error} Throws an error if the role change acceptance operation fails.
930
+ * @example
931
+ * // Accept a role change request to become a 'moderator'
932
+ * await hmsInstance.acceptRoleChange();
933
+ *
934
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-role
591
935
  */
592
936
  _defineProperty(this, "acceptRoleChange", async () => {
593
937
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function acceptRoleChange', {
@@ -598,28 +942,54 @@ class HMSSDK {
598
942
  });
599
943
  });
600
944
  /**
601
- * - setPlaybackForAllAudio is an extension of the abilities of setPlaybackAllowed in
602
- * HMSRemoteAudioTrack. It sets mute status for all peers in the room only for the local peer.
945
+ * Sets the mute status for all remote audio tracks in the room for the local peer.
603
946
  *
604
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/playback-allowed} for more info
947
+ * This method allows the local user to mute or unmute the playback of all remote audio tracks in the room.
948
+ * It affects only the local peer's audio playback and does not impact other peers. This can be useful in scenarios
949
+ * where a user needs to quickly mute all incoming audio without affecting the audio state for other participants in the room.
605
950
  *
951
+ * @param {boolean} mute - A boolean value indicating whether to mute (`true`) or unmute (`false`) all remote audio tracks for the local peer.
952
+ * @returns {Promise<boolean>} A promise that resolves with a boolean value indicating the success of the operation.
953
+ * @throws {Error} Throws an error if the operation fails.
954
+ * @async
955
+ * @function setPlaybackForAllAudio
606
956
  * @memberof HMSSDK
957
+ * @example
958
+ * // Mute all remote audio tracks for the local peer
959
+ * hmsInstance.setPlaybackForAllAudio(true);
960
+ *
961
+ * @example
962
+ * // Unmute all remote audio tracks for the local peer
963
+ * hmsInstance.setPlaybackForAllAudio(false);
964
+ *
965
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/playback-allowed
607
966
  */
608
- _defineProperty(this, "setPlaybackForAllAudio", mute => {
967
+ _defineProperty(this, "setPlaybackForAllAudio", async mute => {
609
968
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function setPlaybackForAllAudio', {
610
969
  mute,
611
970
  id: this.id
612
971
  });
613
- this.muteStatus = mute;
614
- _HMSManagerModule.default.setPlaybackForAllAudio({
972
+ return await _HMSManagerModule.default.setPlaybackForAllAudio({
615
973
  mute,
616
974
  id: this.id
617
975
  });
618
976
  });
619
977
  /**
620
- * - This function mutes audio for all peers in the room.
978
+ * Mutes the audio for all peers in the room.
979
+ *
980
+ * This asynchronous function communicates with the native `HMSManager` module to mute the audio tracks of all remote peers in the room.
981
+ * It is particularly useful in scenarios where a moderator needs to quickly mute all participants to prevent background noise or interruptions during a session.
621
982
  *
983
+ * @async
984
+ * @function remoteMuteAllAudio
622
985
  * @memberof HMSSDK
986
+ * @returns {Promise<{success: boolean}>} A promise that resolves with a boolean value indicating the success of the operation.
987
+ * @throws {Error} Throws an error if the operation fails.
988
+ * @example
989
+ * // Mute all remote audio tracks in the room
990
+ * await hmsInstance.remoteMuteAllAudio();
991
+ *
992
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/remote-mute
623
993
  */
624
994
  _defineProperty(this, "remoteMuteAllAudio", async () => {
625
995
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function remoteMuteAllAudio', {
@@ -630,13 +1000,23 @@ class HMSSDK {
630
1000
  });
631
1001
  });
632
1002
  /**
633
- * - getRoom is a wrapper function on an existing native function also known as getRoom the returns
634
- * current room object which is of type {@link HMSRoom}
1003
+ * Retrieves the current room's details.
635
1004
  *
636
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/join#get-room} for more info
1005
+ * This method acts as a wrapper around the native `getRoom` function, providing an easy way to obtain the current room's state and details,
1006
+ * including participants, tracks, and other relevant information. The room object is fetched from the native module and then processed
1007
+ * to match the expected format in the React Native layer. This method is useful for getting the room's state at any point in time, such as
1008
+ * when needing to display current room information or for debugging purposes.
637
1009
  *
1010
+ * @async
1011
+ * @function getRoom
638
1012
  * @memberof HMSSDK
639
- * @return Promise<HMSRoom>
1013
+ * @returns {Promise<HMSRoom>} A promise that resolves to the current room object.
1014
+ * @example
1015
+ * // Fetch the current room details
1016
+ * const roomDetails = await hmsInstance.getRoom();
1017
+ * console.log(roomDetails);
1018
+ *
1019
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
640
1020
  */
641
1021
  _defineProperty(this, "getRoom", async () => {
642
1022
  var _getHmsRoomCache;
@@ -651,11 +1031,23 @@ class HMSSDK {
651
1031
  return encodedHmsRoom;
652
1032
  });
653
1033
  /**
654
- * - getLocalPeer is a wrapper function on an existing native function also known as getLocalPeer the returns
655
- * current local peer object which is of type {@link HMSLocalPeer}
1034
+ * Retrieves the current local peer's details.
656
1035
  *
1036
+ * This asynchronous method wraps around the native `getLocalPeer` function, providing a straightforward way to obtain the current local peer's details,
1037
+ * including their ID, name, role, and any tracks they may be publishing. The local peer object is fetched from the native module and then processed
1038
+ * to match the expected format in the React Native layer. This method is particularly useful for operations that require information about the local user,
1039
+ * such as updating UI elements to reflect the current user's status or for debugging purposes.
1040
+ *
1041
+ * @async
1042
+ * @function getLocalPeer
657
1043
  * @memberof HMSSDK
658
- * @return Promise<HMSLocalPeer>
1044
+ * @returns {Promise<HMSLocalPeer>} A promise that resolves to the current local peer object.
1045
+ * @example
1046
+ * // Fetch the current local peer's details
1047
+ * const localPeerDetails = await hmsInstance.getLocalPeer();
1048
+ * console.log(localPeerDetails);
1049
+ *
1050
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
659
1051
  */
660
1052
  _defineProperty(this, "getLocalPeer", async () => {
661
1053
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getLocalPeer', {
@@ -668,11 +1060,22 @@ class HMSSDK {
668
1060
  return encodedLocalPeer;
669
1061
  });
670
1062
  /**
671
- * - getRemotePeers is a wrapper function on an existing native function also known as getRemotePeers the returns
672
- * remote peers array which is of type {@link HMSRemotePeer}
1063
+ * Retrieves an array of remote peers currently in the room.
1064
+ *
1065
+ * This asynchronous method serves as a wrapper around the native `getRemotePeers` function, facilitating the retrieval of remote peers' details.
1066
+ * It fetches an array of `HMSRemotePeer` objects, each representing a remote participant in the room. The method processes the fetched data
1067
+ * to conform to the expected format in the React Native layer, making it suitable for UI rendering or further processing.
673
1068
  *
1069
+ * @async
1070
+ * @function getRemotePeers
674
1071
  * @memberof HMSSDK
675
- * @return Promise<HMSRemotePeer[]>
1072
+ * @returns {Promise<HMSRemotePeer[]>} A promise that resolves with an array of `HMSRemotePeer` objects, representing the remote peers in the room.
1073
+ * @example
1074
+ * // Fetch the list of remote peers in the room
1075
+ * const remotePeers = await hmsInstance.getRemotePeers();
1076
+ * console.log(remotePeers);
1077
+ *
1078
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/listen-to-room-updates/get-methods
676
1079
  */
677
1080
  _defineProperty(this, "getRemotePeers", async () => {
678
1081
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getRemotePeers', {
@@ -685,11 +1088,22 @@ class HMSSDK {
685
1088
  return encodedRemotePeers;
686
1089
  });
687
1090
  /**
688
- * - getRoles is a wrapper function on an existing native function also known as getRoles the returns
689
- * array of all present roles which is of type {@link HMSRole}
1091
+ * Retrieves a list of all roles currently available in the room.
1092
+ *
1093
+ * This asynchronous method calls the native `getRoles` function to fetch an array of `HMSRole` objects, representing the roles defined for the room.
1094
+ * Each `HMSRole` object includes details such as the role name, permissions, and other role-specific settings. The roles are then processed
1095
+ * to match the expected format in the React Native layer. This method is useful for operations that require a comprehensive list of roles,
1096
+ * such as displaying role options in a UI dropdown for role assignment or for role-based access control checks.
690
1097
  *
1098
+ * @async
1099
+ * @function getRoles
691
1100
  * @memberof HMSSDK
692
- * @return Promise<HMSRole[]>
1101
+ * @returns {Promise<HMSRole[]>} A promise that resolves with an array of `HMSRole` objects, representing the available roles in the room.
1102
+ *
1103
+ * @example
1104
+ * // Fetch the list of available roles in the room
1105
+ * const roles = await hmsInstance.getRoles();
1106
+ * console.log(roles);
693
1107
  */
694
1108
  _defineProperty(this, "getRoles", async () => {
695
1109
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getRoles', {
@@ -702,55 +1116,56 @@ class HMSSDK {
702
1116
  return encodedRoles;
703
1117
  });
704
1118
  /**
705
- * - This function sets the volume of any peer in the room
1119
+ * Sets the volume for a specific track of any peer in the room.
1120
+ *
1121
+ * This function allows the adjustment of the playback volume for any given audio track of a peer within the room.
1122
+ * It is particularly useful for controlling the audio levels of individual participants in a conference call or meeting.
1123
+ * The volume level is specified as a number. Volume level can vary from 0(min) to 10(max). The default value for volume is 1.0.
1124
+ *
1125
+ * @param {HMSTrack} track - The track object whose volume is to be set. This object must include a valid `trackId`.
1126
+ * @param {number} volume - The volume level to set for the specified track.
1127
+ * @returns {Promise<void>} A promise that resolves when the operation to set the track's volume is complete.
1128
+ * @throws {Error} Throws an error if the operation fails or the track cannot be found.
706
1129
  *
707
- * checkout {@link https://www.100ms.live/docs/react-native/v2/advanced-features/set-volume} for more info
1130
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/set-volume
708
1131
  *
1132
+ * @async
709
1133
  * @memberof HMSSDK
1134
+ *
1135
+ * @example
1136
+ * // Assuming `track` is an instance of HMSTrack representing the participant's audio track
1137
+ * hmsInstance.setVolume(track, 10);
710
1138
  */
711
- _defineProperty(this, "setVolume", (track, volume) => {
1139
+ _defineProperty(this, "setVolume", async (track, volume) => {
712
1140
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function setVolume', {
713
1141
  track,
714
1142
  volume,
715
1143
  id: this.id
716
1144
  });
717
- _HMSManagerModule.default.setVolume({
1145
+ return await _HMSManagerModule.default.setVolume({
718
1146
  id: this.id,
719
1147
  trackId: track.trackId,
720
1148
  volume
721
1149
  });
722
1150
  });
723
- _defineProperty(this, "resetVolume", () => {
724
- _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function resetVolume', {
725
- id: this.id
726
- });
727
- if (_reactNative.Platform.OS === 'android') _HMSManagerModule.default.resetVolume({
728
- id: this.id
729
- });
730
- });
731
1151
  /**
732
- * - This is a temporary solution for the situation when mic access is taken from the app and
733
- * user returns to the app with no mic access. It will re-acquire the mic by setting the volume
734
- * from native side
1152
+ * Initiates screen sharing in the room.
735
1153
  *
736
- * @memberof HMSSDK
737
- */
738
- _defineProperty(this, "addAppStateListener", () => {
739
- _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function addAppStateListener', {
740
- id: this.id
741
- });
742
- this.appStateSubscription = _reactNative.AppState.addEventListener('change', nextAppState => {
743
- if (nextAppState === 'active' && _reactNative.Platform.OS === 'android') {
744
- this.resetVolume();
745
- }
746
- });
747
- });
748
- /**
749
- * - This function is used to start screenshare, currently available only for android
1154
+ * This asynchronous function triggers the screen sharing feature, allowing the local peer to share their screen with other participants in the room.
1155
+ * Upon successful execution, other participants in the room will be able to see the shared screen as part of the video conference.
750
1156
  *
751
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/screenshare} for more info
1157
+ * Note: Proper permissions must be granted by the user for screen sharing to work. Ensure to handle permission requests appropriately in your application.
752
1158
  *
1159
+ * @async
1160
+ * @function startScreenshare
753
1161
  * @memberof HMSSDK
1162
+ * @returns {Promise<void>} A promise that resolves when the screen sharing has successfully started.
1163
+ * @throws {Error} Throws an error if the operation fails or screen sharing cannot be initiated.
1164
+ *
1165
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
1166
+ * @example
1167
+ * // Start screen sharing
1168
+ * await hmsInstance.startScreenshare();
754
1169
  */
755
1170
  _defineProperty(this, "startScreenshare", async () => {
756
1171
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function startScreenshare', {
@@ -761,11 +1176,22 @@ class HMSSDK {
761
1176
  });
762
1177
  });
763
1178
  /**
764
- * - Returns a boolean stating if the screen is currently shared or not
1179
+ * Checks if the screen sharing is currently active in the room.
765
1180
  *
766
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/screenshare} for more info
1181
+ * This asynchronous method queries the native `HMSManager` module to determine if the screen is currently being shared by the local peer in the room.
1182
+ * It returns a promise that resolves to a boolean value, indicating the screen sharing status. `true` signifies that the screen sharing is active,
1183
+ * while `false` indicates that it is not. This method can be used to toggle UI elements or to decide whether to start or stop screen sharing based on the current state.
767
1184
  *
1185
+ * @async
1186
+ * @function isScreenShared
768
1187
  * @memberof HMSSDK
1188
+ * @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether the screen is currently shared.
1189
+ * @example
1190
+ * // Check if the screen is currently shared
1191
+ * const isShared = await hmsInstance.isScreenShared();
1192
+ * console.log(isShared ? "Screen is being shared" : "Screen is not being shared");
1193
+ *
1194
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
769
1195
  */
770
1196
  _defineProperty(this, "isScreenShared", async () => {
771
1197
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function isScreenShared', {
@@ -776,11 +1202,25 @@ class HMSSDK {
776
1202
  });
777
1203
  });
778
1204
  /**
779
- * - stops the screenShare, currently available for android only.
1205
+ * Asynchronously stops the screen sharing session.
1206
+ *
1207
+ * This method communicates with the native `HMSManager` module to stop the ongoing screen sharing session initiated by the local peer.
1208
+ * Upon successful execution, the screen sharing session is terminated, and other participants
1209
+ * in the room will no longer be able to see the shared screen. This method can be used to programmatically control the end of a screen sharing session,
1210
+ * providing flexibility in managing the screen sharing feature within your application.
780
1211
  *
781
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/screenshare} for more info
1212
+ * Note: Ensure that the necessary permissions and conditions for screen sharing are managed appropriately in your application.
782
1213
  *
1214
+ * @async
1215
+ * @function stopScreenshare
783
1216
  * @memberof HMSSDK
1217
+ * @returns {Promise<void>} A promise that resolves when the screen sharing has successfully stopped.
1218
+ * @throws {Error} Throws an error if the operation fails or the screen sharing cannot be stopped.
1219
+ *
1220
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/screenshare
1221
+ * @example
1222
+ * // Stop screen sharing
1223
+ * await hmsInstance.stopScreenshare();
784
1224
  */
785
1225
  _defineProperty(this, "stopScreenshare", async () => {
786
1226
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function stopScreenshare', {
@@ -790,6 +1230,21 @@ class HMSSDK {
790
1230
  id: this.id
791
1231
  });
792
1232
  });
1233
+ /**
1234
+ * Enables network quality updates for the local peer.
1235
+ *
1236
+ * This method activates the network quality monitoring feature, which periodically assesses and reports the network quality of peers in a room.
1237
+ * The network quality updates are useful for providing feedback to the user about their current connection status, potentially prompting them to improve their network environment if necessary.
1238
+ * Upon enabling, network quality updates are emitted through the appropriate event listeners - `HMSPeerUpdate.NETWORK_QUALITY_UPDATED` allowing the application to react or display the network status dynamically.
1239
+ *
1240
+ * @function enableNetworkQualityUpdates
1241
+ * @memberof HMSSDK
1242
+ * @example
1243
+ * // Enable network quality updates
1244
+ * hmsInstance.enableNetworkQualityUpdates();
1245
+ *
1246
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/measure-network-quality-and-performance/network-quality
1247
+ */
793
1248
  _defineProperty(this, "enableNetworkQualityUpdates", () => {
794
1249
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function enableNetworkQualityUpdates', {
795
1250
  id: this.id
@@ -798,6 +1253,21 @@ class HMSSDK {
798
1253
  id: this.id
799
1254
  });
800
1255
  });
1256
+ /**
1257
+ * Disables network quality updates for the local peer.
1258
+ *
1259
+ * This method deactivates the network quality monitoring feature, which stops the periodic assessment and reporting of the network quality of peers in a room.
1260
+ * Disabling network quality updates can be useful in scenarios where network quality information is no longer needed, or to reduce the computational overhead associated with monitoring network quality.
1261
+ * Once disabled, network quality updates will no longer be emitted through the event listeners, allowing the application to cease reacting to or displaying network status information.
1262
+ *
1263
+ * @function disableNetworkQualityUpdates
1264
+ * @memberof HMSSDK
1265
+ * @example
1266
+ * // Disable network quality updates
1267
+ * hmsInstance.disableNetworkQualityUpdates();
1268
+ *
1269
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/measure-network-quality-and-performance/network-quality
1270
+ */
801
1271
  _defineProperty(this, "disableNetworkQualityUpdates", () => {
802
1272
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function disableNetworkQualityUpdates', {
803
1273
  id: this.id
@@ -807,12 +1277,26 @@ class HMSSDK {
807
1277
  });
808
1278
  });
809
1279
  /**
810
- * - This wrapper function is used to start streaming device audio, currently available only for android.
1280
+ * Starts streaming device audio, available only on Android devices.
811
1281
  *
812
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-stream-device-audio-from-the-app} for more info.
1282
+ * This method allows the application to share device audio, such as music or system sounds, with other participants in a video conference.
1283
+ * It leverages the native HMSManager's `startAudioshare` method to initiate audio sharing. The function takes an `HMSAudioMixingMode` parameter,
1284
+ * which specifies the audio mixing mode to be used during the audio share session.
813
1285
  *
814
- * @param {HMSAudioMixingMode}
815
- * @memberof HMSSDK
1286
+ * Note: This feature is currently supported only on Android. Attempting to use this feature on iOS will result in a console log indicating
1287
+ * that the API is not available for iOS.
1288
+ *
1289
+ * @async
1290
+ * @function startAudioshare
1291
+ * @param {HMSAudioMixingMode} audioMixingMode - The audio mixing mode to be used for the audio share session.
1292
+ * @returns {Promise} A promise that resolves to a success if the audio share is started successfully
1293
+ * @throws {Error} Throws an error if the operation fails or the audio share cannot be started.
1294
+ *
1295
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
1296
+ *
1297
+ * @example
1298
+ * // Start audio sharing with the default mixing mode
1299
+ * await hmsInstance.startAudioshare(HMSAudioMixingMode.DEFAULT);
816
1300
  */
817
1301
  _defineProperty(this, "startAudioshare", async audioMixingMode => {
818
1302
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function startAudioshare', {
@@ -830,11 +1314,21 @@ class HMSSDK {
830
1314
  }
831
1315
  });
832
1316
  /**
833
- * - This wrapper function returns true if audio is being shared and vice versa, currently available only for android.
1317
+ * Checks if audio sharing is currently active.
834
1318
  *
835
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-get-audio-share-status} for more info.
1319
+ * This asynchronous method determines whether audio sharing is currently active, with support limited to Android devices.
1320
+ * On Android, it queries the native `HMSManager` module to check the audio sharing status and returns a promise that resolves to a boolean value.
836
1321
  *
1322
+ * @async
1323
+ * @function isAudioShared
837
1324
  * @memberof HMSSDK
1325
+ * @returns {Promise<boolean>} A promise that resolves to a boolean indicating whether audio sharing is currently active.
1326
+ * @example
1327
+ * // Check if audio is being shared on an Android device
1328
+ * const isSharing = await hmsInstance.isAudioShared();
1329
+ * console.log(isSharing); // true or false based on the sharing status, or a message for iOS
1330
+ *
1331
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
838
1332
  */
839
1333
  _defineProperty(this, "isAudioShared", async () => {
840
1334
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function isAudioShared', {
@@ -846,15 +1340,25 @@ class HMSSDK {
846
1340
  });
847
1341
  } else {
848
1342
  console.log('API currently not available for iOS');
849
- return 'API currently not available for iOS';
1343
+ return Promise.resolve(false);
850
1344
  }
851
1345
  });
852
1346
  /**
853
- * - This wrapper function is used to stop streaming device audio, currently available only for android.
1347
+ * Stops the streaming of device audio, with functionality currently limited to Android devices.
854
1348
  *
855
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-stop-audio-sharing} for more info.
1349
+ * This asynchronous method communicates with the native `HMSManager` module to stop the audio sharing session that was previously started.
1350
+ * It is primarily used when the application needs to cease sharing device audio, such as music or system sounds, with other participants in a video conference.
1351
+ * On Android devices, it successfully terminates the audio share session. On iOS devices, since the feature is not supported, it logs a message indicating the unavailability of the API.
856
1352
  *
1353
+ * @async
1354
+ * @function stopAudioshare
857
1355
  * @memberof HMSSDK
1356
+ * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.
1357
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
1358
+ *
1359
+ * @example
1360
+ * // Stop audio sharing
1361
+ * await hmsInstance.stopAudioshare();
858
1362
  */
859
1363
  _defineProperty(this, "stopAudioshare", async () => {
860
1364
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function stopAudioshare', {
@@ -866,14 +1370,30 @@ class HMSSDK {
866
1370
  });
867
1371
  } else {
868
1372
  console.log('API currently not available for iOS');
869
- return 'API currently not available for iOS';
1373
+ return Promise.resolve(false);
870
1374
  }
871
1375
  });
872
1376
  /**
873
- * - This wrapper function returns the current audio mixing mode, currently available only for android.
1377
+ * Asynchronously retrieves the current audio mixing mode, with functionality currently limited to Android devices.
1378
+ *
1379
+ * This method queries the native `HMSManager` module to obtain the current audio mixing mode used in the audio share session.
1380
+ * The audio mixing mode determines how local and remote audio tracks are mixed together during an audio share session.
1381
+ *
1382
+ * Note: This feature is only supported on Android. Attempting to use this feature on iOS will result in a console log indicating
1383
+ * that the API is not available for iOS devices.
874
1384
  *
1385
+ * @async
1386
+ * @function getAudioMixingMode
875
1387
  * @memberof HMSSDK
876
- * @return HMSAudioMixingMode
1388
+ * @returns {Promise<string>} A promise that resolves to a string indicating the current audio mixing mode.
1389
+ *
1390
+ * @throws {Error} Throws an error if the operation fails or the audio mixing mode cannot be retrieved.
1391
+ *
1392
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
1393
+ * @example
1394
+ * // Get the current audio mixing mode on an Android device
1395
+ * const mixingMode = await hmsInstance.getAudioMixingMode();
1396
+ * console.log(mixingMode); // Outputs the current audio mixing mode or a message for iOS
877
1397
  */
878
1398
  _defineProperty(this, "getAudioMixingMode", async () => {
879
1399
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getAudioMixingMode', {
@@ -885,15 +1405,27 @@ class HMSSDK {
885
1405
  });
886
1406
  } else {
887
1407
  console.log('API currently not available for iOS');
888
- return 'API currently not available for iOS';
1408
+ return Promise.reject('API currently not available for iOS');
889
1409
  }
890
1410
  });
891
1411
  /**
892
- * - This wrapper function used to change the mode while the user is streaming audio, currently available only for android.
1412
+ * Sets the audio mixing mode for the current session. Android only.
1413
+ *
1414
+ * This asynchronous function is used to change the mode of audio mixing during a session. It is currently
1415
+ * available only for Android. The function logs the action with the instance ID and the specified audio mixing mode,
1416
+ * then calls the native `setAudioMixingMode` method in `HMSManager` with the provided parameters.
1417
+ *
1418
+ * If the platform is not Android, it logs a message indicating that the API is not available for iOS.
1419
+ *
1420
+ * @param {HMSAudioMixingMode} audioMixingMode - The audio mixing mode to be set.
1421
+ * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.
1422
+ * @throws {Error} Throws an error if the operation fails or the audio mixing mode cannot be set.
1423
+ *
1424
+ * @example
1425
+ * await hmsInstance.setAudioMixingMode(HMSAudioMixingMode.TALK_AND_MUSIC);
893
1426
  *
894
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-share#how-to-change-mode} for more info
1427
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/local-audio-share
895
1428
  *
896
- * @param {HMSAudioMixingMode}
897
1429
  * @memberof HMSSDK
898
1430
  */
899
1431
  _defineProperty(this, "setAudioMixingMode", async audioMixingMode => {
@@ -908,17 +1440,24 @@ class HMSSDK {
908
1440
  });
909
1441
  } else {
910
1442
  console.log('API currently not available for iOS');
911
- return 'API currently not available for iOS';
1443
+ return Promise.reject('API currently not available for iOS');
912
1444
  }
913
1445
  });
914
1446
  /**
915
- * - This wrapper function returns the array of audio output devices which is of
916
- * type {@link HMSAudioDevice[]}, currently available only for android.
1447
+ * Retrieves a list of audio output devices. Android only.
1448
+ *
1449
+ * This method asynchronously fetches and returns an array of audio output devices available on the device.
1450
+ * It is designed to work specifically on Android platforms. For iOS, it will reject the promise with a message
1451
+ * indicating that the API is not available. This can be useful for applications that need to display or allow
1452
+ * the user to select from available audio output options, such as speakers, headphones, or Bluetooth devices.
917
1453
  *
918
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#get-list-of-audio-device} for more info
1454
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
919
1455
  *
920
1456
  * @memberof HMSSDK
921
- * @return HMSAudioDevice[]
1457
+ * @returns {Promise<HMSAudioDevice[]>} A promise that resolves to an array of `HMSAudioDevice` objects on Android. On iOS, the promise is rejected.
1458
+ * @example
1459
+ * // Get the list of audio output devices
1460
+ * const audioDevices = await hmsInstance.getAudioDevicesList();
922
1461
  */
923
1462
  _defineProperty(this, "getAudioDevicesList", async () => {
924
1463
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getAudioDevicesList', {
@@ -930,17 +1469,25 @@ class HMSSDK {
930
1469
  });
931
1470
  } else {
932
1471
  console.log('API currently not available for iOS');
933
- return 'API currently not available for iOS';
1472
+ return Promise.reject('API currently not available for iOS');
934
1473
  }
935
1474
  });
936
1475
  /**
937
- * - This wrapper function returns the current audio output device which is of
938
- * type {@link HMSAudioDevice}, currently available only for android.
1476
+ * Retrieves the current audio output device type on Android devices.
1477
+ *
1478
+ * This method is a wrapper function that returns the type of the current audio output device.
1479
+ * The return type is a `HMSAudioDevice`, which is an enumeration representing different types of audio output devices.
1480
+ *
1481
+ * Note: This API is not available for iOS devices. If invoked on iOS, it logs a message indicating the unavailability and rejects the promise.
939
1482
  *
940
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#get-current-focussed-device} for more info
1483
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
941
1484
  *
942
1485
  * @memberof HMSSDK
943
- * @return HMSAudioDevice
1486
+ * @returns {Promise<HMSAudioDevice>} A promise that resolves to the current audio output device type if the platform is Android. If the platform is iOS, the promise is rejected.
1487
+ *
1488
+ * @example
1489
+ * // Get the current audio output device type
1490
+ * const currentAudioOutputDevice = await hmsInstance.getAudioOutputRouteType();
944
1491
  */
945
1492
  _defineProperty(this, "getAudioOutputRouteType", async () => {
946
1493
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getAudioOutputRouteType', {
@@ -952,32 +1499,33 @@ class HMSSDK {
952
1499
  });
953
1500
  } else {
954
1501
  console.log('API currently not available for iOS');
955
- return 'API currently not available for iOS';
1502
+ return Promise.reject('API currently not available for iOS');
956
1503
  }
957
1504
  });
958
1505
  /**
959
- * Android Only
960
- * - This wrapper function used to switch output to device other than the default, currently available only for android.
1506
+ * Switches the audio output device to a specified device.
1507
+ * This function is a wrapper around the native module's method to change the audio output route.
1508
+ * It allows for changing the audio output to a device other than the default one, such as a Bluetooth headset or speaker.
1509
+ *
1510
+ * @param {HMSAudioDevice} audioDevice - The audio device to switch the output to. This should be one of the devices available in `HMSAudioDevice`.
961
1511
  *
962
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#switch-audio-focus-to-another-device} for more info
1512
+ * @returns {Promise<void>} A promise that resolves when the audio output device is successfully switched. Rejected if the operation fails.
1513
+ *
1514
+ * @example
1515
+ * // To switch audio output to a Bluetooth device
1516
+ * hmsSDK.switchAudioOutput(HMSAudioDevice.Bluetooth);
963
1517
  *
964
1518
  * @memberof HMSSDK
965
- * @param audioDevice
966
1519
  */
967
1520
  _defineProperty(this, "switchAudioOutput", audioDevice => {
968
1521
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function switchAudioOutput', {
969
1522
  id: this.id,
970
1523
  audioDevice
971
1524
  });
972
- if (_reactNative.Platform.OS === 'android') {
973
- return _HMSManagerModule.default.switchAudioOutput({
974
- id: this.id,
975
- audioDevice
976
- });
977
- } else {
978
- console.log('API currently not available for iOS');
979
- return 'API currently not available for iOS';
980
- }
1525
+ return _HMSManagerModule.default.switchAudioOutput({
1526
+ id: this.id,
1527
+ audioDevice
1528
+ });
981
1529
  });
982
1530
  _defineProperty(this, "switchAudioOutputUsingIOSUI", () => {
983
1531
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function switchAudioOutputUsingIOSUI', {
@@ -993,7 +1541,7 @@ class HMSSDK {
993
1541
  /**
994
1542
  * - This wrapper function used to change Audio Mode manually, currently available only for android.
995
1543
  *
996
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-mode-change} for more info
1544
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-mode-change
997
1545
  *
998
1546
  * @param {HMSAudioMode}
999
1547
  * @memberof HMSSDK
@@ -1014,12 +1562,16 @@ class HMSSDK {
1014
1562
  }
1015
1563
  });
1016
1564
  /**
1017
- * - This is a wrapper function which adds a listener which is triggered when audio output device is switched, currently available only for android.
1565
+ * Adds a listener for changes in the audio output device.
1566
+ * This function is platform-specific and currently only implemented for Android devices.
1567
+ * When the audio output device changes (e.g., switching from the phone speaker to a Bluetooth headset), the specified callback function is triggered.
1568
+ * This can be useful for applications that need to react to changes in audio routing, such as updating the UI to reflect the current output device.
1018
1569
  *
1019
- * checkout {@link https://www.100ms.live/docs/react-native/v2/features/audio-output-routing#adding-a-listener} for more info
1570
+ * Note: This API is not available on iOS as of the current implementation. Attempting to use it on iOS will result in a rejected promise with an appropriate error message.
1020
1571
  *
1021
- * @param {Function}
1572
+ * @param {Function} callback - The function to be called when the audio output device changes. This function does not receive any parameters.
1022
1573
  * @memberof HMSSDK
1574
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing
1023
1575
  */
1024
1576
  _defineProperty(this, "setAudioDeviceChangeListener", callback => {
1025
1577
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function setAudioDeviceChangeListener', {
@@ -1032,9 +1584,15 @@ class HMSSDK {
1032
1584
  });
1033
1585
  } else {
1034
1586
  console.log('API currently not available for iOS');
1035
- return 'API currently not available for iOS';
1587
+ return Promise.reject('API currently not available for iOS');
1036
1588
  }
1037
1589
  });
1590
+ /**
1591
+ * Asynchronously retrieves a remote video track by its track ID.
1592
+ *
1593
+ * @param {string} trackId - The unique identifier for the remote video track to be retrieved.
1594
+ * @returns {Promise<HMSRemoteVideoTrack>} A promise that resolves to the encoded remote video track data.
1595
+ */
1038
1596
  _defineProperty(this, "getRemoteVideoTrackFromTrackId", async trackId => {
1039
1597
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getRemoteVideoTrackFromTrackId', {
1040
1598
  id: this.id,
@@ -1046,17 +1604,33 @@ class HMSSDK {
1046
1604
  });
1047
1605
  return _HMSEncoder.HMSEncoder.encodeHmsRemoteVideoTrack(remoteVideoTrackData, this.id);
1048
1606
  });
1607
+ /**
1608
+ * Retrieves a remote audio track by its track ID.
1609
+ *
1610
+ * @param {string} trackId - The unique identifier for the remote audio track to be retrieved.
1611
+ * @returns {Promise<HMSRemoteAudioTrack>} A promise that resolves to the encoded remote audio track data.
1612
+ */
1049
1613
  _defineProperty(this, "getRemoteAudioTrackFromTrackId", async trackId => {
1614
+ // Log the function call with the track ID for debugging purposes.
1050
1615
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getRemoteAudioTrackFromTrackId', {
1051
1616
  id: this.id,
1052
1617
  trackId
1053
1618
  });
1619
+
1620
+ // Fetch the remote audio track data from the native HMSManager.
1054
1621
  const remoteAudioTrackData = await _HMSManagerModule.default.getRemoteAudioTrackFromTrackId({
1055
1622
  id: this.id,
1056
1623
  trackId
1057
1624
  });
1625
+ // Encode and return the remote audio track data.
1058
1626
  return _HMSEncoder.HMSEncoder.encodeHmsRemoteAudioTrack(remoteAudioTrackData, this.id);
1059
1627
  });
1628
+ /**
1629
+ * Retrieves a peer object based on the provided peer ID.
1630
+ *
1631
+ * @param {string} peerId - The ID of the peer to retrieve.
1632
+ * @returns {HMSPeer | undefined} An encoded HMSPeer object if the peer is found otherwise `undefined`.
1633
+ */
1060
1634
  _defineProperty(this, "getPeerFromPeerId", peerId => {
1061
1635
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getPeerFromPeerId', {
1062
1636
  id: this.id,
@@ -1109,32 +1683,89 @@ class HMSSDK {
1109
1683
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function lowerRemotePeerHand', data);
1110
1684
  return _HMSManagerModule.default.lowerRemotePeerHand(data);
1111
1685
  });
1112
- // getPeerListIterator = (
1113
- // options?: HMSPeerListIteratorOptions
1114
- // ): HMSPeerListIterator => {
1115
- // logger?.verbose('#Function getPeerListIterator', {
1116
- // id: this.id,
1117
- // options,
1118
- // });
1119
- // const uniqueId = Date.now();
1120
- // const data: null | { sucess: boolean; uniqueId: number } =
1121
- // HMSManager.getPeerListIterator({
1122
- // id: this.id,
1123
- // ...options,
1124
- // limit: options?.limit ?? 10,
1125
- // uniqueId: uniqueId,
1126
- // });
1127
- // if (!data) {
1128
- // throw new Error('Unable to create PeerListIterator');
1129
- // }
1130
- // return new HMSPeerListIterator(data.uniqueId);
1131
- // };
1132
1686
  /**
1133
- * - This is a prototype event listener that takes action and listens for updates related to that particular action
1687
+ * `getPeerListIterator` method returns an instance of `HMSPeerListIterator` class
1688
+ *
1689
+ * @param options options for configuring iterator
1690
+ * @returns instance of HMSPeerListIterator class
1691
+ *
1692
+ * Example usage:
1693
+ * ```
1694
+ * const peerListIterator = hmsInstance.getPeerListIterator();
1695
+ * ```
1696
+ * OR
1697
+ * ```
1698
+ * const peerListIterator = hmsInstance.getPeerListIterator({
1699
+ * limit: 10,
1700
+ * byRoleName: 'viewer-realtime',
1701
+ * });
1702
+ * ```
1703
+ */
1704
+ _defineProperty(this, "getPeerListIterator", options => {
1705
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function getPeerListIterator', {
1706
+ id: this.id,
1707
+ options
1708
+ });
1709
+ const uniqueId = Math.random().toString(16).slice(2);
1710
+ const data = _HMSManagerModule.default.getPeerListIterator({
1711
+ id: this.id,
1712
+ ...options,
1713
+ limit: (options === null || options === void 0 ? void 0 : options.limit) ?? 10,
1714
+ uniqueId
1715
+ });
1716
+ if (!data) {
1717
+ throw new Error('Unable to create PeerListIterator');
1718
+ }
1719
+ return new _HMSPeerListIterator.HMSPeerListIterator(data.uniqueId, data.totalCount);
1720
+ });
1721
+ /**
1722
+ * - This function allows the user to set the screen on always.
1723
+ * - This is useful when the user wants to keep the screen on while the app is in the foreground.
1724
+ * @param enabled boolean value to enable or disable the always screen on
1725
+ */
1726
+ _defineProperty(this, "setAlwaysScreenOn", async enabled => {
1727
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function toggleAlwaysScreenOn', {
1728
+ id: this.id,
1729
+ enabled
1730
+ });
1731
+ return _HMSManagerModule.default.setAlwaysScreenOn({
1732
+ id: this.id,
1733
+ enabled
1734
+ });
1735
+ });
1736
+ _defineProperty(this, "setPermissionsAcceptedOnAndroid", async () => {
1737
+ if (_reactNative.Platform.OS === 'ios') {
1738
+ Promise.reject('setPermissionsAcceptedOnAndroid API not available for iOS');
1739
+ return;
1740
+ }
1741
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function setPermissionsAcceptedOnAndroid', {
1742
+ id: this.id
1743
+ });
1744
+ return await _HMSManagerModule.default.setPermissionsAccepted({
1745
+ id: this.id
1746
+ });
1747
+ });
1748
+ /**
1749
+ * Registers an event listener for various HMS SDK events.
1134
1750
  *
1135
- * @param {string} action
1136
- * @param {*} callback
1751
+ * This method allows the registration of callbacks for different types of events that can occur within the HMS SDK.
1752
+ * These events include but are not limited to updates about the room, peers, tracks, and errors.
1753
+ * The method dynamically adds listeners based on the specified action and associates them with a callback function
1754
+ * to handle the event. It ensures that only one subscription exists per event type to avoid duplicate listeners.
1755
+ *
1756
+ * @param {HMSUpdateListenerActions | HMSPIPListenerActions} action - The specific action/event to listen for.
1757
+ * @param {Function} callback - The callback function to execute when the event occurs. The specifics of the callback parameters depend on the event type.
1137
1758
  * @memberof HMSSDK
1759
+ *
1760
+ * @example
1761
+ * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_JOIN, (event) => {
1762
+ * console.log('Joined the room:', event);
1763
+ * });
1764
+ *
1765
+ * @example
1766
+ * hmsInstance.addEventListener(HMSUpdateListenerActions.ON_PEER_UPDATE, (event) => {
1767
+ * console.log('Peer update:', event);
1768
+ * });
1138
1769
  */
1139
1770
  _defineProperty(this, "addEventListener", (action, callback) => {
1140
1771
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function addEventListener', {
@@ -1166,6 +1797,18 @@ class HMSSDK {
1166
1797
  this.onJoinDelegate = callback;
1167
1798
  break;
1168
1799
  }
1800
+ case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED:
1801
+ {
1802
+ // Checking if we already have ON_PERMISSIONS_REQUESTED subscription
1803
+ if (!this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED]) {
1804
+ // Adding ON_PERMISSIONS_REQUESTED native listener
1805
+ const permissionsRequestedSubscription = _HMSNativeEventListener.default.addListener(this.id, _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED, this.onPermissionsRequestedListener);
1806
+ this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED] = permissionsRequestedSubscription;
1807
+ }
1808
+ // Adding App Delegate listener
1809
+ this.onPermissionsRequestedDelegate = callback;
1810
+ break;
1811
+ }
1169
1812
  case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_ROOM_UPDATE:
1170
1813
  {
1171
1814
  // Checking if we already have ON_ROOM_UPDATE subscription
@@ -1178,6 +1821,18 @@ class HMSSDK {
1178
1821
  this.onRoomDelegate = callback;
1179
1822
  break;
1180
1823
  }
1824
+ case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS:
1825
+ {
1826
+ // Checking if we already have ON_TRANSCRIPTS subscription
1827
+ if (!this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS]) {
1828
+ // Adding ON_TRANSCRIPTS native listener
1829
+ const transcriptsSubscription = _HMSNativeEventListener.default.addListener(this.id, _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS, this.onTranscriptsListener);
1830
+ this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS] = transcriptsSubscription;
1831
+ }
1832
+ // Adding App Delegate listener
1833
+ this.onTranscriptsDelegate = callback;
1834
+ break;
1835
+ }
1181
1836
  case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PEER_UPDATE:
1182
1837
  {
1183
1838
  // Checking if we already have ON_PEER_UPDATE subscription
@@ -1410,26 +2065,34 @@ class HMSSDK {
1410
2065
  }
1411
2066
  case _HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED:
1412
2067
  {
1413
- if (_reactNative.Platform.OS === 'android') {
1414
- // Checking if we already have ON_PIP_MODE_CHANGED subscription
1415
- if (!this.emitterSubscriptions[_HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED]) {
1416
- const pipModeChangedSubscription = _HMSNativeEventListener.default.addListener(this.id, _HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED, this.onPIPModeChangedListener);
1417
- this.emitterSubscriptions[_HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED] = pipModeChangedSubscription;
1418
- }
1419
- // Adding PIP mode changed Delegate listener
1420
- this.onPIPModeChangedDelegate = callback;
2068
+ // Checking if we already have ON_PIP_MODE_CHANGED subscription
2069
+ if (!this.emitterSubscriptions[_HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED]) {
2070
+ const pipModeChangedSubscription = _HMSNativeEventListener.default.addListener(this.id, _HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED, this.onPIPModeChangedListener);
2071
+ this.emitterSubscriptions[_HMSPIPListenerActions.HMSPIPListenerActions.ON_PIP_MODE_CHANGED] = pipModeChangedSubscription;
1421
2072
  }
2073
+ // Adding PIP mode changed Delegate listener
2074
+ this.onPIPModeChangedDelegate = callback;
1422
2075
  break;
1423
2076
  }
1424
2077
  default:
1425
2078
  }
1426
2079
  });
1427
2080
  /**
1428
- * - This is a prototype event listener that takes action and listens for updates related to that particular action
2081
+ * Removes an event listener for a specified event action.
1429
2082
  *
1430
- * @param {string} action
1431
- * @param {*} callback
2083
+ * This method allows for the deregistration of previously registered callbacks for specific event types within the HMS SDK.
2084
+ * By specifying the action and the callback, it ensures that the event listener associated with that action is removed,
2085
+ * preventing the callback from being executed when the event occurs in the future. This is useful for cleaning up resources
2086
+ * and avoiding potential memory leaks in applications that dynamically add and remove event listeners based on component lifecycle
2087
+ * or user interactions.
2088
+ *
2089
+ * @param {HMSUpdateListenerActions | HMSPIPListenerActions} action - The specific action/event for which the listener is to be removed.
2090
+ * @param {Function} callback - The callback function that was originally registered for the event. This parameter is necessary to ensure
2091
+ * that only the specific callback associated with the action is removed.
1432
2092
  * @memberof HMSSDK
2093
+ * @example
2094
+ * // Remove a listener for the ON_JOIN event
2095
+ * hmsInstance.removeEventListener(HMSUpdateListenerActions.ON_JOIN, onJoinCallback);
1433
2096
  */
1434
2097
  _defineProperty(this, "removeEventListener", action => {
1435
2098
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function removeEventListener', {
@@ -1461,6 +2124,18 @@ class HMSSDK {
1461
2124
  this.onJoinDelegate = null;
1462
2125
  break;
1463
2126
  }
2127
+ case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED:
2128
+ {
2129
+ const subscription = this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED];
2130
+ // Removing ON_PERMISSIONS_REQUESTED native listener
2131
+ if (subscription) {
2132
+ subscription.remove();
2133
+ this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PERMISSIONS_REQUESTED] = undefined;
2134
+ }
2135
+ // Removing App Delegate listener
2136
+ this.onPermissionsRequestedDelegate = null;
2137
+ break;
2138
+ }
1464
2139
  case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_ROOM_UPDATE:
1465
2140
  {
1466
2141
  const subscription = this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_ROOM_UPDATE];
@@ -1473,6 +2148,18 @@ class HMSSDK {
1473
2148
  this.onRoomDelegate = null;
1474
2149
  break;
1475
2150
  }
2151
+ case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS:
2152
+ {
2153
+ const subscription = this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS];
2154
+ // Removing ON_TRANSCRIPTS native listener
2155
+ if (subscription) {
2156
+ subscription.remove();
2157
+ this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_TRANSCRIPTS] = undefined;
2158
+ }
2159
+ // Removing App Delegate listener
2160
+ this.onTranscriptsDelegate = null;
2161
+ break;
2162
+ }
1476
2163
  case _HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PEER_UPDATE:
1477
2164
  {
1478
2165
  const subscription = this.emitterSubscriptions[_HMSUpdateListenerActions.HMSUpdateListenerActions.ON_PEER_UPDATE];
@@ -1740,20 +2427,6 @@ class HMSSDK {
1740
2427
  id: this.id
1741
2428
  });
1742
2429
  });
1743
- /**
1744
- * - Below are all the listeners that are connected to native side.
1745
- *
1746
- * - All of the are connected when build function is called, we can connect them to the app by
1747
- * calling {@link addEventListener} with corresponding event type.
1748
- *
1749
- * - Before passing the data to the eventListener of the app these listeners encode the data in
1750
- * ts classes for a proper structuring of the data.
1751
- *
1752
- * - Even When event listeners of the app are disconnected using {@link removeEventListener} or
1753
- * {@link removeAllListeners} or not even connected in first place, these functions still run to
1754
- * maintain the current state of the instance of {@link HMSSDK}.
1755
- *
1756
- */
1757
2430
  _defineProperty(this, "onPreviewListener", data => {
1758
2431
  if (data.id !== this.id) {
1759
2432
  return;
@@ -1785,6 +2458,17 @@ class HMSSDK {
1785
2458
  });
1786
2459
  }
1787
2460
  });
2461
+ _defineProperty(this, "onPermissionsRequestedListener", data => {
2462
+ if (data.id !== this.id) {
2463
+ return;
2464
+ }
2465
+ if (this.onPermissionsRequestedDelegate) {
2466
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Listener ON_PERMISSIONS_REQUESTED_LISTENER_CALL', data);
2467
+ this.onPermissionsRequestedDelegate({
2468
+ ...data
2469
+ });
2470
+ }
2471
+ });
1788
2472
  _defineProperty(this, "onRoomListener", data => {
1789
2473
  var _getHmsRoomCache2;
1790
2474
  if (data.id !== this.id) {
@@ -1804,8 +2488,17 @@ class HMSSDK {
1804
2488
  });
1805
2489
  }
1806
2490
  });
2491
+ _defineProperty(this, "onTranscriptsListener", data => {
2492
+ if (data.id !== this.id) {
2493
+ return;
2494
+ }
2495
+ _HMSEncoder.HMSEncoder.transformTranscripts(data.transcripts);
2496
+ if (this.onTranscriptsDelegate) {
2497
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Listener ON_TRANSCRIPTS_LISTENER_CALL', data);
2498
+ this.onTranscriptsDelegate(data);
2499
+ }
2500
+ });
1807
2501
  _defineProperty(this, "onPeerListener", peerData => {
1808
- var _getHmsPeersCache;
1809
2502
  const data = {
1810
2503
  peer: peerData,
1811
2504
  type: null
@@ -1819,7 +2512,15 @@ class HMSSDK {
1819
2512
  }
1820
2513
  const peer = _HMSEncoder.HMSEncoder.encodeHmsPeer(data.peer);
1821
2514
  const type = _HMSEncoder.HMSEncoder.encodeHmsPeerUpdate(data.type) || data.type;
1822
- (_getHmsPeersCache = (0, _HMSPeersCache.getHmsPeersCache)()) === null || _getHmsPeersCache === void 0 || _getHmsPeersCache.updatePeerCache(data.peer.peerID, data.peer, type);
2515
+ if (type === _HMSPeerUpdate.HMSPeerUpdate.PEER_LEFT) {
2516
+ this.sendPeerUpdateWhenPeerLeaves(data, peer, type);
2517
+ } else {
2518
+ var _getHmsPeersCache;
2519
+ (_getHmsPeersCache = (0, _HMSPeersCache.getHmsPeersCache)()) === null || _getHmsPeersCache === void 0 || _getHmsPeersCache.updatePeerCache(data.peer.peerID, data.peer, type);
2520
+ this.sendPeerUpdate(peer, type);
2521
+ }
2522
+ });
2523
+ _defineProperty(this, "sendPeerUpdate", (peer, type) => {
1823
2524
  if (this.onPeerDelegate) {
1824
2525
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Listener ON_PEER_LISTENER_CALL', {
1825
2526
  peer,
@@ -1831,6 +2532,11 @@ class HMSSDK {
1831
2532
  });
1832
2533
  }
1833
2534
  });
2535
+ _defineProperty(this, "sendPeerUpdateWhenPeerLeaves", (data, peer, type) => {
2536
+ var _getHmsPeersCache2;
2537
+ this.sendPeerUpdate(peer, type);
2538
+ (_getHmsPeersCache2 = (0, _HMSPeersCache.getHmsPeersCache)()) === null || _getHmsPeersCache2 === void 0 || _getHmsPeersCache2.updatePeerCache(data.peer.peerID, data.peer, type);
2539
+ });
1834
2540
  _defineProperty(this, "onPeerListUpdatedListener", data => {
1835
2541
  if (data.id !== this.id) {
1836
2542
  return;
@@ -1849,19 +2555,16 @@ class HMSSDK {
1849
2555
  }
1850
2556
  });
1851
2557
  _defineProperty(this, "onTrackListener", data => {
1852
- var _getHmsPeersCache2;
2558
+ var _getHmsPeersCache3;
1853
2559
  if (data.id !== this.id) {
1854
2560
  return;
1855
2561
  }
1856
2562
  const track = _HMSEncoder.HMSEncoder.encodeHmsTrack(data.track, this.id);
1857
2563
  const peer = _HMSEncoder.HMSEncoder.encodeHmsPeer(data.peer);
1858
2564
  const type = data.type;
1859
- (_getHmsPeersCache2 = (0, _HMSPeersCache.getHmsPeersCache)()) === null || _getHmsPeersCache2 === void 0 || _getHmsPeersCache2.updatePeerCache(data.peer.peerID, {
2565
+ (_getHmsPeersCache3 = (0, _HMSPeersCache.getHmsPeersCache)()) === null || _getHmsPeersCache3 === void 0 || _getHmsPeersCache3.updatePeerCache(data.peer.peerID, {
1860
2566
  track
1861
2567
  }, data.type);
1862
- if (this.muteStatus && (data === null || data === void 0 ? void 0 : data.type) === 'TRACK_ADDED' && track.type === _HMSTrackType.HMSTrackType.AUDIO) {
1863
- this.setPlaybackForAllAudio(this.muteStatus);
1864
- }
1865
2568
  if (this.onTrackDelegate) {
1866
2569
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Listener ON_TRACK_LISTENER_CALL', {
1867
2570
  peer,
@@ -2080,6 +2783,15 @@ class HMSSDK {
2080
2783
  });
2081
2784
  }
2082
2785
  });
2786
+ /**
2787
+ * Listener for the `SessionStoreAvailable` event.
2788
+ *
2789
+ * This listener is triggered when the session store becomes available in the SDK. It is an important event
2790
+ * for developers who need to access or manipulate the session store after it has been initialized and made available.
2791
+ *
2792
+ * @param {Object} data - The event data.
2793
+ * @param {HMSSessionStore} data.sessionStore - The session store object that has been made available.
2794
+ */
2083
2795
  _defineProperty(this, "onSessionStoreAvailableListener", data => {
2084
2796
  if (data.id !== this.id) {
2085
2797
  return;
@@ -2092,6 +2804,21 @@ class HMSSDK {
2092
2804
  });
2093
2805
  }
2094
2806
  });
2807
+ /**
2808
+ * Listener for the `PIPRoomLeave` event. Android only.
2809
+ *
2810
+ * This listener is triggered when a room is left from the Picture in Picture (PIP) mode, which is currently supported only on Android platforms.
2811
+ * It is an essential event for handling cleanup or UI updates when the user exits the room while in PIP mode.
2812
+ * @param {Object} data - The event data.
2813
+ * @memberof HMSSDK
2814
+ * @example
2815
+ * // Example of handling the `PIPRoomLeave` event
2816
+ * hms.onPIPRoomLeave((data) => {
2817
+ * // Handle PIP room leave event
2818
+ * });
2819
+ *
2820
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
2821
+ */
2095
2822
  _defineProperty(this, "onPIPRoomLeaveListener", data => {
2096
2823
  if (data.id !== this.id) {
2097
2824
  return;
@@ -2104,6 +2831,26 @@ class HMSSDK {
2104
2831
  });
2105
2832
  }
2106
2833
  });
2834
+ /**
2835
+ * Listener for the `PIPModeChanged` event.
2836
+ * This listener is triggered when the Picture in Picture (PIP) mode is toggled on or off.
2837
+ * It is an important event for handling UI updates or other actions when the user enters or exits PIP mode.
2838
+ * @param {Object} data - The event data.
2839
+ * @param {boolean} data.isInPictureInPictureMode - A boolean value indicating whether the user is currently in PIP mode.
2840
+ * @returns {void} - Returns nothing.
2841
+ * @memberof HMSSDK
2842
+ * @example
2843
+ * // Example of handling the `PIPModeChanged` event
2844
+ * hms.onPIPModeChanged((data) => {
2845
+ * if (data.isInPictureInPictureMode) {
2846
+ * // Handle PIP mode enabled
2847
+ * } else {
2848
+ * // Handle PIP mode disabled
2849
+ * }
2850
+ * });
2851
+ *
2852
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
2853
+ */
2107
2854
  _defineProperty(this, "onPIPModeChangedListener", data => {
2108
2855
  if (this.onPIPModeChangedDelegate) {
2109
2856
  _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Listener onPIPModeChanged_CALL', data);
@@ -2111,9 +2858,20 @@ class HMSSDK {
2111
2858
  }
2112
2859
  });
2113
2860
  /**
2114
- * - Updates the logger for this instance of HMSSDK
2115
- * @param {HMSLogger} hmsLogger
2861
+ * Updates the logger instance for this HMSSDK instance.
2862
+ *
2863
+ * This method allows for the dynamic updating of the logger instance used by the HMSSDK.
2864
+ * It can be used to change the logger settings or replace the logger entirely at runtime.
2865
+ * This is particularly useful for adjusting log levels or redirecting log output based on application state or user preferences.
2866
+ *
2867
+ * @param {HMSLogger} hmsLogger - The new logger instance to be used. If not provided, the logger will be reset to default.
2116
2868
  * @memberof HMSSDK
2869
+ * @example
2870
+ * // Set a custom logger with a specific configuration
2871
+ * const customLogger = new HMSLogger();
2872
+ * customLogger.setLevel('verbose');
2873
+ * hmsInstance.setLogger(customLogger);
2874
+ *
2117
2875
  */
2118
2876
  _defineProperty(this, "setLogger", hmsLogger => {
2119
2877
  (0, _HMSLogger.setLogger)(this.id, hmsLogger);
@@ -2122,20 +2880,40 @@ class HMSSDK {
2122
2880
  }
2123
2881
 
2124
2882
  /**
2125
- * - Returns an instance of [HMSSDK] {@link HMSSDK}
2126
- * - This function must be called to get an instance of HMSSDK class and only then user can interact with its methods.
2883
+ * Asynchronously builds and returns an instance of the HMSSDK class.
2884
+ *
2885
+ * This method initializes the HMSSDK with optional configuration parameters and returns the initialized instance.
2886
+ * It is responsible for setting up the SDK with specific settings for track management, app groups, extensions for iOS screen sharing,
2887
+ * logging configurations, etc.
2127
2888
  *
2128
- * Regular Usage:
2129
2889
  *
2890
+ * @param {Object} params - Optional configuration parameters for initializing the HMSSDK.
2891
+ * @param {trackSettings} params.trackSettings is an optional value only required to enable features like iOS Screen/Audio Share, Android Software Echo Cancellation, etc
2892
+ * @param {appGroup} params.appGroup is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
2893
+ * @param {preferredExtension} params.preferredExtension is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
2894
+ * @param {boolean} params.haltPreviewJoinForPermissionsRequestOnAndroid - Optional flag to halt the preview/join process until permissions are explicitly granted by the user. Android only. This is particularly useful when you might want to request permissions before proceeding with the preview or join operation.
2895
+ * @param {HMSLogSettings} params.logSettings - Optional settings for logging.
2896
+ *
2897
+ * @returns {Promise<HMSSDK>} A promise that resolves to an instance of HMSSDK.
2898
+ * @throws {Error} If the HMSSDK instance cannot be created.
2899
+ *
2900
+ * @example
2901
+ * // Regular usage:
2130
2902
  * const hmsInstance = await HMSSDK.build();
2131
2903
  *
2132
- * For Advanced Use-Cases:
2133
- * @param {trackSettings} trackSettings is an optional value only required to enable features like iOS Screen/Audio Share, Android Software Echo Cancellation, etc
2134
- * @param {appGroup} appGroup is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
2135
- * @param {preferredExtension} preferredExtension is an optional value only required for implementing Screen & Audio Share on iOS. They are not required for Android. DO NOT USE if your app does not implements Screen or Audio Share on iOS.
2904
+ * @example
2905
+ * // Advanced Usage:
2906
+ * const hmsInstance = await HMSSDK.build({
2907
+ * trackSettings: {...},
2908
+ * appGroup: 'group.example',
2909
+ * preferredExtension: 'com.example.extension',
2910
+ * logSettings: {...},
2911
+ * });
2136
2912
  *
2913
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/install-the-sdk/hmssdk
2137
2914
  * @static
2138
- * @returns
2915
+ * @async
2916
+ * @function build
2139
2917
  * @memberof HMSSDK
2140
2918
  */
2141
2919
  static async build(params) {
@@ -2149,6 +2927,8 @@ class HMSSDK {
2149
2927
  } = ReactNativeVersion.version;
2150
2928
  let id = await _HMSManagerModule.default.build({
2151
2929
  trackSettings: params === null || params === void 0 ? void 0 : params.trackSettings,
2930
+ haltPreviewJoinForPermissionsRequest: params === null || params === void 0 ? void 0 : params.haltPreviewJoinForPermissionsRequestOnAndroid,
2931
+ // required for Android Permissions, not required for iOS
2152
2932
  appGroup: params === null || params === void 0 ? void 0 : params.appGroup,
2153
2933
  // required for iOS Screenshare, not required for Android
2154
2934
  preferredExtension: params === null || params === void 0 ? void 0 : params.preferredExtension,
@@ -2163,17 +2943,98 @@ class HMSSDK {
2163
2943
  HmsSdk = new HMSSDK(id);
2164
2944
  return HmsSdk;
2165
2945
  }
2946
+ /**
2947
+ * - This function is used to check if Picture in Picture mode is supported on the device
2948
+ * @returns {Promise<boolean>} - Returns a boolean value indicating whether Picture in Picture mode is supported on the device.
2949
+ * @memberof HMSSDK
2950
+ * @example
2951
+ * // Example of checking if Picture in Picture mode is supported
2952
+ * const isPipModeSupported = await hms.isPipModeSupported();
2953
+ * if (isPipModeSupported) {
2954
+ * // Picture in Picture mode is supported
2955
+ * } else {
2956
+ * // Picture in Picture mode is not supported
2957
+ * }
2958
+ * @example
2959
+ * // Example of checking if Picture in Picture mode is supported
2960
+ * hms.isPipModeSupported().then((isPipModeSupported) => {
2961
+ * if (isPipModeSupported) {
2962
+ * // Picture in Picture mode is supported
2963
+ * } else {
2964
+ * // Picture in Picture mode is not supported
2965
+ * }
2966
+ * });
2967
+ *
2968
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
2969
+ */
2166
2970
  async isPipModeSupported() {
2167
- return _HMSManagerModule.default.handlePipActions('isPipModeSupported', {
2971
+ const data = {
2168
2972
  id: this.id
2169
- });
2973
+ };
2974
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function isPipModeSupported', data);
2975
+ return _HMSManagerModule.default.handlePipActions('isPipModeSupported', data);
2170
2976
  }
2977
+
2978
+ /**
2979
+ * Asynchronously enters Picture in Picture (PIP) mode with optional configuration.
2980
+ *
2981
+ * This method attempts to enter PIP mode based on the provided configuration.
2982
+ * It returns a promise that resolves to a boolean indicating the success of the operation.
2983
+ * If PIP mode is not supported or fails to activate, the promise may resolve to `undefined` or `false`.
2984
+ *
2985
+ * @param {HMSPIPConfig} [data] - Optional configuration for entering PIP mode. This can include settings such as `autoEnterPipMode` and `aspectRatio`.
2986
+ * @returns {Promise<boolean>} - A promise that resolves to `true` if PIP mode was successfully entered, `false` if unsuccessful or PIP mode is not supported.
2987
+ * @throws {Error} - Throws an error if the operation fails.
2988
+ * @memberof HMSSDK
2989
+ * @example
2990
+ * // Example of entering Picture in Picture mode
2991
+ * hms.enterPipMode().then((success) => {
2992
+ * if (success) {
2993
+ * // Picture in Picture mode entered successfully
2994
+ * } else {
2995
+ * // Picture in Picture mode could not be entered
2996
+ * }
2997
+ * });
2998
+ * @example
2999
+ * // Example of entering Picture in Picture mode with configuration
3000
+ * const success = await hms.enterPipMode({ autoEnterPipMode: true, aspectRatio: [16,9] });
3001
+ * if (success) {
3002
+ * // Picture in Picture mode entered successfully
3003
+ * } else {
3004
+ * // Picture in Picture mode could not be entered
3005
+ * }
3006
+ *
3007
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
3008
+ */
2171
3009
  async enterPipMode(data) {
3010
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function enterPipMode', data);
2172
3011
  return _HMSManagerModule.default.handlePipActions('enterPipMode', {
2173
3012
  ...data,
2174
3013
  id: this.id
2175
3014
  });
2176
3015
  }
3016
+
3017
+ /**
3018
+ * Asynchronously sets the parameters for Picture in Picture (PIP) mode.
3019
+ *
3020
+ * This method configures the PIP window according to the provided `HMSPIPConfig` settings. It can be used to adjust various aspects of the PIP mode, such as its size, aspect ratio, and more. The method returns a promise that resolves to a boolean indicating the success of the operation. If the PIP mode is not supported or the configuration fails, the promise may resolve to `undefined` or `false`.
3021
+ *
3022
+ * @param {HMSPIPConfig} [data] - Optional configuration for setting PIP mode parameters. This can include settings such as `aspectRatio`, `autoEnterPipMode`, etc.
3023
+ * @returns {Promise<boolean | undefined>} - A promise that resolves to `true` if the PIP parameters were successfully set, `false` if unsuccessful. `undefined` may be returned if PIP mode is not supported.
3024
+ * @throws {Error} - Throws an error if the operation fails.
3025
+ * @memberof HMSSDK
3026
+ * @example
3027
+ * // Example of setting Picture in Picture mode parameters
3028
+ * hms.setPipParams({ aspectRatio: [16, 9], autoEnterPipMode: true }).then((success) => {
3029
+ * if (success) {
3030
+ * // Picture in Picture mode parameters set successfully
3031
+ * } else {
3032
+ * // Picture in Picture mode parameters could not be set
3033
+ * }
3034
+ * });
3035
+ *
3036
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
3037
+ */
2177
3038
  async setPipParams(data) {
2178
3039
  return _HMSManagerModule.default.handlePipActions('setPictureInPictureParams', {
2179
3040
  ...data,
@@ -2182,9 +3043,134 @@ class HMSSDK {
2182
3043
  }
2183
3044
 
2184
3045
  /**
2185
- * - Returns the instance of logger which can be used to manipulate log levels.
2186
- * @returns @instance HMSLogger
3046
+ * Changes the video track used in Picture in Picture (PIP) mode on iOS devices.
3047
+ *
3048
+ * This function is specifically designed for iOS platforms to switch the video track displayed in PIP mode.
3049
+ * It takes a `HMSVideoTrack` object as an argument, which contains the track ID of the video track to be displayed in PIP mode.
3050
+ * This allows for dynamic changes to the video source in PIP mode, enhancing the flexibility of video presentation in applications that support PIP.
3051
+ *
3052
+ * @param {HMSVideoTrack} track - The video track to be used in PIP mode. Must contain a valid `trackId`.
3053
+ * @returns {Promise} - A promise that resolves when the video track has been successfully changed for PIP mode, or rejects with an error if the operation fails.
3054
+ * @throws {Error} - Throws an error if the operation fails.
3055
+ * @async
3056
+ * @function changeIOSPIPVideoTrack
3057
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
3058
+ * @memberof HMSSDK
3059
+ * @example
3060
+ * // Example of changing the video track for PIP mode on iOS
3061
+ * hms.changeIOSPIPVideoTrack(videoTrack).then(() => {
3062
+ * console.log('Video track for PIP mode changed successfully');
3063
+ * }).catch(error => {
3064
+ * console.error('Failed to change video track for PIP mode', error);
3065
+ * });
3066
+ *
3067
+ */
3068
+ async changeIOSPIPVideoTrack(track) {
3069
+ if (_reactNative.Platform.OS === 'ios') {
3070
+ const data = {
3071
+ id: this.id,
3072
+ trackId: track.trackId
3073
+ };
3074
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function changeIOSPIPVideoTrack', data);
3075
+ return await _HMSManagerModule.default.changeIOSPIPVideoTrack(data);
3076
+ } else {
3077
+ return Promise.resolve(false);
3078
+ }
3079
+ }
3080
+
3081
+ /**
3082
+ * - This function is used to automatically switch the video track of the active speaker to the Picture in Picture (PIP) mode window on iOS devices.
3083
+ * - When enabled, the video track of the active speaker will be displayed in the PIP mode window, providing a focused view of the current speaker during a meeting or conference.
3084
+ * @param {boolean} enable - A boolean value indicating whether to enable or disable the automatic switching of the active speaker video track in PIP mode.
3085
+ * @returns {Promise} - A promise that resolves when the operation is successful, or rejects with an error if the operation fails.
3086
+ * @throws {Error} - Throws an error if the operation fails.
3087
+ * @async
3088
+ * @function setActiveSpeakerInIOSPIP
3089
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode
3090
+ * @memberof HMSSDK
3091
+ * @example
3092
+ * // Example of enabling the automatic switching of the active speaker video track in PIP mode
3093
+ * hms.setActiveSpeakerInIOSPIP(true).then(() => {
3094
+ * console.log('Active speaker video track enabled in PIP mode');
3095
+ * }).catch(error => {
3096
+ * console.error('Failed to enable active speaker video track in PIP mode', error);
3097
+ * });
3098
+ */
3099
+ async setActiveSpeakerInIOSPIP(enable) {
3100
+ if (_reactNative.Platform.OS === 'ios') {
3101
+ const data = {
3102
+ id: this.id,
3103
+ enable
3104
+ };
3105
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function setActiveSpeakerInIOSPIP', data);
3106
+ return await _HMSManagerModule.default.setActiveSpeakerInIOSPIP(data);
3107
+ } else {
3108
+ return Promise.resolve(false);
3109
+ }
3110
+ }
3111
+
3112
+ /**
3113
+ * Initiates real-time transcription services.
3114
+ *
3115
+ * This asynchronous function triggers the HMSManager to start real-time transcription services,
3116
+ * capturing and transcribing audio in real time.
3117
+ *
3118
+ * @async
3119
+ * @function startRealTimeTranscription
3120
+ * @memberof HMSSDK
3121
+ * @example
3122
+ * // Example of starting real-time transcription services
3123
+ * await hmsInstance.startRealTimeTranscription();
3124
+ *
3125
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions
3126
+ */
3127
+ async startRealTimeTranscription() {
3128
+ const data = {
3129
+ id: this.id,
3130
+ action: 'start'
3131
+ };
3132
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function startRealTimeTranscription', data);
3133
+ return _HMSManagerModule.default.handleRealTimeTranscription(data);
3134
+ }
3135
+
3136
+ /**
3137
+ * Stops the real-time transcription services.
3138
+ *
3139
+ * This asynchronous function signals the HMSManager to terminate the ongoing real-time transcription services.
3140
+ *
3141
+ * @async
3142
+ * @function stopRealTimeTranscription
3143
+ * @memberof HMSSDK
3144
+ * @example
3145
+ * await hmsInstance.stopRealTimeTranscription();
3146
+ *
3147
+ * @see https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions
3148
+ */
3149
+ async stopRealTimeTranscription() {
3150
+ const data = {
3151
+ id: this.id,
3152
+ action: 'stop'
3153
+ };
3154
+ _HMSLogger.logger === null || _HMSLogger.logger === void 0 || _HMSLogger.logger.verbose('#Function stopRealTimeTranscription', data);
3155
+ return _HMSManagerModule.default.handleRealTimeTranscription(data);
3156
+ }
3157
+ get interactivityCenter() {
3158
+ if (!this._interactivityCenter) {
3159
+ this._interactivityCenter = new _HMSInteractivityCenter.HMSInteractivityCenter();
3160
+ }
3161
+ return this._interactivityCenter;
3162
+ }
3163
+
3164
+ /**
3165
+ * Retrieves the current logger instance used by the HMSSDK.
3166
+ *
3167
+ * This static method provides access to the logger instance, allowing for the manipulation of log levels and the retrieval of log information. It is useful for debugging purposes, enabling developers to monitor and adjust the verbosity of logs generated by the HMS SDK.
3168
+ *
3169
+ * @returns {HMSLogger} The current logger instance.
2187
3170
  * @memberof HMSSDK
3171
+ * @example
3172
+ * const logger = HMSSDK.getLogger();
3173
+ * logger.setLevel('debug'); // Adjusting the log level to debug
2188
3174
  */
2189
3175
  static getLogger() {
2190
3176
  return (0, _HMSLogger.getLogger)();