import type { ProviderConfig, AnyRecord, RecordWithTtl, CaaRecord, MxRecord, NaptrRecord, SoaRecord, SrvRecord, TlsaRecord, ResolveOptions, ResolveWithTtlOptions, DoHResponse, RecordType, AbortOptions } from '../types.cjs'; type ProviderLimit = NonNullable; type DnsResponseError = Error & { code?: string; errno?: number; hostname?: string; syscall?: string; }; export declare function badResponseError(hostname: string, type: RecordType, reason: string): DnsResponseError; /** * Google DNS-over-HTTPS provider. */ export declare class DoHProvider { private queueGeneration; private readonly queueGenerations; private config; private readonly defaultQueueOptions; protected dohRequest: (hostname: string, type: RecordType, signal?: AbortSignal) => Promise; /** * Creates a new Google DoH provider instance. * @param config - Provider configuration */ constructor(config: ProviderConfig | undefined, defaultQueueOptions: ProviderLimit); /** * Updates the provider configuration. * @param config - New configuration */ updateConfig(config: ProviderConfig): void; /** * Create an immutable queue generation. A replacement waits for every * operation submitted to its predecessor to settle before accepting new * upstream work. This keeps rapid configuration changes ordered without * abandoning callers already queued under an older rate policy. */ private createQueueGeneration; private retireQueueGeneration; private resolveDrainedGeneration; /** * Checks if the provider is enabled. */ get enabled(): boolean; /** * Gets the current queue size. */ get queueSize(): number; /** * Gets the configured concurrency limit for this provider. */ get concurrency(): number; /** * Checks if the queue is at capacity. */ get isFull(): boolean; /** * Executes a function through the queue with abort/timeout support. */ private executeQueued; /** * Converts DoH response to Node.js DNS format. */ private parseDoHResponse; /** * Resolves A records for a hostname. */ resolve4(hostname: string): Promise; resolve4(hostname: string, options: ResolveWithTtlOptions): Promise; resolve4(hostname: string, options?: ResolveOptions): Promise; /** * Resolves AAAA records for a hostname. */ resolve6(hostname: string): Promise; resolve6(hostname: string, options: ResolveWithTtlOptions): Promise; resolve6(hostname: string, options?: ResolveOptions): Promise; /** * Resolves ANY records for a hostname. */ resolveAny(hostname: string, options?: AbortOptions): Promise; /** * Resolves CAA records for a hostname. */ resolveCaa(hostname: string, options?: AbortOptions): Promise; /** * Resolves CNAME records for a hostname. */ resolveCname(hostname: string, options?: AbortOptions): Promise; /** * Resolves MX records for a hostname. */ resolveMx(hostname: string, options?: AbortOptions): Promise; /** * Resolves NAPTR records for a hostname. */ resolveNaptr(hostname: string, options?: AbortOptions): Promise; /** * Resolves NS records for a hostname. */ resolveNs(hostname: string, options?: AbortOptions): Promise; /** * Resolves PTR records for an IP address. */ resolvePtr(hostname: string, options?: AbortOptions): Promise; /** * Resolves SOA record for a hostname. */ resolveSoa(hostname: string, options?: AbortOptions): Promise; /** * Resolves SRV records for a hostname. */ resolveSrv(hostname: string, options?: AbortOptions): Promise; /** * Resolves TLSA records for a hostname. */ resolveTlsa(hostname: string, options?: AbortOptions): Promise; /** * Resolves TXT records for a hostname. */ resolveTxt(hostname: string, options?: AbortOptions): Promise; /** * Performs reverse DNS lookup for an IP address. */ reverse(ip: string, options?: AbortOptions): Promise; /** * Generic resolve method that delegates to specific resolve methods. */ resolve(hostname: string): Promise; resolve(hostname: string, rrtype: "A"): Promise; resolve(hostname: string, rrtype: "AAAA"): Promise; resolve(hostname: string, rrtype: "ANY"): Promise; resolve(hostname: string, rrtype: "CAA"): Promise; resolve(hostname: string, rrtype: "CNAME"): Promise; resolve(hostname: string, rrtype: "MX"): Promise; resolve(hostname: string, rrtype: "NAPTR"): Promise; resolve(hostname: string, rrtype: "NS"): Promise; resolve(hostname: string, rrtype: "PTR"): Promise; resolve(hostname: string, rrtype: "SOA"): Promise; resolve(hostname: string, rrtype: "SRV"): Promise; resolve(hostname: string, rrtype: "TLSA"): Promise; resolve(hostname: string, rrtype: "TXT"): Promise; } export {};