import * as React from 'react';
import { WebViewProps } from 'react-native-webview';
import { StyleProp, ViewStyle } from 'react-native';
import type { CustomFont, QuillConfig } from '../types';
import type { EditorEventHandler, EditorEventType, SelectionChangeData, EditorChangeData, TextChangeData, HtmlChangeData } from '../constants/editor-event';
export interface EditorState {
    webviewContent: string | null;
}
export interface EditorProps {
    style?: StyleProp<ViewStyle>;
    quill?: QuillConfig;
    customFonts?: Array<CustomFont>;
    defaultFontFamily?: string;
    initialHtml?: string;
    customStyles?: string[];
    import3rdParties?: 'local' | 'cdn';
    containerId?: string;
    theme?: {
        background: string;
        color: string;
        placeholder: string;
    };
    loading?: string | React.ReactNode;
    container: boolean | React.ComponentType;
    onSelectionChange?: (data: SelectionChangeData) => void;
    onTextChange?: (data: TextChangeData) => void;
    onHtmlChange?: (data: HtmlChangeData) => void;
    onEditorChange?: (data: EditorChangeData) => void;
    webview?: WebViewProps;
    onBlur?: () => void;
    onFocus?: () => void;
    customJS?: string;
}
export default class QuillEditor extends React.Component<EditorProps, EditorState> {
    private _webview;
    private _handlers;
    private _promises;
    constructor(props: EditorProps);
    private getInitalHtml;
    private getKey;
    private postAwait;
    private post;
    private toMessage;
    private onMessage;
    blur: () => void;
    focus: () => void;
    hasFocus: () => Promise<boolean>;
    enable: (enable?: boolean) => void;
    disable: () => void;
    update: () => void;
    format: (name: string, value: any) => void;
    deleteText: (index: number, length: number) => void;
    getContents: (index?: number | undefined, length?: number | undefined) => Promise<any>;
    getHtml: () => Promise<any>;
    getLength: () => Promise<any>;
    getText: (index?: number | undefined, length?: number | undefined) => Promise<any>;
    getBounds: (index: number, length?: number | undefined) => Promise<any>;
    getSelection: (focus?: boolean) => Promise<any>;
    setSelection: (index: number, length?: number | undefined, source?: String | undefined) => void;
    insertEmbed: (index: number, type: string, value: any) => void;
    insertText: (index: number, text: string, formats?: Record<string, any> | undefined) => void;
    setContents: (delta: any) => void;
    setText: (text: string) => void;
    updateContents: (delta: any) => void;
    on: (event: EditorEventType, handler: EditorEventHandler) => void;
    off: (event: EditorEventType, handler: Function) => void;
    dangerouslyPasteHTML: (index: number, html: string) => void;
    renderWebview: (content: string, style: StyleProp<ViewStyle>, props?: WebViewProps) => JSX.Element;
    render(): JSX.Element;
}
