declare const transferable: unique symbol; /** Marks a transferable object as being able to be transferred between threads */ export interface ITransferable { /** @internal */ [transferable]: true; value: MarkedTransferable; } type MarkedTransferable = Transferable & { __transferable: true; }; /** * @param value * @returns * @internal */ export declare const isMarkedTransferable: (value: unknown) => value is ITransferable; export declare const isTransferable: (value: unknown) => value is Transferable; /** * Marks a value as being transferable * * This is used to mark a value as being able to be transferred between threads * Transferable objects are any of the following: * - ArrayBuffer * - MessagePort * - ImageBitmap * - OffscreenCanvas * - TransformStream * - ReadableStream * - WritableStream * - RTCDataChannel * - VideoFrame * * @param {unknown} value * @returns * @throws {Error} Value is not transferable * * @example * const transferable = createTransferable(new ArrayBuffer(10)); * * // transferable is now marked as transferable * thread.send(transferable); * */ export declare const createTransferable: (value: unknown) => ITransferable; export {};