import * as React from 'react';
import { Editable } from 'slate-react';
import { SlateValue } from '../../types/slate/SlateValue';
import { Migration } from '../../slateMigrations/Migration';
export type SlateEditorOnChangeHandler = (val: {
    value: SlateValue;
    isDirty: boolean;
    isValid: boolean;
}) => void;
export declare enum ToolbarButtonTypes {
    Link = 1,
    Heading = 2,
    Lists = 4,
    Color = 8,
    Alignment = 16,
    Quote = 32,
    FontSize = 64
}
export declare enum HoverButtonTypes {
    Bold = 1,
    Italic = 2,
    Underline = 4,
    Link = 8,
    Color = 16
}
export interface SlateEditorCustomProps {
    value: SlateValue;
    onChange: SlateEditorOnChangeHandler;
    className?: string;
    label?: JSX.Element | string;
    title?: JSX.Element | string;
    maxChars?: number;
    version?: number;
    migrations?: Migration[];
    extraToolbarButtons?: JSX.Element;
    extraHoverButtons?: JSX.Element;
    toolbarButtons?: ToolbarButtonTypes;
    hoverButtons?: HoverButtonTypes;
    hideToolbar?: boolean;
}
type EditableProps = React.ComponentProps<typeof Editable>;
type SlateEditorProps = SlateEditorCustomProps & Omit<Partial<EditableProps>, 'onChange' | 'value'>;
declare const SlateEditor: React.FC<SlateEditorProps>;
export default SlateEditor;
