import { IRenderer } from './index';
export declare type StreamType = 'main' | 'sub' | 'third' | 'fourth';
export interface DisplayConfig {
    /** 视频缩放模式：0=等比缩放(Fit), 1=非等比填满(Fill), 2=等比裁剪(Crop) */
    scalingMode?: number;
    /** JS 渲染层镜像（CSS transform rotateY 180deg），与 C++ SDK 镜像并存 */
    mirrorEnabled?: boolean;
    /** 视频 letterbox 区域背景色，CSS 颜色字符串，默认 'black' */
    backgroundColor?: string;
}
/**
 * RendererManager — 渲染器单例管理器（框架无关）
 *
 * 职责：
 *   - 管理所有视频流的渲染器实例（按 uid + streamType 索引）
 *   - 统一管理 DisplayConfig（scalingMode / mirrorEnabled / backgroundColor）
 *   - 对 React 或其他 UI 框架提供独立的动态更新接口
 *
 * 与 C++ SDK mirror 的关系：
 *   - C++ setLocalVideoMirrorMode / setLocalVideoMirrorModeWithType：影响帧数据 mirror 标志，
 *     决定远端用户所见（编码级别），同时也影响本地显示（通过帧头 mirror 位）
 *   - RendererManager.setMirrorMode：JS 层 CSS transform，纯本地显示覆盖，
 *     不影响编码，不影响远端所见。forceMirror !== undefined 时优先于帧数据 mirror 标志
 */
export declare class RendererManager {
    private static _instance;
    private entries;
    private renderMode;
    private constructor();
    static getInstance(): RendererManager;
    private key;
    /** 设置渲染器类型（1=WebGL, 2=Software），在 bind 之前调用 */
    setRenderMode(mode: number): void;
    /**
     * 绑定渲染器到 DOM 元素，并应用初始 DisplayConfig
     * 如果该 (uid, streamType) 已有渲染器，先销毁再重建
     */
    bind(uid: string, streamType: StreamType, element: Element, config?: DisplayConfig): void;
    /** 解绑并销毁渲染器 */
    unbind(uid: string, streamType: StreamType): void;
    /** 推入视频帧数据（由 SDK 帧回调调用） */
    drawFrame(uid: string, streamType: StreamType, imageData: any): void;
    /** 动态更新缩放模式（0=Fit, 1=Fill, 2=Crop） */
    setScalingMode(uid: string, streamType: StreamType, mode: number): void;
    /**
     * 动态更新 JS 层镜像（CSS transform）
     * 与 C++ SDK 的 setLocalVideoMirrorMode 并存，互不影响
     */
    setMirrorMode(uid: string, streamType: StreamType, enabled: boolean): void;
    /** 动态更新背景色（letterbox 区域），立即生效 */
    setBackgroundColor(uid: string, streamType: StreamType, color: string): void;
    /** 批量更新 DisplayConfig */
    setConfig(uid: string, streamType: StreamType, config: DisplayConfig): void;
    /** 读取当前 DisplayConfig（返回副本） */
    getConfig(uid: string, streamType: StreamType): DisplayConfig | null;
    hasRenderer(uid: string, streamType: StreamType): boolean;
    /** 仅供调试：获取渲染器实例 */
    getRenderer(uid: string, streamType: StreamType): IRenderer | null;
}
