import { Observable } from 'rxjs';
import * as t from './types';
export declare class Keyboard<T extends t.KeyCommand> implements t.IKeyboard<T> {
    static create<T extends t.KeyCommand>(options: t.IKeyboardArgs<T>): Keyboard<T>;
    static isModifier(key: string): boolean;
    static parse(pattern: string | boolean | undefined, defaultValue?: string): t.IKeyPattern;
    static matchEvent(pattern: t.IKeyPattern | string, event: Partial<t.IKeyMatchEventArgs>): boolean;
    static formatKey(key?: string): string;
    private constructor();
    private readonly _dispose$;
    readonly dispose$: Observable<void>;
    readonly keyPress$: Observable<t.IKeypressEvent>;
    readonly bindingPress$: Observable<t.IKeyBindingEvent<T>>;
    readonly bindings: t.KeyBindings<T>;
    latest: t.IKeypressEvent | undefined;
    get isDisposed(): boolean;
    dispose(): void;
    clone(options?: Partial<t.IKeyboardArgs<T>>): Keyboard<T>;
    filter(fn: (e: t.IKeypressEvent) => boolean): Keyboard<T>;
    takeUntil(dispose$: Observable<any>): Keyboard<T>;
    private monitorBindings;
    private matchBinding;
}
