/**
 * TRTC 关键类型定义
 *
 * @description 分辨率、质量等级等枚举和常量值的定义
 *
 */
/// <reference types="node" />
export 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
}
export declare enum TRTCVideoResolutionMode {
    TRTCVideoResolutionModeLandscape = 0,
    TRTCVideoResolutionModePortrait = 1
}
export declare enum TRTCVideoStreamType {
    TRTCVideoStreamTypeBig = 0,
    TRTCVideoStreamTypeSmall = 1,
    TRTCVideoStreamTypeSub = 2
}
export declare enum TRTCQuality {
    TRTCQuality_Unknown = 0,
    TRTCQuality_Excellent = 1,
    TRTCQuality_Good = 2,
    TRTCQuality_Poor = 3,
    TRTCQuality_Bad = 4,
    TRTCQuality_Vbad = 5,
    TRTCQuality_Down = 6
}
export declare enum TRTCVideoFillMode {
    TRTCVideoFillMode_Fill = 0,
    TRTCVideoFillMode_Fit = 1
}
export declare enum TRTCVideoRotation {
    TRTCVideoRotation0 = 0,
    TRTCVideoRotation90 = 1,
    TRTCVideoRotation180 = 2,
    TRTCVideoRotation270 = 3
}
export declare enum TRTCBeautyStyle {
    TRTCBeautyStyleSmooth = 0,
    TRTCBeautyStyleNature = 1
}
export declare enum TRTCVideoPixelFormat {
    TRTCVideoPixelFormat_Unknown = 0,
    TRTCVideoPixelFormat_I420 = 1,
    TRTCVideoPixelFormat_Texture_2D = 2,
    TRTCVideoPixelFormat_BGRA32 = 3,
    TRTCVideoPixelFormat_RGBA32 = 5,
    TRTCVideoPixelFormat_H264 = 6
}
export declare enum TRTCVideoBufferType {
    TRTCVideoBufferType_Unknown = 0,
    TRTCVideoBufferType_Buffer = 1,
    TRTCVideoBufferType_Texture = 3
}
export declare enum TRTCVideoMirrorType {
    TRTCVideoMirrorType_Auto = 0,
    TRTCVideoMirrorType_Enable = 1,
    TRTCVideoMirrorType_Disable = 2
}
export declare enum TRTCRecordType {
    TRTCRecordTypeAudio = 0,
    TRTCRecordTypeVideo = 1,
    TRTCRecordTypeBoth = 2
}
export declare type TRTCAudioParallelParams = {
    maxCount: number;
    includeUsers: Array<string>;
};
export declare enum TRTCAppScene {
    TRTCAppSceneVideoCall = 0,
    TRTCAppSceneLIVE = 1,
    TRTCAppSceneAudioCall = 2,
    TRTCAppSceneVoiceChatRoom = 3
}
export declare enum TRTCRoleType {
    TRTCRoleAnchor = 20,
    TRTCRoleAudience = 21
}
export declare enum TRTCQosControlMode {
    TRTCQosControlModeClient = 0,
    TRTCQosControlModeServer = 1
}
export declare enum TRTCVideoQosPreference {
    TRTCVideoQosPreferenceSmooth = 1,
    TRTCVideoQosPreferenceClear = 2
}
export declare enum TRTCAudioFrameFormat {
    TRTCAudioFrameFormatNone = 0,
    TRTCAudioFrameFormatPCM = 1
}
export declare enum TRTCScreenCaptureSourceType {
    TRTCScreenCaptureSourceTypeUnknown = -1,
    TRTCScreenCaptureSourceTypeWindow = 0,
    TRTCScreenCaptureSourceTypeScreen = 1,
    TRTCScreenCaptureSourceTypeCustom = 2
}
export declare enum TRTCAudioQuality {
    TRTCAudioQualitySpeech = 1,
    TRTCAudioQualityDefault = 2,
    TRTCAudioQualityMusic = 3
}
/**
 * 图缓存
 *
 * @param {ArrayBuffer} buffer - 图像存储的内容，BGRA 格式。
 * @param {Number}      length - 图像数据大小大小
 * @param {Number}      width  - 图像宽度
 * @param {Number}      heigth - 图像高度
 *
 */
export declare class TRTCImageBuffer {
    buffer: ArrayBuffer;
    length: number;
    width: number;
    height: number;
    constructor(buffer?: ArrayBuffer, length?: number, width?: number, height?: number);
}
/**
 * 屏幕采集源信息
 *
 * @param {TRTCScreenCaptureSourceType} type       - 采集源类型
 * @param {String}                      sourceId   - 采集源ID；对于窗口，该字段指示窗口句柄；对于屏幕，该字段指示屏幕ID
 * @param {String}                      sourceName - 采集源名称，UTF8编码
 * @param {TRTCImageBuffer}             thumbBGRA  - 缩略图内容
 * @param {TRTCImageBuffer}             iconBGRA   - 图标内容
 * @param {Boolean}                     isMinimizeWindow - 是否最小化窗口
 * @param {Number}                      width - 屏幕/窗口宽，单位:像素。
 * @param {Number}                      height - 屏幕/窗口高，单位:像素。
 * @param {Boolean}                     isMainScreen - 是否为主显示屏。
 * @param {Number}                      x - 屏幕/窗口 x 坐标，单位:像素点。
 * @param {Number}                      y - 屏幕/窗口 y 坐标，单位:像素点。
 *
 */
