export interface TaskMessage { id: number; op: TOp; data: TData; } export interface ResultMessage { id: number; result?: TResult; error?: string; } export interface PendingTask { resolve: (value: TResult) => void; reject: (error: Error) => void; } export interface QueuedTask extends PendingTask { op: TOp; data: TData; transferables?: ArrayBuffer[]; } export interface ThreaderOptions { poolSize?: number; } export interface UniversalWorker { postMessage(msg: TaskMessage, transferables?: readonly Transferable[]): void; onMessage(callback: (msg: ResultMessage) => void): void; terminate(): void | Promise; } export type WorkerScript = string;