import type { Promisable } from 'type-fest';
import { TODO_any } from '../../_packages/types.index';
import type { CommonToolsOptions } from '../../execution/CommonToolsOptions';
import type { string_postprocessing_function_name } from '../../types/typeAliases';
/**
 * Options for `JavascriptExecutionTools`
 */
export type JavascriptExecutionToolsOptions = CommonToolsOptions & {
    /**
     * Functions to be executed in the JavaScript evaluation.
     *
     * This can be used in two ways:
     * 1. To provide custom postprocessing functions. For this case function must receive one string and return a (promise of) string.
     * 2. As environment for the ECECUTE SCRIPT, For this case function can be any function. [0]
     *
     * Note: There are also some built-in functions available:
     *      @see ./JavascriptEvalExecutionTools.ts
     */
    functions?: Record<string_postprocessing_function_name, PostprocessingFunction | ToolFunction>;
};
/**
 * Function that can be used to postprocess the output of the LLM
 */
export type PostprocessingFunction = ((value: string) => Promisable<string>) | Function;
/**
 * Function that can be used as tool for AI model
 */
export type ToolFunction = (args: TODO_any) => Promise<TODO_any>;
/**
 * TODO: [🧠][💙] Distinct between options passed into ExecutionTools and to ExecutionTools.execute
 */
