import { Workspace } from '../../agent-utils/index.js';
import { RunnableAgent, ChatMessage, AgentOutput, RunResult, LlmQuery, LlmQueryBuilder, ChatLogs, LlmModel, Chat, FunctionDefinition, AgentFunction, Prompt, AgentContext } from '../../agent-core/index.js';
import { AgentConfig } from './AgentConfig.js';
import { AgentFunctionBase } from '../../functions/index.js';
export type GoalRunArgs = {
    goal: string;
};
export declare class Agent<TRunArgs = GoalRunArgs> implements RunnableAgent<TRunArgs> {
    readonly config: AgentConfig<TRunArgs>;
    readonly context: AgentContext;
    constructor(config: AgentConfig<TRunArgs>, context: AgentContext);
    get workspace(): Workspace;
    init(): Promise<void>;
    run(args: TRunArgs): AsyncGenerator<AgentOutput, RunResult, string | undefined>;
    onFirstRun(_: TRunArgs, chat: Chat): Promise<void>;
    protected initRun(args: TRunArgs): Promise<void>;
    protected executeFunction(func: AgentFunctionBase<unknown>, args: any, chat: Chat): Promise<void>;
    protected query(msgs?: ChatMessage[]): LlmQuery;
    protected queryBuilder(msgs?: ChatMessage[]): LlmQueryBuilder;
    protected askLlm(query: string | Prompt, opts?: {
        maxResponseTokens?: number;
        model?: LlmModel;
    }): Promise<string>;
    protected createEmbeddingVector(text: string): Promise<number[]>;
    protected beforeLlmResponse(): Promise<{
        logs: ChatLogs;
        agentFunctions: FunctionDefinition[];
        allFunctions: AgentFunction<AgentContext>[];
    }>;
}
