import EventEmitter from 'eventemitter3';
import { VirtualBackground } from 'trtc-sdk-v5/plugins/video-effect/virtual-background';
import { BasicBeauty } from 'trtc-sdk-v5/plugins/video-effect/basic-beauty';
import VideoMixer from 'trtc-sdk-v5/plugins/video-effect/video-mixer';

declare enum TRTCVideoResolution {
    TRTCVideoResolution_120_120 = 1,
    TRTCVideoResolution_160_160 = 3,
    TRTCVideoResolution_270_270 = 5,
    TRTCVideoResolution_480_480 = 7,
    TRTCVideoResolution_160_120 = 50,
    TRTCVideoResolution_240_180 = 52,
    TRTCVideoResolution_280_210 = 54,
    TRTCVideoResolution_320_240 = 56,
    TRTCVideoResolution_400_300 = 58,
    TRTCVideoResolution_480_360 = 60,
    TRTCVideoResolution_640_480 = 62,
    TRTCVideoResolution_960_720 = 64,
    TRTCVideoResolution_160_90 = 100,
    TRTCVideoResolution_256_144 = 102,
    TRTCVideoResolution_320_180 = 104,
    TRTCVideoResolution_480_270 = 106,
    TRTCVideoResolution_640_360 = 108,
    TRTCVideoResolution_960_540 = 110,
    TRTCVideoResolution_1280_720 = 112,
    TRTCVideoResolution_1920_1080 = 114
}
declare enum TRTCVideoStreamType {
    TRTCVideoStreamTypeBig = 0,
    TRTCVideoStreamTypeSmall = 1,
    TRTCVideoStreamTypeSub = 2
}
declare enum TRTCVideoFillMode {
    TRTCVideoFillMode_Fill = 0,
    TRTCVideoFillMode_Fit = 1
}
declare enum TRTCVideoMirrorType {
    TRTCVideoMirrorType_Auto = 0,
    TRTCVideoMirrorType_Enable = 1,
    TRTCVideoMirrorType_Disable = 2
}
declare enum TRTCBeautyStyle {
    TRTCBeautyStyleSmooth = 0,
    TRTCBeautyStyleNature = 1
}
declare enum TRTCAppScene {
    TRTCAppSceneVideoCall = 0,
    TRTCAppSceneLIVE = 1,
    TRTCAppSceneAudioCall = 2,
    TRTCAppSceneVoiceChatRoom = 3
}
declare enum TRTCRoleType {
    TRTCRoleAnchor = 20,
    TRTCRoleAudience = 21
}
declare enum TRTCAudioQuality {
    TRTCAudioQualitySpeech = 1,
    TRTCAudioQualityDefault = 2,
    TRTCAudioQualityMusic = 3
}
/**
 * 设备信息<br>
 * @param {String} deviceId   - 设备PID，字符编码格式是UTF-8
 * @param {String} deviceName - 设备名称，字符编码格式是UTF-8
 * @param {String} kind   - 设备类型，['videoinput' | 'audioinput']
 * @param {String} deviceName - 设备名称，字符编码格式是UTF-8
 */
declare class TRTCDeviceInfo {
    deviceId: string;
    deviceName: string;
    kind?: string;
    label?: string;
    groupId?: string;
    constructor(deviceId?: string, deviceName?: string, kind?: string, label?: string, groupId?: string);
}
declare enum TRTCDeviceState {
    TRTCDeviceStateAdd = 0,
    TRTCDeviceStateRemove = 1,
    TRTCDeviceStateActive = 2
}
declare enum TRTCDeviceType {
    TRTCDeviceTypeUnknow = -1,
    TRTCDeviceTypeMic = 0,
    TRTCDeviceTypeSpeaker = 1,
    TRTCDeviceTypeCamera = 2
}
/**
 * 进房相关参数<br>
 * 只有该参数填写正确，才能顺利调用 enterRoom 进入 roomId 所指定的音视频房间。
 * @param {Number}       sdkAppId      - 【字段含义】应用标识（必填），腾讯视频云基于 sdkAppId 完成计费统计。<br>
 *                                       【推荐取值】在腾讯云 [TRTC 控制台](https://console.cloud.tencent.com/rav/) 中创建应用，之后可以在账号信息页面中得到该 ID。<br>
 * @param {String}       userId        - 【字段含义】用户标识（必填）。当前用户的 userId，相当于用户名，UTF-8编码。<br>
 *                                       【推荐取值】如果一个用户在您的账号系统中的 ID 为“abc”，则 userId 即可设置为“abc”。<br>
 * @param {String}       userSig       - 【字段含义】用户签名（必填），当前 userId 对应的验证签名，相当于登录密码。<br>
 *                                       【推荐取值】请参考 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。<br>
 * @param {Number}       roomId        - 【字段含义】房间号码（必填），指定房间号，在同一个房间里的用户（userId）可以彼此看到对方并进行视频通话, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId，则 roomId 需要填写为0。<br>
 *                                       【推荐取值】您可以随意指定，但请不要重复，如果您的用户账号 ID 是数字类型的，可以直接用创建者的用户 ID 作为 roomId。<br>
 * @param {String}       strRoomId     - 【字段含义】字符串房间号码（选填），roomId 和 strRoomId 必须填一个。若两者都填，则优先选择 roomId。<br>
 *                                       【推荐取值】您可以随意指定，但请不要重复。<br>
 * @param {TRTCRoleType} role          - 【字段含义】直播场景下的角色，仅适用于直播场景（TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom），视频通话场景下指定无效。<br>
 *                                       【推荐取值】默认值：主播（TRTCRoleAnchor）<br>
 * @param {String}       privateMapKey - 【字段含义】房间签名（非必填），如果您希望某个房间只能让特定的某些 userId 进入，就需要使用 privateMapKey 进行权限保护。<br>
 *                                       【推荐取值】仅建议有高级别安全需求的客户使用，参考文档：[进房权限保护](https://cloud.tencent.com/document/product/647/32240)<br>
 * @param {String}       businessInfo  - 【字段含义】业务数据（非必填），某些非常用的高级特性才需要用到此字段。<br>
 *                                       【推荐取值】不建议使用<br>
 * @param {String}       streamId      - 【字段含义】绑定腾讯云直播 CDN 流 ID[非必填]，设置之后，您就可以在腾讯云直播 CDN 上通过标准直播方案（FLV或HLS）播放该用户的音视频流。<br>
 *                                       【推荐取值】限制长度为64字节，可以不填写，一种推荐的方案是使用 “sdkappid_roomid_userid_main” 作为 streamid，这样比较好辨认且不会在您的多个应用中发生冲突。<br>
 *                                       【特殊说明】要使用腾讯云直播 CDN，您需要先在[控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页开启“启动自动旁路直播”开关。<br>
 *                                       【参考文档】[CDN 旁路直播](https://cloud.tencent.com/document/product/647/16826)。
 * @param {String}       userDefineRecordId - 【字段含义】设置云端录制完成后的回调消息中的 "userdefinerecordid"  字段内容，便于您更方便的识别录制回调。<br>
 *                                            【推荐取值】限制长度为64字节，只允许包含大小写英文字母（a-zA-Z）、数字（0-9）及下划线和连词符。<br>
 *                                            【参考文档】[云端录制](https://cloud.tencent.com/document/product/647/16823)。
 */
declare class TRTCParams {
    sdkAppId: number;
    userId: string;
    userSig: string;
    roomId: number;
    strRoomId: string;
    role: number;
    privateMapKey: null | string;
    streamId: null | string;
    userDefineRecordId: null | string;
    frameWorkType: number;
    constructor(sdkAppId?: number, userId?: string, userSig?: string, roomId?: number, strRoomId?: string, role?: TRTCRoleType, privateMapKey?: null | string, businessInfo?: null | string, streamId?: null | string, userDefineRecordId?: null | string, frameWorkType?: number);
}
/**
 * 视频编码参数<br>
 * 该设置决定了远端用户看到的画面质量（同时也是云端录制出的视频文件的画面质量）。
 * @param {TRTCVideoResolution}     videoResolution - 【字段含义】 视频分辨率<br>
 *                                                    【推荐取值】 <br>
 *                                                     - 视频通话建议选择360 × 640及以下分辨率，resMode 选择 Portrait。<br>
 *                                                     - 手机直播建议选择 540 × 960，resMode 选择 Portrait。<br>
 *                                                     - Window 和 iMac 建议选择 640 × 360 及以上分辨率，resMode 选择 Landscape。
 *                                                    【特别说明】 TRTCVideoResolution 默认只能横屏模式的分辨率，例如640 × 360。<br>
 *                                                                如需使用竖屏分辨率，请指定 resMode 为 Portrait，例如640 × 360结合 Portrait 则为360 × 640。<br>
 * @param {Number}                  videoFps        - 【字段含义】视频采集帧率<br>
 *                                                    【推荐取值】15fps 或 20fps，10fps 以下会有轻微卡顿感，5fps 以下卡顿感明显，20fps 以上的帧率则过于浪费（电影的帧率也只有 24fps）。<br>
 *                                                    【特别说明】很多 Android 手机的前置摄像头并不支持15fps以上的采集帧率，部分过于突出美颜功能的 Android 手机前置摄像头的采集帧率可能低于10fps。<br>
 * @param {Number}                  videoBitrate    - 【字段含义】视频上行码率<br>
 *                                                    【推荐取值】推荐设置请参考本文件前半部分 TRTCVideoResolution 定义处的注释说明<br>
 *                                                    【特别说明】码率太低会导致视频中有很多的马赛克<br>
 */
declare class TRTCVideoEncParam {
    videoResolution: TRTCVideoResolution;
    resMode: TRTCVideoResolutionMode;
    videoFps: number;
    videoBitrate: number;
    constructor(videoResolution?: TRTCVideoResolution, resMode?: TRTCVideoResolutionMode, videoFps?: number, videoBitrate?: number);
}
declare enum TRTCVideoRotation {
    TRTCVideoRotation0 = 0,
    TRTCVideoRotation90 = 1,
    TRTCVideoRotation180 = 2,
    TRTCVideoRotation270 = 3
}
/**
 * 画面渲染参数<br>
 * 您可以通过设置此参数来控制画面的旋转、填充、镜像模式
 * @param {TRTCVideoRotation} rotation  - 【字段含义】视频画面旋转方向
 * @param {TRTCVideoFillMode} fillMode  - 【字段含义】视频画面填充模式
 * @param {TRTCVideoMirrorType} mirrorType  - 【字段含义】画面渲染镜像类型
 */
declare class TRTCRenderParams {
    rotation: TRTCVideoRotation;
    fillMode: TRTCVideoFillMode;
    mirrorType: TRTCVideoMirrorType;
    constructor(rotation?: TRTCVideoRotation, fillMode?: TRTCVideoFillMode, mirrorType?: TRTCVideoMirrorType);
}
declare enum TRTCQuality {
    TRTCQuality_Unknown = 0,
    TRTCQuality_Excellent = 1,
    TRTCQuality_Good = 2,
    TRTCQuality_Poor = 3,
    TRTCQuality_Bad = 4,
    TRTCQuality_Vbad = 5,
    TRTCQuality_Down = 6
}
/**
 * 网络质量<br>
 * 表示视频质量的好坏，通过这个数值，您可以在 UI 界面上用图标表征 userId 的通话线路质量
 * @param {String}      userId  - 用户标识
 * @param {TRTCQuality} quality - 视频质量
 */
declare class TRTCQualityInfo {
    userId: string;
    quality: TRTCQuality;
    constructor(userId?: string, quality?: TRTCQuality);
}
/**
 * 音量大小<br>
 * 表示语音音量的评估大小，通过这个数值，您可以在 UI 界面上用图标表征 userId 是否有在说话。
 * @param {String} userId - 说话者的 userId，字符编码格式是 UTF-8
 * @param {Number} volume - 说话者的音量， 取值范围0 - 100
 */
declare class TRTCVolumeInfo {
    userId: string;
    volume: number;
    constructor(userId?: string, volume?: number);
}
/**
 * CDN 旁路推流参数<br>
 * @param {Number} appId - 腾讯云 AppID，请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {Number} bizId - 腾讯云直播 bizId，请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {String} url - 旁路转推的 URL
 */
