{-# 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,
  mkBasicBlockBodyShelley,
  shelleyBlockBodyHash,
  txSeqBlockBodyShelleyL,
 )

instance EraBlockBody MaryEra where
  type BlockBody MaryEra = ShelleyBlockBody MaryEra
  mkBasicBlockBody :: BlockBody MaryEra
mkBasicBlockBody = BlockBody MaryEra
forall era.
(EraBlockBody era, SafeToHash (TxWits era),
 BlockBody era ~ ShelleyBlockBody era) =>
BlockBody era
mkBasicBlockBodyShelley
  txSeqBlockBodyL :: Lens' (BlockBody MaryEra) (StrictSeq (Tx MaryEra))
txSeqBlockBodyL = (StrictSeq (Tx MaryEra) -> f (StrictSeq (Tx MaryEra)))
-> BlockBody MaryEra -> f (BlockBody MaryEra)
forall era.
(EraBlockBody era, SafeToHash (TxWits era),
 BlockBody era ~ ShelleyBlockBody era) =>
Lens' (BlockBody era) (StrictSeq (Tx era))
Lens' (BlockBody MaryEra) (StrictSeq (Tx MaryEra))
txSeqBlockBodyShelleyL
  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