import { TRTCVideoStreamType, TRTCScreenCaptureSourceInfo, Rect, TRTCVideoEncParam, TRTCRenderParams, TRTCCameraCaptureParams, TRTCScreenCaptureProperty } from '../trtc_define';
export declare enum TRTCLocalMediaTranscodingError {
    Success = 0,
    Error = -1,
    InvalidParams = -2,
    NotFoundSource = -3,
    ImageSourceLoadFailed = -4,
    CameraNotAuthorized = -5,
    CameraIsOccupied = -6,
    CameraDisconnected = -7,
    UnsupportedOnlineVideoProtocol = -8,
    UnsupportedLocalVideoFileFormat = -9,
    OnlineVideoConnectFailed = -10,
    OnlineVideoConnectionLost = -11,
    NoAvailableHevcDecoder = -12,
    VideoFileNotExist = -13
}
export declare enum TRTCLocalMediaTranscodingSourceType {
    MediaSourceCamera = 0,
    MediaSourceScreen = 1,
    MediaSourceImage = 2,
    MediaSourceRemoteVideo = 3
}
export declare type TRTCLocalMediaTranscodingSource = {
    sourceType: TRTCLocalMediaTranscodingSourceType;
    cameraDeviceId?: string;
    screenSourceId?: string;
    imagePath?: string;
    userId?: string;
    rect: Rect;
    zOrder: number;
    renderParams: TRTCRenderParams;
};
export declare type TRTCLocalMediaTranscodingParams = {
    inputSourceList: TRTCLocalMediaTranscodingSource[];
    videoEncoderParams: TRTCVideoEncParam;
    canvasColor: number;
};
export interface ITRTCLocalMediaTranscoder {
    startTranscoding(streamType: TRTCVideoStreamType, params: TRTCLocalMediaTranscodingParams): void;
    updateTranscodingParams(params: TRTCLocalMediaTranscodingParams): void;
    stopTranscoding(): void;
    startCameraSource(deviceId: string): void;
    stopCameraSource(deviceId: string): void;
    setCameraCaptureParams(deviceId: string, cameraCaptureParams: TRTCCameraCaptureParams): void;
    startScreenSource(source: TRTCScreenCaptureSourceInfo, rect: Rect): void;
    stopScreenSource(sourceId: string): void;
    updateScreenCaptureProperty(sourceId: string, property: TRTCScreenCaptureProperty): void;
    addImageSource(path: string, fps: number): void;
    removeImageSource(path: string): void;
    setMixedVideoRenderView(view: HTMLElement | null): void;
    destroy(): void;
}
/**
 * @namespace TRTCLocalMediaTranscodingEvent
 * @description 目前只支持 Windows
 */
