import * as http from "node:http";
import * as net from "node:net";
import { Duplex } from "node:stream";
import * as tls from "node:tls";

//#region src/agent.d.ts
interface HttpConnectOpts extends net.TcpNetConnectOpts {
  secureEndpoint: false;
  protocol?: string;
}
interface HttpsConnectOpts extends tls.ConnectionOptions {
  secureEndpoint: true;
  protocol?: string;
  port: number;
}
type AgentConnectOpts = HttpConnectOpts | HttpsConnectOpts;
declare const SYMBOL_INTERNAL: unique symbol;
declare abstract class Agent extends http.Agent {
  private [SYMBOL_INTERNAL];
  options: Partial<net.TcpNetConnectOpts & tls.ConnectionOptions>;
  keepAlive: boolean;
  constructor(opts?: http.AgentOptions);
  abstract connect(req: http.ClientRequest, options: AgentConnectOpts): Promise<Duplex | http.Agent> | Duplex | http.Agent;
  /**
   * Determine whether this is an `http` or `https` request.
   */
  isSecureEndpoint(options?: AgentConnectOpts): boolean;
  private incrementSockets;
  private decrementSockets;
  getName(options?: AgentConnectOpts): string;
  createSocket(req: http.ClientRequest, options: AgentConnectOpts, cb: (err: Error | null, s?: Duplex) => void): void;
  createConnection(): Duplex;
  get defaultPort(): number;
  set defaultPort(v: number);
  get protocol(): string;
  set protocol(v: string);
}
//#endregion
export { Agent, AgentConnectOpts };
//# sourceMappingURL=agent.d.cts.map