import type { AgentTool } from '@earendil-works/pi-agent-core';
import { type BuildChildToolsOptions } from '../child-agent-factory.js';
export declare const DEFAULT_DELEGATE_TOOLS: readonly ["shell", "read_file", "write_file", "edit_file", "grep", "find", "list_dir", "web_search", "web_fetch"];
/** Tools never passed to a delegated sub-agent (even if requested). */
export declare const DELEGATE_BLOCKED_TOOLS: Set<string>;
export interface DelegateToolDeps {
    workspace: string;
    getSubagentModel: () => import('@earendil-works/pi-ai').Model<import('@earendil-works/pi-ai').Api>;
    bus: import('../../infra/bus/index.js').MessageBus;
    getConfig: () => import('../../config/schema.js').Config | undefined;
    getCurrentContext?: () => {
        sessionKey?: string;
        channel?: string;
        accountId?: string;
        to?: string;
        threadId?: string | number;
    } | null;
    hookRunner?: import('../../extensions/index.js').ExtensionHookRunner;
    toolExecutorConfig?: Partial<import('./executor.js').ToolExecutorConfig>;
    /**
     * Construct the child agent's tool set. Injected by `AgentToolsFactory` so
     * the child-agent-factory module does not import `tools/factory.ts`
     * (which would form a factory ↔ delegate-tool ↔ child-agent-factory cycle).
     */
    buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];
}
export declare function createDelegateTool(deps: DelegateToolDeps): AgentTool;
