{-| Module : Net.DNSBase.Encode.State Description : Wire-form encoder monad and primitive byte/sequence encoders Copyright : (c) Viktor Dukhovni, 2026 License : BSD-3-Clause Maintainer : ietf-dane@dukhovni.org Stability : unstable The 'SPut' encoder monad for serialising DNS wire-form data, plus primitive writers ('put8', 'put16', ...), DNS-style helpers ('putDomain', 'putWireForm'), length-prefixed byte-string writers, and the high-level driver functions 'encodeCompressed' / 'encodeVerbatim'. Used by authors of 'Net.DNSBase.RData.KnownRData' and 'Net.DNSBase.EDNS.Option.KnownEdnsOption' instances to implement value-side encoding; most applications will not use this module directly. 'putDomain' applies DNS name compression ([RFC 1035 section 4.1.4](https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.4)) when the surrounding driver permits it; 'putWireForm' is the compression-free counterpart for RR types whose target domains forbid compression on encode. -} module Net.DNSBase.Encode.State ( -- * Low level DNS data encoding primitives EncodeErr(..) , ErrorContext , SPut, SPutM, localSPut , buildCompressed , encodeCompressed , buildVerbatim , encodeVerbatim , putDomain , putWireForm , put8 , put16 , put32 , put64 , putIPv4 , putIPv6 , putByteString , putByteStringLen8 , putByteStringLen16 , putShortByteString , putShortByteStringLen8 , putShortByteStringLen16 , putUtf8Text , putUtf8TextLen8 , putUtf8TextLen16 , putSizedBuilder , putReplicate -- * Encoder state mutation , passLen , failWith , setContext ) where import Net.DNSBase.Encode.Internal.State