import { EventEmitter } from "events";
export interface MyWorker {
buzy: boolean;
instance: Worker;
}
export interface WorkerMessage {
channel: string;
payload?: any;
}
export declare type WorkerMessages = [WorkerMessage, Transferable[]?];
export interface WorkersProvider extends EventEmitter {
workers: MyWorker[];
cpus: number;
messages: WorkerMessages[];
onmessage(e: MessageEvent): void;
send(message: WorkerMessage, transfer?: Transferable[]): void;
run(): void;
destroy(): void;
removeMessage(message: WorkerMessage): void;
removeMessagesByChannel(channel: string): void;
}
export default class WorkerProvider extends EventEmitter implements WorkersProvider {
static isTransferablesSupported(): boolean;
static asyncFnMover(fn: (data: WorkerMessage) => Promise<WorkerMessage>): string;
workers: MyWorker[];
cpus: number;
messages: WorkerMessages[];
constructor(workerPath: string);
onmessage(e: MessageEvent): void;
run(): void;
send(message: WorkerMessage, transfer?: Transferable[]): void;
destroy(): void;
removeMessage(message: WorkerMessage): void;
removeMessagesByChannel(channel: string): void;
}