import type { InvokableTool } from './tool.js';
import type { FunctionToolConfig } from './function-tool.js';
import type { JSONValue } from '../types/json.js';
import { z } from 'zod';
import { type ZodToolConfig } from './zod-tool.js';
/**
 * Creates an InvokableTool from a Zod schema and callback function.
 *
 * @typeParam TInput - Zod schema type for input validation
 * @typeParam TReturn - Return type of the callback function
 * @param config - Tool configuration with Zod schema
 * @returns An InvokableTool with typed input and output
 */
export declare function tool<TInput extends z.ZodType, TReturn extends JSONValue = JSONValue>(config: ZodToolConfig<TInput, TReturn>): InvokableTool<z.infer<TInput>, TReturn>;
/**
 * Creates an InvokableTool from a JSON schema and callback function.
 *
 * @param config - Tool configuration with optional JSON schema
 * @returns An InvokableTool with unknown input
 */
export declare function tool(config: FunctionToolConfig): InvokableTool<unknown, JSONValue>;
//# sourceMappingURL=tool-factory.d.ts.map