import type { ToolSet } from 'ai'; import type { ResolvedNode } from '../../types/channel.js'; import type { AnyTool } from '../../types/effectTool.js'; import type { RunContext } from '../../types/run-context.js'; export type ResolveNodeToolsContext = Pick; /** * Compose the model-visible tool set for a resolved reply/extraction node. * * Driven by `resolved.toolScope` (default `'open'`). Flow-transition control * tools are filtered only by `siloFlowControl` (`outOfBandControl && * !freeConversation`), independent of scope. * * Precedence on name collision matches the prior inclusive union: node * `resolved.tools` wins; among the other layers, later entries win * (`localTools` over working-memory over `globalTools` over agent tools). */ export declare function resolveNodeTools(resolved: ResolvedNode, ctx: ResolveNodeToolsContext, agentToolDefs?: Record): ToolSet | undefined;