content: {-# LANGUAGE CPP #-}
  {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE FlexibleContexts #-}
  {-# LANGUAGE FlexibleInstances #-}
  {-# LANGUAGE MultiParamTypeClasses #-}
  {-# LANGUAGE TypeFamilies #-}
  {-# LANGUAGE UndecidableInstances #-}
  {-# OPTIONS_GHC -Wno-orphans #-}
  #if __GLASGOW_HASKELL__ >= 908
  {-# OPTIONS_GHC -Wno-x-unsafe-ledger-internal #-}
  #endif
  
  module Cardano.Ledger.Mary.Era (MaryEra) where
  
  import Cardano.Ledger.Allegra.Rules (AllegraUTXO, AllegraUTXOW)
  import Cardano.Ledger.Genesis (EraGenesis, NoGenesis)
  import Cardano.Ledger.Internal.Era (MaryEra)
  import Cardano.Ledger.Mary.Value (MaryValue)
  import Cardano.Ledger.Shelley.Core
  import Cardano.Ledger.Shelley.Rules
  
  instance EraGenesis MaryEra
  
  --------------------------------------------------------------------------------
  -- Core instances
  --------------------------------------------------------------------------------
  
  -- | No context is needed to translate from Allegra to Mary.
  type instance TranslationContext MaryEra = NoGenesis MaryEra
  
  type instance Value MaryEra = MaryValue
  
  -- These rules are all inherited from Shelley
  
  type instance EraRule "BBODY" MaryEra = ShelleyBBODY MaryEra
  
  type instance EraRule "DELEG" MaryEra = ShelleyDELEG MaryEra
  
  type instance EraRule "DELEGS" MaryEra = ShelleyDELEGS MaryEra
  
  type instance EraRule "DELPL" MaryEra = ShelleyDELPL MaryEra
  
  type instance EraRule "EPOCH" MaryEra = ShelleyEPOCH MaryEra
  
  type instance EraRule "LEDGER" MaryEra = ShelleyLEDGER MaryEra
  
  type instance EraRule "LEDGERS" MaryEra = ShelleyLEDGERS MaryEra
  
  type instance EraRule "MIR" MaryEra = ShelleyMIR MaryEra
  
  type instance EraRule "NEWEPOCH" MaryEra = ShelleyNEWEPOCH MaryEra
  
  type instance EraRule "NEWPP" MaryEra = ShelleyNEWPP MaryEra
  
  type instance EraRule "POOL" MaryEra = ShelleyPOOL MaryEra
  
  type instance EraRule "POOLREAP" MaryEra = ShelleyPOOLREAP MaryEra
  
  type instance EraRule "PPUP" MaryEra = ShelleyPPUP MaryEra
  
  type instance EraRule "RUPD" MaryEra = ShelleyRUPD MaryEra
  
  type instance EraRule "SNAP" MaryEra = ShelleySNAP MaryEra
  
  type instance EraRule "TICK" MaryEra = ShelleyTICK MaryEra
  
  type instance EraRule "TICKF" MaryEra = ShelleyTICKF MaryEra
  
  type instance EraRule "UPEC" MaryEra = ShelleyUPEC MaryEra
  
  type instance EraRule "UTXO" MaryEra = AllegraUTXO MaryEra
  
  type instance EraRule "UTXOW" MaryEra = AllegraUTXOW MaryEra
  