import { MessagePortInterface, Transferrable, MessageEvent, OnMessageListener } from './MessageTarget';
/**
 * Defines a class that implements the Channel Messaging API for the worker.
 */
export declare class MessageChannel {
    port1: MessagePort;
    port2: MessagePort;
    constructor(channel?: number | string);
}
/**
 * Defines a class that allows messages sent from one port to be recieved at the other port.
 */
export declare class MessagePort implements MessagePortInterface {
    /**
     * Whether this message port has been transferred.
     */
    private _transferred;
    /**
     * The function that should be called to send a message to the remote.
     */
    private _sendMessage;
    /**
     * The ID of this message port's channel.
     */
    private _channelId;
    /**
     * The "message" listeners.
     */
    private _listeners;
    /**
     * The other message port.
     */
    private _other;
    get channelID(): string | number;
    get transferred(): boolean;
    constructor(channelID: number | string);
    addEventListener(type: 'message', listener: OnMessageListener): void;
    removeEventListener(type: 'message', listener: OnMessageListener): void;
    postMessage(data: any, transferrable?: Transferrable[]): void;
    start(): void;
    close(): void;
    /**
     * Represents an event handler for the "message" event, that is a function to be called when a message is recieved from the worker.
     */
    onmessage: (e: MessageEvent) => void;
    transfer(sendMessage: (data: any, transfer: Transferrable[]) => void): (data: any) => void;
    private _recieveMessage;
    /**
     * Links the two message ports.
     * @param port1 The first port.
     * @param port2 The second port.
     */
    static link(port1: MessagePort, port2: MessagePort): void;
}
