import { Status } from "../../../DataFrame";
import { IDevice } from "../../Devices/IDevice";
import { ResponseResult } from "../../FieldChangeResult";
import { ICustomUpdateActions } from "../CustomUpdateActions/ICustomUpdateActions";
import { UpdateInfo } from "../IUpdatesProvider";
import { BulkUpdateResult, UpdateAction, UpdateErrorCode, UpdateProgress } from "../IUpdatesService";
import { IUpdateProviderService } from "./IUpdateProviderService";
export interface IDeviceUpdateProviderService extends IUpdateProviderService {
    GetAvailableUpdateAsync(device: IDevice): Promise<UpdateInfo | ResponseResult<UpdateErrorCode>>;
    InstallUpdateAsync<T extends ICustomUpdateActions>(update: UpdateInfo, updateProgress: UpdateProgress, updateAction?: UpdateAction<T>, force?: boolean): Promise<Status.OK | ResponseResult<UpdateErrorCode>>;
    GetSoftwareVersionAsync(device: IDevice): Promise<string | ResponseResult<UpdateErrorCode>>;
    CheckUpdateBulkAsync(reloadCache?: boolean): Promise<UpdateInfo[] | ResponseResult<UpdateErrorCode>>;
    InstalUpdateBulkAsync<T extends ICustomUpdateActions>(deviceGuids: string[], updateProgress: UpdateProgress, updateAction?: UpdateAction<T>): Promise<BulkUpdateResult | ResponseResult<UpdateErrorCode>>;
}
