import EventEmitter from "eventemitter3";
import z from "zod";
import { Action } from "@/actions/types";
import { AgentEvents } from "@/common/events";
import { AgentConnector } from '@/connectors';
import { RenderableContent } from '@/memory/observation';
import { LLMClient } from "@/ai/types";
import { AgentMemory } from "@/memory";
import { ActionDefinition } from "@/actions";
import { MultiModelHarness } from '@/ai/multiModelHarness';
export interface AgentOptions {
    llm?: LLMClient | LLMClient[];
    connectors?: AgentConnector[];
    actions?: ActionDefinition<any>[];
    prompt?: string | null;
    telemetry?: boolean;
}
export interface ActOptions {
    prompt?: string;
    data?: RenderableContent;
}
export declare class Agent {
    private options;
    private connectors;
    private actions;
    private memoryOptions;
    readonly models: MultiModelHarness;
    readonly events: EventEmitter<AgentEvents>;
    private doneActing;
    protected latestTaskMemory: AgentMemory;
    constructor(baseConfig?: Partial<AgentOptions>);
    getConnector<C extends AgentConnector>(connectorClass: new (...args: any[]) => C): C | undefined;
    require<C extends AgentConnector>(connectorClass: new (...args: any[]) => C): C;
    start(): Promise<void>;
    identifyAction(action: Action): ActionDefinition<any>;
    exec(action: Action, memory?: AgentMemory): Promise<void>;
    protected _recordConnectorObservations(memory: AgentMemory): Promise<void>;
    get memory(): AgentMemory;
    act(taskOrSteps: string | string[], options?: ActOptions): Promise<void>;
    _traceAct(task: string, memory: AgentMemory, options?: ActOptions): Promise<void>;
    private _buildContext;
    _act(description: string, memory: AgentMemory, options?: ActOptions): Promise<void>;
    query<T extends z.Schema>(query: string, schema: T): Promise<z.infer<T>>;
    queueDone(): Promise<void>;
    stop(): Promise<void>;
}
