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

import { IBackupMainService } from './backup.mjs';
import { IEmptyWindowBackupInfo } from '../node/backup.mjs';
import { IConfigurationService } from '../../configuration/common/configuration.mjs';
import { IEnvironmentMainService } from '../../environment/electron-main/environmentMainService.mjs';
import { IStateMainService } from '../../state/electron-main/state.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IFolderBackupInfo, IWorkspaceBackupInfo } from '../common/backup.mjs';
export declare class BackupMainService implements IBackupMainService {
	private readonly environmentMainService;
	private readonly configurationService;
	private readonly logService;
	private readonly stateMainService;
	readonly _serviceBrand: undefined;
	private static readonly backupWorkspacesMetadataStorageKey;
	protected backupHome: string;
	private workspaces;
	private folders;
	private emptyWindows;
	private readonly backupUriComparer;
	private readonly backupPathComparer;
	constructor(
		environmentMainService: IEnvironmentMainService,
		configurationService: IConfigurationService,
		logService: ILogService,
		stateMainService: IStateMainService,
	);
	initialize(): Promise<void>;
	protected getWorkspaceBackups(): IWorkspaceBackupInfo[];
	protected getFolderBackups(): IFolderBackupInfo[];
	isHotExitEnabled(): boolean;
	private isHotExitOnExitAndWindowClose;
	private getHotExitConfig;
	getEmptyWindowBackups(): IEmptyWindowBackupInfo[];
	registerWorkspaceBackup(workspaceInfo: IWorkspaceBackupInfo): string;
	registerWorkspaceBackup(workspaceInfo: IWorkspaceBackupInfo, migrateFrom: string): Promise<string>;
	private moveBackupFolder;
	registerFolderBackup(folderInfo: IFolderBackupInfo): string;
	registerEmptyWindowBackup(emptyWindowInfo: IEmptyWindowBackupInfo): string;
	private validateWorkspaces;
	private validateFolders;
	private validateEmptyWorkspaces;
	private deleteStaleBackup;
	private prepareNewEmptyWindowBackup;
	private convertToEmptyWindowBackup;
	getDirtyWorkspaces(): Promise<Array<IWorkspaceBackupInfo | IFolderBackupInfo>>;
	private hasBackups;
	private doHasBackups;
	private storeWorkspacesMetadata;
	protected getFolderHash(folder: IFolderBackupInfo): string;
}
