import { ISkipKey } from './key-container';
export declare class ComboStateKeys {
    alt: boolean;
    cmd: boolean;
    ctrl: boolean;
    shift: boolean;
}
export declare type TComboSanitized = (number | number[])[];
export interface IComboSplit {
    keys: Set<number>;
    stateKeys: ComboStateKeys;
}
/**
 * Simple KeyCombo class
 * @class KeyCombo
 */
export declare class KeyCombo {
    keys: Set<number>;
    stateKeys: ComboStateKeys;
    constructor(keys?: Set<number>, stateKeys?: ComboStateKeys);
    /**
     * Creates an instance of KeyCombo, given an string.
     */
    static fromString(comboStr: string): KeyCombo;
    static isEqual(currentCombo: KeyCombo, targetCombo: KeyCombo): boolean;
    /**
     * Parses the string and gets the code or codes of it
     */
    static parse(comboStr: string): IComboSplit;
    /**
     * Return a split combo with keys and stateKeys
     */
    static splitCombo(combo: TComboSanitized): IComboSplit;
    static getSkipKeys(keyArr: number[], skipKeys: ISkipKey[]): ISkipKey[];
    static getNonSkipKeys(keyArr: number[], skipKeys: ISkipKey[]): number[];
    static isSkipKey(key: number, skipKeys: ISkipKey[]): boolean;
    /**
     * Creates an instance of KeyCombo, given an string.
     */
    addEvent(ev: KeyboardEvent): boolean;
}
