type LiteralUnion<T extends U, U = string> = T | (U & {});
export type ModifierKeys = 'Alt' | 'AltGraph' | 'CapsLock' | 'Ctrl' | 'Fn' | 'FnLock' | 'Hyper' | 'Meta' | 'NumLock' | 'ScrollLock' | 'Shift' | 'Super' | 'Symbol' | 'SymbolLock';
export declare const isModifierKey: (key: string) => key is ModifierKeys;
export type WhitespaceKeys = 'Enter' | 'Tab' | 'Space';
export type NavigationKeys = 'ArrowDown' | 'ArrowLeft' | 'ArrowRight' | 'ArrowUp' | 'Arrow' | 'End' | 'Home' | 'PageDown' | 'PageUp' | 'Escape';
export type FunctionKeys = 'F1' | 'F2' | 'F3' | 'F4' | 'F5' | 'F6' | 'F7' | 'F8' | 'F9' | 'F10' | 'F11' | 'F12' | 'F13' | 'F14' | 'F15' | 'F16' | 'F17' | 'F18' | 'F19' | 'F20' | 'Soft1' | 'Soft2' | 'Soft3' | 'Soft4';
export type Numbers = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
export type NumericKeypadKeys = 'Decimal' | 'Key11' | 'Key12' | 'Multiply' | 'Add' | 'Clear' | 'Divide' | 'Subtract' | 'Separator' | Numbers;
export type LatinKeys = 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z';
export type NonAlphaNumericKeys = '/' | '.' | ',' | ']' | '[' | ';' | '<' | '>' | '?' | '!' | '@' | '#' | '$' | '%' | '^' | '&' | '*' | '(' | ')' | '-' | '=' | '_' | '+' | '{' | '}' | '|' | ':' | '"' | '~' | '`';
export type AnyKey = LiteralUnion<ModifierKeys | WhitespaceKeys | NavigationKeys | FunctionKeys | NumericKeypadKeys, string>;
export type EditingKeys = 'Backspace' | 'Delete';
export type TriggerKey = LatinKeys | Numbers | WhitespaceKeys | NavigationKeys | EditingKeys | NonAlphaNumericKeys | NumericKeypadKeys | FunctionKeys;
export declare const isTriggerKey: (key: string) => key is TriggerKey;
export type BasicKeyCombination = TriggerKey | `${ModifierKeys}+${TriggerKey}` | `${ModifierKeys}+${ModifierKeys}+${TriggerKey}`;
export type ValidKeyCombination<T extends string> = T extends `${infer Modifier1}+${infer Modifier2}+${infer Trigger}` ? Modifier1 extends Modifier2 ? '[Error: modifier keys should be unique]' : Modifier1 extends ModifierKeys ? Modifier2 extends ModifierKeys ? Trigger extends TriggerKey ? T : '[Error: invalid trigger key]' : '[Error: invalid second modifier key]' : '[Error: invalid first modifier key]' : T extends `${infer Modifier}+${infer Trigger}` ? Modifier extends ModifierKeys ? Trigger extends TriggerKey ? T : '[Error: invalid trigger key]' : '[Error: invalid modifier key]' : T extends TriggerKey ? T : '[Error: invalid trigger key]';
export {};
//# sourceMappingURL=key-types.d.ts.map