import { EventEmitter } from 'events';
import IPostMessage from '../IPostMessage';
import IDebug, { IDebugSetWeinreMessage, WeinreData } from './IDebug';
/**
 * The `sos.debug` API groups together methods for checking the state of remote debug mode.
 *
 * :::note
 * - This debug is not the "native debug" of the device, but rather a remote debug mode that allows you to connect to the device using Weinre.
 * - State of the remote debug mode or native debug mode can be changed via Cloud Control or [Rest API](https://developers-staging.signageos.io/api/#tag/DeviceDebug/paths/~1v1~1device~1%7BdeviceUid%7D~1debug/put).
 * :::
 */
export default class Debug extends EventEmitter implements IDebug {
    readonly window: Window & WeinreData;
    private messagePrefix;
    private postMessage;
    static MESSAGE_PREFIX: string;
    static DEBUG_CHANGED: string;
    /** @internal */
    constructor(window: Window & WeinreData, messagePrefix: string, postMessage: IPostMessage<any>);
    /**
     * The `isRemoteDebugEnabled()` method returns the state of the Device debug mode.
     *
     * @returns {Promise<boolean>} Resolves to `true` if the remote debug mode is enabled, otherwise `false`.
     * @since 5.8.0
     */
    isRemoteDebugEnabled(): Promise<boolean>;
    /**
     * The `onRemoteDebugChanged()` method sets up a listener, which is called whenever the state of the Device debug mode is changed.
     *
     * @param listener The listener to be called when the state of the remote debug mode is changed.
     * @returns {void} Resolves when the listener is successfully set up.
     * @since 5.8.0
     */
    onRemoteDebugChanged(listener: (data: {
        enabled: boolean;
    }) => void): void;
    /** @internal */
    handleMessageData(data: IDebugSetWeinreMessage): void;
    private getMessage;
}
