/*---------------------------------------------------------------------------------------------
 *  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 { IEnvironmentMainService } from "../../environment/electron-main/environmentMainService.mjs";
import { ILifecycleMainService } from "../../lifecycle/electron-main/lifecycleMainService.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { ITelemetryService } from "../../telemetry/common/telemetry.mjs";
import { AvailableForDownload, IUpdateService, State, UpdateType } from "../common/update.mjs";
declare abstract class AbstractUpdateService implements IUpdateService {
    private readonly lifecycleMainService;
    protected logService: ILogService;
    readonly _serviceBrand: undefined;
    private _state;
    private readonly _onStateChange;
    readonly onStateChange: Event<State>;
    get state(): State;
    protected setState(state: State): void;
    constructor(lifecycleMainService: ILifecycleMainService, environmentMainService: IEnvironmentMainService, logService: ILogService);
    private scheduleCheckForUpdates;
    checkForUpdates(explicit: boolean): Promise<void>;
    downloadUpdate(): Promise<void>;
    protected doDownloadUpdate(state: AvailableForDownload): Promise<void>;
    applyUpdate(): Promise<void>;
    protected doApplyUpdate(): Promise<void>;
    quitAndInstall(): Promise<void>;
    protected getUpdateType(): UpdateType;
    protected doQuitAndInstall(): void;
    abstract isLatestVersion(): Promise<boolean | undefined>;
    _applySpecificUpdate(packagePath: string): Promise<void>;
    protected abstract doCheckForUpdates(context: any): void;
}
export declare class SnapUpdateService extends AbstractUpdateService {
    private snap;
    private snapRevision;
    private readonly telemetryService;
    constructor(snap: string, snapRevision: string, lifecycleMainService: ILifecycleMainService, environmentMainService: IEnvironmentMainService, logService: ILogService, telemetryService: ITelemetryService);
    protected doCheckForUpdates(): void;
    protected doQuitAndInstall(): void;
    private isUpdateAvailable;
    isLatestVersion(): Promise<boolean | undefined>;
}
export {};
