module Ouroboros.Network.PeerSelection.RootPeersDNS
  ( module Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore
  , PeerActionsDNS (..)
  ) where

import Data.IP (IP)
import Network.Socket (PortNumber)

import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions
import Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore

-- | Record of some parameters that are commonly used together
--
data PeerActionsDNS peeraddr resolver exception m = PeerActionsDNS {
  forall peeraddr resolver exception (m :: * -> *).
PeerActionsDNS peeraddr resolver exception m
-> IP -> PortNumber -> peeraddr
paToPeerAddr   :: IP -> PortNumber -> peeraddr,
  forall peeraddr resolver exception (m :: * -> *).
PeerActionsDNS peeraddr resolver exception m
-> DNSActions resolver exception m
paDnsActions   :: DNSActions resolver exception m,
  forall peeraddr resolver exception (m :: * -> *).
PeerActionsDNS peeraddr resolver exception m -> DNSSemaphore m
paDnsSemaphore :: DNSSemaphore m
  }