@tencent-rtc/mcp 1.3.8 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/package.json +2 -2
  2. package/resource/doc/{tuicallkit/iOS/faq.md → callkit/faq/android-faq.md} +10 -22
  3. package/resource/doc/{tuicallkit/android/faq.md → callkit/faq/flutter-faq.md} +10 -22
  4. package/resource/doc/{tuicallkit/flutter/faq.md → callkit/faq/ios-faq.md} +10 -22
  5. package/resource/doc/callkit/preset/android/api.md +296 -0
  6. package/resource/doc/callkit/preset/android/integration.md +430 -0
  7. package/resource/doc/callkit/preset/flutter/api.md +410 -0
  8. package/resource/doc/{tuicallkit → callkit/preset}/flutter/integration.md +35 -97
  9. package/resource/doc/callkit/preset/ios/api.md +80 -0
  10. package/resource/doc/{tuicallkit/iOS → callkit/preset/ios}/integration.md +37 -118
  11. package/resource/doc/callkit/preset/react/api.md +501 -0
  12. package/resource/doc/{tuicallkit → callkit/preset}/react/integration.md +5 -20
  13. package/resource/doc/callkit/preset/vue/api.md +501 -0
  14. package/resource/doc/{tuicallkit → callkit/preset}/vue/integration.md +4 -19
  15. package/resource/doc/{chatuikit → chatkit}/android/faq.md +29 -38
  16. package/resource/doc/{chatuikit → chatkit}/android/features/theme.md +22 -166
  17. package/resource/doc/chatkit/android/integration.md +490 -0
  18. package/resource/doc/chatkit/faq/android_sdk/client-api.md +281 -0
  19. package/resource/doc/{chatuikit → chatkit}/faq/common/product.md +0 -1
  20. package/resource/doc/{chatuikit → chatkit}/faq/common/server.md +1 -1
  21. package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +199 -0
  22. package/resource/doc/{chatuikit → chatkit}/faq/flutter_sdk/faq.md +3 -3
  23. package/resource/doc/chatkit/faq/ios_sdk/client-api.md +235 -0
  24. package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/faq.md +3 -3
  25. package/resource/doc/{chatuikit → chatkit}/flutter/features/theme.md +22 -166
  26. package/resource/doc/{chatuikit → chatkit}/flutter/integration.md +19 -88
  27. package/resource/doc/{chatuikit/iOS → chatkit/ios}/faq.md +29 -38
  28. package/resource/doc/{chatuikit/iOS → chatkit/ios}/features/theme.md +27 -176
  29. package/resource/doc/{chatuikit/iOS → chatkit/ios}/integration.md +47 -165
  30. package/resource/doc/{chatuikit → chatkit}/react/components/avatar.md +0 -33
  31. package/resource/doc/{chatuikit → chatkit}/react/components/chat-header.md +8 -49
  32. package/resource/doc/{chatuikit → chatkit}/react/components/chat-setting.md +6 -35
  33. package/resource/doc/{chatuikit → chatkit}/react/components/chat.md +0 -6
  34. package/resource/doc/{chatuikit → chatkit}/react/components/component-list.md +0 -11
  35. package/resource/doc/{chatuikit → chatkit}/react/components/contact-list.md +96 -502
  36. package/resource/doc/chatkit/react/components/conversation-actions.md +174 -0
  37. package/resource/doc/chatkit/react/components/conversation-list.md +333 -0
  38. package/resource/doc/chatkit/react/components/conversation-preview.md +118 -0
  39. package/resource/doc/chatkit/react/components/conversation-search.md +60 -0
  40. package/resource/doc/{chatuikit → chatkit}/react/components/message-input.md +36 -337
  41. package/resource/doc/{chatuikit → chatkit}/react/components/message-list.md +20 -212
  42. package/resource/doc/chatkit/react/components/search.md +243 -0
  43. package/resource/doc/{chatuikit → chatkit}/react/components/tuikit.md +1 -47
  44. package/resource/doc/{chatuikit → chatkit}/react/integration.md +21 -81
  45. package/resource/doc/{chatuikit → chatkit}/vue/components/avatar.md +0 -33
  46. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-header.md +7 -48
  47. package/resource/doc/{chatuikit → chatkit}/vue/components/chat-setting.md +3 -5
  48. package/resource/doc/{chatuikit → chatkit}/vue/components/chat.md +0 -5
  49. package/resource/doc/{chatuikit → chatkit}/vue/components/component-list.md +0 -15
  50. package/resource/doc/chatkit/vue/components/contact-list.md +271 -0
  51. package/resource/doc/chatkit/vue/components/conversation-actions.md +228 -0
  52. package/resource/doc/{chatuikit → chatkit}/vue/components/conversation-list.md +42 -492
  53. package/resource/doc/chatkit/vue/components/conversation-preview.md +213 -0
  54. package/resource/doc/chatkit/vue/components/conversation-search.md +50 -0
  55. package/resource/doc/{chatuikit → chatkit}/vue/components/message-input.md +2 -223
  56. package/resource/doc/{chatuikit → chatkit}/vue/components/message-list.md +23 -252
  57. package/resource/doc/{chatuikit → chatkit}/vue/components/search.md +73 -640
  58. package/resource/doc/{chatuikit → chatkit}/vue/components/tuikit.md +7 -21
  59. package/resource/doc/{chatuikit → chatkit}/vue/components/userpicker.md +3 -62
  60. package/resource/doc/{chatuikit → chatkit}/vue/faq.md +1 -1
  61. package/resource/doc/{chatuikit → chatkit}/vue/integration.md +22 -23
  62. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audience-list.md +18 -89
  63. package/resource/doc/livekit/{live → core-sdk/live}/android/live-audio-effect.md +34 -192
  64. package/resource/doc/livekit/{live → core-sdk/live}/android/live-barrage.md +28 -141
  65. package/resource/doc/livekit/{live → core-sdk/live}/android/live-base-beauty.md +20 -112
  66. package/resource/doc/livekit/{live → core-sdk/live}/android/live-co-guest-interaction.md +59 -193
  67. package/resource/doc/livekit/{live → core-sdk/live}/android/live-gift.md +75 -455
  68. package/resource/doc/livekit/{live → core-sdk/live}/android/live-host-interaction.md +94 -344
  69. package/resource/doc/livekit/{live → core-sdk/live}/android/live-integration.md +107 -515
  70. package/resource/doc/livekit/{live → core-sdk/live}/android/live-live-list.md +33 -173
  71. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audience-list.md +14 -93
  72. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-audio-effect.md +34 -179
  73. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-barrage.md +19 -107
  74. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-base-beauty.md +24 -166
  75. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-co-guest-interaction.md +56 -163
  76. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-gift.md +69 -443
  77. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-host-interaction.md +117 -364
  78. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-integration.md +107 -492
  79. package/resource/doc/livekit/{live → core-sdk/live}/flutter/live-live-list.md +23 -165
  80. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audience-list.md +35 -111
  81. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-audio-effect.md +35 -193
  82. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-barrage.md +31 -144
  83. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-base-beauty.md +24 -116
  84. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-co-guest-interaction.md +37 -171
  85. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-gift.md +79 -459
  86. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-host-interaction.md +69 -320
  87. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-integration.md +85 -502
  88. package/resource/doc/livekit/{live → core-sdk/live}/ios/live-live-list.md +32 -169
  89. package/resource/doc/livekit/core-sdk/voice/android/voice-audience-list.md +263 -0
  90. package/resource/doc/livekit/core-sdk/voice/android/voice-audio-effect.md +222 -0
  91. package/resource/doc/livekit/core-sdk/voice/android/voice-barrage.md +452 -0
  92. package/resource/doc/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +536 -0
  93. package/resource/doc/livekit/core-sdk/voice/android/voice-gift.md +442 -0
  94. package/resource/doc/livekit/core-sdk/voice/android/voice-host-interaction.md +489 -0
  95. package/resource/doc/livekit/core-sdk/voice/android/voice-integration.md +574 -0
  96. package/resource/doc/livekit/core-sdk/voice/android/voice-room-list.md +435 -0
  97. package/resource/doc/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +516 -0
  98. package/resource/doc/livekit/core-sdk/voice/flutter/voice-integration.md +576 -0
  99. package/resource/doc/livekit/core-sdk/voice/ios/voice-audience-list.md +263 -0
  100. package/resource/doc/livekit/core-sdk/voice/ios/voice-audio-effect.md +212 -0
  101. package/resource/doc/livekit/core-sdk/voice/ios/voice-barrage.md +404 -0
  102. package/resource/doc/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +499 -0
  103. package/resource/doc/livekit/core-sdk/voice/ios/voice-gift.md +403 -0
  104. package/resource/doc/livekit/core-sdk/voice/ios/voice-host-interaction.md +552 -0
  105. package/resource/doc/livekit/core-sdk/voice/ios/voice-integration.md +514 -0
  106. package/resource/doc/livekit/core-sdk/voice/ios/voice-room-list.md +348 -0
  107. package/resource/doc/livekit/faq/common/{error_code.md → error-code.md} +2 -2
  108. package/resource/doc/livekit/preset/live/vue/api-reference/index.md +780 -0
  109. package/resource/doc/livekit/preset/live/vue/components/barrage.md +291 -0
  110. package/resource/doc/livekit/{live → preset/live}/vue/components/co-guest-panel.md +10 -49
  111. package/resource/doc/livekit/{live → preset/live}/vue/components/live-audience-list.md +26 -144
  112. package/resource/doc/livekit/{live → preset/live}/vue/components/live-scene-panel.md +12 -75
  113. package/resource/doc/livekit/{live → preset/live}/vue/components/live-view.md +36 -227
  114. package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +215 -0
  115. package/resource/doc/livekit/preset/live/vue/faq.md +1 -0
  116. package/resource/doc/livekit/preset/live/vue/live-list-integration.md +241 -0
  117. package/resource/doc/livekit/preset/live/vue/live-player-desk-integration.md +299 -0
  118. package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +300 -0
  119. package/resource/doc/livekit/preset/live/vue/live-pusher-integration.md +743 -0
  120. package/resource/doc/roomkit/vue/faq.md +1 -0
  121. package/resource/doc/roomkit/vue/features/call-user-to-room.md +17 -53
  122. package/resource/doc/roomkit/vue/features/device-detection.md +30 -48
  123. package/resource/doc/roomkit/vue/features/device-state.md +24 -44
  124. package/resource/doc/roomkit/vue/features/free-beauty-panel.md +13 -36
  125. package/resource/doc/roomkit/vue/features/room-chat.md +31 -89
  126. package/resource/doc/roomkit/vue/features/room-participant-state.md +28 -50
  127. package/resource/doc/roomkit/vue/features/room-state.md +25 -34
  128. package/resource/doc/roomkit/vue/features/room-view.md +30 -125
  129. package/resource/doc/roomkit/vue/features/schedule-room.md +9 -40
  130. package/resource/doc/roomkit/vue/features/screen-share.md +22 -90
  131. package/resource/doc/roomkit/vue/features/virtual-background.md +13 -29
  132. package/resource/doc/roomkit/vue/integration.md +173 -337
  133. package/resource/doc/rtcengine/faq/common/error_code.md +1 -0
  134. package/resource/doc/rtcengine/faq/web/web.md +14 -24
  135. package/resource/doc/rtcengine/web/api.md +1 -3
  136. package/resource/doc/rtcengine/web/how_to_integrated_web_sdk.md +3 -10
  137. package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +1 -5
  138. package/resource/doc/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +1 -2
  139. package/resource/doc/rtcengine/web/plugin/21-advanced-auto-play-policy.md +2 -4
  140. package/resource/doc/rtcengine/web/plugin/23-advanced-support-detection.md +3 -5
  141. package/resource/doc/rtcengine/web/plugin/24-advanced-network-quality.md +1 -7
  142. package/resource/doc/rtcengine/web/plugin/25-advanced-device-change.md +0 -2
  143. package/resource/doc/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +4 -8
  144. package/resource/doc/rtcengine/web/plugin/27-advanced-small-stream.md +11 -11
  145. package/resource/doc/rtcengine/web/plugin/28-advanced-beauty.md +12 -88
  146. package/resource/doc/rtcengine/web/plugin/31-advanced-plugins-overview.md +5 -5
  147. package/resource/doc/rtcengine/web/plugin/34-advanced-proxy.md +30 -37
  148. package/resource/doc/rtcengine/web/plugin/36-advanced-virtual-background.md +13 -90
  149. package/resource/doc/rtcengine/web/plugin/37-advanced-voice-changer.md +1 -2
  150. package/resource/doc/rtcengine/web/plugin/39-advanced-video-decoder.md +1 -2
  151. package/resource/doc/rtcengine/web/plugin/40-advanced-video-mixer.md +19 -19
  152. package/resource/doc/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +1 -1
  153. package/resource/doc/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +4 -5
  154. package/resource/doc/rtcengine/web/plugin/43-advanced-face-detection.md +3 -3
  155. package/resource/doc/trtc/C++/ITRTCCloud.md +686 -2835
  156. package/resource/doc/trtc/C++/ITRTCStatistics.md +53 -308
  157. package/resource/doc/trtc/C++/ITXAudioEffectManager.md +202 -1022
  158. package/resource/doc/trtc/C++/ITXDeviceManager.md +126 -767
  159. package/resource/doc/trtc/C++/TRTCCloudCallback.md +579 -2147
  160. package/resource/doc/trtc/C++/TRTCTypeDef.md +703 -3378
  161. package/resource/doc/trtc/C++/TXLiteAVCode.md +116 -908
  162. package/resource/doc/trtc/android/TRTCCloud.md +606 -2573
  163. package/resource/doc/trtc/android/TRTCCloudDef.md +752 -3640
  164. package/resource/doc/trtc/android/TRTCCloudListener.md +581 -2008
  165. package/resource/doc/trtc/android/TRTCStatistics.md +48 -278
  166. package/resource/doc/trtc/android/TXAudioEffectManager.md +202 -1022
  167. package/resource/doc/trtc/android/TXBeautyManager.md +127 -704
  168. package/resource/doc/trtc/android/TXDeviceManager.md +51 -318
  169. package/resource/doc/trtc/android/TXLiteAVCode.md +114 -892
  170. package/resource/doc/trtc/iOS/TRTCCloud.md +694 -2904
  171. package/resource/doc/trtc/iOS/TRTCCloudDef.md +726 -3498
  172. package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +543 -2028
  173. package/resource/doc/trtc/iOS/TRTCStatistics.md +48 -278
  174. package/resource/doc/trtc/iOS/TXAudioEffectManager.md +174 -877
  175. package/resource/doc/trtc/iOS/TXBeautyManager.md +128 -710
  176. package/resource/doc/trtc/iOS/TXDeviceManager.md +129 -772
  177. package/resource/doc/trtc/iOS/TXLiteAVCode.md +117 -915
  178. package/server.js +1 -5
  179. package/server.js.map +1 -1
  180. package/tools/call/get_callkit_api.js +32 -0
  181. package/tools/call/get_callkit_api.js.map +1 -0
  182. package/tools/call/get_native_call_uikit_integration.js +34 -0
  183. package/tools/call/get_native_call_uikit_integration.js.map +1 -0
  184. package/tools/call/{get-web-call-integration.js → get_web_call_uikit_integration.js} +13 -8
  185. package/tools/call/get_web_call_uikit_integration.js.map +1 -0
  186. package/tools/chat/get_native_chat_uikit_feature_detail.js +34 -0
  187. package/tools/chat/get_native_chat_uikit_feature_detail.js.map +1 -0
  188. package/tools/chat/get_native_chat_uikit_integration.js +45 -0
  189. package/tools/chat/get_native_chat_uikit_integration.js.map +1 -0
  190. package/tools/chat/get_web_chat_uikit_component_detail.js +34 -0
  191. package/tools/chat/get_web_chat_uikit_component_detail.js.map +1 -0
  192. package/tools/chat/get_web_chat_uikit_integration.js +45 -0
  193. package/tools/chat/get_web_chat_uikit_integration.js.map +1 -0
  194. package/tools/common/get_faq.js +265 -0
  195. package/tools/common/get_faq.js.map +1 -0
  196. package/tools/common/{get-usersig.js → get_usersig.js} +6 -3
  197. package/tools/common/get_usersig.js.map +1 -0
  198. package/tools/common/present_framework_choice.js +63 -0
  199. package/tools/common/present_framework_choice.js.map +1 -0
  200. package/tools/definitions/get_callkit_api_def.js +29 -0
  201. package/tools/definitions/get_callkit_api_def.js.map +1 -0
  202. package/tools/definitions/get_faq_def.js +17 -18
  203. package/tools/definitions/get_faq_def.js.map +1 -1
  204. package/tools/definitions/get_native_call_uikit_integration_def.js +15 -18
  205. package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
  206. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +31 -0
  207. package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +1 -0
  208. package/tools/definitions/get_native_chat_uikit_integration_def.js +16 -19
  209. package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
  210. package/tools/definitions/get_native_livekit_core_features_def.js +34 -0
  211. package/tools/definitions/get_native_livekit_core_features_def.js.map +1 -0
  212. package/tools/definitions/get_native_livekit_core_integration_def.js +34 -0
  213. package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -0
  214. package/tools/definitions/get_native_trtc_sdk_docs_def.js +32 -0
  215. package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +1 -0
  216. package/tools/definitions/get_usersig_def.js +17 -22
  217. package/tools/definitions/get_usersig_def.js.map +1 -1
  218. package/tools/definitions/get_web_call_uikit_integration_def.js +15 -7
  219. package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
  220. package/tools/definitions/get_web_chat_uikit_component_detail_def.js +17 -49
  221. package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +1 -1
  222. package/tools/definitions/get_web_chat_uikit_integration_def.js +16 -19
  223. package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
  224. package/tools/definitions/get_web_live_uikit_integration_def.js +15 -18
  225. package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
  226. package/tools/definitions/get_web_livekit_api_def.js +30 -0
  227. package/tools/definitions/get_web_livekit_api_def.js.map +1 -0
  228. package/tools/definitions/get_web_livekit_component_detail_def.js +32 -0
  229. package/tools/definitions/get_web_livekit_component_detail_def.js.map +1 -0
  230. package/tools/definitions/get_web_room_uikit_integration_def.js +15 -30
  231. package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
  232. package/tools/definitions/get_web_roomkit_feature_detail_def.js +31 -0
  233. package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +1 -0
  234. package/tools/definitions/get_web_trtc_sdk_api_def.js +27 -0
  235. package/tools/definitions/get_web_trtc_sdk_api_def.js.map +1 -0
  236. package/tools/definitions/get_web_trtc_sdk_integration_def.js +27 -0
  237. package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +1 -0
  238. package/tools/definitions/get_web_trtc_sdk_plugin_def.js +27 -0
  239. package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +1 -0
  240. package/tools/definitions/present_framework_choice_def.js +24 -12
  241. package/tools/definitions/present_framework_choice_def.js.map +1 -1
  242. package/tools/index.js +47 -59
  243. package/tools/index.js.map +1 -1
  244. package/tools/live/get_native_livekit_core_features.js +65 -0
  245. package/tools/live/get_native_livekit_core_features.js.map +1 -0
  246. package/tools/live/get_native_livekit_core_integration.js +59 -0
  247. package/tools/live/get_native_livekit_core_integration.js.map +1 -0
  248. package/tools/live/get_web_live_uikit_integration.js +48 -0
  249. package/tools/live/get_web_live_uikit_integration.js.map +1 -0
  250. package/tools/live/get_web_livekit_api.js +32 -0
  251. package/tools/live/get_web_livekit_api.js.map +1 -0
  252. package/tools/live/get_web_livekit_component_detail.js +34 -0
  253. package/tools/live/get_web_livekit_component_detail.js.map +1 -0
  254. package/tools/room/{get-web-room-integration.js → get_web_room_uikit_integration.js} +13 -14
  255. package/tools/room/get_web_room_uikit_integration.js.map +1 -0
  256. package/tools/room/{get-web-room-feature-detail.js → get_web_roomkit_feature_detail.js} +30 -31
  257. package/tools/room/get_web_roomkit_feature_detail.js.map +1 -0
  258. package/tools/rtcengine/get_web_trtc_sdk_api.js +31 -0
  259. package/tools/rtcengine/get_web_trtc_sdk_api.js.map +1 -0
  260. package/tools/rtcengine/get_web_trtc_sdk_integration.js +31 -0
  261. package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +1 -0
  262. package/tools/rtcengine/get_web_trtc_sdk_plugin.js +31 -0
  263. package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +1 -0
  264. package/tools/trtc/get_native_trtc_sdk_docs.js +73 -0
  265. package/tools/trtc/get_native_trtc_sdk_docs.js.map +1 -0
  266. package/utils/generate-structured-result.js +61 -17
  267. package/utils/generate-structured-result.js.map +1 -1
  268. package/utils/report-cls-client.js +12 -1
  269. package/utils/report-cls-client.js.map +1 -1
  270. package/utils/report-es-client.js +2 -2
  271. package/resource/doc/chatuikit/android/integration.md +0 -287
  272. package/resource/doc/chatuikit/faq/android_sdk/client-api.md +0 -1371
  273. package/resource/doc/chatuikit/faq/flutter_sdk/client-api.md +0 -932
  274. package/resource/doc/chatuikit/faq/ios_sdk/client-api.md +0 -1119
  275. package/resource/doc/chatuikit/flutter/workflow.md +0 -941
  276. package/resource/doc/chatuikit/iOS/workflow.md +0 -0
  277. package/resource/doc/chatuikit/react/components/conversation-list.md +0 -1017
  278. package/resource/doc/chatuikit/react/components/search.md +0 -745
  279. package/resource/doc/chatuikit/react/create-group.md +0 -23
  280. package/resource/doc/chatuikit/react/init.md +0 -26
  281. package/resource/doc/chatuikit/react/workflow.md +0 -258
  282. package/resource/doc/chatuikit/vue/components/contact-list.md +0 -679
  283. package/resource/doc/chatuikit/vue/create-group.md +0 -25
  284. package/resource/doc/chatuikit/vue/init.md +0 -40
  285. package/resource/doc/chatuikit/vue/workflow.md +0 -395
  286. package/resource/doc/livekit/live/android/workflow.md +0 -320
  287. package/resource/doc/livekit/live/flutter/workflow.md +0 -353
  288. package/resource/doc/livekit/live/ios/workflow.md +0 -454
  289. package/resource/doc/livekit/live/vue/components/barrage.md +0 -616
  290. package/resource/doc/livekit/live/vue/components/stream-mixer.md +0 -446
  291. package/resource/doc/livekit/live/vue/faq.md +0 -0
  292. package/resource/doc/livekit/live/vue/live-list-integration.md +0 -200
  293. package/resource/doc/livekit/live/vue/live-player-desk-integration.md +0 -269
  294. package/resource/doc/livekit/live/vue/live-player-h5-integration.md +0 -269
  295. package/resource/doc/livekit/live/vue/live-pusher-integration.md +0 -595
  296. package/resource/doc/livekit/live/vue/states/live-state.md +0 -3591
  297. package/resource/doc/livekit/live/vue/workflow.md +0 -218
  298. package/resource/doc/native_live/android/V2TXLiveCode_api_android.md +0 -312
  299. package/resource/doc/native_live/android/V2TXLiveDef_api_android.md +0 -430
  300. package/resource/doc/native_live/android/V2TXLivePlayerObserver_api_android.md +0 -679
  301. package/resource/doc/native_live/android/V2TXLivePlayer_api_android.md +0 -671
  302. package/resource/doc/native_live/android/V2TXLivePremier_api_android.md +0 -271
  303. package/resource/doc/native_live/android/V2TXLivePusherObserver_api_android.md +0 -849
  304. package/resource/doc/native_live/android/V2TXLivePusher_api_android.md +0 -1046
  305. package/resource/doc/native_live/flutter/V2TXLiveCode_api_flutter.md +0 -460
  306. package/resource/doc/native_live/flutter/V2TXLiveDef_api_flutter.md +0 -558
  307. package/resource/doc/native_live/flutter/V2TXLivePlayerObserver_api_flutter.md +0 -865
  308. package/resource/doc/native_live/flutter/V2TXLivePlayer_api_flutter.md +0 -657
  309. package/resource/doc/native_live/flutter/V2TXLivePremier_api_flutter.md +0 -437
  310. package/resource/doc/native_live/flutter/V2TXLivePusherObserver_api_flutter.md +0 -335
  311. package/resource/doc/native_live/flutter/V2TXLivePusher_api_flutter.md +0 -748
  312. package/resource/doc/native_live/iOS/V2TXLiveCode_api_iOS.md +0 -327
  313. package/resource/doc/native_live/iOS/V2TXLiveDef_api_iOS.md +0 -507
  314. package/resource/doc/native_live/iOS/V2TXLivePlayerObserver_api_iOS.md +0 -507
  315. package/resource/doc/native_live/iOS/V2TXLivePlayer_api_iOS.md +0 -659
  316. package/resource/doc/native_live/iOS/V2TXLivePremier_api_iOS.md +0 -284
  317. package/resource/doc/native_live/iOS/V2TXLivePusherObserver_api_iOS.md +0 -814
  318. package/resource/doc/native_live/iOS/V2TXLivePusher_api_iOS.md +0 -1000
  319. package/resource/doc/roomkit/vue/features/workflow.md +0 -553
  320. package/resource/doc/roomkit/vue/workflow.md +0 -487
  321. package/resource/doc/tuicallkit/android/integration.md +0 -286
  322. package/resource/doc/tuicallkit/android/workflow.md +0 -0
  323. package/resource/doc/tuicallkit/faq/android_sdk/call-observer-api.md +0 -784
  324. package/resource/doc/tuicallkit/faq/android_sdk/callkit-api.md +0 -610
  325. package/resource/doc/tuicallkit/faq/flutter_sdk/call-define-api.md +0 -938
  326. package/resource/doc/tuicallkit/faq/flutter_sdk/call-observer-api.md +0 -897
  327. package/resource/doc/tuicallkit/faq/flutter_sdk/callkit-api.md +0 -469
  328. package/resource/doc/tuicallkit/faq/ios_sdk/call-observer-api.md +0 -781
  329. package/resource/doc/tuicallkit/faq/ios_sdk/callkit-api.md +0 -398
  330. package/resource/doc/tuicallkit/flutter/workflow.md +0 -331
  331. package/resource/doc/tuicallkit/react/api.md +0 -1404
  332. package/resource/doc/tuicallkit/vue/api.md +0 -1406
  333. package/resource/doc/tuicallkit/vue/faq.md +0 -36
  334. package/tools/call/get-native-call-integration.js +0 -43
  335. package/tools/call/get-native-call-integration.js.map +0 -1
  336. package/tools/call/get-web-call-api.js +0 -27
  337. package/tools/call/get-web-call-api.js.map +0 -1
  338. package/tools/call/get-web-call-integration.js.map +0 -1
  339. package/tools/chat/get-native-chat-feature-detail.js +0 -30
  340. package/tools/chat/get-native-chat-feature-detail.js.map +0 -1
  341. package/tools/chat/get-native-chat-integration.js +0 -45
  342. package/tools/chat/get-native-chat-integration.js.map +0 -1
  343. package/tools/chat/get-web-chat-component-detail.js +0 -31
  344. package/tools/chat/get-web-chat-component-detail.js.map +0 -1
  345. package/tools/chat/get-web-chat-integration.js +0 -45
  346. package/tools/chat/get-web-chat-integration.js.map +0 -1
  347. package/tools/chat/get-web-chat-uikit-init.js +0 -28
  348. package/tools/chat/get-web-chat-uikit-init.js.map +0 -1
  349. package/tools/chat/get-web-create-group-doc.js +0 -28
  350. package/tools/chat/get-web-create-group-doc.js.map +0 -1
  351. package/tools/common/get-faq.js +0 -91
  352. package/tools/common/get-faq.js.map +0 -1
  353. package/tools/common/get-usersig.js.map +0 -1
  354. package/tools/common/present-framework-choice.js +0 -16
  355. package/tools/common/present-framework-choice.js.map +0 -1
  356. package/tools/common/record-prompt.js +0 -55
  357. package/tools/common/record-prompt.js.map +0 -1
  358. package/tools/common/record-result.js +0 -60
  359. package/tools/common/record-result.js.map +0 -1
  360. package/tools/definitions/get_native_chat_feature_detail_def.js +0 -32
  361. package/tools/definitions/get_native_chat_feature_detail_def.js.map +0 -1
  362. package/tools/definitions/get_native_live_api_def.js +0 -23
  363. package/tools/definitions/get_native_live_api_def.js.map +0 -1
  364. package/tools/definitions/get_native_live_uikit_extra_features_def.js +0 -87
  365. package/tools/definitions/get_native_live_uikit_extra_features_def.js.map +0 -1
  366. package/tools/definitions/get_native_live_uikit_integration_def.js +0 -49
  367. package/tools/definitions/get_native_live_uikit_integration_def.js.map +0 -1
  368. package/tools/definitions/get_native_live_uikit_interaction_def.js +0 -74
  369. package/tools/definitions/get_native_live_uikit_interaction_def.js.map +0 -1
  370. package/tools/definitions/get_trtc_native_api_def.js +0 -16
  371. package/tools/definitions/get_trtc_native_api_def.js.map +0 -1
  372. package/tools/definitions/get_web_call_uikit_api_def.js +0 -23
  373. package/tools/definitions/get_web_call_uikit_api_def.js.map +0 -1
  374. package/tools/definitions/get_web_chat_uikit_init_def.js +0 -23
  375. package/tools/definitions/get_web_chat_uikit_init_def.js.map +0 -1
  376. package/tools/definitions/get_web_create_group_doc_def.js +0 -18
  377. package/tools/definitions/get_web_create_group_doc_def.js.map +0 -1
  378. package/tools/definitions/get_web_live_state_detail_def.js +0 -19
  379. package/tools/definitions/get_web_live_state_detail_def.js.map +0 -1
  380. package/tools/definitions/get_web_live_uikit_component_detail_def.js +0 -27
  381. package/tools/definitions/get_web_live_uikit_component_detail_def.js.map +0 -1
  382. package/tools/definitions/get_web_room_feature_detail_def.js +0 -95
  383. package/tools/definitions/get_web_room_feature_detail_def.js.map +0 -1
  384. package/tools/definitions/get_web_room_state_detail_def.js +0 -19
  385. package/tools/definitions/get_web_room_state_detail_def.js.map +0 -1
  386. package/tools/definitions/record_prompt_def.js +0 -53
  387. package/tools/definitions/record_prompt_def.js.map +0 -1
  388. package/tools/definitions/record_result_def.js +0 -30
  389. package/tools/definitions/record_result_def.js.map +0 -1
  390. package/tools/live/get-native-live-uikit-integration.js +0 -101
  391. package/tools/live/get-native-live-uikit-integration.js.map +0 -1
  392. package/tools/live/get-web-live-component-detail.js +0 -31
  393. package/tools/live/get-web-live-component-detail.js.map +0 -1
  394. package/tools/live/get-web-live-state-detail.js +0 -31
  395. package/tools/live/get-web-live-state-detail.js.map +0 -1
  396. package/tools/live/get-web-live-uikit-integration.js +0 -52
  397. package/tools/live/get-web-live-uikit-integration.js.map +0 -1
  398. package/tools/live/get_native_live_uikit_extra_features.js +0 -105
  399. package/tools/live/get_native_live_uikit_extra_features.js.map +0 -1
  400. package/tools/live/get_native_live_uikit_interaction.js +0 -101
  401. package/tools/live/get_native_live_uikit_interaction.js.map +0 -1
  402. package/tools/native_live/get-native-live-api.js +0 -31
  403. package/tools/native_live/get-native-live-api.js.map +0 -1
  404. package/tools/room/get-web-room-feature-detail.js.map +0 -1
  405. package/tools/room/get-web-room-integration.js.map +0 -1
  406. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js +0 -28
  407. package/tools/rtcengine/get-rtcengine-web-sdk-integration.js.map +0 -1
  408. package/tools/rtcengine/get-trtc-sdk-faq.js +0 -32
  409. package/tools/rtcengine/get-trtc-sdk-faq.js.map +0 -1
  410. package/tools/rtcengine/get-trtc-web-sdk-api.js +0 -28
  411. package/tools/rtcengine/get-trtc-web-sdk-api.js.map +0 -1
  412. package/tools/rtcengine/get-trtc-web-sdk-faq.js +0 -30
  413. package/tools/rtcengine/get-trtc-web-sdk-faq.js.map +0 -1
  414. package/tools/rtcengine/get-trtc-web-sdk-integration.js +0 -29
  415. package/tools/rtcengine/get-trtc-web-sdk-integration.js.map +0 -1
  416. package/tools/rtcengine/get-trtc-web-sdk-plugin.js +0 -45
  417. package/tools/rtcengine/get-trtc-web-sdk-plugin.js.map +0 -1
  418. package/tools/trtc/get-trtc-native-api.js +0 -31
  419. package/tools/trtc/get-trtc-native-api.js.map +0 -1
  420. package/utils/handle-component-name.js +0 -33
  421. package/utils/handle-component-name.js.map +0 -1
  422. /package/resource/doc/{chatuikit/android/workflow.md → callkit/core-sdk/.gitkeep} +0 -0
  423. /package/resource/doc/{tuicallkit/faq/common/error_code.md → callkit/faq/common/error-code.md} +0 -0
  424. /package/resource/doc/{tuicallkit/react/faq.md → callkit/faq/web-faq.md} +0 -0
  425. /package/resource/doc/{chatuikit → chatkit}/faq/common/server_error_code.md +0 -0
  426. /package/resource/doc/{chatuikit → chatkit}/faq/web_sdk/error_code.md +0 -0
  427. /package/resource/doc/{chatuikit → chatkit}/flutter/faq.md +0 -0
  428. /package/resource/doc/{chatuikit → chatkit}/react/faq.md +0 -0
  429. /package/resource/doc/roomkit/faq/common/{error_code.md → error-code.md} +0 -0
