/**
 * ToolForge — 工具锻造主编排器
 *
 * 三级锻造策略：
 *   Reuse (0ms)   → 直接重用注册表中已有工具
 *   Compose (10ms) → 通过 DynamicComposer 组合已有原子工具
 *   Generate (5s)  → LLM 生成工具代码 → SandboxRunner 验证 → 注册
 *
 * 瀑布逻辑：reuse → compose → generate，首个成功即返回。
 */
import type { SignalBus } from '#infra/signal/SignalBus.js';
import type { CompositionSpec } from './DynamicComposer.js';
import type { SandboxTestCase } from './SandboxRunner.js';
import { TemporaryToolRegistry } from './TemporaryToolRegistry.js';
import type { AnalysisResult, ToolRequirement } from './ToolRequirementAnalyzer.js';
import { ToolRequirementAnalyzer } from './ToolRequirementAnalyzer.js';
interface ToolRegistryLike {
    has(name: string): boolean;
    getToolNames(): string[];
    execute(name: string, params: Record<string, unknown>, context?: Record<string, unknown>): Promise<unknown>;
    register(toolDef: {
        name: string;
        description: string;
        parameters?: Record<string, unknown>;
        handler: Function;
    }): void;
    unregister(name: string): boolean;
}
export interface ForgeRequest {
    /** 用户意图 */
    intent: string;
    /** 关键动作 */
    action: string;
    /** 目标对象 */
    target: string;
    /** 约束条件 */
    constraints?: string[];
    /** LLM 代码生成回调 — 仅 generate 模式时调用 */
    codeGenerator?: (requirement: ToolRequirement) => Promise<GeneratedTool | null>;
}
export interface GeneratedTool {
    /** 工具名 */
    name: string;
    /** 描述 */
    description: string;
    /** JSON Schema 参数 */
    parameters: Record<string, unknown>;
    /** 工具代码（需包含 toolHandler 函数） */
    code: string;
    /** 测试用例 */
    testCases: SandboxTestCase[];
}
export interface ForgeResult {
    /** 是否成功 */
    success: boolean;
    /** 使用的模式 */
    mode: 'reuse' | 'compose' | 'generate';
    /** 工具名称 */
    toolName?: string;
    /** 需求分析结果 */
    analysis: AnalysisResult;
    /** 失败原因 */
    error?: string;
}
export interface ToolForgeOptions {
    signalBus?: SignalBus;
    /** 生成工具的默认 TTL（ms），默认 30 分钟 */
    defaultTtlMs?: number;
    /** compose 模式下的组合 spec 生成器 */
    compositionSpecBuilder?: (analysis: AnalysisResult, requirement: ToolRequirement) => CompositionSpec | null;
}
export declare class ToolForge {
    #private;
    constructor(registry: ToolRegistryLike, options?: ToolForgeOptions);
    /**
     * 锻造工具 — 瀑布流：reuse → compose → generate
     */
    forge(request: ForgeRequest): Promise<ForgeResult>;
    /**
     * 获取临时工具注册表（暴露给 Pipeline 集成用）
     */
    get temporaryRegistry(): TemporaryToolRegistry;
    /**
     * 获取分析器
     */
    get analyzer(): ToolRequirementAnalyzer;
    /**
     * 销毁 Forge（清理临时工具和定时器）
     */
    dispose(): void;
}
export {};