declare class TRTCPublishCDNParam {
    appId: number;
    bizId: number;
    url: null | string;
    constructor(appId?: number, bizId?: number, url?: null | string);
}
/**
 * 本地的音视频统计信息<br>
 * @param {Number} width           - 视频宽度
 * @param {Number} height          - 视频高度
 * @param {Number} frameRate       - 帧率（fps）
 * @param {Number} videoBitrate    - 视频发送码率（Kbps）
 * @param {Number} audioSampleRate - 音频采样率（Hz）
 * @param {Number} audioBitrate    - 音频发送码率（Kbps）
 * @param {TRTCVideoStreamType} streamType - 流类型（大画面 | 小画面 | 辅路画面）
 */
declare class TRTCLocalStatistics {
    width: number;
    height: number;
    frameRate: number;
    videoBitrate: number;
    audioBitrate: number;
    streamType: TRTCVideoStreamType;
    constructor(width?: number, height?: number, frameRate?: number, videoBitrate?: number, audioSampleRate?: number, audioBitrate?: number, streamType?: TRTCVideoStreamType);
}
/**
 * 远端成员的音视频统计信息
 *
 * @param {String} userId          - 用户 ID，指定是哪个用户的视频流
 * @param {Number} finalLoss       - 该线路的总丢包率（％）
 *                                   这个值越小越好，比如：0%的丢包率代表网络很好。
 *                                   这个丢包率是该线路的 userId 从上行到服务器再到下行的总丢包率。
 *                                   如果 downLoss 为 0%, 但是 finalLoss 不为0%，说明该 userId 在上行就出现了无法恢复的丢包。
 * @param {Number} width           - 视频宽度
 * @param {Number} height          - 视频高度
 * @param {Number} frameRate       - 接收帧率（fps）
 * @param {Number} videoBitrate    - 视频码率（Kbps）
 * @param {Number} audioSampleRate - 音频采样率（Hz）
 * @param {Number} audioBitrate    - 音频码率（Kbps）
 * @param {Number} jitterBufferDelay    - 播放时延（ms）
 * @param {Number} audioTotalBlockTime    - 音频播放卡顿累计时长（ms）
 * @param {Number} audioBlockRate    - 音频播放卡顿率，音频卡顿累计时长占音频总播放时长的百分比 (%)
 * @param {Number} videoTotalBlockTime    - 视频播放卡顿累计时长（ms）
 * @param {Number} videoBlockRate    - 视频播放卡顿率，视频卡顿累计时长占音频总播放时长的百分比（%）
 * @param {TRTCVideoStreamType} streamType - 流类型（大画面 | 小画面 | 辅路画面）
 *
 */
declare class TRTCRemoteStatistics {
    userId: string;
    width: number;
    height: number;
    frameRate: number;
    videoBitrate: number;
    audioBitrate: number;
    streamType: TRTCVideoStreamType;
    constructor(userId?: string, finalLoss?: number, width?: number, height?: number, frameRate?: number, videoBitrate?: number, audioSampleRate?: number, audioBitrate?: number, jitterBufferDelay?: number, audioTotalBlockTime?: number, audioBlockRate?: number, videoTotalBlockTime?: number, videoBlockRate?: number, streamType?: TRTCVideoStreamType);
}
/**
 * 统计数据<br>
 * @param {Number} upLoss    - C -> S 上行丢包率（％），这个值越小越好，例如，0%的丢包率代表网络很好，
 *                             而 30% 的丢包率则意味着 SDK 向服务器发送的每10个数据包中就会有3个会在上行传输中丢失。
 * @param {Number} downLoss  - S -> C 下行丢包率（％），这个值越小越好，例如，0%的丢包率代表网络很好，
 *                             而 30% 的丢包率则意味着服务器向 SDK 发送的每10个数据包中就会有3个会在下行传输中丢失。
 * @param {Number} appCpu    - 当前 App 的 CPU 使用率（％）
 * @param {Number} systemCpu - 当前系统的 CPU 使用率（％）
 * @param {Number} rtt       - 延迟（毫秒），代表 SDK 跟服务器一来一回之间所消耗的时间，这个值越小越好。
 *                             一般低于50ms的 rtt 是比较理想的情况，而高于100ms的 rtt 会引入较大的通话延时。
 *                             由于数据上下行共享一条网络连接，所以 local 和 remote 的 rtt 相同。
 * @param {Number} receivedBytes - 总接收字节数（包含信令和音视频）
 * @param {Number} sentBytes     - 总发送字节总数（包含信令和音视频）
 * @param {TRTCLocalStatistics[]} localStatisticsArray - 自己本地的音视频统计信息，由于可能有大画面、小画面以及辅路画面等多路的情况，所以是一个数组
 * @param {Number} localStatisticsArraySize - 数组 localStatisticsArray 的大小
 * @param {TRTCRemoteStatistics[]} remoteStatisticsArray - 远端成员的音视频统计信息，由于可能有大画面、小画面以及辅路画面等多路的情况，所以是一个数组
 * @param {Number} remoteStatisticsArraySize - 数组 remoteStatisticsArray 的大小
 */
declare class TRTCStatistics {
    upLoss: number;
    downLoss: number;
    rtt: number;
    receivedBytes: number;
    sentBytes: number;
    localStatisticsArray: TRTCLocalStatistics[];
    localStatisticsArraySize: number;
    remoteStatisticsArray: TRTCRemoteStatistics[];
    remoteStatisticsArraySize: number;
    constructor(upLoss?: number, downLoss?: number, appCpu?: number, systemCpu?: number, rtt?: number, receivedBytes?: number, sentBytes?: number, localStatisticsArray?: TRTCLocalStatistics[], localStatisticsArraySize?: number, remoteStatisticsArray?: TRTCRemoteStatistics[], remoteStatisticsArraySize?: number);
}
declare enum TRTCVideoResolutionMode {
    TRTCVideoResolutionModeLandscape = 0,
    TRTCVideoResolutionModePortrait = 1
}
/**
 * 画质偏好<br>
 * 指当 TRTC SDK 在遇到弱网络环境时，您是希望“保清晰”还是“保流畅”：<br>
 * - Smooth：弱网下保流畅，在遭遇弱网环境时首先确保声音的流畅和优先发送，画面会变得模糊且会有较多马赛克，但可以保持流畅不卡顿。
 * - Clear：弱网下保清晰，在遭遇弱网环境时，画面会尽可能保持清晰，但可能会更容易出现卡顿。
 * @enum {Number}
 */
declare enum TRTCVideoQosPreference {
    TRTCVideoQosPreferenceSmooth = 1,
    TRTCVideoQosPreferenceClear = 2
}
/**
 * 流控模式<br>
 * TRTC SDK 内部需要时刻根据网络情况调整内部的编解码器和网络模块，以便能够对网络的变化做出反应。<br>
 * 为了支持快速算法升级，SDK 内部设置了两种不同的流控模式：
 * - ModeClient： 本地控制，用于 SDK 开发内部调试，客户请勿使用。
 * - ModeServer： 云端控制，推荐模式，也是默认默认。
 * > 推荐您使用云端控制，这样每当我们升级 Qos 算法时，您无需升级 SDK 即可体验更好的效果。
 * @enum {Number}
 */
declare enum TRTCQosControlMode {
    TRTCQosControlModeClient = 0,
    TRTCQosControlModeServer = 1
}
/**
 * 网络流控相关参数<br>
 * 网络流控相关参数，该设置决定了SDK在各种网络环境下的调控方向（比如弱网下是“保清晰”还是“保流畅”）
 * @param {TRTCVideoQosPreference} preference  - 【字段含义】弱网下是“保清晰”还是“保流畅”<br>
 *                                               【特别说明】<br>
 *                                                - 弱网下保流畅：在遭遇弱网环境时，画面会变得模糊，且会有较多马赛克，但可以保持流畅不卡顿
 *                                                - 弱网下保清晰：在遭遇弱网环境时，画面会尽可能保持清晰，但可能会更容易出现卡顿
 * @param {TRTCQosControlMode}     controlMode - 【字段含义】流控模式（云端控制 - 客户端控制）<br>
 *                                               【推荐取值】云端控制<br>
 *                                               【特别说明】<br>
 *                                                - Client 模式：客户端控制模式，用于 SDK 开发内部调试，客户请勿使用
 *                                                - Server 模式（默认）：云端控制模式，若没有特殊原因，请直接使用该模式
 *
 */
declare class TRTCNetworkQosParam {
    preference: TRTCVideoQosPreference;
    controlMode: TRTCQosControlMode;
    constructor(preference?: TRTCVideoQosPreference, controlMode?: TRTCQosControlMode);
}
/**
* 图缓存<br>
* @param {ArrayBuffer} buffer - 图内容
* @param {Number}      length - 图缓存大小
* @param {Number}      width  - 图宽
* @param {Number}      heigth - 图高
*/
declare class TRTCImageBuffer {
    buffer: ArrayBuffer;
    length: number;
    width: number;
    height: number;
    constructor(buffer?: ArrayBuffer, length?: number, width?: number, height?: number);
}
declare enum TRTCLogLevel {
    TRTCLogLevelVerbose = 0,
    TRTCLogLevelDebug = 1,
    TRTCLogLevelInfo = 2,
    TRTCLogLevelWarn = 3,
    TRTCLogLevelError = 4,
    TRTCLogLevelFatal = 5,
    TRTCLogLevelNone = 6
}
/**
 * 屏幕分享目标信息<br>
 * @enum {Number}
 */
declare enum TRTCScreenCaptureSourceType {
    TRTCScreenCaptureSourceTypeUnknown = -1,
    TRTCScreenCaptureSourceTypeWindow = 0,
    TRTCScreenCaptureSourceTypeScreen = 1,
    TRTCScreenCaptureSourceTypeCustom = 2
}
/**
* 屏幕采集源信息<br>
* @param {TRTCScreenCaptureSourceType} type       - 采集源类型
* @param {String}                      sourceId   - 采集源ID；对于窗口，该字段指示窗口句柄；对于屏幕，该字段指示屏幕ID
* @param {String}                      sourceName - 采集源名称，UTF8编码
* @param {TRTCImageBuffer}             thumbBGRA  - 缩略图内容
* @param {TRTCImageBuffer}             iconBGRA   - 图标内容
* @param {Boolean}                     isMinimizeWindow - 是否最小化窗口
*/
declare class TRTCScreenCaptureSourceInfo {
    type: number;
    sourceId: string;
    sourceName: string;
    thumbBGRA: TRTCImageBuffer;
    iconBGRA: TRTCImageBuffer;
    isMinimizeWindow: boolean;
    constructor(type?: TRTCScreenCaptureSourceType, sourceId?: string, sourceName?: string, thumbBGRA?: TRTCImageBuffer, iconBGRA?: TRTCImageBuffer, isMinimizeWindow?: boolean);
}
/**
 * 记录矩形的四个点坐标<br>
 * @param {Number} left   - 左坐标
 * @param {Number} top    - 上坐标
 * @param {Number} right  - 右坐标
 * @param {Number} bottom - 下坐标
 */
