/** * Recording and replay LLM providers for regression testing. * * RecordingLLMProvider wraps any real provider and captures every request/response * pair into an in-memory transcript. ReplayLLMProvider takes a saved transcript * and returns the recorded responses in order — no network calls needed. * * These are test-only implementations and must not be registered with the * production provider registry. */ import type { LLMCompletionOptions, LLMCompletionResult } from '../../types/llm.types.js'; import { BaseLLMProvider } from '../provider.interface.js'; export interface TranscriptEntry { request: LLMCompletionOptions; response: LLMCompletionResult; } /** * Wraps a real LLMProvider and records every complete() call. * After execution, retrieve the transcript with getTranscript(). */ export declare class RecordingLLMProvider extends BaseLLMProvider { private readonly inner; get name(): string; private readonly transcript; constructor(inner: BaseLLMProvider); complete(options: LLMCompletionOptions): Promise; getAlternativeModels(currentModel?: string): string[]; isConfigured(): boolean; streamComplete(options: LLMCompletionOptions, onChunk: (chunk: string) => void): Promise; validateModel(modelName: string): Promise; /** Returns a shallow copy of the recorded transcript. */ getTranscript(): TranscriptEntry[]; } /** * Replays a pre-recorded transcript in order. * Throws when the transcript is exhausted — a signal that the scenario * made more LLM calls than the baseline captured. */ export declare class ReplayLLMProvider extends BaseLLMProvider { private readonly transcript; name: string; private callIndex; constructor(transcript: TranscriptEntry[]); complete(_options: LLMCompletionOptions): Promise; getAlternativeModels(): string[]; isConfigured(): boolean; streamComplete(options: LLMCompletionOptions, onChunk: (chunk: string) => void): Promise; validateModel(): Promise; } //# sourceMappingURL=recording.provider.d.ts.map