/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { ContextKeyExpression, IContext, IContextKeyService } from "../../contextkey/common/contextkey.mjs";
import { ResolvedKeybindingItem } from "./resolvedKeybindingItem.mjs";
export interface IResolveResult {
    /** Whether the resolved keybinding is entering a multi chord */
    enterMultiChord: boolean;
    /** Whether the resolved keybinding is leaving (and executing) a multi chord keybinding */
    leaveMultiChord: boolean;
    commandId: string | null;
    commandArgs: any;
    bubble: boolean;
}
export declare class KeybindingResolver {
    private readonly _log;
    private readonly _defaultKeybindings;
    private readonly _keybindings;
    private readonly _defaultBoundCommands;
    private readonly _map;
    private readonly _lookupMap;
    constructor(defaultKeybindings: ResolvedKeybindingItem[], overrides: ResolvedKeybindingItem[], log: (str: string) => void);
    private static _isTargetedForRemoval;
    /**
     * Looks for rules containing "-commandId" and removes them.
     */
    static handleRemovals(rules: ResolvedKeybindingItem[]): ResolvedKeybindingItem[];
    private _addKeyPress;
    private _addToLookupMap;
    private _removeFromLookupMap;
    /**
     * Returns true if it is provable `a` implies `b`.
     */
    static whenIsEntirelyIncluded(a: ContextKeyExpression | null | undefined, b: ContextKeyExpression | null | undefined): boolean;
    getDefaultBoundCommands(): Map<string, boolean>;
    getDefaultKeybindings(): readonly ResolvedKeybindingItem[];
    getKeybindings(): readonly ResolvedKeybindingItem[];
    lookupKeybindings(commandId: string): ResolvedKeybindingItem[];
    lookupPrimaryKeybinding(commandId: string, context: IContextKeyService): ResolvedKeybindingItem | null;
    resolve(context: IContext, currentChord: string | null, keypress: string): IResolveResult | null;
    private _findCommand;
    private static _contextMatchesRules;
}
