import type { PromptResult, StreamChunk, Result } from "smoltalk";
import type { EmbedConfig, EmbedResult, LLMClient, PromptConfig } from "./llmClient.js";
export type ReturnMock = {
    return: any;
};
export type ToolCallMock = {
    toolCall: {
        name: string;
        args?: Record<string, any>;
    };
};
/** Multi-tool variant: simulate the LLM returning multiple tool calls in
 *  one round (used to test concurrent tool execution in `runPrompt`). */
export type MultiToolCallMock = {
    toolCalls: Array<{
        name: string;
        args?: Record<string, any>;
    }>;
};
export type LLMMock = ReturnMock | ToolCallMock | MultiToolCallMock;
export declare class DeterministicClient implements LLMClient {
    private mocks;
    private callIndex;
    constructor(mocks: LLMMock[]);
    text(_config: PromptConfig): Promise<Result<PromptResult>>;
    textStream(config: PromptConfig): AsyncGenerator<StreamChunk>;
    embed(_input: string | string[], _config?: Partial<EmbedConfig>): Promise<Result<EmbedResult>>;
}
