export declare type Hostname = string;
export declare type Address = string;
export declare type Family = 4 | 6 | 0;
export declare type Service = string;
export declare namespace Record {
    interface WithTtl {
        address: Address;
        ttl: number;
    }
    type Simple = string;
    type MaybeTtl = Simple | WithTtl;
    interface Mx {
        priority: number;
        exchange: string;
    }
    interface Naptr {
        order: number;
        preference: number;
        flags: string;
        service: string;
        regexp: string;
        replacement: string;
    }
    type Txt = string[];
    interface Soa {
        nsname: Hostname;
        hostmaster: Hostname;
        serial: number;
        refresh: number;
        retry: number;
        expire: number;
        minttl: number;
    }
    interface Srv {
        priority: number;
        weight: number;
        port: number;
        name: Hostname;
    }
    type Any = Txt | Srv | Soa | Naptr | Mx | Simple | WithTtl | MaybeTtl;
    namespace recordtype {
        type A = "A";
        type AAAA = "AAAA";
        type ANY = "ANY";
        type CNAME = "CNAME";
        type MX = "MX";
        type NAPTR = "NAPTR";
        type SOA = "SOA";
        type SRV = "SRV";
        type TXT = "TXT";
        type PTR = "PTR";
        type NS = "NS";
        type ALike = A | AAAA;
        type Any = A | AAAA | ANY | CNAME | MX | NAPTR | SOA | SRV | TXT | PTR;
        type Simple = ALike | CNAME | PTR | NS;
    }
    type Typed<T extends recordtype.Any> = T extends recordtype.ALike ? MaybeTtl : T extends recordtype.Simple ? Simple : T extends recordtype.MX ? Mx : T extends recordtype.NAPTR ? Naptr : T extends recordtype.SOA ? Soa : T extends recordtype.SRV ? Srv : T extends recordtype.TXT ? Txt : T extends recordtype.ANY ? Any : never;
}
export interface ResolveAnswer<T extends Record.recordtype.Any> {
    name: string;
    rrtype: T;
    ttl: number;
    data: string;
}
//# sourceMappingURL=Record.d.ts.map