import { LogLine } from "../types/public/logs.js";
import { V3 } from "../v3.js";
import { ToolSet } from "ai";
import { LLMClient } from "../llm/LLMClient.js";
import { AgentExecuteOptions, AgentStreamExecuteOptions, AgentResult, AgentStreamResult, AgentToolMode, AgentModelConfig } from "../types/public/agent.js";
export declare class V3AgentHandler {
    private v3;
    private logger;
    private llmClient;
    private executionModel?;
    private systemInstructions?;
    private mcpTools?;
    private mode;
    constructor(v3: V3, logger: (message: LogLine) => void, llmClient: LLMClient, executionModel?: string | AgentModelConfig, systemInstructions?: string, mcpTools?: ToolSet, mode?: AgentToolMode);
    private prepareAgent;
    private createPrepareStep;
    private createStepHandler;
    execute(instructionOrOptions: string | AgentExecuteOptions): Promise<AgentResult>;
    stream(instructionOrOptions: string | AgentStreamExecuteOptions): Promise<AgentStreamResult>;
    private consolidateMetricsAndResult;
    private createTools;
    private handleStop;
    /**
     * Ensures the done tool is called at the end of agent execution.
     * Returns the messages and any extracted output from the done call.
     */
    private ensureDone;
    /**
     * Capture a screenshot and emit it via the event bus
     */
    private captureAndEmitScreenshot;
}