@@ -0,0 +1,489 @@
1
+ `AtomicXCore` provides two core modules: `CoHostStore` for **cross-room connections** and `BattleStore` for **PK battles**. This guide explains how to integrate these modules to enable connection and PK features in a voice chat room application.
2
+
3
+ ## Core Concepts
4
+ | **Core Concept** | **Type** | **Core Responsibilities & Description** |
5
+ | --- | --- | --- |
6
+ | **CoHostStore** | `abstract class` | Manages the lifecycle of host-to-host connections. Provides connection APIs such as `requestHostConnection` and `acceptHostConnection`. |
7
+ | **BattleStore** | `abstract class` | Handles PK battle signaling and state management across rooms, including PK status tracking. |
8
+ | **LiveListStore** | `abstract class` | Fetches the list of active live rooms (`fetchLiveList`). Use this to discover rooms available for connection. |
9
+ | **LiveSeatStore** | `abstract class` | Manages seat states within a room, including cross-room seats during connection. Tracks user join/leave events and microphone status. |
10
+ | **CoHostLayoutTemplate** | `enum` | Defines seat layout templates for cross-room connections, e.g., `HOST_STATIC_VOICE_6V6`. |
11
+ | **BattleConfig** | `data` | Configures PK battle details such as duration (`duration`) and whether a secondary response is required (`needResponse`). |
12
+
13
+ ## Prerequisites
14
+
15
+ Integrate the Quick Start and ensure you have implemented both **Host Start Live** and **Audience Watch** features.
16
+
17
+ ## Host Initiates a Connection
18
+
19
+ ### Step 1: Fetch Active Streamers
20
+
21
+ To initiate a connection or PK, the host must retrieve the current list of live rooms and select a target host.
22
+
23
+ **Implementation:** Call `LiveListStore.shared().fetchLiveList`.
24
+
25
+ > **Note:**
26
+ >
27
+ > - If the target room is missing from the returned list, verify that isPublicVisible in TUILiveInfo is set to true when starting the stream.
28
+ > - This API supports pagination. Use the cursor from the onSuccess callback for subsequent fetches. An empty cursor indicates all rooms have been fetched.
29
+ > - For optimal performance, set pageCount to 20.
30
+
31
+ ``` java
32
+ import io.trtc.tuikit.atomicxcore.api.live.LiveListStore
33
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
34
+
35
+ fun fetchLiveListForCoHost() {
36
+ val cursor = "" // Initial fetch
37
+ val pageCount = 20
38
+
39
+ LiveListStore.shared().fetchLiveList(cursor, pageCount, object : CompletionHandler {
40
+ override fun onSuccess() {
41
+ println("Live room list fetched successfully")
42
+ // Update your invitation panel with LiveListStore.liveState.liveList
43
+ // inviteAdapter.submitList(LiveListStore.liveState.liveList)
44
+ }
45
+ override fun onFailure(code: Int, desc: String) {
46
+ println("Failed to fetch live room list: $code")
47
+ }
48
+ })
49
+ }
50
+ ```
51
+
52
+ ### Step 2: Send a Co-hosting Invitation
53
+
54
+ When a host selects another host, use `CoHostStore.requestHostConnection` to send a connection invitation.
55
+
56
+ > **Note:**
57
+ >
58
+ > 1. AtomicXCore supports up to **9** interconnected rooms, each with up to **50** users.
59
+ > 2. This interface supports batch invitations, which you can use continuously; to check if an invitation to a single live room was successful, you need to listen for the `onSuccess` callback.
60
+ > 3. The API supports extension fields. These are delivered to the target host via `onCoHostRequestReceived` in `CoHostListener`. Use this to pass business logic such as "start PK immediately".
61
+
62
+ ``` java
63
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
64
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
65
+
66
+ val targetHostLiveID = "target_host_room_id"
67
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
68
+ val timeout = 10 // seconds
69
+ val extraInfo = "" // e.g., direct PK flag
70
+
71
+ coHostStore.requestHostConnection(
72
+ targetHostLiveID,
73
+ layoutTemplate,
74
+ timeout,
75
+ extraInfo,
76
+ object : CompletionHandler {
77
+ override fun onSuccess() {
78
+ println("Connection request sent. Awaiting response...")
79
+ }
80
+ override fun onFailure(code: Int, desc: String) {
81
+ println("Failed to send invitation: $desc")
82
+ }
83
+ }
84
+ )
85
+ ```
86
+
87
+ ### Step 3: Target Streamer Receives Invitation
88
+
89
+ The target host receives the invitation via `onCoHostRequestReceived` in `CoHostListener`. Display a UI prompt such as "Host invites you to join the connection".
90
+ ``` java
91
+ private val coHostListener = object : CoHostListener() {
92
+ override fun onCoHostRequestReceived(
93
+ inviter: SeatUserInfo, extensionInfo: String
94
+ ){
95
+ // Show invitation dialog
96
+ }
97
+ }
98
+ ```
99
+
100
+ ### Step 4: Target Host Accepts or Rejects Invitation
101
+
102
+ In the invitation UI, the target host can accept or reject. Call `acceptHostConnection` or `rejectHostConnection` as appropriate.
103
+ ``` java
104
+ private val coHostStore = CoHostStore.create(liveID)
105
+
106
+ private val coHostListener = object : CoHostListener() {
107
+ override fun onCoHostRequestReceived(
108
+ inviter: SeatUserInfo, extensionInfo: String
109
+ ){
110
+ // Accept connection
111
+ coHostStore.acceptHostConnection(fromHostLiveID, null)
112
+ // Or reject
113
+ // coHostStore.rejectHostConnection(fromHostLiveID, null)
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### Step 5: Render Co-hosting UI Layout
119
+
120
+ After connection is established, listen to `coHostStatus` in `CoHostStore.coHostState` and `seatList` in `LiveSeatStore.liveSeatState` to update the seat layout dynamically.
121
+ ``` java
122
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostStatus
123
+ import io.trtc.tuikit.atomicxcore.api.live.LiveSeatStore
124
+ import io.trtc.tuikit.atomicxcore.api.live.SeatInfo
125
+ import kotlinx.coroutines.flow.collect
126
+
127
+ private val liveSeatStore = LiveSeatStore.create(liveID)
128
+
129
+ coHostStore.coHostState.coHostStatus.collect { status ->
130
+ if (status == CoHostStatus.CONNECTED) {
131
+ // Render connection layout (e.g., 6v6)
132
+ }
133
+ }
134
+
135
+ liveSeatStore.liveSeatState.seatList.collect { seatList: List<SeatInfo> ->
136
+ // Update avatars, mute status, etc.
137
+ // Use seatInfo.userInfo.liveID to distinguish local/remote users.
138
+ // Use seatInfo.userInfo.microphoneStatus for mute icon.
139
+ }
140
+ ```
141
+
142
+ ### Step 6: Invite Additional Streamers During Co-hosting
143
+
144
+ You can invite more hosts even after a connection is established by calling `requestHostConnection` again.
145
+ ``` java
146
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
147
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
148
+
149
+ val targetHostLiveID = "target_host_room_id"
150
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
151
+ val timeout = 10
152
+ val extraInfo = ""
153
+
154
+ coHostStore.requestHostConnection(
155
+ targetHostLiveID,
156
+ layoutTemplate,
157
+ timeout,
158
+ extraInfo,
159
+ object : CompletionHandler {
160
+ override fun onSuccess() {
161
+ println("Connection request sent. Awaiting response...")
162
+ }
163
+ override fun onFailure(code: Int, desc: String) {
164
+ println("Failed to send invitation: $desc")
165
+ }
166
+ }
167
+ )
168
+ ```
169
+
170
+ ### Step 7: Exit Co-hosting
171
+
172
+ To disconnect, call `CoHostStore.exitHostConnection`. Remaining hosts should update their seat layout accordingly.
173
+ ``` java
174
+ public void onExitButtonClicked() {
175
+ val coHostStore = CoHostStore.create(liveInfo.liveID)
176
+ coHostStore.exitHostConnection(object : CompletionHandler{
177
+ override fun onSuccess(){
178
+ // Handle successful exit
179
+ }
180
+ override fun onFailure(code: Int, desc: String){
181
+ // Handle error
182
+ }
183
+ })
184
+ }
185
+ ```
186
+
187
+ ## PK Streamer Initiates a PK
188
+
189
+ BattleStreamers can start PK battles using two main flows, depending on the room state before PK begins:
190
+ | **PK Mode** | **Room State (Before PK)** | **Room State (After PK)** |
191
+ | --- | --- | --- |
192
+ | Scenario 1: PK after connection | Both sides connected | Returns to connection state |
193
+ | Scenario 2: Connection with PK mode | Both sides not connected | Returns to connection state |
194
+
195
+ ### Scenario 1: PK After Connection
196
+
197
+ AtomicXCore enables hosts to start a timed PK battle once connected. Typical UI flow:
198
+ 1. Send connection invitation; invited host accepts.
199
+
200
+ 2. Hosts click PK to start a timed battle. Winner is determined by gifts received.
201
+
202
+ 3. Target host receives a PK prompt and can accept.
203
+
204
+ 4. UI enters PK mode and displays a progress bar (based on gifts, likes, etc.).
205
+
206
+ 5. When PK ends, winner/loser is displayed and a punishment period begins.
207
+
208
+ 6. After PK, state returns to connection mode.
209
+
210
+ #### Step 1: Initiate PK Invitation
211
+
212
+ To start a PK battle among connected hosts, use `BattleStore.requestBattle`. Configure PK duration, whether a response is required, and any extension info.
213
+
214
+ > **Note:**
215
+ >
216
+ > 1. Default PK duration is 5 minutes if not set in `BattleConfig`.
217
+ > 2. To start PK immediately, set `needResponse` to `false`.
218
+ > 3. If `needResponse` is `false`, set `timeout` to 0.
219
+ > 4. If the target host does not respond within the timeout, both hosts receive `onBattleRequestTimeout`. PK can be retried.
220
+
221
+ ``` java
222
+ val targetUserID = "target_host_user_id"
223
+
224
+ val config = BattleConfig(
225
+ duration = 30, // seconds
226
+ needResponse = true,
227
+ extensionInfo = ""
228
+ )
229
+
230
+ battleStore.requestBattle(
231
+ config,
232
+ listOf(targetUserID),
233
+ timeout = 10, // seconds
234
+ completion = null
235
+ )
236
+ ```
237
+
238
+ #### Step 2: Target Streamer Receives PK Invitation
239
+
240
+ The target host receives the PK request via `onBattleRequestReceived` in `BattleListener`. Use `needResponse` in `battleInfo.config` to determine whether to prompt the user.
241
+ - If `needResponse` is false, enter PK state directly.
242
+
243
+ - If true, show a dialog and enter PK on acceptance.
244
+
245
+ ``` java
246
+ private val mBattleListener: BattleListener = object : BattleListener() {
247
+ override fun onBattleRequestReceived(
248
+ battleId: String,
249
+ inviter: SeatUserInfo,
250
+ invitee: SeatUserInfo,
251
+ ) {
252
+ super.onBattleRequestReceived(battleInfo, inviter, invitee)
253
+ val userId = inviter.userId
254
+ val userName = inviter.userName
255
+ val needResponse = battleInfo.config.needResponse
256
+ // Show PK prompt if needed
257
+ }
258
+ }
259
+ ```
260
+
261
+ #### Step 3: Enter PK State
262
+
263
+ When `onBattleStarted` is triggered in `BattleListener`, render the PK progress bar in your UI.
264
+ - If `needResponse` is `false`, PK starts automatically.
265
+
266
+ - If `needResponse` is `true`, PK starts after all invited hosts call `acceptBattle`.
267
+
268
+ - Hosts joining PK receive `onUserJoinBattle`.
269
+
270
+ - All PK participants receive `onBattleStarted`.
271
+
272
+ #### Step 4: End PK State
273
+
274
+ PK ends either when the duration expires or when all hosts leave.
275
+ 1. **PK Time Expires:** All hosts receive `onBattleEnded`.
276
+
277
+ 2. **Manual Exit:** Any host can call `exitBattle`. Remaining hosts stay in PK and receive `onUserExitBattle`. If all hosts exit, PK ends early.
278
+
279
+ ``` java
280
+ val battleStore: BattleStore = BattleStore.create(liveID)
281
+ battleID = battleStore.battleState.currentBattleInfo.value?.battleID
282
+ battleStore.exitBattle(battleID, null)
283
+ ```
284
+
285
+ After PK ends, use `onBattleEnded` to display results and determine winner/loser.
286
+
287
+ > **Note:**
288
+ >
289
+ > - After PK ends, the session returns to cross-room co-hosting.
290
+ > - To end co-hosting after PK, call `exitHostConnection`.
291
+
292
+ ### Scenario 2: Co-hosting with PK Mode
293
+
294
+ **AtomicXCore** supports direct PK initiation during a live session, without prior co-hosting. After PK ends, the session returns to the live room state.
295
+ 1. Streamer clicks `PK`, opens a panel with active streamers (see Step 1 above).
296
+
297
+ 2. Selects a streamer and sends a PK invitation.
298
+
299
+ 3. Target streamer receives the invitation and can accept or reject.
300
+
301
+ 4. Upon acceptance, PK starts automatically. Points are accumulated via gifts or likes.
302
+
303
+ 5. After PK ends, the winner is determined by points.
304
+
305
+ > **Note:**
306
+ >
307
+
308
+ > This workflow requires both CoHostStore and BattleStore, with `needResponse` in BattleConfig set to `false`.
309
+ >
310
+
311
+ #### Step 1: Send Co-hosting Request
312
+
313
+ This step is similar to Steps 1 and 2 in "Host Initiates a Connection". Use the `extensionInfo` field in `requestHostConnection` to indicate PK mode for UI differentiation.
314
+ - If `extraInfo` is `{"withPK:true"}`, show "Host invites you to PK".
315
+
316
+ - If `extraInfo` is `{"withPK:false"}`, show "Host invites you to join a cross-room connection".
317
+
318
+ ``` java
319
+ import io.trtc.tuikit.atomicxcore.api.live.CoHostLayoutTemplate
320
+ import io.trtc.tuikit.atomicxcore.api.CompletionHandler
321
+
322
+ val targetHostLiveID = "target_host_room_id"
323
+ val layoutTemplate = CoHostLayoutTemplate.HOST_STATIC_VOICE_6V6
324
+ val timeout = 10
325
+ val extraInfo = "withPK:true"
326
+
327
+ coHostStore.requestHostConnection(
328
+ targetHostLiveID,
329
+ layoutTemplate,
330
+ timeout,
331
+ extraInfo,
332
+ object : CompletionHandler {
333
+ override fun onSuccess() {
334
+ println("Connection request sent. Awaiting response...")
335
+ }
336
+ override fun onFailure(code: Int, desc: String) {
337
+ println("Failed to send invitation: $desc")
338
+ }
339
+ }
340
+ )
341
+ ```
342
+
343
+ #### Step 2: Target Streamer Receives Request and Confirms
344
+
345
+ Target host receives `onCoHostRequestReceived` and can accept or reject.
346
+ ``` java
347
+ private val coHostListener = object : CoHostListener() {
348
+ override fun onCoHostRequestReceived(
349
+ inviter: SeatUserInfo, extensionInfo: String
350
+ ){
351
+ // Show invitation dialog
352
+ }
353
+ }
354
+ ```
355
+
356
+ Accept or reject using:
357
+ ``` java
358
+ private val coHostStore = CoHostStore.create(liveID)
359
+
360
+ private val coHostListener = object : CoHostListener() {
361
+ override fun onCoHostRequestReceived(
362
+ inviter: SeatUserInfo, extensionInfo: String
363
+ ){
364
+ coHostStore.acceptHostConnection(fromHostLiveID, null)
365
+ // Or reject
366
+ // coHostStore.rejectHostConnection(fromHostLiveID, null)
367
+ }
368
+ }
369
+ ```
370
+
371
+ #### Step 3: Initiate PK Automatically
372
+
373
+ When the target streamer accepts, immediately call `BattleStore.requestBattle` with `needResponse: false` to start PK.
374
+ ``` java
375
+ override fun onCoHostRequestAccepted(invitee: SeatUserInfo) {
376
+ coHostStore.acceptHostConnection(invitee.liveID, null)
377
+ val directPKConfig = BattleConfig(
378
+ duration = 30,
379
+ needResponse = false,
380
+ extensionInfo = ""
381
+ )
382
+ battleStore.requestBattle(
383
+ directPKConfig,
384
+ listOf(invitee.userID),
385
+ timeout = 0,
386
+ completion = null
387
+ )
388
+
389
+ }
390
+ ```
391
+
392
+ #### Step 4: Enter PK State
393
+
394
+ This step is the same as Enter PK State.
395
+
396
+ ## PK Score Update and Win/Loss Determination
397
+
398
+ ### Updating PK Score via REST API
399
+
400
+ In typical** live host PK scenarios,** the value of gifts received by the host is linked to the PK score (for example, when a viewer sends a "Rocket" gift, the host's PK score increases by 500 points). You can implement real-time PK score updates using our REST API.
401
+
402
+ > **Note:**
403
+ >
404
+
405
+ > The PK score system in the LiveKit backend uses pure numeric calculation and accumulation. You must calculate the PK score according to your own business logic before calling the update API. See the following PK score calculation examples:
406
+ >
407
+ | Gift Type | Score Calculation Rule | Example |
408
+ | --- | --- | --- |
409
+ | Basic Gift | Gift value × 5 | 10 RMB gift → 50 points |
410
+ | Intermediate Gift | Gift value × 8 | 50 RMB gift → 400 points |
411
+ | Advanced Gift | Gift value × 12 | 100 RMB gift → 1200 points |
412
+ | Special Effect Gift | Fixed high score | 520 RMB gift → 1314 points |
413
+
414
+ #### REST API Call Flow
415
+
416
+ #### Key Process Description
417
+ 1. **Obtain PK Status:**
418
+
419
+ - **Callback Configuration**: Configure PK Status Callback to have the LiveKit backend actively notify your system when PK starts or ends.
420
+
421
+ - **Active Query**: Your backend can call the PK Status Query API at any time to check the current PK status.
422
+
423
+ 2. **PK Score Calculation**: Your backend calculates the PK score increment based on your business rules.
424
+
425
+ 3. **PK Score Update**: Your backend calls the Update PK Score API to update the PK score in the LiveKit backend.
426
+
427
+ 4. **LiveKit Backend Syncs to Client**: The backend automatically synchronizes the updated PK score to all clients.
428
+
429
+ #### Involved REST API Endpoints
430
+ | **API** | **Function Description** | **Request Example** |
431
+ | --- | --- | --- |
432
+ | Active API - Query PK Status | Check whether the current room is in PK | Example |
433
+ | Active API - Update PK Score | Update the calculated PK score | Example |
434
+ | Callback Configuration - PK Start Callback | Receive real-time notification when PK starts | Example |
435
+ | Callback Configuration - PK End Callback | Receive real-time notification when PK ends | Example |
436
+
437
+ ### Winner Determination
438
+
439
+ In PK scenarios, scores are typically based on gifts received, driving competition and engagement. The PK module in RoomEngine supports score updates and broadcasts. Link your gift logic to this system.
440
+
441
+ When your billing system confirms a gift transaction, call the Modify PK Score to update the host's PK score. All users in PK rooms see the updated `battleScore` in `BattleState`. Update your PK progress bar whenever `battleScore` changes.
442
+ ``` java
443
+ private fun observeBattleScore() {
444
+ val job = lifecycleScope.launch {
445
+ battleStore?.battleState?.battleScore?.collect { battleScore ->
446
+ // Update PK progress bar here
447
+ }
448
+ }
449
+ collectJobs.add(job)
450
+ }
451
+ ```
452
+
453
+ ## API Documentation
454
+
455
+ For details on all public interfaces, properties, and methods for CoHostStore, BattleStore, LiveListStore, LiveSeatStore, and related classes, see the [AtomicXCore API documentation](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore).
456
+ | **Store/Component** | **Function Description** | **API Documentation** |
457
+ | --- | --- | --- |
458
+ | CoHostStore | Host Connection Lifecycle Management: Responsible for managing and coordinating the lifecycle of anchor connections, including initiating connection invitations, handling acceptance/rejection, switching connection status, managing video streams during connections, and disconnecting connections. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-co-host-store/index.html) |
459
+ | BattleStore | Streamer PK Battle Lifecycle Management: Responsible for managing the entire lifecycle of timed PK battles between streamers, including initiating PK invitations, starting the battle, updating PK scores in real time, settling the winner at the end of the PK, and penalty time. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-battle-store/index.html) |
460
+ | LiveListStore | Manages live room lifecycle: query room list, modify live info, etc. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-list-store/index.html) |
461
+ | LiveSeatStore | Manages seat states within a room (including cross-room seats), tracks user seat changes, microphone status, and more. | [API Documentation](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-live-seat-store/index.html) |
462
+
463
+ ## FAQs
464
+
465
+ #### What is the maximum number of rooms and users supported for connection or PK?
466
+
467
+ Up to 9 rooms can be connected simultaneously, with 50 users per room.
468
+
469
+ #### How do I implement a punishment period after PK loss?
470
+
471
+ After receiving the `onBattleEnded` callback, determine the winner using `battleScore` from `BattleState`. The connection remains active after PK. Implement a custom 30-second punishment period, then disconnect after the countdown.
472
+
473
+ #### Why did the connection invitation not reach the target host?
474
+ - Verify that **targetHostLiveId** is correct and the target room is actively live.
475
+
476
+ - Check network connectivity; invitation signaling has a default 30-second timeout.
477
+
478
+ #### What happens if a host disconnects or the app crashes during connection or PK?
479
+
480
+ CoHostStore and BattleStore have built-in heartbeat and timeout detection. If a participant exits unexpectedly, the other party is notified via events such as `onCoHostUserLeft` or `onUserExitBattle`. Use these events to update the UI (e.g., "The other party has disconnected") and end the interaction.
481
+
482
+ #### Why can PK scores only be updated via REST API?
483
+
484
+ REST API ensures PK score **security, real-time updates, and scalability**:
485
+ - **Tamper-proof and fair:** Requires authentication and data validation. Each update is traceable (e.g., gift action), preventing manual score changes or cheating.
486
+
487
+ - **Real-time sync:** Standardized formats (e.g., JSON) allow seamless integration with gifts, PK, and display systems, keeping scores consistent across hosts, viewers, and backend.
488
+
489
+ - **Flexible rule adaptation:** Backend configuration changes (e.g., adjusting gift score values) can be made without front-end changes, reducing iteration costs.