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

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