declare type RpcMessageDispatch = (message: TMessage) => Promise; declare type RpcMessageListener = RpcMessageDispatch; declare type RpcErrorListener = (error: Error) => void; interface RpcMessagePort { readonly dispatchMessage: RpcMessageDispatch; readonly addMessageListener: (listener: RpcMessageListener) => void; readonly removeMessageListener: (listener: RpcMessageListener) => void; readonly addErrorListener: (listener: RpcErrorListener) => void; readonly removeErrorListener: (listener: RpcErrorListener) => void; readonly isOpen: () => boolean; readonly open: () => Promise; readonly close: () => Promise; } export { RpcMessagePort, RpcMessageDispatch, RpcMessageListener, RpcErrorListener };