import { ToolDescriptor, ToolInvocation, ToolParameterDescriptor, ToolParameterTypes } from "@typeDefs"; export type ToolParamMap = { [key: string]: { description: string; type: ToolParameterTypes; required: boolean; }; }; type ExtractArgumentType = T extends "STR" ? string : T extends "NUM" ? number : T extends "BOOL" ? boolean : never; export type ConvertParamMapToArgs = { [K in keyof TParamMap as TParamMap[K]["required"] extends true ? K : never]: ExtractArgumentType; } & { [K in keyof TParamMap as TParamMap[K]["required"] extends false | undefined ? K : never]?: ExtractArgumentType; }; export declare class Tool implements ToolDescriptor, TReturns> { name: string; description: string; parameters: ToolParameterDescriptor[]; invocations: ToolInvocation, TReturns>[]; private invokeFn; constructor(name: string, description: string, paramMap: TParamMap, invokeFn: (args: ConvertParamMapToArgs) => TReturns | Promise); addInvocation(args: ConvertParamMapToArgs): void; allResolved(): boolean; resolveAll(): Promise>; } export {};