export type IMapping = {
    mappingMode: string;
    lhs: string;
    rhs: string;
    mode: string;
};
export interface Config {
    exCommands?: {
        name: string;
        prefix: string;
        handler: () => void;
    }[];
}
export declare function applyConfig(codeMirrorVimInstance: any, config: Config): void;
export declare function setKeybindings(codeMirrorVimInstance: any, mappings: IMapping[]): void;
export type Clipboard = {
    writeText(text: string, notify?: boolean): void;
    readText(): string;
};
export declare class Register {
    keyBuffer: string[];
    insertModeChanges: Array<any>;
    searchQueries: Array<any>;
    linewise: boolean;
    blockwise: boolean;
    clipboard: Clipboard;
    constructor(clipboard: Clipboard);
    setText(text: string, linewise: boolean, blockwise: boolean): void;
    pushText(text: string, linewise: boolean): void;
    pushInsertModeChanges(changes: any): void;
    pushSearchQuery(query: string): void;
    clear(): void;
    toString(): string;
    private createInsertModeChanges;
}
export declare function extendVimOnCodeMirror(codeMirrorVimInstance: any, vimConfig?: Config, vimKeymaps?: IMapping[], clipboard?: Clipboard): void;
