import { ChildProcess, SpawnOptions } from 'node:child_process'; import { Readable } from 'node:stream'; declare class NonZeroExitError extends Error { readonly result: Result; readonly output?: Output; get exitCode(): number | undefined; constructor(result: Result, output?: Output); } interface Output { stderr: string; stdout: string; exitCode: number | undefined; } interface PipeOptions extends Options { } type KillSignal = Parameters[0]; interface OutputApi extends AsyncIterable { pipe(command: string, args?: string[], options?: Partial): Result; process: ChildProcess | undefined; kill(signal?: KillSignal): boolean; get pid(): number | undefined; get aborted(): boolean; get killed(): boolean; get exitCode(): number | undefined; } type Result = PromiseLike & OutputApi; interface Options { signal: AbortSignal; nodeOptions: SpawnOptions; timeout: number; persist: boolean; stdin: ExecProcess; throwOnError: boolean; } interface TinyExec { (command: string, args?: string[], options?: Partial): Result; } declare class ExecProcess implements Result { protected _process?: ChildProcess; protected _aborted: boolean; protected _options: Partial; protected _command: string; protected _args: string[]; protected _resolveClose?: () => void; protected _processClosed: Promise; protected _thrownError?: Error; get process(): ChildProcess | undefined; get pid(): number | undefined; get exitCode(): number | undefined; constructor(command: string, args?: string[], options?: Partial); kill(signal?: KillSignal): boolean; get aborted(): boolean; get killed(): boolean; pipe(command: string, args?: string[], options?: Partial): Result; [Symbol.asyncIterator](): AsyncIterator; protected _waitForOutput(): Promise; then(onfulfilled?: ((value: Output) => TResult1 | PromiseLike) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike) | null): Promise; protected _streamOut?: Readable; protected _streamErr?: Readable; spawn(): void; protected _resetState(): void; protected _onError: (err: Error) => void; protected _onClose: () => void; } declare const x: TinyExec; declare const exec: TinyExec; export { ExecProcess, type KillSignal, NonZeroExitError, type Options, type Output, type OutputApi, type PipeOptions, type Result, type TinyExec, exec, x };