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`
 * :::
 *
 * <details>
 *     <summary>Firmware Management Capabilities</summary>
 * 		| 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).
 * </details>
 */
export default class Firmware implements IFirmware {
    private messagePrefix;
    private postMessage;
    /** @internal */
    constructor(messagePrefix: string, postMessage: IPostMessage<any>);
    /**
     * 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<void>} 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<void>;
    /**
     * 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<void>} 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<void>;
    /**
     * 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<void>} 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<void>;
    /**
     * The `getVersion()` method returns the version of the firmware currently installed on the device.
     *
     * @returns {Promise<string>} 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<string>;
    /**
     * 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.
     *
     * <details>
     *     <summary>Linux and Android prefixes</summary>
     * 		| 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 |
     * </details>
     *
     * @returns {Promise<string>} 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<string>;
    private getMessage;
}
