export declare const enum TextInputHandlerEventType {
    Dismiss = 0,
    Input = 1,
    MoveCursor = 2
}
export type TextInputHandlerEventData = [
    type: TextInputHandlerEventType.Dismiss
] | [
    type: TextInputHandlerEventType.Input,
    text: string,
    selectStart: number,
    selectEnd: number
] | [
    type: TextInputHandlerEventType.MoveCursor,
    selectStart: number,
    selectEnd: number
];
export type TextInputHandlerListener = (...eventData: TextInputHandlerEventData & {
    0: TextInputHandlerEventType;
}) => void;
export declare abstract class TextInputHandler {
    readonly listener: TextInputHandlerListener;
    readonly domElems: ReadonlyArray<HTMLElement>;
    /**
     * Create a new text input handler. Note that the signature of this
     * constructor in base classes must have a single `listener` argument. Must
     * not change the current focus.
     */
    constructor(listener: TextInputHandlerListener, domElems: ReadonlyArray<HTMLElement>);
    /** Update the text and selection of the input. Should focus the input. */
    abstract askInput(currentText: string, selectStart: number, selectEnd: number): void;
    /** Change selection of input. */
    abstract select(selectStart: number, selectEnd: number): void;
    /** Dismiss input handler. Must call super if overridden. */
    dismiss(): void;
}
