import type { ByteSource } from '../../io/types.ts'; import { IOResult } from '../../io/types.ts'; import type { DispatchFn } from '../../runtime/types.ts'; import type { CallStack } from '../../shell/call_stack.ts'; import type { JobTable } from '../../shell/job_table/index.ts'; import type { Session } from '../session/session.ts'; import type { TSNodeLike } from '../../shell/types.ts'; import { ExecutionNode } from '../types.ts'; import { type ExecuteNodeFn } from './jobs.ts'; type Result = [ByteSource | null, IOResult, ExecutionNode]; export declare function handlePipe(executeNode: ExecuteNodeFn, commands: readonly TSNodeLike[], stderrFlags: readonly boolean[], session: Session, stdin?: ByteSource | null, callStack?: CallStack | null): Promise; export declare function handleConnection(executeNode: ExecuteNodeFn, left: TSNodeLike, op: string | null, right: TSNodeLike, session: Session, stdin?: ByteSource | null, callStack?: CallStack | null): Promise; /** * Execute body in isolated env. * * `body` is ALL subshell children, including the `&` tokens that mark * background statements (named-only lists would run `a & b` * synchronously and never set `$!`). Background jobs live in the * subshell's private `jobTable` (bash forks: the parent's table never * sees them), and `executeNode` is bound to that same table so * `wait`/`kill`/`jobs` inside the body resolve against it. */ export declare function handleSubshell(executeNode: ExecuteNodeFn, body: readonly TSNodeLike[], session: Session, stdin?: ByteSource | null, callStack?: CallStack | null, jobTable?: JobTable | null, agentId?: string | null, dispatch?: DispatchFn): Promise; export {}; //# sourceMappingURL=pipes.d.ts.map