-- | A thread-safe DNS library for both clients and servers written
--   in pure Haskell.
--   The Network.DNS module re-exports all other exposed modules for
--   convenience.
--   Applications will most likely use the high-level interface, while
--   library/daemon authors may need to use the lower-level one.
--   EDNS0 and TCP fallback are not supported yet.
--
module Network.DNS (
  -- * High level
    module Network.DNS.Lookup
  -- | The "Network.DNS.Lookup" module contains simple functions to
  --   perform various DNS lookups. If you simply want to resolve a
  --   hostname ('lookupA'), or find a domain's MX record
  --   ('lookupMX'), this is the easiest way to do it.

  , module Network.DNS.Resolver
  -- | The "Network.DNS.Resolver" module is slightly more low-level
  --   than "Network.DNS.Lookup". If you need to do something unusual,
  --   you may need to use the 'lookup', 'lookupAuth', or 'lookupRaw'
  --   functions.

  , module Network.DNS.Utils
  -- | The "Network.DNS.Utils" module contains utility functions used
  --   for processing DNS data.

  , module Network.DNS.Types
  -- | All of the types that the other modules use.

  -- * Low level
  , module Network.DNS.Decode
  -- | Decoding a response.

  , module Network.DNS.Encode
  -- | Encoding a query.

  ) where

import Network.DNS.Lookup
import Network.DNS.Resolver
import Network.DNS.Utils
import Network.DNS.Types
import Network.DNS.Decode
import Network.DNS.Encode