/**
 * 此文件包含大量相互依赖的函数，为了保持代码的可读性和逻辑分组，
 * 我们允许函数在定义前使用（函数提升）
 */
import { Elements } from '../../el';
import { MarkdownEditorPlugin } from '../../plugin';
export declare const decodeURIComponentUrl: (url: string) => string;
/**
 * 解析Markdown字符串的配置选项
 */
export interface ParserMarkdownToSlateNodeConfig {
    /** 是否在新标签页打开链接 */
    openLinksInNewTab?: boolean;
    /** 自定义段落标签（在 Slate 中可能不适用，保留用于兼容性） */
    paragraphTag?: string;
    /** 是否正在输入中（打字机模式） */
    typing?: boolean;
}
/**
 * Markdown 到 Slate 节点解析器类
 *
 * 将 Markdown 字符串解析为 Slate 编辑器节点，支持配置选项和插件。
 * 使用类形式可以避免在函数调用链中传递配置参数和插件。
 */
export declare class MarkdownToSlateParser {
    private readonly config;
    private readonly plugins;
    constructor(config?: ParserMarkdownToSlateNodeConfig, plugins?: MarkdownEditorPlugin[]);
    /**
     * 解析 Markdown 字符串并返回解析后的结构和链接信息
     *
     * @param md - 要解析的 Markdown 字符串
     * @returns 一个包含解析后的元素数组和链接信息的对象
     */
    parse(md: string): {
        schema: Elements[];
        links: {
            path: number[];
            target: string;
        }[];
    };
    /**
     * 解析 Markdown AST 节点为 Slate 节点（类方法版本）
     * - 当有插件时，优先使用插件处理
     * - 插件未处理时，使用默认处理逻辑
     */
    private parseNodes;
    /**
     * 处理单个元素（类方法版本）
     */
    private handleSingleElement;
    /**
     * 处理标题节点（类方法版本）
     */
    private handleHeading;
    /**
     * 处理列表节点（类方法版本）
     */
    private handleList;
    /**
     * 处理脚注定义节点（类方法版本）
     */
    private handleFootnoteDefinition;
    /**
     * 处理列表项节点（类方法版本）
     */
    private handleListItem;
    /**
     * 处理段落子节点（类方法版本）
     */
    private processParagraphChildren;
    /**
     * 处理段落节点（类方法版本）
     */
    private handleParagraph;
    /**
     * 处理引用块节点（类方法版本）
     */
    private handleBlockquote;
    /**
     * 处理文本和内联元素节点（类方法版本）
     */
    private handleTextAndInlineElements;
    /**
     * 应用内联格式到叶子节点（类方法版本）
     */
    private applyInlineFormatting;
    /**
     * 解析表格或图表（类方法版本）
     */
    private parseTableOrChart;
}
/**
 * 解析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;
    }[];
};
