import IPostMessage from '../../IPostMessage';
import { CodesMDC } from './CodesMDC';
import INativeMdcCommands from './INativeMdcCommands';
/**
* Type representing the IP address to which MDC commands can be sent.
* It can be either 'localhost' or a valid string representing an IP address.
*/
export type IpAddressType = 'localhost' | string;
/**
* Response object returned by Tizen Core App.
*/
export interface IMDCResponse {
/**
* The type of the response, either 'ACK' for acknowledgment or 'NACK' for negative acknowledgment.
*/
type: 'ACK' | 'NACK';
/**
* The command type that was executed, represented as a number.
* Should match the command number in {@link CodesMDC}.
*/
commandType: number;
/**
* The result of the command execution, represented as a number.
* This value can vary depending on the command executed.
*/
result: number;
}
/**
* The `sos.native.mdc` API groups together methods for controlling Tizen devices using MDC commands.
*
* :::warning
* This API is currently available on Tizen devices only.
* :::
*
*
* MDC Management Capabilities
* | Capability | Description |
* |:------------|:-------------|
* | `NATIVE_COMMANDS_MDC` | If device supports performing MDC commands |
*
* 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 Mdc implements INativeMdcCommands {
private messagePrefix;
private postMessage;
static MESSAGE_PREFIX: string;
/** @internal */
constructor(messagePrefix: string, postMessage: IPostMessage);
/**
* The `sendOne()` method sends an MDC command to another Tizen device on the same network or to the localhost.
*
* @param ipAddress The IP address of the device to send the command to.
* @param command The MDC command to send {@link CodesMDC}.
* @param data The optional data to send with the command.
* @throws {Error} If the `ipAddress` is not a valid string or if the `command` is not a valid number.
* @throws {Error} If the `data` is not an array of numbers.
* @throws {Error} If any error occurs during the command execution.
* @returns {Promise} MDC response object containing the result of the command execution.
* @since 6.5.1
*
* @example
* await sos.native.mdc.sendOne('localhost', CodesMDC.BRIGHTNESS_CONTROL);
* await sos.native.mdc.sendOne('192.168.0.10', CodesMDC.VOLUME_CONTROL, [50]);
* await sos.native.mdc.sendOne('192.168.0.10', CodesMDC.PICTURE_CONTROL, [0x54, 0x03]);
*
* // You can also send custom number if we don't have predefined command in our enum
* await sos.native.mdc.sendOne('192.168.0.10', 0x01, []);
*/
sendOne(ipAddress: IpAddressType, command: CodesMDC, data?: number[]): Promise;
/**
* The `sendOneRaw()` method sends an MDC command to another Tizen device on the same network or to the localhost,
* but without explicitly specifying the command.
*
* @param ipAddress The IP address of the device to send the command to.
* @param data The data as array of numbers to send with the command. It can be also empty array.
* @throws {Error} If the `ipAddress` is not a valid string or if the `command` is not a valid number.
* @throws {Error} If the `data` is not an array of numbers.
* @throws {Error} If any error occurs during the command execution.
* @returns {Promise} MDC response object containing the result of the command execution.
*
* @since 6.5.1
*
* @example
* await sos.native.mdc.sendOneRaw('localhost', [0x1B, 0x00, 0x01, 0x74]); // Promise
*
* // Example of returned object
* {
* "type": "ACK", // or NACK
* "commandType": 4,
* "result": 0, // Value what command returned
* }
*/
sendOneRaw(ipAddress: IpAddressType, data: number[] | []): Promise;
private getMessage;
private getMessagePrefix;
}