import TRTCMediaMixingManager, { TRTCMediaMixingService } from './extensions/MediaMixingManager';
import { AudioMusicParam, Rect, TRTCAppScene, TRTCAudioQuality, TRTCBeautyStyle, TRTCDeviceType, TRTCLogLevel, TRTCAudioFrame, TRTCVideoFillMode, TRTCVideoRotation, TRTCVideoStreamType, TRTCWaterMarkSrcType, TRTCPluginType, TRTCPluginInfo, TRTCVideoProcessPluginOptions, TRTCMediaEncryptDecryptPluginOptions, TRTCAudioRecordingParams, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureProperty, TRTCSpeedTestParams, TRTCRecordType, TRTCDeviceInfo, TRTCCameraCaptureParams, TRTCImageBuffer, TRTCInitConfig, TRTCAudioParallelParams, TRTCVoiceReverbType, TRTCVoiceChangerType, TRTCMusicPlayObserver, TRTCAudioFrameCallback, TRTCAudioProcessPluginOptions, TRTCPublishTarget, TRTCStreamEncoderParam, TRTCStreamMixingConfig, TRTCRenderParams, TRTCRoleType, TRTCSwitchRoomParam, TRTCVideoFrame, TRTCVideoPixelFormat, TRTCVideoBufferType } from './trtc_define';
import { TRTCVodPlayerEventMap } from './vod_player';
export interface TRTCVideoRenderCallback {
    onRenderVideoFrame(userId: string, streamType: TRTCVideoStreamType, frame: TRTCVideoFrame): void;
}
export interface IVodPlayer {
    on<K extends keyof TRTCVodPlayerEventMap>(event: K, listener: (...args: TRTCVodPlayerEventMap[K]) => void): this;
    on(event: string | symbol, listener: (...args: any[]) => void): this;
    off<K extends keyof TRTCVodPlayerEventMap>(event: K, listener: (...args: TRTCVodPlayerEventMap[K]) => void): this;
    off(event: string | symbol, listener: (...args: any[]) => void): this;
    setView(view: HTMLElement | null): void;
    setRenderRotation(rotation: TRTCVideoRotation): void;
    setFillMode(mode: TRTCVideoFillMode): void;
    setMirror(mirror: boolean): void;
    preload(): void;
    start(): void;
    pause(): void;
    resume(): void;
    seek(msPos: number): void;
    switchSource(newMediaFile: string): void;
    stop(): void;
    getDuration(): number;
    getWidth(): number;
    getHeight(): number;
    mute(mute: boolean): void;
    setVolume(volume: number): void;
    publishVideo(): void;
    publishAudio(): void;
    unpublishVideo(): void;
    unpublishAudio(): void;
}
export interface ITRTCCloud {
    createSubCloud(config?: TRTCInitConfig): ITRTCCloud | null;
    enterRoom(params: any, scene: TRTCAppScene): void;
    exitRoom(): void;
    switchRoom(params: TRTCSwitchRoomParam): void;
    switchRole(role: TRTCRoleType, privateMapKey?: string): void;
    connectOtherRoom(params: string): void;
    disconnectOtherRoom(): void;
    setDefaultStreamRecvMode(autoRecvAudio: boolean, autoRecvVideo: boolean): void;
    startPublishMediaStream(target: TRTCPublishTarget, params: TRTCStreamEncoderParam | null, config: TRTCStreamMixingConfig | null): void;
    updatePublishMediaStream(taskId: string, target: TRTCPublishTarget | null, params: TRTCStreamEncoderParam | null, config: TRTCStreamMixingConfig | null): void;
    stopPublishMediaStream(taskId: string): void;
    startLocalPreview(views: Array<HTMLElement> | HTMLElement | null): void;
    stopLocalPreview(): void;
    updateLocalView(views: Array<HTMLElement> | HTMLElement | null): void;
    setCameraCaptureParams(params: TRTCCameraCaptureParams): void;
    muteLocalVideo(mute: boolean, streamType?: TRTCVideoStreamType): void;
    setVideoMuteImage(imageBuffer: TRTCImageBuffer | null, fps: number): void;
    startRemoteView(userId: string, views: Array<HTMLElement> | HTMLElement | null, streamType?: TRTCVideoStreamType): void;
    stopRemoteView(userId: string, streamType?: TRTCVideoStreamType): void;
    updateRemoteView(userId: string, views: Array<HTMLElement> | HTMLElement | null, streamType: TRTCVideoStreamType): void;
    stopAllRemoteView(): void;
    muteRemoteVideoStream(userId: string, mute: boolean, streamType?: TRTCVideoStreamType): void;
    muteAllRemoteVideoStreams(mute: boolean): void;
    setVideoEncoderParam(params: any): void;
    setLocalVideoRenderCallback(pixelFormat: TRTCVideoPixelFormat, bufferType: TRTCVideoBufferType, callback: TRTCVideoRenderCallback | null): number;
    setRemoteVideoRenderCallback(userId: string, pixelFormat: TRTCVideoPixelFormat, bufferType: TRTCVideoBufferType, callback: TRTCVideoRenderCallback | null): number;
    setNetworkQosParam(params: any): void;
    setLocalRenderParams(params: TRTCRenderParams): void;
    setRemoteRenderParams(userId: string, streamType: TRTCVideoStreamType, params: TRTCRenderParams): void;
    setVideoEncoderRotation(rotation: TRTCVideoRotation): void;
    setVideoEncoderMirror(mirror: boolean): void;
    enableSmallVideoStream(enable: boolean, params: any): void;
    setRemoteVideoStreamType(userId: string, streamType: TRTCVideoStreamType): void;
    snapshotVideo(userId: string, type: TRTCVideoStreamType): void;
    startLocalRecording(options: {
        filePath: string;
        recordType: TRTCRecordType;
        interval: number;
    }): void;
    stopLocalRecording(): void;
    startLocalAudio(quality?: TRTCAudioQuality): void;
    stopLocalAudio(): void;
    muteLocalAudio(mute: boolean): void;
    muteRemoteAudio(userId: string, mute: boolean): void;
    muteAllRemoteAudio(mute: boolean): void;
    setRemoteAudioVolume(userId: string, volume: number): void;
    setAudioCaptureVolume(volume: number): void;
    getAudioCaptureVolume(): number;
    setAudioPlayoutVolume(volume: number): void;
    getAudioPlayoutVolume(): number;
    enableAudioVolumeEvaluation(interval: number): void;
    startAudioRecording(params: TRTCAudioRecordingParams | string): number;
    stopAudioRecording(): void;
    setRemoteAudioParallelParams(param: TRTCAudioParallelParams): void;
    enable3DSpatialAudioEffect(enabled: boolean): void;
    updateSelf3DSpatialPosition(position: Array<number>, axisForward: Array<number>, axisRight: Array<number>, axisUp: Array<number>): void;
    updateRemote3DSpatialPosition(userId: string, position: Array<number>): void;
    set3DSpatialReceivingRange(userId: string, range: number): void;
    setAudioQuality(quality: TRTCAudioQuality): void;
    getCameraDevicesList(): Array<TRTCDeviceInfo>;
    setCurrentCameraDevice(deviceId: string): void;
    getCurrentCameraDevice(): TRTCDeviceInfo;
    getMicDevicesList(): Array<TRTCDeviceInfo>;
    getCurrentMicDevice(): TRTCDeviceInfo;
    setCurrentMicDevice(micId: string): void;
    getCurrentMicDeviceVolume(): number;
    setCurrentMicDeviceVolume(volume: number): void;
    setCurrentMicDeviceMute(mute: boolean): void;
    getCurrentMicDeviceMute(): boolean;
    getSpeakerDevicesList(): Array<TRTCDeviceInfo>;
    getCurrentSpeakerDevice(): TRTCDeviceInfo;
    setCurrentSpeakerDevice(speakerId: string): void;
    getCurrentSpeakerVolume(): number;
    setCurrentSpeakerVolume(volume: number): void;
    setCurrentSpeakerDeviceMute(mute: boolean): void;
    getCurrentSpeakerDeviceMute(): boolean;
    enableFollowingDefaultAudioDevice(deviceType: TRTCDeviceType, enable: boolean): void;
    setBeautyStyle(style: TRTCBeautyStyle, beauty: number, white: number, ruddiness: number): void;
    setWaterMark(streamType: TRTCVideoStreamType, srcData: ArrayBuffer | string | null, srcType: TRTCWaterMarkSrcType, nWidth: number, nHeight: number, xOffset: number, yOffset: number, fWidthRatio: number): void;
    getScreenCaptureSources(thumbWidth: number, thumbHeight: number, iconWidth: number, iconHeight: number): Array<TRTCScreenCaptureSourceInfo>;
    selectScreenCaptureTarget(source: TRTCScreenCaptureSourceInfo | number, captureRect: Rect | string, property: TRTCScreenCaptureProperty | string, deprecatedCaptureRect?: Rect, captureMouse?: boolean, highlightWindow?: boolean): void;
    startScreenCapture(view?: HTMLElement | null, type?: TRTCVideoStreamType, params?: any): void;
    pauseScreenCapture(): void;
    resumeScreenCapture(): void;
    stopScreenCapture(): void;
    setSubStreamEncoderParam(params: any): void;
    setSubStreamMixVolume(volume: number): void;
    addExcludedShareWindow(win: string): void;
    removeExcludedShareWindow(win: string): void;
    removeAllExcludedShareWindow(): void;
    addIncludedShareWindow(win: string): void;
    removeIncludedShareWindow(win: string): void;
    removeAllIncludedShareWindow(): void;
    enableCustomAudioCapture(enable: boolean): void;
    sendCustomAudioData(frame: TRTCAudioFrame): void;
    enableMixExternalAudioFrame(enablePublish: boolean, enablePlayout: boolean): void;
    mixExternalAudioFrame(frame: TRTCAudioFrame): number;
    setMixExternalAudioVolume(publishVolume: number, playoutVolume: number): void;
    generateCustomPTS(): number;
    setAudioFrameCallback(callback: TRTCAudioFrameCallback): void;
    sendCustomCmdMsg(cmdId: number, msg: string, reliable: boolean, ordered: boolean): boolean;
    sendSEIMsg(msg: ArrayBuffer | ArrayBufferView, repeatCount: number): boolean;
    startSystemAudioLoopback(path?: string | null): void;
    stopSystemAudioLoopback(): void;
    setSystemAudioLoopbackVolume(volume: number): void;
    setMusicObserver(observer: TRTCMusicPlayObserver): void;
    startPlayMusic(musicParam: AudioMusicParam, callbackMap?: TRTCMusicPlayObserver): void;
    stopPlayMusic(id: number): void;
    pausePlayMusic(id: number): void;
    resumePlayMusic(id: number): void;
    getMusicCurrentPosInMS(id: number): Promise<number> | number;
    getMusicDurationInMS(path: string): number;
    seekMusicToPosInTime(id: number, pts: number): void;
    setAllMusicVolume(volume: number): void;
    setMusicPlayoutVolume(id: number, volume: number): void;
    setMusicPublishVolume(id: number, volume: number): void;
    enableVoiceEarMonitor(enable: boolean): void;
    setVoiceEarMonitorVolume(volumn: number): void;
    setVoiceCaptureVolume(volume: number): void;
    setVoicePitch(pitch: number): void;
    setVoiceReverbType(type: TRTCVoiceReverbType): void;
    setVoiceChangerType(type: TRTCVoiceChangerType): void;
    startSpeedTest(params: TRTCSpeedTestParams | number, userId?: string, userSig?: string): number;
    stopSpeedTest(): void;
    startCameraDeviceTest(view: HTMLElement): void;
    stopCameraDeviceTest(): void;
    startMicDeviceTest(interval: number, playback?: boolean): void;
    stopMicDeviceTest(): void;
    startSpeakerDeviceTest(testAudioFilePath: string): void;
    stopSpeakerDeviceTest(): void;
    getSDKVersion(): string;
    setLogLevel(level: TRTCLogLevel): void;
    setConsoleEnabled(enabled: boolean): void;
    setLogCompressEnabled(enabled: boolean): void;
    setLogDirPath(path: string): void;
    setLogCallback(callback?: ((log: string, level: TRTCLogLevel, module: string) => void) | null): void;
    setPluginParams(type: TRTCPluginType, options: TRTCVideoProcessPluginOptions | TRTCMediaEncryptDecryptPluginOptions | TRTCAudioProcessPluginOptions): void;
    addPlugin(options: {
        id: string;
        path: string;
        type?: TRTCPluginType;
        deviceId?: string;
    }): TRTCPluginInfo;
    removePlugin(id: string, deviceId?: string): void;
    setPluginCallback(pluginCallback: (pluginId: string, errorCode: number, msg: string) => void): void;
    callExperimentalAPI(jsonStr: string): void;
    getMediaMixingManager(): TRTCMediaMixingManager | null;
    getMediaMixingService(): TRTCMediaMixingService | null;
    destroy(): void;
}
