/// <reference types="react" />
import PropTypes from "prop-types";
import { ToolbarSpecs } from "./components/UsfmToolbar";
export declare type IdentificationHeaders = Record<string, string | string[] | null>;
export interface UsfmEditorRef {
    getMarksAtSelection: () => string[];
    addMarkAtSelection: (mark: string) => void;
    removeMarkAtSelection: (mark: string) => void;
    getParagraphTypesAtSelection: () => string[];
    setParagraphTypeAtSelection: (marker: string) => void;
    goToVerse: (verseObject: Verse) => void;
}
export interface UsfmEditorProps {
    usfmString: string;
    onChange?: (usfm: string) => void;
    readOnly?: boolean;
    identification?: IdentificationHeaders;
    onIdentificationChange?: (identification: IdentificationHeaders) => void;
    goToVerse?: Verse;
    onVerseChange?: (verseRange: VerseRange) => void;
    toolbarSpecs: ToolbarSpecs;
}
export declare const usfmEditorPropTypes: {
    usfmString: PropTypes.Validator<string>;
    onChange: PropTypes.Requireable<(...args: any[]) => any>;
    readOnly: PropTypes.Requireable<boolean>;
    identification: PropTypes.Requireable<object>;
    onIdentificationChange: PropTypes.Requireable<(...args: any[]) => any>;
    goToVerse: PropTypes.Requireable<object>;
    onVerseChange: PropTypes.Requireable<(...args: any[]) => any>;
    toolbarSpecs: PropTypes.Requireable<object>;
};
export declare const usfmEditorDefaultProps: Partial<UsfmEditorProps>;
export declare type Verse = {
    chapter: number;
    verse: number;
    key?: unknown;
};
export declare type VerseRange = {
    chapter: number;
    verseStart: number;
    verseEnd: number;
};
export declare type ForwardRefUsfmEditor<R extends UsfmEditorRef> = React.ForwardRefExoticComponent<UsfmEditorProps & React.RefAttributes<R>>;
export declare type HocUsfmEditorProps<W extends UsfmEditorRef> = UsfmEditorProps & HasWrappedEditor<W>;
interface HasWrappedEditor<W extends UsfmEditorRef> {
    wrappedEditor: ForwardRefUsfmEditor<W>;
}
export {};