declare class Rect {
    left: number;
    top: number;
    right: number;
    bottom: number;
    constructor(left?: number, top?: number, right?: number, bottom?: number);
}
/**
 * 5.13 云端混流（转码）配置
 *
 * 包括最终编码质量和各路画面的摆放位置
 *
 * @param {TRTCTranscodingConfigMode} mode - 【字段含义】转码 config 模式
 * @param {Number} appId - 【字段含义】腾讯云直播 AppID<br>
 *                         【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {Number} bizId - 【字段含义】腾讯云直播 bizid<br>
 *                         【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {Number} videoWidth   - 【字段含义】最终转码后的视频分辨率的宽度。<br>
 *                                【推荐取值】推荐值：360px ，如果你是纯音频推流，请将 width × height 设为 0px × 0px，否则混流后会携带一条画布背景的视频流。
 * @param {Number} videoHeight  - 【字段含义】最终转码后的视频分辨率的高度。<br>
 *                                【推荐取值】推荐值：640px ，如果你是纯音频推流，请将 width × height 设为 0px × 0px，否则混流后会携带一条画布背景的视频流。
 * @param {Number} videoBitrate - 【字段含义】最终转码后的视频分辨率的码率（kbps）<br>
 *                                【推荐取值】如果填0，后台会根据videoWidth和videoHeight来估算码率，您也可以参考枚举定义TRTCVideoResolution_640_480的注释。
 * @param {Number} videoFramerate  - 【字段含义】最终转码后的视频分辨率的帧率（FPS）<br>
 *                                   【推荐取值】默认值：15fps，取值范围是 (0,30]。
 * @param {Number} videoGOP        - 【字段含义】最终转码后的视频分辨率的关键帧间隔（又称为 GOP）。<br>
 *                                   【推荐取值】默认值：2，单位为秒，取值范围是 [1,8]。
 * @param {Number} backgroundColor - 【字段含义】混合后画面的底色颜色，默认为黑色，格式为十六进制数字，比如：“0x61B9F1” 代表 RGB 分别为(97,158,241)。<br>
 *                                   【推荐取值】默认值：0x000000，黑色
 * @param {String} backgroundImage - 【字段含义】混合后画面的背景图。<br>
 *                                   【推荐取值】默认值：''，即不设置背景图<br>
 *                                   【特别说明】背景图需要您事先在 “[控制台](https://console.cloud.tencent.com/trtc) => 应用管理 => 功能配置 => 素材管理” 中上传，<br>
 *                                    上传成功后可以获得对应的“图片ID”，然后将“图片ID”转换成字符串类型并设置到 backgroundImage 里即可。<br>
 *                                    例如：假设“图片ID” 为 63，可以设置 backgroundImage = @"63";
 * @param {Number} audioSampleRate - 【字段含义】最终转码后的音频采样率。<br>
 *                                   【推荐取值】默认值：48000Hz。支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ。
 * @param {Number} audioBitrate    - 【字段含义】最终转码后的音频码率。<br>
 *                                   【推荐取值】默认值：64kbps，取值范围是 [32，192]。
 * @param {Number} audioChannels   - 【字段含义】最终转码后的音频声道数<br>
 *                                   【推荐取值】默认值：1。取值范围为 [1,2] 中的整型。
 * @param {TRTCMixUser[]} mixUsersArray - 【字段含义】每一路子画面的位置信息
 * @param {String} streamId        - 【字段含义】输出到 CDN 上的直播流 ID。<br>
 *                                    如不设置该参数，SDK 会执行默认逻辑，即房间里的多路流会混合到该接口调用者的视频流上，也就是 A+B =>A；<br>
 *                                    如果设置该参数，SDK 会将房间里的多路流混合到您指定的直播流 ID 上，也就是 A+B =>C。<br>
 *                                   【推荐取值】默认值：''，即房间里的多路流会混合到该接口调用者的视频流上。
 */
declare class TRTCTranscodingConfig {
    mode: TRTCTranscodingConfigMode;
    appId: number;
    bizId: number;
    videoWidth: number;
    videoHeight: number;
    videoBitrate: number;
    videoFramerate: number;
    videoGOP: number;
    backgroundColor: number;
    backgroundImage: string;
    audioSampleRate: number;
    audioBitrate: number;
    audioChannels: number;
    mixUsersArray: TRTCMixUser[];
    mixUsersArraySize: number;
    streamId: string;
    constructor(mode?: TRTCTranscodingConfigMode, appId?: number, bizId?: number, videoWidth?: number, videoHeight?: number, videoBitrate?: number, videoFramerate?: number, videoGOP?: number, backgroundColor?: number, backgroundImage?: string, audioSampleRate?: number, audioBitrate?: number, audioChannels?: number, mixUsersArray?: never[], streamId?: string);
}
declare enum TRTCTranscodingConfigMode {
    TRTCTranscodingConfigMode_Unknown = 0,
    TRTCTranscodingConfigMode_Manual = 1,
    TRTCTranscodingConfigMode_Template_PureAudio = 2,
    TRTCTranscodingConfigMode_Template_PresetLayout = 3,
    TRTCTranscodingConfigMode_Template_ScreenSharing = 4,
    TRTC_TranscodingConfigMode_Unknown = 5,
    TRTC_TranscodingConfigMode_Manual = 6,
    TRTC_TranscodingConfigMode_Template_PureAudio = 7,
    TRTC_TranscodingConfigMode_Template_PresetLayout = 8,
    TRTC_TranscodingConfigMode_Template_ScreenSharing = 9
}
/**
 * 5.9 云端混流中每一路子画面的位置信息
 *
 * TRTCMixUser 用于指定每一路（即每一个 userId）视频画面的具体摆放位置
 *
 * @param {String}              userId      - 参与混流的 userId
 * @param {String}              roomId      - 参与混流的 roomId，跨房流传入的实际 roomId，当前房间流传入 roomId = ''
 * @param {Rect}                rect        - 图层位置坐标以及大小，左上角为坐标原点(0,0) （绝对像素值）
 * @param {Number}              rect.left   - 图层位置的左坐标
 * @param {Number}              rect.top    - 图层位置的上坐标
 * @param {Number}              rect.right  - 图层位置的右坐标
 * @param {Number}              rect.bottom - 图层位置的下坐标
 * @param {Number}              zOrder      - 图层层次（1 - 15）不可重复
 * @param {Boolean}             pureAudio   - 是否纯音频
 * @param {TRTCVideoStreamType} streamType  - 参与混合的是主路画面（TRTCVideoStreamTypeBig）或屏幕分享（TRTCVideoStreamTypeSub）画面
 * @param {TRTCMixInputType}    inputType   - 指定该路流的混合内容（只混合音频、只混合视频、混合音频和视频），该字段是对 pureAudio 字段的升级。
 *                                            默认值：TRTCMixInputTypeUndefined，代表参考 pureAudio 的取值。
 *                                            如果您是第一次使用 TRTC，之前并没有对 pureAudio 字段进行过设置，您可以根据实际需要设置该字段，不建议您再设置 pureAudio。
 *                                            如果您之前在老版本中已经使用了 pureAudio 字段，并期望保持其设置，则可以将 inputType 设置为 TRTCMixInputTypeUndefined。
 * @param {Number}              renderMode  - 该画面在输出时的显示模式。默认值：视频流默认为0。0为裁剪，1为缩放，2为缩放并显示黑底。
 *
 */
declare class TRTCMixUser {
    userId: string;
    roomId: string;
    rect: null | Rect;
    zOrder: number;
    pureAudio: boolean;
    streamType: TRTCVideoStreamType;
    inputType: TRTCMixInputType;
    renderMode: Number;
    constructor(userId?: string, roomId?: string, rect?: null | Rect, zOrder?: number, pureAudio?: boolean, streamType?: TRTCVideoStreamType, inputType?: TRTCMixInputType, renderMode?: number);
}
declare enum TRTCMixInputType {
    TRTCMixInputTypeUndefined = 0,
    TRTCMixInputTypeAudioVideo = 1,
    TRTCMixInputTypePureVideo = 2,
    TRTCMixInputTypePureAudio = 3
}
declare enum TRTCCameraCaptureMode {
    TRTCCameraResolutionStrategyAuto = 0,
    TRTCCameraResolutionStrategyPerformance = 1,
    TRTCCameraResolutionStrategyHighQuality = 2,
    TRTCCameraCaptureManual = 3
}
/**
 * 屏幕分享的进阶控制参数
 *
 * 该参数用于屏幕分享相关的接口 [selectScreenCaptureTarget]{@link TRTCCloud#selectScreenCaptureTarget}，用于在指定分享目标时设定一系列进阶控制参数。
 * 比如：是否采集鼠标、是否要采集子窗口、是否要在被分享目标周围绘制一个边框等。
 *
 * 注意：设置高亮边框颜色参数在 Mac 平台不支持。
 *
 * @param {Boolean} enableCaptureMouse    - 是否采集目标内容的同时采集鼠标，默认为 true
 * @param {Boolean} enableHighLight       - 是否高亮正在共享的窗口（在被分享目标周围绘制一个边框），默认为 true。
 * @param {Boolean} enableHighPerformance - 是否开启高性能模式（只会在分享屏幕时会生效），默认为 true。【特殊说明】开启后屏幕采集性能最佳，但会丧失抗遮挡能力，如果您同时开启 enableHighLight + enableHighPerformance，远端用户可以看到高亮的边框。
 * @param {Number} highLightColor         - 指定高亮边框的颜色，RGB 格式，传入 0 时代表采用默认颜色，默认颜色为 0xFFE640。
 * @param {Number} highLightWidth         - 指定高亮边框的宽度，传入0时采用默认描边宽度，默认宽度为 5 像素，您可以设置的最大值为 50。
 * @param {Boolean} enableCaptureChildWindow  - 窗口采集时是否采集子窗口（需要子窗口与被采集窗口具有 Owner 或 Popup 属性），默认为 false。
 */
declare class TRTCScreenCaptureProperty {
    enableCaptureMouse: boolean;
    enableHighLight: boolean;
    enableHighPerformance: boolean;
    highLightColor: number;
    highLightWidth: number;
    enableCaptureChildWindow: boolean;
    constructor(enableCaptureMouse?: boolean, enableHighLight?: boolean, enableHighPerformance?: boolean, highLightColor?: number, highLightWidth?: number, enableCaptureChildWindow?: boolean);
}
/**
 * @since 'microphone' 取值自 v5.15.0-beta.27 开始支持
 * 音频静音类型<br>
 * 表示音频的静音状态，支持三种取值：
 * - false: 不静音
 * - true: 静音整个音频流
 * - 'microphone': 只静音麦克风音频，不影响音频的上行
 * @type {boolean | 'microphone'}
 */
declare type AudioMuteType = boolean | 'microphone';
declare const AudioMuteType: any;
declare type TRTCCameraCaptureParams = {
    /** 摄像头采集偏好 */
    mode: TRTCCameraCaptureMode;
    /** 采集图像宽度 */
    width: number;
    /** 采集图像高度 */
    height: number;
};
declare const TRTCCameraCaptureParams: any;

interface ITRTCCloudConfig {
    frameWorkType?: number;
    component?: number;
    language?: number;
    isRegisterVirtualPlugin?: boolean;
}
interface TurnServerOptions {
    url: string;
    username?: string;
    credential?: string;
    credentialType?: string;
}
interface ProxyServer {
    websocketProxy?: string;
    loggerProxy?: string;
    turnServer?: TurnServerOptions | TurnServerOptions[];
    iceTransportPolicy?: 'all' | 'relay';
    webtransportProxy?: string;
}
interface IVirtualBackgroundParams {
    sdkAppId: number;
    userId: string;
    userSig: string;
    enable?: boolean;
    type?: string;
    blurLevel?: number;
    imagePath?: string;
}

declare enum TRTCMediaMixingErrorCode {
    Success = 0,
    Error = -1,
    InvalidParams = -2,
    NotFoundSource = -3,
    ImageSourceLoadFailed = -4,
    CameraNotAuthorized = -5,
    CameraIsOccupied = -6,
    CameraDisconnected = -7
}
declare enum TRTCMediaSourceType {
    kCamera = 0,
    kScreen = 1,
    kImage = 2,
    kPhoneMirror = 4,
    kText = 5,
    kVideo = 6
}
declare type LayoutOption = {
    rect: Rect;
    zOrder: number;
    fillMode?: TRTCVideoFillMode;
    mirror?: TRTCVideoMirrorType;
    rotation?: TRTCVideoRotation;
};
/**
 * @namespace TRTCMediaMixingEvent
 * @description 目前只支持 `Windows` 操作系统
 */
