import { AbortOptions, AnyRecord, CaaRecord, MxRecord, NaptrRecord, ProviderName, ProviderSelectionOptions, RecordWithTtl, ResolveOptions, ResolveWithTtlOptions, SoaRecord, SrvRecord, TlsaRecord } from "../types.js"; type SelectedProviderOptions = T & ProviderSelectionOptions; type PositionalProviderOptions = T & { provider?: never; }; export interface IResolver { /** * Resolves DNS records for a hostname without specifying record type (defaults to A records) * @param hostname - The hostname to resolve * @returns Promise resolving to an array of IPv4 addresses */ resolve(hostname: string): Promise; /** * Resolves DNS records for a hostname without specifying record type but with a specific provider * @param hostname - The hostname to resolve * @param provider - The DNS provider to use * @returns Promise resolving to an array of IPv4 addresses */ resolve(hostname: string, provider: ProviderName): Promise; /** * Resolves A records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "A" * @returns Promise resolving to an array of IPv4 addresses */ resolve(hostname: string, rrtype: "A"): Promise; /** * Resolves A records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "A" * @param provider - The DNS provider to use * @returns Promise resolving to an array of IPv4 addresses */ resolve(hostname: string, rrtype: "A", provider: ProviderName): Promise; /** * Resolves AAAA records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "AAAA" * @returns Promise resolving to an array of IPv6 addresses */ resolve(hostname: string, rrtype: "AAAA"): Promise; /** * Resolves AAAA records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "AAAA" * @param provider - The DNS provider to use * @returns Promise resolving to an array of IPv6 addresses */ resolve(hostname: string, rrtype: "AAAA", provider: ProviderName): Promise; /** * Resolves ANY records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "ANY" * @returns Promise resolving to an array of any DNS records */ resolve(hostname: string, rrtype: "ANY"): Promise; /** * Resolves ANY records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "ANY" * @param provider - The DNS provider to use * @returns Promise resolving to an array of any DNS records */ resolve(hostname: string, rrtype: "ANY", provider: ProviderName): Promise; /** * Resolves CAA records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "CAA" * @returns Promise resolving to an array of CAA records */ resolve(hostname: string, rrtype: "CAA"): Promise; /** * Resolves CAA records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "CAA" * @param provider - The DNS provider to use * @returns Promise resolving to an array of CAA records */ resolve(hostname: string, rrtype: "CAA", provider: ProviderName): Promise; /** * Resolves CNAME records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "CNAME" * @returns Promise resolving to an array of canonical names */ resolve(hostname: string, rrtype: "CNAME"): Promise; /** * Resolves CNAME records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "CNAME" * @param provider - The DNS provider to use * @returns Promise resolving to an array of canonical names */ resolve(hostname: string, rrtype: "CNAME", provider: ProviderName): Promise; /** * Resolves MX records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "MX" * @returns Promise resolving to an array of mail exchange records */ resolve(hostname: string, rrtype: "MX"): Promise; /** * Resolves MX records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "MX" * @param provider - The DNS provider to use * @returns Promise resolving to an array of mail exchange records */ resolve(hostname: string, rrtype: "MX", provider: ProviderName): Promise; /** * Resolves NAPTR records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "NAPTR" * @returns Promise resolving to an array of NAPTR records */ resolve(hostname: string, rrtype: "NAPTR"): Promise; /** * Resolves NAPTR records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "NAPTR" * @param provider - The DNS provider to use * @returns Promise resolving to an array of NAPTR records */ resolve(hostname: string, rrtype: "NAPTR", provider: ProviderName): Promise; /** * Resolves NS records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "NS" * @returns Promise resolving to an array of nameserver hostnames */ resolve(hostname: string, rrtype: "NS"): Promise; /** * Resolves NS records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "NS" * @param provider - The DNS provider to use * @returns Promise resolving to an array of nameserver hostnames */ resolve(hostname: string, rrtype: "NS", provider: ProviderName): Promise; /** * Resolves PTR records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "PTR" * @returns Promise resolving to an array of pointer records */ resolve(hostname: string, rrtype: "PTR"): Promise; /** * Resolves PTR records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "PTR" * @param provider - The DNS provider to use * @returns Promise resolving to an array of pointer records */ resolve(hostname: string, rrtype: "PTR", provider: ProviderName): Promise; /** * Resolves SOA record for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "SOA" * @returns Promise resolving to a start of authority record */ resolve(hostname: string, rrtype: "SOA"): Promise; /** * Resolves SOA record for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "SOA" * @param provider - The DNS provider to use * @returns Promise resolving to a start of authority record */ resolve(hostname: string, rrtype: "SOA", provider: ProviderName): Promise; /** * Resolves SRV records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "SRV" * @returns Promise resolving to an array of service records */ resolve(hostname: string, rrtype: "SRV"): Promise; /** * Resolves SRV records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "SRV" * @param provider - The DNS provider to use * @returns Promise resolving to an array of service records */ resolve(hostname: string, rrtype: "SRV", provider: ProviderName): Promise; /** * Resolves TLSA records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "TLSA" * @returns Promise resolving to an array of TLSA records */ resolve(hostname: string, rrtype: "TLSA"): Promise; /** * Resolves TLSA records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "TLSA" * @param provider - The DNS provider to use * @returns Promise resolving to an array of TLSA records */ resolve(hostname: string, rrtype: "TLSA", provider: ProviderName): Promise; /** * Resolves TXT records for a hostname * @param hostname - The hostname to resolve * @param rrtype - DNS record type "TXT" * @returns Promise resolving to an array of text record arrays */ resolve(hostname: string, rrtype: "TXT"): Promise; /** * Resolves TXT records for a hostname with a specific provider * @param hostname - The hostname to resolve * @param rrtype - DNS record type "TXT" * @param provider - The DNS provider to use * @returns Promise resolving to an array of text record arrays */ resolve(hostname: string, rrtype: "TXT", provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv4 * addresses (e.g. `['74.125.79.104', '74.125.79.105', '74.125.79.106']`). * @since v10.6.0 * @param hostname Host name to resolve. */ resolve4(hostname: string): Promise; resolve4(hostname: string, options: SelectedProviderOptions): Promise; resolve4(hostname: string, options: SelectedProviderOptions): Promise; resolve4(hostname: string, options: SelectedProviderOptions): Promise; resolve4(hostname: string, options: PositionalProviderOptions): Promise; resolve4(hostname: string, options: PositionalProviderOptions): Promise; /** * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolve4(hostname: string, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname` with TTL using a specific provider. * @param hostname Host name to resolve. * @param options Resolution options with TTL enabled. * @param provider The DNS provider to use for resolution. */ resolve4(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve4(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv4 addresses (`A` records) for the `hostname` with options using a specific provider. * @param hostname Host name to resolve. * @param options Resolution options. * @param provider The DNS provider to use for resolution. */ resolve4(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve4(hostname: string, options: PositionalProviderOptions): Promise; resolve4(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve4(hostname: string, options: PositionalProviderOptions): Promise; resolve4(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname`. On success, the `Promise` is resolved with an array of IPv6 * addresses. * @since v10.6.0 * @param hostname Host name to resolve. */ resolve6(hostname: string): Promise; resolve6(hostname: string, options: SelectedProviderOptions): Promise; resolve6(hostname: string, options: SelectedProviderOptions): Promise; resolve6(hostname: string, options: SelectedProviderOptions): Promise; resolve6(hostname: string, options: PositionalProviderOptions): Promise; resolve6(hostname: string, options: PositionalProviderOptions): Promise; /** * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolve6(hostname: string, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname` with TTL using a specific provider. * @param hostname Host name to resolve. * @param options Resolution options with TTL enabled. * @param provider The DNS provider to use for resolution. */ resolve6(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve6(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve IPv6 addresses (`AAAA` records) for the `hostname` with options using a specific provider. * @param hostname Host name to resolve. * @param options Resolution options. * @param provider The DNS provider to use for resolution. */ resolve6(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve6(hostname: string, options: PositionalProviderOptions): Promise; resolve6(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; resolve6(hostname: string, options: PositionalProviderOptions): Promise; resolve6(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query). * On success, the `Promise` is resolved with an array containing various types of * records. Each object has a property `type` that indicates the type of the * current record. And depending on the `type`, additional properties will be * present on the object: * * * * Here is an example of the result object: * * ```js * [ { type: 'A', address: '127.0.0.1', ttl: 299 }, * { type: 'CNAME', value: 'example.com' }, * { type: 'MX', exchange: 'alt4.aspmx.l.example.com', priority: 50 }, * { type: 'NS', value: 'ns1.example.com' }, * { type: 'TXT', entries: [ 'v=spf1 include:_spf.example.com ~all' ] }, * { type: 'SOA', * nsname: 'ns1.example.com', * hostmaster: 'admin.example.com', * serial: 156696742, * refresh: 900, * retry: 900, * expire: 1800, * minttl: 60 } ] * ``` * @since v10.6.0 */ resolveAny(hostname: string): Promise; /** * Uses the DNS protocol to resolve all records (also known as `ANY` or `*` query) using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveAny(hostname: string, provider: ProviderName): Promise; resolveAny(hostname: string, options: SelectedProviderOptions): Promise; resolveAny(hostname: string, options: PositionalProviderOptions): Promise; resolveAny(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve `CAA` records for the `hostname`. On success, * the `Promise` is resolved with an array of objects containing available * certification authority authorization records available for the `hostname` (e.g. `[{critical: 0, iodef: 'mailto:pki@example.com'},{critical: 128, issue: 'pki.example.com'}]`). * @since v15.0.0, v14.17.0 */ resolveCaa(hostname: string): Promise; /** * Uses the DNS protocol to resolve `CAA` records for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveCaa(hostname: string, provider: ProviderName): Promise; resolveCaa(hostname: string, options: SelectedProviderOptions): Promise; resolveCaa(hostname: string, options: PositionalProviderOptions): Promise; resolveCaa(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve `CNAME` records for the `hostname`. On success, * the `Promise` is resolved with an array of canonical name records available for * the `hostname` (e.g. `['bar.example.com']`). * @since v10.6.0 */ resolveCname(hostname: string): Promise; /** * Uses the DNS protocol to resolve `CNAME` records for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveCname(hostname: string, provider: ProviderName): Promise; resolveCname(hostname: string, options: SelectedProviderOptions): Promise; resolveCname(hostname: string, options: PositionalProviderOptions): Promise; resolveCname(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects * containing both a `priority` and `exchange` property (e.g.`[{priority: 10, exchange: 'mx.example.com'}, ...]`). * @since v10.6.0 */ resolveMx(hostname: string): Promise; /** * Uses the DNS protocol to resolve mail exchange records (`MX` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveMx(hostname: string, provider: ProviderName): Promise; resolveMx(hostname: string, options: SelectedProviderOptions): Promise; resolveMx(hostname: string, options: PositionalProviderOptions): Promise; resolveMx(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname`. On success, the `Promise` is resolved with an array * of objects with the following properties: * * * `flags` * * `service` * * `regexp` * * `replacement` * * `order` * * `preference` * * ```js * { * flags: 's', * service: 'SIP+D2U', * regexp: '', * replacement: '_sip._udp.example.com', * order: 30, * preference: 100 * } * ``` * @since v10.6.0 */ resolveNaptr(hostname: string): Promise; /** * Uses the DNS protocol to resolve regular expression-based records (`NAPTR` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveNaptr(hostname: string, provider: ProviderName): Promise; resolveNaptr(hostname: string, options: SelectedProviderOptions): Promise; resolveNaptr(hostname: string, options: PositionalProviderOptions): Promise; resolveNaptr(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname`. On success, the `Promise` is resolved with an array of name server * records available for `hostname` (e.g.`['ns1.example.com', 'ns2.example.com']`). * @since v10.6.0 */ resolveNs(hostname: string): Promise; /** * Uses the DNS protocol to resolve name server records (`NS` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveNs(hostname: string, provider: ProviderName): Promise; resolveNs(hostname: string, options: SelectedProviderOptions): Promise; resolveNs(hostname: string, options: PositionalProviderOptions): Promise; resolveNs(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname`. On success, the `Promise` is resolved with an array of strings * containing the reply records. * @since v10.6.0 */ resolvePtr(hostname: string): Promise; /** * Uses the DNS protocol to resolve pointer records (`PTR` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolvePtr(hostname: string, provider: ProviderName): Promise; resolvePtr(hostname: string, options: SelectedProviderOptions): Promise; resolvePtr(hostname: string, options: PositionalProviderOptions): Promise; resolvePtr(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for * the `hostname`. On success, the `Promise` is resolved with an object with the * following properties: * * * `nsname` * * `hostmaster` * * `serial` * * `refresh` * * `retry` * * `expire` * * `minttl` * * ```js * { * nsname: 'ns.example.com', * hostmaster: 'root.example.com', * serial: 2013101809, * refresh: 10000, * retry: 2400, * expire: 604800, * minttl: 3600 * } * ``` * @since v10.6.0 */ resolveSoa(hostname: string): Promise; /** * Uses the DNS protocol to resolve a start of authority record (`SOA` record) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveSoa(hostname: string, provider: ProviderName): Promise; resolveSoa(hostname: string, options: SelectedProviderOptions): Promise; resolveSoa(hostname: string, options: PositionalProviderOptions): Promise; resolveSoa(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname`. On success, the `Promise` is resolved with an array of objects with * the following properties: * * * `priority` * * `weight` * * `port` * * `name` * * ```js * { * priority: 10, * weight: 5, * port: 21223, * name: 'service.example.com' * } * ``` * @since v10.6.0 */ resolveSrv(hostname: string): Promise; /** * Uses the DNS protocol to resolve service records (`SRV` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveSrv(hostname: string, provider: ProviderName): Promise; resolveSrv(hostname: string, options: SelectedProviderOptions): Promise; resolveSrv(hostname: string, options: PositionalProviderOptions): Promise; resolveSrv(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve certificate associations (`TLSA` records) for * the `hostname`. On success, the `Promise` is resolved with an array of objectsAdd commentMore actions * with these properties: * * * `certUsage` * * `selector` * * `match` * * `data` * * ```js * { * certUsage: 3, * selector: 1, * match: 1, * data: [ArrayBuffer] * } * ``` * @since v23.9.0, v22.15.0 */ resolveTlsa(hostname: string): Promise; /** * Uses the DNS protocol to resolve certificate associations (`TLSA` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveTlsa(hostname: string, provider: ProviderName): Promise; resolveTlsa(hostname: string, options: SelectedProviderOptions): Promise; resolveTlsa(hostname: string, options: PositionalProviderOptions): Promise; resolveTlsa(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname`. On success, the `Promise` is resolved with a two-dimensional array * of the text records available for `hostname` (e.g.`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of * one record. Depending on the use case, these could be either joined together or * treated separately. * @since v10.6.0 */ resolveTxt(hostname: string): Promise; /** * Uses the DNS protocol to resolve text queries (`TXT` records) for the `hostname` using a specific provider. * @param hostname Host name to resolve. * @param provider The DNS provider to use for resolution. */ resolveTxt(hostname: string, provider: ProviderName): Promise; resolveTxt(hostname: string, options: SelectedProviderOptions): Promise; resolveTxt(hostname: string, options: PositionalProviderOptions): Promise; resolveTxt(hostname: string, options: PositionalProviderOptions, provider: ProviderName): Promise; /** * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an * array of host names. * * On error, the `Promise` is rejected with an [`Error`](https://nodejs.org/docs/latest-v20.x/api/errors.html#class-error) object, where `err.code` * is one of the [DNS error codes](https://nodejs.org/docs/latest-v20.x/api/dns.html#error-codes). * @since v10.6.0 */ reverse(ip: string): Promise; /** * Performs a reverse DNS query that resolves an IPv4 or IPv6 address to an array of host names using a specific provider. * @param ip IPv4 or IPv6 address to reverse resolve. * @param provider The DNS provider to use for resolution. */ reverse(ip: string, provider: ProviderName): Promise; reverse(ip: string, options: SelectedProviderOptions): Promise; reverse(ip: string, options: PositionalProviderOptions): Promise; reverse(ip: string, options: PositionalProviderOptions, provider: ProviderName): Promise; } export {};