import {MessengerMeta} from "./parts/meta.js" import {Conduit} from "./conduits/conduit.js" import {Tap, Fns} from "../../core/types.js" export type MessengerRpc = (meta: MessengerMeta) => Promise export function asMessengerRpc(mrpc: MessengerRpc) { return mrpc } export type MessengerOptions = { conduit: Conduit tap?: Tap timeout?: number rpc?: MessengerRpc } export type ChannelMessage = {data: D, origin: string} export type Channel = { addEventListener(e: "message", listener: (event: ChannelMessage) => void): void removeEventListener(e: "message", listener: (event: ChannelMessage) => void): void } export type PostableChannel = { postMessage(m: any, transfer?: Transferable[]): void } & Channel