@tencentcloud/tuiroom-engine-electron 2.2.2-alpha.0 → 2.3.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.
package/index.d.ts CHANGED
@@ -1,12 +1,948 @@
1
- import TIM from '@tencentcloud/chat';
2
- import TencentCloudChat from '@tencentcloud/chat';
3
- import TRTCCloud, { TRTCDeviceInfo, TRTCScreenCaptureSourceInfo } from 'trtc-electron-sdk';
4
- import { TUIRoomInfo, TUIVideoStreamType, TUIVideoQuality, TUIAudioQuality, TUIRole, TUIRoomEvents, TUIRoomType, TUISeatInfo, TUIRequestCallback, TUISpeechMode, TUIMediaDevice, TUISeatLockParams, TUILoginUserInfo, TUIUserInfo, TUIRequest, TUIVideoEncoderParams, TUIResolutionMode, TUISeatMode } from './types';
5
- import TUIRoomDeviceManager from './modules/deviceManager';
6
- export * from './types';
7
- export { TUIRoomDeviceManager };
8
- export { TRTCDeviceType, TRTCDeviceState, TRTCDeviceInfo, TRTCVideoMirrorType, TRTCVideoRotation, TRTCVideoFillMode, TRTCVideoStreamType, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureSourceType, Rect, TRTCVideoEncParam, TRTCVideoResolution, TRTCVideoResolutionMode, TRTCScreenCaptureProperty, TRTCVolumeInfo, TRTCLogLevel, } from 'trtc-electron-sdk';
9
- export { TRTCCloud, TIM, TencentCloudChat };
1
+ import { ChatSDK } from '@tencentcloud/chat';
2
+ export { default as TIM, default as TencentCloudChat } from '@tencentcloud/chat';
3
+ import TRTCCloud, { TRTCScreenCaptureSourceInfo, TRTCDeviceInfo } from 'trtc-electron-sdk';
4
+ export { Rect, default as TRTCCloud, TRTCDeviceInfo, TRTCDeviceState, TRTCDeviceType, TRTCScreenCaptureProperty, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureSourceType, TRTCVideoEncParam, TRTCVideoFillMode, TRTCVideoMirrorType, TRTCVideoResolution, TRTCVideoResolutionMode, TRTCVideoRotation, TRTCVideoStreamType, TRTCVolumeInfo } from 'trtc-electron-sdk';
5
+
6
+ declare enum TUIErrorCode {
7
+ ERR_SUCC = 0,
8
+ ERR_FAILED = -1,
9
+ ERR_FREQ_LIMIT = -2,
10
+ ERR_REPEAT_OPERATION = -3,
11
+ ERR_SDKAPPID_NOT_FOUND = -1000,
12
+ ERR_INVALID_PARAMETER = -1001,
13
+ ERR_SDK_NOT_INITIALIZED = -1002,
14
+ ERR_PERMISSION_DENIED = -1003,
15
+ ERR_REQUIRE_PAYMENT = -1004,
16
+ ERR_CAMERA_START_FAILED = -1100,
17
+ ERR_CAMERA_NOT_AUTHORIZED = -1101,
18
+ ERR_CAMERA_OCCUPIED = -1102,
19
+ ERR_CAMERA_DEVICE_EMPTY = -1103,
20
+ ERR_MICROPHONE_START_FAILED = -1104,
21
+ ERR_MICROPHONE_NOT_AUTHORIZED = -1105,
22
+ ERR_MICROPHONE_OCCUPIED = -1106,
23
+ ERR_MICROPHONE_DEVICE_EMPTY = -1107,
24
+ ERR_GET_SCREEN_SHARING_TARGET_FAILED = -1108,
25
+ ERR_START_SCREEN_SHARING_FAILED = -1109,
26
+ ERR_ROOM_ID_NOT_EXIST = -2100,
27
+ ERR_OPERATION_INVALID_BEFORE_ENTER_ROOM = -2101,
28
+ ERR_EXIT_NOT_SUPPORTED_FOR_ROOM_OWNER = -2102,
29
+ ERR_OPERATION_NOT_SUPPORTED_IN_CURRENT_ROOM_TYPE = -2103,
30
+ ERR_OPERATION_NOT_SUPPORTED_IN_CURRENT_SPEECH_MODE = -2104,
31
+ ERR_ROOM_ID_INVALID = -2105,
32
+ ERR_ROOM_ID_OCCUPIED = -2106,
33
+ ERR_ROOM_NAME_INVALID = -2107,
34
+ ERR_ALREADY_IN_OTHER_ROOM = -2108,
35
+ ERR_USER_NOT_EXIST = -2200,
36
+ ERR_USER_NOT_ENTERED = -2201,
37
+ ERR_NEED_OWNER_PERMISSION = -2300,
38
+ ERR_NEED_ADMIN_PERMISSION = -2301,
39
+ ERR_REQUEST_NO_PERMISSION = -2310,
40
+ ERR_REQUEST_ID_INVALID = -2311,
41
+ ERR_REQUEST_ID_REPEAT = -2312,
42
+ ERR_REQUEST_ID_CONFLICT = -2313,
43
+ ERR_MAX_SEAT_COUNT_LIMIT = -2340,
44
+ ERR_ALREADY_IN_SEAT = -2341,
45
+ ERR_SEAT_OCCUPIED = -2342,
46
+ ERR_SEAT_LOCKED = -2343,
47
+ ERR_SEAT_INDEX_NOT_EXIST = -2344,
48
+ ERR_USER_NOT_IN_SEAT = -2345,
49
+ ERR_ALL_SEAT_OCCUPIED = -2346,
50
+ ERR_SEAT_NOT_SUPPORT_LINK_MIC = -2347,
51
+ ERR_OPEN_MICROPHONE_NEED_SEAT_UNLOCK = -2360,
52
+ ERR_OPEN_MICROPHONE_NEED_PERMISSION_FROM_ADMIN = -2361,
53
+ ERR_OPEN_CAMERA_NEED_SEAT_UNLOCK = -2370,
54
+ ERR_OPEN_CAMERA_NEED_PERMISSION_FROM_ADMIN = -2371,
55
+ ERR_OPEN_SCREEN_SHARE_NEED_SEAT_UNLOCK = -2372,
56
+ ERR_OPEN_SCREEN_SHARE_NEED_PERMISSION_FROM_ADMIN = -2373,
57
+ ERR_SEND_MESSAGE_DISABLED_FOR_ALL = -2380,
58
+ ERR_SEND_MESSAGE_DISABLED_FOR_CURRENT = -2381
59
+ }
60
+ type TUIRoomInfo = {
61
+ roomId: string;
62
+ roomName: string;
63
+ roomType: TUIRoomType;
64
+ isSeatEnabled: boolean;
65
+ seatMode: TUISeatMode;
66
+ isMicrophoneDisableForAllUser: boolean;
67
+ isScreenShareDisableForAllUser: boolean;
68
+ isCameraDisableForAllUser: boolean;
69
+ isMessageDisableForAllUser: boolean;
70
+ maxSeatCount: number;
71
+ roomOwner: string;
72
+ createTime: number;
73
+ roomMemberCount: number;
74
+ };
75
+ type TUILoginUserInfo = {
76
+ userId: string;
77
+ userName: string;
78
+ avatarUrl: string;
79
+ customInfo: Record<string, any>;
80
+ };
81
+ type TUISeatLockParams = {
82
+ lockSeat: boolean;
83
+ lockVideo: boolean;
84
+ lockAudio: boolean;
85
+ };
86
+ declare enum TUIRole {
87
+ kRoomOwner = 0,
88
+ kAdministrator = 1,
89
+ kGeneralUser = 2
90
+ }
91
+ /**
92
+ * 消息结构体
93
+ * @typedef {object} TUIMessage
94
+ * @property {string} messageId 消息 Id
95
+ * @property {string} message 消息内容
96
+ * @property {number} timestamp 时间戳信息, 精确到秒
97
+ * @property {TUIRole} userId 用户 Id
98
+ * @property {boolean} userName 用户名称
99
+ * @property {boolean} avatarUrl 用户头像地址
100
+ */
101
+ type TUIMessage = {
102
+ messageId: string;
103
+ message: string;
104
+ timestamp: number;
105
+ userId: string;
106
+ userName: string;
107
+ avatarUrl: string;
108
+ };
109
+ declare enum TUIVideoQuality {
110
+ kVideoQuality_360p = 1,
111
+ kVideoQuality_540p = 2,
112
+ kVideoQuality_720p = 3,
113
+ kVideoQuality_1080p = 4
114
+ }
115
+ declare enum TUIAudioQuality {
116
+ kAudioProfileSpeech = 0,
117
+ kAudioProfileDefault = 1,
118
+ kAudioProfileMusic = 2
119
+ }
120
+ declare enum TUIVideoStreamType {
121
+ kCameraStream = 0,
122
+ kScreenStream = 1,
123
+ kCameraStreamLow = 2
124
+ }
125
+ declare enum TUINetworkQuality {
126
+ kQualityUnknown = 0,
127
+ kQualityExcellent = 1,
128
+ kQualityGood = 2,
129
+ kQualityPoor = 3,
130
+ kQualityBad = 4,
131
+ kQualityVeryBad = 5,
132
+ kQualityDown = 6
133
+ }
134
+ /**
135
+ * 消息结构体
136
+ * @typedef {object} TUINetwork
137
+ * @property {string} userId 用户 Id
138
+ * @property {TUINetworkQuality} quality 网络质量
139
+ * @property {number} upLoss 上行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息
140
+ * @property {TUIRole} downLoss 下行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息
141
+ * @property {Number} delay 网络延迟,单位 ms,目前仅本地用户有该信息
142
+ */
143
+ type TUINetwork = {
144
+ userId: string;
145
+ quality: TUINetworkQuality;
146
+ upLoss: number;
147
+ downLoss: number;
148
+ delay: number;
149
+ };
150
+ /**
151
+ * 视频编码参数
152
+ * @typedef {object} TUIVideoEncoderParams
153
+ * @property {number} fps 帧率设置
154
+ * @property {number} bitrate 目标编码码率设置
155
+ * @property {TUIVideoQuality} quality 上行视频分辨率
156
+ * @property {TUIVideoQuality} videoResolution 上行视频分辨率(自 v1.6.0 版本开始支持,v1.6.0 之前版本请使用 quality 参数)
157
+ * @property {TUIResolutionMode} resolutionMode 横竖屏模式
158
+ */
159
+ type TUIVideoEncoderParams = {
160
+ quality?: TUIVideoQuality;
161
+ videoResolution: TUIVideoQuality;
162
+ fps: number;
163
+ bitrate: number;
164
+ resolutionMode: TUIResolutionMode;
165
+ };
166
+ declare enum TUIRoomType {
167
+ kConference = 1,
168
+ kLive = 2
169
+ }
170
+ declare enum TUISpeechMode {
171
+ kFreeToSpeak = 1,
172
+ kApplyToSpeak = 2,
173
+ kSpeakAfterTakingSeat = 3
174
+ }
175
+ declare enum TUISeatMode {
176
+ kFreeToTake = 1,
177
+ kApplyToTake = 2
178
+ }
179
+ declare enum TUIMediaDevice {
180
+ kMicrophone = 1,
181
+ kCamera = 2,
182
+ kScreen = 3
183
+ }
184
+ declare enum TUICaptureSourceType {
185
+ kWindow = 0,
186
+ kScreen = 1
187
+ }
188
+ declare enum TUIChangeReason {
189
+ kChangedBySelf = 0,
190
+ kChangedByAdmin = 1
191
+ }
192
+ declare enum TUIKickedOutOfRoomReason {
193
+ kKickedByAdmin = 0,
194
+ kKickedByLoggedOnOtherDevice = 1,
195
+ kKickedByServer = 2
196
+ }
197
+ declare enum TUIRequestAction {
198
+ kInvalidAction = 0,
199
+ kRequestToOpenRemoteCamera = 1,
200
+ kRequestToOpenRemoteMicrophone = 2,
201
+ kRequestToConnectOtherRoom = 3,
202
+ kRequestToTakeSeat = 4,
203
+ kRequestRemoteUserOnSeat = 5,
204
+ kApplyToAdminToOpenLocalCamera = 6,
205
+ kApplyToAdminToOpenLocalMicrophone = 7,
206
+ kApplyToAdminToOpenLocalScreenShare = 8
207
+ }
208
+ declare enum TUIRequestCallbackType {
209
+ kRequestAccepted = 0,
210
+ kRequestRejected = 1,
211
+ kRequestCancelled = 2,
212
+ kRequestTimeout = 3,
213
+ kRequestError = 4
214
+ }
215
+ declare enum TRTCRole {
216
+ kAnchor = 0,
217
+ kAudience = 1
218
+ }
219
+ declare enum TUIResolutionMode {
220
+ kResolutionMode_Landscape = 0,
221
+ kResolutionMode_Portrait = 1
222
+ }
223
+ type TUIUserInfo = {
224
+ userId: string;
225
+ userName: string;
226
+ avatarUrl: string;
227
+ userRole: TUIRole;
228
+ hasAudioStream: boolean;
229
+ hasVideoStream: boolean;
230
+ hasScreenStream: boolean;
231
+ isMessageDisabled: boolean;
232
+ roomCustomInfo: Record<string, any>;
233
+ };
234
+ type TUISeatInfo = {
235
+ index: number;
236
+ userId: string;
237
+ userName: string;
238
+ avatarUrl: string;
239
+ locked: boolean;
240
+ isVideoLocked: boolean;
241
+ isAudioLocked: boolean;
242
+ };
243
+ type TUIRequest = {
244
+ requestAction: TUIRequestAction;
245
+ timestamp: number;
246
+ requestId: string;
247
+ userId: string;
248
+ userName: string;
249
+ avatarUrl: string;
250
+ content: string;
251
+ };
252
+ type TUIRequestCallback = {
253
+ requestCallbackType: TUIRequestCallbackType;
254
+ requestId: string;
255
+ userId: string;
256
+ code: number;
257
+ message: string;
258
+ };
259
+ declare enum TUIMediaDeviceType {
260
+ kMediaDeviceTypeUnknown = -1,
261
+ kMediaDeviceTypeAudioInput = 0,
262
+ kMediaDeviceTypeAudioOutput = 1,
263
+ kMediaDeviceTypeVideoCamera = 2
264
+ }
265
+ declare enum TUIMediaDeviceState {
266
+ kMediaDeviceStateAdd = 0,
267
+ kMediaDeviceStateRemove = 1,
268
+ kMediaDeviceStateActive = 2
269
+ }
270
+ declare enum TUIAudioRoute {
271
+ kAudioRouteSpeakerphone = 0,
272
+ kAudioRouteEarpiece = 1
273
+ }
274
+ type TUIDeviceInfo = {
275
+ deviceId: string;
276
+ deviceName: string;
277
+ deviceProperties?: {
278
+ supportedResolution?: {
279
+ width: number;
280
+ height: number;
281
+ }[];
282
+ };
283
+ };
284
+ /**
285
+ * **TUIRoomEngine 事件列表**<br>
286
+ * @namespace TUIRoomEvents
287
+ * @example
288
+ * import TUIRoomEngine, { TUIRoomEvents } from '@tencentcloud/tuiroom-engine-electron';
289
+ * const roomEngine = new TUIRoomEngine();
290
+ * roomEngine.on(TUIRoomEvents.onError, (error) => {
291
+ * console.log('roomEngine.error', error);
292
+ * })
293
+ */
294
+ declare enum TUIRoomEvents {
295
+ /**
296
+ *
297
+ * @description 错误事件
298
+ * @event TUIRoomEvents#onError
299
+ * @param {object} options
300
+ * @param {number} options.code 错误代码
301
+ * @param {string} options.message 错误信息
302
+ * @example
303
+ * const roomEngine = new TUIRoomEngine();
304
+ * roomEngine.on(TUIRoomEvents.onError, (error) => {
305
+ * console.log('TUIRoomError error', error);
306
+ * })
307
+ */
308
+ onError = "onError",
309
+ /**
310
+ * @description 踢出房间事件
311
+ * @default 'onKickedOutOfRoom'
312
+ * @event TUIRoomEvents#onKickedOutOfRoom
313
+ * @param {object} options
314
+ * @param {string} options.roomId 房间号
315
+ * @param {TUIKickedOutOfRoomReason} options.reason 用户被踢出房间枚举
316
+ * @param {string} options.message 踢出房间信息
317
+ * @example
318
+ * const roomEngine = new TUIRoomEngine();
319
+ * roomEngine.on(TUIRoomEvents.onKickedOutOfRoom, ({ roomId, reason, message }) => {
320
+ * console.log('roomEngine.onKickedOutOfRoom', roomId, reason, message);
321
+ * });
322
+ */
323
+ onKickedOutOfRoom = "onKickedOutOfRoom",
324
+ /**
325
+ * @description 当前用户被踢下线
326
+ * @default 'onKickedOffLine'
327
+ * @event TUIRoomEvents#onKickedOffLine
328
+ * @param {string} options.message 用户被踢下线信息
329
+ * @example
330
+ * const roomEngine = new TUIRoomEngine();
331
+ * roomEngine.on(TUIRoomEvents.onKickedOffLine, ({ message }) => {
332
+ * console.log('roomEngine.onKickedOffLine', message);
333
+ * });
334
+ */
335
+ onKickedOffLine = "onKickedOffLine",
336
+ /**
337
+ * @description userSig 过期事件
338
+ * @default 'onUserSigExpired'
339
+ * @event TUIRoomEvents#onUserSigExpired
340
+ * @example
341
+ * const roomEngine = new TUIRoomEngine();
342
+ * roomEngine.on(TUIRoomEvents.onUserSigExpired, () => {
343
+ * console.log('roomEngine.onUserSigExpired');
344
+ * });
345
+ */
346
+ onUserSigExpired = "onUserSigExpired",
347
+ /**
348
+ * @description 主持人销毁房间事件
349
+ * @default 'onRoomDismissed'
350
+ * @event TUIRoomEvents#onRoomDismissed
351
+ * @param {object} options
352
+ * @param {string} options.roomId 房间号
353
+ * @example
354
+ * const roomEngine = new TUIRoomEngine();
355
+ * roomEngine.on(TUIRoomEvents.onRoomDismissed, ({ roomId }) => {
356
+ * console.log('roomEngine.onRoomDismissed', roomId);
357
+ * });
358
+ */
359
+ onRoomDismissed = "onRoomDismissed",
360
+ /**
361
+ * @description 房间名字修改事件
362
+ * @default 'onRoomNameChanged'
363
+ * @event TUIRoomEvents#onRoomChanged
364
+ * @param {object} options
365
+ * @param {string} options.roomName 房间名字
366
+ * @example
367
+ * const roomEngine = new TUIRoomEngine();
368
+ * roomEngine.on(TUIRoomEvents.onRoomNameChanged, ({ roomId, roomName }) =>{
369
+ * console.log('roomEngine.onRoomNameChanged', roomId, roomName);
370
+ * });
371
+ */
372
+ onRoomNameChanged = "onRoomNameChanged",
373
+ /**
374
+ * @description 房间模式修改事件
375
+ * @deprecated 该事件自 v2.0.0 版本废弃
376
+ * @default 'onRoomSpeechModeChanged'
377
+ * @event TUIRoomEvents#onRoomSpeechModeChanged
378
+ * @param {object} options
379
+ * @param {TUISpeechMode} options.speechMode 房间模式
380
+ * @example
381
+ * const roomEngine = new TUIRoomEngine();
382
+ * roomEngine.on(TUIRoomEvents.onRoomSpeechModeChanged, ({ roomId, speechMode }) =>{
383
+ * console.log('roomEngine.onRoomSpeechModeChanged', roomId, speechMode);
384
+ * });
385
+ */
386
+ onRoomSpeechModeChanged = "onRoomSpeechModeChanged",
387
+ /**
388
+ * @description 上麦模式修改事件
389
+ * @default 'onRoomSeatModeChanged'
390
+ * @event TUIRoomEvents#onRoomSeatModeChanged
391
+ * @param {object} options
392
+ * @param {TUISeatMode} options.seatMode 房间上麦模式
393
+ * @example
394
+ * const roomEngine = new TUIRoomEngine();
395
+ * roomEngine.on(TUIRoomEvents.onRoomSeatModeChanged, ({ roomId, seatMode }) =>{
396
+ * console.log('roomEngine.onRoomSeatModeChanged', roomId, seatMode);
397
+ * });
398
+ */
399
+ onRoomSeatModeChanged = "onRoomSeatModeChanged",
400
+ /**
401
+ * @description 房间内人数变化事件
402
+ * @default 'onRoomUserCountChanged'
403
+ * @event TUIRoomEvents#onRoomUserCountChanged
404
+ * @param {object} options
405
+ * @param {number} options.userCount 房间内人数
406
+ * @example
407
+ * const roomEngine = new TUIRoomEngine();
408
+ * roomEngine.on(TUIRoomEvents.onRoomUserCountChanged, ({ roomId, userCount }) =>{
409
+ * console.log('roomEngine.onRoomUserCountChanged', roomId, userCount);
410
+ * });
411
+ */
412
+ onRoomUserCountChanged = "onRoomUserCountChanged",
413
+ /**
414
+ * @description 所有成员摄像头使用权限改变事件
415
+ * @default 'onAllUserCameraDisableChanged'
416
+ * @event TUIRoomEvents#onAllUserCameraDisableChanged
417
+ * @param {object} options
418
+ * @param {boolean} options.isDisable 是否允许使用摄像头
419
+ * @example
420
+ * const roomEngine = new TUIRoomEngine();
421
+ * roomEngine.on(TUIRoomEvents.onAllUserCameraDisableChanged, ({ isDisable }) =>{
422
+ * console.log('roomEngine.onAllUserCameraDisableChanged', isDisable);
423
+ * });
424
+ */
425
+ onAllUserCameraDisableChanged = "onAllUserCameraDisableChanged",
426
+ /**
427
+ * @description 所有成员麦克风使用权限改变事件
428
+ * @default 'onAllUserMicrophoneDisableChanged'
429
+ * @event TUIRoomEvents#onAllUserMicrophoneDisableChanged
430
+ * @param {object} options
431
+ * @param {boolean} options.isDisable 是否允许使用麦克风
432
+ * @example
433
+ * const roomEngine = new TUIRoomEngine();
434
+ * roomEngine.on(TUIRoomEvents.onAllUserMicrophoneDisableChanged, ({ isDisable }) =>{
435
+ * console.log('roomEngine.onAllUserMicrophoneDisableChanged', isDisable);
436
+ * });
437
+ */
438
+ onAllUserMicrophoneDisableChanged = "onAllUserMicrophoneDisableChanged",
439
+ /**
440
+ * @since v2.2.0
441
+ * @description 房间内所有用户屏幕分享被禁用事件
442
+ * @default 'onScreenShareForAllUserDisableChanged'
443
+ * @event TUIRoomEvents#onScreenShareForAllUserDisableChanged
444
+ * @param {object} options
445
+ * @param {boolean} options.isDisable 是否开启禁止屏幕分享
446
+ * @example
447
+ * const roomEngine = new TUIRoomEngine();
448
+ * roomEngine.on(TUIRoomEvents.onScreenShareForAllUserDisableChanged, ({ isDisable }) =>{
449
+ * console.log('roomEngine.onScreenShareForAllUserDisableChanged', isDisable);
450
+ * });
451
+ */
452
+ onScreenShareForAllUserDisableChanged = "onScreenShareForAllUserDisableChanged",
453
+ /**
454
+ * @description 所有成员发送消息权限改变事件
455
+ * @default 'onSendMessageForAllUserDisableChanged'
456
+ * @event TUIRoomEvents#OnSendMessageForAllUserDisableChanged
457
+ * @param {object} options
458
+ * @param {boolean} options.isDisable 是否被允许
459
+ * @example
460
+ * const roomEngine = new TUIRoomEngine();
461
+ * roomEngine.on(TUIRoomEvents.onSendMessageForAllUserDisableChanged, ({ isDisable }) =>{
462
+ * console.log('roomEngine.onSendMessageForAllUserDisableChanged', isDisable);
463
+ * });
464
+ */
465
+ onSendMessageForAllUserDisableChanged = "onSendMessageForAllUserDisableChanged",
466
+ /**
467
+ * @description 房间最大麦位数修改事件
468
+ * @default 'onRoomMaxSeatCountChanged'
469
+ * @event TUIRoomEvents#onRoomMaxSeatCountChanged
470
+ * @param {object} options
471
+ * @param {boolean} options.maxSeatNumber 最大麦位数
472
+ * @example
473
+ * const roomEngine = new TUIRoomEngine();
474
+ * roomEngine.on(TUIRoomEvents.onRoomMaxSeatCountChanged, ({ maxSeatNumber }) =>{
475
+ * console.log('roomEngine.onRoomMaxSeatCountChanged', maxSeatNumber);
476
+ * });
477
+ */
478
+ onRoomMaxSeatCountChanged = "onRoomMaxSeatCountChanged",
479
+ /**
480
+ * @description 远端用户进入房间事件
481
+ * @default 'onRemoteUserEnterRoom'
482
+ * @event TUIRoomEvents#onRemoteUserEnterRoom
483
+ * @param {object} options
484
+ * @param {string} options.roomId 房间号
485
+ * @param {TUIUserInfo} options.userInfo 用户信息
486
+ * @example
487
+ * const roomEngine = new TUIRoomEngine();
488
+ * roomEngine.on(TUIRoomEvents.onRemoteUserEnterRoom, ({ roomId, userInfo }) => {
489
+ * console.log('roomEngine.onRemoteUserEnterRoom', roomId, userInfo);
490
+ * });
491
+ */
492
+ onRemoteUserEnterRoom = "onRemoteUserEnterRoom",
493
+ /**
494
+ * @description 远端用户离开房间事件
495
+ * @default 'onRemoteUserLeaveRoom'
496
+ * @event TUIRoomEvents#onRemoteUserLeaveRoom
497
+ * @param {object} options
498
+ * @param {string} options.roomId 房间号
499
+ * @param {TUIUserInfo} options.userInfo 用户信息
500
+ * @example
501
+ * const roomEngine = new TUIRoomEngine();
502
+ * roomEngine.on(TUIRoomEvents.onRemoteUserLeaveRoom, ({ roomId, userInfo }) => {
503
+ * console.log('roomEngine.onRemoteUserLeaveRoom', roomId, userInfo);
504
+ * });
505
+ */
506
+ onRemoteUserLeaveRoom = "onRemoteUserLeaveRoom",
507
+ /**
508
+ * @description 用户角色改变事件
509
+ * @default 'onKickedOutOfRoom'
510
+ * @event TUIRoomEvents#onUserRoleChanged
511
+ * @param {object} options
512
+ * @param {string} options.userId 用户Id
513
+ * @param {TUIRole} options.userRole 用户变更后的角色
514
+ * @example
515
+ * const roomEngine = new TUIRoomEngine();
516
+ * roomEngine.on(TUIRoomEvents.onUserRoleChanged, ({ userId, userRole }) => {
517
+ * console.log('roomEngine.onUserRoleChanged', userId, userRole);
518
+ * });
519
+ */
520
+ onUserRoleChanged = "onUserRoleChanged",
521
+ /**
522
+ * @description 用户视频状态改变事件
523
+ * @default 'onUserVideoStateChanged'
524
+ * @event TUIRoomEvents#onUserVideoStateChanged
525
+ * @param {object} options
526
+ * @param {string} options.userId 用户Id
527
+ * @param {TUIVideoStreamType} options.streamType 用户流类型
528
+ * @param {boolean} options.hasVideo 是否有视频流
529
+ * @param {TUIChangeReason} options.reason 变更原因
530
+ * @example
531
+ * const roomEngine = new TUIRoomEngine();
532
+ * roomEngine.on(TUIRoomEvents.onUserVideoStateChanged, ({ userId, streamType, hasVideo, reason }) => {
533
+ * console.log('roomEngine.onUserVideoStateChanged', userId, streamType, hasVideo, reason);
534
+ * });
535
+ */
536
+ onUserVideoStateChanged = "onUserVideoStateChanged",
537
+ /**
538
+ * @description 用户音频状态改变事件
539
+ * @default 'onUserAudioStateChanged'
540
+ * @event TUIRoomEvents#onUserAudioStateChanged
541
+ * @param {object} options
542
+ * @param {string} options.userId 用户Id
543
+ * @param {boolean} options.hasVideo 是否有音频流
544
+ * @param {TUIChangeReason} options.reason 原因
545
+ * @example
546
+ * const roomEngine = new TUIRoomEngine();
547
+ * roomEngine.on(TUIRoomEvents.onUserAudioStateChanged, ({ userId, hasAudio, reason }) => {
548
+ * console.log('roomEngine.onUserAudioStateChanged', userId, hasAudio, reason);
549
+ * });
550
+ */
551
+ onUserAudioStateChanged = "onUserAudioStateChanged",
552
+ /**
553
+ * @description 用户发送消息状态改变事件
554
+ * @default 'onSendMessageForUserDisableChanged'
555
+ * @event TUIRoomEvents#onSendMessageForUserDisableChanged
556
+ * @param {object} options
557
+ * @param {string} options.userId 成员 Id
558
+ * @param {boolean} options.isDisable 是否被允许
559
+ * @example
560
+ * const roomEngine = new TUIRoomEngine();
561
+ * roomEngine.on(TUIRoomEvents.onSendMessageForUserDisableChanged, ({ userId, isDisable }) =>{
562
+ * console.log('roomEngine.onSendMessageForUserDisableChanged', isDisable);
563
+ * });
564
+ */
565
+ onSendMessageForUserDisableChanged = "onSendMessageForUserDisableChanged",
566
+ /**
567
+ * @description 用户音量改变事件
568
+ * @default 'onUserVoiceVolumeChanged'
569
+ * @event TUIRoomEvents#onUserVoiceVolumeChanged
570
+ * @param {object} options
571
+ * @param {Array<TRTCVolumeInfo>} options.userVolumeList 房间内所有用户的音量, 包含 userId 及 volume 信息,volume 区间为 1~100;
572
+ * @example
573
+ * const roomEngine = new TUIRoomEngine();
574
+ * roomEngine.on(TUIRoomEvents.onUserVoiceVolumeChanged, ({ userVolumeList }) => {
575
+ * userVolumeList.forEach(userVolume => {
576
+ * console.log('roomEngine.onUserVoiceVolumeChanged', userVolume.userId, userVolume.volume);
577
+ * })
578
+ * });
579
+ */
580
+ onUserVoiceVolumeChanged = "onUserVoiceVolumeChanged",
581
+ /**
582
+ * @description 用户网络质量改变事件
583
+ * @default 'onUserNetworkQualityChanged'
584
+ * @event TUIRoomEvents#onUserNetworkQualityChanged
585
+ * @param {object} options
586
+ * @param {TUINetwork} options.userNetworkList 网络质量信息
587
+ * @example
588
+ * const roomEngine = new TUIRoomEngine();
589
+ * roomEngine.on(TUIRoomEvents.onUserNetworkQualityChanged, ({ userNetworkList }) => {
590
+ * userNetworkList.forEach(userNetwork => {
591
+ * console.log('roomEngine.onUserNetworkQualityChanged',
592
+ * userNetwork.userId, userNetwork.quality, userNetwork.upLoss, userNetwork.downLoss, userNetwork.delay);
593
+ * })
594
+ * });
595
+ */
596
+ onUserNetworkQualityChanged = "onUserNetworkQualityChanged",
597
+ /**
598
+ * @description 麦位列表改变事件
599
+ * @default 'onSeatListChanged'
600
+ * @event TUIRoomEvents#onSeatListChanged
601
+ * @param {object} options
602
+ * @param {Array<TUISeatInfo>} options.seatList 麦位列表
603
+ * @param {Array<TUISeatInfo>} options.seatedList 新增麦位列表
604
+ * @param {Array<TUISeatInfo>} options.leftList 离开的麦位列表
605
+ * @example
606
+ * const roomEngine = new TUIRoomEngine();
607
+ * roomEngine.on(TUIRoomEvents.onSeatListChanged, ({ seatList, seatedList, leftList }) => {
608
+ * console.log('roomEngine.onSeatListChanged',seatList, seatedList, leftList);
609
+ * });
610
+ */
611
+ onSeatListChanged = "onSeatListChanged",
612
+ /**
613
+ * @description 当前用户被踢下麦事件
614
+ * @default 'onKickedOffSeat'
615
+ * @event TUIRoomEvents#onKickedOffSeat
616
+ * @example
617
+ * const roomEngine = new TUIRoomEngine();
618
+ * roomEngine.on(TUIRoomEvents.onKickedOffSeat, ({ userId }) => {
619
+ * console.log('roomEngine.onKickedOffSeat', userId);
620
+ * });
621
+ */
622
+ onKickedOffSeat = "onKickedOffSeat",
623
+ /**
624
+ * @description 请求接收事件
625
+ * @default 'onRequestReceived'
626
+ * @event TUIRoomEvents#onRequestReceived
627
+ * @param {object} options
628
+ * @param {TUIRequest} options.request 请求接收
629
+ * @example
630
+ * const roomEngine = new TUIRoomEngine();
631
+ * roomEngine.on(TUIRoomEvents.onRequestReceived, ({ request }) => {
632
+ * console.log('roomEngine.onRequestReceived', request);
633
+ * });
634
+ */
635
+ onRequestReceived = "onRequestReceived",
636
+ /**
637
+ * @description 请求取消事件
638
+ * @default 'onRequestCancelled'
639
+ * @event TUIRoomEvents#onRequestCancelled
640
+ * @param {object} options
641
+ * @param {string} options.requestId 请求Id
642
+ * @param {string} options.userId 取消请求的用户Id
643
+ * @example
644
+ * const roomEngine = new TUIRoomEngine();
645
+ * roomEngine.on(TUIRoomEvents.onRequestCancelled, ({ requestId, userId }) => {
646
+ * console.log('roomEngine.onRequestCancelled', requestId, userId);
647
+ * });
648
+ */
649
+ onRequestCancelled = "onRequestCancelled",
650
+ /**
651
+ * @description 请求被其他 管理员/房主 处理事件
652
+ * @default 'onRequestProcessed'
653
+ * @event TUIRoomEvents#onRequestProcessed
654
+ * @param {object} options
655
+ * @param {string} options.requestId 请求Id
656
+ * @param {string} options.userId 处理该请求的 管理员/房主 的用户ID
657
+ * @example
658
+ * const roomEngine = new TUIRoomEngine();
659
+ * roomEngine.on(TUIRoomEvents.onRequestProcessed, ({ requestId, userId }) => {
660
+ * console.log('roomEngine.onRequestProcessed', requestId, userId);
661
+ * });
662
+ */
663
+ onRequestProcessed = "onRequestProcessed",
664
+ /**
665
+ * @description 接收文本消息事件
666
+ * @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件
667
+ * @default 'onReceiveTextMessage'
668
+ * @event TUIRoomEvents#onReceiveTextMessage
669
+ * @param {object} options
670
+ * @param {string} options.roomId 房间Id
671
+ * @param {TUIMessage} options.message 接收的文本消息
672
+ * @example
673
+ * const roomEngine = new TUIRoomEngine();
674
+ * roomEngine.on(TUIRoomEvents.onReceiveTextMessage, ({ roomId, message }) => {
675
+ * console.log('roomEngine.onReceiveTextMessage', roomId, message);
676
+ * });
677
+ */
678
+ onReceiveTextMessage = "onReceiveTextMessage",
679
+ /**
680
+ * @description 接收自定义消息事件
681
+ * @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件
682
+ * @default 'onReceiveCustomMessage'
683
+ * @event TUIRoomEvents#onReceiveCustomMessage
684
+ * @param {object} options
685
+ * @param {string} options.roomId 房间Id
686
+ * @param {TUIMessage} options.message 接收的自定义消息
687
+ * @example
688
+ * const roomEngine = new TUIRoomEngine();
689
+ * roomEngine.on(TUIRoomEvents.onReceiveCustomMessage, ({ roomId, message }) => {
690
+ * console.log('roomEngine.onReceiveCustomMessage', roomId, message);
691
+ * });
692
+ */
693
+ onReceiveCustomMessage = "onReceiveCustomMessage",
694
+ /**
695
+ * @description 设备变更事件
696
+ * @default 'onDeviceChange'
697
+ * @event TUIRoomEvents#onDeviceChange
698
+ * @param {object} options
699
+ * @param {string} options.deviceId 设备 Id
700
+ * @param {TRTCDeviceType} options.type 设备类型
701
+ * @param {TRTCDeviceState} options.state 设备变更状态
702
+ * @example
703
+ * const roomEngine = new TUIRoomEngine();
704
+ * roomEngine.on(TUIRoomEvents.onDeviceChange, ({ deviceId, type, state }) => {
705
+ * console.log('roomEngine.onDeviceChange', deviceId, type, state);
706
+ * });
707
+ */
708
+ onDeviceChange = "onDeviceChange",
709
+ /**
710
+ * @description 屏幕分享停止事件,当用户使用浏览器自带的【停止分享】按钮结束屏幕共享时,该用户会收到 'onUserScreenCaptureStopped' 事件用来修改屏幕共享状态。
711
+ * @default 'onUserScreenCaptureStopped'
712
+ * @event TUIRoomEvents#onUserScreenCaptureStopped
713
+ * @example
714
+ * const roomEngine = new TUIRoomEngine();
715
+ * roomEngine.on(TUIRoomEvents.onUserScreenCaptureStopped, () => {
716
+ * console.log('roomEngine.onUserScreenCaptureStopped');
717
+ * });
718
+ */
719
+ onUserScreenCaptureStopped = "onUserScreenCaptureStopped"
720
+ }
721
+ declare enum TUIRoomDeviceMangerEvents {
722
+ /**
723
+ * @description 设备变更事件
724
+ * @default 'onDeviceChange'
725
+ * @event TUIRoomDeviceMangerEvents#onDeviceChange
726
+ * @param {object} options
727
+ * @param {string} options.deviceId 设备 Id
728
+ * @param {TRTCDeviceType} options.type 设备类型
729
+ * @param {TRTCDeviceState} options.state 设备变更状态
730
+ * @example
731
+ * const roomEngine = new TUIRoomEngine();
732
+ * const deviceManager = roomEngine.getDeviceManager();
733
+ * deviceManager.on(TUIRoomDeviceMangerEvents.onDeviceChange, ({ deviceId, type, state }) => {
734
+ * console.log('deviceManager.onDeviceChange', deviceId, type, state);
735
+ * });
736
+ */
737
+ onDeviceChanged = "onDeviceChanged",
738
+ /**
739
+ * @description 麦克风测试音量
740
+ * @default 'onTestMicVolume'
741
+ * @event TUIRoomDeviceMangerEvents#onTestMicVolume
742
+ * @param {object} options
743
+ * @param {number} options.volume 麦克风测试音量(0-100)
744
+ * @example
745
+ * const roomEngine = new TUIRoomEngine();
746
+ * const deviceManager = roomEngine.getDeviceManager();
747
+ * deviceManager.on(TUIRoomDeviceMangerEvents.onTestMicVolume, ({ volume }) => {
748
+ * console.log('deviceManager.onTestMicVolume', volume);
749
+ * });
750
+ */
751
+ onTestMicVolume = "onTestMicVolume",
752
+ /**
753
+ * @description 扬声器测试音量,仅 Electron 端支持
754
+ * @default 'onTestSpeakerVolume'
755
+ * @event TUIRoomDeviceMangerEvents#onTestSpeakerVolume
756
+ * @param {object} options
757
+ * @param {number} options.volume 扬声器测试音量(0-100)
758
+ * @example
759
+ * const roomEngine = new TUIRoomEngine();
760
+ * const deviceManager = roomEngine.getDeviceManager();
761
+ * deviceManager.on(TUIRoomDeviceMangerEvents.onTestSpeakerVolume, ({ volume }) => {
762
+ * console.log('deviceManager.onTestSpeakerVolume', volume);
763
+ * });
764
+ */
765
+ onTestSpeakerVolume = "onTestSpeakerVolume"
766
+ }
767
+
768
+ declare class Logger {
769
+ private logger;
770
+ private trtcCloud;
771
+ private seq;
772
+ constructor(trtcCloud: any, options?: {
773
+ userId: string;
774
+ sdkAppId: number;
775
+ seq: number;
776
+ });
777
+ getLogMessage(params: any[]): string;
778
+ update(options: {
779
+ sdkAppId: number;
780
+ userId: string;
781
+ }): void;
782
+ debug(...params: any[]): void;
783
+ info(...params: any[]): void;
784
+ warn(...params: any[]): void;
785
+ error(...params: any[]): void;
786
+ private getTime;
787
+ }
788
+
789
+ /**
790
+ * 设备管理
791
+ * @class DeviceManager
792
+ */
793
+ declare class TUIRoomDeviceManager {
794
+ private deviceManagerWASM;
795
+ private logger;
796
+ private static deviceManager;
797
+ constructor(options: {
798
+ Module: any;
799
+ logger: Logger;
800
+ });
801
+ setDeviceManagerWASM(deviceManagerWASM: any): void;
802
+ /**
803
+ * @private
804
+ * 调用 TUIRoomEngineWASM 的异步方法
805
+ * @param funcName
806
+ * @param args
807
+ */
808
+ private JSCallNativeFunctionPromise;
809
+ /**
810
+ * 获取设备列表
811
+ * @param {TRTCDeviceType} type 设备类型
812
+ * @example
813
+ * // 获取设备管理 Manager
814
+ * const roomEngine = new TUIRoomEngine();
815
+ * const deviceManager = roomEngine.getDeviceManager();
816
+ *
817
+ * // 获取摄像头设备列表
818
+ * const cameraList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceVideoCamera });
819
+ * // 获取麦克风设备列表
820
+ * const micList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput });
821
+ * // 获取扬声器设备列表
822
+ * const speakerList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput });
823
+ * @returns {Promise} Array<TUIDeviceInfo>
824
+ */
825
+ getDevicesList(options: {
826
+ type: TUIMediaDeviceType;
827
+ }): Promise<TUIDeviceInfo[]>;
828
+ /**
829
+ * 设置当前使用设备
830
+ * @param {TRTCDeviceType} type 设备类型
831
+ * @param {string} deviceId 设备 Id
832
+ * @example
833
+ * // 获取设备管理 Manager
834
+ * const roomEngine = new TUIRoomEngine();
835
+ * const deviceManager = roomEngine.getDeviceManager();
836
+ *
837
+ * // 设置当前麦克风设备
838
+ * deviceManager.setCurrentDevice({
839
+ * type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput,
840
+ * deviceId: 'default',
841
+ * });
842
+ * // 设置当前扬声器设备
843
+ * deviceManager.setCurrentDevice({
844
+ * type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput,
845
+ * deviceId: 'default',
846
+ * });
847
+ * // 设置当前摄像头设备
848
+ * deviceManager.setCurrentDevice({
849
+ * type: TUIMediaDeviceType.kMediaDeviceVideoCamera,
850
+ * deviceId: '',
851
+ * });
852
+ * @returns {void}
853
+ */
854
+ setCurrentDevice(options: {
855
+ type: TUIMediaDeviceType;
856
+ deviceId: string;
857
+ }): Promise<void>;
858
+ /**
859
+ * 获取当前使用的设备信息
860
+ * @param {object} options 获取当前设备信息的参数
861
+ * @param {TUIMediaDeviceType} options.type 设备类型
862
+ * @example
863
+ * // 获取设备管理 Manager
864
+ * const roomEngine = new TUIRoomEngine();
865
+ * const deviceManager = roomEngine.getDeviceManager();
866
+ * @returns {TUIDeviceInfo}
867
+ */
868
+ getCurrentDevice(options: {
869
+ type: TUIMediaDeviceType;
870
+ }): TUIDeviceInfo;
871
+ /**
872
+ * 开始进行摄像头测试
873
+ * @param {object} options 摄像头测试参数
874
+ * @param {string} options.view 显示摄像头测试的视频区域, 传入的 view 为承载预览画面 div 元素的 id
875
+ * @returns {Promise<void>}
876
+ *
877
+ * @example
878
+ * const roomEngine = new TUIRoomEngine();
879
+ * await roomEngine.startCameraDeviceTest({ view: 'test-preview' });
880
+ */
881
+ startCameraDeviceTest(options: {
882
+ view: string;
883
+ }): Promise<void>;
884
+ /**
885
+ * 停止摄像头测试
886
+ * @returns {Promise<void>}
887
+ * @example
888
+ * const roomEngine = new TUIRoomEngine();
889
+ * await roomEngine.stopCameraDeviceTest();
890
+ */
891
+ stopCameraDeviceTest(): Promise<void>;
892
+ /**
893
+ * 开始进行麦克风测试
894
+ * @param options
895
+ * @param {number} options.interval 麦克风音量的回调时间
896
+ */
897
+ startMicDeviceTest(options: {
898
+ interval: number;
899
+ }): Promise<void>;
900
+ /**
901
+ * 停止进行麦克风测试
902
+ */
903
+ stopMicDeviceTest(): Promise<void>;
904
+ startSpeakerDeviceTest(options: {
905
+ filePath: string;
906
+ }): Promise<void>;
907
+ stopSpeakerDeviceTest(): Promise<void>;
908
+ isFrontCamera(): void;
909
+ /**
910
+ * 切换前后置摄像头,该接口只适用于移动端浏览器
911
+ * @param {Object} options
912
+ * @param {boolean} options.isFrontCamera 是否切换为前置摄像头
913
+ *
914
+ * const deviceManager = roomEngine.instance?.getDeviceManager();
915
+ * // 移动端切换为前置摄像头
916
+ * await deviceManager?.switchCamera({ isFrontCamera: true });
917
+ * // 移动端切换为后置摄像头
918
+ * await deviceManager?.switchCamera({ isFrontCamera: false });
919
+ */
920
+ switchCamera(options: {
921
+ isFrontCamera: boolean;
922
+ }): Promise<void>;
923
+ isAutoFocusEnabled(): void;
924
+ enableCameraTorch(options: {
925
+ enabled: boolean;
926
+ }): void;
927
+ setAudioRoute(options: {
928
+ route: TUIAudioRoute;
929
+ }): void;
930
+ /**
931
+ * 监听 roomEngine 的事件
932
+ * @param event TUIRoomEvents
933
+ * @param func function
934
+ * @returns {void}
935
+ *
936
+ * @example
937
+ * const roomEngine = new TUIRoomEngine();
938
+ * const deviceManager = roomEngine.getDeviceManager();
939
+ * deviceManager.on(event, func);
940
+ */
941
+ on(event: TUIRoomDeviceMangerEvents, func: (...args: any[]) => void): void;
942
+ private handleTrtcCloudBindEvent;
943
+ off(event: string, func: (...args: any[]) => void): void;
944
+ }
945
+
10
946
  /**
11
947
  * TUIRoomEngine 提供了音视频房间的能力
12
948
  *
@@ -64,7 +1000,7 @@ declare class TUIRoomEngine {
64
1000
  sdkAppId: number;
65
1001
  userId: string;
66
1002
  userSig: string;
67
- tim?: TIM;
1003
+ tim?: ChatSDK;
68
1004
  }): Promise<void>;
69
1005
  /**
70
1006
  * 设置当前用户基本信息(用户名、用户头像)
@@ -1312,7 +2248,7 @@ declare class TUIRoomEngine {
1312
2248
  * const roomEngine = new TUIRoomEngine();
1313
2249
  * const trtcCloud = roomEngine.getTIM();
1314
2250
  */
