import * as vue from 'vue';
import { PropType, VNode, CSSProperties, Component, SetupContext, ExtractPropTypes, App } from 'vue';
import * as vue_jsx_runtime from 'vue/jsx-runtime';
import * as _codemirror_autocomplete from '@codemirror/autocomplete';
import { CompletionSource } from '@codemirror/autocomplete';
import { Extension, Compartment } from '@codemirror/state';
import { KeyBinding, EditorView } from '@codemirror/view';
import { LooseRequired } from '@vue/shared';
import markdownit, { Token } from 'markdown-it';
import * as xss from 'xss';

type IconName = 'bold' | 'underline' | 'italic' | 'strike-through' | 'title' | 'sub' | 'sup' | 'quote' | 'unordered-list' | 'ordered-list' | 'task' | 'code-row' | 'code' | 'link' | 'image' | 'table' | 'revoke' | 'next' | 'save' | 'prettier' | 'minimize' | 'maximize' | 'fullscreen-exit' | 'fullscreen' | 'preview-only' | 'preview' | 'preview-html' | 'catalog' | 'github' | 'mermaid' | 'formula' | 'close' | 'delete' | 'upload';

declare const mdPreviewProps: {
    /**
     * markdown content.
     *
     * @default ''
     */
    modelValue: {
        type: PropType<string>;
        default: string;
    };
    /**
     * input回调事件
     */
    onChange: {
        type: PropType<ChangeEvent>;
        default: undefined;
    };
    /**
     * 主题，支持light和dark
     *
     * @default 'light'
     */
    theme: {
        type: PropType<Themes>;
        default: string;
    };
    /**
     * 外层类名
     *
     * @default ''
     */
    class: {
        type: StringConstructor;
        default: string;
    };
    /**
     * 预设语言名称
     *
     * @default 'zh-CN'
     */
    language: {
        type: PropType<string>;
        default: string;
    };
    /**
     * html变化事件
     */
    onHtmlChanged: {
        type: PropType<HtmlChangedEvent>;
        default: undefined;
    };
    /**
     * 获取目录结构
     */
    onGetCatalog: {
        type: PropType<GetCatalogEvent>;
        default: undefined;
    };
    /**
     * 编辑器唯一标识
     *
     * @default 'md-editor-v3'
     * @deprecated 5.x版本开始使用 id 替换
     */
    editorId: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * 5.x版本开始 editorId 的替换
     *
     * @default 'md-editor-v3'
     */
    id: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * 预览中代码是否显示行号
     *
     * @default true
     */
    showCodeRowNumber: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 预览内容样式
     *
     * @default 'default'
     */
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: string;
    };
    /**
     * 编辑器样式
     */
    style: {
        type: PropType<CSSProperties | string>;
        default: () => {};
    };
    /**
     * 标题的id生成方式
     *
     * @default (text: string) => text
     */
    mdHeadingId: {
        type: PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    /**
     *
     * 不能保证文本正确的情况，在marked编译md文本后通过该方法处理
     * 推荐DOMPurify、sanitize-html
     *
     * @default (text: string) => text
     */
    sanitize: {
        type: PropType<(html: string) => string>;
        default: (html: string) => string;
    };
    /**
     * 不使用该mermaid
     *
     * @default false
     */
    noMermaid: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 不使用katex
     *
     * @default false
     */
    noKatex: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 代码主题
     *
     * @default 'atom'
     */
    codeTheme: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 复制代码格式化方法
     *
     * @default (text) => text
     */
    formatCopiedText: {
        type: PropType<(text: string) => string>;
        default: (text: string) => string;
    };
    /**
     * 某些预览主题的代码模块背景是暗色系
     * 将这个属性设置为true，会自动在该主题下的light模式下使用暗色系的代码风格
     *
     * @default true
     */
    codeStyleReverse: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 需要自动调整的预览主题
     *
     * @default ['default', 'mk-cute']
     */
    codeStyleReverseList: {
        type: PropType<Array<string>>;
        default: string[];
    };
    noHighlight: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 是否关闭编辑器默认的放大缩小功能
     */
    noImgZoomIn: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 自定义的图标
     */
    customIcon: {
        type: PropType<CustomIcon>;
        default: {};
    };
    sanitizeMermaid: {
        type: PropType<(h: string) => Promise<string>>;
        default: (h: string) => Promise<string>;
    };
    /**
     * 是否开启折叠代码功能
     * 不开启会使用div标签替代details标签
     *
     * @default true
     */
    codeFoldable: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 触发自动折叠代码的行数阈值
     *
     * @default 30
     */
    autoFoldThreshold: {
        type: PropType<number>;
        default: number;
    };
    /**
     * 内容重新挂载事件
     *
     * 相比起onHtmlChanged，onRemount会在重新挂载后触发
     */
    onRemount: {
        type: PropType<() => void>;
        default: undefined;
    };
    /**
     * 不使用 echarts
     */
    noEcharts: {
        type: PropType<boolean>;
        default: boolean;
    };
    previewComponent: {
        type: PropType<Component>;
        default: undefined;
    };
};
declare const editorProps: {
    /**
     * input回调事件
     */
    onSave: {
        type: PropType<SaveEvent>;
        default: undefined;
    };
    /**
     * 上传图片事件
     */
    onUploadImg: {
        type: PropType<UploadImgEvent>;
        default: undefined;
    };
    /**
     * 是否页面内全屏
     *
     * @default false
     */
    pageFullscreen: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 是否展开预览
     *
     * @default true
     */
    preview: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 是否展开html预览
     *
     * @default false
     */
    htmlPreview: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 仅预览模式，不显示toolbar和编辑框
     *
     * @4.0.0开始移除该设置，使用组件MdPreview替换
     *
     * @default false
     */
    /**
     * 工具栏选择显示
     *
     * @default allToolbar
     */
    toolbars: {
        type: PropType<Array<ToolbarNames>>;
        default: string[];
    };
    /**
     * 浮动工具栏
     *
     * @version 6.0.0
     * @default []
     */
    floatingToolbars: {
        type: PropType<Array<ToolbarNames>>;
        default: never[];
    };
    /**
     * 工具栏选择不显示
     *
     * @default []
     */
    toolbarsExclude: {
        type: PropType<Array<ToolbarNames>>;
        default: never[];
    };
    /**
     * 格式化md
     *
     * @default true
     */
    noPrettier: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 一个tab等于空格数
     *
     * @default 2
     */
    tabWidth: {
        type: PropType<number>;
        default: number;
    };
    /**
     * 表格预设格子数
     *
     * 也可以是[6, 4, 10, 8]
     *
     * @default [6, 4]
     */
    tableShape: {
        type: PropType<Array<number>>;
        default: number[];
    };
    /**
     * 空提示
     *
     * @default ''
     */
    placeholder: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 自定义的工具栏列表
     */
    defToolbars: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    /**
     * 内部错误捕获
     */
    onError: {
        type: PropType<ErrorEvent>;
        default: undefined;
    };
    /**
     * 页脚列表显示顺序
     */
    footers: {
        type: PropType<Array<Footers>>;
        default: Footers[];
    };
    /**
     * 是否默认激活输入框和预览框同步滚动
     *
     * @default true
     */
    scrollAuto: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 自定义的也叫工具组件列表
     */
    defFooters: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    /**
     * 是否禁用上传图片
     *
     * @default false
     */
    noUploadImg: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 文本区域自动获得焦点
     *
     * @default false
     */
    autoFocus: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 禁用文本区域
     *
     * @default false
     */
    disabled: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 文本区域为只读
     *
     * @default false
     */
    readOnly: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 文本区域允许的最大字符数
     */
    maxLength: {
        type: PropType<number>;
        default: undefined;
    };
    /**
     * 是否启用自动识别粘贴代码类别
     * 目前支持 vscode 复制的代码识别
     *
     * @default false
     */
    autoDetectCode: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 输入框失去焦点时触发事件
     */
    onBlur: {
        type: PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    /**
     * 输入框获得焦点时触发事件
     */
    onFocus: {
        type: PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    /**
     * @codemirror/autocomplete匹配关键词的方法列表
     *
     * 它会被像下面这样嵌入编辑器
     *
     * import { autocompletion } from '@codemirror/autocomplete';
     * autocompletion({
     *   override: [...completions]
     * })
     */
    completions: {
        type: PropType<Array<CompletionSource>>;
        default: undefined;
    };
    /**
     * 是否在工具栏下面显示对应的文字名称
     *
     * @default false
     */
    showToolbarName: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 字符输入事件
     */
    onInput: {
        type: PropType<(event: Event) => void>;
        default: undefined;
    };
    onDrop: {
        type: PropType<(event: DragEvent) => void>;
        default: undefined;
    };
    /**
     * 输入框的默认宽度
     *
     * @example '100px'/'50%'
     * @default '50%
     */
    inputBoxWidth: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 输入框宽度变化事件
     */
    oninputBoxWidthChange: {
        type: PropType<(width: string) => void>;
        default: undefined;
    };
    /**
     * 替换粘贴的图片链接
     *
     * @param t 图片链接
     * @returns
     */
    transformImgUrl: {
        type: PropType<(t: string) => string | Promise<string>>;
        default: (t: string) => string;
    };
    /**
     * 内置的目录显示的状态
     *
     * 'fixed': 悬浮在内容上方
     * 'flat': 展示在右侧
     *
     * \>=5.3.0
     *
     * @default 'fixed'
     */
    catalogLayout: {
        type: PropType<"fixed" | "flat">;
        default: string;
    };
    /**
     * 控制最大显示的目录层级
     */
    catalogMaxDepth: {
        type: PropType<number>;
        default: undefined;
    };
    /**
     * markdown content.
     *
     * @default ''
     */
    modelValue: {
        type: PropType<string>;
        default: string;
    };
    /**
     * input回调事件
     */
    onChange: {
        type: PropType<ChangeEvent>;
        default: undefined;
    };
    /**
     * 主题，支持light和dark
     *
     * @default 'light'
     */
    theme: {
        type: PropType<Themes>;
        default: string;
    };
    /**
     * 外层类名
     *
     * @default ''
     */
    class: {
        type: StringConstructor;
        default: string;
    };
    /**
     * 预设语言名称
     *
     * @default 'zh-CN'
     */
    language: {
        type: PropType<string>;
        default: string;
    };
    /**
     * html变化事件
     */
    onHtmlChanged: {
        type: PropType<HtmlChangedEvent>;
        default: undefined;
    };
    /**
     * 获取目录结构
     */
    onGetCatalog: {
        type: PropType<GetCatalogEvent>;
        default: undefined;
    };
    /**
     * 编辑器唯一标识
     *
     * @default 'md-editor-v3'
     * @deprecated 5.x版本开始使用 id 替换
     */
    editorId: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * 5.x版本开始 editorId 的替换
     *
     * @default 'md-editor-v3'
     */
    id: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * 预览中代码是否显示行号
     *
     * @default true
     */
    showCodeRowNumber: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 预览内容样式
     *
     * @default 'default'
     */
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: string;
    };
    /**
     * 编辑器样式
     */
    style: {
        type: PropType<CSSProperties | string>;
        default: () => {};
    };
    /**
     * 标题的id生成方式
     *
     * @default (text: string) => text
     */
    mdHeadingId: {
        type: PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    /**
     *
     * 不能保证文本正确的情况，在marked编译md文本后通过该方法处理
     * 推荐DOMPurify、sanitize-html
     *
     * @default (text: string) => text
     */
    sanitize: {
        type: PropType<(html: string) => string>;
        default: (html: string) => string;
    };
    /**
     * 不使用该mermaid
     *
     * @default false
     */
    noMermaid: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 不使用katex
     *
     * @default false
     */
    noKatex: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 代码主题
     *
     * @default 'atom'
     */
    codeTheme: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 复制代码格式化方法
     *
     * @default (text) => text
     */
    formatCopiedText: {
        type: PropType<(text: string) => string>;
        default: (text: string) => string;
    };
    /**
     * 某些预览主题的代码模块背景是暗色系
     * 将这个属性设置为true，会自动在该主题下的light模式下使用暗色系的代码风格
     *
     * @default true
     */
    codeStyleReverse: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 需要自动调整的预览主题
     *
     * @default ['default', 'mk-cute']
     */
    codeStyleReverseList: {
        type: PropType<Array<string>>;
        default: string[];
    };
    noHighlight: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 是否关闭编辑器默认的放大缩小功能
     */
    noImgZoomIn: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 自定义的图标
     */
    customIcon: {
        type: PropType<CustomIcon>;
        default: {};
    };
    sanitizeMermaid: {
        type: PropType<(h: string) => Promise<string>>;
        default: (h: string) => Promise<string>;
    };
    /**
     * 是否开启折叠代码功能
     * 不开启会使用div标签替代details标签
     *
     * @default true
     */
    codeFoldable: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 触发自动折叠代码的行数阈值
     *
     * @default 30
     */
    autoFoldThreshold: {
        type: PropType<number>;
        default: number;
    };
    /**
     * 内容重新挂载事件
     *
     * 相比起onHtmlChanged，onRemount会在重新挂载后触发
     */
    onRemount: {
        type: PropType<() => void>;
        default: undefined;
    };
    /**
     * 不使用 echarts
     */
    noEcharts: {
        type: PropType<boolean>;
        default: boolean;
    };
    previewComponent: {
        type: PropType<Component>;
        default: undefined;
    };
};

type ToolDirective = 'bold' | 'underline' | 'italic' | 'strikeThrough' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'quote' | 'unorderedList' | 'orderedList' | 'task' | 'codeRow' | 'code' | 'link' | 'image' | 'table' | 'sub' | 'sup' | 'prettier' | 'flow' | 'sequence' | 'gantt' | 'class' | 'state' | 'pie' | 'relationship' | 'journey' | 'katexInline' | 'katexBlock' | 'universal';

declare global {
    interface Window {
        hljs: any;
        prettier: any;
        prettierPlugins: any;
        Cropper: any;
        screenfull: any;
        mermaid: any;
        katex: any;
        echarts: any;
    }
}
interface ToolbarTips {
    bold?: string;
    underline?: string;
    italic?: string;
    strikeThrough?: string;
    title?: string;
    sub?: string;
    sup?: string;
    quote?: string;
    unorderedList?: string;
    orderedList?: string;
    task?: string;
    codeRow?: string;
    code?: string;
    link?: string;
    image?: string;
    table?: string;
    mermaid?: string;
    katex?: string;
    revoke?: string;
    next?: string;
    save?: string;
    prettier?: string;
    pageFullscreen?: string;
    fullscreen?: string;
    preview?: string;
    previewOnly?: string;
    htmlPreview?: string;
    catalog?: string;
    github?: string;
    '-'?: string;
    '='?: string;
}
interface StaticTextDefaultValue {
    toolbarTips?: ToolbarTips;
    titleItem?: {
        h1?: string;
        h2?: string;
        h3?: string;
        h4?: string;
        h5?: string;
        h6?: string;
    };
    imgTitleItem?: {
        link: string;
        upload: string;
        clip2upload: string;
    };
    linkModalTips?: {
        linkTitle?: string;
        imageTitle?: string;
        descLabel?: string;
        descLabelPlaceHolder?: string;
        urlLabel?: string;
        urlLabelPlaceHolder?: string;
        buttonOK?: string;
    };
    clipModalTips?: {
        title?: string;
        buttonUpload?: string;
    };
    copyCode?: {
        text?: string;
        successTips?: string;
        failTips?: string;
    };
    mermaid?: {
        flow?: string;
        sequence?: string;
        gantt?: string;
        class?: string;
        state?: string;
        pie?: string;
        relationship?: string;
        journey?: string;
    };
    katex?: {
        inline: string;
        block: string;
    };
    footer?: {
        markdownTotal: string;
        scrollAuto: string;
    };
}
interface StaticTextDefault {
    'zh-CN': StaticTextDefaultValue;
    'en-US': StaticTextDefaultValue;
}
type StaticTextDefaultKey = keyof StaticTextDefault;
type ToolbarNames = keyof ToolbarTips | number;
type Footers = '=' | 'markdownTotal' | 'scrollSwitch' | number;
interface SettingType {
    pageFullscreen: boolean;
    fullscreen: boolean;
    preview: boolean;
    htmlPreview: boolean;
    previewOnly: boolean;
}
type Themes = 'light' | 'dark';
/**
 * 预览主题
 *
 * @list ['default', 'github', 'vuepress', 'mk-cute', 'smart-blue', 'cyanosis']
 */
type PreviewThemes = string;
interface HeadList {
    text: string;
    level: 1 | 2 | 3 | 4 | 5 | 6;
    active?: boolean;
    line: number;
    currentToken?: Token;
    nextToken?: Token;
}
type MdHeadingId = (options: {
    text: string;
    level: number;
    index: number;
    currentToken?: Token;
    nextToken?: Token;
}) => string;
interface MermaidTemplate {
    /**
     * 流程图
     */
    flow?: string;
    /**
     * 时序图
     */
    sequence?: string;
    /**
     * 甘特图
     */
    gantt?: string;
    /**
     * 类图
     */
    class?: string;
    /**
     * 状态图
     */
    state?: string;
    /**
     * 饼图
     */
    pie?: string;
    /**
     * 关系图
     */
    relationship?: string;
    /**
     * 旅程图
     */
    journey?: string;
}
interface MarkdownItConfigPlugin {
    type: string;
    plugin: markdownit.PluginWithParams;
    options: any;
}
/**
 * CodeMirror扩展类型
 *
 * ^6.0.0
 */
interface CodeMirrorExtension {
    /**
     * 仅用来提供开发者分别不同扩展的依据
     */
    type: string;
    /**
     * CodeMirror的扩展
     */
    extension: Extension | ((options: any) => Extension);
    /**
     * 包裹扩展的Compartment，只有部分扩展有，提供扩展更新的能力
     */
    compartment?: Compartment;
    options?: any;
}
interface GlobalConfig {
    /**
     * 编辑器内部依赖库
     */
    editorExtensions: {
        highlight?: {
            instance?: any;
            js?: string;
            css?: CodeCss;
        };
        prettier?: {
            prettierInstance?: any;
            parserMarkdownInstance?: any;
            standaloneJs?: string;
            parserMarkdownJs?: string;
        };
        cropper?: {
            instance?: any;
            js?: string;
            css?: string;
        };
        screenfull?: {
            instance?: any;
            js?: string;
        };
        mermaid?: {
            instance?: any;
            js?: string;
            /**
             * 是否启用缩放功能
             *
             * @default true
             */
            enableZoom?: boolean;
        };
        katex?: {
            instance?: any;
            js?: string;
            css?: string;
        };
        echarts?: {
            instance?: any;
            js?: string;
            /**
             * 解析echarts代码块内容。
             *
             * 默认实现会使用new Function以兼容官方配置中的函数写法；当内容来源不可信时，
             * 业务侧应通过该方法替换为更严格的解析策略。
             */
            parseOption?: (code: string, options: {
                editorId: string;
                element: HTMLElement;
            }) => any;
        };
    };
    /**
     * 对应editorExtensions中的cdn链接标签属性
     *
     * 不要尝试在editorExtensionsAttrs定义script的src\onload\id，link的rel\href\id
     * 它们会被默认值覆盖
     */
    editorExtensionsAttrs: {
        highlight?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
            css?: CodeCssAttrs;
        };
        prettier?: {
            standaloneJs?: Partial<HTMLElementTagNameMap['script']>;
            parserMarkdownJs?: Partial<HTMLElementTagNameMap['script']>;
        };
        cropper?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
            css?: Partial<HTMLElementTagNameMap['link']>;
        };
        screenfull?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
        };
        mermaid?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
        };
        katex?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
            css?: Partial<HTMLElementTagNameMap['link']>;
        };
        echarts?: {
            js?: Partial<HTMLElementTagNameMap['script']>;
        };
    };
    editorConfig: {
        /**
         * 自定义提示语言
         */
        languageUserDefined?: {
            [key: string]: StaticTextDefaultValue;
        };
        /**
         * 自定义内部mermaid模块
         */
        mermaidTemplate?: MermaidTemplate;
        /**
         * 输入渲染延迟（ms）
         */
        renderDelay?: number;
        /**
         * 内部的弹窗、下拉框等内联zIndex
         * @default 20000
         */
        zIndex?: number;
    };
    /**
     * 根据主题和内部默认的codeMirror扩展自定义新的扩展
     *
     * @params theme 当前主题
     * @params innerExtensions 当前主题下的扩展列表
     * [keymap, minimalSetup, markdown, EditorView.lineWrapping, EditorView.updateListener, EditorView.domEventHandlers, oneDark??oneLight]
     * [快捷键, 最低配置, markdown识别, 横向自动换行, 更新事件, dom监听事件, oneDark主题(暗夜模式下), oneLight(默认模式下)]
     *
     * @params keyBindings md-editor-v3内置的快捷键
     */
    codeMirrorExtensions: (extensions: Array<CodeMirrorExtension>, options: {
        editorId: string;
        theme: Themes;
        keyBindings: Array<KeyBinding>;
    }) => Array<CodeMirrorExtension>;
    /**
     * 自定义markdown-it核心库扩展、属性等
     */
    markdownItConfig: (md: markdownit, options: {
        editorId: string;
    }) => void;
    /**
     * 挑选编辑器已预设的markdownIt的扩展
     *
     * @param plugins markdownIt的扩展，带编辑器已设定的属性
     * @returns plugins
     */
    markdownItPlugins: (plugins: Array<MarkdownItConfigPlugin>, options: {
        editorId: string;
    }) => Array<MarkdownItConfigPlugin>;
    /**
     * mermaid配置项
     *
     * @param base
     * @returns
     */
    mermaidConfig: (base: any) => any;
    /**
     * katex配置
     *
     * @param baseConfig
     * @returns
     */
    katexConfig: (baseConfig: any) => any;
    /**
     * echarts配置
     *
     * @returns
     */
    echartsConfig: (base: any) => any;
}
/**
 * 扩展编辑器内部功能，包括marked和一些内部依赖实例，如highlight、cropper等
 */
