/**
 * 媒体适配器接口定义
 * 用于抽象不同平台的媒体设备操作
 */
/**
 * 媒体约束配置
 */
export interface MediaConstraintsConfig {
    audio?: boolean | MediaTrackConstraints;
    video?: boolean | MediaTrackConstraints;
}
/**
 * 屏幕共享约束配置
 */
export interface ScreenShareConstraintsConfig {
    video?: boolean | MediaTrackConstraints;
    audio?: boolean | MediaTrackConstraints;
    surfaceSwitching?: 'include' | 'exclude';
    selfBrowserSurface?: 'include' | 'exclude';
    systemAudio?: 'include' | 'exclude';
}
/**
 * 设备信息
 */
export interface DeviceInfo {
    deviceId: string;
    kind: string;
    label: string;
    groupId: string;
}
/**
 * 媒体适配器接口
 */
export interface MediaInterface {
    /**
     * 获取用户媒体流
     * @param constraints 媒体约束
     * @returns Promise<MediaStream>
     */
    getUserMedia(constraints: MediaConstraintsConfig): Promise<MediaStream>;
    /**
     * 获取屏幕共享流
     * @param constraints 屏幕共享约束
     * @returns Promise<MediaStream>
     */
    getDisplayMedia(constraints?: ScreenShareConstraintsConfig): Promise<MediaStream>;
    /**
     * 枚举媒体设备
     * @returns Promise<DeviceInfo[]>
     */
    enumerateDevices(): Promise<DeviceInfo[]>;
    /**
     * 检查浏览器是否支持指定的媒体约束
     * @param constraints 媒体约束
     * @returns Promise<boolean>
     */
    isSupportedConstraints(constraints: MediaTrackSupportedConstraints): Promise<boolean>;
    /**
     * 播放媒体流
     * @param stream 媒体流
     * @param element 视频元素
     * @returns Promise<void>
     */
    playStream(stream: MediaStream, element: HTMLVideoElement | HTMLAudioElement): Promise<void>;
    /**
     * 停止媒体流
     * @param stream 媒体流
     */
    stopStream(stream: MediaStream): void;
    /**
     * 获取音频音量
     * @param stream 媒体流
     * @returns number 音量大小 (0-1)
     */
    getAudioLevel(stream: MediaStream): Promise<number>;
    /**
     * 截取视频帧
     * @param videoTrack 视频轨道
     * @returns Promise<Blob> 图片Blob
     */
    captureFrame(videoTrack: MediaStreamTrack): Promise<Blob>;
}
