import type { Peritext } from '../../../json-crdt-extensions/peritext';
import type { PeritextEventTarget } from '../../../json-crdt-extensions/peritext/events/PeritextEventTarget';
import type { TypedEventTarget } from '../../../util/events/TypedEventTarget';
import type { UiLifeCycles } from '../types';
import type { DomController } from './DomController';
export interface InputControllerEventSourceMap {
    beforeinput: HTMLElementEventMap['beforeinput'];
    keydown: HTMLElementEventMap['keydown'];
    copy: HTMLElementEventMap['copy'];
    cut: HTMLElementEventMap['cut'];
    paste: HTMLElementEventMap['paste'];
}
export type InputControllerEventSource = TypedEventTarget<InputControllerEventSourceMap>;
/**
 * Processes incoming DOM "input" events (such as "beforeinput", "input",
 * "keydown", etc.) and translates them into Peritext events.
 */
export declare class InputController implements UiLifeCycles {
    protected readonly dom: DomController;
    protected readonly txt: Peritext;
    readonly et: PeritextEventTarget;
    constructor(dom: DomController);
    start(): () => void;
}
