/// <reference types="node" />
/// <reference types="node" />
import type { Agent as HttpAgent } from 'node:http';
import type { Agent as HttpsAgent } from 'node:https';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { SocksProxyAgent } from 'socks-proxy-agent';
import type { TimelineEntry } from './timeline-agent';
type ProxyMode = 'on' | 'off' | 'system';
type ProxyAuth = {
    enabled: boolean;
    username?: string;
    password?: string;
};
type ProxyConfig = {
    enabled?: boolean | 'global';
    protocol?: string;
    hostname?: string;
    port?: number | null;
    auth?: ProxyAuth;
    bypassProxy?: string;
    mode?: ProxyMode;
};
type SystemProxyConfig = {
    http_proxy?: string;
    https_proxy?: string;
    no_proxy?: string;
};
type ClientCertificate = {
    domain?: string;
    type?: 'cert' | 'pfx';
    certFilePath?: string;
    keyFilePath?: string;
    pfxFilePath?: string;
    passphrase?: string;
};
type AgentResult = {
    httpAgent?: HttpAgent;
    httpsAgent?: HttpsAgent | HttpsProxyAgent<any> | SocksProxyAgent;
};
type ConfigOptions = {
    noproxy: boolean;
    shouldVerifyTls: boolean;
    shouldUseCustomCaCertificate: boolean;
    customCaCertificateFilePath?: string;
    shouldKeepDefaultCaCertificates: boolean;
    cacheSslSession?: boolean;
};
type GetHttpHttpsAgentsParams = {
    requestUrl?: string;
    collectionPath: string;
    options: ConfigOptions;
    clientCertificates?: {
        certs?: ClientCertificate[];
    };
    collectionLevelProxy?: ProxyConfig;
    appLevelProxyConfig?: Record<string, any>;
    systemProxyConfig?: SystemProxyConfig;
    timeline?: TimelineEntry[];
};
declare const getHttpHttpsAgents: ({ requestUrl, collectionPath, clientCertificates, collectionLevelProxy, appLevelProxyConfig, systemProxyConfig, options, timeline }: GetHttpHttpsAgentsParams) => Promise<AgentResult>;
export { getHttpHttpsAgents };
export type { GetHttpHttpsAgentsParams };