export declare class TRTCScreenCaptureSourceInfo {
    type: number;
    sourceId: string;
    sourceName: string;
    thumbBGRA: TRTCImageBuffer;
    iconBGRA: TRTCImageBuffer;
    isMinimizeWindow: boolean;
    width: number;
    height: number;
    isMainScreen: boolean;
    constructor(type?: TRTCScreenCaptureSourceType, sourceId?: string, sourceName?: string, thumbBGRA?: TRTCImageBuffer, iconBGRA?: TRTCImageBuffer, isMinimizeWindow?: boolean, width?: number, height?: number, isMainScreen?: boolean);
}
/**
 * 屏幕分享的进阶控制参数
 *
 * 该参数用于屏幕分享相关的接口 [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。
 */
export 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);
}
/**
 * 设备信息
 *
 * @param {String} deviceId   - 设备PID，字符编码格式是UTF-8
 * @param {String} deviceName - 设备名称，字符编码格式是UTF-8
 * @param {Object} deviceProperties - 设备属性
 *  - 只支持摄像头，包含摄像头支持的采集分辨率。
 * @param {Array} deviceProperties.SupportedResolution - 支持的采集分辨率数组，每个数据是一个对象，包含 `width` 和 `height` 两个属性，属性值都是整形数值。
 *  - 注意：虚拟摄像头该字段不存在。
 *
 */
export declare class TRTCDeviceInfo {
    deviceId: string;
    deviceName: string;
    deviceProperties: Record<string, any>;
    constructor(deviceId: string, deviceName: string, deviceProperties: {});
}
/**
 * 视频帧数据
 *
 * @param {TRTCVideoPixelFormat} videoFormat   - 视频帧的格式
 * @param {TRTCVideoBufferType} bufferType - 视频数据结构类型
 * @param {ArrayBuffer} data - 视频数据，字段 bufferType 是 LiteAVVideoBufferType_Buffer 时生效
 * @param {Number} textureId - 视频纹理ID，字段bufferType是LiteAVVideoBufferType_Texture时生效
 * @param {Number} length - 视频数据的长度，单位是字节，对于i420而言， length = width * height * 3 / 2，对于BGRA32而言， length = width * height * 4
 * @param {Number} width - 画面的宽度
 * @param {Number} height - 画面的高度
 * @param {Number} timestamp - 时间戳，单位ms
 * @param {Number} rotation - 画面旋转角度
 *
 */
export declare class TRTCVideoFrame {
    videoFormat: number;
    bufferType: number;
    data: null | ArrayBuffer;
    textureId: number;
    length: number;
    width: number;
    height: number;
    timestamp: number;
    rotation: number;
    constructor(videoFormat?: TRTCVideoPixelFormat, bufferType?: TRTCVideoBufferType, data?: null | ArrayBuffer, textureId?: number, length?: number, width?: number, height?: number, timestamp?: number, rotation?: number);
}
/**
 * 音频帧数据
 *
 * @param {TRTCAudioFrameFormat} audioFormat - 音频帧的格式
 * @param {ArrayBuffer} data - 音频数据
 * @param {Number} length - 音频数据的长度
 * @param {Number} sampleRate - 采样率
 * @param {Number} channel - 声道数
 * @param {Number} timestamp - 时间戳，单位ms
 * @param {ArrayBuffer|null} extraData - 音频额外数据，远端用户通过 `onLocalProcessedAudioFrame` 写入的数据会通过该字段回调
 * @param {Number} extraDataLength - 音频消息数据的长度
 */
export declare class TRTCAudioFrame {
    audioFormat: TRTCAudioFrameFormat;
    data: ArrayBuffer | null;
    length: number;
    sampleRate: number;
    channel: number;
    timestamp: number;
    extraData: ArrayBuffer | null;
    extraDataLength: number;
    constructor(audioFormat?: TRTCAudioFrameFormat, data?: any, length?: number, sampleRate?: number, channel?: number, timestamp?: number, extraData?: any, extraDataLength?: number);
}
export declare enum TRTCLogLevel {
    TRTCLogLevelVerbose = 0,
    TRTCLogLevelDebug = 1,
    TRTCLogLevelInfo = 2,
    TRTCLogLevelWarn = 3,
    TRTCLogLevelError = 4,
    TRTCLogLevelFatal = 5,
    TRTCLogLevelNone = 6
}
export declare enum TRTCDeviceState {
    TRTCDeviceStateAdd = 0,
    TRTCDeviceStateRemove = 1,
    TRTCDeviceStateActive = 2,
    TRTCDefaultDeviceChanged = 3
}
export declare enum TRTCDeviceType {
    TRTCDeviceTypeUnknown = -1,
    TRTCDeviceTypeMic = 0,
    TRTCDeviceTypeSpeaker = 1,
    TRTCDeviceTypeCamera = 2
}
export declare enum TRTCCameraCaptureMode {
    TRTCCameraResolutionStrategyAuto = 0,
    TRTCCameraResolutionStrategyPerformance = 1,
    TRTCCameraResolutionStrategyHighQuality = 2,
    TRTCCameraCaptureManual = 3
}
export declare type TRTCCameraCaptureParams = {
    /** 摄像头采集偏好 */
    mode: TRTCCameraCaptureMode;
    /** 采集图像宽度 */
    width: number;
    /** 采集图像高度 */
    height: number;
};
export declare enum TRTCWaterMarkSrcType {
    TRTCWaterMarkSrcTypeFile = 0,
    TRTCWaterMarkSrcTypeBGRA32 = 1,
    TRTCWaterMarkSrcTypeRGBA32 = 2
}
/**
 * 进房相关参数
 *
 * 只有该参数填写正确，才能顺利调用 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)。
 */
