import { Message, MessageDataTypes, MessageType } from './messages'; import { PostMessageDataTypes, PostMessageType } from './post_messages'; import { RpcMessageDataTypes, RpcMessageType } from './rpc_messages'; export interface WindowLike extends EventTarget { parent: WindowLike; opener: WindowLike | null; close(): void; postMessage(data: any, targetOrigin: string, transfer?: MessagePort[]): void; } export declare function sendMessage(target: WindowLike, message: Message, targetOrigin?: string): void; export declare function isPermittedOrigin(origin: string, permittedOrigins: string[]): boolean; export declare type PostMessageListener = (data: PostMessageDataTypes[T], type: T, event: MessageEvent) => void; export declare type RpcMessageListener = (data: RpcMessageDataTypes[T], type: T, event: MessageEvent) => void; export declare type MessageListener = (data: MessageDataTypes[T], type: T, event: MessageEvent) => void; export declare type FilteringEventListener = (ev: MessageEvent) => boolean; export declare function createMessageListener(type: T, listener: MessageListener): FilteringEventListener; export interface TypedMessageEvent extends MessageEvent { data: MessageDataTypes[T]; } export declare type MessageEventListener = (ev: TypedMessageEvent) => void;