import { AgentToolDefinition, AgentToolInvoke } from '../config/types';
import { AgentToolCall } from './types';

export interface ToolInvokeOptions {
    chatId?: string;
}
type ToolInvokeDelegate = (name: string, input: Record<string, unknown>, options?: ToolInvokeOptions) => Promise<AgentToolCall>;
export declare class ToolRegistry {
    private readonly tools;
    private invokeDelegate?;
    constructor(definitions?: AgentToolDefinition[]);
    bindInvoke(delegate: ToolInvokeDelegate): void;
    invoke(name: string, input?: Record<string, unknown>, options?: ToolInvokeOptions): Promise<AgentToolCall>;
    register(definition: AgentToolDefinition): void;
    list(): AgentToolDefinition[];
    get(name: string): AgentToolDefinition | undefined;
    execute(name: string, input: Record<string, unknown>, ctx: Parameters<AgentToolInvoke>[1], existingCall?: AgentToolCall): Promise<AgentToolCall>;
}
export {};
//# sourceMappingURL=ToolRegistry.d.ts.map