import EventEmitter from "eventemitter3";
import z from "zod";
import { Action } from "@/actions/types";
import { ModelHarness } from "@/ai/modelHarness";
import { AgentEvents } from "@/common/events";
import { AgentConnector } from '@/connectors';
import { LLMClient } from "@/ai/types";
import { AgentMemory } from "@/memory";
import { ActionDefinition } from "@/actions";
export interface AgentOptions {
    llm?: LLMClient;
    connectors?: AgentConnector[];
    actions?: ActionDefinition<any>[];
    prompt?: string | null;
    telemetry?: boolean;
}
export interface ActOptions {
    prompt?: string;
    data?: string | Record<string, string>;
}
export declare class Agent {
    private options;
    private connectors;
    private actions;
    readonly model: ModelHarness;
    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>;
    _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>;
}
