-- |
-- Module      : Net.DNSBase.Internal.RRTYPE
-- Description : TBD
-- Copyright   : (c) Viktor Dukhovni, 2026
-- License     : BSD-3-Clause
-- Maintainer  : ietf-dane@dukhovni.org
-- Stability   : unstable
{-# LANGUAGE ExplicitNamespaces #-}

module Net.DNSBase.Internal.RRTYPE
    ( -- * DNS RRTYPE numbers
      RRTYPE ( ..
             , A
             , NS
             , MD
             , MF
             , CNAME
             , SOA
             , MB
             , MG
             , MR
             , NULL
             , WKS
             , PTR
             , HINFO
             , MINFO
             , MX
             , TXT
             , RP
             , AFSDB
             , X25
             , ISDN
             , RT
             , NSAP
             , NSAPPTR
             , SIG
             , KEY
             , PX
             , GPOS
             , AAAA
             , LOC
             , NXT
             , EID
             , NIMLOC
             , SRV
             , ATMA
             , NAPTR
             , KX
             , CERT
             , A6
             , DNAME
             , SINK
             , OPT
             , APL
             , DS
             , SSHFP
             , IPSECKEY
             , RRSIG
             , NSEC
             , DNSKEY
             , DHCID
             , NSEC3
             , NSEC3PARAM
             , TLSA
             , SMIMEA
             , HIP
             , NINFO
             , RKEY
             , TALINK
             , CDS
             , CDNSKEY
             , OPENPGPKEY
             , CSYNC
             , ZONEMD
             , SVCB
             , HTTPS
             , DSYNC
             , HHIT
             , BRID
             , NID
             , L32
             , L64
             , LP
             , NXNAME
             , IXFR
             , AXFR
             , MAILB
             , MAILA
             , ANY
             , CAA
             , AMTRELAY
             , RESINFO
             , WALLET
             , CLA
             , IPN
             )
    -- ** Associated type-level naturals
    , type N_a
    , type N_ns
    , type N_md
    , type N_mf
    , type N_cname
    , type N_soa
    , type N_mb
    , type N_mg
    , type N_mr
    , type N_null
    , type N_wks
    , type N_ptr
    , type N_hinfo
    , type N_minfo
    , type N_mx
    , type N_txt
    , type N_rp
    , type N_afsdb
    , type N_x25
    , type N_isdn
    , type N_rt
    , type N_nsap
    , type N_nsapptr
    , type N_sig
    , type N_key
    , type N_px
    , type N_gpos
    , type N_aaaa
    , type N_loc
    , type N_nxt
    , type N_eid
    , type N_nimloc
    , type N_srv
    , type N_atma
    , type N_naptr
    , type N_kx
    , type N_cert
    , type N_a6
    , type N_dname
    , type N_sink
    , type N_opt
    , type N_apl
    , type N_ds
    , type N_sshfp
    , type N_ipseckey
    , type N_rrsig
    , type N_nsec
    , type N_dnskey
    , type N_dhcid
    , type N_nsec3
    , type N_nsec3param
    , type N_tlsa
    , type N_smimea
    , type N_hip
    , type N_ninfo
    , type N_rkey
    , type N_talink
    , type N_cds
    , type N_cdnskey
    , type N_openpgpkey
    , type N_csync
    , type N_zonemd
    , type N_svcb
    , type N_https
    , type N_dsync
    , type N_hhit
    , type N_brid
    , type N_nid
    , type N_l32
    , type N_l64
    , type N_lp
    , type N_nxname
    , type N_ixfr
    , type N_axfr
    , type N_mailb
    , type N_maila
    , type N_any
    , type N_caa
    , type N_amtrelay
    , type N_resinfo
    , type N_wallet
    , type N_cla
    , type N_ipn
    -- Internal
    , rrtypeMax
    ) where

import Net.DNSBase.Internal.Nat16
import Net.DNSBase.Internal.Present
import Net.DNSBase.Internal.Util

-- | DNS Resource Record type numbers.  The 'Presentable' instance
-- displays the standard presentation form of the type name for
-- known types, or else @TYPEnnnnn@ for a generic type number
-- @nnnnn@.
--
newtype RRTYPE = RRTYPE Word16
    deriving newtype ( RRTYPE -> RRTYPE -> Bool
(RRTYPE -> RRTYPE -> Bool)
-> (RRTYPE -> RRTYPE -> Bool) -> Eq RRTYPE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: RRTYPE -> RRTYPE -> Bool
== :: RRTYPE -> RRTYPE -> Bool
$c/= :: RRTYPE -> RRTYPE -> Bool
/= :: RRTYPE -> RRTYPE -> Bool
Eq, Eq RRTYPE
Eq RRTYPE =>
(RRTYPE -> RRTYPE -> Ordering)
-> (RRTYPE -> RRTYPE -> Bool)
-> (RRTYPE -> RRTYPE -> Bool)
-> (RRTYPE -> RRTYPE -> Bool)
-> (RRTYPE -> RRTYPE -> Bool)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> Ord RRTYPE
RRTYPE -> RRTYPE -> Bool
RRTYPE -> RRTYPE -> Ordering
RRTYPE -> RRTYPE -> RRTYPE
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: RRTYPE -> RRTYPE -> Ordering
compare :: RRTYPE -> RRTYPE -> Ordering
$c< :: RRTYPE -> RRTYPE -> Bool
< :: RRTYPE -> RRTYPE -> Bool
$c<= :: RRTYPE -> RRTYPE -> Bool
<= :: RRTYPE -> RRTYPE -> Bool
$c> :: RRTYPE -> RRTYPE -> Bool
> :: RRTYPE -> RRTYPE -> Bool
$c>= :: RRTYPE -> RRTYPE -> Bool
>= :: RRTYPE -> RRTYPE -> Bool
$cmax :: RRTYPE -> RRTYPE -> RRTYPE
max :: RRTYPE -> RRTYPE -> RRTYPE
$cmin :: RRTYPE -> RRTYPE -> RRTYPE
min :: RRTYPE -> RRTYPE -> RRTYPE
Ord, Int -> RRTYPE
RRTYPE -> Int
RRTYPE -> [RRTYPE]
RRTYPE -> RRTYPE
RRTYPE -> RRTYPE -> [RRTYPE]
RRTYPE -> RRTYPE -> RRTYPE -> [RRTYPE]
(RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE)
-> (Int -> RRTYPE)
-> (RRTYPE -> Int)
-> (RRTYPE -> [RRTYPE])
-> (RRTYPE -> RRTYPE -> [RRTYPE])
-> (RRTYPE -> RRTYPE -> [RRTYPE])
-> (RRTYPE -> RRTYPE -> RRTYPE -> [RRTYPE])
-> Enum RRTYPE
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: RRTYPE -> RRTYPE
succ :: RRTYPE -> RRTYPE
$cpred :: RRTYPE -> RRTYPE
pred :: RRTYPE -> RRTYPE
$ctoEnum :: Int -> RRTYPE
toEnum :: Int -> RRTYPE
$cfromEnum :: RRTYPE -> Int
fromEnum :: RRTYPE -> Int
$cenumFrom :: RRTYPE -> [RRTYPE]
enumFrom :: RRTYPE -> [RRTYPE]
$cenumFromThen :: RRTYPE -> RRTYPE -> [RRTYPE]
enumFromThen :: RRTYPE -> RRTYPE -> [RRTYPE]
$cenumFromTo :: RRTYPE -> RRTYPE -> [RRTYPE]
enumFromTo :: RRTYPE -> RRTYPE -> [RRTYPE]
$cenumFromThenTo :: RRTYPE -> RRTYPE -> RRTYPE -> [RRTYPE]
enumFromThenTo :: RRTYPE -> RRTYPE -> RRTYPE -> [RRTYPE]
Enum, RRTYPE
RRTYPE -> RRTYPE -> Bounded RRTYPE
forall a. a -> a -> Bounded a
$cminBound :: RRTYPE
minBound :: RRTYPE
$cmaxBound :: RRTYPE
maxBound :: RRTYPE
Bounded, Integer -> RRTYPE
RRTYPE -> RRTYPE
RRTYPE -> RRTYPE -> RRTYPE
(RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE)
-> (Integer -> RRTYPE)
-> Num RRTYPE
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: RRTYPE -> RRTYPE -> RRTYPE
+ :: RRTYPE -> RRTYPE -> RRTYPE
$c- :: RRTYPE -> RRTYPE -> RRTYPE
- :: RRTYPE -> RRTYPE -> RRTYPE
$c* :: RRTYPE -> RRTYPE -> RRTYPE
* :: RRTYPE -> RRTYPE -> RRTYPE
$cnegate :: RRTYPE -> RRTYPE
negate :: RRTYPE -> RRTYPE
$cabs :: RRTYPE -> RRTYPE
abs :: RRTYPE -> RRTYPE
$csignum :: RRTYPE -> RRTYPE
signum :: RRTYPE -> RRTYPE
$cfromInteger :: Integer -> RRTYPE
fromInteger :: Integer -> RRTYPE
Num, Num RRTYPE
Ord RRTYPE
(Num RRTYPE, Ord RRTYPE) => (RRTYPE -> Rational) -> Real RRTYPE
RRTYPE -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: RRTYPE -> Rational
toRational :: RRTYPE -> Rational
Real, Enum RRTYPE
Real RRTYPE
(Real RRTYPE, Enum RRTYPE) =>
(RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> RRTYPE)
-> (RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE))
-> (RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE))
-> (RRTYPE -> Integer)
-> Integral RRTYPE
RRTYPE -> Integer
RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE)
RRTYPE -> RRTYPE -> RRTYPE
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: RRTYPE -> RRTYPE -> RRTYPE
quot :: RRTYPE -> RRTYPE -> RRTYPE
$crem :: RRTYPE -> RRTYPE -> RRTYPE
rem :: RRTYPE -> RRTYPE -> RRTYPE
$cdiv :: RRTYPE -> RRTYPE -> RRTYPE
div :: RRTYPE -> RRTYPE -> RRTYPE
$cmod :: RRTYPE -> RRTYPE -> RRTYPE
mod :: RRTYPE -> RRTYPE -> RRTYPE
$cquotRem :: RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE)
quotRem :: RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE)
$cdivMod :: RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE)
divMod :: RRTYPE -> RRTYPE -> (RRTYPE, RRTYPE)
$ctoInteger :: RRTYPE -> Integer
toInteger :: RRTYPE -> Integer
Integral, Int -> RRTYPE -> ShowS
[RRTYPE] -> ShowS
RRTYPE -> String
(Int -> RRTYPE -> ShowS)
-> (RRTYPE -> String) -> ([RRTYPE] -> ShowS) -> Show RRTYPE
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> RRTYPE -> ShowS
showsPrec :: Int -> RRTYPE -> ShowS
$cshow :: RRTYPE -> String
show :: RRTYPE -> String
$cshowList :: [RRTYPE] -> ShowS
showList :: [RRTYPE] -> ShowS
Show, ReadPrec [RRTYPE]
ReadPrec RRTYPE
Int -> ReadS RRTYPE
ReadS [RRTYPE]
(Int -> ReadS RRTYPE)
-> ReadS [RRTYPE]
-> ReadPrec RRTYPE
-> ReadPrec [RRTYPE]
-> Read RRTYPE
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS RRTYPE
readsPrec :: Int -> ReadS RRTYPE
$creadList :: ReadS [RRTYPE]
readList :: ReadS [RRTYPE]
$creadPrec :: ReadPrec RRTYPE
readPrec :: ReadPrec RRTYPE
$creadListPrec :: ReadPrec [RRTYPE]
readListPrec :: ReadPrec [RRTYPE]
Read )

