///
import { ChildProcess } from "child_process";
import { Writable } from "stream";
import * as EE from 'events';
import * as net from "net";
export interface PoolioOpts {
filePath: string;
inheritStdio: boolean;
addWorkerOnExit: boolean;
size: number;
env: Object;
execArgv: Array;
streamStdioAfterDelegation: boolean;
args: Array;
oneTimeOnly: boolean;
stdin: IStreamFunction | Writable;
stderr: IStreamFunction | Writable;
stdout: IStreamFunction | Writable;
silent: boolean;
getSharedWritableStream: IStreamFunction | Writable;
resolveWhenWorkerExits: boolean;
doNotListenForMessagesFromWorkers: boolean;
oneJobPerWorker: boolean;
}
export interface PoolioResolutions {
[key: string]: PoolioResolution;
}
export interface IStreamFunction {
(): Writable;
}
export interface IResolutionCallback {
(err: Error | string, data?: Object): void;
}
export interface PoolioChildProcess extends ChildProcess {
workId: number;
workerId: number;
tempId: string;
}
export interface PoolioMsgQueue {
workId: number;
msg: string | Object;
__poolioWorkerId?: number;
}
export interface PoolioResolution {
cb?: Function;
resolve?: Function;
reject?: Function;
}
export interface PoolioResponseMsg {
workId: number;
error?: string;
result: Object;
}
export interface PoolioAnyOpts {
file: string;
fd: number;
tty: string;
socket: net.Socket;
}
export declare class Pool extends EE {
kill: boolean;
all: Array;
available: Array;
msgQueue: Array;
resolutions: PoolioResolutions;
removeNextAvailableWorker: boolean;
workerIdCounter: number;
jobIdCounter: number;
resolveWhenWorkerExits: boolean;
doNotListenForMessagesFromWorkers: boolean;
oneJobPerWorker: boolean;
okToDelegate: boolean;
__poolId: string;
execArgv: Array;
args: Array;
filePath: string;
size: number;
inheritStdio: boolean;
oneTimeOnly: boolean;
addWorkerOnExit: boolean;
stdin: IStreamFunction | Writable;
stderr: IStreamFunction | Writable;
stdout: IStreamFunction | Writable;
numberOfSpawnedWorkers: number;
numberOfDeadWorkers: number;
streamStdioAfterDelegation: boolean;
silent: boolean;
getSharedWritableStream: IStreamFunction | Writable;
env: Object;
detached: boolean;
constructor(options: Partial);
addWorker(): Pool;
removeWorker(): Pool;
getCurrentSize(): Object;
getCurrentStats(): object;
noop(): void;
any(msg: object | string, opts?: Partial | IResolutionCallback, cb?: IResolutionCallback): void;
anyp(msg: Object | string, opts?: Partial): Promise;
destroy(): Pool;
killAllActiveWorkers(): Pool;
killAll(): Pool;
killAllImmediately(): Pool;
}
export declare const r2gSmokeTest: () => boolean;