export declare type CallbackType = (msg: Request, caller: Caller) => Promise | void; export declare type PostMessageType = (msg: Request) => Promise; export declare type AddListenerType = (callback: CallbackType) => void; export interface Caller { url?: string; id?: string; } export declare type MessageHandlerType = (msg: any, caller: Caller) => any; export interface Request { payload: any; source: string; destination: string; type: 'dAPI.js'; } export interface Response { destination: string; error?: any; payload?: TYPE; source: string; type: 'dAPI.js'; } export interface TunnelOptions { source: string; destination: string; postMessage?: PostMessageType; addListener?: AddListenerType; messageHandler?: MessageHandlerType; logMessages?: boolean; } export declare class Tunnel { private source; private destination; private postMessage?; private messageHandler?; private logMessages?; constructor(options: TunnelOptions); send(msg: T): Promise; private onMessage; }