type Config = (options: Partial<GlobalConfig>) => void;
/**
 * 编辑器操作潜在的错误
 */
interface InnerError {
    name: 'Cropper' | 'fullscreen' | 'prettier' | 'overlength' | 'mermaid';
    message: string;
    data?: any;
    error?: Error;
}
interface CodeCss {
    [key: string]: {
        light: string;
        dark: string;
    };
}
interface CodeCssAttrs {
    [key: string]: {
        light: Partial<HTMLElementTagNameMap['link']>;
        dark: Partial<HTMLElementTagNameMap['link']>;
    };
}
type UpdateSetting = (k: keyof SettingType, v?: boolean) => void;
type ChangeEvent = (v: string) => void;
type SaveEvent = (v: string, h: Promise<string>) => void;
type UploadImgCallBackParam = string[] | Array<{
    url: string;
    alt: string;
    title: string;
}>;
type UploadImgCallBack = (urls: UploadImgCallBackParam) => void;
type UploadImgEvent = (files: Array<File>, callBack: UploadImgCallBack) => void;
type HtmlChangedEvent = (h: string) => void;
type GetCatalogEvent = (list: HeadList[]) => void;
type ErrorEvent = (err: InnerError) => void;
interface ExposeEvent {
    pageFullscreen(status: boolean): void;
    fullscreen(status: boolean): void;
    preview(status: boolean): void;
    previewOnly(status: boolean): void;
    htmlPreview(status: boolean): void;
    catalog(status: boolean): void;
}
type DOMEventHandlers = {
    [e in keyof HTMLElementEventMap]?: (event: HTMLElementEventMap[e], view: EditorView) => boolean | void;
};
interface InsertParam {
    targetValue: string;
    select?: boolean;
    deviationStart?: number;
    deviationEnd?: number;
}
/**
 * 插入的内容的构造函数
 */
