/// <reference types="node" />
/// <reference types="node" />
import { Readable } from 'stream';
import { IncomingHttpHeaders } from 'http';
export declare type SocketInfo = {
    id: number;
    localAddress: string;
    localPort: number;
    remoteAddress: string;
    remotePort: number;
    remoteFamily: string;
    bytesWritten: number;
    bytesRead: number;
    handledRequests: number;
    handledResponses: number;
};
/**
 * https://eggjs.org/en/core/httpclient.html#timing-boolean
 */
export declare type Timing = {
    queuing: number;
    connected: number;
    requestHeadersSent: number;
    requestSent: number;
    waiting: number;
    contentDownload: number;
};
export declare type BaseResponseMeta = {
    status: number;
    statusCode: number;
    headers: IncomingHttpHeaders;
    timing: Timing;
    socket: SocketInfo;
};
export declare type HttpClientResponseMeta = BaseResponseMeta & {
    size: number;
    aborted: boolean;
    rt: number;
    keepAliveSocket: boolean;
    requestUrls: string[];
};
export declare type ReadableWithMeta = Readable & BaseResponseMeta;
export declare type HttpClientResponse = {
    opaque: unknown;
    data: any;
    status: number;
    statusCode: number;
    headers: IncomingHttpHeaders;
    url: string;
    redirected: boolean;
    requestUrls: string[];
    res: ReadableWithMeta | HttpClientResponseMeta;
};
