import { Bash } from "../Bash.js";
export interface SpawnOptions {
    name: string;
    toolSubset?: string[];
    env?: Record<string, string>;
    cwd?: string;
}
/**
 * Orchestrator - Manages sub-agents for parallel or specialized tasks.
 */
export declare class Orchestrator {
    private agents;
    /**
     * Spawns a new sub-agent.
     *
     * When `toolSubset` is provided, the child agent is constrained to an
     * immutable allowlist of tools: every tool whose name is not in the
     * allowlist is removed from the child's toolbox via the typed public
     * `unregisterTool` API. No `as any` cast is used — the allowlist is
     * computed once as a frozen Set and never mutated in place.
     */
    spawn(parent: Bash, options: SpawnOptions): Promise<Bash>;
    /**
     * Constrains an agent's toolbox to exactly the allowed tool names.
     *
     * The allowlist is captured as an immutable frozen Set and the set of
     * tools to remove is derived as a new array (the source toolbox list is
     * never mutated while iterating). Removal uses the typed public
     * `BashToolbox.unregisterTool` method.
     */
    private applyToolAllowlist;
    getAgent(name: string): Bash | undefined;
    listAgents(): string[];
}
