import { type IEventDispatcher, type EventType, type EventListener, type EventProcessor } from '@actualwave/event-dispatcher';
export interface MessagePortLike {
    postMessage(data: unknown, targetOrigin: string, transferList?: Transferable[]): void;
    addEventListener(type: string, handler: (event: any) => void): void;
}
type PostMessageHandler = (this: MessagePortDispatcher, data: unknown, targetOrigin: string, transferList?: Transferable[]) => void;
export declare class MessagePortDispatcher {
    dispatcherId: string;
    targetOrigin: string;
    target: MessagePortLike;
    customPostMessageHandler: PostMessageHandler | null;
    senderEventPreprocessor: EventProcessor | null;
    sender: IEventDispatcher;
    receiver: IEventDispatcher;
    constructor(target?: MessagePortLike | null, customPostMessageHandler?: PostMessageHandler | null, receiverEventPreprocessor?: EventProcessor | null, senderEventPreprocessor?: EventProcessor | null);
    addEventListener(eventType: string, listener: EventListener, priority?: number): void;
    hasEventListener(eventType: string): boolean;
    removeEventListener(eventType: string, listener: EventListener): void;
    removeAllEventListeners(eventType: string): void;
    dispatchEvent(eventType: EventType, data?: unknown, transferList?: Transferable[]): void;
    private _postMessageHandler;
    private _postMessageListener;
}
export declare const createMessagePortDispatcher: (target?: MessagePortLike | null, customPostMessageHandler?: PostMessageHandler | null, receiverEventPreprocessor?: EventProcessor | null, senderEventPreprocessor?: EventProcessor | null) => MessagePortDispatcher;
export declare const getForSelf: () => MessagePortDispatcher;
export declare const getForParent: () => MessagePortDispatcher;
export declare const getForTop: () => MessagePortDispatcher;
export {};
