/**
 * 도구 등록 및 관리 시스템
 * @memento/core: MCP/서버에서 공유하는 도구 레지스트리
 */
import type { ToolDefinition, ToolContext, ToolResult } from './types.js';
export interface ToolRegistryConfig {
    enableLogging: boolean;
    enableMetrics: boolean;
    maxExecutionTime: number;
    enableCaching: boolean;
    cacheSize: number;
}
export interface ToolExecutionMetrics {
    name: string;
    totalExecutions: number;
    successfulExecutions: number;
    failedExecutions: number;
    averageExecutionTime: number;
    lastExecution: Date | null;
    errorRate: number;
}
export declare class ToolRegistry {
    private tools;
    private config;
    private metrics;
    private cache;
    constructor(config?: Partial<ToolRegistryConfig>);
    register(tool: ToolDefinition): void;
    registerAll(tools: ToolDefinition[]): void;
    get(name: string): ToolDefinition | undefined;
    getAll(): ToolDefinition[];
    execute(name: string, params: unknown, context: ToolContext): Promise<ToolResult>;
    has(name: string): boolean;
    remove(name: string): boolean;
    clear(): void;
    size(): number;
    getNames(): string[];
    private updateMetrics;
    private generateCacheKey;
    private cacheResult;
    private log;
}
//# sourceMappingURL=tool-registry.d.ts.map