import type { RawRDAPResponse } from '../../shared/types'; import type { TimeoutOptions } from '../../shared/types/options'; import type { CircuitBreakerOptions, CircuitState } from './CircuitBreaker'; import { SSRFProtection } from '../security/SSRFProtection'; export interface FetcherOptions { timeout?: TimeoutOptions; userAgent?: string; headers?: Record; followRedirects?: boolean; maxRedirects?: number; ssrfProtection?: SSRFProtection; logRedirect?: (fromUrl: string, toUrl: string) => void; http2?: boolean; signal?: AbortSignal; circuitBreaker?: CircuitBreakerOptions | false; } export interface CircuitBreakerStats { [origin: string]: { state: CircuitState; }; } export declare class Fetcher { private readonly timeout; private readonly userAgent; private readonly headers; private readonly followRedirects; private readonly maxRedirects; private readonly ssrfProtection?; private readonly logRedirect?; readonly http2: boolean; private readonly signal?; private readonly circuits; private readonly cbOptions; constructor(options?: FetcherOptions); private getCircuit; fetch(url: string): Promise; getCircuitBreakerStats(): CircuitBreakerStats; private makeRequest; getConfig(): { timeout: Required; userAgent: string; followRedirects: boolean; maxRedirects: number; }; } //# sourceMappingURL=Fetcher.d.ts.map