export declare class TRTCParams {
    sdkAppId: number;
    userId: string;
    userSig: string;
    roomId: number;
    strRoomId: string;
    role: number;
    privateMapKey: null | string;
    businessInfo: null | string;
    streamId: null | string;
    userDefineRecordId: null | string;
    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);
}
/**
 * 视频编码参数
 *
 * 该设置决定了远端用户看到的画面质量（同时也是云端录制出的视频文件的画面质量）。
 *
 * @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 {TRTCVideoResolutionMode} resMode         - 【字段含义】分辨率模式（横屏分辨率 - 竖屏分辨率）<br>
 *                                                    【推荐取值】手机直播建议选择 Portrait，Window 和 Mac 建议选择 Landscape。<br>
 *                                                    【特别说明】如果 videoResolution 指定分辨率 640 × 360，resMode 指定模式为 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>
 * @param {Number}                  minVideoBitrate  -【字段含义】最低视频码率，SDK 会在网络不佳的情况下主动降低视频码率，最低会降至 minVideoBitrate 所设定的数值。
 *                                                    【推荐取值】<br>
 *                                                      - 如果您追求“允许卡顿但要保持清晰”的效果，可以设置 minVideoBitrate 为 videoBitrate 的 60%；
 *                                                      - 如果您追求“允许模糊但要保持流畅”的效果，可以设置 minVideoBitrate 为 200kbps；
 *                                                      - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值，等价于关闭 SDK 的自适应调节能力；
 *                                                      - 默认值：0，此时最低码率由 SDK 根据分辨率情况，自动设置合适的数值。<br>
 *                                                    【特别说明】<br>
 *                                                     - 当您把分辨率设置的比较高时，minVideoBitrate 不适合设置的太低，否则会出现画面模糊和大范围的马赛克宏块。
 *                                                       比如把分辨率设置为 720p，把码率设置为 200kbps，那么编码出的画面将会出现大范围区域性马赛克。
 * @param {Boolean}                 enableAdjustRes - 【字段含义】是否允许动态调整分辨率（开启后会对云端录制产生影响）<br>
 *                                                    【推荐取值】该功能适用于不需要云端录制的场景，开启后 SDK 会根据当前网络情况，智能选择出一个合适的分辨率，避免出现“大分辨率+小码率”的低效编码模式。<br>
 *                                                    【特别说明】默认值：关闭。如有云端录制的需求，请不要开启此功能，因为如果视频分辨率发生变化后，云端录制出的 MP4 在普通的播放器上无法正常播放。<br>
 */
export declare class TRTCVideoEncParam {
    videoResolution: TRTCVideoResolution;
    resMode: TRTCVideoResolutionMode;
    videoFps: number;
    videoBitrate: number;
    minVideoBitrate: number;
    enableAdjustRes: boolean;
    constructor(videoResolution?: TRTCVideoResolution, resMode?: TRTCVideoResolutionMode, videoFps?: number, videoBitrate?: number, minVideoBitrate?: number, enableAdjustRes?: boolean);
}
/**
 * 画面渲染参数
 *
 * 您可以通过设置此参数来控制画面的旋转、填充、镜像模式
 *
 * @param {TRTCVideoRotation} rotation  - 【字段含义】视频画面旋转方向
 * @param {TRTCVideoFillMode} fillMode  - 【字段含义】视频画面填充模式
 * @param {TRTCVideoMirrorType} mirrorType  - 【字段含义】画面渲染镜像类型
 *
 */
export declare class TRTCRenderParams {
    rotation: TRTCVideoRotation;
    fillMode: TRTCVideoFillMode;
    mirrorType: TRTCVideoMirrorType;
    constructor(rotation?: TRTCVideoRotation, fillMode?: TRTCVideoFillMode, mirrorType?: TRTCVideoMirrorType);
}
/**
 * 网络流控相关参数
 *
 * 网络流控相关参数，该设置决定了SDK在各种网络环境下的调控方向（比如弱网下是“保清晰”还是“保流畅”）
 *
 * @param {TRTCVideoQosPreference} preference  - 【字段含义】弱网下是“保清晰”还是“保流畅”<br>
 *                                               【特别说明】<br>
 *                                                - 弱网下保流畅：在遭遇弱网环境时，画面会变得模糊，且会有较多马赛克，但可以保持流畅不卡顿
 *                                                - 弱网下保清晰：在遭遇弱网环境时，画面会尽可能保持清晰，但可能会更容易出现卡顿
 * @param {TRTCQosControlMode}     controlMode - 【字段含义】流控模式（云端控制 - 客户端控制）<br>
 *                                               【推荐取值】云端控制<br>
 *                                               【特别说明】<br>
 *                                                - Client 模式：客户端控制模式，用于 SDK 开发内部调试，客户请勿使用
 *                                                - Server 模式（默认）：云端控制模式，若没有特殊原因，请直接使用该模式
 *
 */
export declare class TRTCNetworkQosParam {
    preference: TRTCVideoQosPreference;
    controlMode: TRTCQosControlMode;
    constructor(preference?: TRTCVideoQosPreference, controlMode?: TRTCQosControlMode);
}
/**
 * 视频质量
 *
 * 表示视频质量的好坏，通过这个数值，您可以在 UI 界面上用图标表征 userId 的通话线路质量
 *
 * @param {String}      userId  - 用户标识
 * @param {TRTCQuality} quality - 视频质量
 *
 */
