import { Logger } from '@llamaindex/env'; import { JSONSchemaType } from 'ajv'; import * as z3 from 'zod/v3'; import * as z4 from 'zod/v4/core'; import { JSONValue } from '../../global/dist/index.js'; import { BaseTool, ToolMetadata } from '../../llms/dist/index.js'; import { ZodSchema } from '../../zod/dist/index.js'; declare class FunctionTool, AdditionalToolArgument extends object = object> implements BaseTool { #private; constructor(fn: (input: T, additionalArg?: AdditionalToolArgument) => R, metadata: ToolMetadata>, zodType?: ZodSchema, additionalArg?: AdditionalToolArgument, logger?: Logger); static from(fn: (input: T, additionalArg?: AdditionalToolArgument) => JSONValue | Promise, schema: ToolMetadata>): FunctionTool, AdditionalToolArgument>; static from(fn: (input: z3.infer, additionalArg?: AdditionalToolArgument) => JSONValue | Promise, schema: Omit & { parameters: R; }): FunctionTool, JSONValue | Promise, AdditionalToolArgument>; static from(fn: (input: z4.infer, additionalArg?: AdditionalToolArgument) => JSONValue | Promise, schema: Omit & { parameters: R; }): FunctionTool, JSONValue | Promise, AdditionalToolArgument>; static from(config: Omit & { parameters: R; execute: (input: z3.infer, additionalArg?: AdditionalToolArgument) => JSONValue | Promise; }): FunctionTool, JSONValue | Promise, AdditionalToolArgument>; static from(config: Omit & { parameters: R; execute: (input: z4.infer, additionalArg?: AdditionalToolArgument) => JSONValue | Promise; }): FunctionTool, JSONValue | Promise, AdditionalToolArgument>; get metadata(): BaseTool["metadata"]; bind: (additionalArg: AdditionalToolArgument) => FunctionTool; call: (input: T) => R; } /** * A simpler alias for creating a FunctionTool. */ declare const tool: typeof FunctionTool.from; export { FunctionTool, tool };