import { ChartTypeConfig, Elements } from '../../el';
import { MarkdownEditorPlugin } from '../../plugin';
/**
 * 清空解析缓存
 */
export declare const clearParseCache: () => void;
/**
 * 生成简单的字符串哈希
 */
export declare const simpleHash: (str: string) => string;
/**
 * 解析Markdown字符串的配置选项
 */
export interface ParserMarkdownToSlateNodeConfig {
    /** 是否在新标签页打开链接 */
    openLinksInNewTab?: boolean;
    /** 自定义段落标签（在 Slate 中可能不适用，保留用于兼容性） */
    paragraphTag?: string;
    /** 是否正在输入中（打字机模式） */
    typing?: boolean;
    config?: ChartTypeConfig[];
}
/**
 * Markdown 到 Slate 节点解析器类
 *
 * 将 Markdown 字符串解析为 Slate 编辑器节点，支持配置选项和插件。
 * 使用类形式可以避免在函数调用链中传递配置参数和插件。
 */
export declare class MarkdownToSlateParser {
    private config;
    private readonly plugins;
    constructor(config?: ParserMarkdownToSlateNodeConfig, plugins?: MarkdownEditorPlugin[]);
    private preprocessMarkdown;
    private buildMarkdownRoot;
    private filterTopLevelSchema;
    private createEmptyParagraph;
    private createParseContext;
    private parseHtmlCommentProps;
    private resolveConfig;
    private parseWithPlugins;
    /**
     * 解析 Markdown 字符串并返回解析后的结构和链接信息
     *
     * @param md - 要解析的 Markdown 字符串
     * @returns 一个包含解析后的元素数组和链接信息的对象
     */
    parse(md: string): {
        schema: Elements[];
        links: {
            path: number[];
            target: string;
        }[];
    };
    /**
     * 解析 Markdown AST 节点为 Slate 节点（类方法版本）
     * - 当有插件时，优先使用插件处理
     * - 插件未处理时，使用默认处理逻辑
     */
    private parseNodes;
    /**
     * 处理单个元素（类方法版本）
     */
    /**
     * 获取统一的元素处理器映射表
     */
    private getElementHandlers;
    private handleSingleElement;
}
/**
 * 解析Markdown字符串并返回解析后的结构和链接信息。
 *
 * @param md - 要解析的Markdown字符串。
 * @param plugins - 可选的Markdown编辑器插件数组，用于扩展解析功能。
 * @param config - 可选的解析配置选项。
 * @returns 一个包含解析后的元素数组和链接信息的对象。
 *
 * @property schema - 解析后的元素数组。
 * @property links - 包含路径和目标链接的对象数组。
 *
 * @example
 * ```typescript
 * // 使用函数形式（向后兼容）
 * const result = parserMarkdownToSlateNode(markdown, plugins, { openLinksInNewTab: true });
 *
 * // 使用类形式（推荐，避免配置传递问题）
 * const parser = new MarkdownToSlateParser(
 *   { openLinksInNewTab: true },
 *   plugins
 * );
 * const result = parser.parse(markdown);
 * ```
 */
export declare const parserMarkdownToSlateNode: (md: string, plugins?: MarkdownEditorPlugin[], config?: ParserMarkdownToSlateNodeConfig) => {
    schema: Elements[];
    links: {
        path: number[];
        target: string;
    }[];
};
