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

import { IStorage } from '@sussudio/base/parts/storage/common/storage.mjs';
import { IEnvironmentService } from '../../environment/common/environment.mjs';
import { IMainProcessService } from '../../ipc/electron-sandbox/services.mjs';
import { AbstractStorageService, StorageScope } from '../common/storage.mjs';
import { IUserDataProfile } from '../../userDataProfile/common/userDataProfile.mjs';
import { IAnyWorkspaceIdentifier } from '../../workspace/common/workspace.mjs';
export declare class NativeStorageService extends AbstractStorageService {
	private readonly initialWorkspace;
	private readonly initialProfiles;
	private readonly mainProcessService;
	private readonly environmentService;
	private readonly applicationStorageProfile;
	private readonly applicationStorage;
	private profileStorageProfile;
	private readonly profileStorageDisposables;
	private profileStorage;
	private workspaceStorageId;
	private readonly workspaceStorageDisposables;
	private workspaceStorage;
	constructor(
		initialWorkspace: IAnyWorkspaceIdentifier | undefined,
		initialProfiles: {
			defaultProfile: IUserDataProfile;
			currentProfile: IUserDataProfile;
		},
		mainProcessService: IMainProcessService,
		environmentService: IEnvironmentService,
	);
	private createApplicationStorage;
	private createProfileStorage;
	private createWorkspaceStorage;
	protected doInitialize(): Promise<void>;
	protected getStorage(scope: StorageScope): IStorage | undefined;
	protected getLogDetails(scope: StorageScope): string | undefined;
	close(): Promise<void>;
	protected switchToProfile(toProfile: IUserDataProfile, preserveData: boolean): Promise<void>;
	protected switchToWorkspace(toWorkspace: IAnyWorkspaceIdentifier, preserveData: boolean): Promise<void>;
	hasScope(scope: IAnyWorkspaceIdentifier | IUserDataProfile): boolean;
}
