import { LlmFunction, LlmFunctionParameters, LlmToolExecutionInputs, LlmToolExecutionOutputs, LlmToolExecutor } from "../providers";
import { ZodObject } from "zod";
export type LLmToolContextSegment = Record<string, object | string | number | boolean | null>;
export interface LLmToolContext {
    context: LLmToolContextSegment;
    secureContext: LLmToolContextSegment;
}
export interface LlmToolConfiguration {
    name: string;
    description: string;
    requiresConfirmation?: boolean;
    executor?: LlmToolExecutor | "transfer" | "subTask";
    params?: Partial<LlmFunctionParameters> | ZodObject<any>;
}
/**
 * A tool that can be used in generations and task executions
 */
export declare class LlmTool {
    readonly name: string;
    readonly description: string;
    requiresConfirmation: boolean;
    constructor(config: LlmToolConfiguration);
    /**
     * Get the type of the tool
     */
    get type(): "function" | "functionDefinition" | "transfer" | "subTask";
    /**
     * Return the tool as a llm function (e.g., for use inside tool-use messages)
     */
    get asLLmFunction(): LlmFunction;
    /**
     * Execute the tool
     * @param args Deserialized arguments
     * @param env
     * @param env.context Contextual data (included in logs)
     * @param env.secureContext Secure contextual data (excluded from logs)
     */
    execute(args: LlmToolExecutionInputs, env?: Partial<LLmToolContext>): Promise<LlmToolExecutionOutputs>;
    /**
     * Internal helper to validate and normalize parameters
     * @param params
     */
    private validateParams;
}
