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

import { Event as CommonEvent } from '@sussudio/base/common/event.mjs';
import { Disposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
import { ILifecycleMainService } from '../../lifecycle/electron-main/lifecycleMainService.mjs';
import { ILogService } from '../../log/common/log.mjs';
import { IApplicationStorageMainService } from '../../storage/electron-main/storageMainService.mjs';
import { IRecent, IRecentlyOpened } from '../common/workspaces.mjs';
import { IWorkspacesManagementMainService } from './workspacesManagementMainService.mjs';
export declare const IWorkspacesHistoryMainService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IWorkspacesHistoryMainService>;
export interface IWorkspacesHistoryMainService {
	readonly _serviceBrand: undefined;
	readonly onDidChangeRecentlyOpened: CommonEvent<void>;
	addRecentlyOpened(recents: IRecent[]): Promise<void>;
	getRecentlyOpened(): Promise<IRecentlyOpened>;
	removeRecentlyOpened(paths: URI[]): Promise<void>;
	clearRecentlyOpened(): Promise<void>;
}
export declare class WorkspacesHistoryMainService extends Disposable implements IWorkspacesHistoryMainService {
	private readonly logService;
	private readonly workspacesManagementMainService;
	private readonly lifecycleMainService;
	private readonly applicationStorageMainService;
	private static readonly MAX_TOTAL_RECENT_ENTRIES;
	private static readonly RECENTLY_OPENED_STORAGE_KEY;
	readonly _serviceBrand: undefined;
	private readonly _onDidChangeRecentlyOpened;
	readonly onDidChangeRecentlyOpened: CommonEvent<void>;
	constructor(
		logService: ILogService,
		workspacesManagementMainService: IWorkspacesManagementMainService,
		lifecycleMainService: ILifecycleMainService,
		applicationStorageMainService: IApplicationStorageMainService,
	);
	private registerListeners;
	addRecentlyOpened(recentToAdd: IRecent[]): Promise<void>;
	removeRecentlyOpened(recentToRemove: URI[]): Promise<void>;
	clearRecentlyOpened(): Promise<void>;
	getRecentlyOpened(): Promise<IRecentlyOpened>;
	private mergeEntriesFromStorage;
	private getRecentlyOpenedFromStorage;
	private saveRecentlyOpened;
	private location;
	private containsWorkspace;
	private containsFolder;
	private containsFile;
	private static readonly MAX_MACOS_DOCK_RECENT_WORKSPACES;
	private static readonly MAX_MACOS_DOCK_RECENT_ENTRIES_TOTAL;
	private static readonly MAX_WINDOWS_JUMP_LIST_ENTRIES;
	private static readonly COMMON_FILES_FILTER;
	private readonly macOSRecentDocumentsUpdater;
	private handleWindowsJumpList;
	private updateWindowsJumpList;
	private getWindowsJumpListLabel;
	private renderJumpListPathDescription;
	private updateMacOSRecentDocuments;
}
