import { CommandType, ICommand, CommandConstructor, CommandPayloadMap, CommandResult, CommandCallback, RequiredPayloadCommands } from './types';
import { Doc } from '../view/Doc';
import { InputComposition } from './InputComposition';
export declare class CommandManager {
    private registry;
    doc: Doc;
    undoStack: ICommand[];
    redoStack: ICommand[];
    composition?: InputComposition;
    private static readonly COMMAND_MAP;
    constructor(doc: Doc);
    register(name: CommandType, CommandClass: CommandConstructor): void;
    execute<T extends CommandType>(name: T, payload?: T extends RequiredPayloadCommands ? CommandPayloadMap[T] : CommandPayloadMap[T] | undefined): Promise<void>;
    undo(): Promise<void>;
    redo(): Promise<void>;
    compositionStart(text: string): void;
    compositionUpdate(text: string): void;
    compositionEnd(text: string): void;
    updateCursor(data: CommandResult): void;
    runCallback(callback: CommandCallback, data: CommandResult, output?: any): void;
}