type InsertContentGenerator = (selectedText: string) => InsertParam;
/**
 * 插入内容的通用函数类型
 */
type Insert = (generate: InsertContentGenerator) => void;
type FocusOption = 'start' | 'end' | {
    rangeAnchor?: number;
    rangeHead?: number;
    cursorPos: number;
};
interface ExposeParam {
    /**
     * 添加事件监听
     *
     * @param eventName 事件名称
     * @param callBack 事件回调函数
     */
    on<E extends keyof ExposeEvent, C extends ExposeEvent[E]>(eventName: E, callBack: C): void;
    /**
     * 切换页面内全屏
     *
     * @param status 是否页面全屏
     */
    togglePageFullscreen(status?: boolean): void;
    /**
     * 切换屏幕全屏
     *
     * @param status 是否屏幕全屏
     */
    toggleFullscreen(status?: boolean): void;
    /**
     * 切换是否显示预览
     *
     * @param status 是否显示预览
     */
    togglePreview(status?: boolean): void;
    togglePreviewOnly(status?: boolean): void;
    /**
     * 切换是否显示html预览
     *
     * @param status html预览状态
     */
    toggleHtmlPreview(status?: boolean): void;
    /**
     * 切换是否显示目录
     *
     * @param status 是否显示目录，不设置默认相反
     */
    toggleCatalog(status?: boolean): void;
    /**
     * 触发保存
     */
    triggerSave(): void;
    /**
     * 手动向文本框插入内容
     *
     * @param {Function} generate 构造插入内容方法
     * 构造方法提供「当前选中」的内容为入参
     * 返回「待插入内容」和插入的属性
     * 入参 selectedText 当前选中的内容
     *
     * targetValue     待插入内容
     * select         插入后是否自动选中内容
     * deviationStart 插入后选中位置的开始偏移量
     * deviationEnd   插入后选中位置的结束偏移量
     *
     */
    insert: Insert;
    /**
     * 手动聚焦
     *
     * @param options 聚焦时光标的位置，不提供默认上次失焦时的位置
     */
    focus(options?: FocusOption): void;
    /**
     * 手动重新渲染
     */
    rerender(): void;
    /**
     * 获取当前选中的文本
     */
    getSelectedText(): string | undefined;
    /**
     * 重置已经存在的历史记录
     */
    resetHistory(): void;
    /**
     * codemirror事件
     *
     * @param handlers
     */
    domEventHandlers(handlers: DOMEventHandlers): void;
    /**
     * 执行内部插入命令
     *
     * @param direct
     */
    execCommand(direct: ToolDirective): void;
    /**
     * 获取编辑器实例
     */
    getEditorView(): EditorView | undefined;
}
type ExposePreviewParam = Pick<ExposeParam, 'rerender'>;
type EditorProps = Readonly<LooseRequired<Readonly<ExtractPropTypes<typeof editorProps>>>>;
type MdPreviewProps = Readonly<LooseRequired<Readonly<ExtractPropTypes<typeof mdPreviewProps>>>>;
type EditorEmits = Array<'onChange' | 'onSave' | 'onUploadImg' | 'onHtmlChanged' | 'onGetCatalog' | 'onError' | 'update:modelValue' | 'onBlur' | 'onFocus' | 'onInput' | 'onDrop' | 'oninputBoxWidthChange' | 'onRemount'>;
type EditorContext = SetupContext<EditorEmits>;
type CustomStrIcon = {
    copy?: string;
    'collapse-tips'?: string;
    pin?: string;
    'pin-off'?: string;
    check?: string;
};
/**
 * 自定义图标的数据类型
 */