1315
- getTIM(): any;
2251
+ getTIM(): ChatSDK;
1316
2252
  destroy(): void;
1317
2253
  /**
1318
2254
  * 实验性接口
@@ -1322,5 +2258,6 @@ declare class TUIRoomEngine {
1322
2258
  */
1323
2259
  static callExperimentalAPI(jsonStr: string): Promise<void>;
1324
2260
  private static handleSetFramework;
1325
- }
1326
- export default TUIRoomEngine;
2261
+ }
2262
+
2263
+ export { TRTCRole, TUIAudioQuality, TUIAudioRoute, TUICaptureSourceType, TUIChangeReason, type TUIDeviceInfo, TUIErrorCode, TUIKickedOutOfRoomReason, type TUILoginUserInfo, TUIMediaDevice, TUIMediaDeviceState, TUIMediaDeviceType, type TUIMessage, type TUINetwork, TUINetworkQuality, type TUIRequest, TUIRequestAction, type TUIRequestCallback, TUIRequestCallbackType, TUIResolutionMode, TUIRole, TUIRoomDeviceManager, TUIRoomDeviceMangerEvents, TUIRoomEvents, type TUIRoomInfo, TUIRoomType, type TUISeatInfo, type TUISeatLockParams, TUISeatMode, TUISpeechMode, type TUIUserInfo, type TUIVideoEncoderParams, TUIVideoQuality, TUIVideoStreamType, TUIRoomEngine as default };