import { MermaidConfig } from 'mermaid';
import { CSSProperties, HTMLAttributes, PropType, StyleValue, VNodeChild } from 'vue';
import { ItemType } from '../actions';
import { CodeHighlighterProps } from '../code-highlighter';
export type MermaidSemanticType = "root" | "header" | "graph" | "code";
export type MermaidRenderType = "image" | "code";
export interface MermaidActions {
    enableZoom?: boolean;
    enableDownload?: boolean;
    enableCopy?: boolean;
    customActions?: ItemType[];
}
export interface MermaidProps extends Omit<HTMLAttributes, "content" | "class" | "style"> {
    content: string;
    prefixCls?: string;
    rootClass?: string;
    class?: any;
    style?: StyleValue;
    classes?: Partial<Record<MermaidSemanticType, string>>;
    styles?: Partial<Record<MermaidSemanticType, CSSProperties>>;
    header?: VNodeChild | null;
    renderType?: MermaidRenderType;
    defaultRenderType?: MermaidRenderType;
    config?: MermaidConfig;
    actions?: MermaidActions;
    codeHighlighterProps?: Partial<Omit<CodeHighlighterProps, "content" | "language">>;
}
export interface MermaidRef {
    nativeElement: HTMLDivElement;
}
export interface MermaidCustomActionSlotInfo {
    item: ItemType;
    index: number;
    originNode: VNodeChild;
}
declare enum RenderType {
    Code = "code",
    Image = "image"
}
declare const XMermaid: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    content: {
        type: StringConstructor;
        required: true;
    };
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    rootClass: {
        type: StringConstructor;
        default: string;
    };
    class: {
        type: PropType<MermaidProps["class"]>;
        default: undefined;
    };
    style: {
        type: PropType<StyleValue>;
        default: undefined;
    };
    classes: {
        type: PropType<Partial<Record<MermaidSemanticType, string>>>;
        default: () => {};
    };
    styles: {
        type: PropType<Partial<Record<MermaidSemanticType, CSSProperties>>>;
        default: () => {};
    };
    header: {
        type: PropType<MermaidProps["header"]>;
        default: undefined;
    };
    renderType: {
        type: PropType<MermaidRenderType>;
        default: undefined;
    };
    defaultRenderType: {
        type: PropType<MermaidRenderType>;
        default: RenderType;
    };
    config: {
        type: PropType<MermaidConfig>;
        default: undefined;
    };
    actions: {
        type: PropType<MermaidActions>;
        default: () => {};
    };
    codeHighlighterProps: {
        type: PropType<MermaidProps["codeHighlighterProps"]>;
        default: undefined;
    };
}>, () => import("vue/jsx-runtime").JSX.Element | null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("update:renderType" | "renderTypeChange")[], "update:renderType" | "renderTypeChange", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    content: {
        type: StringConstructor;
        required: true;
    };
    prefixCls: {
        type: StringConstructor;
        default: string;
    };
    rootClass: {
        type: StringConstructor;
        default: string;
    };
    class: {
        type: PropType<MermaidProps["class"]>;
        default: undefined;
    };
    style: {
        type: PropType<StyleValue>;
        default: undefined;
    };
    classes: {
        type: PropType<Partial<Record<MermaidSemanticType, string>>>;
        default: () => {};
    };
    styles: {
        type: PropType<Partial<Record<MermaidSemanticType, CSSProperties>>>;
        default: () => {};
    };
    header: {
        type: PropType<MermaidProps["header"]>;
        default: undefined;
    };
    renderType: {
        type: PropType<MermaidRenderType>;
        default: undefined;
    };
    defaultRenderType: {
        type: PropType<MermaidRenderType>;
        default: RenderType;
    };
    config: {
        type: PropType<MermaidConfig>;
        default: undefined;
    };
    actions: {
        type: PropType<MermaidActions>;
        default: () => {};
    };
    codeHighlighterProps: {
        type: PropType<MermaidProps["codeHighlighterProps"]>;
        default: undefined;
    };
}>> & Readonly<{
    "onUpdate:renderType"?: ((...args: any[]) => any) | undefined;
    onRenderTypeChange?: ((...args: any[]) => any) | undefined;
}>, {
    prefixCls: string;
    style: StyleValue;
    rootClass: string;
    class: any;
    classes: Partial<Record<MermaidSemanticType, string>>;
    styles: Partial<Record<MermaidSemanticType, CSSProperties>>;
    header: VNodeChild;
    actions: MermaidActions;
    renderType: MermaidRenderType;
    defaultRenderType: MermaidRenderType;
    config: MermaidConfig;
    codeHighlighterProps: Partial<Omit<CodeHighlighterProps, "content" | "language">> | undefined;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
export default XMermaid;
