import type { AgentTool } from "../types.js";
export type ToolCategory = "core" | "search" | "management" | "web" | "filesystem" | "mcp";
export interface ToolMetadata {
    name: string;
    label: string;
    category: ToolCategory;
    description?: string;
}
export declare abstract class ToolFactory<TTool extends AgentTool<any> = AgentTool<any>> {
    abstract readonly metadata: ToolMetadata;
    abstract create(): TTool;
}
export declare class ToolRegistry {
    private readonly metadata;
    private readonly factories;
    register<TTool extends AgentTool<any>>(meta: ToolMetadata, create: () => TTool): void;
    create(name: string): AgentTool<any>;
    createMany(names: string[]): AgentTool<any>[];
    listMetadata(): ToolMetadata[];
}
