/**
 * ToolRegistry — 统一工具注册表
 *
 * 管理 Agent 可调用的所有工具定义。
 * 每个工具包含: name, description, parameters(JSON Schema), handler
 *
 * 设计原则:
 * - 所有 AI 能力均封装为 Tool，不再散落在各处
 * - Tool handler 仅做参数整理 + 调用已有 Service，不含业务逻辑
 * - 支持 Agent ReAct 循环调用（通过 LLM 推理决定工具调用）
 */
/** 工具定义输入 */
interface ToolDefinition {
    name: string;
    description: string;
    parameters?: Record<string, unknown>;
    handler: Function;
}
export declare class ToolRegistry {
    #private;
    constructor();
    /**
     * 注册一个工具
     * @param toolDef.name 工具唯一名称 (snake_case)
     * @param toolDef.description 给 LLM 看的工具描述
     * @param toolDef.parameters JSON Schema 格式的参数定义
     * @param toolDef.handler async (params, context) => result
     */
    register(toolDef: ToolDefinition): void;
    /** 批量注册 */
    registerAll(defs: ToolDefinition[]): void;
    /**
     * 获取工具定义（不含 handler，给 LLM prompt 使用）
     * @param [allowedTools] 限制返回的工具列表（不传则返回全部）
     * @returns >}
     */
    getToolSchemas(allowedTools?: readonly unknown[] | null): {
        name: string;
        description: string;
        parameters: Record<string, unknown>;
    }[];
    /**
     * 直接执行某个工具
     * @param context { container, aiProvider, projectRoot, ... }
     */
    execute(name: string, params: Record<string, unknown>, context?: Record<string, unknown>): Promise<unknown>;
    /** 检查工具是否存在 */
    has(name: string): boolean;
    /** 移除一个已注册的工具（Forge TTL 回收用） */
    unregister(name: string): boolean;
    /** 获取所有工具名 */
    getToolNames(): string[];
    /** 工具数量 */
    get size(): number;
}
export default ToolRegistry;
