/// import { ClientRequest } from 'http'; export interface Headers { [name: string]: string | string[]; } export interface Request { url: string; method: string; headers: Headers; body?: Buffer | false; } export interface Response { statusCode: number; statusMessage: string; headers: Headers; body?: Buffer | false; } export interface RequestContext { timing: Timing; requestId: string; [name: string]: any; } export interface Timing { socket: { lookup?: number; connect?: number; tls?: number; ready?: number; error?: number; close?: number; }; request: { initiated?: number; finish?: number; close?: number; timeout?: number; write?: number; end?: number; }; response: { read?: number; end?: number; error?: number; aborted?: number; }; } export declare type Event = 'request.initiated' | 'request.sent' | 'socket.error' | 'response.received' | 'response.error'; declare type Listener = T extends 'request.initiated' ? (request: ClientRequest, context: RequestContext) => void : T extends 'request.sent' ? (request: Request, context: RequestContext) => void : T extends 'response.received' ? (request: Request, response: Response, context: RequestContext) => void : T extends 'response.error' ? (request: Request, error: Error, context: RequestContext) => void : T extends 'socket.error' ? (request: Request, error: Error, context: RequestContext) => void : never; export interface Options { peekRequestBody?(request: Omit): boolean; peekResponseBody?(response: Omit): boolean; } export declare type Stub = (request: Request) => Response; export declare class HttpInterceptor { private emitter; private enabled; private _stub?; private options; constructor(options?: Options); enable(): void; disable(): void; stub(stub: Stub): void; unstub(): void; private wrap; private wrapRequest; private peekRequestBody; private wrapResponse; private wrapSocket; on(event: T, listener: Listener): void; private handleWrapperError; } export {};