export type VCRMode = "record" | "replay" | "auto" | "passthrough"; export interface VCRInteraction { method: string; request: unknown; response: unknown; chunks?: unknown[]; } export interface VCRCassette { name: string; version?: "1.0"; metadata?: { recordedAt?: string; recordedFrom?: string; provider?: string; duration?: number; }; interactions: VCRInteraction[]; } export interface VCROptions { mode?: VCRMode; scrub?: (data: unknown) => unknown; cassettesDir?: string; scope?: string | string[]; sensitivePatterns?: RegExp[]; sensitiveKeys?: string[]; /** @internal - For testing VCR library itself. Bypasses CI recording check. */ _allowRecordingInCI?: boolean; } export declare class VCR { private cassette; private interactionIndex; private mode; private filePath; private scrubber; private recordStartTime; constructor(name: string, options?: VCROptions); get currentMode(): VCRMode; stop(): Promise; private get interactionsCount(); execute(method: string, originalMethod: (...args: unknown[]) => Promise, request: unknown): Promise; executeStream(method: string, originalMethod: (...args: unknown[]) => AsyncIterable, request: unknown): AsyncIterable; private clone; private slugify; } export declare function setupVCR(name: string, options?: VCROptions): VCR; /** * One-line DX Sugar for VCR testing. */ export declare function withVCR(fn: () => Promise): () => Promise; export declare function withVCR(name: string, fn: () => Promise): () => Promise; export declare function withVCR(options: VCROptions, fn: () => Promise): () => Promise; export declare function withVCR(name: string, options: VCROptions, fn: () => Promise): () => Promise; export declare function configureVCR(options: VCROptions): void; export declare function resetVCRConfig(): void; /** * Organizes cassettes by hierarchical subdirectories. */ export declare function describeVCR(name: string, fn: () => void | Promise): void | Promise; //# sourceMappingURL=vcr.d.ts.map