import IPostMessage from '../../IPostMessage';
import IRemoteControl from './IRemoteControl';
/**
 * The `sos.management.remoteControl` groups together methods for enabling or disabling control of the device using an IR remote controller (TV controller).
 *
 * <details>
 *     <summary>Remote Control Management Capabilities</summary>
 * 		| Capability | Description |
 * 		|:------------|:-------------|
 * 		| `SET_REMOTE_CONTROL_ENABLED` | If device supports setting remote control |
 *
 * 		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 RemoteControl implements IRemoteControl {
    private messagePrefix;
    private postMessage;
    /** @internal */
    constructor(messagePrefix: string, postMessage: IPostMessage<any>);
    /**
     * The `enable()` method enables remote control.
     *
     * :::warning
     * **Android:** To prevent Android from displaying the Android homepage and thus not showing your content, you
     * must Enable Kiosk Mode (or Lock Remote Control) either through Box device settings or through API.
     *
     * Always set the Remote Control Lock to `enable` after the deployment.
     * :::
     * @returns {Promise<void>} A promise that resolves when the remote control is successfully enabled.
     * @throws {Error} If the device does not support remote control management.
     * @since 3.0.0
     *
     * @example
     * await sos.management.remoteControl.enable();
     */
    enable(): Promise<void>;
    /**
     * The `disable()` method disables remote control.
     *
     * @retuns {Promise<void>} A promise that resolves when the remote control is successfully disabled.
     * @throws {Error} If the device does not support remote control management.
     * @since 3.0.0
     *
     * @example
     * await sos.management.remoteControl.disable();
     */
    disable(): Promise<void>;
    /**
     * The `isEnabled()` method returns whether the remote control is enabled.
     *
     * @returns {Promise<boolean>} A promise that resolves to `true` if remote control is enabled, otherwise `false`.
     * @throws {Error} If the device does not support remote control management.
     * @since 4.0.0
     *
     * @example
     * const enabled = await sos.management.remoteControl.isEnabled();
     */
    isEnabled(): Promise<boolean>;
    /**
     * The `lock()` method is an alias for the `disable()` method.
     *
     * @returns {Promise<void>} A promise that resolves when the remote control is successfully locked (disabled).
     * @throws {Error} If the device does not support remote control management.
     * @since 4.0.0
     *
     * @example
     * await sos.management.remoteControl.lock();
     */
    lock(): Promise<void>;
    /**
     * The `unlock()` method is an alias for the `enable()` method.
     *
     * @returns {Promise<void>} A promise that resolves when the remote control is successfully unlocked (enabled).
     * @throws {Error} If the device does not support remote control management.
     * @since 4.0.0
     *
     * @example
     * await sos.management.remoteControl.unlock();
     */
    unlock(): Promise<void>;
    /**
     * The `isLocked()` method returns whether the remote control is locked (disabled).
     *
     * @returns {Promise<boolean>} A promise that resolves to `true` if the remote control is locked (disabled), otherwise `false`.
     * @throws {Error} If the device does not support remote control management.
     * @since 4.0.0
     *
     * @example
     * const locked = await sos.management.remoteControl.isLocked();
     */
    isLocked(): Promise<boolean>;
    private setEnabled;
    private getMessage;
}
