/*---------------------------------------------------------------------------------------------
 *  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 { IEnvironmentService } from '../../environment/common/environment.mjs';
import { IFileService } from '../../files/common/files.mjs';
import { IProductService } from '../../product/common/productService.mjs';
import { IStorageService } from '../../storage/common/storage.mjs';
import { IUserDataManifest, IUserDataSyncLogService, IUserDataSyncStoreService } from './userDataSync.mjs';
interface IMachineData {
	id: string;
	name: string;
	disabled?: boolean;
	platform?: string;
}
export type IUserDataSyncMachine = Readonly<IMachineData> & {
	readonly isCurrent: boolean;
};
export declare const IUserDataSyncMachinesService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IUserDataSyncMachinesService>;
export interface IUserDataSyncMachinesService {
	_serviceBrand: any;
	readonly onDidChange: Event<void>;
	getMachines(manifest?: IUserDataManifest): Promise<IUserDataSyncMachine[]>;
	addCurrentMachine(manifest?: IUserDataManifest): Promise<void>;
	removeCurrentMachine(manifest?: IUserDataManifest): Promise<void>;
	renameMachine(machineId: string, name: string): Promise<void>;
	setEnablements(enbalements: [string, boolean][]): Promise<void>;
}
export declare function isWebPlatform(platform: string): boolean;
export declare class UserDataSyncMachinesService extends Disposable implements IUserDataSyncMachinesService {
	private readonly storageService;
	private readonly userDataSyncStoreService;
	private readonly logService;
	private readonly productService;
	private static readonly VERSION;
	private static readonly RESOURCE;
	_serviceBrand: any;
	private readonly _onDidChange;
	readonly onDidChange: Event<void>;
	private readonly currentMachineIdPromise;
	private userData;
	constructor(
		environmentService: IEnvironmentService,
		fileService: IFileService,
		storageService: IStorageService,
		userDataSyncStoreService: IUserDataSyncStoreService,
		logService: IUserDataSyncLogService,
		productService: IProductService,
	);
	getMachines(manifest?: IUserDataManifest): Promise<IUserDataSyncMachine[]>;
	addCurrentMachine(manifest?: IUserDataManifest): Promise<void>;
	removeCurrentMachine(manifest?: IUserDataManifest): Promise<void>;
	renameMachine(machineId: string, name: string, manifest?: IUserDataManifest): Promise<void>;
	setEnablements(enablements: [string, boolean][]): Promise<void>;
	private computeCurrentMachineName;
	private readMachinesData;
	private writeMachinesData;
	private readUserData;
	private parse;
}
export {};
