{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Ouroboros.Consensus.Block.SupportsProtocol (BlockSupportsProtocol (..)) where
import NoThunks.Class (NoThunks)
import Ouroboros.Consensus.Block.Abstract
import Ouroboros.Consensus.Protocol.Abstract
class
( GetHeader blk
, GetPrevHash blk
, ConsensusProtocol (BlockProtocol blk)
, NoThunks (Header blk)
, NoThunks (BlockConfig blk)
, NoThunks (CodecConfig blk)
, NoThunks (StorageConfig blk)
) =>
BlockSupportsProtocol blk
where
validateView ::
BlockConfig blk ->
Header blk ->
ValidateView (BlockProtocol blk)
selectView ::
BlockConfig blk ->
Header blk ->
SelectView (BlockProtocol blk)
default selectView ::
SelectView (BlockProtocol blk) ~ BlockNo =>
BlockConfig blk ->
Header blk ->
SelectView (BlockProtocol blk)
selectView BlockConfig blk
_ = Header blk -> BlockNo
Header blk -> SelectView (BlockProtocol blk)
forall b. HasHeader b => b -> BlockNo
blockNo
projectChainOrderConfig ::
BlockConfig blk ->
ChainOrderConfig (SelectView (BlockProtocol blk))
default projectChainOrderConfig ::
ChainOrderConfig (SelectView (BlockProtocol blk)) ~ () =>
BlockConfig blk ->
ChainOrderConfig (SelectView (BlockProtocol blk))
projectChainOrderConfig BlockConfig blk
_ = ()