/**
 * OwlCoda Native Bash Tool
 *
 * Spawns a child shell process, captures stdout/stderr, returns exit code.
 * The implementation stays local-first and keeps the execution surface minimal.
 *
 * Cancellation semantics (P0 — Ctrl+C must halt within bounded time):
 *
 *   - `spawn` runs with `detached: true` so the bash we launch becomes the
 *     leader of its own process group. All descendants (sub-shells,
 *     backgrounded jobs, grandchildren that inherit stdio) live in the
 *     same group.
 *   - On abort or timeout we kill the GROUP (`process.kill(-pid, sig)`),
 *     not just the immediate child. Without this, a command like
 *     `sleep 60 &` would leave a backgrounded grandchild holding the
 *     stdout pipe open; Node's `close` event waits for stdio EOF and
 *     would never fire — the Promise would hang indefinitely.
 *   - A hard deadline ensures the Promise resolves even if `close` is
 *     never delivered by the OS (stdio fd still referenced, zombie
 *     state, etc.). We prefer a bounded, forcibly-released result over
 *     a hung conversation loop.
 */
import type { BashInput, NativeToolDef } from './types.js';
export declare function createBashTool(): NativeToolDef<BashInput>;