type CustomIcon = {
    [key in IconName]?: {
        component: Component | VNode | string;
        props?: {
            [key: string | number | symbol]: any;
        };
    };
} & CustomStrIcon;

declare const Editor: vue.DefineComponent<vue.ExtractPropTypes<{
    onSave: {
        type: vue.PropType<SaveEvent>;
        default: undefined;
    };
    onUploadImg: {
        type: vue.PropType<UploadImgEvent>;
        default: undefined;
    };
    pageFullscreen: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    preview: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    htmlPreview: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    toolbars: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: string[];
    };
    floatingToolbars: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: never[];
    };
    toolbarsExclude: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: never[];
    };
    noPrettier: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    tabWidth: {
        type: vue.PropType<number>;
        default: number;
    };
    tableShape: {
        type: vue.PropType<Array<number>>;
        default: number[];
    };
    placeholder: {
        type: vue.PropType<string>;
        default: string;
    };
    defToolbars: {
        type: vue.PropType<string | vue.VNode>;
        default: undefined;
    };
    onError: {
        type: vue.PropType<ErrorEvent>;
        default: undefined;
    };
    footers: {
        type: vue.PropType<Array<Footers>>;
        default: Footers[];
    };
    scrollAuto: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    defFooters: {
        type: vue.PropType<string | vue.VNode>;
        default: undefined;
    };
    noUploadImg: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    autoFocus: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    disabled: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    readOnly: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    maxLength: {
        type: vue.PropType<number>;
        default: undefined;
    };
    autoDetectCode: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    onBlur: {
        type: vue.PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    onFocus: {
        type: vue.PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    completions: {
        type: vue.PropType<Array<_codemirror_autocomplete.CompletionSource>>;
        default: undefined;
    };
    showToolbarName: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    onInput: {
        type: vue.PropType<(event: Event) => void>;
        default: undefined;
    };
    onDrop: {
        type: vue.PropType<(event: DragEvent) => void>;
        default: undefined;
    };
    inputBoxWidth: {
        type: vue.PropType<string>;
        default: string;
    };
    oninputBoxWidthChange: {
        type: vue.PropType<(width: string) => void>;
        default: undefined;
    };
    transformImgUrl: {
        type: vue.PropType<(t: string) => string | Promise<string>>;
        default: (t: string) => string;
    };
    catalogLayout: {
        type: vue.PropType<"fixed" | "flat">;
        default: string;
    };
    catalogMaxDepth: {
        type: vue.PropType<number>;
        default: undefined;
    };
    modelValue: {
        type: vue.PropType<string>;
        default: string;
    };
    onChange: {
        type: vue.PropType<ChangeEvent>;
        default: undefined;
    };
    theme: {
        type: vue.PropType<Themes>;
        default: string;
    };
    class: {
        type: StringConstructor;
        default: string;
    };
    language: {
        type: vue.PropType<string>;
        default: string;
    };
    onHtmlChanged: {
        type: vue.PropType<HtmlChangedEvent>;
        default: undefined;
    };
    onGetCatalog: {
        type: vue.PropType<GetCatalogEvent>;
        default: undefined;
    };
    editorId: {
        type: vue.PropType<string>;
        default: undefined;
    };
    id: {
        type: vue.PropType<string>;
        default: undefined;
    };
    showCodeRowNumber: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    previewTheme: {
        type: vue.PropType<PreviewThemes>;
        default: string;
    };
    style: {
        type: vue.PropType<vue.CSSProperties | string>;
        default: () => {};
    };
    mdHeadingId: {
        type: vue.PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    sanitize: {
        type: vue.PropType<(html: string) => string>;
        default: (html: string) => string;
    };
    noMermaid: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    noKatex: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    codeTheme: {
        type: vue.PropType<string>;
        default: string;
    };
    formatCopiedText: {
        type: vue.PropType<(text: string) => string>;
        default: (text: string) => string;
    };
    codeStyleReverse: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    codeStyleReverseList: {
        type: vue.PropType<Array<string>>;
        default: string[];
    };
    noHighlight: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    noImgZoomIn: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    customIcon: {
        type: vue.PropType<CustomIcon>;
        default: {};
    };
    sanitizeMermaid: {
        type: vue.PropType<(h: string) => Promise<string>>;
        default: (h: string) => Promise<string>;
    };
    codeFoldable: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    autoFoldThreshold: {
        type: vue.PropType<number>;
        default: number;
    };
    onRemount: {
        type: vue.PropType<() => void>;
        default: undefined;
    };
    noEcharts: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    previewComponent: {
        type: vue.PropType<vue.Component>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, EditorEmits, "onChange" | "onSave" | "onUploadImg" | "onHtmlChanged" | "onGetCatalog" | "onError" | "update:modelValue" | "onBlur" | "onFocus" | "onInput" | "onDrop" | "oninputBoxWidthChange" | "onRemount", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    onSave: {
        type: vue.PropType<SaveEvent>;
        default: undefined;
    };
    onUploadImg: {
        type: vue.PropType<UploadImgEvent>;
        default: undefined;
    };
    pageFullscreen: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    preview: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    htmlPreview: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    toolbars: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: string[];
    };
    floatingToolbars: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: never[];
    };
    toolbarsExclude: {
        type: vue.PropType<Array<ToolbarNames>>;
        default: never[];
    };
    noPrettier: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    tabWidth: {
        type: vue.PropType<number>;
        default: number;
    };
    tableShape: {
        type: vue.PropType<Array<number>>;
        default: number[];
    };
    placeholder: {
        type: vue.PropType<string>;
        default: string;
    };
    defToolbars: {
        type: vue.PropType<string | vue.VNode>;
        default: undefined;
    };
    onError: {
        type: vue.PropType<ErrorEvent>;
        default: undefined;
    };
    footers: {
        type: vue.PropType<Array<Footers>>;
        default: Footers[];
    };
    scrollAuto: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    defFooters: {
        type: vue.PropType<string | vue.VNode>;
        default: undefined;
    };
    noUploadImg: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    autoFocus: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    disabled: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    readOnly: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    maxLength: {
        type: vue.PropType<number>;
        default: undefined;
    };
    autoDetectCode: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    onBlur: {
        type: vue.PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    onFocus: {
        type: vue.PropType<(event: FocusEvent) => void>;
        default: undefined;
    };
    completions: {
        type: vue.PropType<Array<_codemirror_autocomplete.CompletionSource>>;
        default: undefined;
    };
    showToolbarName: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    onInput: {
        type: vue.PropType<(event: Event) => void>;
        default: undefined;
    };
    onDrop: {
        type: vue.PropType<(event: DragEvent) => void>;
        default: undefined;
    };
    inputBoxWidth: {
        type: vue.PropType<string>;
        default: string;
    };
    oninputBoxWidthChange: {
        type: vue.PropType<(width: string) => void>;
        default: undefined;
    };
    transformImgUrl: {
        type: vue.PropType<(t: string) => string | Promise<string>>;
        default: (t: string) => string;
    };
    catalogLayout: {
        type: vue.PropType<"fixed" | "flat">;
        default: string;
    };
    catalogMaxDepth: {
        type: vue.PropType<number>;
        default: undefined;
    };
    modelValue: {
        type: vue.PropType<string>;
        default: string;
    };
    onChange: {
        type: vue.PropType<ChangeEvent>;
        default: undefined;
    };
    theme: {
        type: vue.PropType<Themes>;
        default: string;
    };
    class: {
        type: StringConstructor;
        default: string;
    };
    language: {
        type: vue.PropType<string>;
        default: string;
    };
    onHtmlChanged: {
        type: vue.PropType<HtmlChangedEvent>;
        default: undefined;
    };
    onGetCatalog: {
        type: vue.PropType<GetCatalogEvent>;
        default: undefined;
    };
    editorId: {
        type: vue.PropType<string>;
        default: undefined;
    };
    id: {
        type: vue.PropType<string>;
        default: undefined;
    };
    showCodeRowNumber: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    previewTheme: {
        type: vue.PropType<PreviewThemes>;
        default: string;
    };
    style: {
        type: vue.PropType<vue.CSSProperties | string>;
        default: () => {};
    };
    mdHeadingId: {
        type: vue.PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    sanitize: {
        type: vue.PropType<(html: string) => string>;
        default: (html: string) => string;
    };
    noMermaid: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    noKatex: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    codeTheme: {
        type: vue.PropType<string>;
        default: string;
    };
    formatCopiedText: {
        type: vue.PropType<(text: string) => string>;
        default: (text: string) => string;
    };
    codeStyleReverse: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    codeStyleReverseList: {
        type: vue.PropType<Array<string>>;
        default: string[];
    };
    noHighlight: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    noImgZoomIn: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    customIcon: {
        type: vue.PropType<CustomIcon>;
        default: {};
    };
    sanitizeMermaid: {
        type: vue.PropType<(h: string) => Promise<string>>;
        default: (h: string) => Promise<string>;
    };
    codeFoldable: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    autoFoldThreshold: {
        type: vue.PropType<number>;
        default: number;
    };
    onRemount: {
        type: vue.PropType<() => void>;
        default: undefined;
    };
    noEcharts: {
        type: vue.PropType<boolean>;
        default: boolean;
    };
    previewComponent: {
        type: vue.PropType<vue.Component>;
        default: undefined;
    };
}>> & Readonly<{
    onOnChange?: ((...args: any[]) => any) | undefined;
    onOnSave?: ((...args: any[]) => any) | undefined;
    onOnUploadImg?: ((...args: any[]) => any) | undefined;
    onOnHtmlChanged?: ((...args: any[]) => any) | undefined;
    onOnGetCatalog?: ((...args: any[]) => any) | undefined;
    onOnError?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    onOnBlur?: ((...args: any[]) => any) | undefined;
    onOnFocus?: ((...args: any[]) => any) | undefined;
    onOnInput?: ((...args: any[]) => any) | undefined;
    onOnDrop?: ((...args: any[]) => any) | undefined;
    onOninputBoxWidthChange?: ((...args: any[]) => any) | undefined;
    onOnRemount?: ((...args: any[]) => any) | undefined;
}>, {
    preview: boolean;
    pageFullscreen: boolean;
    htmlPreview: boolean;
    onChange: ChangeEvent;
    onSave: SaveEvent;
    onUploadImg: UploadImgEvent;
    onHtmlChanged: HtmlChangedEvent;
    onGetCatalog: GetCatalogEvent;
    onError: ErrorEvent;
    onBlur: (event: FocusEvent) => void;
    onFocus: (event: FocusEvent) => void;
    onInput: (event: Event) => void;
    onDrop: (event: DragEvent) => void;
    oninputBoxWidthChange: (width: string) => void;
    onRemount: () => void;
    toolbars: ToolbarNames[];
    floatingToolbars: ToolbarNames[];
    toolbarsExclude: ToolbarNames[];
    noPrettier: boolean;
    tabWidth: number;
    tableShape: number[];
    placeholder: string;
    defToolbars: string | vue.VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    footers: Footers[];
    scrollAuto: boolean;
    defFooters: string | vue.VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    noUploadImg: boolean;
    autoFocus: boolean;
    disabled: boolean;
    readOnly: boolean;
    maxLength: number;
    autoDetectCode: boolean;
    completions: _codemirror_autocomplete.CompletionSource[];
    showToolbarName: boolean;
    inputBoxWidth: string;
    transformImgUrl: (t: string) => string | Promise<string>;
    catalogLayout: "fixed" | "flat";
    catalogMaxDepth: number;
    modelValue: string;
    theme: Themes;
    class: string;
    language: string;
    editorId: string;
    id: string;
    showCodeRowNumber: boolean;
    previewTheme: string;
    style: string | vue.CSSProperties;
    mdHeadingId: MdHeadingId;
    sanitize: (html: string) => string;
    noMermaid: boolean;
    noKatex: boolean;
    codeTheme: string;
    formatCopiedText: (text: string) => string;
    codeStyleReverse: boolean;
    codeStyleReverseList: string[];
    noHighlight: boolean;
    noImgZoomIn: boolean;
    customIcon: CustomIcon;
    sanitizeMermaid: (h: string) => Promise<string>;
    codeFoldable: boolean;
    autoFoldThreshold: number;
    noEcharts: boolean;
    previewComponent: vue.Component;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$c: typeof Editor & {
    install: (app: App) => App;
};

declare const _default$b: vue.DefineComponent<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 展示在工具栏的内容，通常是个图标
     *
     * @deprecated 使用默认插槽代替
     */
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onClick: {
        type: PropType<(e: MouseEvent) => void>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClick"[], "onClick", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    /**
     * 展示在工具栏的内容，通常是个图标
     *
     * @deprecated 使用默认插槽代替
     */
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onClick: {
        type: PropType<(e: MouseEvent) => void>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>> & Readonly<{
    onOnClick?: ((...args: any[]) => any) | undefined;
}>, {
    title: string;
    disabled: boolean;
    showToolbarName: boolean;
    theme: Themes;
    language: string;
    previewTheme: string;
    codeTheme: string;
    trigger: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    insert: () => void;
    onClick: (e: MouseEvent) => void;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$a: typeof _default$b & {
    install: (app: App) => App;
};

declare const _default$9: vue.DefineComponent<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: undefined;
    };
    /**
     * 展示在工具栏的内容，通常是个图标
     *
     * @deprecated 使用默认插槽代替
     */
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onChange: {
        type: PropType<(visible: boolean) => void>;
        default: undefined;
    };
    overlay: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onChange"[], "onChange", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: undefined;
    };
    /**
     * 展示在工具栏的内容，通常是个图标
     *
     * @deprecated 使用默认插槽代替
     */
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onChange: {
        type: PropType<(visible: boolean) => void>;
        default: undefined;
    };
    overlay: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>> & Readonly<{
    onOnChange?: ((...args: any[]) => any) | undefined;
}>, {
    title: string;
    onChange: (visible: boolean) => void;
    disabled: boolean;
    showToolbarName: boolean;
    theme: Themes;
    language: string;
    previewTheme: string;
    codeTheme: string;
    visible: boolean;
    trigger: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    overlay: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    insert: () => void;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$8: typeof _default$9 & {
    install: (app: App) => App;
};

declare const _default$7: vue.DefineComponent<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    modalTitle: {
        type: PropType<string | VNode>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: undefined;
    };
    width: {
        type: PropType<string>;
        default: string;
    };
    height: {
        type: PropType<string>;
        default: string;
    };
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onClick: {
        type: PropType<() => void>;
        default: undefined;
    };
    onClose: {
        type: PropType<() => void>;
        default: undefined;
    };
    /**
     * 显示全屏按钮
     */
    showAdjust: {
        type: PropType<boolean>;
        default: boolean;
    };
    isFullscreen: {
        type: PropType<boolean>;
        default: boolean;
    };
    onAdjust: {
        type: PropType<(val: boolean) => void>;
        default: undefined;
    };
    class: {
        type: PropType<string>;
        default: undefined;
    };
    style: {
        type: PropType<CSSProperties | string>;
        default: undefined;
    };
    showMask: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("onClick" | "onClose" | "onAdjust")[], "onClick" | "onClose" | "onAdjust", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    title: {
        type: PropType<string>;
        default: string;
    };
    modalTitle: {
        type: PropType<string | VNode>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: undefined;
    };
    width: {
        type: PropType<string>;
        default: string;
    };
    height: {
        type: PropType<string>;
        default: string;
    };
    trigger: {
        type: PropType<string | VNode>;
        default: undefined;
    };
    onClick: {
        type: PropType<() => void>;
        default: undefined;
    };
    onClose: {
        type: PropType<() => void>;
        default: undefined;
    };
    /**
     * 显示全屏按钮
     */
    showAdjust: {
        type: PropType<boolean>;
        default: boolean;
    };
    isFullscreen: {
        type: PropType<boolean>;
        default: boolean;
    };
    onAdjust: {
        type: PropType<(val: boolean) => void>;
        default: undefined;
    };
    class: {
        type: PropType<string>;
        default: undefined;
    };
    style: {
        type: PropType<CSSProperties | string>;
        default: undefined;
    };
    showMask: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    insert: {
        type: PropType<() => void>;
        default: undefined;
    };
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    previewTheme: {
        type: PropType<PreviewThemes>;
        default: undefined;
    };
    codeTheme: {
        type: PropType<string>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
    showToolbarName: {
        type: PropType<boolean>;
        default: undefined;
    };
}>> & Readonly<{
    onOnClick?: ((...args: any[]) => any) | undefined;
    onOnClose?: ((...args: any[]) => any) | undefined;
    onOnAdjust?: ((...args: any[]) => any) | undefined;
}>, {
    title: string;
    disabled: boolean;
    showToolbarName: boolean;
    theme: Themes;
    class: string;
    language: string;
    previewTheme: string;
    style: string | CSSProperties;
    codeTheme: string;
    visible: boolean;
    trigger: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    insert: () => void;
    onClick: () => void;
    onClose: () => void;
    onAdjust: (val: boolean) => void;
    modalTitle: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>;
    width: string;
    height: string;
    showAdjust: boolean;
    isFullscreen: boolean;
    showMask: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$6: typeof _default$7 & {
    install: (app: App) => App;
};

declare const _default$5: vue.DefineComponent<vue.ExtractPropTypes<{
    title: {
        type: PropType<string | VNode | VNode[]>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: boolean;
    };
    width: {
        type: PropType<string>;
        default: string;
    };
    height: {
        type: PropType<string>;
        default: string;
    };
    onClose: {
        type: PropType<() => void>;
    };
    showAdjust: {
        type: PropType<boolean>;
        default: boolean;
    };
    isFullscreen: {
        type: PropType<boolean>;
        default: boolean;
    };
    onAdjust: {
        type: PropType<(val: boolean) => void>;
        default: () => void;
    };
    class: {
        type: PropType<string>;
        default: undefined;
    };
    style: {
        type: PropType<CSSProperties | string>;
        default: () => {};
    };
    showMask: {
        type: PropType<boolean>;
        default: boolean;
    };
}>, () => "" | vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClose"[], "onClose", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    title: {
        type: PropType<string | VNode | VNode[]>;
        default: string;
    };
    visible: {
        type: PropType<boolean>;
        default: boolean;
    };
    width: {
        type: PropType<string>;
        default: string;
    };
    height: {
        type: PropType<string>;
        default: string;
    };
    onClose: {
        type: PropType<() => void>;
    };
    showAdjust: {
        type: PropType<boolean>;
        default: boolean;
    };
    isFullscreen: {
        type: PropType<boolean>;
        default: boolean;
    };
    onAdjust: {
        type: PropType<(val: boolean) => void>;
        default: () => void;
    };
    class: {
        type: PropType<string>;
        default: undefined;
    };
    style: {
        type: PropType<CSSProperties | string>;
        default: () => {};
    };
    showMask: {
        type: PropType<boolean>;
        default: boolean;
    };
}>> & Readonly<{
    onOnClose?: ((...args: any[]) => any) | undefined;
}>, {
    title: string | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }> | VNode<vue.RendererNode, vue.RendererElement, {
        [key: string]: any;
    }>[];
    class: string;
    style: string | CSSProperties;
    visible: boolean;
    onAdjust: (val: boolean) => void;
    width: string;
    height: string;
    showAdjust: boolean;
    isFullscreen: boolean;
    showMask: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$4: typeof _default$5 & {
    install: (app: App) => App;
};

declare const StrIcon: (name: keyof CustomStrIcon, customIcon: CustomIcon) => string;

declare const _default$3: vue.DefineComponent<vue.ExtractPropTypes<{
    onClick: {
        type: PropType<(e: MouseEvent) => void>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, "onClick"[], "onClick", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    onClick: {
        type: PropType<(e: MouseEvent) => void>;
        default: undefined;
    };
    /**
     * ==没有意义，仅用于规避克隆组件自动嵌入insert方法时，传入的是该组件而产生的waring
     */
    language: {
        type: PropType<string>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: undefined;
    };
    disabled: {
        type: PropType<boolean>;
        default: undefined;
    };
}>> & Readonly<{
    onOnClick?: ((...args: any[]) => any) | undefined;
}>, {
    disabled: boolean;
    theme: Themes;
    language: string;
    onClick: (e: MouseEvent) => void;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$2: typeof _default$3 & {
    install: (app: App) => App;
};

declare const MdPreview: vue.DefineComponent<{
    readonly modelValue: string;
    readonly theme: Themes;
    readonly class: string;
    readonly language: string;
    readonly showCodeRowNumber: boolean;
    readonly previewTheme: string;
    readonly style: string | vue.CSSProperties;
    readonly mdHeadingId: MdHeadingId;
    readonly sanitize: (html: string) => string;
    readonly noMermaid: boolean;
    readonly noKatex: boolean;
    readonly codeTheme: string;
    readonly formatCopiedText: (text: string) => string;
    readonly codeStyleReverse: boolean;
    readonly codeStyleReverseList: string[];
    readonly noHighlight: boolean;
    readonly noImgZoomIn: boolean;
    readonly customIcon: {
        bold?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        underline?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        italic?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "strike-through"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        title?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        sub?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        sup?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        quote?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "unordered-list"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "ordered-list"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        task?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "code-row"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        code?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        link?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        image?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        table?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        revoke?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        next?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        save?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        prettier?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        minimize?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        maximize?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "fullscreen-exit"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        fullscreen?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "preview-only"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        preview?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "preview-html"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        catalog?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        github?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        mermaid?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        formula?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        close?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        delete?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        upload?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
    } & CustomStrIcon;
    readonly sanitizeMermaid: (h: string) => Promise<string>;
    readonly codeFoldable: boolean;
    readonly autoFoldThreshold: number;
    readonly noEcharts: boolean;
    readonly onChange: ChangeEvent | undefined;
    readonly onHtmlChanged: HtmlChangedEvent | undefined;
    readonly onGetCatalog: GetCatalogEvent | undefined;
    readonly onRemount: (() => void) | undefined;
    readonly editorId: string | undefined;
    readonly id: string | undefined;
    readonly previewComponent: vue.Component | undefined;
}, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, EditorEmits, "onChange" | "onSave" | "onUploadImg" | "onHtmlChanged" | "onGetCatalog" | "onError" | "update:modelValue" | "onBlur" | "onFocus" | "onInput" | "onDrop" | "oninputBoxWidthChange" | "onRemount", vue.PublicProps, Readonly<{
    readonly modelValue: string;
    readonly theme: Themes;
    readonly class: string;
    readonly language: string;
    readonly showCodeRowNumber: boolean;
    readonly previewTheme: string;
    readonly style: string | vue.CSSProperties;
    readonly mdHeadingId: MdHeadingId;
    readonly sanitize: (html: string) => string;
    readonly noMermaid: boolean;
    readonly noKatex: boolean;
    readonly codeTheme: string;
    readonly formatCopiedText: (text: string) => string;
    readonly codeStyleReverse: boolean;
    readonly codeStyleReverseList: string[];
    readonly noHighlight: boolean;
    readonly noImgZoomIn: boolean;
    readonly customIcon: {
        bold?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        underline?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        italic?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "strike-through"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        title?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        sub?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        sup?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        quote?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "unordered-list"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "ordered-list"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        task?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "code-row"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        code?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        link?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        image?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        table?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        revoke?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        next?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        save?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        prettier?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        minimize?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        maximize?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "fullscreen-exit"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        fullscreen?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "preview-only"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        preview?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        "preview-html"?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        catalog?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        github?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        mermaid?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        formula?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        close?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        delete?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
        upload?: {
            component: vue.Component | vue.VNode | string;
            props?: {
                [key: string | number | symbol]: any;
            };
        } | undefined;
    } & CustomStrIcon;
    readonly sanitizeMermaid: (h: string) => Promise<string>;
    readonly codeFoldable: boolean;
    readonly autoFoldThreshold: number;
    readonly noEcharts: boolean;
    readonly onChange: ChangeEvent | undefined;
    readonly onHtmlChanged: HtmlChangedEvent | undefined;
    readonly onGetCatalog: GetCatalogEvent | undefined;
    readonly onRemount: (() => void) | undefined;
    readonly editorId: string | undefined;
    readonly id: string | undefined;
    readonly previewComponent: vue.Component | undefined;
}> & Readonly<{
    onOnChange?: ((...args: any[]) => any) | undefined;
    onOnSave?: ((...args: any[]) => any) | undefined;
    onOnUploadImg?: ((...args: any[]) => any) | undefined;
    onOnHtmlChanged?: ((...args: any[]) => any) | undefined;
    onOnGetCatalog?: ((...args: any[]) => any) | undefined;
    onOnError?: ((...args: any[]) => any) | undefined;
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    onOnBlur?: ((...args: any[]) => any) | undefined;
    onOnFocus?: ((...args: any[]) => any) | undefined;
    onOnInput?: ((...args: any[]) => any) | undefined;
    onOnDrop?: ((...args: any[]) => any) | undefined;
    onOninputBoxWidthChange?: ((...args: any[]) => any) | undefined;
    onOnRemount?: ((...args: any[]) => any) | undefined;
}>, {
    onChange: ChangeEvent;
    onHtmlChanged: HtmlChangedEvent;
    onGetCatalog: GetCatalogEvent;
    onRemount: () => void;
    modelValue: string;
    theme: Themes;
    class: string;
    language: string;
    editorId: string;
    id: string;
    showCodeRowNumber: boolean;
    previewTheme: string;
    style: string | vue.CSSProperties;
    mdHeadingId: MdHeadingId;
    sanitize: (html: string) => string;
    noMermaid: boolean;
    noKatex: boolean;
    codeTheme: string;
    formatCopiedText: (text: string) => string;
    codeStyleReverse: boolean;
    codeStyleReverseList: string[];
    noHighlight: boolean;
    noImgZoomIn: boolean;
    customIcon: CustomIcon;
    sanitizeMermaid: (h: string) => Promise<string>;
    codeFoldable: boolean;
    autoFoldThreshold: number;
    noEcharts: boolean;
    previewComponent: vue.Component;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default$1: typeof MdPreview & {
    install: (app: App) => App;
};

interface TocItem extends HeadList {
    index: number;
    children?: Array<TocItem>;
}
declare const MdCatalog: vue.DefineComponent<vue.ExtractPropTypes<{
    /**
     * 编辑器的Id，务必与需要绑定的编辑器Id相同
     */
    editorId: {
        type: PropType<string>;
        default: undefined;
    };
    class: {
        type: StringConstructor;
        default: string;
    };
    mdHeadingId: {
        type: PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    /**
     * 指定滚动的容器，选择器需带上对应的符号，默认预览框
     * 元素必须定位！！！！！！
     *
     * 默认：#md-editor-preview-wrapper
     */
    scrollElement: {
        type: PropType<string | HTMLElement>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: string;
    };
    /**
     * 高亮标题相对滚动容器顶部偏移量，即距离该值时，高亮当前目录菜单项
     *
     * 默认：20px
     */
    offsetTop: {
        type: PropType<number>;
        default: number;
    };
    /**
     * 滚动区域的固定顶部高度
     *
     * 默认：0
     */
    scrollElementOffsetTop: {
        type: PropType<number>;
        default: number;
    };
    onClick: {
        type: PropType<(e: MouseEvent, t: TocItem) => void>;
        default: undefined;
    };
    onActive: {
        type: PropType<(heading: HeadList | undefined, activeElement: HTMLDivElement) => void>;
        default: undefined;
    };
    /**
     * 滚动容器是否在web component中，默认不在
     *
     * 在其中的话通过document查询不到
     */
    isScrollElementInShadow: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 设置与哪个区域同步，默认与内容区域同步
     *
     * >= v5.3.0
     */
    syncWith: {
        type: PropType<"editor" | "preview">;
        default: string;
    };
    /**
     * 控制最大显示的目录层级
     */
    catalogMaxDepth: {
        type: PropType<number>;
        default: undefined;
    };
}>, () => vue_jsx_runtime.JSX.Element, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("onClick" | "onActive")[], "onClick" | "onActive", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    /**
     * 编辑器的Id，务必与需要绑定的编辑器Id相同
     */
    editorId: {
        type: PropType<string>;
        default: undefined;
    };
    class: {
        type: StringConstructor;
        default: string;
    };
    mdHeadingId: {
        type: PropType<MdHeadingId>;
        default: MdHeadingId;
    };
    /**
     * 指定滚动的容器，选择器需带上对应的符号，默认预览框
     * 元素必须定位！！！！！！
     *
     * 默认：#md-editor-preview-wrapper
     */
    scrollElement: {
        type: PropType<string | HTMLElement>;
        default: undefined;
    };
    theme: {
        type: PropType<Themes>;
        default: string;
    };
    /**
     * 高亮标题相对滚动容器顶部偏移量，即距离该值时，高亮当前目录菜单项
     *
     * 默认：20px
     */
    offsetTop: {
        type: PropType<number>;
        default: number;
    };
    /**
     * 滚动区域的固定顶部高度
     *
     * 默认：0
     */
    scrollElementOffsetTop: {
        type: PropType<number>;
        default: number;
    };
    onClick: {
        type: PropType<(e: MouseEvent, t: TocItem) => void>;
        default: undefined;
    };
    onActive: {
        type: PropType<(heading: HeadList | undefined, activeElement: HTMLDivElement) => void>;
        default: undefined;
    };
    /**
     * 滚动容器是否在web component中，默认不在
     *
     * 在其中的话通过document查询不到
     */
    isScrollElementInShadow: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * 设置与哪个区域同步，默认与内容区域同步
     *
     * >= v5.3.0
     */
    syncWith: {
        type: PropType<"editor" | "preview">;
        default: string;
    };
    /**
     * 控制最大显示的目录层级
     */
    catalogMaxDepth: {
        type: PropType<number>;
        default: undefined;
    };
}>> & Readonly<{
    onOnClick?: ((...args: any[]) => any) | undefined;
    onOnActive?: ((...args: any[]) => any) | undefined;
}>, {
    catalogMaxDepth: number;
    theme: Themes;
    class: string;
    editorId: string;
    mdHeadingId: MdHeadingId;
    onClick: (e: MouseEvent, t: TocItem) => void;
    onActive: (heading: HeadList | undefined, activeElement: HTMLDivElement) => void;
    scrollElement: string | HTMLElement;
    offsetTop: number;
    scrollElementOffsetTop: number;
    isScrollElementInShadow: boolean;
    syncWith: "preview" | "editor";
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare const _default: typeof MdCatalog & {
    install: (app: App) => App;
};

/**
 * 重写markdown-it-xss，它的作者好像不维护了
 */

interface XSSPluginType {
    xss?: (_xss: typeof xss) => XSS.IFilterXSSOptions | xss.IFilterXSSOptions;
    /**
     * 它不会覆盖默认的白名单，而是把默认白名单、内置白名单结合
     */
    extendedWhiteList?: xss.IFilterXSSOptions['whiteList'];
}
declare const XSSPlugin: (md: markdownit, options: XSSPluginType) => void;

declare const prefix = "md-editor";
declare const editorExtensionsAttrs: GlobalConfig['editorExtensionsAttrs'];
declare const allToolbar: string[];
declare const allFooter: Array<Footers>;
declare const config: Config;

declare const zh_CN: StaticTextDefaultValue;
declare const en_US: StaticTextDefaultValue;

/**
 * 清空组件带来的副作用，例如
 * 1. 使用CDN嵌入的链接，为了保证多个组件能够正常使用，组件在卸载时不会主动移除
 */
declare const clearSideEffects: () => void;

export { _default$8 as DropdownToolbar, _default as MdCatalog, _default$c as MdEditor, _default$4 as MdModal, _default$1 as MdPreview, _default$6 as ModalToolbar, _default$2 as NormalFooterToolbar, _default$a as NormalToolbar, StrIcon, XSSPlugin, allFooter, allToolbar, clearSideEffects, config, editorExtensionsAttrs, en_US, prefix, zh_CN };
export type { ChangeEvent, CodeCss, CodeCssAttrs, CodeMirrorExtension, Config, CustomIcon, CustomStrIcon, DOMEventHandlers, EditorContext, EditorEmits, EditorProps, ErrorEvent, ExposeEvent, ExposeParam, ExposePreviewParam, FocusOption, Footers, GetCatalogEvent, GlobalConfig, HeadList, HtmlChangedEvent, InnerError, Insert, InsertContentGenerator, InsertParam, MarkdownItConfigPlugin, MdHeadingId, MdPreviewProps, MermaidTemplate, PreviewThemes, SaveEvent, SettingType, StaticTextDefault, StaticTextDefaultKey, StaticTextDefaultValue, Themes, ToolbarNames, ToolbarTips, UpdateSetting, UploadImgCallBack, UploadImgCallBackParam, UploadImgEvent, XSSPluginType };
