/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { TcpNetConnectOpts } from "net";
import * as http from "http";
import * as https from "https";
import { Socket } from "net";
export interface RequestFilteringAgentOptions {
    allowPrivateIPAddress?: boolean;
    allowMetaIPAddress?: boolean;
    allowIPAddressList?: string[];
    denyIPAddressList?: string[];
}
export declare const DefaultRequestFilteringAgentOptions: Required<RequestFilteringAgentOptions>;
/**
 * A subclass of http.Agent with request filtering
 */
export declare class RequestFilteringHttpAgent extends http.Agent {
    private requestFilterOptions;
    constructor(options?: http.AgentOptions & RequestFilteringAgentOptions);
    createConnection(options: TcpNetConnectOpts, connectionListener?: (error: Error | null, socket: Socket) => void): any;
}
/**
 * A subclass of https.Agent with request filtering
 */
export declare class RequestFilteringHttpsAgent extends https.Agent {
    private requestFilterOptions;
    constructor(options?: https.AgentOptions & RequestFilteringAgentOptions);
    createConnection(options: TcpNetConnectOpts, connectionListener?: (error: Error | null, socket: Socket) => void): any;
}
export declare const globalHttpAgent: RequestFilteringHttpAgent;
export declare const globalHttpsAgent: RequestFilteringHttpsAgent;
/**
 * Get an agent for the url
 * return http or https agent
 * @param url
 * @param options
 */
export declare const useAgent: (url: string, options?: https.AgentOptions & RequestFilteringAgentOptions) => RequestFilteringHttpAgent | RequestFilteringHttpsAgent;
