import { Status } from "../../DataFrame";
import { IDevice } from "../Devices/IDevice";
import { ResponseResult } from "../FieldChangeResult";
import { ICustomUpdateActions } from "./CustomUpdateActions/ICustomUpdateActions";
import { ControllerUpdatesInfo, ControllerUpdateType, ControllerVersion, DeviceUpdateShortInfo, IDeviceUpdateInfo, UpdateHistory } from "./IUpdateInfo";
import { Update } from "./IUpdatesProvider";
import { BulkUpdateResult, DownloadProgress, IUpdatesService, UpdateAction, UpdateBranch, UpdateErrorCode, UpdateProgress } from './IUpdatesService';
export declare class UpdatesService implements IUpdatesService {
    static readonly ServiceName: string;
    private _updateProviders;
    private _controllerUpdates;
    private _logger;
    private _connection;
    private _appStateService;
    private _extensionService;
    private _updateRequestTimeout;
    private _oldUpdateVersion;
    private _oldUpdateBuild;
    private _updateOfflineStageTime;
    constructor();
    GetAutomaticControllerUpdateDownloadStatusAsync(): Promise<boolean | ResponseResult<UpdateErrorCode>>;
    GetServiceName(): string;
    CheckDeviceVersionAsync(deviceGuid: string): Promise<string | ResponseResult<UpdateErrorCode>>;
    CheckDeviceVersionAsync(device: IDevice): Promise<string | ResponseResult<UpdateErrorCode>>;
    CheckDeviceUpdateAsync(deviceGuid: string): Promise<IDeviceUpdateInfo | ResponseResult<UpdateErrorCode>>;
    CheckDeviceUpdateAsync(device: IDevice): Promise<IDeviceUpdateInfo | ResponseResult<UpdateErrorCode>>;
    CheckDeviceUpdatesBulkAsync(reloadCache?: boolean): Promise<IDeviceUpdateInfo[] | ResponseResult<UpdateErrorCode>>;
    InstallDeviceUpdateAsync<T extends ICustomUpdateActions>(device: IDevice, updateProgress: UpdateProgress, updateAction?: UpdateAction<T> | undefined, force?: boolean): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    InstallDeviceUpdateAsync<T extends ICustomUpdateActions>(dev: string, updateProgress: UpdateProgress, updateAction?: UpdateAction<T> | undefined, force?: boolean): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    InstallDevicesUpdateBulkAsync<T extends ICustomUpdateActions>(deviceGuids: string[], updateProgress: UpdateProgress, updateAction?: UpdateAction<T>): Promise<BulkUpdateResult | ResponseResult<UpdateErrorCode>>;
    CheckControllerSoftwareUpdateAvailabilityAsync(): Promise<boolean>;
    CheckDevicesUpdatesAvailabilityAsync(): Promise<DeviceUpdateShortInfo[]>;
    CheckControllerUpdatesAsync(): Promise<ControllerUpdatesInfo>;
    CheckControllerVersionAsync(): Promise<ControllerVersion[] | ResponseResult<UpdateErrorCode>>;
    GetControllerUpdateBranchAsync(): Promise<ResponseResult<UpdateErrorCode> | UpdateBranch>;
    SetControllerUpdateBranchAsync(updateBranch: UpdateBranch): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    EnableAutomaticControllerUpdateDonwloadAsync(): Promise<Status.OK | ResponseResult<UpdateErrorCode>>;
    DisableAutomaticControllerUpdateDonwloadAsync(): Promise<Status.OK | ResponseResult<UpdateErrorCode>>;
    GetControllerUpdatesHistoryAsync(): Promise<UpdateHistory[] | ResponseResult<UpdateErrorCode>>;
    InstallControllerUpdateAsync<T extends ICustomUpdateActions>(updateProgress: UpdateProgress, downloadProgress: DownloadProgress, updateGuid: string, downloadOnly: boolean, updateAction?: UpdateAction<T> | undefined): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    InstallControllerUpdateAsync<T extends ICustomUpdateActions>(updateProgress: UpdateProgress, downloadProgress: DownloadProgress, updateAction?: UpdateAction<T> | undefined): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    protected UpdateControllerUsingScriptAsync(update: Update, updateProgress: UpdateProgress): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    protected UpdateControllerUsingApiAsync(updateProgress: UpdateProgress, downloadProgess: DownloadProgress, downloadOnly: boolean): Promise<ResponseResult<UpdateErrorCode> | Status.OK>;
    private getRuntimeInfoAsync;
}
/**
 * @type Class
 */
export declare class ControllerUpdateNotAvailableInfo {
    UpdatedResourceName: Map<string, string>;
    CurrentResourceVersion: string;
    UpdateType: ControllerUpdateType | null;
    ResponseResult: ResponseResult<UpdateErrorCode> | null;
}
