import { RangeCopy } from './model/manipulators/range/create-range-copy-operation';
import { DomEventHandlersHolder } from '@devexpress/utils/lib/class/event-handlers-holder';
import { IEventManager } from './interfaces/i-event-manager';
import { IRichEditControl } from './interfaces/i-rich-edit-core';
import { HtmlBuilder } from './formats/html/export/html-builder';
export declare const INPUT_CLASS_NAME = "dxreInputTarget";
declare enum IMEState {
    None = 0,
    Start = 1,
    Process = 2
}
export declare abstract class InputEditorBase<TInpElement extends HTMLElement> {
    private newLineRegexp;
    eventManager: IEventManager;
    control: IRichEditControl;
    inputElement: TInpElement;
    previousText: string;
    canInsertTextOnInputEvent: boolean;
    needProcessShortcut: boolean;
    initializedIfNotReadOnly: boolean;
    prevKeyCode: number;
    IMEState: IMEState;
    private inputWithAlt;
    private processTextOnKeyPress;
    protected evtHandlersHolder: DomEventHandlersHolder;
    private keyPressTimerId;
    private imeTimerId;
    private onInputTimerId;
    private onBlurTimerId;
    private onKeyUpTimerId;
    constructor(control: IRichEditControl, eventManager: IEventManager, parent: HTMLElement);
    dispose(): void;
    initialize(): void;
    initializeIfNotReadOnly(): void;
    initializeIfNotReadOnlyCore(): void;
    initEvents(): void;
    createHierarchy(parent: HTMLElement): void;
    createHierarchyCore(): void;
    createInputElement(): TInpElement;
    onInput(evt: InputEvent): void;
    onBlur(_evt: FocusEvent): void;
    onFocus(): void;
    onKeyDown(evt: KeyboardEvent): void;
    protected isProcessShortcut(keyCode: number): boolean;
    onKeyUp(evt: KeyboardEvent): void;
    onKeyPress(evt: KeyboardEvent): void;
    onContextMenu(evt: MouseEvent): void;
    onShortcut(evt: KeyboardEvent): boolean;
    onShortcutCore(evt: KeyboardEvent, shortcutCode: number): void;
    onText(text: string, currentText: string, isUpdated: boolean): void;
    onTextReplace(_text: string, currentText: string): void;
    onTextInput(_data: string | undefined): void;
    tryObtainCodeFromChar(char: string): number;
    captureFocus(): void;
    canUseInputEvent(): boolean;
    getEditableDocumentText(keepLineBreakes?: boolean): string;
    getEditableTextOwner(): HTMLElement;
    setPosition(left: number, top: number): void;
    clearInputElement(): void;
    setEditableDocumentContent(_content: string | NodeListOf<ChildNode>): void;
    setEditableDocumentCursorPosition(_cursorPosition: number): void;
    selectEditableDocumentContent(): void;
    getEditableDocumentContent(): string | NodeListOf<ChildNode>;
    abstract getEditableDocument(): HTMLElement | Document;
    getNormalizedEvent(evt: Event): any;
    recreateIfNeeded(): void;
    private getShortcutCode;
}
export declare class DivInputEditor extends InputEditorBase<HTMLElement> {
    private canSkipInputEvent;
    private canSkipFocusAndBlur;
    private handled;
    private cursorWasSetOnLastPosition;
    private clearInputTimerId;
    private lastCursorPosition;
    private composUpdateTimerId;
    private composEndTimerId;
    private onTextInputTimerId;
    constructor(control: IRichEditControl, eventManager: IEventManager, parent: HTMLElement);
    dispose(): void;
    initializeIfNotReadOnlyCore(): void;
    setPosition(left: number, top: number): void;
    createInputElement(): HTMLElement;
    initEvents(): void;
    onKeyDown(evt: KeyboardEvent): void;
    onKeyUp(evt: KeyboardEvent): void;
    onInput(evt: InputEvent): void;
    onFocus(): void;
    onBlur(evt: FocusEvent): void;
    onShortcutCore(evt: KeyboardEvent, shortcutCode: number): void;
    onTextReplace(text: string, currentText: string): void;
    onTextInput(data: string): void;
    private tryHandleShortcutByInputString;
    getEditableTextOwner(): HTMLElement;
    captureFocus(): void;
    getEditableDocument(): HTMLElement | Document;
    clearInputElement(): void;
    setEditableDocumentContent(content: string | NodeListOf<ChildNode>): void;
    setEditableDocumentCursorPosition(cursorPosition: number): void;
    getEditableDocumentText(): string;
    getEditableDocumentFullText(): string;
    getEditableDocumentContent(): string | NodeListOf<ChildNode>;
    getEditableDocumentCursorPosition(): number;
    selectEditableDocumentContent(): void;
    onCompositionStart(_evt: KeyboardEvent): void;
    onCompositionUpdate(_evt: KeyboardEvent): void;
    onCompositionEnd(_evt: KeyboardEvent): void;
}
export declare class IFrameInputEditor extends InputEditorBase<HTMLIFrameElement> {
    editableDocument: Document;
    private onTextInputTimerId;
    private composUpdateTimerId;
    private composEndTimerId;
    constructor(control: IRichEditControl, eventManager: IEventManager, parent: HTMLElement);
    dispose(): void;
    createHierarchyCore(): void;
    initializeIfNotReadOnlyCore(): void;
    createInputElement(): HTMLIFrameElement;
    initEvents(): void;
    private isModifyEnabled;
    captureFocus(): void;
    setPosition(left: number, top: number, force?: boolean): void;
    clearInputElement(): void;
    setEditableDocumentContent(content: string | NodeListOf<ChildNode>): void;
    getEditableDocumentContent(): string | NodeListOf<ChildNode>;
    selectEditableDocumentContent(): void;
    getEditableDocument(): HTMLElement | Document;
    getEditableTextOwner(): HTMLElement;
    onBlur(evt: FocusEvent): void;
    onShortcutCore(evt: KeyboardEvent, shortcutCode: number): void;
    onTextInput(data: string): void;
    onTextReplace(text: string, currentText: string): void;
    recreateIfNeeded(): void;
    onCompositionStart(_evt: KeyboardEvent): void;
    onCompositionUpdate(_evt: KeyboardEvent): void;
    onCompositionEnd(_evt: KeyboardEvent): void;
    startInputIME(): any;
    updateInputIME(): any;
    endInputIME(): void;
}
export declare class InputController {
    control: IRichEditControl;
    inputEditor: InputEditorBase<HTMLElement>;
    private exporter;
    constructor(control: IRichEditControl, eventManager: IEventManager, parent: HTMLElement);
    initExporter(): void;
    dispose(): void;
    private createInputEditor;
    getEditableDocument(): HTMLElement | Document;
    getExportedRangeCopy(): RangeCopy;
    captureFocus(): void;
    setPosition(left: number, top: number): void;
    renderSelectionToEditableDocument(): void;
    static getCopyPasteHtmlContentForEditable(html: string | HtmlBuilder, guidLabel: string): HTMLElement;
    setEditableDocumentContent(content: string | NodeListOf<ChildNode>): void;
    setEditableDocumentCursorPosition(cursorPosition: number): void;
    getEditableDocumentContent(): string | NodeListOf<ChildNode>;
    selectEditableDocumentContent(): void;
}
export {};
