/// import { EventEmitter } from 'events'; import { WorkerProcess } from '../process'; /** * Maintains a pool of WorkerProcess instances for running WASI * modules. * Workers are reused after termination. * Terminated pids are reported to parent processes for interoperation * with wait calls. */ declare class WorkerPool extends EventEmitter implements ProcessLoader { running: Set; free: WorkerPoolItem[]; loader: ProcessLoader; constructor(); spawn(wasm: string, argv: string[], env?: {}): WorkerPoolItem; populate(item: WorkerPoolItem, spawnArgs: { wasm: string; argv: string[]; env?: {}; }): void; exec(item: WorkerPoolItem, spawnArgs: SpawnArgs): void; handleSpawns(parent: WorkerProcess): void; parseArgv(argv: Uint8Array[]): string[]; parseEnviron(envp: Uint8Array[]): {}; } declare type WorkerPoolItem = { process: WorkerProcess; promise: Promise<{}>; }; interface ProcessLoader { spawn(wasm: string, argv: string[], env?: {}): WorkerPoolItem; populate(item: WorkerPoolItem, spawnArgs: SpawnArgs): void; exec(item: WorkerPoolItem, spawnArgs: SpawnArgs): void; } declare type SpawnArgs = { wasm: string; argv: string[]; env?: {}; }; export { WorkerPool, WorkerPoolItem, ProcessLoader, SpawnArgs };