import { Node } from 'mdast';
import React from 'react';
import { Editor, NodeEntry } from 'slate';
import { ElementProps, Elements } from './el';
import type { JinjaConfig } from './types';
export type MarkdownEditorPlugin = {
    elements?: Record<string, React.ComponentType<ElementProps<any>>>;
    parseMarkdown?: {
        match: (node: Node) => boolean;
        convert: (node: Node) => Elements | NodeEntry<Text>;
    }[];
    toMarkdown?: {
        match: (node: Elements) => boolean;
        convert: (node: Elements) => Node;
    }[];
    withEditor?: (editor: Editor) => Editor;
    hotkeys?: Record<string, (editor: Editor) => void>;
    onPaste?: (text: string) => boolean;
    /** 启用 Jinja 能力（模板面板 + 语法高亮），与 props.jinja?.enable 二选一 */
    jinja?: true;
    /** 通过插件启用时的默认 Jinja 配置（当未传 props.jinja 时使用） */
    jinjaConfig?: JinjaConfig;
};
export declare const PluginContext: React.Context<MarkdownEditorPlugin[]>;