instance Presentable RRTYPE where
    present :: RRTYPE -> Builder -> Builder
present RRTYPE
A            = forall a. Presentable a => a -> Builder -> Builder
present @String String
"A"
    present RRTYPE
NS           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NS"
    present RRTYPE
MD           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MD"
    present RRTYPE
MF           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MF"
    present RRTYPE
CNAME        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CNAME"
    present RRTYPE
SOA          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SOA"
    present RRTYPE
MB           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MB"
    present RRTYPE
MG           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MG"
    present RRTYPE
MR           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MR"
    present RRTYPE
NULL         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NULL"
    present RRTYPE
WKS          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"WKS"
    present RRTYPE
PTR          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"PTR"
    present RRTYPE
HINFO        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"HINFO"
    present RRTYPE
MINFO        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MINFO"
    present RRTYPE
MX           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"MX"
    present RRTYPE
TXT          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"TXT"
    present RRTYPE
RP           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"RP"
    present RRTYPE
AFSDB        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"AFSDB"
    present RRTYPE
X25          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"X25"
    present RRTYPE
ISDN         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"ISDN"
    present RRTYPE
RT           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"RT"
    present RRTYPE
NSAP         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NSAP"
    present RRTYPE
NSAPPTR      = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NSAP-PTR"
    present RRTYPE
