import type { AgentState } from "./state";
import type { ToolDefinition } from "./llm-types";
export interface ToolResult {
    success: boolean;
    output: string;
    error?: string;
    data?: Record<string, unknown>;
}
export interface AgentTool {
    /** Unique tool name (used by the LLM to invoke it) */
    name: string;
    /** Human-readable description (shown to the LLM in system prompt) */
    description: string;
    /** JSON schema for parameters */
    definition: ToolDefinition;
    /** Execute the tool with given params and current agent state */
    execute(params: Record<string, unknown>, state: AgentState): Promise<ToolResult>;
}
/**
 * MCP-inspired tool registry. The brain queries this to know
 * what tools exist. Tools self-register their schemas.
 */
export declare class ToolRegistry {
    private tools;
    /** Register a tool */
    register(tool: AgentTool): void;
    /** Get a tool by name */
    get(name: string): AgentTool | undefined;
    /** Get all tool definitions (for sending to the LLM) */
    getDefinitions(): ToolDefinition[];
    /** Get all tool names */
    getNames(): string[];
    /** Execute a tool by name */
    execute(name: string, params: Record<string, unknown>, state: AgentState): Promise<ToolResult>;
    /** Get a formatted summary of all tools for the system prompt */
    getToolSummary(): string;
}
//# sourceMappingURL=tool-registry.d.ts.map