export declare class TRTCQualityInfo {
    userId: string;
    quality: TRTCQuality;
    constructor(userId?: string, quality?: TRTCQuality);
}
/**
 * 音量大小
 *
 * 表示语音音量的评估大小，通过这个数值，您可以在 UI 界面上用图标表征 userId 是否有在说话。
 *
 * @param {String} userId - 说话者的 userId，字符编码格式是 UTF-8
 * @param {Number} volume - 说话者的音量， 取值范围0 - 100
 * @param {Number} vad - 是否检测到人声，0：非人声 1：人声
 * @param {Number} pitch - 本地用户的人声频率（单位：Hz），取值范围[0 - 4000]，对于远端用户，该值始终为0。
 * @param {Float32Array} spectrumData - 音频频谱数据是将音频数据在频率域中的分布，划分为 256 个频率段，使用 spectrumData 记录各个频率段的能量值，每个能量值的取值范围为 [-300, 0]，单位为 dBFS。
                                        本地频谱使用编码前的音频数据计算，会受到本地采集音量、BGM等影响；远端频谱使用接收到的音频数据计算，本地调整远端播放音量等操作不会对其产生影响。
 * @param {Number} spectrumDataLength - spectrumDataLength 记录音频频谱数据的长度，为 256。
 *
 */
export declare class TRTCVolumeInfo {
    userId: string;
    volume: number;
    vad: number;
    pitch: number;
    spectrumData: Float32Array;
    spectrumDataLength: number;
    constructor(userId?: string, volume?: number, vad?: number, pitch?: number, spectrumData?: Float32Array, spectrumDataLength?: number);
}
/**
 * 测速参数
 *
 * 您可以在用户进入房间前通过 [startSpeedTest]{@link TRTCCloud#startSpeedTest} 接口测试网速（注意：请不要在通话中调用）。
 *
 * @param {Number}      sdkAppId              - 应用标识
 * @param {String}      userId                - 用户标识
 * @param {String}      userSig               - 用户签名
 * @param {Number}      expectedUpBandwidth   - 预期的上行带宽（kbps，取值范围： 10 ～ 5000，为 0 时不测试）。
 * @param {Number}      expectedDownBandwidth - 预期的下行带宽（kbps，取值范围： 10 ～ 5000，为 0 时不测试）。
 */
export declare class TRTCSpeedTestParams {
    sdkAppId: number;
    userId: string;
    userSig: string;
    expectedUpBandwidth: number;
    expectedDownBandwidth: number;
    constructor(sdkAppId?: number, userId?: string, userSig?: string, expectedUpBandwidth?: number, expectedDownBandwidth?: number);
}
/**
 * 网络测速结果
 *
 * 您可以在用户进入房间前通过 TRTCCloud 的 startSpeedTest 接口进行测速 （注意：请不要在通话中调用），
 * 测速结果会每2 - 3秒钟返回一次，每次返回一个 IP 地址的测试结果。
 *
 * 注意:
 * - quality 是内部通过评估算法测算出的网络质量，loss 越低，rtt 越小，得分也就越高。
 * - upLostRate 是指上行丢包率，例如0.3代表每向服务器发送10个数据包，可能有3个会在中途丢失。
 * - downLostRate 是指下行丢包率，例如0.2代表从服务器每收取10个数据包，可能有2个会在中途丢失。
 * - rtt 是指当前设备到腾讯云服务器的一次网络往返时间，正常数值在10ms - 100ms之间。
 *
 * @param {Boolean}     success      - 测试是否成功, 9.3 版本新增字段
 * @param {String}      errMsg       - 带宽测试错误信息, 9.3 版本新增字段
 * @param {String}      ip           - 服务器 IP 地址
 * @param {TRTCQuality} quality      - 网络质量，内部通过评估算法测算出的网络质量，loss 越低，rtt 越小，得分也就越高
 * @param {Number}      upLostRate   - 上行丢包率，范围是[0 - 1.0]，例如0.3代表每向服务器发送10个数据包，可能有3个会在中途丢失。
 * @param {Number}      downLostRate - 下行丢包率，范围是[0 - 1.0]，例如0.2代表从服务器每收取10个数据包，可能有2个会在中途丢失。
 * @param {Number}      rtt          - 延迟（毫秒），代表 SDK 跟服务器一来一回之间所消耗的时间，这个值越小越好，正常数值在10ms - 100ms之间。
 * @param {Number}      availableUpBandwidth          - 上行带宽（kbps，-1：无效值）。
 * @param {Number}      availableDownBandwidth        - 下行带宽（kbps，-1：无效值）。
 * @param {Number}      upJitter     - 上行数据包抖动（ms)
 * @param {Number}      downJitter   - 下行数据包抖动（ms)
 *
 */
export declare class TRTCSpeedTestResult {
    success: boolean;
    errMsg: string;
    ip: string;
    quality: TRTCQuality;
    upLostRate: number;
    downLostRate: number;
    rtt: number;
    availableUpBandwidth: number;
    availableDownBandwidth: number;
    upJitter: number;
    downJitter: number;
    constructor(success?: boolean, errMsg?: string, ip?: string, quality?: TRTCQuality, upLostRate?: number, downLostRate?: number, rtt?: number, availableUpBandwidth?: number, availableDownBandwidth?: number, upJitter?: number, downJitter?: number);
}
/**
 * 记录矩形的四个点坐标
 *
 * @param {Number} left   - 左坐标
 * @param {Number} top    - 上坐标
 * @param {Number} right  - 右坐标
 * @param {Number} bottom - 下坐标
 *
 */
export declare class Rect {
    left: number;
    top: number;
    right: number;
    bottom: number;
    constructor(left?: number, top?: number, right?: number, bottom?: number);
}
/**
 * 云端混流中每一路子画面的位置信息
 *
 * 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   - 指定该路流的混合内容（只混音频、只混视频、混合音视频、混入水印）
 * @param {Number}              renderMode  - 该画面在输出时的显示模式
 * @param {String}              image       - 占位图或水印图
 *
 */
