/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { Emitter, Event } from "../../../base/common/event.mjs";
import { ResolvedKeybinding, Keybinding } from "../../../base/common/keybindings.mjs";
import { Disposable } from "../../../base/common/lifecycle.mjs";
import { ICommandService } from "../../commands/common/commands.mjs";
import { IContextKeyService, IContextKeyServiceTarget } from "../../contextkey/common/contextkey.mjs";
import { IKeybindingService, IKeyboardEvent, KeybindingsSchemaContribution } from "./keybinding.mjs";
import { IResolveResult, KeybindingResolver } from "./keybindingResolver.mjs";
import { ResolvedKeybindingItem } from "./resolvedKeybindingItem.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { INotificationService } from "../../notification/common/notification.mjs";
import { ITelemetryService } from "../../telemetry/common/telemetry.mjs";
export declare abstract class AbstractKeybindingService extends Disposable implements IKeybindingService {
    private _contextKeyService;
    protected _commandService: ICommandService;
    protected _telemetryService: ITelemetryService;
    private _notificationService;
    protected _logService: ILogService;
    _serviceBrand: undefined;
    protected readonly _onDidUpdateKeybindings: Emitter<void>;
    get onDidUpdateKeybindings(): Event<void>;
    private _currentChord;
    private _currentChordChecker;
    private _currentChordStatusMessage;
    private _ignoreSingleModifiers;
    private _currentSingleModifier;
    private _currentSingleModifierClearTimeout;
    protected _logging: boolean;
    get inChordMode(): boolean;
    constructor(_contextKeyService: IContextKeyService, _commandService: ICommandService, _telemetryService: ITelemetryService, _notificationService: INotificationService, _logService: ILogService);
    dispose(): void;
    protected abstract _getResolver(): KeybindingResolver;
    protected abstract _documentHasFocus(): boolean;
    abstract resolveKeybinding(keybinding: Keybinding): ResolvedKeybinding[];
    abstract resolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding;
    abstract resolveUserBinding(userBinding: string): ResolvedKeybinding[];
    abstract registerSchemaContribution(contribution: KeybindingsSchemaContribution): void;
    abstract _dumpDebugInfo(): string;
    abstract _dumpDebugInfoJSON(): string;
    getDefaultKeybindingsContent(): string;
    toggleLogging(): boolean;
    protected _log(str: string): void;
    getDefaultKeybindings(): readonly ResolvedKeybindingItem[];
    getKeybindings(): readonly ResolvedKeybindingItem[];
    customKeybindingsCount(): number;
    lookupKeybindings(commandId: string): ResolvedKeybinding[];
    lookupKeybinding(commandId: string, context?: IContextKeyService): ResolvedKeybinding | undefined;
    dispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;
    softDispatch(e: IKeyboardEvent, target: IContextKeyServiceTarget): IResolveResult | null;
    private _enterMultiChordMode;
    private _leaveChordMode;
    dispatchByUserSettingsLabel(userSettingsLabel: string, target: IContextKeyServiceTarget): void;
    protected _dispatch(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;
    protected _singleModifierDispatch(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean;
    private _doDispatch;
    mightProducePrintableCharacter(event: IKeyboardEvent): boolean;
}
