import * as React from "react";
import { ReactEditor } from "slate-react";
import { Node, Descendant } from "slate";
import { UsfmEditorRef, UsfmEditorProps, ForwardRefUsfmEditor, Verse, IdentificationHeaders } from "../UsfmEditor";
export declare const createBasicUsfmEditor: () => ForwardRefUsfmEditor<BasicUsfmEditor>;
/**
 * A WYSIWYG editor component for USFM
 */
export declare class BasicUsfmEditor extends React.Component<UsfmEditorProps, BasicUsfmEditorState> implements UsfmEditorRef {
    static propTypes: {
        usfmString: import("prop-types").Validator<string>;
        onChange: import("prop-types").Requireable<(...args: any[]) => any>;
        readOnly: import("prop-types").Requireable<boolean>;
        identification: import("prop-types").Requireable<object>;
        onIdentificationChange: import("prop-types").Requireable<(...args: any[]) => any>;
        goToVerse: import("prop-types").Requireable<object>;
        onVerseChange: import("prop-types").Requireable<(...args: any[]) => any>;
        toolbarSpecs: import("prop-types").Requireable<object>;
    };
    static defaultProps: Partial<UsfmEditorProps>;
    slateEditor: ReactEditor;
    constructor(props: UsfmEditorProps);
    static getDerivedStateFromProps(props: UsfmEditorProps, state: BasicUsfmEditorState): BasicUsfmEditorState | null;
    getMarksAtSelection: () => string[];
    addMarkAtSelection: (mark: string) => void;
    removeMarkAtSelection: (mark: string) => void;
    getParagraphTypesAtSelection: () => string[];
    setParagraphTypeAtSelection: (marker: string) => void;
    goToVerse: (verseObject?: Verse | undefined) => void;
    handleChange: (value: Descendant[]) => void;
    scheduleOnChange: ((newValue: Node[]) => void) & import("lodash").Cancelable;
    onKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;
    fixSelectionOnChapterOrVerseNumber(): void;
    updateIdentificationFromProp: () => void;
    updateIdentificationFromUsfm: () => void;
    updateIdentificationFromUsfmAndProp: () => void;
    filterAndNormalize: (ids: IdentificationHeaders) => IdentificationHeaders;
    updateSelectedVerseAfterEditorChange: () => void;
    updateSelectedVerse(chapter: number, verseNumOrRange: string): void;
    didSelectedVerseChange(chapter: number, verseNumOrRange: string): boolean;
    componentDidMount(): void;
    componentDidUpdate(prevProps: UsfmEditorProps): void;
    render(): JSX.Element;
}
interface BasicUsfmEditorState {
    value: Descendant[];
    selectedVerse?: Verse;
    prevUsfmStringProp: string;
}
export {};
