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

module Cardano.Ledger.Mary.BlockBody () where

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

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