import type { SchemaValue } from '@schema-element-editor/host-sdk';
/**
 * Bubble 处理器接口
 * @description 每个 Bubble 组件注册时提供的处理器
 */
export interface BubbleHandler {
    /** 获取当前内容 */
    getContent: () => string;
    /** 设置内容 */
    setContent: (content: string) => void;
    /** 自定义预览渲染（可选） */
    renderPreview?: (schema: SchemaValue, containerId: string) => (() => void) | void;
}
/**
 * Schema Editor Bridge 单例管理器
 * @description 全局唯一的监听器管理，避免多个 Bubble 组件冲突
 *
 * @remarks
 * 推荐使用 `useSchemaEditorBridge` Hook，它会自动管理启用状态和注册/注销流程。
 * Schema Editor 在开发环境下自动启用（process.env.NODE_ENV === 'development'）。
 * 如需直接使用 Manager，需手动调用 `setEnabled(true)` 启动 Bridge。
 *
 * @example
 * ```tsx
 * // 推荐方式：使用 useSchemaEditorBridge Hook（开发环境自动启用）
 * const { content, setContent } = useSchemaEditorBridge(id, initialContent);
 *
 * // 直接使用 Manager（需手动管理启用状态）
 * useEffect(() => {
 *   const manager = SchemaEditorBridgeManager.getInstance();
 *   manager.setEnabled(true); // 必须：启用 Bridge
 *   manager.register(id, {
 *     getContent: () => contentRef.current,
 *     setContent: (c) => setContent(c)
 *   });
 *   return () => manager.unregister(id);
 * }, [id]);
 * ```
 */
export declare class SchemaEditorBridgeManager {
    /** 单例实例 */
    private static instance;
    /** Bubble 处理器注册表：id -> handler */
    private registry;
    /** Bridge 实例 */
    private bridge;
    /** 是否启用 */
    private enabled;
    /** 预览 Root */
    private previewRoot;
    /** 当前正在编辑的 Bubble id */
    private currentEditingId;
    /** 私有构造函数，防止外部实例化 */
    private constructor();
    /**
     * 获取单例实例
     * @returns SchemaEditorBridgeManager 实例
     */
    static getInstance(): SchemaEditorBridgeManager;
    /**
     * 设置启用状态
     * @param enabled - 是否启用
     */
    setEnabled(enabled: boolean): void;
    /**
     * 检查是否启用
     */
    isEnabled(): boolean;
    /**
     * 注册 Bubble 处理器
     * @param id - Bubble 的唯一标识（data-id）
     * @param handler - 处理器对象
     */
    register(id: string, handler: BubbleHandler): void;
    /**
     * 注销 Bubble 处理器
     * @param id - Bubble 的唯一标识
     */
    unregister(id: string): void;
    /**
     * 获取注册的 Bubble 数量
     */
    getRegistrySize(): number;
    /**
     * 检查某个 ID 是否已注册
     */
    has(id: string): boolean;
    /**
     * 获取指定 id 的当前内容（用于测试或调试）
     */
    getContentById(id: string): string | undefined;
    /**
     * 启动 Bridge（幂等，已启动时直接返回）
     */
    private startBridge;
    /**
     * 停止 Bridge
     */
    private stopBridge;
    /**
     * 创建默认预览
     * @description 使用 MarkdownEditor 渲染 Markdown 预览
     */
    private createDefaultPreview;
    /**
     * 销毁单例（主要用于测试）
     */
    static destroy(): void;
}
export default SchemaEditorBridgeManager;
