/*---------------------------------------------------------------------------------------------
 *  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 } from '@sussudio/base/common/lifecycle.mjs';
import { URI, UriDto } from '@sussudio/base/common/uri.mjs';
import { IEnvironmentService } from '../../environment/common/environment.mjs';
import { IMainProcessService } from '../../ipc/electron-sandbox/services.mjs';
import {
	DidChangeProfilesEvent,
	IUserDataProfile,
	IUserDataProfileOptions,
	IUserDataProfilesService,
	IUserDataProfileUpdateOptions,
} from '../common/userDataProfile.mjs';
import { IAnyWorkspaceIdentifier } from '../../workspace/common/workspace.mjs';
export declare class UserDataProfilesNativeService extends Disposable implements IUserDataProfilesService {
	readonly _serviceBrand: undefined;
	private readonly channel;
	readonly profilesHome: URI;
	get defaultProfile(): IUserDataProfile;
	private _profiles;
	get profiles(): IUserDataProfile[];
	private readonly _onDidChangeProfiles;
	readonly onDidChangeProfiles: Event<DidChangeProfilesEvent>;
	readonly onDidResetWorkspaces: Event<void>;
	private enabled;
	constructor(
		profiles: readonly UriDto<IUserDataProfile>[],
		mainProcessService: IMainProcessService,
		environmentService: IEnvironmentService,
	);
	setEnablement(enabled: boolean): void;
	isEnabled(): boolean;
	createNamedProfile(
		name: string,
		options?: IUserDataProfileOptions,
		workspaceIdentifier?: IAnyWorkspaceIdentifier,
	): Promise<IUserDataProfile>;
	createProfile(
		id: string,
		name: string,
		options?: IUserDataProfileOptions,
		workspaceIdentifier?: IAnyWorkspaceIdentifier,
	): Promise<IUserDataProfile>;
	createTransientProfile(workspaceIdentifier?: IAnyWorkspaceIdentifier): Promise<IUserDataProfile>;
	setProfileForWorkspace(workspaceIdentifier: IAnyWorkspaceIdentifier, profile: IUserDataProfile): Promise<void>;
	removeProfile(profile: IUserDataProfile): Promise<void>;
	updateProfile(profile: IUserDataProfile, updateOptions: IUserDataProfileUpdateOptions): Promise<IUserDataProfile>;
	resetWorkspaces(): Promise<void>;
	cleanUp(): Promise<void>;
	cleanUpTransientProfiles(): Promise<void>;
}
