import React from 'react';
import { type ReactCodeMirrorProps, type ReactCodeMirrorRef } from '@uiw/react-codemirror';
import MarkdownPreview, { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
import { type Commands } from './components/ToolBar/index';
import './index.less';
export * from './theme';
export * from './commands/index';
export * from '@uiw/react-markdown-preview';
export declare const scrollerStyle: import("@codemirror/state").Extension;
export interface IMarkdownEditor extends ReactCodeMirrorProps {
    className?: string;
    prefixCls?: string;
    /** The raw markdown that will be converted to html (**required**) */
    value?: string;
    /** Shows a preview that will be converted to html. */
    visible?: boolean;
    visibleEditor?: boolean;
    /** Override the default preview component */
    renderPreview?: (props: MarkdownPreviewProps, initVisible: boolean) => React.ReactNode;
    /** Preview expanded width @default `50%` */
    previewWidth?: string;
    /** Whether to enable preview function @default `true` */
    enablePreview?: boolean;
    /** Whether to enable scrolling */
    enableScroll?: boolean;
    /** Tool display settings. */
    toolbars?: Commands[];
    /** The tool on the right shows the settings. */
    toolbarsMode?: Commands[];
    /** Tool display filter settings. */
    toolbarsFilter?: (tool: Commands, idx: number) => boolean;
    /** Toolbar on bottom */
    toolbarBottom?: boolean;
    /** Option to hide the tool bar. @deprecated The next major version will be deprecated. Please use `showToolbar`. */
    hideToolbar?: boolean;
    /** Option to hide the tool bar. */
    showToolbar?: boolean;
    /** [@uiw/react-markdown-preview](https://github.com/uiwjs/react-markdown-preview#options-props) options */
    previewProps?: MarkdownPreviewProps;
    /** replace the default `extensions` */
    reExtensions?: ReactCodeMirrorProps['extensions'];
    /** Edit mode and preview mode switching event */
    onPreviewMode?: (isHide: boolean) => void;
}
export interface ToolBarProps {
    prefixCls?: string;
    editor: React.RefObject<ReactCodeMirrorRef>;
    preview: React.RefObject<HTMLDivElement>;
    container: React.RefObject<HTMLDivElement>;
    containerEditor: React.RefObject<HTMLDivElement>;
    editorProps: IMarkdownEditor;
}
export interface MarkdownEditorRef {
    editor: React.RefObject<ReactCodeMirrorRef>;
    preview: React.RefObject<HTMLDivElement> | null;
}
declare const MarkdownEditor: MarkdownEditorComponent;
type MarkdownEditorComponent = React.FC<React.PropsWithRef<IMarkdownEditor>> & {
    Markdown: typeof MarkdownPreview;
};
export default MarkdownEditor;
