import MockAgent from './mock-agent' declare class SnapshotRecorder { constructor (options?: SnapshotRecorder.Options) record (requestOpts: any, response: any): Promise findSnapshot (requestOpts: any): SnapshotRecorder.Snapshot | undefined loadSnapshots (filePath?: string): Promise saveSnapshots (filePath?: string): Promise clear (): void getSnapshots (): SnapshotRecorder.Snapshot[] size (): number resetCallCounts (): void deleteSnapshot (requestOpts: any): boolean getSnapshotInfo (requestOpts: any): SnapshotRecorder.SnapshotInfo | null replaceSnapshots (snapshotData: SnapshotRecorder.SnapshotData[]): void destroy (): void } declare namespace SnapshotRecorder { type SnapshotRecorderMode = 'record' | 'playback' | 'update' export interface Options { snapshotPath?: string mode?: SnapshotRecorderMode maxSnapshots?: number autoFlush?: boolean flushInterval?: number matchHeaders?: string[] ignoreHeaders?: string[] excludeHeaders?: string[] matchBody?: boolean matchQuery?: boolean caseSensitive?: boolean shouldRecord?: (requestOpts: any) => boolean shouldPlayback?: (requestOpts: any) => boolean excludeUrls?: (string | RegExp)[] } export interface Snapshot { request: { method: string url: string headers: Record body?: string } responses: { statusCode: number headers: Record body: string trailers: Record }[] callCount: number timestamp: string } export interface SnapshotInfo { hash: string request: { method: string url: string headers: Record body?: string } responseCount: number callCount: number timestamp: string } export interface SnapshotData { hash: string snapshot: Snapshot } } declare class SnapshotAgent extends MockAgent { constructor (options?: SnapshotAgent.Options) saveSnapshots (filePath?: string): Promise loadSnapshots (filePath?: string): Promise getRecorder (): SnapshotRecorder getMode (): SnapshotRecorder.SnapshotRecorderMode clearSnapshots (): void resetCallCounts (): void deleteSnapshot (requestOpts: any): boolean getSnapshotInfo (requestOpts: any): SnapshotRecorder.SnapshotInfo | null replaceSnapshots (snapshotData: SnapshotRecorder.SnapshotData[]): void } declare namespace SnapshotAgent { export interface Options extends MockAgent.Options { mode?: SnapshotRecorder.SnapshotRecorderMode snapshotPath?: string maxSnapshots?: number autoFlush?: boolean flushInterval?: number matchHeaders?: string[] ignoreHeaders?: string[] excludeHeaders?: string[] matchBody?: boolean matchQuery?: boolean caseSensitive?: boolean shouldRecord?: (requestOpts: any) => boolean shouldPlayback?: (requestOpts: any) => boolean excludeUrls?: (string | RegExp)[] } } export { SnapshotAgent, SnapshotRecorder }