{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Shelley.BlockChain
  {-# DEPRECATED "Use `Cardano.Ledger.Shelley.BlockBody` instead" #-} (
  ShelleyTxSeq,
  txSeqTxns,
  pattern ShelleyTxSeq,
  bbHash,
  hashShelleySegWits,
  bBodySize,
  slotToNonce,
  --
  incrBlocks,
  coreAuxDataBytes,
) where

import Cardano.Ledger.Core
import Cardano.Ledger.Shelley.BlockBody
import Data.Sequence.Strict

type ShelleyTxSeq = ShelleyBlockBody

pattern ShelleyTxSeq ::
  forall era.
  ( EraTx era
  , SafeToHash (TxWits era)
  ) =>
  StrictSeq (Tx era) ->
  ShelleyBlockBody era
pattern $mShelleyTxSeq :: forall {r} {era}.
(EraTx era, SafeToHash (TxWits era)) =>
ShelleyBlockBody era
-> (StrictSeq (Tx era) -> r) -> ((# #) -> r) -> r
$bShelleyTxSeq :: forall era.
(EraTx era, SafeToHash (TxWits era)) =>
StrictSeq (Tx era) -> ShelleyBlockBody era
ShelleyTxSeq s = ShelleyBlockBody s

txSeqTxns :: ShelleyBlockBody era -> StrictSeq (Tx era)
txSeqTxns :: forall era. ShelleyBlockBody era -> StrictSeq (Tx era)
txSeqTxns = ShelleyBlockBody era -> StrictSeq (Tx era)
forall era. ShelleyBlockBody era -> StrictSeq (Tx era)
shelleyBlockBodyTxs

bbHash :: EraBlockBody era => BlockBody era -> Hash HASH EraIndependentBlockBody
bbHash :: forall era.
EraBlockBody era =>
BlockBody era -> Hash HASH EraIndependentBlockBody
bbHash = BlockBody era -> Hash HASH EraIndependentBlockBody
forall era.
EraBlockBody era =>
BlockBody era -> Hash HASH EraIndependentBlockBody
hashBlockBody