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

import { Event } from '@sussudio/base/common/event.mjs';
import { Disposable, IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import {
	ConfigurationTarget,
	IConfigurationChangeEvent,
	IConfigurationData,
	IConfigurationOverrides,
	IConfigurationService,
	IConfigurationValue,
} from './configuration.mjs';
import { IFileService } from '../../files/common/files.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IPolicyService } from '../../policy/common/policy.mjs';
export declare class ConfigurationService extends Disposable implements IConfigurationService, IDisposable {
	private readonly settingsResource;
	readonly _serviceBrand: undefined;
	private configuration;
	private readonly defaultConfiguration;
	private readonly policyConfiguration;
	private readonly userConfiguration;
	private readonly reloadConfigurationScheduler;
	private readonly _onDidChangeConfiguration;
	readonly onDidChangeConfiguration: Event<IConfigurationChangeEvent>;
	constructor(settingsResource: URI, fileService: IFileService, policyService: IPolicyService, logService: ILogService);
	initialize(): Promise<void>;
	getConfigurationData(): IConfigurationData;
	getValue<T>(): T;
	getValue<T>(section: string): T;
	getValue<T>(overrides: IConfigurationOverrides): T;
	getValue<T>(section: string, overrides: IConfigurationOverrides): T;
	updateValue(key: string, value: any): Promise<void>;
	updateValue(key: string, value: any, overrides: IConfigurationOverrides): Promise<void>;
	updateValue(key: string, value: any, target: ConfigurationTarget): Promise<void>;
	updateValue(key: string, value: any, overrides: IConfigurationOverrides, target: ConfigurationTarget): Promise<void>;
	inspect<T>(key: string): IConfigurationValue<T>;
	keys(): {
		default: string[];
		user: string[];
		workspace: string[];
		workspaceFolder: string[];
	};
	reloadConfiguration(): Promise<void>;
	private onDidChangeUserConfiguration;
	private onDidDefaultConfigurationChange;
	private onDidPolicyConfigurationChange;
	private trigger;
	private getTargetConfiguration;
}
