import type { AgentTool } from '@earendil-works/pi-agent-core'; import { type BuildChildToolsOptions } from '../child-agent-factory.js'; import { type DelegationMode } from './delegation-policy.js'; import type { AgentTurnPolicy } from '../orchestration/agent-turn-policy.js'; export declare const DEFAULT_DELEGATE_TOOLS: string[]; /** Tools never passed to a delegated sub-agent (even if requested). */ export declare const DELEGATE_BLOCKED_TOOLS: Set; export interface DelegateToolDeps { getParentTools: () => AgentTool[]; createParentPolicy?: () => AgentTurnPolicy; workspace: string; getSubagentModel: () => import('@earendil-works/pi-ai').Model; bus: import('../../infra/bus/index.js').MessageBus; getConfig: () => import('../../config/schema.js').Config | undefined; getCurrentContext?: () => { conversationId?: string; channel?: string; accountId?: string; to?: string; threadId?: string | number; } | null; toolExecutorConfig?: Partial; /** * 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[]; } export declare function delegateToolNames(mode: DelegationMode, requested?: string[]): string[]; export declare function createDelegateTool(deps: DelegateToolDeps): AgentTool;