{-# LANGUAGE RankNTypes #-}
module Cardano.Network.LedgerPeerConsensusInterface
( LedgerPeersConsensusInterface (..)
, FetchMode (..)
, LedgerStateJudgement (..)
, OutboundConnectionsState (..)
) where
import Control.Concurrent.Class.MonadSTM (MonadSTM (..))
import Cardano.Network.LedgerStateJudgement
import Cardano.Network.PeerSelection.LocalRootPeers
(OutboundConnectionsState (..))
import Ouroboros.Network.Block (Point)
import Ouroboros.Network.BlockFetch.ConsensusInterface (FetchMode (..))
import Ouroboros.Network.PeerSelection.LedgerPeers.Type (SomeHashableBlock)
data LedgerPeersConsensusInterface m =
LedgerPeersConsensusInterface {
forall (m :: * -> *).
LedgerPeersConsensusInterface m -> STM m FetchMode
readFetchMode :: STM m FetchMode
, forall (m :: * -> *).
LedgerPeersConsensusInterface m -> STM m LedgerStateJudgement
getLedgerStateJudgement :: STM m LedgerStateJudgement
, forall (m :: * -> *).
LedgerPeersConsensusInterface m
-> OutboundConnectionsState -> STM m ()
updateOutboundConnectionsState :: OutboundConnectionsState -> STM m ()
, forall (m :: * -> *).
LedgerPeersConsensusInterface m
-> forall r.
Point SomeHashableBlock
-> (m (Maybe (Point SomeHashableBlock)) -> m r) -> m r
getBlockHash
:: forall r. Point SomeHashableBlock -> (m (Maybe (Point SomeHashableBlock)) -> m r) -> m r
}