declare enum TRTCMediaMixingEvent {
    /**
     * @description 媒体源选中事件
     *
     * @event TRTCMediaMixingEvent#onSourceSelected
     * @param {TRTCMediaInfo | null} mediaSource 新选中的媒体源数据，取消选中则为`null`
     */
    onSourceSelected = "onSourceSelected",
    /**
     * @description 媒体源移动事件
     *
     * @event TRTCMediaMixingEvent#onSourceMoved
     * @param {TRTCMediaInfo} mediaSource 被移动的媒体源
     * @param {Rect} rect 移动后的位置、区域数据
     */
    onSourceMoved = "onSourceMoved",
    /**
     * @description 媒体源尺寸变化事件
     *
     * @event TRTCMediaMixingEvent#onSourceResized
     * @param {TRTCMediaInfo} mediaSource 尺寸变化的媒体源
     * @param {Rect} rect 尺寸变化后的位置、区域数据
     */
    onSourceResized = "onSourceResized",
    /**
     * @description 媒体源鼠标右键事件
     *
     * @event TRTCMediaMixingEvent#onRightButtonClicked
     * @param {TRTCMediaInfo} mediaSource 鼠标右键点击的媒体源
     */
    onRightButtonClicked = "onRightButtonClicked",
    /**
     * @description 错误事件
     *
     * @event TRTCMediaMixingEvent#onError
     * @param {TRTCMediaMixingErrorCode} errCode 错误码
     * @param {String} 错误信息
     *
     */
    onError = "onError",
    /**
     * @description 设备插入事件
     *
     * @event TRTCMediaMixingEvent#onSourcePlugged
     * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息
     * @param {String} detail 投屏手机状态变化详情
     */
    onSourcePlugged = "onSourcePlugged",
    /**
     * @description 设备链接事件
     *
     * @event TRTCMediaMixingEvent#onSourceConnected
     * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息
     * @param {String} detail 投屏手机状态变化详情
     */
    onSourceConnected = "onSourceConnected",
    /**
     * @description 设备断开链接事件
     *
     * @event TRTCMediaMixingEvent#onSourceDisconnected
     * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息
     * @param {String} detail 投屏手机状态变化详情
     */
    onSourceDisconnected = "onSourceDisconnected",
    /**
     * @description 设备拔出事件
     *
     * @event TRTCMediaMixingEvent#onSourceUnplugged
     * @param {TRTCPhoneMirrorParam} source 投屏手机状态信息
     * @param {String} detail 投屏手机状态变化详情
     */
    onSourceUnplugged = "onSourceUnplugged",
    /**
     * @description 媒体源画面大小发生变化
     *
     * 当输入媒体源的画面大小发生变化时，会通过该接口返回该输入源最新的尺寸，您可以根据该尺寸来动态调整画面的比例。
     * @event TRTCMediaMixingEvent#onMediaSourceSizeChanged
     * @param {TRTCMediaSource} mediasource 媒体源信息
     * @param {Object} size 媒体源最新的画面大小
     * @param {Number} size.width 媒体源最新宽度
     * @param {Number} size.height 媒体源最新高度
     */
    onMediaSourceSizeChanged = "onMediaSourceSizeChanged"
}
declare type TRTCMediaMixingEncParam = {
    videoEncoderParams: TRTCVideoEncParam;
    canvasColor: number;
    selectedBorderColor?: number | 0xFFFF00;
};
declare const TRTCMediaMixingEncParam: any;
declare type TRTCMediaSource = {
    id: string;
    type: TRTCMediaSourceType;
    camera?: {
        cameraId: string;
        resolution: TRTCVideoResolution | {
            width: number;
            height: number;
        };
        fps: number;
        videoTrack?: MediaStreamTrack;
    };
    screen?: {
        resolution: TRTCVideoResolution | {
            width: number;
            height: number;
        };
        systemAudio?: boolean;
        fps: number;
    };
    text?: {
        content: string;
        font?: string;
        color?: string;
    };
    image?: {
        url: string;
    };
    video?: {
        url: string;
    };
    useInternalTrack?: boolean;
    layout: LayoutOption;
    isSelected: boolean;
    /** 交互配置 */
    interaction?: InteractionOption;
};
declare const TRTCMediaSource: any;
declare type InteractionOption = {
    /** 是否支持拖拽，默认 true */
    draggable?: boolean;
    /** 是否展示选中边框，默认 true */
    showBorder?: boolean;
    /** 是否展示缩放锚点，默认 true */
    showResizeAnchors?: boolean;
    /** 是否可以拖出画布，默认 true */
    canExceedCanvas?: boolean;
    /** 是否支持选中，默认 true */
    selectable?: boolean;
};
declare const InteractionOption: any;
interface ITRTCMediaMixingManager {
    addMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    removeMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    updateMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    startPublish(): Promise<void>;
    stopPublish(): Promise<void>;
    updatePublishParams(params: TRTCMediaMixingEncParam): Promise<void>;
    bindPreviewArea(view: HTMLElement | null): void;
    destroy(): void;
    on(event: string, func: (...args: any[]) => void): void;
    off(event: string, func: (...args: any[]) => void): void;
}
declare const ITRTCMediaMixingManager: any;
interface ITRTCMediaMixingEvent {
    onSourceSelected(mediaSource: TRTCMediaSource | null): void;
    onSourceMoved(mediaSource: TRTCMediaSource, rect: Rect): void;
    onSourceResized(mediaSource: TRTCMediaSource, rect: Rect): void;
    onRightButtonClicked(mediaSource: TRTCMediaSource | null): void;
    onSourcePlugged(source: TRTCMediaSource, detail: string): void;
    onSourceConnected(source: TRTCMediaSource, detail: string): void;
    onSourceDisconnected(source: TRTCMediaSource, detail: string): void;
    onSourceUnplugged(source: TRTCMediaSource, detail: string): void;
}
declare const ITRTCMediaMixingEvent: any;

/**
 * 本地混流管理器
 */
declare class TRTCMediaMixingManager implements ITRTCMediaMixingManager {
    static mediaMixingManager: TRTCMediaMixingManager | null;
    private logPrefix;
    private eventEmitter;
    private publishParams;
    private mediaMixingDesigner;
    private sourceList;
    private trtcSourceMap;
    private mixVideoTrack;
    private selectedSource;
    private logger;
    private trtc;
    private trtcCloud;
    private view;
    /**
     * 记录开启了系统音频采集的屏幕分享 ID 集合
     * 用于判断是否需要启动/停止系统音频混音
     *
     * 系统音频采集逻辑：
     * - 系统音频是全局的，多个屏幕分享共享同一个系统音频采集
     * - 虽然音源相同，但每个屏幕分享的 systemAudioTrack 是不同的实例
     * - 只要有任意一个屏幕分享开启了系统音频，就保持 AudioMixer 运行
     * - 只有当所有屏幕分享都没有开启系统音频时，才停止 AudioMixer
     */
    private screensWithSystemAudio;
    constructor(options: {
        logger: any;
        trtc: any;
        trtcCloud: any;
    });
    destroy(): Promise<void>;
    /**
     * 设置混流视频预览参数
     * @param view {HTMLElement | null} - 本地混流视频显示位置
     * 传入 HTMLElement 元素，则 SDK 将本地混流视频显示在 HTMLElement 元素内，同时支持点击选中、移动、缩放媒体源，支持触发右键菜单事件。HTMLElement 元素必须是块元素。
     *  - 传入 Rect 显示区域，则 SDK 将本地混流视频显示在 Rect 指定区域内，不支持点击选中、移动、缩放媒体源，不支持触发右键菜单事件，这些功能您可以在 Web 页面中自行实现。
     *  - 传入 null 则 SDK 将停止显示本地混流视频。
     *
     * @example
     * // Display in HTML Element
     * import TRTCCloud from 'trtc-cloud-js-sdk';
     *
     * const trtcCloud = TRTCCloud.getTRTCShareInstance();
     * const mediaMixingManager = trtcCloud.getMediaMixingManager();
     *
     * const previewDOM = document.getElementById("preview-local-mixed-media-stream");
     * mediaMixingManager.bindPreviewArea( previewDOM);
     */
    bindPreviewArea(view: HTMLElement | null): Promise<void>;
    private _getTRTCSourceKey;
    private _getTRTCFillMode;
    private _getTRTCVideoProfile;
    private _getTRTCLayout;
    private _getTRTCSourceItem;
    private _getCanvasSize;
    /**
     * 添加媒体源
     * @param mediaSource {TRTCMediaSource} - 媒体源信息
     * @returns {Promise<Rect>}
     */
    addMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    /**
     * 删除媒体源
     * @param mediaSource {TRTCMediaSource} - 媒体源信息
     * @returns {Promise<void>}
     */
    removeMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    private _getDesignerMediaRect;
    private _getPluginMediaRect;
    /**
     * 更新媒体源
     * @param mediaSource {TRTCMediaSource} - 媒体源信息
     * @returns {Promise<void>}
     */
    updateMediaSource(mediaSource: TRTCMediaSource): Promise<void>;
    /**
     * 开始推流
     * @returns {Promise<void>}
     */
    startPublish(): Promise<void>;
    /**
     * 停止推流
     * @returns {Promise<void>}
     */
    stopPublish(): Promise<void>;
    /**
     * 更新本地混流编码参数
     * @param params {TRTCMediaMixingEncParam} - 推流视频编码参数、背景色等参数
     * @returns {Promise<void>}
     */
    updatePublishParams(params: TRTCMediaMixingEncParam): Promise<void>;
    /**
     * 注册事件监听
     *
     * @param event {TRTCMediaMixingEvent} - 事件名称
     * @param func {Function} - 事件回调函数
     */
    on(event: TRTCMediaMixingEvent, func: (...args: any[]) => void): void;
    /**
     * 取消事件监听
     *
     * @param event {TRTCMediaMixingEvent} - 事件名
     * @param func {Function} - 事件回调函数
     */
    off(event: TRTCMediaMixingEvent, func: (...args: any[]) => void): void;
    private onVisibilityChange;
    private createDesigner;
    private destroyDesigner;
    private listenDesignerEvent;
    private unlistenDesignerEvent;
    private onError;
    private onSourceSelected;
    private onSourceMoved;
    private onSourceResized;
    private onRightButtonClicked;
    private isSameMediaSource;
    private isMediaSourceExisted;
    private findMediaSourceIndex;
    private unselectMediaSource;
}

/**
 * 转录参数
 */
interface TranscriberParams {
    /** 自定义转录机器人 ID，不传则自动生成 */
    transcriberRobotId?: string;
    /** 源语言代码，如 'zh'、'en'、'ja' 等 */
    sourceLanguage: string;
    /** 要转录的用户 ID，默认为 'all' 转录所有用户，也可指定单个或多个用户 ID */
    userIdsToTranscribe?: string | string[];
    /** 翻译目标语言，支持单个语言或语言数组，如 'en' 或 ['en', 'ja'] */
    translationLanguages?: string | string[];
}
declare const TranscriberParams: any;
/**
 * 转录消息
 */
interface TranscriberMessage {
    /** 语音片段 ID，用于标识一段连续的语音 */
    segmentId: string;
    /** 说话人的用户 ID */
    speakerUserId: string;
    /** 转录的原文文本 */
    sourceText: string;
    /** 翻译文本，键为语言代码，值为翻译结果，如 { 'en': 'hello', 'ja': 'こんにちは' } */
    translationTexts?: Map<String, String>;
    /** 时间戳 */
    timestamp: number;
    /** 该语音片段是否已完成。false 表示中间结果（实时更新），true 表示最终结果 */
    isCompleted: boolean;
}
declare const TranscriberMessage: any;
/**
 * AI 转录监听器接口
 */
interface AITranscriberListener {
    /**
     * 转录任务已启动
     * @param roomId 房间 ID
     * @param transcriberRobotId 转录机器人 ID
     */
    onRealtimeTranscriberStarted(roomId: string | number, transcriberRobotId: string, sourceLanguage: string): void;
    /**
     * 接收到转录消息
     * @param roomId 房间 ID
     * @param message 转录消息
     */
    onReceiveTranscriberMessage(roomId: string | number, message: TranscriberMessage): void;
    /**
     * 转录任务已停止
     * @param roomId 房间 ID
     * @param transcriberRobotId 转录机器人 ID
     * @param reason 停止原因
     */
    onRealtimeTranscriberStopped(roomId: string | number, transcriberRobotId: string, reason: number): void;
    /**
     * 转录任务错误
     * @param roomId 房间 ID
     * @param transcriberRobotId 转录机器人 ID
     * @param error 错误码
     * @param errorInfo 错误信息
     */
    onRealtimeTranscriberError(roomId: string | number, transcriberRobotId: string, error: number, errorInfo: string): void;
}
declare const AITranscriberListener: any;
/**
 * AI 转录管理器接口
 */
interface IAITranscriberManager {
    /**
     * 启动实时转录任务
     * @param params 转录参数
     * @returns 转录机器人 ID
     */
    startRealtimeTranscriber(params: TranscriberParams): Promise<string>;
    /**
     * 停止实时转录任务
     * @param transcriberRobotId 转录机器人 ID
     */
    stopRealtimeTranscriber(transcriberRobotId: string): Promise<void>;
    /**
     * 暂停接收消息
     */
    pauseReceivingMessage(): void;
    /**
     * 恢复接收消息
     */
    resumeReceivingMessage(): void;
    /**
     * 添加监听器
     * @param listener 监听器
     */
    addListener(listener: AITranscriberListener): void;
    /**
     * 移除监听器
     * @param listener 监听器
     */
    removeListener(listener: AITranscriberListener): void;
}
declare const IAITranscriberManager: any;

