import { IDeviceUpdateProviderService } from 'lavva.exalushome/build/js/Services/Updates/UpdateProviderServices/IDeviceUpdateProviderService';
import { ExtensionInfo } from 'lavva.exalushome/build/js/Services/Controller/ControllerExtensionsService';
import { SoftwareRuntimeInfo } from 'lavva.exalushome/build/js/Services/Updates/UpdatesProvider';
import { Status } from 'lavva.exalushome/build/js/DataFrame';
import { ProviderType, UpdateInfo } from 'lavva.exalushome/build/js/Services/Updates/IUpdatesProvider';
import { ResponseResult } from 'lavva.exalushome/build/js/Services/FieldChangeResult';
import { IDevice } from 'lavva.exalushome/build/js/Services/Devices/IDevice';
import { BulkUpdateResult, UpdateAction, UpdateErrorCode, UpdateProgress } from 'lavva.exalushome/build/js/Services/Updates/IUpdatesService';
import { ICustomUpdateActions } from 'lavva.exalushome/build/js/Services/Updates/CustomUpdateActions/ICustomUpdateActions';
export declare class ExtaLifeDevicesUpdatesProvider implements IDeviceUpdateProviderService {
    static readonly ProviderName = "ExtaLifeDeviceUpdateProvider";
    private _apiVersion;
    private _extenstionVersion;
    private _protocolExtGuid;
    private _runtimeInfo;
    private _logger;
    private _connection;
    private _devices;
    private _updateProvider;
    constructor(extInfo: ExtensionInfo, runtimeInfo: SoftwareRuntimeInfo);
    get ProtocolGuid(): string;
    get ExtensionGuid(): string;
    get AvailableApiVersion(): string;
    get AvailableExtensionVersion(): string;
    get ProviderType(): ProviderType;
    GetUpdateProviderName(): string;
    GetAvailableUpdateAsync(device: IDevice): Promise<UpdateInfo | ResponseResult<UpdateErrorCode>>;
    CheckUpdateBulkAsync(reloadCache?: boolean): Promise<UpdateInfo[] | ResponseResult<UpdateErrorCode>>;
    GetSoftwareVersionAsync(device: IDevice): Promise<string | ResponseResult<UpdateErrorCode>>;
    protected GetFirmwareVersionAsync(device: IDevice): Promise<FirmwareVersion | ResponseResult<UpdateErrorCode>>;
    InstallUpdateAsync<T extends ICustomUpdateActions>(update: UpdateInfo, updateProgress: UpdateProgress, updateAction?: UpdateAction<T> | undefined, force?: boolean): Promise<Status.OK | ResponseResult<UpdateErrorCode>>;
    InstalUpdateBulkAsync<T extends ICustomUpdateActions>(deviceGuids: string[], updateProgress: UpdateProgress, updateAction?: UpdateAction<T>): Promise<BulkUpdateResult | ResponseResult<UpdateErrorCode>>;
}
declare class FirmwareVersion {
    Revision: number;
    Build: number;
    Minor: number;
    Major: number;
}
export declare class FirmwareUpdate {
    UpdateGuid: string;
    Branch: string;
    Version: FirmwareVersion;
    RequiredMinimumControllerSoftwareVersion: FirmwareVersion;
    DownloadUri: string;
    Name: {
        [key: string]: string;
    };
    Description: {
        [key: string]: string;
    };
    PublicationDateTime: string;
}
export {};
