import { RetryLanguageModel } from "../llm";
import { AgentChain } from "../core/chain";
import Context, { AgentContext } from "../core/context";
import { WorkflowAgent, IMcpClient, Tool, ToolExecuter, ToolResult, StreamCallback, HumanCallback } from "../types";
import { LanguageModelV1FilePart, LanguageModelV1FunctionTool, LanguageModelV1ImagePart, LanguageModelV1Prompt, LanguageModelV1TextPart, LanguageModelV1ToolCallPart, LanguageModelV1ToolChoice, LanguageModelV1ToolResultPart } from "@ai-sdk/provider";
export type AgentParams = {
    name: string;
    description: string;
    tools: Tool[];
    llms?: string[];
    mcpClient?: IMcpClient;
    planDescription?: string;
};
export declare class Agent {
    protected name: string;
    protected description: string;
    protected tools: Tool[];
    protected llms?: string[];
    protected mcpClient?: IMcpClient;
    protected planDescription?: string;
    protected callback?: StreamCallback & HumanCallback;
    protected agentContext?: AgentContext;
    constructor(params: AgentParams);
    run(context: Context, agentChain: AgentChain): Promise<string>;
    runWithContext(agentContext: AgentContext, mcpClient?: IMcpClient, maxReactNum?: number): Promise<string>;
    protected handleCallResult(agentContext: AgentContext, messages: LanguageModelV1Prompt, agentTools: Tool[], results: Array<LanguageModelV1TextPart | LanguageModelV1ToolCallPart>): Promise<string | null>;
    protected system_auto_tools(agentNode: WorkflowAgent): Tool[];
    protected buildSystemPrompt(agentContext: AgentContext, tools: Tool[]): Promise<string>;
    protected buildUserPrompt(agentContext: AgentContext, tools: Tool[]): Promise<Array<LanguageModelV1TextPart | LanguageModelV1ImagePart | LanguageModelV1FilePart>>;
    protected extSysPrompt(agentContext: AgentContext, tools: Tool[]): Promise<string>;
    private listTools;
    protected controlMcpTools(agentContext: AgentContext, messages: LanguageModelV1Prompt, loopNum: number): Promise<{
        mcpTools: boolean;
        mcpParams?: Record<string, unknown>;
    }>;
    protected toolExecuter(mcpClient: IMcpClient, name: string): ToolExecuter;
    private convertTools;
    private getTool;
    protected convertToolResult(toolUse: LanguageModelV1ToolCallPart, toolResult: ToolResult, user_messages: LanguageModelV1Prompt): LanguageModelV1ToolResultPart;
    protected handleMessages(agentContext: AgentContext, messages: LanguageModelV1Prompt, tools: Tool[]): Promise<void>;
    protected callInnerTool(fun: () => Promise<any>): Promise<ToolResult>;
    loadTools(context: Context): Promise<Tool[]>;
    addTool(tool: Tool): void;
    protected onTaskStatus(status: "pause" | "abort" | "resume-pause", reason?: string): Promise<void>;
    get Llms(): string[] | undefined;
    get Name(): string;
    get Description(): string;
    get Tools(): Tool[];
    get PlanDescription(): string | undefined;
    get McpClient(): IMcpClient | undefined;
}
export declare function callLLM(agentContext: AgentContext, rlm: RetryLanguageModel, messages: LanguageModelV1Prompt, tools: LanguageModelV1FunctionTool[], noCompress?: boolean, toolChoice?: LanguageModelV1ToolChoice, retry?: boolean, callback?: StreamCallback & HumanCallback): Promise<Array<LanguageModelV1TextPart | LanguageModelV1ToolCallPart>>;
//# sourceMappingURL=base.d.ts.map