declare type Logger = {
    log?: (...args: unknown[]) => void;
    error?: (...args: unknown[]) => void;
};
declare class AITranscriberManager implements IAITranscriberManager {
    private readonly logPrefix;
    private readonly logger?;
    private readonly trtc;
    private readonly listeners;
    private isPaused;
    private isMessageListenerRegistered;
    constructor(options: {
        logger?: Logger;
        trtc: any;
    });
    private registerStateListener;
    private readonly handleMessageEvent;
    private readonly handleStateEvent;
    private createMessageFromEvent;
    private updateMessageSubscription;
    private log;
    private logError;
    private _notifyListeners;
    startRealtimeTranscriber(params: TranscriberParams): Promise<string>;
    stopRealtimeTranscriber(transcriberRobotId: string): Promise<void>;
    pauseReceivingMessage(): void;
    resumeReceivingMessage(): void;
    addListener(listener: AITranscriberListener): void;
    removeListener(listener: AITranscriberListener): void;
    destroy(): void;
}

declare class TRTC_Cloud extends EventEmitter {
    static shareInstance: TRTC_Cloud | null;
    static subCloudMap: Map<TRTC_Cloud, TRTC_Cloud>;
    static enableSEI: boolean;
    static assetsPath: string;
    private _latencyLevel;
    private _version;
    _frameWorkType: number;
    _component: number;
    _language: number;
    _networkProxy: ProxyServer;
    private _log;
    private logger;
    _trtc: any;
    private _testTrtc;
    private _localView;
    private _autoRecvAudio;
    private _autoRecvVideo;
    private _localTestView;
    private _isVideoPublish;
    private _localRenderParams;
    private _encoderMirror;
    private _videoProfile;
    private _isAudioPublish;
    private _audioMuteType;
    private _audioProfile;
    private _captureVolume;
    private _playoutVolume;
    private _isSharingScreen;
    private _remoteStreamConfig;
    private _remoteStreamMap;
    private _cameraList;
    private _microphoneList;
    private _speakerList;
    private _currentCamera;
    private _currentMicrophone;
    private _currentSpeaker;
    private _currentCameraId;
    private _currentMicrophoneId;
    private _currentSpeakerId;
    private _screenShareParams;
    private _isMobile;
    private _isFrontCamera;
    private _cameraVideoTrack;
    private _smallStreamVideoProfile;
    private _qosPreference;
    private _defaultVideoProfile;
    private _defaultScreenProfile;
    private _defaultSmallVideoProfile;
    private _echoCancellation;
    private _noiseSuppression;
    private _autoGainControl;
    private _isVirtualBackground;
    private _isTestVirtualBackground;
    private _isBeautyEnabled;
    private _isTestBeautyEnabled;
    private _enableAutoPlayDialog;
    private _remoteStatisticsUserIdList;
    private _hasJoinedRoom;
    private _isExitingRoom;
    constructor(config?: ITRTCCloudConfig);
    static getPlugin(pluginName: string): typeof VirtualBackground | typeof BasicBeauty | typeof VideoMixer | null;
    /**
     * 创建 TRTCCloud 对象单例
     * @param {ITRTCCloudConfig} config 构造函数初始化
     * @memberof TRTCCloud
     * @returns {TRTC_Cloud}
     * @example
     * import TRTCCloud from 'trtc-cloud-js-sdk';
     * const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建 TRTCCloud 对象单例
     */
    static getTRTCShareInstance(config: ITRTCCloudConfig): TRTC_Cloud;
    /**
     * 设置 Log 输出级别
     * @param {TRTCLogLevel} level 日志输出等级，默认值为 TRTCLogLevel.TRTCLogLevelNone。备注：Web 端不支持 TRTCLogLevel.TRTCLogLevelFatal
     * @param {Boolean} enableUploadLog 是否开启日志上传，默认开启。不建议关闭，关闭后将影响问题排障。（仅 Web 端支持）
     */
    static setLogLevel(level: TRTCLogLevel, enableUploadLog: boolean): void;
    /**
     * 释放 TRTCCloud 对象并清理资源
     * @memberof TRTCCloud
     * @example
     * import TRTCCloud from 'trtc-cloud-js-sdk';
     * TRTCCloud.destroyTRTCShareInstance(); // 释放 TRTCCloud 对象并清理资源
     */
    static destroyTRTCShareInstance(): void;
    /**
     * 调用静态实验性 API 接口 - 该接口在 uikit 层使用时得在 roomEngine 实例化之前调用
     *
     * @param {String} jsonStr - 接口及参数描述的 JSON 字符串
     */
    static callExperimentalAPI(jsonStr: string): void;
    /**
     * 创建子实例
     * @returns { null | TRTC_Cloud } 返回子实例
     * 注意：只有主实例才能创建子实例，子实例不能创建子实例
     */
    createSubCloud(): null | TRTC_Cloud;
    /**
     * 销毁当前实例，释放资源
     * 如果当前实例为主实例，则同时销毁所有子实例
     * @returns {void}
     */
    destroy(): void;
    private _destroy;
    /**
     * 获取 SDK 版本信息
     * @memberof TRTCCloud
     * @returns {String}
     */
    getSDKVersion(): string;
    /**
     * 进房<br>
     * 调用接口后，您会收到来自 [TRTCCallback](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html) 中的 [onEnterRoom](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onEnterRoom) 回调
     * - 如果加入成功，result 会是一个正数（result > 0），表示加入房间所消耗的时间，单位是毫秒（ms）
     * - 如果加入失败，result 会是一个负数（result < 0），表示进房失败的错误码
     *
     * 参数 scene 的枚举值如下：
     * - {@link TRTCAppSceneVideoCall}：<br>
     *          视频通话场景，支持720P、1080P高清画质，单个房间最多支持300人同时在线，最高支持50人同时发言。<br>
     *          适合：[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。<br>
     * - {@link TRTCAppSceneAudioCall}：<br>
     *          语音通话场景，支持 48kHz，支持双声道。单个房间最多支持300人同时在线，最高支持50人同时发言。<br>
     *          适合：[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。<br>
     * - {@link TRTCAppSceneLIVE}：<br>
     *          视频互动直播，支持平滑上下麦，切换过程无需等待，主播延时小于300ms；支持十万级别观众同时播放，播放延时低至1000ms。<br>
     *          适合：[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。<br>
     * - {@link TRTCAppSceneVoiceChatRoom}：<br>
     *          语音互动直播，支持平滑上下麦，切换过程无需等待，主播延时小于300ms；支持十万级别观众同时播放，播放延时低至1000ms。<br>
     *          适合：[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。<br>
     *
     * **Note:**
     * 1. 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时，您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
     * 2. 不管进房是否成功，{@link TRTCCloud#enterRoom enterRoom()} 都必须与 {@link TRTCCloud#exitRoom exitRoom()} 配对使用。
     *    在调用 {@link TRTCCloud#exitRoom exitRoom()} 前再次调用 {@link TRTCCloud#enterRoom enterRoom()} 函数会导致不可预期的错误问题。
     *
     * @param {TRTCParams} params - 进房参数
     * @param {Number} params.sdkAppId      - 应用标识（必填）
     * @param {String} params.userId        - 用户标识（必填）
     * @param {String} params.userSig       - 用户签名（必填）
     * @param {Number} params.roomId        - 房间号码, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId，则 roomId 需要填写为0。
     * @param {String} params.strRoomId     - 字符串房间号码 [选填]，在同一个房间内的用户可以看到彼此并进行视频通话,
     * roomId 和 strRoomId 必须填一个。若两者都填，则优先选择 roomId
     * @param {TRTCRoleType} params.role    - 直播场景下的角色，默认值：主播
     * - TRTCRoleAnchor: 主播，可以上行视频和音频，一个房间里最多支持50个主播同时上行音视频。
     * - TRTCRoleAudience: 观众，只能观看，不能上行视频和音频，一个房间里的观众人数没有上限。
     * @param {String=} params.privateMapKey - 房间签名（非必填）
     * @param {String=} params.streamId      - 自定义 CDN 播放地址（非必填）
     * @param {String=} params.userDefineRecordId - 设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容，便于您更方便的识别录制回调（非必填）
     * @param {TRTCAppScene} scene 应用场景，目前支持视频通话（TRTCAppSceneVideoCall）、语音通话（TRTCAppSceneAudioCall）、
     * 在线直播（TRTCAppSceneLIVE）、语音聊天室（VTRTCAppSceneVoiceChatRoom）四种场景，详见 [TrtcDefines] 中 TRTCAppScene 参数定义
     * @memberof TRTCCloud
     * @example
     * import TRTCCloud from 'trtc-cloud-js-sdk';
     * const trtcCloud = TRTCCloud.getTRTCShareInstance(); // 创建实例，只需创建一次
     * const params = {
     *   sdkAppId: 0,
     *   userId: 'denny',
     *   roomId: 12345,
     *   userSig: 'xxx'
     * };
     * trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneVideoCall);
     */
    enterRoom(params: any, scene: TRTCAppScene): Promise<void>;
    /**
     * 退房<br>
     * 执行退出房间的相关逻辑释放资源后，SDK 会通过 [onExitRoom](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onExitRoom) 回调通知到您
     * **Note:**
     * 1. 如果您要再次调用 {@link TRTCCloud#enterRoom enterRoom()} 或者切换到其它的音视频 SDK，请等待 [onExitRoom()](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onExitRoom) 回调到来后再执行相关操作，否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.exitRoom();
     */
    exitRoom(): Promise<void>;
    /**
     * 切换角色，**仅适用于直播场景（TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom）**<br>
     * 在直播场景下，一个用户可能需要在“观众”和“主播”之间来回切换。
     * 您可以在进房前通过 TRTCParams 中的 role 指定角色，也可以通过 {@link TRTCCloud#switchRole switchRole()} 在进房后切换角色。<br>
     * @param {TRTCRoleType} role - 目标角色，默认为主播
     * - TRTCRoleAnchor: 主播，可以上行视频和音频，一个房间里最多支持50个主播同时上行音视频
     * - TRTCRoleAudience: 观众，只能观看，不能上行视频和音频，一个房间里的观众人数没有上限
     * @memberof TRTCCloud
     * @example
     * import TRTCCloud, { TRTCRoleType } from 'trtc-cloud-js-sdk';
     * const trtcCloud = TRTCCloud.getTRTCShareInstance();
     * await trtcCloud.switchRole(TRTCRoleType.TRTCRoleAudience);
     */
    switchRole(role: TRTCRoleType): Promise<void>;
    /**
     * 设置音视频数据接收模式（需要在进房前设置才能生效）
     * 为实现进房秒开的绝佳体验，SDK 默认进房后自动接收音视频。即在您进房成功的同时，您将立刻收到远端所有用户的音视频数据。若您主要用于语音聊天等没有自动接收视频数据需求的场景，您可以根据实际需求选择接收模式。
     * 注意：需要在进房前设置才能生效。
     *
     * @param {boolean} autoRecvAudio true：自动接收音频数据；false：需要调用 muteRemoteAudio 进行请求或取消。默认值：true
     * @param {boolean} autoRecvVideo true：自动接收视频数据；false：需要调用 startRemoteView/stopRemoteView 进行请求或取消。默认值：true
     * @memberof TRTCCloud
     */
    setDefaultStreamRecvMode(autoRecvAudio: boolean, autoRecvVideo: boolean): Promise<void>;
    resetTRTCCloud(): void;
    /**
     * 更新本地视频配置
     */
    private _updateLocalVideo;
    /**
     * 更新本地测试视频配置
     */
    private _updateLocalTestVideo;
    /**
     * 更新本地屏幕分享配置
     */
    private _updateLocalScreen;
    /**
     * 更新远端流视频配置
     * @param {string} userId 远端用户名
     * @param {TRTCVideoStreamType} streamType 远端流类型
     */
    private _updateRemoteVideo;
    /**
     * 开启本地视频的预览画面<br>
     * 这个接口会启动默认的摄像头，可以通过 [setCurrentCameraDevice](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#setCurrentCameraDevice) 接口选用其它摄像头<br>
     * @param {HTMLElement | Array<HTMLElement>} view - 承载预览画面的 DOM
     * @memberof TRTCCloud
     * @example
     * // 桌面端预览本地画面
     * const view = document.getElementById('local-view');
     * trtcCloud.startLocalPreview(view);
     *
     * // 移动端预览本地画面
     * const view = document.getElementById('local-view');
     * // 移动端使用前置摄像头预览本地画面
     * await trtcCloud.startLocalPreview(true, view);
     * // 移动端使用前置摄像头预览本地画面
     * await trtcCloud.startLocalPreview(false, view);
     */
    startLocalPreview(...args: any[]): Promise<void>;
    /**
     * 修改本地摄像头预览的 HTML 元素
     * @memberof TRTCCloud
     * @param {HTMLElement | Array<HTMLElement> | string | null} view 接收本地摄像头采集视频渲染的 HTML 元素
     * @example
     * await trtcCloud.startLocalPreview('preview');
     * await trtcCloud.updateLocalView('newView');
     */
    updateLocalView(view: HTMLElement | Array<HTMLElement> | string | null): Promise<void>;
    /**
     * 停止本地摄像头采集和预览<br>
     * 首先停止播放，然后关闭本地流（关闭摄像头和麦克风访问权限）
     * @memberof TRTCCloud
     * @example
     * trtcCloud.stopLocalPreview();
     */
    stopLocalPreview(): Promise<void>;
    /**
     * 暂停/恢复发布本地的视频流<br>
     * 当屏蔽本地视频后，房间里的其它成员将会收到 [onUserVideoAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserVideoAvailable) 回调通知
     * @param {Boolean} mute - true：屏蔽；false：开启，默认值：false
     * @memberof TRTCCloud
     * @example
     * trtcCloud.muteLocalVideo(true);
     */
    muteLocalVideo(mute?: boolean): Promise<void>;
    /**
     * 显示远端视频或辅流<br>
     * 在收到 SDK 的 [onUserVideoAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserVideoAvailable) 通知时，可以获知该远程用户开启了视频，
     * 此后调用 [startRemoteView](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#startRemoteView) 接口加载该用户的远程画面时，可以用 loading 动画优化加载过程中的等待体验。
     * @param {String}      userId - 对方的用户标识
     * @param {HTMLElement | Array<HTMLElement>} view   - 承载预览画面的 DOM
     * @param {TRTCVideoStreamType} streamType   - 视频流类型
     * - 高清大画面：TRTCVideoStreamType.TRTCVideoStreamTypeBig
     * - 低清小画面：TRTCVideoStreamType.TRTCVideoStreamTypeSmall
     * - 辅流（屏幕分享）：TRTCVideoStreamType.TRTCVideoStreamTypeSub
     * @memberof TRTCCloud
     * @example
     * import { TRTCVideoStreamType } from 'trtc-cloud-js-sdk';
     * const view = document.getElementById('remote-view');
     * await trtcCloud.startRemoteView('denny', view, TRTCVideoStreamType.TRTCVideoStreamTypeBig);
     */
    startRemoteView(userId: string, view: HTMLElement | Array<HTMLElement>, streamType: TRTCVideoStreamType): Promise<void>;
    /**
     * 修改远端视频渲染的 HTML 元素
     * @param {string} userId 远端视频流的用户 ID
     * @param {HTMLElement | Array<HTMLElement> | string} view 接受远端视频流渲染的 HTML 元素
     * @param {TRTCVideoStreamType} streamType 视频流类型
     */
    updateRemoteView(userId: string, view: HTMLElement | Array<HTMLElement> | string, streamType: TRTCVideoStreamType): Promise<void>;
    /**
     * 停止显示远端视频画面，同时不再拉取该远端用户的视频数据流<br>
     * 指定要停止观看的 userId 的视频流类型<br>
     * @param {String} userId - userId 指定的远端用户 ID
     * @param {TRTCVideoStreamType} streamType - 视频流类型
     * - 高清大画面：TRTCVideoStreamType.TRTCVideoStreamTypeBig
     * - 低清小画面：TRTCVideoStreamType.TRTCVideoStreamTypeSmall
     * - 辅流（屏幕分享）：TRTCVideoStreamType.TRTCVideoStreamTypeSub
     * @memberof TRTCCloud
     * @example
     * import { TRTCVideoStreamType } from 'trtc-cloud-js-sdk';
     * await trtcCloud.stopRemoteView('denny', TRTCVideoStreamType.TRTCVideoStreamTypeBig);
     */
    stopRemoteView(userId: string, streamType: TRTCVideoStreamType): Promise<void>;
    /**
     * 停止显示所有的远端视频画面<br>
     * @memberof TRTCCloud
     * @example
     * trtcCloud.stopAllRemoteView();
     */
    stopAllRemoteView(): Promise<void>;
    /**
     * 设置视频编码器相关参数<br>
     * 该设置决定了远端用户看到的画面质量（同时也是云端录制出的视频文件的画面质量）<br>
     * @param {TRTCVideoEncParam} params - 视频编码参数
     * @param {TRTCVideoResolution} params.videoResolution - 视频分辨率
     * @param {Number} params.videoFps     - 视频采集帧率
     * @param {Number} params.videoBitrate - 视频上行码率
     * @memberof TRTCCloud
     * import { TRTCVideoResolution } from 'trtc-cloud-js-sdk';
     * const params = {
     *  videoResolution: TRTCVideoResolution.TRTCVideoResolution_640_480,
     *  videoFps: 15,
     *  videoBitrate: 900,
     * };
     * trtcCloud.setVideoEncoderParam(params);
     */
    setVideoEncoderParam(params: TRTCVideoEncParam): Promise<void>;
    /**
     * 设置网络流控相关参数
     * 该设置决定了 SDK 在各种网络环境下的调控策略（例如弱网下是“保清晰”还是“保流畅”）
     *
     * @param {TRTCNetworkQosParam} params - 网络流控参数
     * @param {TRTCVideoQosPreference} params.preference 弱网下是“保清晰”还是“保流畅”
     * - TRTCVideoQosPreferenceSmooth: 弱网下保流畅，在遭遇弱网环境时首先确保声音的流畅和优先发送，画面会变得模糊且会有较多马赛克，但可以保持流畅不卡顿。
     * - TRTCVideoQosPreferenceClear: 弱网下保清晰，在遭遇弱网环境时，画面会尽可能保持清晰，但可能会更容易出现卡顿。
     * @memberof TRTCCloud
     * import { TRTCVideoQosPreference } from 'trtc-cloud-js-sdk';
     * const params = {
     *  preference: TRTCVideoQosPreference.TRTCVideoQosPreferenceSmooth,
     * };
     * trtcCloud.setNetworkQosParam(params);
     */
    setNetworkQosParam(params: {
        preference: TRTCVideoQosPreference;
    }): Promise<unknown>;
    /**
     * 设置本地流渲染参数
     * @param {TRTCRenderParams} params 本地流渲染参数
     * @param {TRTCVideoRotation} rotation 旋转角度
     * @param {TRTCVideoFillMode} fillMode 填充模式
     * @param {TRTCVideoMirrorType} mirrorType 画面渲染镜像
     * @examples
     * import { TRTCVideoRotation, TRTCVideoFillMode, TRTCVideoMirrorType } from 'trtc-cloud-js-sdk';
     * const params = {
     *  rotation: TRTCVideoRotation.TRTCVideoRotation_0,
     *  fillMode: TRTCVideoFillMode.TRTCVideoFillMode_Fill,
     *  mirrorType: TRTCVideoMirrorType.TRTCVideoMirrorType_Enable,
     * };
     * trtcCloud.setRemoteRenderParams(params);
     */
    setLocalRenderParams(params: TRTCRenderParams): Promise<void>;
    /**
     * 设置编码器输出的画面镜像模式
     *
     * 该接口不改变本地摄像头的预览画面，但会改变另一端用户看到的（以及服务器录制的）画面效果。
     *
     * @since 2.9.2
     *
     * @param {Boolean} mirror - 是否开启远端镜像, true：远端画面镜像；false：远端画面非镜像。默认值：false
     */
    setVideoEncoderMirror(mirror: boolean): Promise<void>;
    /**
     * 设置远端流渲染参数
     * @param {String} userId 流 userId
     * @param {TRTCVideoStreamType} streamType 流类型
     * - 高清大画面：TRTCVideoStreamType.TRTCVideoStreamTypeBig
     * - 低清小画面：TRTCVideoStreamType.TRTCVideoStreamTypeSmall
     * - 辅流（屏幕分享）：TRTCVideoStreamType.TRTCVideoStreamTypeSub
     * @param {TRTCRenderParams} params 远端流渲染参数
     * @param {TRTCVideoFillMode} params.fillMode 填充模式, 默认为 TRTCVideoFillMode.TRTCVideoFillMode_Fit
     * @param {TRTCVideoMirrorType} params.mirrorType 画面渲染镜像
     * @memberof TRTCCloud
     * @examples
     * import { TRTCVideoStreamType, TRTCVideoFillMode, TRTCVideoMirrorType } from 'trtc-cloud-js-sdk';
     * const params = {
     *  fillMode: TRTCVideoFillMode.TRTCVideoFillMode_Fill,
     *  mirrorType: TRTCVideoMirrorType.TRTCVideoMirrorType_Enable,
     * };
     * await trtcCloud.setRemoteRenderParams('denny', TRTCVideoStreamType.TRTCVideoStreamTypeBig, params)
     */
    setRemoteRenderParams(userId: string, streamType: TRTCVideoStreamType, params: TRTCRenderParams): Promise<void>;
    private _updateLocalAudio;
    private _updateLocalTestAudio;
    /**
     * 开启本地音频的采集和上行, 并设置音频质量<br>
     * 该函数会启动麦克风采集，并将音频数据传输给房间里的其他用户。 SDK 不会默认开启本地音频采集和上行，您需要调用该函数开启，否则房间里的其他用户将无法听到您的声音<br>
     * 主播端的音质越高，观众端的听感越好，但传输所依赖的带宽也就越高，在带宽有限的场景下也更容易出现卡顿<br>
     * **Note:**
     * 1. Web 端不支持 TRTCAudioQuality.TRTCAudioQualitySpeech
     * @param {TRTCAudioQuality} quality 声音音质
     * - TRTCAudioQualityDefault, 样率：48k；单声道；码率：40kbps，默认使用 TRTCAudioQualityDefault
     * - TRTCAudioQualityMusic, 采样率：48k；双声道；码率：192kbps，适合需要高保真传输音乐的场景，比如K歌、音乐直播等
     * @memberof TRTCCloud
     * @example
     * import { TRTCAudioQuality } from 'trtc-cloud-js-sdk';
     * trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityDefault);
     */
    startLocalAudio(quality?: TRTCAudioQuality): Promise<void>;
    /**
     * 关闭本地音频的采集和上行<br>
     * 当关闭本地音频的采集和上行，房间里的其它成员会收到 [onUserAudioAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserAudioAvailable) 回调通知。<br>
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.stopLocalAudio();
     */
    stopLocalAudio(): Promise<void>;
    /**
     * 静音本地的麦克风音频<br>
     * 静音后音频流继续上行：无系统混音时推送静音包并触发 [onUserAudioAvailable](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserAudioAvailable) 回调，有系统混音时推送混合后的音频包且远端无回调通知。<br>
     * 如需完全停止音频上行并触发远端回调，请使用 [stopLocalAudio](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#stopLocalAudio)。<br>
     * 在对录制质量要求很高的场景中，推荐使用 [muteLocalAudio](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#muteLocalAudio)，因为音频流的连续性可确保录制出兼容性更好的 MP4 文件。<br>
     * 直接使用 [stopLocalAudio](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html#stopLocalAudio) 会中断音频流，可能导致录制的 MP4 文件播放异常。<br>
     * @param {Boolean} mute - true：静音麦克风；false：取消静音，默认值：false
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.muteLocalAudio(true);
     */
    muteLocalAudio(mute?: boolean): Promise<void>;
    /**
     * 设置麦克风采集音量<br>
     * 注意：此接口自 v2.6.0 支持
     * @param {Number} volume - 设置采集音量，默认值 100，设置小于 100 可以降低采集音量，设置大于 100 可以放大采集音量，注意有爆音风险。
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.setAudioCaptureVolume(100);
     */
    setAudioCaptureVolume(volume: number): Promise<void>;
    /**
     * 获取 SDK 采集音量<br>
     * 注意：此接口自 v2.9.3 支持
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.getAudioCaptureVolume(100);
     * @returns {number} 音量大小，取值0 - 100，默认值为100。
     */
    getAudioCaptureVolume(): number;
    /**
     * 设置 SDK 播放音量<br>
     * 注意：此接口自 v2.9.3 支持
     * @param {Number} volume - 音量大小，取值0 - 100，默认值为100。
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.setAudioPlayoutVolume(100);
     */
    setAudioPlayoutVolume(volume: number): Promise<void>;
    /**
     * 获取 SDK 播放音量<br>
     * 注意：此接口自 v2.9.3 支持
     * @memberof TRTCCloud
     * @returns {Number} 音量大小，取值0 - 100，默认值为100。
     * @example
     * const playoutVolume = trtcCloud.getAudioPlayoutVolume();
     */
    getAudioPlayoutVolume(): number;
    /**
     * 静音掉某个用户的声音，同时不再拉取该远端用户的音频数据流<br>
     * @param {String} userId - 用户 ID
     * @param {Boolean} mute - true：静音；false：非静音
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.muteRemoteAudio('denny', true);
     */
    muteRemoteAudio(userId: string, mute?: boolean): Promise<void>;
    /**
     * 静音掉远端所有用户的声音，同时不再拉取远端用户的音频数据流<br>
     * @param {Boolean} mute - true：静音；false：非静音
     * @memberof TRTCCloud
     * @example
     * trtcCloud.muteAllRemoteAudio(true);
     */
    muteAllRemoteAudio(mute: boolean): void;
    /**
     * 暂停接收指定的远端视频流<br>
     * 注意：该接口仅停止接收远程用户的视频流，但并不释放显示资源，所以视频画面会冻屏在 mute 前的最后一帧
     * trtc-sdk-v5 在 v5.14.1-beta.1 版本解决了 safari 和 firefox 暂停会黑屏的问题
     * @param {String} userId - 对方的用户标识
     * @param {Boolean} mute - 是否停止接收
     * @param {TRTCVideoStreamType} streamType - 视频流类型
     * @example
     * await trtcCloud.muteRemoteVideoStream('denny', true, TRTCVideoStreamType.TRTCVideoStreamTypeBig);
     */
    muteRemoteVideoStream(userId: string, mute: boolean, streamType: TRTCVideoStreamType): Promise<void>;
    /**
     * 暂停/恢复订阅所有远端用户的音视频流<br>
     * @param {Boolean} mute - true：暂停；false：恢复
     * @memberof TRTCCloud
     * @example
     * await trtcCloud.muteAllRemoteVideoStreams(true);
     */
    muteAllRemoteVideoStreams(mute: boolean): Promise<void>;
    /**
     * 设置某个远程用户的播放音量, 不支持 iOS Safari<br>
     * @param {String} userId 远程用户 ID
     * @param {Number} volume 音量大小，100为原始音量，范围是：[0 ~ 100]，默认值为100
     * @memberof TRTCCloud
     * @example
     * trtcCloud.setRemoteAudioVolume('denny', 80);
     */
    setRemoteAudioVolume(userId: string, volume: number): void;
    /**
     * 开启或关闭音量大小回调<br>
     * 开启此功能后，SDK 会在 [onUserVoiceVolume](https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCallback.html#event:onUserVoiceVolume) 中反馈对每一路声音音量大小值的评估。<br>
     * **Note:**
     * - 如需打开此功能，请在 {@link TRTCCloud#startLocalAudio startLocalAudio()} 之前调用才可以生效。
     * @param {Number} interval - 设置 onUserVoiceVolume 回调的触发间隔，单位为ms，最小间隔为100ms，如果小于等于0则会关闭回调，建议设置为300ms
     * @memberof TRTCCloud
     * @example
     * trtcCloud.enableAudioVolumeEvaluation(300);
     */
    enableAudioVolumeEvaluation(interval: number): void;
    /**
     * 开启大小画面双路编码模式<br>
     *
     * @param {Boolean} enable 是否开启小画面编码，默认值：false
     * @param {TRTCVideoEncParam} params 小流的视频参数
     * @returns {Promise}
     * @memberof TRTCCloud
     * @example
     * trtcCloud.enableSmallVideoStream(true, {
     *  videoResolution: TRTCVideoResolution.TRTCVideoResolution_480_360,
     *  videoFps: 15,
     *  videoBitrate: 800
     * });
     */
    enableSmallVideoStream(enable: boolean, params: TRTCVideoEncParam): Promise<void>;
    /**
     * 视频画面截图
     * 调用截图接口后，您会收到来自 TRTCCallback 中的 onSnapshotComplete 回调: 截取本地、远程主路和远端辅流的视频画面，并通过 HBITMAP 对象返回给您。
     * @param {string} userId 用户 ID，空字符串表示截取本地视频画面
     * @param {TRTCVideoStreamType} streamType 视频流类型，支持摄像头画面（TRTCVideoStreamTypeBig）和屏幕分享画面（TRTCVideoStreamTypeSub）
     * @returns {string} frameData
     * @example
     * // 截图本地摄像头画面
     * const frameData = trtcCloud.snapshotVideo('', TRTCVideoStreamType.TRTCVideoStreamTypeBig);
     * // 截图本地屏幕分享画面
     * const frameData = trtcCloud.snapshotVideo('', TRTCVideoStreamType.TRTCVideoStreamTypeSub);
     * // 截图远端用户摄像头画面
     * const frameData = trtcCloud.snapshotVideo('remote_userId', TRTCVideoStreamType.TRTCVideoStreamTypeBig);
     * // 截图远端用户屏幕分享画面
     * const frameData = trtcCloud.snapshotVideo('remote_userId', TRTCVideoStreamType.TRTCVideoStreamTypeSub);
     * // 在页面中显示截图内容
     * const image = document.createElement('img');
     * image.width = '640';
     * image.height = '360';
     * image.src = frameData;
     * document.body.appendChild(image);
     */
    snapshotVideo(userId: string, streamType: TRTCVideoStreamType): string;
    /**
     * 开始屏幕分享<br>
     * @param {HTMLElement | null} view - 承载预览画面的 DOM
     * **Note:**
     * - 如果不想本地预览，需要传入 null
     * - 本地预览自己的屏幕分享时，不能全屏
     * @param {TRTCVideoStreamType} type 屏幕分享使用的线路，默认使用辅路。
     * @param {Object} params 屏幕分享参数
     * @param {TRTCVideoResolution} params.videoResolution 屏幕分享分辨率
     * @param {Number} params.videoFps 帧率
     * @param {Number} params.videoBitrate 码率
     * @param {Boolean=} params.screenAudio 屏幕分享是否采集系统音频, 默认 false 不采集
     * @param {MediaStreamTrack=} params.videoTrack 自定义采集的 videoTrack
     * **Note:**
     * - 采集系统声音只支持 Chrome M74+ ，在 Windows 和 Chrome OS 上，可以捕获整个系统的音频
     * 在 Linux 和 Mac 上，只能捕获选项卡的音频。其它 Chrome 版本、其它系统、其它浏览器均不支持。
     * @returns {Promise}
     * @memberof TRTCCloud
     * @example
     *  const view = document.getElementById('local-share-view');
     *  const params = {
     *    screenAudio: true,
     *  };
     *  await trtcCloud.startScreenShare(view, TRTCVideoStreamType.TRTCVideoStreamTypeSub, params);
     */
    startScreenShare(view: HTMLElement | null, type: any, params: any): Promise<void>;
    /**
     * 设置屏幕分享的视频编码参数<br>
     * **Note:**
     * - setSubStreamEncoderParam 需在调用 {@link TRTCCloud#startScreenShare startScreenShare()} 进行屏幕分享之前调用
     * - 默认分辨率：1920*1080，视频采集帧率：15fps，视频码率：1500kps
     * @memberof TRTCCloud
     * @param {TRTCVideoEncParam} params 屏幕分享视频编码参数
     * @param {TRTCVideoResolution} params.videoResolution 视频分辨率
     * @param {Number} params.videoFps 视频采集帧率
     * @param {Number} params.videoBitrate 视频码率
     * @example
     *  import { TRTCVideoResolution } from 'trtc-cloud-js-sdk';
     *  const params = {
     *    videoResolution: TRTCVideoResolution.TRTCVideoResolution_640_480,
     *    videoFps: 15,
     *    videoBitrate: 1500,
     *  };
     *  await trtcCloud.setSubStreamEncoderParam(params);
     */
    setSubStreamEncoderParam(params: TRTCVideoEncParam): Promise<void>;
    /**
     * 停止屏幕分享
     * @memberof TRTCCloud
     * @example
     *  await trtcCloud.stopScreenShare();
     */
    stopScreenShare(): Promise<void>;
    _startPublishVideoTrack({ videoTrack }: {
        videoTrack: MediaStreamTrack;
    }): Promise<void>;
    _stopPublishVideoTrack(): Promise<void>;
    startScreenCapture(): void;
    pauseScreenCapture(): void;
    resumeScreenCapture(): void;
    getScreenCaptureSources(): void;
    selectScreenCaptureTarget(): void;
    /**
     * 获取摄像头设备列表<br>
     * @returns {Promise<TRTCDeviceInfo[]>} 摄像头管理器列表
     * @memberof TRTCCloud
     * @example
     * var cameralist = await trtcCloud.getCameraDevicesList();
     * for (i = 0; i < cameralist.length; i++) {
     *    var camera = cameralist[i];
     *    console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
     * }
     */
    getCameraDevicesList(): Promise<TRTCDeviceInfo[]>;
    /**
     * 设置要使用的摄像头<br>
     * @param {String} cameraId - 从 getCameraDevicesList 中得到的设备 ID
     * @returns {Promise}
     * @memberof TRTCCloud
     */
    setCurrentCameraDevice(cameraId: string): Promise<any>;
    /**
     * 获取当前使用的摄像头<br>
     * @memberof TRTCCloud
     * @returns {TRTCDeviceInfo} 设备信息，能获取设备 ID 和设备名称
     */
    getCurrentCameraDevice(): TRTCDeviceInfo;
    /**
     * 判断是否为前置摄像头（仅适用于移动端）
     * @returns {boolean}
     */
    isFrontCamera(): boolean;
    /**
     * 切换前置或者后置摄像头（仅适用于移动端）
     * @param { boolean } isFrontCamera 是否为前置摄像头
     *
     * @example
     * // 移动端使用前置摄像头预览本地画面
     * await trtcCloud.startLocalPreview(true, view);
     * // 切换使用后置摄像头预览本地画面
     * await trtcCloud.switchCamera(false);
     */
    switchCamera(isFrontCamera: boolean): Promise<void>;
    private _onVirtualBackgroundError;
    /**
     * 开关/设置虚拟背景, 使用前先调用 useVirtualBackground 加载一下对应的模型文件
     * @param {Object} params 入口参数
     * @param {Number} params.sdkAppId 应用 ID
     * @param {String} params.userId 用户 ID
     * @param {String} params.userSig 应用签名
     * @param {Boolean} params.enable 是否开启虚拟背景。enable = true 表示开启; enable = false 表示关闭虚拟背景
     * @param {String} params.type 虚拟背景类型。例如：'blur' - 表示虚化背景；'image' - 表示图片虚化。默认: 'blur'
     * @param {Number} params.blurLevel 虚化等级
     * @param {String} params.imagePath 图片虚化的图片 url 地址
     * @param {Function} params.onError 错误回调, 用户传入该参数, 具体参考: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/zh-cn/tutorial-36-advanced-virtual-background.html#h2-6
     * @returns {Promise}
     * @example
     * // 开启背景虚化
     * setVirtualBackground({
     *  sdkAppId: 0,
     *  userId: '',
     *  userSig: '',
     *  enable: true,
     *  type: 'blur',
     * });
     * // 关闭背景虚化
     * setVirtualBackground({
     *  sdkAppId: 0,
     *  userId: '',
     *  userSig: '',
     *  enable: false,
     * });
     */
    setVirtualBackground(params: IVirtualBackgroundParams): Promise<void>;
    setTestVirtualBackground(params: IVirtualBackgroundParams): Promise<void>;
    /**
     * 下载虚拟背景对应的模型文件
     * @param {String=} assetsPath 默认从 cos 下载, 也可传入客户自己部署的模型文件地址 ref: https://tapd.woa.com/TerWebG/prong/stories/view/1020396022116943005
     */
    useVirtualBackground(assetsPath?: string): Promise<void>;
    /**
     * @param {TRTCBeautyStyle} style 磨皮算法，有“光滑”和“自然”两种算法, 默认为 TRTCBeautyStyleNature。
     * @param {number} beautyLevel 美颜级别，取值范围0 - 9，0表示关闭，1 - 9值越大，效果越明显。
     * @param {number} whitenessLevel 美白级别，取值范围0 - 9，0表示关闭，1 - 9值越大，效果越明显。
     * @param {number} ruddinessLevel 红润级别，取值范围0 - 9，0表示关闭，1 - 9值越大，效果越明显。
     * @returns {Promise}
     * @example
     */
    setBeautyStyle(style: TRTCBeautyStyle, beautyLevel: number, whitenessLevel: number, ruddinessLevel: number): Promise<void>;
    setTestBeautyStyle(style: TRTCBeautyStyle, beautyLevel: number, whitenessLevel: number, ruddinessLevel: number): Promise<void>;
    useBeautyStyle(assetsPath?: string): Promise<void>;
    private _handleBeautyStyleParam;
    private _resetBeautyStyle;
    /**
     * 获取麦克风设备列表<br>
     * @returns {Promise<TRTCDeviceInfo[]>} 麦克风管理器列表
     * @memberof TRTCCloud
     * @example
     *   var micList = await trtcCloud.getMicDevicesList();
     *   for (i = 0; i < micList.length; i++) {
     *     var mic = micList[i];
     *     console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
     *   }
     */
    getMicDevicesList(): Promise<TRTCDeviceInfo[]>;
    /**
     * 设置要使用的麦克风<br>
     * 选择指定的麦克风作为录音设备，不调用该接口时，默认选择索引为 0 的麦克风<br>
     * @param {String} micId - 从 getMicDevicesList 中得到的设备 ID
     * @memberof TRTCCloud
     * @returns {Promise}
     */
    setCurrentMicDevice(micId: string): Promise<any>;
    /**
     * 获取当前选择的麦克风<br>
     * @memberof TRTCCloud
     * @returns {TRTCDeviceInfo} 设备信息，能获取设备 ID 和设备名称
     */
    getCurrentMicDevice(): TRTCDeviceInfo;
    /**
     * 获取扬声器设备列表<br>
     * - 出于安全的考虑，在用户未授权摄像头或麦克风访问权限前，deviceId 字段可能都是空的。因此建议在用户授权访问后 再调用该接口获取设备详情
     * - 移动端不支持获取扬声器列表
     * @returns {Promise<TRTCDeviceInfo[]>} 扬声器管理器列表
     * @memberof TRTCCloud
     * @example
     *   var speakerList = await trtcCloud.getSpeakerDevicesList();
     *   for (i = 0; i < speakerList.length; i++) {
     *     var speaker = speakerList[i];
     *     console.info("mic deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
     *   }
     */
    getSpeakerDevicesList(): Promise<TRTCDeviceInfo[]>;
    /**
     * 设置要使用的扬声器<br>
     * - 移动端不支持设置扬声器。
     * @param {String} speakerId - 从 getSpeakerDevicesList 中得到的设备 ID
     * @returns {Promise}
     * @memberof TRTCCloud
     */
    setCurrentSpeakerDevice(speakerId: string): Promise<any>;
    /**
     * 获取当前的扬声器设备<br>
     * @memberof TRTCCloud
     * @returns {TRTCDeviceInfo} 设备信息，能获取设备 ID 和设备名称
     */
    getCurrentSpeakerDevice(): TRTCDeviceInfo;
    /**
     * 摄像头测试接口
     * @param {HTMLElement} view 测试接口播放区域
     */
    startCameraDeviceTest(view: HTMLElement): Promise<void>;
    /**
     * 停止摄像头测试接口
     */
    stopCameraDeviceTest(): Promise<void>;
    /**
     * 麦克风测试接口
     * @param {number} interval 麦克风音量回调间隔
     */
    startMicDeviceTest(interval: number): Promise<void>;
    stopMicDeviceTest(): Promise<void>;
    /**
     * 调用实验性 API 接口
     *
     * @param {String} jsonStr - 接口及参数描述的 JSON 字符串
     */
    callExperimentalAPI(jsonStr: string): Promise<void>;
    private _handleSetFrameWork;
    /**
    * 添加 KV stat
    * TRTC._addKVStat({ type, key, value, base, useUV, version }: {
    *    type: KV_STAT_TYPE;
    *    key: number;
    *    value: any;
    *    base?: number | number[];
    *    useUV: boolean;
    *    version?: string;
    *  }): void
    * @private
    * @param {object} param
    * @param {'count' | 'enum' | 'number'} param.type 统计类型
    * @param {number} param.key
    * @param {any} param.value
    * @param {number|number[]} [param.base = 100] 拆分粒度，默认 100
    * @param {boolean} [param.useUV] 是否使用 UV，对于 enum 默认是 true
    * @param {string} [param.version] 版本号
    */
    private _handleKeyMetricsStats;
    private _setVideoEncodeParamEx;
    /**
    * 清晰度切换
    * @param {object} params
    * @param {'origin' | 'sd' | 'ld'} params.quality 目标清晰度名称
    * @param {object[]} params.stream_list 拉流地址列表
    * @param {'origin' | 'sd' | 'ld'} params.stream_list[].name 清晰度名称
    * @param {string} params.stream_list[].user_id userId
    * @param {number} params.stream_list[].bitrate 码率
    */
    private _switchPlaybackQuality;
    /**
     * 请求远端视频画中画
     * 注意：需要 trtc-sdk-v5 版本 v5.15.0+
     */
    private _requestPictureInPicture;
    /**
     * 退出远端视频画中画
     * 注意：需要 trtc-sdk-v5 版本 v5.15.0+
     */
    private _exitPictureInPicture;
    private _emitError;
    private _emitWarning;
    private _transformTRTCServerError;
    private _transformTRTCInvalidOperationError;
    private _isCameraError;
    private _isMicError;
    private _transformTRTCDeviceError;
    private _transformTRTCUnKnowError;
    private _transformTRTCErrorCode;
    /**
     * 调用方法失败处理
     * @param {Any} error Error 实例或 trtc-js-sdk 中定义的 RtcError 实例
     * @param {String} functionName 函数名称, 调用函数的名称用以记录出错的位置
     */
    private _callFunctionErrorManage;
    /**
     * 解析 TRTCVideoResolution 将其转成 width、height。例如：TRTCVideoResolution_120_120 得到 { width: 120, height: 120 }
     * @param {TRTCVideoResolution} videoResolution 分辨率
     * @returns {Object} 返回值
     */
    private _getTRTCResolution;
    private _getTRTCVideoProfile;
    private _getTRTCStreamType;
    private _getTRTCFillMode;
    private _getTRTCCloudVideoFillMode;
    private _getTRTCCloudMirrorType;
    private _getLocalRenderMirror;
    private _getTRTCLocalMirror;
    private _getTRTCRemoteMirror;
    private _getTRTCQosPreference;
    private _getTRTCAudioQuality;
    private _getTRTCCloudDeviceType;
    private _getTRTCCloudDeviceState;
    private _getTRTCCloudQuality;
    private _generateLocalVideoData;
    private _generateLocalTestVideoData;
    private _generateLocalAudioData;
    private _generateLocalTestAudioData;
    private _generateRemoteVideoData;
    private _addTRTCEvents;
    private _removeTRTCEvents;
    private _emitVideoAvailable;
    private _setLocalView;
    private _getLocalView;
    private _setIsMobile;
    private _getIsMobile;
    private _setIsFrontCamera;
    private _getIsFrontCamera;
    private _getSmallStreamVideoProfile;
    private _setSmallStreamVideoProfile;
    private _setIsVideoPublish;
    private _getIsVideoPublish;
    private _setVideoProfile;
    private _getVideoProfile;
    private _setQosPreference;
    private _getQosPreference;
    private _setLocalTestView;
    private _getLocalTestView;
    private _setScreenShareParams;
    private _clearScreenShareParams;
    private _getScreenShareParams;
    private _setIsAudioPublish;
    private _getIsAudioPublish;
    private _setAudioMuteType;
    private _getAudioMuteType;
    private _setAudioProfile;
    private _getAudioProfile;
    private _getCaptureVolume;
    private _setCaptureVolume;
    private _setCurrentCameraId;
    private _getCurrentCameraId;
    private _setCurrentMicrophoneId;
    private _getCurrentMicrophoneId;
    private _setCurrentSpeakerId;
    private _getCurrentSpeakerId;
    private _setRemoteStreamConfig;
    /**
     * 将主实例的属性继承给子实例
     * @param subCloud 子实例
    */
    private _inheritPropertiesToSubCloud;
    private _inheritEventsToSubCloud;
    /**
     * 内部方法：设备插拔事件处理
     */
    handleDeviceChange(): Promise<void>;
    private isSameDevice;
    /**
     * 内部方法：设备插拔数据处理<br>
     * @param {Array<TRTCDeviceInfo>} currentDeviceList 原来设备列表
     * @param {Array<TRTCDeviceInfo>} list 当前获取的设备列表
     * @param {TRTCDeviceType} type 设备类型
     */
    deviceChangeManage(currentDeviceList: Array<TRTCDeviceInfo>, list: any, type: TRTCDeviceType): Promise<void>;
    /**
     * 获取默认的设备信息：TRTC 获取设备列表时，里面会包含 deviceId = 'default' 的设备
     * - 设备列表中，含有 deviceId = 'default' 的设备，通过 groupId 获取该设备的信息
     * - 设备列表中，不含有 deviceId = 'default' 的设备，返回设备列表的第一个设备信息
     * @param {Array<TRTCDeviceInfo>} deviceList 传入的设备列表
     * @private
     * @returns {TRTCDeviceInfo} defaultInfo
     */
    private getDefaultDeviceInfo;
    /**
     * 内部方法：设备插拔后，自动切换设备<br>
     * @param {TRTCDeviceType} type 设备类型
     * @param {DeviceInfo} deviceInfo 设备信息
     */
    private autoChangeDevice;
    /**
     * 设备插拔事件<br>
     * @param {String} deviceId 设备 ID
     * @param {TRTCDeviceType} type 设备类型
     * @param {TRTCDeviceState} state 设备状态
     * @event TRTCCallback#onDeviceChange
     */
    emitOnDeviceChange(deviceId: string, type: TRTCDeviceType, state: TRTCDeviceState): void;
    /**
       * 获取本地混流管理器
       * @example
       * import TRTCCloud from 'trtc-cloud-js-sdk';
       *
       * const trtcCloud = TRTCCloud.getTRTCShareInstance();
       * const mediaMixingManager = trtcCloud.getMediaMixingManager();
       *
       * @returns {TRTCMediaMixingManager | null}
       */
    getMediaMixingManager(): TRTCMediaMixingManager;
    getAITranscriberManager(): AITranscriberManager;
}

