import { AgentChain } from "./chain";
import { Tool, IMcpClient, LLMRequest, ToolResult, ToolExecuter, WorkflowAgent, HumanCallback, AgentStreamCallback } from "../types";
import { LanguageModelV2Prompt, LanguageModelV2FilePart, LanguageModelV2TextPart, LanguageModelV2ToolCallPart, LanguageModelV2ToolResultPart } from "@ai-sdk/provider";
import TaskContext, { AgentContext } from "./agent-context";
export type AgentParams = {
    name: string;
    description: string;
    tools: Tool[];
    llms?: string[];
    mcpClient?: IMcpClient;
    planDescription?: string;
    requestHandler?: (request: LLMRequest) => void;
};
export declare class Agent {
    protected name: string;
    protected description: string;
    protected tools: Tool[];
    protected llms?: string[];
    protected mcpClient?: IMcpClient;
    protected planDescription?: string;
    protected requestHandler?: (request: LLMRequest) => void;
    protected callback?: AgentStreamCallback & HumanCallback;
    protected agentContext?: AgentContext;
    constructor(params: AgentParams);
    run(context: TaskContext, agentChain: AgentChain): Promise<string>;
    runWithContext(agentContext: AgentContext, mcpClient?: IMcpClient, maxReactNum?: number, historyMessages?: LanguageModelV2Prompt): Promise<string>;
    protected handleCallResult(agentContext: AgentContext, messages: LanguageModelV2Prompt, agentTools: Tool[], results: Array<LanguageModelV2TextPart | LanguageModelV2ToolCallPart>): Promise<string | null>;
    protected callToolCall(agentContext: AgentContext, agentTools: Tool[], result: LanguageModelV2ToolCallPart, user_messages?: LanguageModelV2Prompt): Promise<LanguageModelV2ToolResultPart>;
    protected system_auto_tools(agentNode: WorkflowAgent, agentContext: AgentContext): Tool[];
    protected buildSystemPrompt(agentContext: AgentContext, tools: Tool[]): Promise<string>;
    protected buildUserPrompt(agentContext: AgentContext, tools: Tool[]): Promise<Array<LanguageModelV2TextPart | LanguageModelV2FilePart>>;
    protected extSysPrompt(agentContext: AgentContext, tools: Tool[]): Promise<string>;
    private listTools;
    protected controlMcpTools(agentContext: AgentContext, messages: LanguageModelV2Prompt, loopNum: number): Promise<{
        mcpTools: boolean;
        mcpParams?: Record<string, unknown>;
    }>;
    protected toolExecuter(mcpClient: IMcpClient, name: string): ToolExecuter;
    protected handleMessages(agentContext: AgentContext, messages: LanguageModelV2Prompt, tools: Tool[]): Promise<void>;
    protected callInnerTool(fun: () => Promise<any>): Promise<ToolResult>;
    loadTools(context: TaskContext): Promise<Tool[]>;
    addTool(tool: Tool): void;
    protected onTaskStatus(status: "pause" | "abort" | "resume-pause", reason?: string): Promise<void>;
    canParallelToolCalls(toolCalls?: LanguageModelV2ToolCallPart[]): boolean;
    get Llms(): string[] | undefined;
    get Name(): string;
    get Description(): string;
    get Tools(): Tool[];
    get PlanDescription(): string | undefined;
    get McpClient(): IMcpClient | undefined;
    get AgentContext(): AgentContext | undefined;
}
//# sourceMappingURL=base.d.ts.map