export declare class TRTCMixUser {
    userId: string;
    roomId: string;
    rect: null | Rect;
    zOrder: number;
    pureAudio: boolean;
    streamType: TRTCVideoStreamType;
    inputType: TRTCMixInputType;
    renderMode: number;
    image: string;
    constructor(userId?: string, roomId?: string, rect?: null | Rect, zOrder?: number, pureAudio?: boolean, streamType?: TRTCVideoStreamType, inputType?: TRTCMixInputType, renderMode?: number, image?: string);
}
export 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
}
export declare enum TRTCMixInputType {
    TRTCMixInputTypeUndefined = 0,
    TRTCMixInputTypeAudioVideo = 1,
    TRTCMixInputTypePureVideo = 2,
    TRTCMixInputTypePureAudio = 3,
    TRTCMixInputTypeWatermark = 4
}
export declare enum TRTCAudioRecordingContent {
    TRTCAudioRecordingContentAll = 0,
    TRTCAudioRecordingContentLocal = 1,
    TRTCAudioRecordingContentRemote = 2
}
export declare enum TRTCPublishMode {
    TRTCPublishModeUnknown = 0,
    TRTCPublishBigStreamToCdn = 1,
    TRTCPublishSubStreamToCdn = 2,
    TRTCPublishMixStreamToCdn = 3,
    TRTCPublishMixStreamToRoom = 4
}
export declare enum TRTCVoiceReverbType {
    TRTCLiveVoiceReverbType_0 = 0,
    TRTCLiveVoiceReverbType_1 = 1,
    TRTCLiveVoiceReverbType_2 = 2,
    TRTCLiveVoiceReverbType_3 = 3,
    TRTCLiveVoiceReverbType_4 = 4,
    TRTCLiveVoiceReverbType_5 = 5,
    TRTCLiveVoiceReverbType_6 = 6,
    TRTCLiveVoiceReverbType_7 = 7,
    TRTCLiveVoiceReverbType_8 = 8,
    TRTCLiveVoiceReverbType_9 = 9,
    TRTCLiveVoiceReverbType_10 = 10,
    TRTCLiveVoiceReverbType_11 = 11
}
export declare enum TRTCVoiceChangerType {
    TRTCLiveVoiceChangerType_0 = 0,
    TRTCLiveVoiceChangerType_1 = 1,
    TRTCLiveVoiceChangerType_2 = 2,
    TRTCLiveVoiceChangerType_3 = 3,
    TRTCLiveVoiceChangerType_4 = 4,
    TRTCLiveVoiceChangerType_5 = 5,
    TRTCLiveVoiceChangerType_6 = 6,
    TRTCLiveVoiceChangerType_7 = 7,
    TRTCLiveVoiceChangerType_8 = 8,
    TRTCLiveVoiceChangerType_9 = 9,
    TRTCLiveVoiceChangerType_10 = 10,
    TRTCLiveVoiceChangerType_11 = 11
}
export declare enum TRTCPluginType {
    TRTCPluginTypeUnknown = 0,
    TRTCPluginTypeVideoProcess = 1,
    TRTCPluginTypeMediaEncryptDecrypt = 2,
    TRTCPluginTypeAudioProcess = 3
}
export interface PluginInfo {
    id: string;
    deviceId?: string;
    enable: () => number;
    disable: () => number;
    setParameter: (param: string) => number;
}
export declare type TRTCPluginInfo = PluginInfo;
export declare type TRTCVideoProcessPluginOptions = {
    enable?: boolean;
    pixelFormat?: TRTCVideoPixelFormat;
};
export declare type TRTCMediaEncryptDecryptPluginOptions = {
    enable?: boolean;
};
export declare type TRTCAudioProcessPluginOptions = {
    enable?: boolean;
};
/**
 * 云端混流（转码）配置
 *
 * 包括最终编码质量和各路画面的摆放位置
 *
 * @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>
 *                                   【推荐取值】默认值：''，即房间里的多路流会混合到该接口调用者的视频流上。
 */
export 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[];
    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?: any[], streamId?: string);
}
/**
 * CDN 旁路推流参数
 *
 * @param {Number} appId - 腾讯云 AppID，请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {Number} bizId - 腾讯云直播 bizId，请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用，单击【帐号信息】后，在“直播信息”中获取
 * @param {String} url - 旁路转推的 URL
 * @param {String} streamId - 需要转推的 streamId，默认值：空值。如果不填写，则默认转推调用者的旁路流。
 *
 */
