import type { PropType, ExtractPropTypes, InjectionKey, Ref } from 'vue';
import { IToolbarItemConfig } from './toolbar-config';
export interface MDThemeToolbarConfig {
    icons: {
        [key: string]: string;
    };
}
export interface MDThemeConfig {
    toolbar: MDThemeToolbarConfig;
}
export interface MdPlugin {
    plugin: any;
    opts?: Object;
}
export interface ICustomXssRule {
    key: string;
    value: string[] | null;
}
export interface ICustomRenderRule {
    key: string;
    value: Function;
}
export declare type Mode = 'editonly' | 'readonly' | 'normal';
export declare type ToolbarConfigProp = Array<string | string[]>;
export interface HintConfigItem {
    handler: (objs: {
        callback: (replaceText: string) => void;
        cursorHint: string;
        prefix: string;
    }) => void;
}
export declare const editorMdProps: {
    modelValue: {
        type: StringConstructor;
        default: string;
    };
    options: {
        type: ObjectConstructor;
        default: () => {};
    };
    mode: {
        type: PropType<Mode>;
        default: string;
    };
    customThemeConfig: {
        type: PropType<MDThemeConfig>;
    };
    customToolbars: {
        type: PropType<Record<string, IToolbarItemConfig>>;
    };
    disableChangeEvent: {
        type: BooleanConstructor;
        default: boolean;
    };
    editorContainerHeight: {
        type: NumberConstructor;
    };
    imageUploadToServer: {
        type: BooleanConstructor;
        default: boolean;
    };
    hidePreviewView: {
        type: BooleanConstructor;
        default: boolean;
    };
    maxlength: {
        type: NumberConstructor;
        default: null;
    };
    placeholder: {
        type: StringConstructor;
        default: string;
    };
    toolbarConfig: {
        type: PropType<ToolbarConfigProp>;
        default: () => (string | string[])[];
    };
    fullscreenZIndex: {
        type: NumberConstructor;
        default: number;
    };
    hintConfig: {
        type: PropType<Record<string, number | HintConfigItem>>;
        default: {};
    };
    customHintReplaceFn: {
        type: PropType<(prefix: string, row: any) => string>;
    };
    beforeShowHint: {
        type: PropType<(value: string) => boolean>;
    };
    baseUrl: {
        type: StringConstructor;
        default: null;
    };
    breaks: {
        type: BooleanConstructor;
        default: boolean;
    };
    customParse: {
        type: PropType<(html: string) => string>;
        default: null;
    };
    renderParse: {
        type: PropType<(html: string) => string>;
        default: null;
    };
    mdRules: {
        type: ObjectConstructor;
        default: () => {};
    };
    customRendererRules: {
        type: PropType<ICustomRenderRule[]>;
        default: () => never[];
    };
    customXssRules: {
        type: PropType<ICustomXssRule[]>;
        default: () => never[];
    };
    mdPlugins: {
        type: PropType<MdPlugin[]>;
        default: () => never[];
    };
};
export declare type EditorMdProps = ExtractPropTypes<typeof editorMdProps>;
export interface IEditorMdInjection {
    showFullscreen: Ref<boolean>;
    toolbars: Record<string, IToolbarItemConfig>;
    toolbarConfig: Ref<ToolbarConfigProp>;
    getEditorIns: () => any;
    t: (name: string) => string;
}
export declare const EditorMdInjectionKey: InjectionKey<IEditorMdInjection>;
export declare const mdRenderProps: {
    content: {
        type: StringConstructor;
        default: string;
    };
    disableRender: {
        type: BooleanConstructor;
        default: boolean;
    };
    baseUrl: {
        type: StringConstructor;
        default: null;
    };
    breaks: {
        type: BooleanConstructor;
        default: boolean;
    };
    customParse: {
        type: PropType<(html: string) => string>;
        default: null;
    };
    renderParse: {
        type: PropType<(html: string) => string>;
        default: null;
    };
    mdRules: {
        type: ObjectConstructor;
        default: () => {};
    };
    customRendererRules: {
        type: PropType<ICustomRenderRule[]>;
        default: () => never[];
    };
    customXssRules: {
        type: PropType<ICustomXssRule[]>;
        default: () => never[];
    };
    mdPlugins: {
        type: PropType<MdPlugin[]>;
        default: () => never[];
    };
};
export declare type MdRenderProps = ExtractPropTypes<typeof mdRenderProps>;
export declare const mdToolbarItemProps: {
    config: {
        type: PropType<IToolbarItemConfig>;
        default: () => {};
    };
};
export declare type MdToolbarItemProps = ExtractPropTypes<typeof mdToolbarItemProps>;
