import type dgram from 'node:dgram'; import { type AnsiLogger } from 'node-ansi-logger'; import { Multicast } from './multicast.js'; export declare enum DnsRecordType { A = 1, NS = 2, MD = 3, MF = 4, CNAME = 5, SOA = 6, MB = 7, MG = 8, MR = 9, NULL = 10, WKS = 11, PTR = 12, HINFO = 13, MINFO = 14, MX = 15, TXT = 16, RP = 17, AFSDB = 18, X25 = 19, ISDN = 20, RT = 21, NSAP = 22, NSAP_PTR = 23, SIG = 24, KEY = 25, PX = 26, GPOS = 27, AAAA = 28, LOC = 29, NXT = 30, EID = 31, NIMLOC = 32, SRV = 33, ATMA = 34, NAPTR = 35, KX = 36, CERT = 37, A6 = 38, DNAME = 39, SINK = 40, OPT = 41, APL = 42, DS = 43, SSHFP = 44, IPSECKEY = 45, RRSIG = 46, NSEC = 47, DNSKEY = 48, DHCID = 49, NSEC3 = 50, NSEC3PARAM = 51, TLSA = 52, SMIMEA = 53, HIP = 55, NINFO = 56, RKEY = 57, TALINK = 58, CDS = 59, CDNSKEY = 60, OPENPGPKEY = 61, CSYNC = 62, ZONEMD = 63, SVCB = 64, HTTPS = 65, SPF = 99, UINFO = 100, UID = 101, GID = 102, UNSPEC = 103, NID = 104, L32 = 105, L64 = 106, LP = 107, EUI48 = 108, EUI64 = 109, TKEY = 249, TSIG = 250, IXFR = 251, AXFR = 252, MAILB = 253, MAILA = 254, ANY = 255, URI = 256, CAA = 257, AVC = 258, DOA = 259, AMTRELAY = 260, ZONEVERSION = 261, TA = 32768, DLV = 32769 } export declare enum DnsClass { IN = 1, CH = 3, HS = 4, ANY = 255 } export declare enum DnsClassFlag { FLUSH = 32768, QU = 32768 } export interface MdnsMessage { id: number; qr: number; opcode: number; aa: boolean; tc: boolean; rd: boolean; ra: boolean; z: number; rcode: number; qdCount: number; anCount: number; nsCount: number; arCount: number; questions?: DnsQuestion[]; answers?: MdnsRecord[]; authorities?: MdnsRecord[]; additionals?: MdnsRecord[]; } interface DnsQuestion { name: string; type: number; class: number; } interface MdnsRecord { name: string; type: DnsRecordType; class: DnsClass; ttl: number; data: string; } export declare function isMdns(message: Buffer): boolean; export declare function isMdnsQuery(message: Buffer): boolean; export declare function isMdnsResponse(message: Buffer): boolean; export declare class Mdns extends Multicast { deviceQueries: Map; deviceResponses: Map; filters: string[]; ipFilters: string[]; constructor(name: string, multicastAddress: string, multicastPort: number, socketType: 'udp4' | 'udp6', reuseAddr?: boolean | undefined, interfaceName?: string, interfaceAddress?: string, outgoingInterfaceAddress?: string); onQuery(rinfo: dgram.RemoteInfo, _query: MdnsMessage): void; onResponse(rinfo: dgram.RemoteInfo, _response: MdnsMessage): void; onMessage(msg: Buffer, rinfo: dgram.RemoteInfo): void; decodeMdnsMessage(msg: Buffer): MdnsMessage; decodeDnsName(msg: Buffer, offset: number): { name: string; newOffset: number; }; encodeDnsName(name: string): Buffer; encodeTxtRdata(txt: string[]): Buffer; encodeSrvRdata(priority: number, weight: number, port: number, target: string): Buffer; encodeA(ipv4: string): Buffer; encodeAAAA(ipv6WithOptionalScope: string): Buffer; decodeResourceRecord(msg: Buffer, offset: number): { record: MdnsRecord; newOffset: number; }; sendQuery(questions: { name: string; type: number; class: number; unicastResponse?: boolean; }[]): Buffer; sendResponse(answers: { name: string; rtype: number; rclass: number; ttl: number; rdata: Buffer; }[]): Buffer; dnsTypeToString(type: number): string; dnsResponseClassToString(cls: number): string; dnsQuestionClassToString(cls: number): string; logMdnsMessage(msg: MdnsMessage, log?: AnsiLogger, text?: string): void; logDevices(): void; } export {};