/*---------------------------------------------------------------------------------------------
 *  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 { URI } from "../../../base/common/uri.mjs";
import { IChannel, IServerChannel } from "../../../base/parts/ipc/common/ipc.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { IUserDataProfile, IUserDataProfilesService } from "../../userDataProfile/common/userDataProfile.mjs";
import { IUserDataManualSyncTask, IUserDataSyncResourceConflicts, IUserDataSyncResourceError, IUserDataSyncResource, ISyncResourceHandle, IUserDataSyncTask, IUserDataSyncService, SyncResource, SyncStatus, ISyncUserDataProfile } from "./userDataSync.mjs";
export declare class UserDataSyncChannel implements IServerChannel {
    private readonly service;
    private readonly userDataProfilesService;
    private readonly logService;
    private readonly manualSyncTasks;
    private readonly onManualSynchronizeResources;
    constructor(service: IUserDataSyncService, userDataProfilesService: IUserDataProfilesService, logService: ILogService);
    listen(_: unknown, event: string): Event<any>;
    call(context: any, command: string, args?: any): Promise<any>;
    private _call;
    private getManualSyncTask;
    private createManualSyncTask;
    private createKey;
}
export declare class UserDataSyncChannelClient extends Disposable implements IUserDataSyncService {
    private readonly userDataProfilesService;
    readonly _serviceBrand: undefined;
    private readonly channel;
    private _status;
    get status(): SyncStatus;
    private _onDidChangeStatus;
    readonly onDidChangeStatus: Event<SyncStatus>;
    get onDidChangeLocal(): Event<SyncResource>;
    private _conflicts;
    get conflicts(): IUserDataSyncResourceConflicts[];
    private _onDidChangeConflicts;
    readonly onDidChangeConflicts: Event<IUserDataSyncResourceConflicts[]>;
    private _lastSyncTime;
    get lastSyncTime(): number | undefined;
    private _onDidChangeLastSyncTime;
    readonly onDidChangeLastSyncTime: Event<number>;
    private _onSyncErrors;
    readonly onSyncErrors: Event<IUserDataSyncResourceError[]>;
    get onDidResetLocal(): Event<void>;
    get onDidResetRemote(): Event<void>;
    constructor(userDataSyncChannel: IChannel, userDataProfilesService: IUserDataProfilesService);
    createSyncTask(): Promise<IUserDataSyncTask>;
    createManualSyncTask(): Promise<IUserDataManualSyncTask>;
    reset(): Promise<void>;
    resetRemote(): Promise<void>;
    resetLocal(): Promise<void>;
    hasPreviouslySynced(): Promise<boolean>;
    hasLocalData(): Promise<boolean>;
    accept(syncResource: IUserDataSyncResource, resource: URI, content: string | null, apply: boolean | {
        force: boolean;
    }): Promise<void>;
    resolveContent(resource: URI): Promise<string | null>;
    getRemoteProfiles(): Promise<ISyncUserDataProfile[]>;
    getLocalSyncResourceHandles(syncResource: SyncResource, profile?: IUserDataProfile): Promise<ISyncResourceHandle[]>;
    getRemoteSyncResourceHandles(syncResource: SyncResource, profile?: ISyncUserDataProfile): Promise<ISyncResourceHandle[]>;
    getAssociatedResources(syncResourceHandle: ISyncResourceHandle): Promise<{
        resource: URI;
        comparableResource: URI;
    }[]>;
    getMachineId(syncResourceHandle: ISyncResourceHandle): Promise<string | undefined>;
    cleanUpRemoteData(): Promise<void>;
    replace(syncResourceHandle: ISyncResourceHandle): Promise<void>;
    private updateStatus;
    private updateConflicts;
    private updateLastSyncTime;
}