export declare enum TRTCLocalMediaTranscodingEvents {
    /**
     * @description 本地混流转码开启的事件
     *
     * 当您调用 [startTranscoding]{@link TRTCLocalMediaTranscoder#startTranscoding} 时启动本地混流转码时，是否启动成功会通过此回调同步给您。
     *
     * @event TRTCLocalMediaTranscodingEvent#onTranscodingStarted
     * @param {TRTCLocalMediaTranscodingError} errCode - 错误码。
     * @param {String} errMsg - 错误信息。
     */
    onTranscodingStarted = "onTranscodingStarted",
    /**
     * @description 本地混流转码停止的事件
     *
     * 当您通过 [stopTranscoding]{@link TRTCLocalMediaTranscoder#stopTranscoding} 停止本地混流转码时，SDK 便会抛出此事件。
     *
     * @event TRTCLocalMediaTranscodingEvent#onTranscodingStopped
     * @param {Number} reason - 停止原因，0：用户主动停止；1：被动停止，有可能采集源失效了
     * @param {String} errMsg - 停止原因描述信息。
     */
    onTranscodingStopped = "onTranscodingStopped",
    /**
     * @description 本地摄像头开启的事件
     * 当您调用 [startCameraSource]{@link TRTCLocalMediaTranscoder#startCameraSource} 打开摄像头时，是否启动成功会通过此回调同步给您。
     *
     * @event TRTCLocalMediaTranscodingEvent#onCameraSourceStarted
     * @param {String} deviceId -  摄像头设备 Id 。
     * @param {TRTCLocalMediaTranscodingError} errCode - 错误码。
     * @param {String} errMsg - 错误信息。
     */
    onCameraSourceStarted = "onCameraSourceStarted",
    /**
     * @description  本地摄像头停止的事件
     *
     * @event TRTCLocalMediaTranscodingEvent#onCameraSourceStopped
     * @param {String} deviceId -  摄像头设备 Id 。
     * @param {String} reasonMsg - 停止原因描述信息。
     */
    onCameraSourceStopped = "onCameraSourceStopped",
    /**
     * @description  图片混流开启的事件
     * 当您调用 [addImageSource]{@link TRTCLocalMediaTranscoder#addImageSource} 打开摄像头时，是否启动成功会通过此回调同步给您。
     *
     * @event TRTCLocalMediaTranscodingEvent#onImageSourceStarted
     * @param {String} imagePath -  图片路径 。
     * @param {TRTCLocalMediaTranscodingError} errCode - 错误码。
     * @param {String} errMsg - 错误信息。
     */
    onImageSourceStarted = "onImageSourceStarted",
    /**
     * @description 图片混流停止的事件
     * @event TRTCLocalMediaTranscodingEvent#onImageSourceStopped
     * @param {String} imagePath -  图片路径 。
     */
    onImageSourceStopped = "onImageSourceStopped",
    /**
     * @description 屏幕分享开启的事件
     * * 当您通过 [startScreenSource]{@link TRTCLocalMediaTranscoder#startScreenSource} 等相关接口启动屏幕分享时，SDK 便会抛出此事件回调。
     *
     * @event TRTCLocalMediaTranscodingEvent#onScreenSourceStarted
     * @param {String} sourceId - 屏幕或者窗口 Id 。
     * @param {TRTCLocalMediaTranscodingError} errCode - 错误码。
     * @param {String} errMsg - 错误信息。
     */
    onScreenSourceStarted = "onScreenSourceStarted",
    /**
     * @description 屏幕分享暂停的事件
     * @event TRTCLocalMediaTranscodingEvent#onScreenSourcePaused
     * @param {String} sourceId - 屏幕或者窗口 Id 。
     * @param {int} reason - 原因：
     * - 1：注意此字段的含义在 MAC 和 Windows
     * 平台有稍微差异。屏幕窗口不可见暂停（Mac）。表示设置屏幕分享参数导致的暂停（Windows）。
     * - 2：表示屏幕分享窗口被最小化导致的暂停（仅 Windows）。
     * - 3：表示屏幕分享窗口被隐藏导致的暂停（仅 Windows）。
     */
    onScreenSourcePaused = "onScreenSourcePaused",
    /**
     * @description 屏幕分享恢复的事件
     * @event TRTCLocalMediaTranscodingEvent#onScreenSourceResumed
     * @param {String} sourceId - 屏幕或者窗口 Id 。
     * @param {int} reason - 原因：
     * - 1：注意此字段的含义在 MAC 和 Windows
     * 平台有稍微差异。屏幕窗口恢复可见从而恢复分享（Mac）。屏幕分享参数设置完毕后自动恢复（Windows）。
     * - 2：表示屏幕分享窗口从最小化被恢复（仅 Windows）。
     * - 3：表示屏幕分享窗口从隐藏被恢复（仅 Windows）。
     */
    onScreenSourceResumed = "onScreenSourceResumed",
    /**
     * @description 屏幕分享停止的事件
     * 当您通过 [stopScreenSource]{@link TRTCLocalMediaTranscoder#stopScreenSource} 停止屏幕分享时，SDK 便会抛出此事件回调。
     *
     * @event TRTCLocalMediaTranscodingEvent#onScreenSourceStopped
     * @param {String} sourceId - 屏幕或者窗口 Id 。
     * @param {int} reason - 原因：0：用户主动停止；1：屏幕窗口关闭导致停止；2：表示屏幕分享的显示屏状态变更（如接口被拔出、投影模式变更等）。
     */
    onScreenSourceStopped = "onScreenSourceStopped",
    /**
     * @description  媒体源画面大小发生变化的事件
     * @event TRTCLocalMediaTranscodingEvent#onMediaSourceSizeChanged
     *
     * 当输入媒体源的画面大小发生变化时，会通过该接口返回该输入源最新的尺寸，您可以根据该尺寸来动态调整画面的比例。
     * @param {TRTCLocalMediaTranscodingSource}mediaSource 输入媒体源信息
     * @param {Object} newSize 输入媒体源最新的画面大小
     * @param {Number} newSize.cx 宽度
     * @param {Number} newSize.cy 高度
     */
    onMediaSourceSizeChanged = "onMediaSourceSizeChanged"
}
