import { DnsRecord } from "../records"; export declare type BooleanToBit = { [K in keyof T]: T[K] extends boolean ? number : T[K]; }; export declare const QueryTypes: { A: number; NS: number; MD: number; MF: number; CNAME: number; SOA: number; MB: number; MG: number; MR: number; NULL: number; WKS: number; PTR: number; HINFO: number; MINFO: number; MX: number; TXT: number; AAAA: number; SRV: number; AXFR: number; MAILA: number; MAILB: number; ANY: number; OPT: number; }; export declare const InverseQueryMap: any; export declare type QueryType = keyof typeof QueryTypes; export declare enum QueryResponseFlag { Query = 0, Response = 1 } /** * OPCODE */ export declare enum OperationCode { StandardQuery = 0, ServerStatus = 2, Notify = 4, Update = 5, DSO = 6 } /** * RCODE */ export declare enum ResponseCode { Okay = 0, FormatError = 1, ServerFailure = 2, NotFound = 3, NotImplemented = 4, Refused = 5, YXDomain = 6, YXRRSet = 7, NXRRSet = 8, NotAuthority = 9, NotInZone = 10, BadSig = 16, BadKey = 17, BadTime = 18, BadMode = 19, BadName = 20, BadAlgorithm = 21, BadTruncation = 22, BadCookie = 23 } export declare enum DnsClass { Internet = 1 } export interface DnsQuestion { name: string; type: QueryType; } export interface DnsResourceRecord { name: string; class: DnsClass; type: QueryType; data: any; ttl: number; } export interface DnsAnswer extends DnsResourceRecord { data: T; } export interface DnsMessage { id: number; operationCode: OperationCode; /** * QR flag */ queryResponse: QueryResponseFlag; /** * AA flag */ authoritativeAnswer: boolean; /** * TC flag */ truncation: boolean; /** * RD flag */ recursionDesired: boolean; /** * RA flag */ recursionAvailable: boolean; /** * AD flag */ authenticatedData: boolean; /** * CD flag */ checkingDisabled: boolean; responseCode: ResponseCode; questions?: DnsQuestion[]; answers?: DnsAnswer[]; authorities?: DnsResourceRecord[]; additional?: DnsResourceRecord[]; } export interface DnsQueryMessage extends DnsMessage { queryResponse: QueryResponseFlag.Query; } export interface DnsResponseMessage extends DnsMessage { queryResponse: QueryResponseFlag.Response; } export interface DnsMessageWithCounts extends DnsMessage { questionCount: number; answerCount: number; nameserverCount: number; additionalRecordCount: number; }