export declare class TRTCPublishCDNParam {
    appId: number;
    bizId: number;
    url: null | string;
    streamId: null | string;
    constructor(appId?: number, bizId?: number, url?: null | string, streamId?: null | string);
}
export declare type TRTCPublishCdnUrl = {
    rtmpUrl: string;
    isInternalLine: boolean;
};
export declare type TRTCUser = {
    userId: string;
    intRoomId: number;
    strRoomId: string;
};
export declare type TRTCPublishTarget = {
    mode: TRTCPublishMode;
    cdnUrlList: TRTCPublishCdnUrl[];
    mixStreamIdentity: TRTCUser;
};
export declare type TRTCStreamEncoderParam = {
    videoEncodedWidth: number;
    videoEncodedHeight: number;
    videoEncodedFPS: number;
    videoEncodedGOP: number;
    videoEncodedKbps: number;
    audioEncodedSampleRate: number;
    audioEncodedChannelNum: number;
    audioEncodedKbps: number;
    audioEncodedCodecType: number;
    videoEncodedCodecType: number;
    videoSeiParams: string;
};
export declare type TRTCVideoLayout = {
    rect: Rect;
    zOrder: number;
    fillMode: TRTCVideoFillMode;
    backgroundColor: number;
    placeHolderImage: string;
    fixedVideoUser: TRTCUser;
    fixedVideoStreamType: TRTCVideoStreamType;
};
export declare type TRTCWatermark = {
    watermarkUrl: string;
    rect: Rect;
    zOrder: number;
};
export declare type TRTCStreamMixingConfig = {
    backgroundColor: number;
    backgroundImage: string;
    videoLayoutList: TRTCVideoLayout[];
    audioMixUserList: TRTCUser[];
    watermarkList: TRTCWatermark[];
};
/**
 * 录音参数
 *
 * @param {String} filePath                            - 【字段含义】录音文件的保存路径（必填）。<br/>
 *【特别说明】该路径需精确到文件名及格式后缀，格式后缀用于决定录音文件的格式，目前支持的格式有 PCM、WAV 和 AAC。<br/>
 * 例如：假如您指定路径为 "mypath/record/audio.aac"，代表您希望 SDK 生成一个 AAC 格式的音频录制文件。<br/>
 * 请您指定一个有读写权限的合法路径，否则录音文件无法生成。<br/>
 * @param {TRTCAudioRecordingContent} recordingContent - 【字段含义】音频录制内容类型。
 *                                                       【特别说明】默认录制所有本地和远端音频。
 * @param {Number} maxDurationPerFile                  - 【字段含义】maxDurationPerFile 录制文件分片时长，单位毫秒，最小值10000。默认值为0，表示不分片。
 */
export declare class TRTCAudioRecordingParams {
    filePath: null | string;
    recordingContent: TRTCAudioRecordingContent;
    maxDurationPerFile: number;
    constructor(filePath?: null | string, recordingContent?: TRTCAudioRecordingContent, maxDurationPerFile?: number);
}
/**
 * 音效
 *
 * @param {Number} effectId  - 【字段含义】音效 ID<br>
 *                             【特殊说明】SDK 允许播放多路音效，因此需要音效 ID 进行标记，用于控制音效的开始、停止、音量等
 * @param {String} path      - 【字段含义】音效路径
 * @param {Number} loopCount - 【字段含义】循环播放次数<br>
 *                             【推荐取值】取值范围为0 - 任意正整数，默认值：0。0表示播放音效一次；1表示播放音效两次；以此类
 * @param {Boolean} publish  - 【字段含义】音效是否上行<br>
 *                             【推荐取值】YES：音效在本地播放的同时，会上行至云端，因此远端用户也能听到该音效；NO：音效不会上行至云端，因此只能在本地听到该音效。默认值：NO
 * @param {Number} volume    - 【字段含义】音效音量<br>
 *                             【推荐取值】取值范围为0 - 100；默认值：100
 */
export declare class TRTCAudioEffectParam {
    effectId: number;
    path: string;
    loopCount: number;
    publish: boolean;
    volume: number;
    constructor(effectId?: number, path?: string, loopCount?: number, publish?: boolean, volume?: number);
}
/**
 * 本地的音视频统计信息
 *
 * @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 - 流类型（大画面 | 小画面 | 辅路画面）
 *
 */
export declare class TRTCLocalStatistics {
    width: number;
    height: number;
    frameRate: number;
    videoBitrate: number;
    audioSampleRate: 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} audioPacketLoss - 音频流的总丢包率（％）
 *                                   audioPacketLoss 代表音频流历经`主播>云端>观众`这样一条完整的传输链路后，最终在观众端统计到的丢包率。
 *                                   audioPacketLoss 越小越好，丢包率为0即表示该路音频流的所有数据均已经完整地到达了观众端。
 *                                   如果出现了 downLoss == 0 但 audioPacketLoss != 0 的情况，说明该路音频流在“云端=>观众”这一段链路上没有出现丢包，
 *                                   但是在`主播>云端`这一段链路上出现了不可恢复的丢包。
 * @param {Number} videoPacketLoss - 该路视频流的总丢包率（％）
 *                                   videoPacketLoss 代表该路视频流历经`主播>云端>观众`这样一条完整的传输链路后，最终在观众端统计到的丢包率。
 *                                   videoPacketLoss 越小越好，丢包率为0即表示该路视频流的所有数据均已经完整地到达了观众端。
 *                                   如果出现了 downLoss == 0 但 videoPacketLoss != 0 的情况，说明该路视频流在`云端>观众`这一段链路上没有出现丢包，
 *                                   但是在`主播>云端`这一段链路上出现了不可恢复的丢包。
 * @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} point2PointDelay     - 端到端延迟（ms）
 *                                        point2PointDelay 代表 “主播=>云端=>观众” 的延迟，更准确地说，它代表了“采集=>编码=>网络传输=>接收=>缓冲=>解码=>播放” 全链路的延迟。
 *                                        point2PointDelay 需要本地和远端的 SDK 均为 8.5 及以上的版本才生效，若远端用户为 8.5 以前的版本，此数值会一直为0，代表无意义。
 * @param {Number} audioTotalBlockTime    - 音频播放卡顿累计时长（ms）
 * @param {Number} audioBlockRate    - 音频播放卡顿率，音频卡顿累计时长占音频总播放时长的百分比 (%)
 * @param {Number} videoTotalBlockTime    - 视频播放卡顿累计时长（ms）
 * @param {Number} videoBlockRate    - 视频播放卡顿率，视频卡顿累计时长占音频总播放时长的百分比（%）
 * @param {Number} finalLoss         - 该线路的总丢包率（％）。已废弃，不推荐使用；建议使用 audioPacketLoss、videoPacketLoss 替代
 * @param {Number} remoteNetworkUplinkLoss - 该用户从 SDK 到云端的上行丢包率，单位 (%)
 *                                           该数值越小越好，如果 remoteNetworkUplinkLoss 为 0%，则意味着上行链路的网络质量很好，上传到云端的数据包基本不发生丢失。
 *                                           如果 remoteNetworkUplinkLoss 为 30%，则意味着 SDK 向云端发送的音视频数据包中，会有 30% 丢失在传输链路中。
 * @param {Number} remoteNetworkRTT        - 该用户从 SDK 到云端的往返延时，单位 ms
 *                                           该数值代表从 SDK 发送一个网络包到云端，再从云端回送一个网络包到 SDK 的总计耗时，也就是一个网络包经历 “SDK=>云端=>SDK” 的总耗时。
 *                                           该数值越小越好：如果 remoteNetworkRTT < 50ms，意味着较低的音视频通话延迟；如果 remoteNetworkRTT > 200ms，则意味着较高的音视频通话延迟。
 *                                           需要特别解释的是，remoteNetworkRTT 代表 “SDK=>云端=>SDK” 的总耗时，所以不需要区分 remoteNetworkUpRTT 和 remoteNetworkDownRTT
 * @param {TRTCVideoStreamType} streamType - 流类型（大画面 | 小画面 | 辅路画面）
 *
 */
