import { Thread, type ThreadOptions, type ThreadMessageTarget } from '../Thread.ts'; /** * Creates a thread from a `MessagePort` instance in the browser. * * @see https://developer.mozilla.org/en-US/docs/Web/API/MessagePort * * @example * import {ThreadMessagePort} from '@quilted/threads'; * * const channel = new MessageChannel(); * * const threadOne = new ThreadMessagePort(channel.port1); * const threadTwo = new ThreadMessagePort(channel.port2, { * exports: { * async sendMessage(message) { * console.log(message); * }, * }, * }); * * channel.port1.start(); * channel.port2.start(); * * await threadOne.imports.sendMessage('Hello world!'); */ export declare class ThreadMessagePort, Exports = Record> extends Thread { readonly port: MessagePort; /** * Starts a thread wrapped around a `MessagePort` object, and returns the imports * of the thread. * * @example * ```ts * import {ThreadMessagePort} from '@quilted/threads'; * * const channel = new MessageChannel(); * * ThreadMessagePort.export(channel.port1, { * async getMessage() { * return 'Hello, world!'; * }, * }); * * const {getMessage} = ThreadMessagePort.import(channel.port2); * * channel.port1.start(); * channel.port2.start(); * * const message = await getMessage(); // 'Hello, world!' * ``` */ static import>(port: MessagePort, options?: Omit>, 'exports'>): import("../Thread.ts").ThreadImports; /** * Starts a thread wrapped around a `MessagePort` object, providing the second * argument as the exports of the thread. * * @example * ```ts * import {ThreadMessagePort} from '@quilted/threads'; * * const channel = new MessageChannel(); * * ThreadMessagePort.export(channel.port1, { * async getMessage() { * return 'Hello, world!'; * }, * }); * * const {getMessage} = ThreadMessagePort.import(channel.port2); * * channel.port1.start(); * channel.port2.start(); * * const message = await getMessage(); // 'Hello, world!' * ``` */ static export>(port: MessagePort, exports: Exports, options?: Omit, Exports>, 'exports' | 'imports'>): void; constructor(port: MessagePort, options?: ThreadOptions); } export declare function portToMessageTarget(port: Pick): ThreadMessageTarget; //# sourceMappingURL=ThreadMessagePort.d.ts.map