import { MultiMediaContentPart } from "@/memory/rendering";
import { ModelHarnessEvents } from "./modelHarness";
import { LLMClient } from "./types";
import { ActionDefinition } from "@/actions";
import { AgentContext } from "./baml_client";
import { Action } from "@/actions/types";
import { Image } from '@/memory/image';
import EventEmitter from "eventemitter3";
import z from "zod";
export declare class MultiModelHarness {
    /**
     * Delegates model responsibilites to different LLMs and consolidates their usage
     */
    private roles;
    private uniqueModels;
    readonly events: EventEmitter<ModelHarnessEvents>;
    constructor(clients: LLMClient[]);
    setup(): Promise<void>;
    describe(): string;
    partialAct<T>(context: AgentContext, task: string, data: MultiMediaContentPart[], actionVocabulary: ActionDefinition<T>[]): Promise<{
        reasoning: string;
        actions: Action[];
    }>;
    extract<T extends z.Schema>(instructions: string, schema: T, screenshot: Image, domContent: string): Promise<z.infer<T>>;
    query<T extends z.Schema>(context: AgentContext, query: string, schema: T): Promise<z.infer<T>>;
    get numUniqueModels(): number;
}
