/// <reference types="node" />
/// <reference types="node" />
import * as _ from 'lodash';
import * as stream from 'stream';
import { LookupFunction } from 'net';
import type * as Mockttp from 'mockttp';
import { ClientProxyConfig, RawHeaders, RequestDefinition, RequestOptions } from './client-types';
export declare class HttpClient {
    private ruleParameters;
    constructor(ruleParameters: {
        [key: string]: Mockttp.ProxySettingCallback | undefined;
    });
    getProxyConfig(proxyConfig: ClientProxyConfig): Mockttp.ProxySettingSource;
    readonly getDns: ((dnsServers: string[] | undefined) => LookupFunction | undefined) & _.MemoizedFunction;
    sendRequest(requestDefn: RequestDefinition, options: RequestOptions): Promise<stream.Readable>;
}
/**
 * Turn node's _very_ raw headers ([k, v, k, v, ...]) into our slightly more convenient
 * pairwise tuples [[k, v], [k, v], ...] RawHeaders structure.
 */
export declare function pairFlatRawHeaders(flatRawHeaders: string[]): RawHeaders;
/**
 * Turn our raw headers [[k, v], [k, v], ...] tuples into Node's very flat
 * [k, v, k, v, ...] structure.
 */
export declare function flattenPairedRawHeaders(rawHeaders: RawHeaders): string[];
