/**
 * TemporaryToolRegistry — TTL 临时工具注册
 *
 * 在 ToolRegistry 之上增加 TTL 自动回收机制。
 * 锻造的工具默认 30 分钟有效，到期自动从 ToolRegistry 中移除。
 *
 * 设计：
 *   - 装饰器模式，不修改 ToolRegistry 核心逻辑
 *   - 定期检查（60s 间隔）清理过期工具
 *   - 支持手动续期和提前回收
 */
import type { SignalBus } from '#infra/signal/SignalBus.js';
interface ToolRegistryLike {
    register(toolDef: {
        name: string;
        description: string;
        parameters?: Record<string, unknown>;
        handler: Function;
    }): void;
    unregister(name: string): boolean;
    has(name: string): boolean;
}
export interface TemporaryTool {
    name: string;
    description: string;
    parameters: Record<string, unknown>;
    handler: (params: Record<string, unknown>, context: Record<string, unknown>) => Promise<unknown>;
    /** 锻造模式 */
    forgeMode: 'reuse' | 'compose' | 'generate';
    /** 注册时间 (ms) */
    registeredAt: number;
    /** 过期时间 (ms)，0 = never */
    expiresAt: number;
}
export interface TemporaryToolInfo {
    name: string;
    forgeMode: string;
    registeredAt: number;
    expiresAt: number;
    remainingMs: number;
}
export declare class TemporaryToolRegistry {
    #private;
    constructor(registry: ToolRegistryLike, options?: {
        signalBus?: SignalBus;
    });
    /**
     * 注册一个临时工具
     */
    registerTemporary(tool: Omit<TemporaryTool, 'registeredAt' | 'expiresAt'>, ttlMs?: number): void;
    /**
     * 手动回收临时工具
     */
    revoke(name: string): boolean;
    /**
     * 续期临时工具
     */
    renew(name: string, additionalMs?: number): boolean;
    /**
     * 清理过期工具
     */
    cleanup(): number;
    /**
     * 获取所有临时工具信息
     */
    list(): TemporaryToolInfo[];
    /**
     * 检查是否是临时工具
     */
    isTemporary(name: string): boolean;
    /** 临时工具数量 */
    get size(): number;
    /** 停止定期清理（用于 shutdown） */
    dispose(): void;
}
export {};
