module Ouroboros.Network.BlockFetch.Decision.Trace where

import Ouroboros.Network.Block (Point)
import Ouroboros.Network.BlockFetch.ClientState (TraceLabelPeer)
import Ouroboros.Network.BlockFetch.Decision (FetchDecision)

data TraceDecisionEvent peer header
  = PeersFetch [TraceLabelPeer peer (FetchDecision [Point header])]
  | PeerStarvedUs peer
  deriving (Int -> TraceDecisionEvent peer header -> ShowS
[TraceDecisionEvent peer header] -> ShowS
TraceDecisionEvent peer header -> String
(Int -> TraceDecisionEvent peer header -> ShowS)
-> (TraceDecisionEvent peer header -> String)
-> ([TraceDecisionEvent peer header] -> ShowS)
-> Show (TraceDecisionEvent peer header)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall peer header.
(StandardHash header, Show peer) =>
Int -> TraceDecisionEvent peer header -> ShowS
forall peer header.
(StandardHash header, Show peer) =>
[TraceDecisionEvent peer header] -> ShowS
forall peer header.
(StandardHash header, Show peer) =>
TraceDecisionEvent peer header -> String
$cshowsPrec :: forall peer header.
(StandardHash header, Show peer) =>
Int -> TraceDecisionEvent peer header -> ShowS
showsPrec :: Int -> TraceDecisionEvent peer header -> ShowS
$cshow :: forall peer header.
(StandardHash header, Show peer) =>
TraceDecisionEvent peer header -> String
show :: TraceDecisionEvent peer header -> String
$cshowList :: forall peer header.
(StandardHash header, Show peer) =>
[TraceDecisionEvent peer header] -> ShowS
showList :: [TraceDecisionEvent peer header] -> ShowS
Show)