import type { JSONSchemaType } from "ajv";
import type { BaseTool, JSONValue, ToolMetadata } from "../types.js";
export declare class FunctionTool<T, R extends JSONValue | Promise<JSONValue>> implements BaseTool<T> {
    private readonly _fn;
    private readonly _metadata;
    constructor(_fn: (input: T) => R, _metadata: ToolMetadata<JSONSchemaType<T>>);
    static from<T>(fn: (input: T) => JSONValue | Promise<JSONValue>, schema: ToolMetadata<JSONSchemaType<T>>): FunctionTool<T, JSONValue | Promise<JSONValue>>;
    get metadata(): BaseTool<T>["metadata"];
    call(input: T): R;
}
