import { ChildProcess, SpawnOptions } from "child_process"; import { StreamDispatcher } from "@facetlayer/streams"; export type { SpawnOptions as SubprocessOptions } from "child_process"; interface SetupOptions { enableOutputBuffering?: boolean; } export declare class Subprocess { proc: ChildProcess; command: string[]; setupOptions: SetupOptions; options: SpawnOptions; stdoutListeners?: StreamDispatcher; stderrListeners?: StreamDispatcher; private stdout; private stderr; startedPromise?: Promise; startedPromiseResolve?: () => void; startedPromiseReject?: (error: Error) => void; exitPromise?: Promise; exitPromiseResolve?: (exitCode: number) => void; hasStarted: boolean; hasFailed: Error | null; hasExited: boolean; exitCode: number | null; constructor(setupOptions?: SetupOptions); spawn(command: string, args?: string[], options?: SpawnOptions): void; onStdout(listener: (line: string) => void): void; onStderr(listener: (line: string) => void): void; kill(): void; waitForStart(): Promise; waitForExit(): Promise; getStdout(): string[]; getStderr(): string[]; }