import { AgentContext } from "@/ai/baml_client";
import { Action } from "@/actions/types";
import { LLMClient, ModelUsage } from "@/ai/types";
import { ActionDefinition } from "@/actions";
import { Schema, z } from 'zod';
import { Image } from '@/memory/image';
import EventEmitter from "eventemitter3";
import { MultiMediaContentPart } from "@/memory/rendering";
interface ModelHarnessOptions {
    llm: LLMClient;
}
export interface ModelHarnessEvents {
    'tokensUsed': (usage: ModelUsage) => {};
}
export declare class ModelHarness {
    /**
     * Strong reasoning agent for high level strategy and planning.
     */
    readonly events: EventEmitter<ModelHarnessEvents>;
    private options;
    private collector;
    private cr;
    private baml;
    private logger;
    private prevTotalInputTokens;
    private prevTotalOutputTokens;
    constructor(options: ModelHarnessOptions);
    setup(): Promise<void>;
    describeModel(): string;
    private _reportUsage;
    partialAct<T>(context: AgentContext, // Changed to ModularMemoryContext
    task: string, data: MultiMediaContentPart[], actionVocabulary: ActionDefinition<T>[]): Promise<{
        reasoning: string;
        actions: Action[];
    }>;
    extract<T extends Schema>(instructions: string, schema: T, screenshot: Image, domContent: string): Promise<z.infer<T>>;
    query<T extends Schema>(context: AgentContext, query: string, schema: T): Promise<z.infer<T>>;
}
export {};
