/// import net from 'net'; import http from 'http'; import https from 'https'; import { Duplex } from 'stream'; import { EventEmitter } from 'events'; declare function createAgent(opts?: createAgent.AgentOptions): createAgent.Agent; declare function createAgent(callback: createAgent.AgentCallback, opts?: createAgent.AgentOptions): createAgent.Agent; declare namespace createAgent { interface ClientRequest extends http.ClientRequest { _last?: boolean; _hadError?: boolean; method: string; } interface AgentRequestOptions { host?: string; path?: string; port: number; } interface HttpRequestOptions extends AgentRequestOptions, Omit { secureEndpoint: false; } interface HttpsRequestOptions extends AgentRequestOptions, Omit { secureEndpoint: true; } type RequestOptions = HttpRequestOptions | HttpsRequestOptions; type AgentLike = Pick | http.Agent; type AgentCallbackReturn = Duplex | AgentLike; type AgentCallbackCallback = (err?: Error | null, socket?: createAgent.AgentCallbackReturn) => void; type AgentCallbackPromise = (req: createAgent.ClientRequest, opts: createAgent.RequestOptions) => createAgent.AgentCallbackReturn | Promise; type AgentCallback = typeof Agent.prototype.callback; type AgentOptions = { timeout?: number; }; /** * Base `http.Agent` implementation. * No pooling/keep-alive is implemented by default. * * @param {Function} callback * @api public */ class Agent extends EventEmitter { timeout: number | null; maxFreeSockets: number; maxTotalSockets: number; maxSockets: number; sockets: { [key: string]: net.Socket[]; }; freeSockets: { [key: string]: net.Socket[]; }; requests: { [key: string]: http.IncomingMessage[]; }; options: https.AgentOptions; private promisifiedCallback?; private explicitDefaultPort?; private explicitProtocol?; constructor(callback?: createAgent.AgentCallback | createAgent.AgentOptions, _opts?: createAgent.AgentOptions); get defaultPort(): number; set defaultPort(v: number); get protocol(): string; set protocol(v: string); callback(req: createAgent.ClientRequest, opts: createAgent.RequestOptions, fn: createAgent.AgentCallbackCallback): void; callback(req: createAgent.ClientRequest, opts: createAgent.RequestOptions): createAgent.AgentCallbackReturn | Promise; /** * Called by node-core's "_http_client.js" module when creating * a new HTTP request with this Agent instance. * * @api public */ addRequest(req: ClientRequest, _opts: RequestOptions): void; freeSocket(socket: net.Socket, opts: AgentOptions): void; destroy(): void; } } export = createAgent;