import type { PennaOptions } from "../editor/PennaOptions";
import type { EditorLayoutMode } from "../editor/Layout";
import type { EditorCommand } from "../editor/commands/index.js";
import { Theme } from "../theme/Theme";
import { EventBus } from "../core/event/EventBus";
import type { StorageAPI } from "../core/StorageAPI";
export { DEFAULT_TOOLBAR_ITEMS } from "../editor/toolbar/defaults";
export type { ToolbarItem, ToolbarButtonItem, ToolbarMenuItem, ToolbarSeparatorItem, ToolbarContext, } from "../editor/toolbar/ToolbarItem";
export type { PennaOptions, OnAiRequest, OnParseFile, } from "../editor/PennaOptions";
export type { EditorOptions } from "../editor/editor/EditorOptions";
export type { PreviewOptions } from "../editor/preview/PreviewOptions";
export type { SideBarOptions, PennaFileItem, } from "../editor/sidebar/SideBarOptions";
export type { ToolbarOptions } from "../editor/toolbar/ToolbarOptions";
export type { StorageAPI } from "../core/StorageAPI";
export type { EditorLayoutMode } from "../editor/Layout";
/**
 * 创建带 class 的 DOM 元素
 *
 * @param tag 要创建的 HTML 标签名。
 * @param className 写入元素的 CSS 类名。
 * @param attrs 可选的属性键值对。
 * @returns 创建并初始化后的元素。
 */
export declare function el<K extends keyof HTMLElementTagNameMap>(tag: K, className: string, attrs?: Record<string, string>): HTMLElementTagNameMap[K];
/**
 * Penna 主控：搭建 UI 骨架，子模块经 {@link EventBus} 事件总线通讯。
 *
 * ```
 * .penna
 * ├── toolbar
 * ├── body → mask | sidebar | editor | divider | preview
 * ├── statusbar（可选）
 * └── dialog-host
 * ```
 */
export declare class Penna {
    private readonly rootEl;
    readonly theme: Theme;
    readonly eventBus: EventBus;
    readonly storage: StorageAPI;
    private readonly pennaEl;
    private readonly toolbarEl;
    private readonly bodyEl;
    private readonly sidebarEl;
    private readonly sidebarMaskEl;
    private readonly editorEl;
    private readonly dividerEl;
    private readonly previewEl;
    private readonly statusbarEl;
    private readonly preview;
    private readonly editor;
    private readonly toolbar;
    private readonly sidebar;
    private readonly divider;
    private readonly statusbar;
    private readonly commandBridge;
    private readonly dialogHost;
    private readonly scrollSync;
    private readonly log;
    private readonly onAiRequest?;
    private destroyed;
    /**
     * 创建 Penna 编辑器实例并组装各个 UI 子模块。
     *
     * @param rootEl 承载编辑器 DOM 树的根元素。
     * @param options 编辑器、主题及各子模块的初始化选项。
     */
    constructor(rootEl: HTMLElement, options?: PennaOptions);
    /** 获取当前 CodeMirror 中保存的 Markdown 文本。 */
    getMarkdown(): string;
    /**
     * 替换编辑器中的完整 Markdown 文本。
     *
     * @param markdown 要写入编辑器的新 Markdown 内容。
     */
    setMarkdown(markdown: string): void;
    /** 获取当前编辑器布局模式。 */
    getLayout(): EditorLayoutMode;
    /**
     * 切换编辑器布局，并由 Divider 更新相应 DOM 状态。
     *
     * @param mode 要应用的编辑器布局模式。
     */
    setLayout(mode: EditorLayoutMode): void;
    /** 判断侧边栏当前是否处于可见状态。 */
    isSidebarVisible(): boolean;
    /**
     * split 布局下显隐后会重算分栏比例
     *
     * @param show 为 `true` 时显示侧边栏，为 `false` 时隐藏。
     */
    setSidebarVisible(show: boolean): void;
    /** 切换侧边栏的显示与隐藏状态。 */
    toggleSidebar(): void;
    /**
     * 标记侧边栏中指定文件为当前活动文件。
     *
     * @param fileId 要激活的文件标识。
     */
    setSidebarActiveFile(fileId: string): void;
    /**
     * 工具栏 / API 共用的命令上下文，保证 getStore 语义一致。
     * 包含事件总线、主题及预览解析存储访问器的命令上下文。
     * @returns
     */
    private commandCtx;
    /**
     * 执行已注册的编辑器命令。
     *
     * @param command 要执行的命令标识。
     * @param payload 传递给命令的可选参数。
     * @returns 命令是否执行成功；异步命令返回对应的 Promise。
     */
    runCommand(command: EditorCommand | string, payload?: unknown): boolean | Promise<boolean>;
    /**
     * 销毁编辑器及其全部子模块，并从挂载点移除 DOM。
     *
     * 重复调用不会产生额外副作用。
     */
    destroy(): void;
}
//# sourceMappingURL=Penna.d.ts.map