import { ReadonlySubject } from '@iyio/common';
import { ConversationOptions } from '../Conversation.js';
import { ConvoModelTestManager } from './ConvoModelTestManager.js';
import { ConvoModelTestResult } from './convo-testing-types.js';
export interface ConvoModelTesterOptions {
    model: string;
    skipDefineModel?: boolean;
    initConvo?: string;
    convoOptions?: ConversationOptions;
    manager?: ConvoModelTestManager;
    tests?: string[];
}
export declare class ConvoModelTester {
    private readonly _testResults;
    get testResultsSubject(): ReadonlySubject<ConvoModelTestResult[]>;
    get testResults(): ConvoModelTestResult[];
    private readonly options;
    constructor({ initConvo, convoOptions, model, skipDefineModel, manager, tests, }: ConvoModelTesterOptions);
    runAllTestsAsync(): Promise<void>;
    getTestNames(): string[];
    private readonly createDebugger;
    private createConvo;
    private runTestAsync;
    private publishResult;
    test_sayHi: () => Promise<ConvoModelTestResult>;
    test_jsonSchema: () => Promise<ConvoModelTestResult>;
    test_jsonArray: () => Promise<ConvoModelTestResult>;
    test_callAddNumbers: () => Promise<ConvoModelTestResult>;
    test_assistantFirst: () => Promise<ConvoModelTestResult>;
}