export declare class TRTCRemoteStatistics {
    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;
    audioPacketLoss: number;
    videoPacketLoss: number;
    point2PointDelay: number;
    remoteNetworkUplinkLoss: number;
    remoteNetworkRTT: number;
    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, audioPacketLoss?: number, videoPacketLoss?: number, point2PointDelay?: number, remoteNetworkUplinkLoss?: number, remoteNetworkRTT?: number);
}
/**
 * 统计数据
 *
 * @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 到云端的往返延时，单位 ms。
 *                             该数值代表从 SDK 发送一个网络包到云端，再从云端回送一个网络包到 SDK 的总计耗时，也就是一个网络包经历 “SDK=>云端=>SDK” 的总耗时。
 *                             该数值越小越好：如果 rtt < 50ms，意味着较低的音视频通话延迟；如果 rtt > 200ms，则意味着较高的音视频通话延迟。
 *                             需要特别解释的是，rtt 代表 “SDK=>云端=>SDK” 的总耗时，所以不需要区分 upRtt 和 downRtt。
 * @param {Number} receivedBytes - 总接收字节数（包含信令和音视频）
 * @param {Number} sentBytes     - 总发送字节总数（包含信令和音视频）
 * @param {TRTCLocalStatistics[]} localStatisticsArray - 自己本地的音视频统计信息，由于可能有大画面、小画面以及辅路画面等多路的情况，所以是一个数组
 * @param {Number} localStatisticsArraySize - 数组 localStatisticsArray 的大小
 * @param {TRTCRemoteStatistics[]} remoteStatisticsArray - 远端成员的音视频统计信息，由于可能有大画面、小画面以及辅路画面等多路的情况，所以是一个数组
 * @param {Number} remoteStatisticsArraySize - 数组 remoteStatisticsArray 的大小
 * @param {Number} gatewayRtt - 从 SDK 到本地路由器的往返时延，单位 ms。
 *                              该数值代表从 SDK 发送一个网络包到本地路由器网关，再从网关回送一个网络包到 SDK 的总计耗时，也就是一个网络包经历 “SDK>网关>SDK” 的总耗时。
 *                              该数值越小越好：如果 gatewayRtt < 50ms，意味着较低的音视频通话延迟；如果 gatewayRtt > 200ms，则意味着较高的音视频通话延迟。
 * @param {Number} systemMemoryInMB - 当前系统的内存，单位 (MB)
 * @param {Number} systemMemoryUsageInMB - 当前系统内存占用，单位 (MB)
 * @param {Number} appMemoryUsageInMB - 当前应用的内存占用，单位 (MB)
 *
 */
export declare class TRTCStatistics {
    upLoss: number;
    downLoss: number;
    appCpu: number;
    systemCpu: number;
    rtt: number;
    receivedBytes: number;
    sentBytes: number;
    localStatisticsArray: TRTCLocalStatistics[];
    localStatisticsArraySize: number;
    remoteStatisticsArray: TRTCRemoteStatistics[];
    remoteStatisticsArraySize: number;
    gatewayRtt: number;
    appMemoryUsageInMB: number;
    systemMemoryUsageInMB: number;
    systemMemoryInMB: number;
    constructor(upLoss?: number, downLoss?: number, appCpu?: number, systemCpu?: number, rtt?: number, receivedBytes?: number, sentBytes?: number, localStatisticsArray?: TRTCLocalStatistics[], localStatisticsArraySize?: number, remoteStatisticsArray?: TRTCRemoteStatistics[], remoteStatisticsArraySize?: number, gatewayRtt?: number, appMemoryUsageInMB?: number, systemMemoryUsageInMB?: number, systemMemoryInMB?: number);
}
/**
 * 音乐参数
 *
 * @param {Number} id    - 音乐 ID
 * @param {String} path  - 音乐文件的绝对路径
 * @param {Number} loopCount  - 音乐循环播放的次数
 * @param {Boolean} publish  - 是否将音乐传到远端
 * @param {Boolean} isShortFile  - 播放的是否为短音乐文件
 * @param {Number} startTimeMS  - 音乐开始播放时间点，单位毫秒
 * @param {Number} endTimeMS  - 音乐结束播放时间点，单位毫秒，0表示播放至文件结尾。
 *
 */