export { AITranscriberListener, AudioMuteType, IAITranscriberManager, ITRTCMediaMixingEvent, ITRTCMediaMixingManager, InteractionOption, Rect, TRTCAppScene, TRTCAudioQuality, TRTCBeautyStyle, TRTCCameraCaptureMode, TRTCCameraCaptureParams, TRTCDeviceInfo, TRTCDeviceState, TRTCDeviceType, TRTCImageBuffer, TRTCLocalStatistics, TRTCLogLevel, TRTCMediaMixingEncParam, TRTCMediaMixingErrorCode, TRTCMediaMixingEvent, TRTCMediaSource, TRTCMediaSourceType, TRTCMixInputType, TRTCMixUser, TRTCNetworkQosParam, TRTCParams, TRTCPublishCDNParam, TRTCQosControlMode, TRTCQuality, TRTCQualityInfo, TRTCRemoteStatistics, TRTCRenderParams, TRTCRoleType, TRTCScreenCaptureProperty, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureSourceType, TRTCStatistics, TRTCTranscodingConfig, TRTCTranscodingConfigMode, TRTCVideoEncParam, TRTCVideoFillMode, TRTCVideoMirrorType, TRTCVideoQosPreference, TRTCVideoResolution, TRTCVideoResolutionMode, TRTCVideoRotation, TRTCVideoStreamType, TRTCVolumeInfo, TranscriberMessage, TranscriberParams, TRTC_Cloud as default };
