/// /// import { EventEmitter } from 'events'; import createDebug from 'debug'; export { withTransfer } from './Transferable'; import { WorkerOptions } from 'worker_threads'; import { ThreadId } from './types/general'; import { WorkerThread } from './WorkerThread'; export declare const threadId: any; export declare let debug: createDebug.Debugger; export interface ThreadRequest { resolve(thread: WorkerThread): void; reject(error: Error): void; } export declare type ThreadPoolOptions = { size?: number; typecheck?: boolean; workerOptions?: WorkerOptions; startupTimeout?: number; maxQueueSize?: number; autoRefill?: boolean; }; export interface BaseWorker { pool: PoolInterface; } export interface PoolInterface extends EventEmitter { terminate(): void; refill(): void; drain(shouldTerminate?: boolean): Promise; size: number; isTerminated: boolean; threads: ReadonlyMap; } declare type FilterType = Pick; declare type TypeWithMethods = Record any | Promise>; export declare type AsyncMethod = (...param: any) => Promise; declare type WrapReturnType = { [Key in keyof Base]: Base[Key] extends AsyncMethod ? Base[Key] : (...a: Parameters) => Promise>; }; declare type FilterAndWrap = WrapReturnType, Function>>; export declare type WrapWorkerType = FilterAndWrap & BaseWorker & { all: FilterAndWrap; }; export declare function createThreadPool(workerPath: string, { size, workerOptions, startupTimeout, typecheck, maxQueueSize, autoRefill }?: ThreadPoolOptions): Promise, Function>>; } & WrapReturnType, Function>>>;