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

import { AddFirstParameterToFunctions } from '@sussudio/base/common/types.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { IBackupMainService } from '../../backup/electron-main/backup.mjs';
import { IWindowsMainService } from '../../windows/electron-main/windows.mjs';
import {
	IEnterWorkspaceResult,
	IRecent,
	IRecentlyOpened,
	IWorkspaceFolderCreationData,
	IWorkspacesService,
} from '../common/workspaces.mjs';
import { IWorkspaceIdentifier } from '../../workspace/common/workspace.mjs';
import { IWorkspacesHistoryMainService } from './workspacesHistoryMainService.mjs';
import { IWorkspacesManagementMainService } from './workspacesManagementMainService.mjs';
import { IWorkspaceBackupInfo, IFolderBackupInfo } from '../../backup/common/backup.mjs';
export declare class WorkspacesMainService
	implements AddFirstParameterToFunctions<IWorkspacesService, Promise<unknown>, number>
{
	private readonly workspacesManagementMainService;
	private readonly windowsMainService;
	private readonly workspacesHistoryMainService;
	private readonly backupMainService;
	readonly _serviceBrand: undefined;
	constructor(
		workspacesManagementMainService: IWorkspacesManagementMainService,
		windowsMainService: IWindowsMainService,
		workspacesHistoryMainService: IWorkspacesHistoryMainService,
		backupMainService: IBackupMainService,
	);
	enterWorkspace(windowId: number, path: URI): Promise<IEnterWorkspaceResult | undefined>;
	createUntitledWorkspace(
		windowId: number,
		folders?: IWorkspaceFolderCreationData[],
		remoteAuthority?: string,
	): Promise<IWorkspaceIdentifier>;
	deleteUntitledWorkspace(windowId: number, workspace: IWorkspaceIdentifier): Promise<void>;
	getWorkspaceIdentifier(windowId: number, workspacePath: URI): Promise<IWorkspaceIdentifier>;
	readonly onDidChangeRecentlyOpened: import('../../../base/common/event').Event<void>;
	getRecentlyOpened(windowId: number): Promise<IRecentlyOpened>;
	addRecentlyOpened(windowId: number, recents: IRecent[]): Promise<void>;
	removeRecentlyOpened(windowId: number, paths: URI[]): Promise<void>;
	clearRecentlyOpened(windowId: number): Promise<void>;
	getDirtyWorkspaces(): Promise<Array<IWorkspaceBackupInfo | IFolderBackupInfo>>;
}
