import { ZodSchema } from 'zod';
import { SquadEventEmitter } from './events';
import { JSONValue, Source } from './interfaces';
export interface Tool {
    name: string;
    description: string;
    schema: ZodSchema;
    execute: (input: any) => Promise<ToolResponse>;
}
export interface ToolResponse {
    text: string;
    sources?: Source[];
    actions?: ToolCall[];
    metadata?: JSONValue;
}
export interface ToolCall {
    tool: string;
    toolInput: object;
}
export declare class ToolError {
    observation: string;
    constructor(observation: string);
}
/**
 * This class is responsible for running the tools
 * the LLM decides to call.
 */
export declare class ToolRunner {
    tools: Tool[];
    events: SquadEventEmitter;
    runAttempts: number;
    maxRunAttemps: number;
    constructor(tools: Tool[], events: SquadEventEmitter);
    run(calling: ToolCall): Promise<ToolResponse | ToolError>;
}
//# sourceMappingURL=tool.d.ts.map