import type { DeviceId, DeviceInfo, FirmwareUpdateContext } from "@ledgerhq/types-live"; import { Observable } from "rxjs"; import { SharedTaskEvent } from "./core"; export type UpdateFirmwareTaskArgs = { deviceId: DeviceId; deviceName: string | null; updateContext: FirmwareUpdateContext; }; export type UpdateFirmwareTaskError = "DeviceOnDashboardExpected" | "DeviceOnBootloaderExpected" | "McuVersionNotFound" | "TooManyMcuOrBootloaderFlashes"; export type UpdateFirmwareTaskEvent = { type: "installingOsu"; progress: number; } | { type: "flashingMcu"; progress: number; } | { type: "flashingBootloader"; progress: number; } | { type: "firmwareUpdateCompleted"; updatedDeviceInfo: DeviceInfo; } | { type: "installOsuDevicePermissionRequested"; } | { type: "installOsuDevicePermissionGranted"; } | { type: "installOsuDevicePermissionDenied"; } | { type: "allowSecureChannelRequested"; } | { type: "allowSecureChannelDenied"; } | { type: "taskError"; error: UpdateFirmwareTaskError; } | SharedTaskEvent; /** * The final MCU version that is retrieved from the API has the information on which bootloader it * can be installed on. Therefore if the device is in bootloader mode, but its bootloader version * (deviceInfo.majMin) is NOT the version for on which the MCU should be installed * (majMin !== mcuVersion.from_bootloader_version), this means that we should first install a new * bootloader version before installing the MCU. We return this information (isMcuUpdate as false) * and the majMin formatted version of which bootloader should be installedb (bootloaderVersion). * Otherwise, if the current majMin version is indeed the bootloader version on which this MCU can * be installed, it means that we can directly install the MCU (isMcuUpdate as true) * @param deviceMajMin the current majMin version present in the device * @param mcuFromBootloaderVersion the bootloader on which the MCU is able to be installed * @returns the formatted bootloader version to be installed and if it's actually needed */ export declare function getFlashMcuOrBootloaderDetails(deviceMajMin: string, mcuFromBootloaderVersion: string): { bootloaderVersion: string; isMcuUpdate: boolean; }; export declare const updateFirmwareTask: (args: UpdateFirmwareTaskArgs) => Observable; //# sourceMappingURL=updateFirmware.d.ts.map