export declare class AudioMusicParam {
    id: number;
    path: string;
    loopCount: number;
    publish: boolean;
    isShortFile: boolean;
    startTimeMS: number;
    endTimeMS: number;
    constructor(id?: number, path?: string, loopCount?: number, publish?: boolean, isShortFile?: boolean, startTimeMS?: number, endTimeMS?: number);
}
export declare type TRTCAudioMusicParam = {
    id: number;
    path: string;
    loopCount: number;
    publish: boolean;
    isShortFile: boolean;
    startTimeMS: number;
    endTimeMS: number;
};
/**
 * 背景音乐播放事件监听器类型定义
 */
export declare type TRTCMusicPlayObserver = {
    /**
     * 背景音乐开始播放事件
     * @param {Number} id - 背景音乐 ID
     * @param {Number} errCode - 错误码。0: 开始播放成功；-4001: 打开文件失败，如音频文件格式不支持，本地音频文件不存在，网络音频文件无法访问等。
     * @returns
     */
    onStart: (id: number, errCode: number) => void | null;
    /**
     * 背景音乐的播放进度事件
     * @param {Number} id - 背景音乐 ID
     * @param {Number} curPtsMS - 背景音乐当前播放时间戳
     * @param {Number} durationMS - 背景音乐时长
     * @returns
     */
    onPlayProgress: (id: number, curPtsMS: number, durationMS: number) => void | null;
    /**
     * 背景音乐播放完毕事件
     * @param {Number} id - 背景音乐 ID
     * @param {Number} errCode - 错误码。0: 播放结束；-4002: 解码失败，如音频文件损坏，网络音频文件服务器无法访问等。
     * @returns
     */
    onComplete: (id: number, errCode: number) => void | null;
};
export declare type TRTCMusicPreloadObserver = {
    /**
     * 背景音乐预加载进度
     * @param {Number} id -  背景音乐 ID
     * @param {Number} progress -  加载进度
     */
    onLoadProgress: (id: number, progress: number) => void;
    /**
     *  背景音乐预加载出错
     * @param {Number} id -  背景音乐 ID
     * @param {Number} errorCode - 错误码
     */
    onLoadError: (id: number, errorCode: number) => void;
};
/**
 * 音频数据自定义回调事件监听器类型定义
 */
export declare type TRTCAudioFrameCallback = {
    /**
     * 本地采集并经过音频模块前处理后的音频数据回调
     * @param {TRTCAudioFrame} frame - PCM 格式的音频数据帧(只读)
     * @returns
     */
    onCapturedAudioFrame: (frame: TRTCAudioFrame) => void | null;
    /**
     * 本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调
     * @param {TRTCAudioFrame} frame - PCM 格式的音频数据帧(只读)
     * @returns
     */
    onLocalProcessedAudioFrame: (frame: TRTCAudioFrame) => void | null;
    /**
     * 混音前的每一路远程用户的音频数据
     * @param {TRTCAudioFrame} frame - PCM 格式的音频数据帧(只读)
     * @param {String} userId - 用户ID
     * @returns
     */
    onPlayAudioFrame: (frame: TRTCAudioFrame, userId: string) => void | null;
    /**
     * 将各路待播放音频混合之后并在最终提交系统播放之前的数据回调
     * @param {TRTCAudioFrame} frame - PCM 格式的音频数据帧(只读)
     * @returns
     */
    onMixedPlayAudioFrame: (frame: TRTCAudioFrame) => void | null;
    /**
     * SDK 所有音频混合后的音频数据（包括采集到的和待播放的）
     * @param {TRTCAudioFrame} frame - PCM 格式的音频数据帧(只读)
     * @returns
     */
    onMixedAllAudioFrame: (frame: TRTCAudioFrame) => void | null;
};
/**
 * 房间切换参数
 *
 * @param {Number} roomId    - 房间ID，在同一个房间内的用户可以看到彼此并进行视频通话, 若您选用 strRoomId，则 roomId 需要填写为0。
 * @param {String} strRoomId    - 字符串房间号码 [选填]，在同一个房间内的用户可以看到彼此并进行视频通话, roomId 和 strRoomId 必须填一个。若两者都填，则优先选择 roomId。
 * @param {String} userSig    - 用户签名 [选填]，当前 userId 对应的验证签名，相当于登录密码。不填时，SDK 会继续使用旧的 userSig，
 *                               但用户必须保证旧的 userSig 仍在有效期内，否则会造成进房失败等后果。
 * @param {String} privateMapKey - 房间签名 [选填]，当您希望某个房间只能让特定的 userId 进入时，需要使用 privateMapKey 进行权限保护。
 *
 */
export declare class TRTCSwitchRoomParam {
    roomId: number;
    strRoomId: string;
    userSig: string;
    privateMapKey: string;
    constructor(roomId?: number, strRoomId?: string, userSig?: string, privateMapKey?: string);
}
export interface VideoFramePayload {
    uid: string;
    type: TRTCVideoStreamType;
    rotation: TRTCVideoRotation;
    timestamp: number;
    data: {
        width: number;
        height: number;
        data: ArrayBuffer;
    };
}
export declare class VideoBufferInfo {
    id: number;
    userId: string;
    buffer: Buffer | null;
    streamType: TRTCVideoStreamType;
    width: number;
    height: number;
    pixelFormat: TRTCVideoPixelFormat;
    pixelLength: number;
    constructor(options?: {
        id: number;
        userId: string;
        width: number;
        height: number;
        streamType: TRTCVideoStreamType;
        pixelFormat: TRTCVideoPixelFormat;
    });
}
/**
 * 构造函数参数
 */
export interface TRTCInitConfig {
    networkProxy?: {
        host: string;
        port: number;
        username: string;
        password: string;
        config: {
            supportHttps: boolean;
            supportTcp: boolean;
            supportUdp: boolean;
        };
    };
    isIPCMode?: boolean;
}
