{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Allegra.BlockBody () where

import Cardano.Ledger.Allegra.Era (AllegraEra)
import Cardano.Ledger.Allegra.Tx ()
import Cardano.Ledger.Core (EraBlockBody (..))
import Cardano.Ledger.Shelley.BlockBody (
  ShelleyBlockBody (ShelleyBlockBody),
  shelleyBlockBodyHash,
  shelleyBlockBodyTxs,
 )
import Lens.Micro

instance EraBlockBody AllegraEra where
  type BlockBody AllegraEra = ShelleyBlockBody AllegraEra
  mkBasicBlockBody :: BlockBody AllegraEra
mkBasicBlockBody = StrictSeq (Tx AllegraEra) -> ShelleyBlockBody AllegraEra
forall era.
(EraTx era, SafeToHash (TxWits era)) =>
StrictSeq (Tx era) -> ShelleyBlockBody era
ShelleyBlockBody StrictSeq (Tx AllegraEra)
forall a. Monoid a => a
mempty
  txSeqBlockBodyL :: Lens' (BlockBody AllegraEra) (StrictSeq (Tx AllegraEra))
txSeqBlockBodyL = (ShelleyBlockBody AllegraEra -> StrictSeq (Tx AllegraEra))
-> (ShelleyBlockBody AllegraEra
    -> StrictSeq (Tx AllegraEra) -> ShelleyBlockBody AllegraEra)
-> Lens
     (ShelleyBlockBody AllegraEra)
     (ShelleyBlockBody AllegraEra)
     (StrictSeq (Tx AllegraEra))
     (StrictSeq (Tx AllegraEra))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens ShelleyBlockBody AllegraEra -> StrictSeq (Tx AllegraEra)
forall era. ShelleyBlockBody era -> StrictSeq (Tx era)
shelleyBlockBodyTxs (\ShelleyBlockBody AllegraEra
_ StrictSeq (Tx AllegraEra)
s -> StrictSeq (Tx AllegraEra) -> ShelleyBlockBody AllegraEra
forall era.
(EraTx era, SafeToHash (TxWits era)) =>
StrictSeq (Tx era) -> ShelleyBlockBody era
ShelleyBlockBody StrictSeq (Tx AllegraEra)
s)
  hashBlockBody :: BlockBody AllegraEra -> Hash HASH EraIndependentBlockBody
hashBlockBody = BlockBody AllegraEra -> Hash HASH EraIndependentBlockBody
ShelleyBlockBody AllegraEra -> Hash HASH EraIndependentBlockBody
forall era.
ShelleyBlockBody era -> Hash HASH EraIndependentBlockBody
shelleyBlockBodyHash
  numSegComponents :: Word64
numSegComponents = Word64
3