/*---------------------------------------------------------------------------------------------
 *  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 "../../../base/common/event.mjs";
import { Disposable } from "../../../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 {};
