import type { Peritext } from '../../../json-crdt-extensions/peritext';
import type { PeritextEventTarget } from '../../events/PeritextEventTarget';
import type { TypedEventTarget } from '../../../util/events/TypedEventTarget';
import type { CompositionController } from './CompositionController';
import type { UiLifeCycles } from '../types';
export interface InputControllerEventSourceMap {
    beforeinput: HTMLElementEventMap['beforeinput'];
    keydown: HTMLElementEventMap['keydown'];
    copy: HTMLElementEventMap['copy'];
    cut: HTMLElementEventMap['cut'];
    paste: HTMLElementEventMap['paste'];
}
export type InputControllerEventSource = TypedEventTarget<InputControllerEventSourceMap>;
export interface InputControllerOpts {
    source: InputControllerEventSource;
    txt: Peritext;
    et: PeritextEventTarget;
    comp: CompositionController;
}
/**
 * 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 opts: InputControllerOpts;
    protected readonly source: InputControllerEventSource;
    protected readonly txt: Peritext;
    readonly et: PeritextEventTarget;
    constructor(opts: InputControllerOpts);
    start(): () => void;
}
