import "reflect-metadata"; import type { z } from "zod"; /** * Parameters for the Tool decorator * @typeParam TParameters - The Zod schema type for the tool parameters */ export type ToolDecoratorParams = { /** * The name of the tool * @defaultValue snakeCase(methodName) */ name?: string; /** A description of what the tool does */ description: string; }; export type StoredToolMetadata = { name: string; description: string; parameters: { index: number; schema: z.ZodSchema; }; walletClient?: { index: number; }; target: (...args: unknown[]) => unknown; }; export type StoredToolMetadataMap = Map; export declare const toolMetadataKey: unique symbol; /** * Decorator that marks a class method as a tool accessible to the LLM * @param params - Configuration parameters for the tool * @returns A decorator function that can be applied to class methods * * @example * class MyToolService \{ * \@Tool(\{ * description: "Adds two numbers", * \}) * add(\{a, b\}: AddParameters) \{ * return a + b; * \} * \} */ export declare function Tool(params: ToolDecoratorParams): (target: object, propertyKey: string, descriptor: PropertyDescriptor) => object;