SIG          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SIG"
    present RRTYPE
KEY          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"KEY"
    present RRTYPE
PX           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"PX"
    present RRTYPE
GPOS         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"GPOS"
    present RRTYPE
AAAA         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"AAAA"
    present RRTYPE
LOC          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"LOC"
    present RRTYPE
NXT          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NXT"
    present RRTYPE
EID          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"EID"
    present RRTYPE
NIMLOC       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NIMLOC"
    present RRTYPE
SRV          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SRV"
    present RRTYPE
ATMA         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"ATMA"
    present RRTYPE
NAPTR        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NAPTR"
    present RRTYPE
KX           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"KX"
    present RRTYPE
CERT         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CERT"
    present RRTYPE
A6           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"A6"
    present RRTYPE
DNAME        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"DNAME"
    present RRTYPE
SINK         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SINK"
    present RRTYPE
OPT          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"OPT"
    present RRTYPE
APL          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"APL"
    present RRTYPE
DS           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"DS"
    present RRTYPE
SSHFP        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SSHFP"
    present RRTYPE
IPSECKEY     = forall a. Presentable a => a -> Builder -> Builder
present @String String
"IPSECKEY"
    present RRTYPE
RRSIG        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"RRSIG"
    present RRTYPE
NSEC         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NSEC"
    present RRTYPE
DNSKEY       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"DNSKEY"
    present RRTYPE
DHCID        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"DHCID"
    present RRTYPE
NSEC3        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NSEC3"
    present RRTYPE
NSEC3PARAM   = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NSEC3PARAM"
    present RRTYPE
TLSA         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"TLSA"
    present RRTYPE
SMIMEA       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SMIMEA"
    present RRTYPE
HIP          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"HIP"
    present RRTYPE
NINFO        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NINFO"
    present RRTYPE
RKEY         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"RKEY"
    present RRTYPE
TALINK       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"TALINK"
    present RRTYPE
CDS          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CDS"
    present RRTYPE
CDNSKEY      = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CDNSKEY"
    present RRTYPE
OPENPGPKEY   = forall a. Presentable a => a -> Builder -> Builder
present @String String
"OPENPGPKEY"
    present RRTYPE
CSYNC        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CSYNC"
    present RRTYPE
ZONEMD       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"ZONEMD"
    present RRTYPE
SVCB         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"SVCB"
    present RRTYPE
HTTPS        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"HTTPS"
    present RRTYPE
DSYNC        = forall a. Presentable a => a -> Builder -> Builder
present @String String
"DSYNC"
    present RRTYPE
HHIT         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"HHIT"
    present RRTYPE
BRID         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"BRID"
    present RRTYPE
NID          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NID"
    present RRTYPE
L32          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"L32"
    present RRTYPE
L64          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"L64"
    present RRTYPE
LP           = forall a. Presentable a => a -> Builder -> Builder
present @String String
"LP"
    present RRTYPE
NXNAME       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"NXNAME"
    present RRTYPE
IXFR         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"IXFR"
    present RRTYPE
AXFR         = forall a. Presentable a => a -> Builder -> Builder
present @String String
"AXFR"
    present RRTYPE
ANY          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"ANY"
    present RRTYPE
CAA          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CAA"
    present RRTYPE
AMTRELAY     = forall a. Presentable a => a -> Builder -> Builder
present @String String
"AMTRELAY"
    present RRTYPE
RESINFO      = forall a. Presentable a => a -> Builder -> Builder
present @String String
"RESINFO"
    present RRTYPE
WALLET       = forall a. Presentable a => a -> Builder -> Builder
present @String String
"WALLET"
    present RRTYPE
CLA          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"CLA"
    present RRTYPE
