{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Alonzo.Transition ( TransitionConfig (..), alonzoInjectCostModels, ) where import Cardano.Ledger.Alonzo.Core (AlonzoEraPParams, ppCostModelsL) import Cardano.Ledger.Alonzo.Era import Cardano.Ledger.Alonzo.Genesis import Cardano.Ledger.Alonzo.Translation () import Cardano.Ledger.Mary import Cardano.Ledger.Mary.Transition (TransitionConfig (MaryTransitionConfig)) import Cardano.Ledger.Plutus.CostModels (CostModels, updateCostModels) import Cardano.Ledger.Shelley.LedgerState import Cardano.Ledger.Shelley.Transition import GHC.Generics import Lens.Micro import NoThunks.Class (NoThunks (..)) instance EraTransition AlonzoEra where data TransitionConfig AlonzoEra = AlonzoTransitionConfig { TransitionConfig AlonzoEra -> AlonzoGenesis atcAlonzoGenesis :: !AlonzoGenesis , TransitionConfig AlonzoEra -> TransitionConfig MaryEra atcMaryTransitionConfig :: !(TransitionConfig MaryEra) } deriving (Int -> TransitionConfig AlonzoEra -> ShowS [TransitionConfig AlonzoEra] -> ShowS TransitionConfig AlonzoEra -> String (Int -> TransitionConfig AlonzoEra -> ShowS) -> (TransitionConfig AlonzoEra -> String) -> ([TransitionConfig AlonzoEra] -> ShowS) -> Show (TransitionConfig AlonzoEra) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> TransitionConfig AlonzoEra -> ShowS showsPrec :: Int -> TransitionConfig AlonzoEra -> ShowS $cshow :: TransitionConfig AlonzoEra -> String show :: TransitionConfig AlonzoEra -> String $cshowList :: [TransitionConfig AlonzoEra] -> ShowS showList :: [TransitionConfig AlonzoEra] -> ShowS Show, TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool (TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool) -> (TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool) -> Eq (TransitionConfig AlonzoEra) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool == :: TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool $c/= :: TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool /= :: TransitionConfig AlonzoEra -> TransitionConfig AlonzoEra -> Bool Eq, (forall x. TransitionConfig AlonzoEra -> Rep (TransitionConfig AlonzoEra) x) -> (forall x. Rep (TransitionConfig AlonzoEra) x -> TransitionConfig AlonzoEra) -> Generic (TransitionConfig AlonzoEra) forall x. Rep (TransitionConfig AlonzoEra) x -> TransitionConfig AlonzoEra forall x. TransitionConfig AlonzoEra -> Rep (TransitionConfig AlonzoEra) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. TransitionConfig AlonzoEra -> Rep (TransitionConfig AlonzoEra) x from :: forall x. TransitionConfig AlonzoEra -> Rep (TransitionConfig AlonzoEra) x $cto :: forall x. Rep (TransitionConfig AlonzoEra) x -> TransitionConfig AlonzoEra to :: forall x. Rep (TransitionConfig AlonzoEra) x -> TransitionConfig AlonzoEra Generic) mkTransitionConfig :: TranslationContext AlonzoEra -> TransitionConfig (PreviousEra AlonzoEra) -> TransitionConfig AlonzoEra mkTransitionConfig = TranslationContext AlonzoEra -> TransitionConfig (PreviousEra AlonzoEra) -> TransitionConfig AlonzoEra AlonzoGenesis -> TransitionConfig MaryEra -> TransitionConfig AlonzoEra AlonzoTransitionConfig injectIntoTestState :: TransitionConfig AlonzoEra -> NewEpochState AlonzoEra -> NewEpochState AlonzoEra injectIntoTestState TransitionConfig AlonzoEra cfg = TransitionConfig AlonzoEra -> NewEpochState AlonzoEra -> NewEpochState AlonzoEra forall era. (EraTransition era, ShelleyEraAccounts era) => TransitionConfig era -> NewEpochState era -> NewEpochState era shelleyRegisterInitialFundsThenStaking TransitionConfig AlonzoEra cfg (NewEpochState AlonzoEra -> NewEpochState AlonzoEra) -> (NewEpochState AlonzoEra -> NewEpochState AlonzoEra) -> NewEpochState AlonzoEra -> NewEpochState AlonzoEra forall b c a. (b -> c) -> (a -> b) -> a -> c . TransitionConfig AlonzoEra -> NewEpochState AlonzoEra -> NewEpochState AlonzoEra forall era. (EraTransition era, AlonzoEraPParams era) => TransitionConfig AlonzoEra -> NewEpochState era -> NewEpochState era alonzoInjectCostModels TransitionConfig AlonzoEra cfg tcPreviousEraConfigL :: EraTransition (PreviousEra AlonzoEra) => Lens' (TransitionConfig AlonzoEra) (TransitionConfig (PreviousEra AlonzoEra)) tcPreviousEraConfigL = (TransitionConfig AlonzoEra -> TransitionConfig MaryEra) -> (TransitionConfig AlonzoEra -> TransitionConfig MaryEra -> TransitionConfig AlonzoEra) -> Lens (TransitionConfig AlonzoEra) (TransitionConfig AlonzoEra) (TransitionConfig MaryEra) (TransitionConfig MaryEra) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens TransitionConfig AlonzoEra -> TransitionConfig MaryEra atcMaryTransitionConfig (\TransitionConfig AlonzoEra atc TransitionConfig MaryEra pc -> TransitionConfig AlonzoEra atc {atcMaryTransitionConfig = pc}) tcTranslationContextL :: Lens' (TransitionConfig AlonzoEra) (TranslationContext AlonzoEra) tcTranslationContextL = (TransitionConfig AlonzoEra -> AlonzoGenesis) -> (TransitionConfig AlonzoEra -> AlonzoGenesis -> TransitionConfig AlonzoEra) -> Lens (TransitionConfig AlonzoEra) (TransitionConfig AlonzoEra) AlonzoGenesis AlonzoGenesis forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens TransitionConfig AlonzoEra -> AlonzoGenesis atcAlonzoGenesis (\TransitionConfig AlonzoEra atc AlonzoGenesis ag -> TransitionConfig AlonzoEra atc {atcAlonzoGenesis = ag}) instance NoThunks (TransitionConfig AlonzoEra) alonzoInjectCostModels :: (EraTransition era, AlonzoEraPParams era) => TransitionConfig AlonzoEra -> NewEpochState era -> NewEpochState era alonzoInjectCostModels :: forall era. (EraTransition era, AlonzoEraPParams era) => TransitionConfig AlonzoEra -> NewEpochState era -> NewEpochState era alonzoInjectCostModels TransitionConfig AlonzoEra cfg = case AlonzoGenesis -> Maybe AlonzoExtraConfig agExtraConfig (AlonzoGenesis -> Maybe AlonzoExtraConfig) -> AlonzoGenesis -> Maybe AlonzoExtraConfig forall a b. (a -> b) -> a -> b $ TransitionConfig AlonzoEra cfg TransitionConfig AlonzoEra -> Getting AlonzoGenesis (TransitionConfig AlonzoEra) AlonzoGenesis -> AlonzoGenesis forall s a. s -> Getting a s a -> a ^. (TranslationContext AlonzoEra -> Const AlonzoGenesis (TranslationContext AlonzoEra)) -> TransitionConfig AlonzoEra -> Const AlonzoGenesis (TransitionConfig AlonzoEra) Getting AlonzoGenesis (TransitionConfig AlonzoEra) AlonzoGenesis forall era. EraTransition era => Lens' (TransitionConfig era) (TranslationContext era) Lens' (TransitionConfig AlonzoEra) (TranslationContext AlonzoEra) tcTranslationContextL of Maybe AlonzoExtraConfig Nothing -> NewEpochState era -> NewEpochState era forall a. a -> a id Just AlonzoExtraConfig aec -> Maybe CostModels -> NewEpochState era -> NewEpochState era forall era. (EraTransition era, AlonzoEraPParams era) => Maybe CostModels -> NewEpochState era -> NewEpochState era overrideCostModels (AlonzoExtraConfig -> Maybe CostModels aecCostModels AlonzoExtraConfig aec) overrideCostModels :: (EraTransition era, AlonzoEraPParams era) => Maybe CostModels -> NewEpochState era -> NewEpochState era overrideCostModels :: forall era. (EraTransition era, AlonzoEraPParams era) => Maybe CostModels -> NewEpochState era -> NewEpochState era overrideCostModels = \case Maybe CostModels Nothing -> NewEpochState era -> NewEpochState era forall a. a -> a id Just CostModels cms -> (EpochState era -> Identity (EpochState era)) -> NewEpochState era -> Identity (NewEpochState era) forall era (f :: * -> *). Functor f => (EpochState era -> f (EpochState era)) -> NewEpochState era -> f (NewEpochState era) nesEsL ((EpochState era -> Identity (EpochState era)) -> NewEpochState era -> Identity (NewEpochState era)) -> ((CostModels -> Identity CostModels) -> EpochState era -> Identity (EpochState era)) -> (CostModels -> Identity CostModels) -> NewEpochState era -> Identity (NewEpochState era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (PParams era -> Identity (PParams era)) -> EpochState era -> Identity (EpochState era) forall era. EraGov era => Lens' (EpochState era) (PParams era) Lens' (EpochState era) (PParams era) curPParamsEpochStateL ((PParams era -> Identity (PParams era)) -> EpochState era -> Identity (EpochState era)) -> ((CostModels -> Identity CostModels) -> PParams era -> Identity (PParams era)) -> (CostModels -> Identity CostModels) -> EpochState era -> Identity (EpochState era) forall b c a. (b -> c) -> (a -> b) -> a -> c . (CostModels -> Identity CostModels) -> PParams era -> Identity (PParams era) forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels Lens' (PParams era) CostModels ppCostModelsL ((CostModels -> Identity CostModels) -> NewEpochState era -> Identity (NewEpochState era)) -> (CostModels -> CostModels) -> NewEpochState era -> NewEpochState era forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ CostModels -> CostModels -> CostModels updateCostModels CostModels cms