export interface TriggerModifiers {
    ctrl?: boolean;
    shift?: boolean;
    alt?: boolean;
    meta?: boolean;
}
export interface MouseTrigger extends TriggerModifiers {
    button: number;
}
/** @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/location */
export declare const enum KeyLocation {
    Standard = 0,
    Left = 1,
    Right = 2,
    Numpad = 3
}
export interface KeyboardTrigger extends TriggerModifiers {
    key: string;
    location?: KeyLocation;
}
export type Trigger = KeyboardTrigger | MouseTrigger;
export interface WithAction<TData extends unknown[]> {
    action(...args: TData): unknown;
}
export interface KeyboardHandler<TData extends unknown[]> extends KeyboardTrigger, WithAction<TData> {
}
export interface MouseHandler<TData extends unknown[]> extends MouseTrigger, WithAction<TData> {
}
export type Handler<TData extends unknown[]> = KeyboardHandler<TData> | MouseHandler<TData>;
export declare function isMatch(trigger: Trigger, event: KeyboardEvent | MouseEvent): boolean;
export declare function find<T extends Trigger>(triggers: T[], event: KeyboardEvent | MouseEvent): T | undefined;
