export interface Message {
    message: string;
    data: any;
}
export interface Handler {
    (data: object): void;
}
export interface HandlerMap {
    [type: string]: Handler;
}
export interface Options {
    name: string;
    targetOrigin: string;
    debug?: boolean;
}
export default class Messenger {
    private target;
    private handlers;
    static Messages: Readonly<{
        SET_WINDOW_LOCATION: string;
    }>;
    targetOrigin: string;
    private name;
    private debug;
    private queue;
    private callbacks;
    private callbacksToID;
    private callbackIndex;
    constructor(target: Window | null | undefined, handlers: HandlerMap, options: Options);
    setTarget(target: Window | null | undefined): void;
    send(message: Message['message'], data?: Message['data']): Message['data'];
    private tryToDequeue;
    private log;
    private warn;
    private storeCallback;
    private normalizePayload;
    private handleMessage;
    private isFromTargetOrigin;
    private invokeCallback;
    private invokeHandler;
    private windowLocation;
}