IPN          = forall a. Presentable a => a -> Builder -> Builder
present @String String
"IPN"
    present (RRTYPE Word16
ty)  = forall a. Presentable a => a -> Builder -> Builder
present @String String
"TYPE" (Builder -> Builder) -> (Builder -> Builder) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word16 -> Builder -> Builder
forall a. Presentable a => a -> Builder -> Builder
present Word16
ty

-- | [IP4 address](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern A           :: RRTYPE;      pattern $mA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bA :: RRTYPE
A           = RRTYPE 1
type N_a            :: Nat;         type N_a                   = 1

-- | [Authoritative name server](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern NS          :: RRTYPE;      pattern $mNS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNS :: RRTYPE
NS          = RRTYPE 2
type N_ns           :: Nat;         type N_ns                  = 2

-- | [Mail destination (Obsolete - use MX)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MD          :: RRTYPE;      pattern $mMD :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMD :: RRTYPE
MD          = RRTYPE 3
type N_md           :: Nat;         type N_md                  = 3

-- | [Mail forwarder (Obsolete - use MX)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MF          :: RRTYPE;      pattern $mMF :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMF :: RRTYPE
MF          = RRTYPE 4
type N_mf           :: Nat;         type N_mf                  = 4

-- | [Canonical name for an alias](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern CNAME       :: RRTYPE;      pattern $mCNAME :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCNAME :: RRTYPE
CNAME       = RRTYPE 5
type N_cname        :: Nat;         type N_cname               = 5

-- | [Start of a zone of authority](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern SOA         :: RRTYPE;      pattern $mSOA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSOA :: RRTYPE
SOA         = RRTYPE 6
type N_soa          :: Nat;         type N_soa                 = 6

-- | [Mailbox domain name (EXPERIMENTAL)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MB          :: RRTYPE;      pattern $mMB :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMB :: RRTYPE
MB          = RRTYPE 7
type N_mb           :: Nat;         type N_mb                  = 7

-- | [Mail group member (EXPERIMENTAL)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MG          :: RRTYPE;      pattern $mMG :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMG :: RRTYPE
MG          = RRTYPE 8
type N_mg           :: Nat;         type N_mg                  = 8

-- | [Mail rename domain name (EXPERIMENTAL)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MR          :: RRTYPE;      pattern $mMR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMR :: RRTYPE
MR          = RRTYPE 9
type N_mr           :: Nat;         type N_mr                  = 9

-- | [Null RR (EXPERIMENTAL)](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern NULL        :: RRTYPE;      pattern $mNULL :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNULL :: RRTYPE
NULL        = RRTYPE 10
type N_null         :: Nat;         type N_null                = 10

-- | [Well known service description](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern WKS         :: RRTYPE;      pattern $mWKS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bWKS :: RRTYPE
WKS         = RRTYPE 11
type N_wks          :: Nat;         type N_wks                 = 11

-- | [Domain name pointer](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern PTR         :: RRTYPE;      pattern $mPTR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bPTR :: RRTYPE
PTR         = RRTYPE 12
type N_ptr          :: Nat;         type N_ptr                 = 12

-- | [Host information](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern HINFO       :: RRTYPE;      pattern $mHINFO :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bHINFO :: RRTYPE
HINFO       = RRTYPE 13
type N_hinfo        :: Nat;         type N_hinfo               = 13

-- | [mailbox information (EXPERIMENTAL)(https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MINFO       :: RRTYPE;      pattern $mMINFO :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMINFO :: RRTYPE
MINFO       = RRTYPE 14
type N_minfo        :: Nat;         type N_minfo               = 14

-- | [Mail exchange](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern MX          :: RRTYPE;      pattern $mMX :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMX :: RRTYPE
MX          = RRTYPE 15
type N_mx           :: Nat;         type N_mx                  = 15

-- | [Text strings](https://tools.ietf.org/html/rfc1035#section-3.2.2).
pattern TXT         :: RRTYPE;      pattern $mTXT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bTXT :: RRTYPE
TXT         = RRTYPE 16
type N_txt          :: Nat;         type N_txt                 = 16

-- | [Responsible Person](https://www.rfc-editor.org/rfc/rfc1183.html#section-2.2)
pattern RP          :: RRTYPE;      pattern $mRP :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bRP :: RRTYPE
RP          = RRTYPE 17
type N_rp           :: Nat;         type N_rp                  = 17

-- | [AFS Data Base location](https://tools.ietf.org/html/rfc1183#section-1),
pattern AFSDB       :: RRTYPE;      pattern $mAFSDB :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bAFSDB :: RRTYPE
AFSDB       = RRTYPE 18
type N_afsdb        :: Nat;         type N_afsdb               = 18

-- | [X.25 PSDN address](https://www.rfc-editor.org/rfc/rfc1183.html#section-3.1).
pattern X25         :: RRTYPE;      pattern $mX25 :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bX25 :: RRTYPE
X25         = RRTYPE 19
type N_x25          :: Nat;         type N_x25                 = 19

-- | [ISDN address](https://www.rfc-editor.org/rfc/rfc1183.html#section-3.2).
pattern ISDN        :: RRTYPE;      pattern $mISDN :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bISDN :: RRTYPE
ISDN        = RRTYPE 20
type N_isdn         :: Nat;         type N_isdn                = 20

-- | [Route Through](https://www.rfc-editor.org/rfc/rfc1183.html#section-3.3).
pattern RT          :: RRTYPE;      pattern $mRT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bRT :: RRTYPE
RT          = RRTYPE 21
type N_rt           :: Nat;         type N_rt                  = 21

-- | [NSAP style address](https://www.rfc-editor.org/rfc/rfc1706.html#section-5).
-- [DEPRECATED](https://datatracker.ietf.org/doc/status-change-int-tlds-to-historic/)
pattern NSAP        :: RRTYPE;      pattern $mNSAP :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNSAP :: RRTYPE
NSAP        = RRTYPE 22
type N_nsap         :: Nat;         type N_nsap                = 22

-- | [NSAP style PTR](https://www.rfc-editor.org/rfc/rfc1706.html#section-6).
-- [DEPRECATED](https://datatracker.ietf.org/doc/status-change-int-tlds-to-historic/)
pattern NSAPPTR     :: RRTYPE;      pattern $mNSAPPTR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNSAPPTR :: RRTYPE
NSAPPTR     = RRTYPE 23
type N_nsapptr      :: Nat;         type N_nsapptr             = 23

-- | [Security Signature](https://www.rfc-editor.org/rfc/rfc2535#section-4.1).
pattern SIG         :: RRTYPE;      pattern $mSIG :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSIG :: RRTYPE
SIG         = RRTYPE 24
type N_sig          :: Nat;         type N_sig                 = 24

-- | [Security Key](https://www.rfc-editor.org/rfc/rfc2535#section-3.1).
pattern KEY         :: RRTYPE;      pattern $mKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bKEY :: RRTYPE
KEY         = RRTYPE 25
type N_key          :: Nat;         type N_key                 = 25

-- | [X.400 mail mapping information](https://www.rfc-editor.org/rfc/rfc2163.html#section-4).
pattern PX          :: RRTYPE;      pattern $mPX :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bPX :: RRTYPE
PX          = RRTYPE 26
type N_px           :: Nat;         type N_px                  = 26

-- | [Geographical Position](https://www.rfc-editor.org/rfc/rfc1712.html#section-3).
pattern GPOS        :: RRTYPE;      pattern $mGPOS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bGPOS :: RRTYPE
GPOS        = RRTYPE 27
type N_gpos         :: Nat;         type N_gpos                = 27

-- | [IP6 Address](https://tools.ietf.org/html/rfc3596#section-2.1).
pattern AAAA        :: RRTYPE;      pattern $mAAAA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bAAAA :: RRTYPE
AAAA        = RRTYPE 28
type N_aaaa         :: Nat;         type N_aaaa                = 28

-- | [Location Information](https://www.rfc-editor.org/rfc/rfc1876.html#section-1).
-- Not implemented:
pattern LOC         :: RRTYPE;      pattern $mLOC :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bLOC :: RRTYPE
LOC         = RRTYPE 29
type N_loc          :: Nat;         type N_loc                 = 29

-- | [Next Domain](https://www.rfc-editor.org/rfc/rfc2535.html#section-5.1).
pattern NXT         :: RRTYPE;      pattern $mNXT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNXT :: RRTYPE
NXT         = RRTYPE 30
type N_nxt          :: Nat;         type N_nxt                 = 30

-- | [Endpoint Identifier](http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt).
-- Not implemented.
--
-- >                                  1  1  1  1  1  1
-- >    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-- > /                       RDATA                   /
-- > /                                               /
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--
-- *  RDATA: a string of octets containing the Endpoint Identifier.
--    The value is the binary encoding of the Identifier, meaningful
--    only to the system utilizing it.
--
pattern EID         :: RRTYPE;      pattern $mEID :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bEID :: RRTYPE
EID         = RRTYPE 31
type N_eid          :: Nat;         type N_eid                 = 31

-- | [Nimrod Locator](http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt).
-- Not implemented
--
-- >                                  1  1  1  1  1  1
-- >    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-- > /                       RDATA                   /
-- > /                                               /
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--
-- *  RDATA: a variable length string of octets containing the Nimrod
--    Locator.  The value is the binary encoding of the Locator
--    specified in the Nimrod protocol[[[ref to be supplied]]].
--
pattern NIMLOC      :: RRTYPE;      pattern $mNIMLOC :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNIMLOC :: RRTYPE
NIMLOC      = RRTYPE 32
type N_nimloc       :: Nat;         type N_nimloc              = 32

-- | [Server Selection](https://datatracker.ietf.org/doc/html/rfc2782#page-9).
pattern SRV         :: RRTYPE;      pattern $mSRV :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSRV :: RRTYPE
SRV         = RRTYPE 33
type N_srv          :: Nat;         type N_srv                 = 33

-- | [ATM Address](https://www.broadband-forum.org/download/af-dans-0152.000.pdf)
-- Not implemented.
--
-- >                                  1  1  1  1  1  1
-- >    0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
-- > |          FORMAT       |                       |
-- > +--+--+--+--+--+--+--+--+                       |
-- > /                    ADDRESS                    /
-- > |                                               |
-- > +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
--
-- * FORMAT: One octet that indicates the format of ADDRESS. The two possible
--   values for FORMAT are value 0 indicating ATM End System Address (AESA)
--   format and value 1 indicating E.164 format.
-- * ADDRESS: Variable length string of octets containing the ATM address of
--   the node to which this RR pertains.
--
pattern ATMA        :: RRTYPE;      pattern $mATMA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bATMA :: RRTYPE
ATMA        = RRTYPE 34
type N_atma         :: Nat;         type N_atma                = 34

-- | [Naming Authority Pointer](https://www.rfc-editor.org/rfc/rfc3403.html#section-4)
pattern NAPTR       :: RRTYPE;      pattern $mNAPTR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNAPTR :: RRTYPE
NAPTR       = RRTYPE 35
type N_naptr        :: Nat;         type N_naptr               = 35

-- | [Key Exchanger](https://www.rfc-editor.org/rfc/rfc2230.html#section-2)
pattern KX          :: RRTYPE;      pattern $mKX :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bKX :: RRTYPE
KX          = RRTYPE 36
type N_kx           :: Nat;         type N_kx                  = 36

-- | [Cerificate](https://www.rfc-editor.org/rfc/rfc4398.html#section-2)
-- Not implemented.
pattern CERT        :: RRTYPE;      pattern $mCERT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCERT :: RRTYPE
CERT        = RRTYPE 37
type N_cert         :: Nat;         type N_cert                = 37

-- | [A6](https://www.rfc-editor.org/rfc/rfc2874.html#section-3.1).
pattern A6          :: RRTYPE;      pattern $mA6 :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bA6 :: RRTYPE
A6          = RRTYPE 38
type N_a6           :: Nat;         type N_a6                  = 38

-- | [Name redirection](https://tools.ietf.org/html/rfc6672#section-2.1).
pattern DNAME       :: RRTYPE;      pattern $mDNAME :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bDNAME :: RRTYPE
DNAME       = RRTYPE 39
type N_dname        :: Nat;         type N_dname               = 39

-- | [SINK](https://datatracker.ietf.org/doc/html/draft-eastlake-kitchen-sink-02#section-2).
-- Not implemented.
pattern SINK        :: RRTYPE;      pattern $mSINK :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSINK :: RRTYPE
SINK        = RRTYPE 40
type N_sink         :: Nat;         type N_sink                = 40

-- | [DNS extension options](https://tools.ietf.org/html/rfc6891#section-6.1).
pattern OPT         :: RRTYPE;      pattern $mOPT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bOPT :: RRTYPE
OPT         = RRTYPE 41
type N_opt          :: Nat;         type N_opt                 = 41

-- | [Address prefix list](https://datatracker.ietf.org/doc/html/rfc3123#section-10).
-- Not implemented.
pattern APL         :: RRTYPE;      pattern $mAPL :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bAPL :: RRTYPE
APL         = RRTYPE 42
type N_apl          :: Nat;         type N_apl                 = 42

-- | [Delegation Signer](https://www.rfc-editor.org/rfc/rfc3658#section-5)
-- See [RFC4034](https://www.rfc-editor.org/rfc/rfc4034.html#section-5) for
-- protocol details.
pattern DS          :: RRTYPE;      pattern $mDS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bDS :: RRTYPE
DS          = RRTYPE 43
type N_ds           :: Nat;         type N_ds                  = 43

-- | [SSH Key fingerprint](https://www.rfc-editor.org/rfc/rfc4255.html#section-5).
pattern SSHFP       :: RRTYPE;      pattern $mSSHFP :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSSHFP :: RRTYPE
SSHFP       = RRTYPE 44
type N_sshfp        :: Nat;         type N_sshfp               = 44

-- | [IPSEC KEY](https://www.rfc-editor.org/rfc/rfc4255.html#section-5).
pattern IPSECKEY    :: RRTYPE;      pattern $mIPSECKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bIPSECKEY :: RRTYPE
IPSECKEY    = RRTYPE 45
type N_ipseckey     :: Nat;         type N_ipseckey            = 45

-- | [RRSIG](https://www.rfc-editor.org/rfc/rfc3755#section-4.1)
-- See [RFC4034](https://www.rfc-editor.org/rfc/rfc4034.html#section-3)
-- for protocol details.
pattern RRSIG       :: RRTYPE;      pattern $mRRSIG :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bRRSIG :: RRTYPE
RRSIG       = RRTYPE 46
type N_rrsig        :: Nat;         type N_rrsig               = 46

-- | [NSEC](https://www.rfc-editor.org/rfc/rfc3755#section-4.1)
-- See [RFC4034](https://www.rfc-editor.org/rfc/rfc4034.html#section-4)
-- for protocol details.
pattern NSEC        :: RRTYPE;      pattern $mNSEC :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNSEC :: RRTYPE
NSEC        = RRTYPE 47
type N_nsec         :: Nat;         type N_nsec                = 47

-- | [DNSKEY](https://www.rfc-editor.org/rfc/rfc3755#section-4.1)
-- See [RFC4034](https://www.rfc-editor.org/rfc/rfc4034.html#section-2)
-- for protocol details.
pattern DNSKEY      :: RRTYPE;      pattern $mDNSKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bDNSKEY :: RRTYPE
DNSKEY      = RRTYPE 48
type N_dnskey       :: Nat;         type N_dnskey              = 48

-- | [DHCP Information](https://datatracker.ietf.org/doc/html/rfc4701#section-7)
-- Not implemented.
pattern DHCID       :: RRTYPE;      pattern $mDHCID :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bDHCID :: RRTYPE
DHCID       = RRTYPE 49
type N_dhcid        :: Nat;         type N_dhcid               = 49

-- | [Hashed authenticated denial of existence](https://www.rfc-editor.org/rfc/rfc5155.html#section-11)
pattern NSEC3       :: RRTYPE;      pattern $mNSEC3 :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNSEC3 :: RRTYPE
NSEC3       = RRTYPE 50
type N_nsec3        :: Nat;         type N_nsec3               = 50

-- | [NSEC3PARAM](https://www.rfc-editor.org/rfc/rfc5155.html#section-4).
pattern NSEC3PARAM  :: RRTYPE;      pattern $mNSEC3PARAM :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNSEC3PARAM :: RRTYPE
NSEC3PARAM  = RRTYPE 51
type N_nsec3param   :: Nat;         type N_nsec3param          = 51

-- | [DANE TLSA](https://www.rfc-editor.org/rfc/rfc6698.html#section-7).
pattern TLSA        :: RRTYPE;      pattern $mTLSA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bTLSA :: RRTYPE
TLSA        = RRTYPE 52
type N_tlsa         :: Nat;         type N_tlsa                = 52

-- | [DANE SMIMEA](https://www.rfc-editor.org/rfc/rfc8162.html#section-8).
pattern SMIMEA      :: RRTYPE;      pattern $mSMIMEA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSMIMEA :: RRTYPE
SMIMEA      = RRTYPE 53
type N_smimea       :: Nat;         type N_smimea              = 53

-- | [Host Identity Protocol](https://datatracker.ietf.org/doc/html/rfc8005#section-9).
-- Not implemented.
pattern HIP         :: RRTYPE;      pattern $mHIP :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bHIP :: RRTYPE
HIP         = RRTYPE 55
type N_hip          :: Nat;         type N_hip                 = 55

-- | [Zone status information](https://www.iana.org/assignments/dns-parameters/NINFO/ninfo-completed-template)
-- Not implemented.
pattern NINFO       :: RRTYPE;      pattern $mNINFO :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNINFO :: RRTYPE
NINFO       = RRTYPE 56
type N_ninfo        :: Nat;         type N_ninfo               = 56

-- | [RKEY] (https://datatracker.ietf.org/doc/html/draft-reid-dnsext-rkey-00#rfc.section.3)
-- Not implemented
pattern RKEY        :: RRTYPE;      pattern $mRKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bRKEY :: RRTYPE
RKEY        = RRTYPE 57
type N_rkey         :: Nat;         type N_rkey                = 57

-- | [Trust Anchor LINK](https://datatracker.ietf.org/doc/html/draft-wijngaards-dnsop-trust-history-02)
-- Not implemented.
pattern TALINK      :: RRTYPE;      pattern $mTALINK :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bTALINK :: RRTYPE
TALINK      = RRTYPE 58
type N_talink       :: Nat;         type N_talink              = 58

-- | [Child DS](https://www.rfc-editor.org/rfc/rfc7344.html#section-7).
-- The CDS RRSet expresses what the Child would like the DS RRSet to look like.
pattern CDS         :: RRTYPE;      pattern $mCDS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCDS :: RRTYPE
CDS         = RRTYPE 59
type N_cds          :: Nat;         type N_cds                 = 59

-- | [Child DNSKEY](https://www.rfc-editor.org/rfc/rfc7344.html#section-7).
-- DNSKEY(s) the Child wants reflected in DS.
pattern CDNSKEY     :: RRTYPE;      pattern $mCDNSKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCDNSKEY :: RRTYPE
CDNSKEY     = RRTYPE 60
type N_cdnskey      :: Nat;         type N_cdnskey             = 60

-- | [OPENPGP Key](https://www.rfc-editor.org/rfc/rfc7929.html#section-8.1).
pattern OPENPGPKEY  :: RRTYPE;      pattern $mOPENPGPKEY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bOPENPGPKEY :: RRTYPE
OPENPGPKEY  = RRTYPE 61
type N_openpgpkey   :: Nat;         type N_openpgpkey          = 61

-- | [Child-To-Parent Synchronization](https://www.rfc-editor.org/rfc/rfc7477.html#section-6)
pattern CSYNC       :: RRTYPE;      pattern $mCSYNC :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCSYNC :: RRTYPE
CSYNC       = RRTYPE 62
type N_csync        :: Nat;         type N_csync               = 62

-- | [Zone Message Digest](https://www.rfc-editor.org/rfc/rfc8976.html#section-5.1)
pattern ZONEMD      :: RRTYPE;      pattern $mZONEMD :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bZONEMD :: RRTYPE
ZONEMD      = RRTYPE 63
type N_zonemd       :: Nat;         type N_zonemd              = 63

-- | [General Purpose Service Binding](https://www.rfc-editor.org/rfc/rfc9460.html#name-svcb-rr-type)
pattern SVCB        :: RRTYPE;      pattern $mSVCB :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bSVCB :: RRTYPE
SVCB        = RRTYPE 64
type N_svcb         :: Nat;         type N_svcb                = 64

-- | [SVCB-compatible type for use with HTTP](https://www.rfc-editor.org/rfc/rfc9460.html#name-https-rr-type)
pattern HTTPS       :: RRTYPE;      pattern $mHTTPS :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bHTTPS :: RRTYPE
HTTPS       = RRTYPE 65
type N_https        :: Nat;         type N_https               = 65

-- | [Generalized DNS Notifications](https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-generalized-notify-09#name-dsync-rr-type)
pattern DSYNC       :: RRTYPE;      pattern $mDSYNC :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bDSYNC :: RRTYPE
DSYNC       = RRTYPE 66
type N_dsync        :: Nat;         type N_dsync               = 66

-- | [Hierarchical Host Identity Tag](https://datatracker.ietf.org/doc/html/rfc9886#section-5.1)
-- Not implemented.
pattern HHIT        :: RRTYPE;      pattern $mHHIT :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bHHIT :: RRTYPE
HHIT        = RRTYPE 67
type N_hhit         :: Nat;         type N_hhit                = 67

-- | [Broadcast Remote Identification](https://datatracker.ietf.org/doc/html/rfc9886#section-5.2)
-- Not implemented.
pattern BRID        :: RRTYPE;      pattern $mBRID :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bBRID :: RRTYPE
BRID        = RRTYPE 68
type N_brid         :: Nat;         type N_brid                = 68

-- | [Node Identifier](https://www.rfc-editor.org/rfc/rfc6742.html#section-2.1)
pattern NID         :: RRTYPE;      pattern $mNID :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNID :: RRTYPE
NID         = RRTYPE 104
type N_nid          :: Nat;         type N_nid                 = 104

-- | [ILNPv4 32-bit locator](https://www.rfc-editor.org/rfc/rfc6742.html#section-2.2)
pattern L32         :: RRTYPE;      pattern $mL32 :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bL32 :: RRTYPE
L32         = RRTYPE 105
type N_l32          :: Nat;         type N_l32                 = 105

-- | [ILNPv6 64-bit locator](https://www.rfc-editor.org/rfc/rfc6742.html#section-2.3)
pattern L64         :: RRTYPE;      pattern $mL64 :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bL64 :: RRTYPE
L64         = RRTYPE 106
type N_l64          :: Nat;         type N_l64                 = 106

-- | [ILNP Locator Pointer](https://www.rfc-editor.org/rfc/rfc6742.html#section-2.4)
pattern LP          :: RRTYPE;      pattern $mLP :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bLP :: RRTYPE
LP          = RRTYPE 107
type N_lp           :: Nat;         type N_lp                  = 107

-- | [NXDOMAIN indicator for Compact Denial of Existence](https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-compact-denial-of-existence-04#section-3.4)
-- Reserved sentinel type.
pattern NXNAME      :: RRTYPE;      pattern $mNXNAME :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bNXNAME :: RRTYPE
NXNAME      = RRTYPE 128
type N_nxname       :: Nat;         type N_nxname              = 128

-- | Incremental transfer (RFC1995)
-- Reserved special-purpose type.
pattern IXFR        :: RRTYPE;      pattern $mIXFR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bIXFR :: RRTYPE
IXFR        = RRTYPE 251
type N_ixfr         :: Nat;         type N_ixfr                = 251

-- | Zone transfer (RFC5936)
-- Reserved special-purpose type.
pattern AXFR        :: RRTYPE;      pattern $mAXFR :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bAXFR :: RRTYPE
AXFR        = RRTYPE 252
type N_axfr         :: Nat;         type N_axfr                = 252

-- | [A request for mailbox-related records (MB, MG or MR)](https://www.rfc-editor.org/rfc/rfc1035.html#section-3.2.3)
-- Reserved special-purpose type.
pattern MAILB       :: RRTYPE;      pattern $mMAILB :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMAILB :: RRTYPE
MAILB       = RRTYPE 253
type N_mailb        :: Nat;         type N_mailb               = 253

-- | [A request for mail agent RRs (Obsolete - see MX)](https://www.rfc-editor.org/rfc/rfc1035.html#section-3.2.3)
-- Reserved special-purpose type.
pattern MAILA       :: RRTYPE;      pattern $mMAILA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bMAILA :: RRTYPE
MAILA       = RRTYPE 254
type N_maila        :: Nat;         type N_maila               = 254

-- | A request for all records the server/cache has available
-- Reserved special-purpose type.
pattern ANY         :: RRTYPE;      pattern $mANY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bANY :: RRTYPE
ANY         = RRTYPE 255
type N_any          :: Nat;         type N_any                 = 255

-- | Certification Authority Authorization (RFC6844)
pattern CAA         :: RRTYPE;      pattern $mCAA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCAA :: RRTYPE
CAA         = RRTYPE 257
type N_caa          :: Nat;         type N_caa                 = 257

-- | Automatic Multicast Tunneling Relay (RFC8777)
pattern AMTRELAY    :: RRTYPE;      pattern $mAMTRELAY :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bAMTRELAY :: RRTYPE
AMTRELAY    = RRTYPE 260
type N_amtrelay     :: Nat;         type N_amtrelay            = 260

-- | DNS Resolver Information
-- [RFC9606, section 8.1](https://datatracker.ietf.org/doc/html/rfc9606#section-8.1)
-- Not implemented.
pattern RESINFO     :: RRTYPE;      pattern $mRESINFO :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bRESINFO :: RRTYPE
RESINFO     = RRTYPE 261
type N_resinfo      :: Nat;         type N_resinfo             = 261

-- | Public wallet address
-- [Registration template](https://www.iana.org/assignments/dns-parameters/WALLET/wallet-completed-template)
-- Not implemented.
pattern WALLET      :: RRTYPE;      pattern $mWALLET :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bWALLET :: RRTYPE
WALLET      = RRTYPE 262
type N_wallet       :: Nat;         type N_wallet              = 262

-- | BP Convergence Layer Adapter
-- [draft-johnson-dns-ipn-cla](https://datatracker.ietf.org/doc/html/draft-johnson-dns-ipn-cla-07#section-5)
-- Not implemented.
pattern CLA         :: RRTYPE;      pattern $mCLA :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bCLA :: RRTYPE
CLA         = RRTYPE 263
type N_cla          :: Nat;         type N_cla                 = 263

-- | BP Node Number
-- [draft-johnson-dns-ipn-cla](https://datatracker.ietf.org/doc/html/draft-johnson-dns-ipn-cla-07#section-5)
-- Not implemented.
pattern IPN         :: RRTYPE;      pattern $mIPN :: forall {r}. RRTYPE -> ((# #) -> r) -> ((# #) -> r) -> r
$bIPN :: RRTYPE
IPN         = RRTYPE 264
type N_ipn          :: Nat;         type N_ipn                 = 264

rrtypeMax :: RRTYPE
rrtypeMax :: RRTYPE
rrtypeMax = RRTYPE
IPN
{-# INLINE rrtypeMax #-}