import { Context, Next } from "koa"; import { MockProxyUserOptions } from "../types"; export interface LogItem { id: string; requestTimestamp: number; responseTimestamp: number; method: Context["method"]; url: Context["url"]; path: Context["path"]; query: Context["query"]; status?: number; contentType?: string; responseSource: string; mode: string; options?: MockProxyUserOptions; } export interface RequestDetails { requestHeaders: Record; responseHeaders: Record; request: string | Buffer; response: string | Buffer; logMessages: string[]; } export declare class MemoryLogStorage { private logs; private logLimit; /** * Percentage of how much we allow excess of log limit * @private */ private shrinkLogThreshold; private requestDetails; constructor(logLimit?: number); private shrinkLogSize; getItems(): LogItem[]; getRequestDetails(id: string): RequestDetails; putLogItem(ctx: Context, requestTimestamp: number, headers?: Context["headers"], body?: Buffer, options?: MockProxyUserOptions): void; deleteLogs(): void; } export interface LogFilters { id?: string; search?: string; } export declare const getLogs: (filters?: LogFilters) => LogItem[]; export declare const deleteLogs: () => void; export declare const getRequestDetails: (id: string) => RequestDetails; export declare const logMiddleware: (options: MockProxyUserOptions) => (ctx: Context, next: Next) => Promise;