import { ChildProcess, SpawnOptions, SpawnSyncOptions } from "node:child_process"; import { Readable } from "node:stream"; //#region src/non-zero-exit-error.d.ts declare class NonZeroExitError extends Error { readonly result: CommonOutputApi; readonly output?: Output | undefined; get exitCode(): number | undefined; constructor(result: CommonOutputApi, output?: Output | undefined); } //#endregion //#region src/main.d.ts interface Output { stderr: string; stdout: string; exitCode: number | undefined; } interface PipeOptions extends Options {} type KillSignal = Parameters[0]; interface CommonOutputApi { get pid(): number | undefined; get killed(): boolean; get exitCode(): number | undefined; } interface OutputApi extends AsyncIterable, CommonOutputApi { process: ChildProcess | undefined; get aborted(): boolean; pipe(command: string, args?: readonly string[], options?: Partial): Result; kill(signal?: KillSignal): boolean; } interface OutputApiSync extends Iterable, CommonOutputApi {} type Result = PromiseLike & OutputApi; type SyncResult = Output & OutputApiSync; interface CommonOptions { timeout: number; throwOnError: boolean; } interface Options extends CommonOptions { signal: AbortSignal; nodeOptions: SpawnOptions; persist: boolean; stdin: Result | ExecProcess | string; } interface SyncOptions extends CommonOptions { nodeOptions: SpawnSyncOptions; } interface TinyExec { (command: string, args?: readonly string[], options?: Partial): Result; } declare class ExecProcess implements Result { protected _process?: ChildProcess; protected _aborted: boolean; protected _options: Partial; protected _command: string; protected _args: readonly 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?: readonly string[], options?: Partial); kill(signal?: KillSignal): boolean; get aborted(): boolean; get killed(): boolean; pipe(command: string, args?: readonly 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 function xSync(command: string, args?: readonly string[], options?: Partial): SyncResult; declare const x: TinyExec; declare const exec: TinyExec; declare const execSync: typeof xSync; //#endregion export { CommonOptions, CommonOutputApi, ExecProcess, KillSignal, NonZeroExitError, Options, Output, OutputApi, OutputApiSync, PipeOptions, Result, SyncOptions, SyncResult, TinyExec, exec, execSync, x, xSync };