import BrowserConnection from './Browser.js';
import { MESSAGE_DIRECTION } from '../schema.js';
export type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;
/**
 * Browser window Post Message connector module
 * @category aepp wallet communication
 */
export default class BrowserWindowMessageConnection extends BrowserConnection {
    #private;
    origin?: string;
    sendDirection?: MESSAGE_DIRECTION;
    receiveDirection: MESSAGE_DIRECTION;
    listener?: (this: Window, ev: MessageEvent<any>) => void;
    /**
     * @param options - Options
     * @param options.target Target window for message
     * @param options.self Host window for message
     * @param options.origin Origin of receiver
     * @param options.sendDirection Wrapping messages into additional struct
     * `({ type: 'to_aepp' || 'to_waellet', data })`
     * Used for handling messages between content script and page
     * @param options.receiveDirection Unwrapping messages from additional struct
     */
    constructor({ target, self, origin, sendDirection, receiveDirection, ...options }?: {
        target?: ImplPostMessage;
        self?: ImplPostMessage;
        origin?: string;
        sendDirection?: MESSAGE_DIRECTION;
        receiveDirection?: MESSAGE_DIRECTION;
        debug?: boolean;
    });
    isConnected(): boolean;
    connect(onMessage: (message: any, origin: string, source: MessageEventSource | null) => void, onDisconnect: () => void): void;
    disconnect(): void;
    sendMessage(msg: any): void;
}
