/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { CancellationToken } from '@sussudio/base/common/cancellation.mjs';
import { IQuickInputOptions, QuickInputController } from '@sussudio/base/parts/quickinput/browser/quickInput.mjs';
import { IAccessibilityService } from '../../accessibility/common/accessibility.mjs';
import { IContextKeyService } from '../../contextkey/common/contextkey.mjs';
import { IInstantiationService } from '../../instantiation/common/instantiation.mjs';
import { ILayoutService } from '../../layout/browser/layoutService.mjs';
import { IQuickAccessController } from '../common/quickAccess.mjs';
import {
	IInputBox,
	IInputOptions,
	IKeyMods,
	IPickOptions,
	IQuickInputButton,
	IQuickInputService,
	IQuickNavigateConfiguration,
	IQuickPick,
	IQuickPickItem,
	QuickPickInput,
} from '../common/quickInput.mjs';
import { IThemeService, Themable } from '../../theme/common/themeService.mjs';
export interface IQuickInputControllerHost extends ILayoutService {}
export declare class QuickInputService extends Themable implements IQuickInputService {
	private readonly instantiationService;
	protected readonly contextKeyService: IContextKeyService;
	private readonly accessibilityService;
	protected readonly layoutService: ILayoutService;
	readonly _serviceBrand: undefined;
	get backButton(): IQuickInputButton;
	private readonly _onShow;
	readonly onShow: import('@sussudio/base/common/event.mjs').Event<void>;
	private readonly _onHide;
	readonly onHide: import('@sussudio/base/common/event.mjs').Event<void>;
	private _controller;
	private get controller();
	private get hasController();
	private _quickAccess;
	get quickAccess(): IQuickAccessController;
	private readonly contexts;
	constructor(
		instantiationService: IInstantiationService,
		contextKeyService: IContextKeyService,
		themeService: IThemeService,
		accessibilityService: IAccessibilityService,
		layoutService: ILayoutService,
	);
	protected createController(
		host?: IQuickInputControllerHost,
		options?: Partial<IQuickInputOptions>,
	): QuickInputController;
	private setContextKey;
	private resetContextKeys;
	pick<T extends IQuickPickItem, O extends IPickOptions<T>>(
		picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
		options?: O,
		token?: CancellationToken,
	): Promise<
		| (O extends {
				canPickMany: true;
		  }
				? T[]
				: T)
		| undefined
	>;
	input(options?: IInputOptions, token?: CancellationToken): Promise<string | undefined>;
	createQuickPick<T extends IQuickPickItem>(): IQuickPick<T>;
	createInputBox(): IInputBox;
	focus(): void;
	toggle(): void;
	navigate(next: boolean, quickNavigate?: IQuickNavigateConfiguration): void;
	accept(keyMods?: IKeyMods): Promise<void>;
	back(): Promise<void>;
	cancel(): Promise<void>;
	updateStyles(): void;
	private computeStyles;
}
