import IPostMessage from '../../IPostMessage';
import IFirmware from './IFirmware';
/**
* The `sos.management.firmware` API groups together methods for working with the firmware of the device.
*
* :::warning
* Always check if your absolute firmware URL ends with a firmware file. Example: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw`
* :::
*
* :::info
* For BrightSign firmware upgrade, please ensure that you have a text file with the SHA1 hash of that firmware file.
* - Firmware file path: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw`
* - SHA1 txt file: `https://cnd.your-cms.com/brightsign/fw/brightsign-update.bsfw.sha1.txt`
* :::
*
*
* Firmware Management Capabilities
* | Capability | Description |
* |:------------|:-------------|
* | `FIRMWARE_UPGRADE` | If device can upgrade firmware version |
*
* If you want to check if the device supports this capability, use [`sos.management.supports()`](https://developers.signageos.io/sdk/sos_management/#supports).
*
*/
export default class Firmware implements IFirmware {
private messagePrefix;
private postMessage;
/** @internal */
constructor(messagePrefix: string, postMessage: IPostMessage);
/**
* The `upgrade(version, baseUrl?)` method initializes a firmware upgrade using version and baseUrl. Platform users can install general
* firmware version directly with passing just version number. Optionally, the baseUrl can be passed as argument to specify server where
* the firmware files are accessible.
*
* @param version The version of the firmware being installed.
* @param [baseUrl='https://2.signageos.io'] Optional server URL where firmware files are located.
* @returns {Promise} A promise that resolves when the firmware upgrade is initiated.
* @since 4.0.0
*
* @example
* await sos.management.firmware.upgrade('T-HKMLAKUC-2080.4');
*/
upgrade(version: string, baseUrl?: string): Promise;
/**
* The `upgrade(baseUrl, version)` does the same as `upgrade(version, baseUrl)`.
*
* @alias upgrade(version: string, baseUrl?: string)
* @param baseUrl The server URL where firmware files are located.
* @param version The version of the firmware being installed.
* @returns {Promise} A promise that resolves when the firmware upgrade is initiated.
* @since 4.0.0
*
* @example
* await sos.management.firmware.upgrade('https://cdn.your-cms.com/tizen/pmf/fw/2080_4.bem', 'T-HKMLAKUC-2080.4');
*/
upgrade(baseUrl: string, version: string): Promise;
/**
* The `upgrade(fwUri)` method initializes a firmware upgrade. Open users can upgrade fw passing FQN
* uri where the firmware main file is located.
*
* This file type/extension differs for every platform. E.g.:
* - SSSP: http://example.com/fw/T-0.0.0.msd
* - Tizen: http://example.com/fw/T-0.0.0.bem
* - Webos: http://example.com/fw/0.0.0.epk
* - Brightsign: http://example.com/fw/hd2-0.0.0.bsfw
* - Linux: http://example.com/fw/rpi-0.0.0.img.zip
* - Android: http://example.com/fw/FB-00.0.0.zip
*
* @param fwUri FQN uri where the firmware main file is located.
* @returns {Promise} A promise that resolves when the firmware upgrade is initiated.
* @since 4.0.0
*
* @example // {@link https://github.com/signageos/applet-examples/tree/master/examples/management-js-api/firmware | Example applet with firmware upgrade}
*
* @example
* await sos.management.firmware.upgrade('https://cdn.your-cms.com/tizen/pmf/fw/2080_4.bem');
*/
upgrade(fwUri: string): Promise;
/**
* The `getVersion()` method returns the version of the firmware currently installed on the device.
*
* @returns {Promise} A promise that resolves to the current firmware version.
* @since 4.0.0
*
* @example
* const version = await sos.management.firmware.getVersion();
* console.log(version); // Returns String e.g. T-HKMLAKUC-2020.5
*/
getVersion(): Promise;
/**
* The `getType()` method returns the type of the firmware currently installed on the device.
*
* This information, when combined with firmware version, can be used to identify a correct firmware image to install on the current device.
*
*
* Linux and Android prefixes
* | Type | Description |
* |:------------|:-------------|
* | `rpi` | Any Raspberry Pi 3 or Compute Module 3 |
* | `rpi4` | Any Raspberry Pi 4 or Compute Module 4 |
* | `benq-` | Any Benq display |
* | `philips-` | Any Philips display |
* | `sharp-` | Any Sharp display |
* | `elo-` | Any Elo display |
*
*
* @returns {Promise} A promise that resolves to the current firmware type.
* @since 4.8.0
*
* @example
* const type = await sos.management.firmware.getType();
* console.log(type); // e.g. rpi4
*/
getType(): Promise;
private getMessage;
}