import { IUpdatesProvider, ProviderType } from "./IUpdatesProvider";
import { IUpdateProviderService } from "./UpdateProviderServices/IUpdateProviderService";
export declare class UpdatesProvider implements IUpdatesProvider {
    static readonly ServiceName: string;
    private _services;
    private _runtimeInfo;
    private _hardwareInfo;
    private _semaphore;
    private _isRuntimeInfoInitialized;
    private _isHardwareInfoInitialized;
    GetServiceName(): string;
    RegisterUpdatesProvider(service: IUpdateProviderService): void;
    GetUpdatesProviderAsync<T extends IUpdateProviderService>(serviceName: string): Promise<T>;
    GetUpdatesProvidersAsync<T extends IUpdateProviderService>(updateProviderType: ProviderType): Promise<T[]>;
    GetUpdatesProvidersByProtocolAsync<T extends IUpdateProviderService>(protocolGuid: string, updateProviderType: ProviderType, apiVersion?: string | undefined): Promise<T[]>;
    GetUpdatesProvidersByExtensionAsync<T extends IUpdateProviderService>(extensionGuid: string, updateProviderType: ProviderType, apiVersion?: string | undefined): Promise<T[]>;
    GetSoftwareRuntimeInfoAsync(reloadCachedData?: boolean): Promise<SoftwareRuntimeInfo>;
    protected GetRuntimeControllerInfoAsync(): Promise<void>;
    GetHardwareInfoAsync(reloadCachedData?: boolean): Promise<HardwareInfo>;
    protected GetHardwareControllerInfoAsync(): Promise<void>;
}
export declare class SoftwareRuntimeInfo {
    BaseLinuxVersion: string;
    BaseMonoVersion: string;
    RuntimeVersion: string;
    UpdateChannel: string;
    SoftwareVersion: string;
}
export declare class HardwareInfo {
    GetControllerHardwareVersion: number;
    DevicePIN: string;
    GetControllerSerialNumber: string;
    HostnamePrefix: string;
    DefaultStaticIpAddress: string;
    GetAvailableHardware: Hardware[];
    ControllerSecret: string;
}
export declare class Hardware {
    HardwareGUID: string;
    DevicePath: string;
    DisplayName: string;
    HardwareSerialNumber: string;
    HardwareVersion: number;
    SoftwareVersion: number;
    Configuration: string;
    ControllerSecret: string;
}
export declare class CannotGetRuntimeInfo extends Error {
    message: string;
    code: CannotGetRuntimeErrorCode;
    constructor(message: string, code: CannotGetRuntimeErrorCode);
}
export declare enum CannotGetRuntimeErrorCode {
    Unknown = 0,
    EmptyResponse = 1,
    NoDataInResponse = 2,
    WrongResponseStatus = 3,
    Timeout = 4
}
