{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}

-- | Era-based protocol parameter updates, and the era-sliced record types
-- that back them.
module Cardano.Api.Compatible.ProtocolParametersUpdate
  ( EraBasedProtocolParametersUpdate (..)
  , AlonzoOnwardsPParams (..)
  , CommonProtocolParametersUpdate (..)
  , DeprecatedAfterBabbagePParams (..)
  , DeprecatedAfterMaryPParams (..)
  , ShelleyToAlonzoPParams (..)
  , IntroducedInBabbagePParams (..)
  , IntroducedInConwayPParams (..)
  , IntroducedInDijkstraPParams (..)
  , createEraBasedProtocolParamUpdate
  , createPParams

    -- * Update proposals to change the protocol parameters
  , UpdateProposal (..)
  , makeShelleyUpdateProposal

    -- * Internal conversion functions
  , toLedgerUpdate
  , fromLedgerUpdate
  , toLedgerProposedPPUpdates
  , fromLedgerProposedPPUpdates
  , fromLedgerPParamsUpdate

    -- * Data family instances
  , AsType (AsUpdateProposal)
  )
where

import Cardano.Api.Era
import Cardano.Api.HasTypeProxy
import Cardano.Api.Key.Internal
import Cardano.Api.Serialise.Cbor
import Cardano.Api.Serialise.TextEnvelope.Internal

import Cardano.Binary qualified as CBOR
import Cardano.Ledger.Alonzo.PParams qualified as Ledger
import Cardano.Ledger.Alonzo.Scripts qualified as Alonzo
import Cardano.Ledger.Api.Era qualified as Ledger
import Cardano.Ledger.Api.PParams
import Cardano.Ledger.Babbage.Core qualified as Ledger
import Cardano.Ledger.BaseTypes qualified as Ledger
import Cardano.Ledger.Conway.PParams qualified as Ledger
import Cardano.Ledger.Dijkstra.PParams qualified as Ledger
import Cardano.Ledger.Shelley.API qualified as Ledger
import Cardano.Slotting.Slot (EpochNo (..))

import Data.Map.Strict (Map)
import Data.Map.Strict qualified as Map
import Data.Maybe.Strict (StrictMaybe (..))
import Data.Typeable
import Data.Word
import GHC.Exts (IsList (..))
import Lens.Micro

createPParams
  :: ShelleyBasedEra era
  -> EraBasedProtocolParametersUpdate era
  -> Ledger.PParams (ShelleyLedgerEra era)
createPParams :: forall era.
ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParams (ShelleyLedgerEra era)
createPParams ShelleyBasedEra era
sbe EraBasedProtocolParametersUpdate era
ebPParamsUpdate =
  ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
    PParams (ShelleyLedgerEra era))
-> PParams (ShelleyLedgerEra era)
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era => PParams (ShelleyLedgerEra era))
 -> PParams (ShelleyLedgerEra era))
-> (ShelleyBasedEraConstraints era =>
    PParams (ShelleyLedgerEra era))
-> PParams (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
    let ppUp :: PParamsUpdate (ShelleyLedgerEra era)
ppUp = ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
createEraBasedProtocolParamUpdate ShelleyBasedEra era
sbe EraBasedProtocolParametersUpdate era
ebPParamsUpdate
     in PParams (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParams (ShelleyLedgerEra era)
forall era.
EraPParams era =>
PParams era -> PParamsUpdate era -> PParams era
Ledger.applyPPUpdates PParams (ShelleyLedgerEra era)
forall era. EraPParams era => PParams era
emptyPParams PParamsUpdate (ShelleyLedgerEra era)
ppUp

-- -----------------------------------------------------------------------------
-- Era based Ledger protocol parameters update
--

-- | Each constructor corresponds to the set of protocol parameters available
-- in a given era.
data EraBasedProtocolParametersUpdate era where
  ShelleyEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> DeprecatedAfterMaryPParams ShelleyEra
    -> DeprecatedAfterBabbagePParams ShelleyEra
    -> ShelleyToAlonzoPParams ShelleyEra
    -> EraBasedProtocolParametersUpdate ShelleyEra
  AllegraEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> DeprecatedAfterMaryPParams AllegraEra
    -> ShelleyToAlonzoPParams AllegraEra
    -> DeprecatedAfterBabbagePParams ShelleyEra
    -> EraBasedProtocolParametersUpdate AllegraEra
  MaryEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> DeprecatedAfterMaryPParams MaryEra
    -> ShelleyToAlonzoPParams MaryEra
    -> DeprecatedAfterBabbagePParams ShelleyEra
    -> EraBasedProtocolParametersUpdate MaryEra
  AlonzoEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> ShelleyToAlonzoPParams AlonzoEra
    -> AlonzoOnwardsPParams AlonzoEra
    -> DeprecatedAfterBabbagePParams ShelleyEra
    -> EraBasedProtocolParametersUpdate AlonzoEra
  BabbageEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> AlonzoOnwardsPParams BabbageEra
    -> DeprecatedAfterBabbagePParams ShelleyEra
    -> IntroducedInBabbagePParams BabbageEra
    -> EraBasedProtocolParametersUpdate BabbageEra
  ConwayEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> AlonzoOnwardsPParams ConwayEra
    -> IntroducedInBabbagePParams ConwayEra
    -> IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
    -> EraBasedProtocolParametersUpdate ConwayEra
  DijkstraEraBasedProtocolParametersUpdate
    :: CommonProtocolParametersUpdate
    -> AlonzoOnwardsPParams DijkstraEra
    -> IntroducedInBabbagePParams DijkstraEra
    -> IntroducedInConwayPParams (ShelleyLedgerEra DijkstraEra)
    -> IntroducedInDijkstraPParams (ShelleyLedgerEra DijkstraEra)
    -> EraBasedProtocolParametersUpdate DijkstraEra

deriving instance Show (EraBasedProtocolParametersUpdate era)

deriving instance Eq (EraBasedProtocolParametersUpdate era)

instance IsShelleyBasedEra era => ToCBOR (EraBasedProtocolParametersUpdate era) where
  toCBOR :: EraBasedProtocolParametersUpdate era -> Encoding
toCBOR =
    ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
    EraBasedProtocolParametersUpdate era -> Encoding)
-> EraBasedProtocolParametersUpdate era
-> Encoding
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints (forall era. IsShelleyBasedEra era => ShelleyBasedEra era
shelleyBasedEra @era) ((ShelleyBasedEraConstraints era =>
  EraBasedProtocolParametersUpdate era -> Encoding)
 -> EraBasedProtocolParametersUpdate era -> Encoding)
-> (ShelleyBasedEraConstraints era =>
    EraBasedProtocolParametersUpdate era -> Encoding)
-> EraBasedProtocolParametersUpdate era
-> Encoding
forall a b. (a -> b) -> a -> b
$
      PParamsUpdate (ShelleyLedgerEra era) -> Encoding
forall a. ToCBOR a => a -> Encoding
toCBOR (PParamsUpdate (ShelleyLedgerEra era) -> Encoding)
-> (EraBasedProtocolParametersUpdate era
    -> PParamsUpdate (ShelleyLedgerEra era))
-> EraBasedProtocolParametersUpdate era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
createEraBasedProtocolParamUpdate ShelleyBasedEra era
forall era. IsShelleyBasedEra era => ShelleyBasedEra era
shelleyBasedEra

instance IsShelleyBasedEra era => FromCBOR (EraBasedProtocolParametersUpdate era) where
  fromCBOR :: forall s. Decoder s (EraBasedProtocolParametersUpdate era)
fromCBOR =
    ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
    Decoder s (EraBasedProtocolParametersUpdate era))
-> Decoder s (EraBasedProtocolParametersUpdate era)
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints (forall era. IsShelleyBasedEra era => ShelleyBasedEra era
shelleyBasedEra @era) ((ShelleyBasedEraConstraints era =>
  Decoder s (EraBasedProtocolParametersUpdate era))
 -> Decoder s (EraBasedProtocolParametersUpdate era))
-> (ShelleyBasedEraConstraints era =>
    Decoder s (EraBasedProtocolParametersUpdate era))
-> Decoder s (EraBasedProtocolParametersUpdate era)
forall a b. (a -> b) -> a -> b
$
      ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> EraBasedProtocolParametersUpdate era
forall era.
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> EraBasedProtocolParametersUpdate era
fromLedgerPParamsUpdate ShelleyBasedEra era
forall era. IsShelleyBasedEra era => ShelleyBasedEra era
shelleyBasedEra (PParamsUpdate (ShelleyLedgerEra era)
 -> EraBasedProtocolParametersUpdate era)
-> Decoder s (PParamsUpdate (ShelleyLedgerEra era))
-> Decoder s (EraBasedProtocolParametersUpdate era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (PParamsUpdate (ShelleyLedgerEra era))
forall s. Decoder s (PParamsUpdate (ShelleyLedgerEra era))
forall a s. FromCBOR a => Decoder s a
fromCBOR

data IntroducedInConwayPParams era
  = IntroducedInConwayPParams
  { forall era.
IntroducedInConwayPParams era -> StrictMaybe PoolVotingThresholds
icPoolVotingThresholds :: StrictMaybe Ledger.PoolVotingThresholds
  , forall era.
IntroducedInConwayPParams era -> StrictMaybe DRepVotingThresholds
icDRepVotingThresholds :: StrictMaybe Ledger.DRepVotingThresholds
  , forall era. IntroducedInConwayPParams era -> StrictMaybe Word16
icMinCommitteeSize :: StrictMaybe Word16
  , forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icCommitteeTermLength :: StrictMaybe Ledger.EpochInterval
  , forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icGovActionLifetime :: StrictMaybe Ledger.EpochInterval
  , forall era. IntroducedInConwayPParams era -> StrictMaybe Coin
icGovActionDeposit :: StrictMaybe Ledger.Coin
  , forall era. IntroducedInConwayPParams era -> StrictMaybe Coin
icDRepDeposit :: StrictMaybe Ledger.Coin
  , forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icDRepActivity :: StrictMaybe Ledger.EpochInterval
  , forall era.
IntroducedInConwayPParams era -> StrictMaybe NonNegativeInterval
icMinFeeRefScriptCostPerByte :: StrictMaybe Ledger.NonNegativeInterval
  }
  deriving (IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
(IntroducedInConwayPParams era
 -> IntroducedInConwayPParams era -> Bool)
-> (IntroducedInConwayPParams era
    -> IntroducedInConwayPParams era -> Bool)
-> Eq (IntroducedInConwayPParams era)
forall era.
IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
== :: IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
$c/= :: forall era.
IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
/= :: IntroducedInConwayPParams era
-> IntroducedInConwayPParams era -> Bool
Eq, Int -> IntroducedInConwayPParams era -> ShowS
[IntroducedInConwayPParams era] -> ShowS
IntroducedInConwayPParams era -> String
(Int -> IntroducedInConwayPParams era -> ShowS)
-> (IntroducedInConwayPParams era -> String)
-> ([IntroducedInConwayPParams era] -> ShowS)
-> Show (IntroducedInConwayPParams era)
forall era. Int -> IntroducedInConwayPParams era -> ShowS
forall era. [IntroducedInConwayPParams era] -> ShowS
forall era. IntroducedInConwayPParams era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> IntroducedInConwayPParams era -> ShowS
showsPrec :: Int -> IntroducedInConwayPParams era -> ShowS
$cshow :: forall era. IntroducedInConwayPParams era -> String
show :: IntroducedInConwayPParams era -> String
$cshowList :: forall era. [IntroducedInConwayPParams era] -> ShowS
showList :: [IntroducedInConwayPParams era] -> ShowS
Show)

createIntroducedInConwayPParams
  :: Ledger.ConwayEraPParams ledgerera
  => IntroducedInConwayPParams ledgerera
  -> Ledger.PParamsUpdate ledgerera
createIntroducedInConwayPParams :: forall ledgerera.
ConwayEraPParams ledgerera =>
IntroducedInConwayPParams ledgerera -> PParamsUpdate ledgerera
createIntroducedInConwayPParams IntroducedInConwayPParams{StrictMaybe Word16
StrictMaybe Coin
StrictMaybe DRepVotingThresholds
StrictMaybe PoolVotingThresholds
StrictMaybe EpochInterval
StrictMaybe NonNegativeInterval
icPoolVotingThresholds :: forall era.
IntroducedInConwayPParams era -> StrictMaybe PoolVotingThresholds
icDRepVotingThresholds :: forall era.
IntroducedInConwayPParams era -> StrictMaybe DRepVotingThresholds
icMinCommitteeSize :: forall era. IntroducedInConwayPParams era -> StrictMaybe Word16
icCommitteeTermLength :: forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icGovActionLifetime :: forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icGovActionDeposit :: forall era. IntroducedInConwayPParams era -> StrictMaybe Coin
icDRepDeposit :: forall era. IntroducedInConwayPParams era -> StrictMaybe Coin
icDRepActivity :: forall era.
IntroducedInConwayPParams era -> StrictMaybe EpochInterval
icMinFeeRefScriptCostPerByte :: forall era.
IntroducedInConwayPParams era -> StrictMaybe NonNegativeInterval
icPoolVotingThresholds :: StrictMaybe PoolVotingThresholds
icDRepVotingThresholds :: StrictMaybe DRepVotingThresholds
icMinCommitteeSize :: StrictMaybe Word16
icCommitteeTermLength :: StrictMaybe EpochInterval
icGovActionLifetime :: StrictMaybe EpochInterval
icGovActionDeposit :: StrictMaybe Coin
icDRepDeposit :: StrictMaybe Coin
icDRepActivity :: StrictMaybe EpochInterval
icMinFeeRefScriptCostPerByte :: StrictMaybe NonNegativeInterval
..} =
  PParamsUpdate ledgerera
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe PoolVotingThresholds
 -> Identity (StrictMaybe PoolVotingThresholds))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe PoolVotingThresholds)
Lens' (PParamsUpdate ledgerera) (StrictMaybe PoolVotingThresholds)
Ledger.ppuPoolVotingThresholdsL ((StrictMaybe PoolVotingThresholds
  -> Identity (StrictMaybe PoolVotingThresholds))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe PoolVotingThresholds
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe PoolVotingThresholds
icPoolVotingThresholds
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe DRepVotingThresholds
 -> Identity (StrictMaybe DRepVotingThresholds))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe DRepVotingThresholds)
Lens' (PParamsUpdate ledgerera) (StrictMaybe DRepVotingThresholds)
Ledger.ppuDRepVotingThresholdsL ((StrictMaybe DRepVotingThresholds
  -> Identity (StrictMaybe DRepVotingThresholds))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe DRepVotingThresholds
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe DRepVotingThresholds
icDRepVotingThresholds
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word16)
Ledger.ppuCommitteeMinSizeL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word16
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word16
icMinCommitteeSize
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe EpochInterval -> Identity (StrictMaybe EpochInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuCommitteeMaxTermLengthL ((StrictMaybe EpochInterval
  -> Identity (StrictMaybe EpochInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe EpochInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe EpochInterval
icCommitteeTermLength
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe EpochInterval -> Identity (StrictMaybe EpochInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuGovActionLifetimeL ((StrictMaybe EpochInterval
  -> Identity (StrictMaybe EpochInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe EpochInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe EpochInterval
icGovActionLifetime
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(ConwayEraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuGovActionDepositL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
icGovActionDeposit
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuDRepDepositL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
icDRepDeposit
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe EpochInterval -> Identity (StrictMaybe EpochInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuDRepActivityL ((StrictMaybe EpochInterval
  -> Identity (StrictMaybe EpochInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe EpochInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe EpochInterval
icDRepActivity
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe NonNegativeInterval
 -> Identity (StrictMaybe NonNegativeInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe NonNegativeInterval)
Ledger.ppuMinFeeRefScriptCostPerByteL ((StrictMaybe NonNegativeInterval
  -> Identity (StrictMaybe NonNegativeInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe NonNegativeInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe NonNegativeInterval
icMinFeeRefScriptCostPerByte

pparamsUpdateToIntroducedInConwayPParams
  :: Ledger.ConwayEraPParams ledgerera
  => Ledger.PParamsUpdate ledgerera
  -> IntroducedInConwayPParams ledgerera
pparamsUpdateToIntroducedInConwayPParams :: forall ledgerera.
ConwayEraPParams ledgerera =>
PParamsUpdate ledgerera -> IntroducedInConwayPParams ledgerera
pparamsUpdateToIntroducedInConwayPParams PParamsUpdate ledgerera
ppupdate =
  IntroducedInConwayPParams
    { icPoolVotingThresholds :: StrictMaybe PoolVotingThresholds
icPoolVotingThresholds = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe PoolVotingThresholds)
     (PParamsUpdate ledgerera)
     (StrictMaybe PoolVotingThresholds)
-> StrictMaybe PoolVotingThresholds
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe PoolVotingThresholds)
  (PParamsUpdate ledgerera)
  (StrictMaybe PoolVotingThresholds)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe PoolVotingThresholds)
Lens' (PParamsUpdate ledgerera) (StrictMaybe PoolVotingThresholds)
Ledger.ppuPoolVotingThresholdsL
    , icDRepVotingThresholds :: StrictMaybe DRepVotingThresholds
icDRepVotingThresholds = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe DRepVotingThresholds)
     (PParamsUpdate ledgerera)
     (StrictMaybe DRepVotingThresholds)
-> StrictMaybe DRepVotingThresholds
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe DRepVotingThresholds)
  (PParamsUpdate ledgerera)
  (StrictMaybe DRepVotingThresholds)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe DRepVotingThresholds)
Lens' (PParamsUpdate ledgerera) (StrictMaybe DRepVotingThresholds)
Ledger.ppuDRepVotingThresholdsL
    , icMinCommitteeSize :: StrictMaybe Word16
icMinCommitteeSize = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe Word16) (PParamsUpdate ledgerera) (StrictMaybe Word16)
-> StrictMaybe Word16
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word16) (PParamsUpdate ledgerera) (StrictMaybe Word16)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word16)
Ledger.ppuCommitteeMinSizeL
    , icCommitteeTermLength :: StrictMaybe EpochInterval
icCommitteeTermLength = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe EpochInterval)
     (PParamsUpdate ledgerera)
     (StrictMaybe EpochInterval)
-> StrictMaybe EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe EpochInterval)
  (PParamsUpdate ledgerera)
  (StrictMaybe EpochInterval)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuCommitteeMaxTermLengthL
    , icGovActionLifetime :: StrictMaybe EpochInterval
icGovActionLifetime = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe EpochInterval)
     (PParamsUpdate ledgerera)
     (StrictMaybe EpochInterval)
-> StrictMaybe EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe EpochInterval)
  (PParamsUpdate ledgerera)
  (StrictMaybe EpochInterval)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuGovActionLifetimeL
    , icGovActionDeposit :: StrictMaybe Coin
icGovActionDeposit = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe Coin) (PParamsUpdate ledgerera) (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin) (PParamsUpdate ledgerera) (StrictMaybe Coin)
forall era.
(ConwayEraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuGovActionDepositL
    , icDRepDeposit :: StrictMaybe Coin
icDRepDeposit = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe Coin) (PParamsUpdate ledgerera) (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin) (PParamsUpdate ledgerera) (StrictMaybe Coin)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuDRepDepositL
    , icDRepActivity :: StrictMaybe EpochInterval
icDRepActivity = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe EpochInterval)
     (PParamsUpdate ledgerera)
     (StrictMaybe EpochInterval)
-> StrictMaybe EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe EpochInterval)
  (PParamsUpdate ledgerera)
  (StrictMaybe EpochInterval)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuDRepActivityL
    , icMinFeeRefScriptCostPerByte :: StrictMaybe NonNegativeInterval
icMinFeeRefScriptCostPerByte = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe NonNegativeInterval)
     (PParamsUpdate ledgerera)
     (StrictMaybe NonNegativeInterval)
-> StrictMaybe NonNegativeInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe NonNegativeInterval)
  (PParamsUpdate ledgerera)
  (StrictMaybe NonNegativeInterval)
forall era.
ConwayEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe NonNegativeInterval)
Ledger.ppuMinFeeRefScriptCostPerByteL
    }

data IntroducedInDijkstraPParams era
  = IntroducedInDijkstraPParams
  { forall era. IntroducedInDijkstraPParams era -> StrictMaybe Word32
idMaxRefScriptSizePerBlock :: StrictMaybe Word32
  , forall era. IntroducedInDijkstraPParams era -> StrictMaybe Word32
idMaxRefScriptSizePerTx :: StrictMaybe Word32
  , forall era.
IntroducedInDijkstraPParams era -> StrictMaybe (NonZero Word32)
idRefScriptCostStride :: StrictMaybe (Ledger.NonZero Word32)
  , forall era.
IntroducedInDijkstraPParams era -> StrictMaybe PositiveInterval
idRefScriptCostMultiplier :: StrictMaybe Ledger.PositiveInterval
  }
  deriving (IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
(IntroducedInDijkstraPParams era
 -> IntroducedInDijkstraPParams era -> Bool)
-> (IntroducedInDijkstraPParams era
    -> IntroducedInDijkstraPParams era -> Bool)
-> Eq (IntroducedInDijkstraPParams era)
forall era.
IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
== :: IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
$c/= :: forall era.
IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
/= :: IntroducedInDijkstraPParams era
-> IntroducedInDijkstraPParams era -> Bool
Eq, Int -> IntroducedInDijkstraPParams era -> ShowS
[IntroducedInDijkstraPParams era] -> ShowS
IntroducedInDijkstraPParams era -> String
(Int -> IntroducedInDijkstraPParams era -> ShowS)
-> (IntroducedInDijkstraPParams era -> String)
-> ([IntroducedInDijkstraPParams era] -> ShowS)
-> Show (IntroducedInDijkstraPParams era)
forall era. Int -> IntroducedInDijkstraPParams era -> ShowS
forall era. [IntroducedInDijkstraPParams era] -> ShowS
forall era. IntroducedInDijkstraPParams era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> IntroducedInDijkstraPParams era -> ShowS
showsPrec :: Int -> IntroducedInDijkstraPParams era -> ShowS
$cshow :: forall era. IntroducedInDijkstraPParams era -> String
show :: IntroducedInDijkstraPParams era -> String
$cshowList :: forall era. [IntroducedInDijkstraPParams era] -> ShowS
showList :: [IntroducedInDijkstraPParams era] -> ShowS
Show)

createIntroducedInDijkstraPParams
  :: (Ledger.ConwayEraPParams ledgerera, Ledger.DijkstraEraPParams ledgerera)
  => IntroducedInDijkstraPParams ledgerera
  -> Ledger.PParamsUpdate ledgerera
createIntroducedInDijkstraPParams :: forall ledgerera.
(ConwayEraPParams ledgerera, DijkstraEraPParams ledgerera) =>
IntroducedInDijkstraPParams ledgerera -> PParamsUpdate ledgerera
createIntroducedInDijkstraPParams IntroducedInDijkstraPParams{StrictMaybe Word32
StrictMaybe (NonZero Word32)
StrictMaybe PositiveInterval
idMaxRefScriptSizePerBlock :: forall era. IntroducedInDijkstraPParams era -> StrictMaybe Word32
idMaxRefScriptSizePerTx :: forall era. IntroducedInDijkstraPParams era -> StrictMaybe Word32
idRefScriptCostStride :: forall era.
IntroducedInDijkstraPParams era -> StrictMaybe (NonZero Word32)
idRefScriptCostMultiplier :: forall era.
IntroducedInDijkstraPParams era -> StrictMaybe PositiveInterval
idMaxRefScriptSizePerBlock :: StrictMaybe Word32
idMaxRefScriptSizePerTx :: StrictMaybe Word32
idRefScriptCostStride :: StrictMaybe (NonZero Word32)
idRefScriptCostMultiplier :: StrictMaybe PositiveInterval
..} =
  PParamsUpdate ledgerera
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxRefScriptSizePerBlockL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word32
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word32
idMaxRefScriptSizePerBlock
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxRefScriptSizePerTxL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word32
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word32
idMaxRefScriptSizePerTx
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe (NonZero Word32)
 -> Identity (StrictMaybe (NonZero Word32)))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe (NonZero Word32))
Lens' (PParamsUpdate ledgerera) (StrictMaybe (NonZero Word32))
Ledger.ppuRefScriptCostStrideL ((StrictMaybe (NonZero Word32)
  -> Identity (StrictMaybe (NonZero Word32)))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe (NonZero Word32)
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe (NonZero Word32)
idRefScriptCostStride
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe PositiveInterval
 -> Identity (StrictMaybe PositiveInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe PositiveInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe PositiveInterval)
Ledger.ppuRefScriptCostMultiplierL ((StrictMaybe PositiveInterval
  -> Identity (StrictMaybe PositiveInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe PositiveInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe PositiveInterval
idRefScriptCostMultiplier

pparamsUpdateToIntroducedInDijkstraPParams
  :: Ledger.DijkstraEraPParams ledgerera
  => Ledger.PParamsUpdate ledgerera
  -> IntroducedInDijkstraPParams ledgerera
pparamsUpdateToIntroducedInDijkstraPParams :: forall ledgerera.
DijkstraEraPParams ledgerera =>
PParamsUpdate ledgerera -> IntroducedInDijkstraPParams ledgerera
pparamsUpdateToIntroducedInDijkstraPParams PParamsUpdate ledgerera
ppupdate =
  IntroducedInDijkstraPParams
    { idMaxRefScriptSizePerBlock :: StrictMaybe Word32
idMaxRefScriptSizePerBlock = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe Word32) (PParamsUpdate ledgerera) (StrictMaybe Word32)
-> StrictMaybe Word32
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word32) (PParamsUpdate ledgerera) (StrictMaybe Word32)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxRefScriptSizePerBlockL
    , idMaxRefScriptSizePerTx :: StrictMaybe Word32
idMaxRefScriptSizePerTx = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe Word32) (PParamsUpdate ledgerera) (StrictMaybe Word32)
-> StrictMaybe Word32
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word32) (PParamsUpdate ledgerera) (StrictMaybe Word32)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxRefScriptSizePerTxL
    , idRefScriptCostStride :: StrictMaybe (NonZero Word32)
idRefScriptCostStride = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe (NonZero Word32))
     (PParamsUpdate ledgerera)
     (StrictMaybe (NonZero Word32))
-> StrictMaybe (NonZero Word32)
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe (NonZero Word32))
  (PParamsUpdate ledgerera)
  (StrictMaybe (NonZero Word32))
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe (NonZero Word32))
Lens' (PParamsUpdate ledgerera) (StrictMaybe (NonZero Word32))
Ledger.ppuRefScriptCostStrideL
    , idRefScriptCostMultiplier :: StrictMaybe PositiveInterval
idRefScriptCostMultiplier = PParamsUpdate ledgerera
ppupdate PParamsUpdate ledgerera
-> Getting
     (StrictMaybe PositiveInterval)
     (PParamsUpdate ledgerera)
     (StrictMaybe PositiveInterval)
-> StrictMaybe PositiveInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe PositiveInterval)
  (PParamsUpdate ledgerera)
  (StrictMaybe PositiveInterval)
forall era.
DijkstraEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe PositiveInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe PositiveInterval)
Ledger.ppuRefScriptCostMultiplierL
    }

createEraBasedProtocolParamUpdate
  :: ShelleyBasedEra era
  -> EraBasedProtocolParametersUpdate era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
createEraBasedProtocolParamUpdate :: forall era.
ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
createEraBasedProtocolParamUpdate ShelleyBasedEra era
sbe EraBasedProtocolParametersUpdate era
eraPParamsUpdate =
  case EraBasedProtocolParametersUpdate era
eraPParamsUpdate of
    ShelleyEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c DeprecatedAfterMaryPParams ShelleyEra
depAfterMary DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage ShelleyToAlonzoPParams ShelleyEra
depAfterAlonzo ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe ShelleyEra
common = CommonProtocolParametersUpdate -> PParamsUpdate ShelleyEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe ShelleyEra
withProtVer = DeprecatedAfterBabbagePParams ShelleyEra
-> PParamsUpdate ShelleyEra
forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterMary' = ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxMaryEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams ShelleyEra
depAfterMary
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterAlonzo' = ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams ShelleyBasedEra era
sbe ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams ShelleyEra
depAfterAlonzo
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe ShelleyEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe ShelleyEra
ShelleyPParams StrictMaybe ShelleyEra
withProtVer ShelleyPParams StrictMaybe ShelleyEra
-> ShelleyPParams StrictMaybe ShelleyEra
-> ShelleyPParams StrictMaybe ShelleyEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe ShelleyEra
depAfterMary' ShelleyPParams StrictMaybe ShelleyEra
-> ShelleyPParams StrictMaybe ShelleyEra
-> ShelleyPParams StrictMaybe ShelleyEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe ShelleyEra
depAfterAlonzo'
    AllegraEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c DeprecatedAfterMaryPParams AllegraEra
depAfterMary ShelleyToAlonzoPParams AllegraEra
depAfterAlonzo DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe AllegraEra
common = CommonProtocolParametersUpdate -> PParamsUpdate AllegraEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe AllegraEra
withProtVer = DeprecatedAfterBabbagePParams ShelleyEra
-> PParamsUpdate AllegraEra
forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterMary' = ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxMaryEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams AllegraEra
depAfterMary
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterAlonzo' = ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams ShelleyBasedEra era
sbe ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams AllegraEra
depAfterAlonzo
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe AllegraEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe AllegraEra
ShelleyPParams StrictMaybe AllegraEra
withProtVer ShelleyPParams StrictMaybe AllegraEra
-> ShelleyPParams StrictMaybe AllegraEra
-> ShelleyPParams StrictMaybe AllegraEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe AllegraEra
depAfterMary' ShelleyPParams StrictMaybe AllegraEra
-> ShelleyPParams StrictMaybe AllegraEra
-> ShelleyPParams StrictMaybe AllegraEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe AllegraEra
depAfterAlonzo'
    MaryEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c DeprecatedAfterMaryPParams MaryEra
depAfterMary ShelleyToAlonzoPParams MaryEra
depAfterAlonzo DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe MaryEra
common = CommonProtocolParametersUpdate -> PParamsUpdate MaryEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe MaryEra
withProtVer = DeprecatedAfterBabbagePParams ShelleyEra -> PParamsUpdate MaryEra
forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterMary' = ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxMaryEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams MaryEra
depAfterMary
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterAlonzo' = ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams ShelleyBasedEra era
sbe ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams MaryEra
depAfterAlonzo
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe MaryEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe MaryEra
ShelleyPParams StrictMaybe MaryEra
withProtVer ShelleyPParams StrictMaybe MaryEra
-> ShelleyPParams StrictMaybe MaryEra
-> ShelleyPParams StrictMaybe MaryEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe MaryEra
depAfterMary' ShelleyPParams StrictMaybe MaryEra
-> ShelleyPParams StrictMaybe MaryEra
-> ShelleyPParams StrictMaybe MaryEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
ShelleyPParams StrictMaybe MaryEra
depAfterAlonzo'
    AlonzoEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c ShelleyToAlonzoPParams AlonzoEra
depAfterAlonzoA AlonzoOnwardsPParams AlonzoEra
introInAlon DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe AlonzoEra
common = CommonProtocolParametersUpdate -> PParamsUpdate AlonzoEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe AlonzoEra
withProtVer = DeprecatedAfterBabbagePParams ShelleyEra -> PParamsUpdate AlonzoEra
forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra AlonzoEra)
preAl' = AlonzoEraOnwards AlonzoEra
-> AlonzoOnwardsPParams AlonzoEra
-> PParamsUpdate (ShelleyLedgerEra AlonzoEra)
forall era.
AlonzoEraOnwards era
-> AlonzoOnwardsPParams era -> PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo AlonzoEraOnwards AlonzoEra
AlonzoEraOnwardsAlonzo AlonzoOnwardsPParams AlonzoEra
introInAlon
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra era)
depAfterAlonzoA' = ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams ShelleyBasedEra era
sbe ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams AlonzoEra
depAfterAlonzoA
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe AlonzoEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe AlonzoEra
AlonzoPParams StrictMaybe AlonzoEra
withProtVer AlonzoPParams StrictMaybe AlonzoEra
-> AlonzoPParams StrictMaybe AlonzoEra
-> AlonzoPParams StrictMaybe AlonzoEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra AlonzoEra)
AlonzoPParams StrictMaybe AlonzoEra
preAl' AlonzoPParams StrictMaybe AlonzoEra
-> AlonzoPParams StrictMaybe AlonzoEra
-> AlonzoPParams StrictMaybe AlonzoEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
AlonzoPParams StrictMaybe AlonzoEra
depAfterAlonzoA'
    BabbageEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c AlonzoOnwardsPParams BabbageEra
introInAlonzo DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage IntroducedInBabbagePParams BabbageEra
introInBabbage ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe BabbageEra
common = CommonProtocolParametersUpdate -> PParamsUpdate BabbageEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe BabbageEra
withProtVer = DeprecatedAfterBabbagePParams ShelleyEra
-> PParamsUpdate BabbageEra
forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra BabbageEra)
inAlonzoPParams = AlonzoEraOnwards BabbageEra
-> AlonzoOnwardsPParams BabbageEra
-> PParamsUpdate (ShelleyLedgerEra BabbageEra)
forall era.
AlonzoEraOnwards era
-> AlonzoOnwardsPParams era -> PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo AlonzoEraOnwards BabbageEra
AlonzoEraOnwardsBabbage AlonzoOnwardsPParams BabbageEra
introInAlonzo
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra BabbageEra)
inBAb = BabbageEraOnwards BabbageEra
-> IntroducedInBabbagePParams BabbageEra
-> PParamsUpdate (ShelleyLedgerEra BabbageEra)
forall era.
BabbageEraOnwards era
-> IntroducedInBabbagePParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createIntroducedInBabbagePParams BabbageEraOnwards BabbageEra
BabbageEraOnwardsBabbage IntroducedInBabbagePParams BabbageEra
introInBabbage
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe BabbageEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe BabbageEra
BabbagePParams StrictMaybe BabbageEra
withProtVer BabbagePParams StrictMaybe BabbageEra
-> BabbagePParams StrictMaybe BabbageEra
-> BabbagePParams StrictMaybe BabbageEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra BabbageEra)
BabbagePParams StrictMaybe BabbageEra
inAlonzoPParams BabbagePParams StrictMaybe BabbageEra
-> BabbagePParams StrictMaybe BabbageEra
-> BabbagePParams StrictMaybe BabbageEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra BabbageEra)
BabbagePParams StrictMaybe BabbageEra
inBAb
    ConwayEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
c AlonzoOnwardsPParams ConwayEra
introInAlonzo IntroducedInBabbagePParams ConwayEra
introInBabbage IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
introInConway ->
      let Ledger.PParamsUpdate PParamsHKD StrictMaybe ConwayEra
common = CommonProtocolParametersUpdate -> PParamsUpdate ConwayEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra ConwayEra)
inAlonzoPParams = AlonzoEraOnwards ConwayEra
-> AlonzoOnwardsPParams ConwayEra
-> PParamsUpdate (ShelleyLedgerEra ConwayEra)
forall era.
AlonzoEraOnwards era
-> AlonzoOnwardsPParams era -> PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo AlonzoEraOnwards ConwayEra
AlonzoEraOnwardsConway AlonzoOnwardsPParams ConwayEra
introInAlonzo
          Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra ConwayEra)
inBab = BabbageEraOnwards ConwayEra
-> IntroducedInBabbagePParams ConwayEra
-> PParamsUpdate (ShelleyLedgerEra ConwayEra)
forall era.
BabbageEraOnwards era
-> IntroducedInBabbagePParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createIntroducedInBabbagePParams BabbageEraOnwards ConwayEra
BabbageEraOnwardsConway IntroducedInBabbagePParams ConwayEra
introInBabbage
          Ledger.PParamsUpdate PParamsHKD StrictMaybe ConwayEra
inCon = IntroducedInConwayPParams ConwayEra -> PParamsUpdate ConwayEra
forall ledgerera.
ConwayEraPParams ledgerera =>
IntroducedInConwayPParams ledgerera -> PParamsUpdate ledgerera
createIntroducedInConwayPParams IntroducedInConwayPParams ConwayEra
IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
introInConway
       in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe ConwayEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra ConwayEra)
ConwayPParams StrictMaybe ConwayEra
inAlonzoPParams ConwayPParams StrictMaybe ConwayEra
-> ConwayPParams StrictMaybe ConwayEra
-> ConwayPParams StrictMaybe ConwayEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra ConwayEra)
ConwayPParams StrictMaybe ConwayEra
inBab ConwayPParams StrictMaybe ConwayEra
-> ConwayPParams StrictMaybe ConwayEra
-> ConwayPParams StrictMaybe ConwayEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe ConwayEra
ConwayPParams StrictMaybe ConwayEra
inCon
    DijkstraEraBasedProtocolParametersUpdate
      CommonProtocolParametersUpdate
c
      AlonzoOnwardsPParams DijkstraEra
introInAlonzo
      IntroducedInBabbagePParams DijkstraEra
introInBabbage
      IntroducedInConwayPParams (ShelleyLedgerEra DijkstraEra)
introInConway
      IntroducedInDijkstraPParams (ShelleyLedgerEra DijkstraEra)
introInDijkstra ->
        let Ledger.PParamsUpdate PParamsHKD StrictMaybe DijkstraEra
common = CommonProtocolParametersUpdate -> PParamsUpdate DijkstraEra
forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate
c
            Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra DijkstraEra)
inAlonzoPParams = AlonzoEraOnwards DijkstraEra
-> AlonzoOnwardsPParams DijkstraEra
-> PParamsUpdate (ShelleyLedgerEra DijkstraEra)
forall era.
AlonzoEraOnwards era
-> AlonzoOnwardsPParams era -> PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo AlonzoEraOnwards DijkstraEra
AlonzoEraOnwardsDijkstra AlonzoOnwardsPParams DijkstraEra
introInAlonzo
            Ledger.PParamsUpdate PParamsHKD StrictMaybe (ShelleyLedgerEra DijkstraEra)
inBab = BabbageEraOnwards DijkstraEra
-> IntroducedInBabbagePParams DijkstraEra
-> PParamsUpdate (ShelleyLedgerEra DijkstraEra)
forall era.
BabbageEraOnwards era
-> IntroducedInBabbagePParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createIntroducedInBabbagePParams BabbageEraOnwards DijkstraEra
BabbageEraOnwardsDijkstra IntroducedInBabbagePParams DijkstraEra
introInBabbage
            Ledger.PParamsUpdate PParamsHKD StrictMaybe DijkstraEra
inCon = IntroducedInConwayPParams DijkstraEra -> PParamsUpdate DijkstraEra
forall ledgerera.
ConwayEraPParams ledgerera =>
IntroducedInConwayPParams ledgerera -> PParamsUpdate ledgerera
createIntroducedInConwayPParams IntroducedInConwayPParams DijkstraEra
IntroducedInConwayPParams (ShelleyLedgerEra DijkstraEra)
introInConway
            Ledger.PParamsUpdate PParamsHKD StrictMaybe DijkstraEra
inDij = IntroducedInDijkstraPParams DijkstraEra
-> PParamsUpdate DijkstraEra
forall ledgerera.
(ConwayEraPParams ledgerera, DijkstraEraPParams ledgerera) =>
IntroducedInDijkstraPParams ledgerera -> PParamsUpdate ledgerera
createIntroducedInDijkstraPParams IntroducedInDijkstraPParams DijkstraEra
IntroducedInDijkstraPParams (ShelleyLedgerEra DijkstraEra)
introInDijkstra
         in PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall era. PParamsHKD StrictMaybe era -> PParamsUpdate era
Ledger.PParamsUpdate (PParamsHKD StrictMaybe (ShelleyLedgerEra era)
 -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$ PParamsHKD StrictMaybe DijkstraEra
PParamsHKD StrictMaybe (ShelleyLedgerEra era)
common PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
-> PParamsHKD StrictMaybe (ShelleyLedgerEra era)
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra DijkstraEra)
DijkstraPParams StrictMaybe DijkstraEra
inAlonzoPParams DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe (ShelleyLedgerEra DijkstraEra)
DijkstraPParams StrictMaybe DijkstraEra
inBab DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe DijkstraEra
DijkstraPParams StrictMaybe DijkstraEra
inCon DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
-> DijkstraPParams StrictMaybe DijkstraEra
forall a. Semigroup a => a -> a -> a
<> PParamsHKD StrictMaybe DijkstraEra
DijkstraPParams StrictMaybe DijkstraEra
inDij

-- | Protocol parameters common to each era. This can only ever be reduced
-- if parameters are deprecated.
data CommonProtocolParametersUpdate
  = CommonProtocolParametersUpdate
  { CommonProtocolParametersUpdate -> StrictMaybe CoinPerByte
cppTxFeePerByteL :: StrictMaybe Ledger.CoinPerByte
  , CommonProtocolParametersUpdate -> StrictMaybe Coin
cppTxFeeFixedL :: StrictMaybe Ledger.Coin
  , CommonProtocolParametersUpdate -> StrictMaybe Word32
cppMaxBlockBodySize :: StrictMaybe Word32
  , CommonProtocolParametersUpdate -> StrictMaybe Word32
cppMaxTxSize :: StrictMaybe Word32
  , CommonProtocolParametersUpdate -> StrictMaybe Word16
cppMaxBlockHeaderSize :: StrictMaybe Word16
  , CommonProtocolParametersUpdate -> StrictMaybe Coin
cppKeyDeposit :: StrictMaybe Ledger.Coin
  , CommonProtocolParametersUpdate -> StrictMaybe Coin
cppPoolDeposit :: StrictMaybe Ledger.Coin
  , CommonProtocolParametersUpdate -> StrictMaybe EpochInterval
cppPoolRetireMaxEpoch :: StrictMaybe Ledger.EpochInterval
  , CommonProtocolParametersUpdate -> StrictMaybe Word16
cppStakePoolTargetNum :: StrictMaybe Word16
  , CommonProtocolParametersUpdate -> StrictMaybe NonNegativeInterval
cppPoolPledgeInfluence :: StrictMaybe Ledger.NonNegativeInterval
  , CommonProtocolParametersUpdate -> StrictMaybe UnitInterval
cppTreasuryExpansion :: StrictMaybe Ledger.UnitInterval
  , CommonProtocolParametersUpdate -> StrictMaybe UnitInterval
cppMonetaryExpansion :: StrictMaybe Ledger.UnitInterval
  , CommonProtocolParametersUpdate -> StrictMaybe Coin
cppMinPoolCost :: StrictMaybe Ledger.Coin
  }
  deriving (CommonProtocolParametersUpdate
-> CommonProtocolParametersUpdate -> Bool
(CommonProtocolParametersUpdate
 -> CommonProtocolParametersUpdate -> Bool)
-> (CommonProtocolParametersUpdate
    -> CommonProtocolParametersUpdate -> Bool)
-> Eq CommonProtocolParametersUpdate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CommonProtocolParametersUpdate
-> CommonProtocolParametersUpdate -> Bool
== :: CommonProtocolParametersUpdate
-> CommonProtocolParametersUpdate -> Bool
$c/= :: CommonProtocolParametersUpdate
-> CommonProtocolParametersUpdate -> Bool
/= :: CommonProtocolParametersUpdate
-> CommonProtocolParametersUpdate -> Bool
Eq, Int -> CommonProtocolParametersUpdate -> ShowS
[CommonProtocolParametersUpdate] -> ShowS
CommonProtocolParametersUpdate -> String
(Int -> CommonProtocolParametersUpdate -> ShowS)
-> (CommonProtocolParametersUpdate -> String)
-> ([CommonProtocolParametersUpdate] -> ShowS)
-> Show CommonProtocolParametersUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CommonProtocolParametersUpdate -> ShowS
showsPrec :: Int -> CommonProtocolParametersUpdate -> ShowS
$cshow :: CommonProtocolParametersUpdate -> String
show :: CommonProtocolParametersUpdate -> String
$cshowList :: [CommonProtocolParametersUpdate] -> ShowS
showList :: [CommonProtocolParametersUpdate] -> ShowS
Show)

-- | Create a protocol parameters update with parameters common to all eras
createCommonPParamsUpdate
  :: EraPParams ledgerera => CommonProtocolParametersUpdate -> Ledger.PParamsUpdate ledgerera
createCommonPParamsUpdate :: forall ledgerera.
EraPParams ledgerera =>
CommonProtocolParametersUpdate -> PParamsUpdate ledgerera
createCommonPParamsUpdate CommonProtocolParametersUpdate{StrictMaybe Word16
StrictMaybe Word32
StrictMaybe CoinPerByte
StrictMaybe Coin
StrictMaybe EpochInterval
StrictMaybe NonNegativeInterval
StrictMaybe UnitInterval
cppTxFeePerByteL :: CommonProtocolParametersUpdate -> StrictMaybe CoinPerByte
cppTxFeeFixedL :: CommonProtocolParametersUpdate -> StrictMaybe Coin
cppMaxBlockBodySize :: CommonProtocolParametersUpdate -> StrictMaybe Word32
cppMaxTxSize :: CommonProtocolParametersUpdate -> StrictMaybe Word32
cppMaxBlockHeaderSize :: CommonProtocolParametersUpdate -> StrictMaybe Word16
cppKeyDeposit :: CommonProtocolParametersUpdate -> StrictMaybe Coin
cppPoolDeposit :: CommonProtocolParametersUpdate -> StrictMaybe Coin
cppPoolRetireMaxEpoch :: CommonProtocolParametersUpdate -> StrictMaybe EpochInterval
cppStakePoolTargetNum :: CommonProtocolParametersUpdate -> StrictMaybe Word16
cppPoolPledgeInfluence :: CommonProtocolParametersUpdate -> StrictMaybe NonNegativeInterval
cppTreasuryExpansion :: CommonProtocolParametersUpdate -> StrictMaybe UnitInterval
cppMonetaryExpansion :: CommonProtocolParametersUpdate -> StrictMaybe UnitInterval
cppMinPoolCost :: CommonProtocolParametersUpdate -> StrictMaybe Coin
cppTxFeePerByteL :: StrictMaybe CoinPerByte
cppTxFeeFixedL :: StrictMaybe Coin
cppMaxBlockBodySize :: StrictMaybe Word32
cppMaxTxSize :: StrictMaybe Word32
cppMaxBlockHeaderSize :: StrictMaybe Word16
cppKeyDeposit :: StrictMaybe Coin
cppPoolDeposit :: StrictMaybe Coin
cppPoolRetireMaxEpoch :: StrictMaybe EpochInterval
cppStakePoolTargetNum :: StrictMaybe Word16
cppPoolPledgeInfluence :: StrictMaybe NonNegativeInterval
cppTreasuryExpansion :: StrictMaybe UnitInterval
cppMonetaryExpansion :: StrictMaybe UnitInterval
cppMinPoolCost :: StrictMaybe Coin
..} =
  PParamsUpdate ledgerera
forall era. EraPParams era => PParamsUpdate era
emptyPParamsUpdate
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe CoinPerByte -> Identity (StrictMaybe CoinPerByte))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CoinPerByte)
Lens' (PParamsUpdate ledgerera) (StrictMaybe CoinPerByte)
Ledger.ppuTxFeePerByteL ((StrictMaybe CoinPerByte -> Identity (StrictMaybe CoinPerByte))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe CoinPerByte
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe CoinPerByte
cppTxFeePerByteL
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuTxFeeFixedL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
cppTxFeeFixedL
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxBBSizeL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word32
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word32
cppMaxBlockBodySize
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word32)
Ledger.ppuMaxTxSizeL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word32
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word32
cppMaxTxSize
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word16)
Ledger.ppuMaxBHSizeL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word16
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word16
cppMaxBlockHeaderSize
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuKeyDepositL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
cppKeyDeposit
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuPoolDepositL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
cppPoolDeposit
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe EpochInterval -> Identity (StrictMaybe EpochInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe EpochInterval)
Ledger.ppuEMaxL ((StrictMaybe EpochInterval
  -> Identity (StrictMaybe EpochInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe EpochInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe EpochInterval
cppPoolRetireMaxEpoch
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Word16)
Ledger.ppuNOptL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Word16
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word16
cppStakePoolTargetNum
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe NonNegativeInterval
 -> Identity (StrictMaybe NonNegativeInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe NonNegativeInterval)
Ledger.ppuA0L ((StrictMaybe NonNegativeInterval
  -> Identity (StrictMaybe NonNegativeInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe NonNegativeInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe NonNegativeInterval
cppPoolPledgeInfluence
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe UnitInterval)
Ledger.ppuTauL ((StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe UnitInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe UnitInterval
cppTreasuryExpansion
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens' (PParamsUpdate ledgerera) (StrictMaybe UnitInterval)
Ledger.ppuRhoL ((StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe UnitInterval
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe UnitInterval
cppMonetaryExpansion
    PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate ledgerera) (StrictMaybe Coin)
Ledger.ppuMinPoolCostL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe Coin
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
cppMinPoolCost

pparamsUpdateToCommonParametersUpdate
  :: ShelleyBasedEra era -> Ledger.PParamsUpdate (ShelleyLedgerEra era) -> CommonProtocolParametersUpdate
pparamsUpdateToCommonParametersUpdate :: forall era.
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> CommonProtocolParametersUpdate
pparamsUpdateToCommonParametersUpdate ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate =
  ShelleyBasedEra era
-> (ShelleyBasedEraConstraints era =>
    CommonProtocolParametersUpdate)
-> CommonProtocolParametersUpdate
forall era a.
ShelleyBasedEra era -> (ShelleyBasedEraConstraints era => a) -> a
shelleyBasedEraConstraints ShelleyBasedEra era
sbe ((ShelleyBasedEraConstraints era => CommonProtocolParametersUpdate)
 -> CommonProtocolParametersUpdate)
-> (ShelleyBasedEraConstraints era =>
    CommonProtocolParametersUpdate)
-> CommonProtocolParametersUpdate
forall a b. (a -> b) -> a -> b
$
    CommonProtocolParametersUpdate
      { cppTxFeePerByteL :: StrictMaybe CoinPerByte
cppTxFeePerByteL = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe CoinPerByte)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe CoinPerByte)
-> StrictMaybe CoinPerByte
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe CoinPerByte)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe CoinPerByte)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CoinPerByte)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe CoinPerByte)
Ledger.ppuTxFeePerByteL
      , cppTxFeeFixedL :: StrictMaybe Coin
cppTxFeeFixedL = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Coin)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Coin)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuTxFeeFixedL
      , cppMaxBlockBodySize :: StrictMaybe Word32
cppMaxBlockBodySize = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word32)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word32)
-> StrictMaybe Word32
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word32)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word32)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word32)
Ledger.ppuMaxBBSizeL
      , cppMaxTxSize :: StrictMaybe Word32
cppMaxTxSize = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word32)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word32)
-> StrictMaybe Word32
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word32)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word32)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word32)
Ledger.ppuMaxTxSizeL
      , cppMaxBlockHeaderSize :: StrictMaybe Word16
cppMaxBlockHeaderSize = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word16)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word16)
-> StrictMaybe Word16
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word16)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word16)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuMaxBHSizeL
      , cppKeyDeposit :: StrictMaybe Coin
cppKeyDeposit = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Coin)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Coin)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuKeyDepositL
      , cppPoolDeposit :: StrictMaybe Coin
cppPoolDeposit = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Coin)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Coin)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuPoolDepositL
      , cppPoolRetireMaxEpoch :: StrictMaybe EpochInterval
cppPoolRetireMaxEpoch = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe EpochInterval)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe EpochInterval)
-> StrictMaybe EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe EpochInterval)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe EpochInterval)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe EpochInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe EpochInterval)
Ledger.ppuEMaxL
      , cppStakePoolTargetNum :: StrictMaybe Word16
cppStakePoolTargetNum = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word16)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word16)
-> StrictMaybe Word16
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word16)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word16)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuNOptL
      , cppPoolPledgeInfluence :: StrictMaybe NonNegativeInterval
cppPoolPledgeInfluence = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe NonNegativeInterval)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe NonNegativeInterval)
-> StrictMaybe NonNegativeInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe NonNegativeInterval)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe NonNegativeInterval)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe NonNegativeInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe NonNegativeInterval)
Ledger.ppuA0L
      , cppTreasuryExpansion :: StrictMaybe UnitInterval
cppTreasuryExpansion = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe UnitInterval)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe UnitInterval)
-> StrictMaybe UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe UnitInterval)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe UnitInterval)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe UnitInterval)
Ledger.ppuTauL
      , cppMonetaryExpansion :: StrictMaybe UnitInterval
cppMonetaryExpansion = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe UnitInterval)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe UnitInterval)
-> StrictMaybe UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe UnitInterval)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe UnitInterval)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe UnitInterval)
Ledger.ppuRhoL
      , cppMinPoolCost :: StrictMaybe Coin
cppMinPoolCost = PParamsUpdate (ShelleyLedgerEra era)
pparamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Coin)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Coin)
forall era.
(EraPParams era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuMinPoolCostL
      }

-- | Updating protocol version with PParamUpdate is being prevented in Conway
-- (via the `ProtVerAtMost era 8` constraint in `ppuProtocolVersionL`).
-- As a consequence, ppuProtocolVersionL cannot be used in `createCommonPParamsUpdate`,
-- as was the case pre-Conway.
-- Here we isolate the usage of the lens, so that it can be used in each pre-conway era
-- when creating `Ledger.PParamsUpdate` within `createEraBasedProtocolParamUpdate`.
createPreConwayProtocolVersionUpdate
  :: (EraPParams ledgerera, Ledger.ProtVerAtMost ledgerera 8)
  => DeprecatedAfterBabbagePParams cppProtocolVersion
  -> Ledger.PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate :: forall ledgerera cppProtocolVersion.
(EraPParams ledgerera, ProtVerAtMost ledgerera 8) =>
DeprecatedAfterBabbagePParams cppProtocolVersion
-> PParamsUpdate ledgerera
createPreConwayProtocolVersionUpdate (DeprecatedAfterBabbagePParams StrictMaybe ProtVer
cppProtocolVersion) =
  PParamsUpdate ledgerera
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate PParamsUpdate ledgerera
-> (PParamsUpdate ledgerera -> PParamsUpdate ledgerera)
-> PParamsUpdate ledgerera
forall a b. a -> (a -> b) -> b
& (StrictMaybe ProtVer -> Identity (StrictMaybe ProtVer))
-> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera)
forall era.
(EraPParams era, AtMostEra "Babbage" era) =>
Lens' (PParamsUpdate era) (StrictMaybe ProtVer)
Lens' (PParamsUpdate ledgerera) (StrictMaybe ProtVer)
Ledger.ppuProtocolVersionL ((StrictMaybe ProtVer -> Identity (StrictMaybe ProtVer))
 -> PParamsUpdate ledgerera -> Identity (PParamsUpdate ledgerera))
-> StrictMaybe ProtVer
-> PParamsUpdate ledgerera
-> PParamsUpdate ledgerera
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ProtVer
cppProtocolVersion

newtype DeprecatedAfterBabbagePParams ledgerera
  = DeprecatedAfterBabbagePParams (StrictMaybe Ledger.ProtVer)
  deriving (DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
(DeprecatedAfterBabbagePParams ledgerera
 -> DeprecatedAfterBabbagePParams ledgerera -> Bool)
-> (DeprecatedAfterBabbagePParams ledgerera
    -> DeprecatedAfterBabbagePParams ledgerera -> Bool)
-> Eq (DeprecatedAfterBabbagePParams ledgerera)
forall ledgerera.
DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall ledgerera.
DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
== :: DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
$c/= :: forall ledgerera.
DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
/= :: DeprecatedAfterBabbagePParams ledgerera
-> DeprecatedAfterBabbagePParams ledgerera -> Bool
Eq, Int -> DeprecatedAfterBabbagePParams ledgerera -> ShowS
[DeprecatedAfterBabbagePParams ledgerera] -> ShowS
DeprecatedAfterBabbagePParams ledgerera -> String
(Int -> DeprecatedAfterBabbagePParams ledgerera -> ShowS)
-> (DeprecatedAfterBabbagePParams ledgerera -> String)
-> ([DeprecatedAfterBabbagePParams ledgerera] -> ShowS)
-> Show (DeprecatedAfterBabbagePParams ledgerera)
forall ledgerera.
Int -> DeprecatedAfterBabbagePParams ledgerera -> ShowS
forall ledgerera.
[DeprecatedAfterBabbagePParams ledgerera] -> ShowS
forall ledgerera. DeprecatedAfterBabbagePParams ledgerera -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall ledgerera.
Int -> DeprecatedAfterBabbagePParams ledgerera -> ShowS
showsPrec :: Int -> DeprecatedAfterBabbagePParams ledgerera -> ShowS
$cshow :: forall ledgerera. DeprecatedAfterBabbagePParams ledgerera -> String
show :: DeprecatedAfterBabbagePParams ledgerera -> String
$cshowList :: forall ledgerera.
[DeprecatedAfterBabbagePParams ledgerera] -> ShowS
showList :: [DeprecatedAfterBabbagePParams ledgerera] -> ShowS
Show)

type MaxBabbageEra ledgerera = Ledger.ProtVerAtMost ledgerera 8

pparamsUpdateToDeprecatedAfterBabbagePParams
  :: MaxBabbageEra (ShelleyLedgerEra era)
  => EraPParams (ShelleyLedgerEra era)
  => ShelleyBasedEra era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
  -> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams :: forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
_ PParamsUpdate (ShelleyLedgerEra era)
ppupdate =
  StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams ShelleyEra
forall ledgerera.
StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams ledgerera
DeprecatedAfterBabbagePParams (StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams ShelleyEra)
-> StrictMaybe ProtVer -> DeprecatedAfterBabbagePParams ShelleyEra
forall a b. (a -> b) -> a -> b
$
    PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe ProtVer)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe ProtVer)
-> StrictMaybe ProtVer
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe ProtVer)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe ProtVer)
forall era.
(EraPParams era, AtMostEra "Babbage" era) =>
Lens' (PParamsUpdate era) (StrictMaybe ProtVer)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe ProtVer)
Ledger.ppuProtocolVersionL

type MaxMaryEra ledgerera = Ledger.ProtVerAtMost ledgerera 4

newtype DeprecatedAfterMaryPParams ledgerera
  = DeprecatedAfterMaryPParams (StrictMaybe Ledger.Coin) -- Minimum UTxO value
  deriving (DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
(DeprecatedAfterMaryPParams ledgerera
 -> DeprecatedAfterMaryPParams ledgerera -> Bool)
-> (DeprecatedAfterMaryPParams ledgerera
    -> DeprecatedAfterMaryPParams ledgerera -> Bool)
-> Eq (DeprecatedAfterMaryPParams ledgerera)
forall ledgerera.
DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall ledgerera.
DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
== :: DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
$c/= :: forall ledgerera.
DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
/= :: DeprecatedAfterMaryPParams ledgerera
-> DeprecatedAfterMaryPParams ledgerera -> Bool
Eq, Int -> DeprecatedAfterMaryPParams ledgerera -> ShowS
[DeprecatedAfterMaryPParams ledgerera] -> ShowS
DeprecatedAfterMaryPParams ledgerera -> String
(Int -> DeprecatedAfterMaryPParams ledgerera -> ShowS)
-> (DeprecatedAfterMaryPParams ledgerera -> String)
-> ([DeprecatedAfterMaryPParams ledgerera] -> ShowS)
-> Show (DeprecatedAfterMaryPParams ledgerera)
forall ledgerera.
Int -> DeprecatedAfterMaryPParams ledgerera -> ShowS
forall ledgerera. [DeprecatedAfterMaryPParams ledgerera] -> ShowS
forall ledgerera. DeprecatedAfterMaryPParams ledgerera -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall ledgerera.
Int -> DeprecatedAfterMaryPParams ledgerera -> ShowS
showsPrec :: Int -> DeprecatedAfterMaryPParams ledgerera -> ShowS
$cshow :: forall ledgerera. DeprecatedAfterMaryPParams ledgerera -> String
show :: DeprecatedAfterMaryPParams ledgerera -> String
$cshowList :: forall ledgerera. [DeprecatedAfterMaryPParams ledgerera] -> ShowS
showList :: [DeprecatedAfterMaryPParams ledgerera] -> ShowS
Show)

createDeprecatedAfterMaryPParams
  :: EraPParams (ShelleyLedgerEra era)
  => MaxMaryEra (ShelleyLedgerEra era)
  => ShelleyBasedEra era -> DeprecatedAfterMaryPParams era -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterMaryPParams :: forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxMaryEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> DeprecatedAfterMaryPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterMaryPParams ShelleyBasedEra era
_ (DeprecatedAfterMaryPParams StrictMaybe Coin
minUtxoVal) =
  PParamsUpdate (ShelleyLedgerEra era)
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
(EraPParams era, AtMostEra "Mary" era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuMinUTxOValueL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Coin
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Coin
minUtxoVal

pparamsUpdateToDeprecatedAfterMaryPParams
  :: MaxMaryEra (ShelleyLedgerEra era)
  => EraPParams (ShelleyLedgerEra era)
  => ShelleyBasedEra era -> Ledger.PParamsUpdate (ShelleyLedgerEra era) -> DeprecatedAfterMaryPParams era
pparamsUpdateToDeprecatedAfterMaryPParams :: forall era.
(MaxMaryEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
pparamsUpdateToDeprecatedAfterMaryPParams ShelleyBasedEra era
_ PParamsUpdate (ShelleyLedgerEra era)
ppupdate =
  StrictMaybe Coin -> DeprecatedAfterMaryPParams era
forall ledgerera.
StrictMaybe Coin -> DeprecatedAfterMaryPParams ledgerera
DeprecatedAfterMaryPParams (StrictMaybe Coin -> DeprecatedAfterMaryPParams era)
-> StrictMaybe Coin -> DeprecatedAfterMaryPParams era
forall a b. (a -> b) -> a -> b
$
    PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Coin)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Coin)
-> StrictMaybe Coin
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Coin)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Coin)
forall era.
(EraPParams era, AtMostEra "Mary" era, HasCallStack) =>
Lens' (PParamsUpdate era) (StrictMaybe Coin)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Coin)
Ledger.ppuMinUTxOValueL

data ShelleyToAlonzoPParams ledgerera
  = ShelleyToAlonzoPParams
      (StrictMaybe Ledger.Nonce)
      -- ^ Extra entropy
      (StrictMaybe Ledger.UnitInterval)
      -- ^ Decentralization parameter
  deriving (ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
(ShelleyToAlonzoPParams ledgerera
 -> ShelleyToAlonzoPParams ledgerera -> Bool)
-> (ShelleyToAlonzoPParams ledgerera
    -> ShelleyToAlonzoPParams ledgerera -> Bool)
-> Eq (ShelleyToAlonzoPParams ledgerera)
forall ledgerera.
ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall ledgerera.
ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
== :: ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
$c/= :: forall ledgerera.
ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
/= :: ShelleyToAlonzoPParams ledgerera
-> ShelleyToAlonzoPParams ledgerera -> Bool
Eq, Int -> ShelleyToAlonzoPParams ledgerera -> ShowS
[ShelleyToAlonzoPParams ledgerera] -> ShowS
ShelleyToAlonzoPParams ledgerera -> String
(Int -> ShelleyToAlonzoPParams ledgerera -> ShowS)
-> (ShelleyToAlonzoPParams ledgerera -> String)
-> ([ShelleyToAlonzoPParams ledgerera] -> ShowS)
-> Show (ShelleyToAlonzoPParams ledgerera)
forall ledgerera. Int -> ShelleyToAlonzoPParams ledgerera -> ShowS
forall ledgerera. [ShelleyToAlonzoPParams ledgerera] -> ShowS
forall ledgerera. ShelleyToAlonzoPParams ledgerera -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall ledgerera. Int -> ShelleyToAlonzoPParams ledgerera -> ShowS
showsPrec :: Int -> ShelleyToAlonzoPParams ledgerera -> ShowS
$cshow :: forall ledgerera. ShelleyToAlonzoPParams ledgerera -> String
show :: ShelleyToAlonzoPParams ledgerera -> String
$cshowList :: forall ledgerera. [ShelleyToAlonzoPParams ledgerera] -> ShowS
showList :: [ShelleyToAlonzoPParams ledgerera] -> ShowS
Show)

type MaxAlonzoEra ledgerera = Ledger.ProtVerAtMost ledgerera 6

createDeprecatedAfterAlonzoPParams
  :: EraPParams (ShelleyLedgerEra era)
  => MaxAlonzoEra (ShelleyLedgerEra era)
  => ShelleyBasedEra era
  -> ShelleyToAlonzoPParams era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams :: forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> ShelleyToAlonzoPParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createDeprecatedAfterAlonzoPParams ShelleyBasedEra era
_ (ShelleyToAlonzoPParams StrictMaybe Nonce
extraEntropy StrictMaybe UnitInterval
decentralization) =
  PParamsUpdate (ShelleyLedgerEra era)
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate
    PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Nonce -> Identity (StrictMaybe Nonce))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
(EraPParams era, AtMostEra "Alonzo" era) =>
Lens' (PParamsUpdate era) (StrictMaybe Nonce)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Nonce)
Ledger.ppuExtraEntropyL ((StrictMaybe Nonce -> Identity (StrictMaybe Nonce))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Nonce
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Nonce
extraEntropy
    PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
(EraPParams era, AtMostEra "Alonzo" era) =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe UnitInterval)
Ledger.ppuDL ((StrictMaybe UnitInterval -> Identity (StrictMaybe UnitInterval))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe UnitInterval
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe UnitInterval
decentralization

pparamsUpdateToShelleyToAlonzoPParams
  :: EraPParams (ShelleyLedgerEra era)
  => MaxAlonzoEra (ShelleyLedgerEra era)
  => ShelleyBasedEra era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
  -> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams :: forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams ShelleyBasedEra era
_ PParamsUpdate (ShelleyLedgerEra era)
pparamUpdate =
  StrictMaybe Nonce
-> StrictMaybe UnitInterval -> ShelleyToAlonzoPParams era
forall ledgerera.
StrictMaybe Nonce
-> StrictMaybe UnitInterval -> ShelleyToAlonzoPParams ledgerera
ShelleyToAlonzoPParams
    (PParamsUpdate (ShelleyLedgerEra era)
pparamUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Nonce)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Nonce)
-> StrictMaybe Nonce
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Nonce)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Nonce)
forall era.
(EraPParams era, AtMostEra "Alonzo" era) =>
Lens' (PParamsUpdate era) (StrictMaybe Nonce)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Nonce)
Ledger.ppuExtraEntropyL)
    (PParamsUpdate (ShelleyLedgerEra era)
pparamUpdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe UnitInterval)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe UnitInterval)
-> StrictMaybe UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe UnitInterval)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe UnitInterval)
forall era.
(EraPParams era, AtMostEra "Alonzo" era) =>
Lens' (PParamsUpdate era) (StrictMaybe UnitInterval)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe UnitInterval)
Ledger.ppuDL)

data AlonzoOnwardsPParams ledgerera
  = AlonzoOnwardsPParams
  { forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe CostModels
alCostModels :: StrictMaybe Alonzo.CostModels
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Prices
alPrices :: StrictMaybe Alonzo.Prices
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe ExUnits
alMaxTxExUnits :: StrictMaybe Alonzo.ExUnits
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe ExUnits
alMaxBlockExUnits :: StrictMaybe Alonzo.ExUnits
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word32
alMaxValSize :: StrictMaybe Word32
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word16
alCollateralPercentage :: StrictMaybe Word16
  , forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word16
alMaxCollateralInputs :: StrictMaybe Word16
  }
  deriving (AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
(AlonzoOnwardsPParams ledgerera
 -> AlonzoOnwardsPParams ledgerera -> Bool)
-> (AlonzoOnwardsPParams ledgerera
    -> AlonzoOnwardsPParams ledgerera -> Bool)
-> Eq (AlonzoOnwardsPParams ledgerera)
forall ledgerera.
AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall ledgerera.
AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
== :: AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
$c/= :: forall ledgerera.
AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
/= :: AlonzoOnwardsPParams ledgerera
-> AlonzoOnwardsPParams ledgerera -> Bool
Eq, Int -> AlonzoOnwardsPParams ledgerera -> ShowS
[AlonzoOnwardsPParams ledgerera] -> ShowS
AlonzoOnwardsPParams ledgerera -> String
(Int -> AlonzoOnwardsPParams ledgerera -> ShowS)
-> (AlonzoOnwardsPParams ledgerera -> String)
-> ([AlonzoOnwardsPParams ledgerera] -> ShowS)
-> Show (AlonzoOnwardsPParams ledgerera)
forall ledgerera. Int -> AlonzoOnwardsPParams ledgerera -> ShowS
forall ledgerera. [AlonzoOnwardsPParams ledgerera] -> ShowS
forall ledgerera. AlonzoOnwardsPParams ledgerera -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall ledgerera. Int -> AlonzoOnwardsPParams ledgerera -> ShowS
showsPrec :: Int -> AlonzoOnwardsPParams ledgerera -> ShowS
$cshow :: forall ledgerera. AlonzoOnwardsPParams ledgerera -> String
show :: AlonzoOnwardsPParams ledgerera -> String
$cshowList :: forall ledgerera. [AlonzoOnwardsPParams ledgerera] -> ShowS
showList :: [AlonzoOnwardsPParams ledgerera] -> ShowS
Show)

createPParamsUpdateIntroducedInAlonzo
  :: ()
  => AlonzoEraOnwards era
  -> AlonzoOnwardsPParams era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo :: forall era.
AlonzoEraOnwards era
-> AlonzoOnwardsPParams era -> PParamsUpdate (ShelleyLedgerEra era)
createPParamsUpdateIntroducedInAlonzo AlonzoEraOnwards era
w (AlonzoOnwardsPParams{StrictMaybe Word16
StrictMaybe Word32
StrictMaybe ExUnits
StrictMaybe CostModels
StrictMaybe Prices
alCostModels :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe CostModels
alPrices :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Prices
alMaxTxExUnits :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe ExUnits
alMaxBlockExUnits :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe ExUnits
alMaxValSize :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word32
alCollateralPercentage :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word16
alMaxCollateralInputs :: forall ledgerera.
AlonzoOnwardsPParams ledgerera -> StrictMaybe Word16
alCostModels :: StrictMaybe CostModels
alPrices :: StrictMaybe Prices
alMaxTxExUnits :: StrictMaybe ExUnits
alMaxBlockExUnits :: StrictMaybe ExUnits
alMaxValSize :: StrictMaybe Word32
alCollateralPercentage :: StrictMaybe Word16
alMaxCollateralInputs :: StrictMaybe Word16
..}) =
  AlonzoEraOnwards era
-> (AlonzoEraOnwardsConstraints era =>
    PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall era a.
AlonzoEraOnwards era -> (AlonzoEraOnwardsConstraints era => a) -> a
alonzoEraOnwardsConstraints AlonzoEraOnwards era
w ((AlonzoEraOnwardsConstraints era =>
  PParamsUpdate (ShelleyLedgerEra era))
 -> PParamsUpdate (ShelleyLedgerEra era))
-> (AlonzoEraOnwardsConstraints era =>
    PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
    PParamsUpdate (ShelleyLedgerEra era)
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe CostModels -> Identity (StrictMaybe CostModels))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CostModels)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe CostModels)
Ledger.ppuCostModelsL ((StrictMaybe CostModels -> Identity (StrictMaybe CostModels))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe CostModels
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe CostModels
alCostModels
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Prices -> Identity (StrictMaybe Prices))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Prices)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Prices)
Ledger.ppuPricesL ((StrictMaybe Prices -> Identity (StrictMaybe Prices))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Prices
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Prices
alPrices
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe ExUnits -> Identity (StrictMaybe ExUnits))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe ExUnits)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe ExUnits)
Ledger.ppuMaxTxExUnitsL ((StrictMaybe ExUnits -> Identity (StrictMaybe ExUnits))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe ExUnits
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ExUnits
alMaxTxExUnits
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe ExUnits -> Identity (StrictMaybe ExUnits))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe ExUnits)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe ExUnits)
Ledger.ppuMaxBlockExUnitsL ((StrictMaybe ExUnits -> Identity (StrictMaybe ExUnits))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe ExUnits
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe ExUnits
alMaxBlockExUnits
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word32)
Ledger.ppuMaxValSizeL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Word32
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word32
alMaxValSize
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuCollateralPercentageL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Word16
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word16
alCollateralPercentage
      PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word16 -> Identity (StrictMaybe Word16))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuMaxCollateralInputsL ((StrictMaybe Word16 -> Identity (StrictMaybe Word16))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe Word16
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe Word16
alMaxCollateralInputs

pparamsUpdateToAlonzoOnwardsPParams
  :: AlonzoEraOnwards era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
  -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams :: forall era.
AlonzoEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era) -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams AlonzoEraOnwards era
w PParamsUpdate (ShelleyLedgerEra era)
ppupdate =
  AlonzoEraOnwards era
-> (AlonzoEraOnwardsConstraints era => AlonzoOnwardsPParams era)
-> AlonzoOnwardsPParams era
forall era a.
AlonzoEraOnwards era -> (AlonzoEraOnwardsConstraints era => a) -> a
alonzoEraOnwardsConstraints AlonzoEraOnwards era
w ((AlonzoEraOnwardsConstraints era => AlonzoOnwardsPParams era)
 -> AlonzoOnwardsPParams era)
-> (AlonzoEraOnwardsConstraints era => AlonzoOnwardsPParams era)
-> AlonzoOnwardsPParams era
forall a b. (a -> b) -> a -> b
$
    AlonzoOnwardsPParams
      { alCostModels :: StrictMaybe CostModels
alCostModels = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe CostModels)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe CostModels)
-> StrictMaybe CostModels
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe CostModels)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe CostModels)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CostModels)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe CostModels)
Ledger.ppuCostModelsL
      , alPrices :: StrictMaybe Prices
alPrices = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Prices)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Prices)
-> StrictMaybe Prices
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Prices)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Prices)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Prices)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Prices)
Ledger.ppuPricesL
      , alMaxTxExUnits :: StrictMaybe ExUnits
alMaxTxExUnits = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe ExUnits)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe ExUnits)
-> StrictMaybe ExUnits
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe ExUnits)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe ExUnits)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe ExUnits)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe ExUnits)
Ledger.ppuMaxTxExUnitsL
      , alMaxBlockExUnits :: StrictMaybe ExUnits
alMaxBlockExUnits = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe ExUnits)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe ExUnits)
-> StrictMaybe ExUnits
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe ExUnits)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe ExUnits)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe ExUnits)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe ExUnits)
Ledger.ppuMaxBlockExUnitsL
      , alMaxValSize :: StrictMaybe Word32
alMaxValSize = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word32)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word32)
-> StrictMaybe Word32
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word32)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word32)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word32)
Ledger.ppuMaxValSizeL
      , alCollateralPercentage :: StrictMaybe Word16
alCollateralPercentage = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word16)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word16)
-> StrictMaybe Word16
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word16)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word16)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuCollateralPercentageL
      , alMaxCollateralInputs :: StrictMaybe Word16
alMaxCollateralInputs = PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe Word16)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe Word16)
-> StrictMaybe Word16
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe Word16)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe Word16)
forall era.
AlonzoEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word16)
Lens' (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe Word16)
Ledger.ppuMaxCollateralInputsL
      }

newtype IntroducedInBabbagePParams era
  = -- | Coins per UTxO byte
    IntroducedInBabbagePParams
      (StrictMaybe CoinPerByte)
  deriving (IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
(IntroducedInBabbagePParams era
 -> IntroducedInBabbagePParams era -> Bool)
-> (IntroducedInBabbagePParams era
    -> IntroducedInBabbagePParams era -> Bool)
-> Eq (IntroducedInBabbagePParams era)
forall era.
IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
== :: IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
$c/= :: forall era.
IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
/= :: IntroducedInBabbagePParams era
-> IntroducedInBabbagePParams era -> Bool
Eq, Int -> IntroducedInBabbagePParams era -> ShowS
[IntroducedInBabbagePParams era] -> ShowS
IntroducedInBabbagePParams era -> String
(Int -> IntroducedInBabbagePParams era -> ShowS)
-> (IntroducedInBabbagePParams era -> String)
-> ([IntroducedInBabbagePParams era] -> ShowS)
-> Show (IntroducedInBabbagePParams era)
forall era. Int -> IntroducedInBabbagePParams era -> ShowS
forall era. [IntroducedInBabbagePParams era] -> ShowS
forall era. IntroducedInBabbagePParams era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> IntroducedInBabbagePParams era -> ShowS
showsPrec :: Int -> IntroducedInBabbagePParams era -> ShowS
$cshow :: forall era. IntroducedInBabbagePParams era -> String
show :: IntroducedInBabbagePParams era -> String
$cshowList :: forall era. [IntroducedInBabbagePParams era] -> ShowS
showList :: [IntroducedInBabbagePParams era] -> ShowS
Show)

createIntroducedInBabbagePParams
  :: ()
  => BabbageEraOnwards era
  -> IntroducedInBabbagePParams era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
createIntroducedInBabbagePParams :: forall era.
BabbageEraOnwards era
-> IntroducedInBabbagePParams era
-> PParamsUpdate (ShelleyLedgerEra era)
createIntroducedInBabbagePParams BabbageEraOnwards era
w (IntroducedInBabbagePParams StrictMaybe CoinPerByte
coinsPerUTxOByte) =
  BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era =>
    PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall era a.
BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era => a) -> a
babbageEraOnwardsConstraints BabbageEraOnwards era
w ((BabbageEraOnwardsConstraints era =>
  PParamsUpdate (ShelleyLedgerEra era))
 -> PParamsUpdate (ShelleyLedgerEra era))
-> (BabbageEraOnwardsConstraints era =>
    PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
    PParamsUpdate (ShelleyLedgerEra era)
forall era. EraPParams era => PParamsUpdate era
Ledger.emptyPParamsUpdate PParamsUpdate (ShelleyLedgerEra era)
-> (PParamsUpdate (ShelleyLedgerEra era)
    -> PParamsUpdate (ShelleyLedgerEra era))
-> PParamsUpdate (ShelleyLedgerEra era)
forall a b. a -> (a -> b) -> b
& (StrictMaybe CoinPerByte -> Identity (StrictMaybe CoinPerByte))
-> PParamsUpdate (ShelleyLedgerEra era)
-> Identity (PParamsUpdate (ShelleyLedgerEra era))
forall era.
BabbageEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CoinPerByte)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe CoinPerByte)
Ledger.ppuCoinsPerUTxOByteL ((StrictMaybe CoinPerByte -> Identity (StrictMaybe CoinPerByte))
 -> PParamsUpdate (ShelleyLedgerEra era)
 -> Identity (PParamsUpdate (ShelleyLedgerEra era)))
-> StrictMaybe CoinPerByte
-> PParamsUpdate (ShelleyLedgerEra era)
-> PParamsUpdate (ShelleyLedgerEra era)
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe CoinPerByte
coinsPerUTxOByte

pparamsUpdateToIntroducedInBabbagePParams
  :: BabbageEraOnwards era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
  -> IntroducedInBabbagePParams era
pparamsUpdateToIntroducedInBabbagePParams :: forall era.
BabbageEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era)
-> IntroducedInBabbagePParams era
pparamsUpdateToIntroducedInBabbagePParams BabbageEraOnwards era
w PParamsUpdate (ShelleyLedgerEra era)
ppupdate =
  BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era =>
    IntroducedInBabbagePParams era)
-> IntroducedInBabbagePParams era
forall era a.
BabbageEraOnwards era
-> (BabbageEraOnwardsConstraints era => a) -> a
babbageEraOnwardsConstraints BabbageEraOnwards era
w ((BabbageEraOnwardsConstraints era =>
  IntroducedInBabbagePParams era)
 -> IntroducedInBabbagePParams era)
-> (BabbageEraOnwardsConstraints era =>
    IntroducedInBabbagePParams era)
-> IntroducedInBabbagePParams era
forall a b. (a -> b) -> a -> b
$
    StrictMaybe CoinPerByte -> IntroducedInBabbagePParams era
forall era.
StrictMaybe CoinPerByte -> IntroducedInBabbagePParams era
IntroducedInBabbagePParams (PParamsUpdate (ShelleyLedgerEra era)
ppupdate PParamsUpdate (ShelleyLedgerEra era)
-> Getting
     (StrictMaybe CoinPerByte)
     (PParamsUpdate (ShelleyLedgerEra era))
     (StrictMaybe CoinPerByte)
-> StrictMaybe CoinPerByte
forall s a. s -> Getting a s a -> a
^. Getting
  (StrictMaybe CoinPerByte)
  (PParamsUpdate (ShelleyLedgerEra era))
  (StrictMaybe CoinPerByte)
forall era.
BabbageEraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe CoinPerByte)
Lens'
  (PParamsUpdate (ShelleyLedgerEra era)) (StrictMaybe CoinPerByte)
Ledger.ppuCoinsPerUTxOByteL)

-- ----------------------------------------------------------------------------
-- Proposals embedded in transactions to update protocol parameters
--

data UpdateProposal era
  = UpdateProposal
      !(Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))
      !EpochNo
  deriving stock (UpdateProposal era -> UpdateProposal era -> Bool
(UpdateProposal era -> UpdateProposal era -> Bool)
-> (UpdateProposal era -> UpdateProposal era -> Bool)
-> Eq (UpdateProposal era)
forall era. UpdateProposal era -> UpdateProposal era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era. UpdateProposal era -> UpdateProposal era -> Bool
== :: UpdateProposal era -> UpdateProposal era -> Bool
$c/= :: forall era. UpdateProposal era -> UpdateProposal era -> Bool
/= :: UpdateProposal era -> UpdateProposal era -> Bool
Eq, Int -> UpdateProposal era -> ShowS
[UpdateProposal era] -> ShowS
UpdateProposal era -> String
(Int -> UpdateProposal era -> ShowS)
-> (UpdateProposal era -> String)
-> ([UpdateProposal era] -> ShowS)
-> Show (UpdateProposal era)
forall era. Int -> UpdateProposal era -> ShowS
forall era. [UpdateProposal era] -> ShowS
forall era. UpdateProposal era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era. Int -> UpdateProposal era -> ShowS
showsPrec :: Int -> UpdateProposal era -> ShowS
$cshow :: forall era. UpdateProposal era -> String
show :: UpdateProposal era -> String
$cshowList :: forall era. [UpdateProposal era] -> ShowS
showList :: [UpdateProposal era] -> ShowS
Show)
  deriving anyclass HasTypeProxy (UpdateProposal era)
AsType (UpdateProposal era)
-> ByteString -> Either DecoderError (UpdateProposal era)
HasTypeProxy (UpdateProposal era) =>
(UpdateProposal era -> ByteString)
-> (AsType (UpdateProposal era)
    -> ByteString -> Either DecoderError (UpdateProposal era))
-> SerialiseAsCBOR (UpdateProposal era)
UpdateProposal era -> ByteString
forall a.
HasTypeProxy a =>
(a -> ByteString)
-> (AsType a -> ByteString -> Either DecoderError a)
-> SerialiseAsCBOR a
forall era.
IsShelleyBasedEra era =>
HasTypeProxy (UpdateProposal era)
forall era.
IsShelleyBasedEra era =>
AsType (UpdateProposal era)
-> ByteString -> Either DecoderError (UpdateProposal era)
forall era.
IsShelleyBasedEra era =>
UpdateProposal era -> ByteString
$cserialiseToCBOR :: forall era.
IsShelleyBasedEra era =>
UpdateProposal era -> ByteString
serialiseToCBOR :: UpdateProposal era -> ByteString
$cdeserialiseFromCBOR :: forall era.
IsShelleyBasedEra era =>
AsType (UpdateProposal era)
-> ByteString -> Either DecoderError (UpdateProposal era)
deserialiseFromCBOR :: AsType (UpdateProposal era)
-> ByteString -> Either DecoderError (UpdateProposal era)
SerialiseAsCBOR

instance Typeable era => HasTypeProxy (UpdateProposal era) where
  data AsType (UpdateProposal era) = AsUpdateProposal
  proxyToAsType :: Proxy (UpdateProposal era) -> AsType (UpdateProposal era)
proxyToAsType Proxy (UpdateProposal era)
_ = AsType (UpdateProposal era)
forall era. AsType (UpdateProposal era)
AsUpdateProposal

instance IsShelleyBasedEra era => HasTextEnvelope (UpdateProposal era) where
  textEnvelopeType :: AsType (UpdateProposal era) -> TextEnvelopeType
textEnvelopeType AsType (UpdateProposal era)
_ = TextEnvelopeType
"UpdateProposalShelley"

instance IsShelleyBasedEra era => ToCBOR (UpdateProposal era) where
  toCBOR :: UpdateProposal era -> Encoding
toCBOR (UpdateProposal Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
ppup EpochNo
epochno) =
    Word -> Encoding
CBOR.encodeListLen Word
2
      Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> Encoding
forall a. ToCBOR a => a -> Encoding
toCBOR Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
ppup
      Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> EpochNo -> Encoding
forall a. ToCBOR a => a -> Encoding
toCBOR EpochNo
epochno

instance IsShelleyBasedEra era => FromCBOR (UpdateProposal era) where
  fromCBOR :: forall s. Decoder s (UpdateProposal era)
fromCBOR = do
    Text -> Int -> Decoder s ()
forall s. Text -> Int -> Decoder s ()
CBOR.enforceSize Text
"UpdateProposal" Int
2
    Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
forall era.
Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
UpdateProposal
      (Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
 -> EpochNo -> UpdateProposal era)
-> Decoder
     s (Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))
-> Decoder s (EpochNo -> UpdateProposal era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder
  s (Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))
forall s.
Decoder
  s (Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))
forall a s. FromCBOR a => Decoder s a
fromCBOR
      Decoder s (EpochNo -> UpdateProposal era)
-> Decoder s EpochNo -> Decoder s (UpdateProposal era)
forall a b. Decoder s (a -> b) -> Decoder s a -> Decoder s b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Decoder s EpochNo
forall s. Decoder s EpochNo
forall a s. FromCBOR a => Decoder s a
fromCBOR

makeShelleyUpdateProposal
  :: EraBasedProtocolParametersUpdate era
  -> [Hash GenesisKey]
  -> EpochNo
  -> UpdateProposal era
makeShelleyUpdateProposal :: forall era.
EraBasedProtocolParametersUpdate era
-> [Hash GenesisKey] -> EpochNo -> UpdateProposal era
makeShelleyUpdateProposal EraBasedProtocolParametersUpdate era
params [Hash GenesisKey]
genesisKeyHashes =
  -- TODO decide how to handle parameter validation
  --     for example we need to validate the Rational values can convert
  --     into the UnitInterval type ok.
  Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
forall era.
Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
UpdateProposal ([Item
   (Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))]
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
forall l. IsList l => [Item l] -> l
fromList [(Hash GenesisKey
kh, EraBasedProtocolParametersUpdate era
params) | Hash GenesisKey
kh <- [Hash GenesisKey]
genesisKeyHashes])

-- ----------------------------------------------------------------------------
-- Conversion functions: updates to ledger types
--

toLedgerUpdate
  :: ()
  => ShelleyBasedEra era
  -> UpdateProposal era
  -> Ledger.Update (ShelleyLedgerEra era)
toLedgerUpdate :: forall era.
ShelleyBasedEra era
-> UpdateProposal era -> Update (ShelleyLedgerEra era)
toLedgerUpdate ShelleyBasedEra era
sbe (UpdateProposal Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
ppup EpochNo
epochno) =
  ProposedPPUpdates (ShelleyLedgerEra era)
-> EpochNo -> Update (ShelleyLedgerEra era)
forall era. ProposedPPUpdates era -> EpochNo -> Update era
Ledger.Update (ShelleyBasedEra era
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> ProposedPPUpdates (ShelleyLedgerEra era)
forall era.
ShelleyBasedEra era
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> ProposedPPUpdates (ShelleyLedgerEra era)
toLedgerProposedPPUpdates ShelleyBasedEra era
sbe Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
ppup) EpochNo
epochno

toLedgerProposedPPUpdates
  :: ()
  => ShelleyBasedEra era
  -> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
  -> Ledger.ProposedPPUpdates (ShelleyLedgerEra era)
toLedgerProposedPPUpdates :: forall era.
ShelleyBasedEra era
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> ProposedPPUpdates (ShelleyLedgerEra era)
toLedgerProposedPPUpdates ShelleyBasedEra era
sbe Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
m =
  Map (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era))
-> ProposedPPUpdates (ShelleyLedgerEra era)
forall era.
Map (KeyHash GenesisRole) (PParamsUpdate era)
-> ProposedPPUpdates era
Ledger.ProposedPPUpdates (Map (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era))
 -> ProposedPPUpdates (ShelleyLedgerEra era))
-> Map (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era))
-> ProposedPPUpdates (ShelleyLedgerEra era)
forall a b. (a -> b) -> a -> b
$
    (Hash GenesisKey -> KeyHash GenesisRole)
-> Map (Hash GenesisKey) (PParamsUpdate (ShelleyLedgerEra era))
-> Map (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era))
forall k1 k2 a. (k1 -> k2) -> Map k1 a -> Map k2 a
Map.mapKeysMonotonic (\(GenesisKeyHash KeyHash GenesisRole
kh) -> KeyHash GenesisRole
kh) (Map (Hash GenesisKey) (PParamsUpdate (ShelleyLedgerEra era))
 -> Map
      (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era)))
-> Map (Hash GenesisKey) (PParamsUpdate (ShelleyLedgerEra era))
-> Map (KeyHash GenesisRole) (PParamsUpdate (ShelleyLedgerEra era))
forall a b. (a -> b) -> a -> b
$
      (EraBasedProtocolParametersUpdate era
 -> PParamsUpdate (ShelleyLedgerEra era))
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> Map (Hash GenesisKey) (PParamsUpdate (ShelleyLedgerEra era))
forall a b k. (a -> b) -> Map k a -> Map k b
Map.map (ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
forall era.
ShelleyBasedEra era
-> EraBasedProtocolParametersUpdate era
-> PParamsUpdate (ShelleyLedgerEra era)
createEraBasedProtocolParamUpdate ShelleyBasedEra era
sbe) Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
m

-- ----------------------------------------------------------------------------
-- Conversion functions: updates from ledger types
--

fromLedgerUpdate
  :: forall era ledgerera
   . ShelleyLedgerEra era ~ ledgerera
  => ShelleyBasedEra era
  -> Ledger.Update ledgerera
  -> UpdateProposal era
fromLedgerUpdate :: forall era ledgerera.
(ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era -> Update ledgerera -> UpdateProposal era
fromLedgerUpdate ShelleyBasedEra era
sbe (Ledger.Update ProposedPPUpdates ledgerera
ppup EpochNo
epochno) =
  Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
forall era.
Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
-> EpochNo -> UpdateProposal era
UpdateProposal (ShelleyBasedEra era
-> ProposedPPUpdates ledgerera
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
forall era ledgerera.
(ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era
-> ProposedPPUpdates ledgerera
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
fromLedgerProposedPPUpdates ShelleyBasedEra era
sbe ProposedPPUpdates ledgerera
ppup) EpochNo
epochno

fromLedgerProposedPPUpdates
  :: forall era ledgerera
   . ShelleyLedgerEra era ~ ledgerera
  => ShelleyBasedEra era
  -> Ledger.ProposedPPUpdates ledgerera
  -> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
fromLedgerProposedPPUpdates :: forall era ledgerera.
(ShelleyLedgerEra era ~ ledgerera) =>
ShelleyBasedEra era
-> ProposedPPUpdates ledgerera
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
fromLedgerProposedPPUpdates ShelleyBasedEra era
sbe =
  (PParamsUpdate ledgerera -> EraBasedProtocolParametersUpdate era)
-> Map (Hash GenesisKey) (PParamsUpdate ledgerera)
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
forall a b k. (a -> b) -> Map k a -> Map k b
Map.map (ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> EraBasedProtocolParametersUpdate era
forall era.
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> EraBasedProtocolParametersUpdate era
fromLedgerPParamsUpdate ShelleyBasedEra era
sbe)
    (Map (Hash GenesisKey) (PParamsUpdate ledgerera)
 -> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era))
-> (ProposedPPUpdates ledgerera
    -> Map (Hash GenesisKey) (PParamsUpdate ledgerera))
-> ProposedPPUpdates ledgerera
-> Map (Hash GenesisKey) (EraBasedProtocolParametersUpdate era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (KeyHash GenesisRole -> Hash GenesisKey)
-> Map (KeyHash GenesisRole) (PParamsUpdate ledgerera)
-> Map (Hash GenesisKey) (PParamsUpdate ledgerera)
forall k1 k2 a. (k1 -> k2) -> Map k1 a -> Map k2 a
Map.mapKeysMonotonic KeyHash GenesisRole -> Hash GenesisKey
GenesisKeyHash
    (Map (KeyHash GenesisRole) (PParamsUpdate ledgerera)
 -> Map (Hash GenesisKey) (PParamsUpdate ledgerera))
-> (ProposedPPUpdates ledgerera
    -> Map (KeyHash GenesisRole) (PParamsUpdate ledgerera))
-> ProposedPPUpdates ledgerera
-> Map (Hash GenesisKey) (PParamsUpdate ledgerera)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (\(Ledger.ProposedPPUpdates Map (KeyHash GenesisRole) (PParamsUpdate ledgerera)
ppup) -> Map (KeyHash GenesisRole) (PParamsUpdate ledgerera)
ppup)

fromLedgerPParamsUpdate
  :: ShelleyBasedEra era
  -> Ledger.PParamsUpdate (ShelleyLedgerEra era)
  -> EraBasedProtocolParametersUpdate era
fromLedgerPParamsUpdate :: forall era.
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> EraBasedProtocolParametersUpdate era
fromLedgerPParamsUpdate ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup =
  let common :: CommonProtocolParametersUpdate
common = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> CommonProtocolParametersUpdate
forall era.
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> CommonProtocolParametersUpdate
pparamsUpdateToCommonParametersUpdate ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
   in case ShelleyBasedEra era
sbe of
        ShelleyBasedEra era
ShelleyBasedEraShelley ->
          let depAfterMary :: DeprecatedAfterMaryPParams era
depAfterMary = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
forall era.
(MaxMaryEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
pparamsUpdateToDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              sToAPParamsUpdate :: ShelleyToAlonzoPParams era
sToAPParamsUpdate = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              depAfterBabbage :: DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
           in CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams ShelleyEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> ShelleyToAlonzoPParams ShelleyEra
-> EraBasedProtocolParametersUpdate ShelleyEra
ShelleyEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams ShelleyEra
depAfterMary DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams ShelleyEra
sToAPParamsUpdate
        ShelleyBasedEra era
ShelleyBasedEraAllegra ->
          let depAfterMary :: DeprecatedAfterMaryPParams era
depAfterMary = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
forall era.
(MaxMaryEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
pparamsUpdateToDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              sToAPParamsUpdate :: ShelleyToAlonzoPParams era
sToAPParamsUpdate = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              depAfterBabbage :: DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
           in CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams AllegraEra
-> ShelleyToAlonzoPParams AllegraEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate AllegraEra
AllegraEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams AllegraEra
depAfterMary ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams AllegraEra
sToAPParamsUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
        ShelleyBasedEra era
ShelleyBasedEraMary ->
          let depAfterMary :: DeprecatedAfterMaryPParams era
depAfterMary = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
forall era.
(MaxMaryEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterMaryPParams era
pparamsUpdateToDeprecatedAfterMaryPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              sToAPParamsUpdate :: ShelleyToAlonzoPParams era
sToAPParamsUpdate = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              depAfterBabbage :: DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
           in CommonProtocolParametersUpdate
-> DeprecatedAfterMaryPParams MaryEra
-> ShelleyToAlonzoPParams MaryEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate MaryEra
MaryEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common DeprecatedAfterMaryPParams era
DeprecatedAfterMaryPParams MaryEra
depAfterMary ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams MaryEra
sToAPParamsUpdate DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
        ShelleyBasedEra era
ShelleyBasedEraAlonzo ->
          let sToAPParamsUpdate :: ShelleyToAlonzoPParams era
sToAPParamsUpdate = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
forall era.
(EraPParams (ShelleyLedgerEra era),
 MaxAlonzoEra (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> ShelleyToAlonzoPParams era
pparamsUpdateToShelleyToAlonzoPParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              depAfterBabbage :: DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              introInAlonzo :: AlonzoOnwardsPParams AlonzoEra
introInAlonzo = AlonzoEraOnwards AlonzoEra
-> PParamsUpdate (ShelleyLedgerEra AlonzoEra)
-> AlonzoOnwardsPParams AlonzoEra
forall era.
AlonzoEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era) -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams AlonzoEraOnwards AlonzoEra
AlonzoEraOnwardsAlonzo PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra AlonzoEra)
ppup
           in CommonProtocolParametersUpdate
-> ShelleyToAlonzoPParams AlonzoEra
-> AlonzoOnwardsPParams AlonzoEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> EraBasedProtocolParametersUpdate AlonzoEra
AlonzoEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common ShelleyToAlonzoPParams era
ShelleyToAlonzoPParams AlonzoEra
sToAPParamsUpdate AlonzoOnwardsPParams AlonzoEra
introInAlonzo DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage
        ShelleyBasedEra era
ShelleyBasedEraBabbage ->
          let depAfterBabbage :: DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage = ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
forall era.
(MaxBabbageEra (ShelleyLedgerEra era),
 EraPParams (ShelleyLedgerEra era)) =>
ShelleyBasedEra era
-> PParamsUpdate (ShelleyLedgerEra era)
-> DeprecatedAfterBabbagePParams ShelleyEra
pparamsUpdateToDeprecatedAfterBabbagePParams ShelleyBasedEra era
sbe PParamsUpdate (ShelleyLedgerEra era)
ppup
              introInAlonzo :: AlonzoOnwardsPParams BabbageEra
introInAlonzo = AlonzoEraOnwards BabbageEra
-> PParamsUpdate (ShelleyLedgerEra BabbageEra)
-> AlonzoOnwardsPParams BabbageEra
forall era.
AlonzoEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era) -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams AlonzoEraOnwards BabbageEra
AlonzoEraOnwardsBabbage PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra BabbageEra)
ppup
              introInBabbage :: IntroducedInBabbagePParams BabbageEra
introInBabbage = BabbageEraOnwards BabbageEra
-> PParamsUpdate (ShelleyLedgerEra BabbageEra)
-> IntroducedInBabbagePParams BabbageEra
forall era.
BabbageEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era)
-> IntroducedInBabbagePParams era
pparamsUpdateToIntroducedInBabbagePParams BabbageEraOnwards BabbageEra
BabbageEraOnwardsBabbage PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra BabbageEra)
ppup
           in CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams BabbageEra
-> DeprecatedAfterBabbagePParams ShelleyEra
-> IntroducedInBabbagePParams BabbageEra
-> EraBasedProtocolParametersUpdate BabbageEra
BabbageEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common AlonzoOnwardsPParams BabbageEra
introInAlonzo DeprecatedAfterBabbagePParams ShelleyEra
depAfterBabbage IntroducedInBabbagePParams BabbageEra
introInBabbage
        ShelleyBasedEra era
ShelleyBasedEraConway ->
          let introInAlonzo :: AlonzoOnwardsPParams ConwayEra
introInAlonzo = AlonzoEraOnwards ConwayEra
-> PParamsUpdate (ShelleyLedgerEra ConwayEra)
-> AlonzoOnwardsPParams ConwayEra
forall era.
AlonzoEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era) -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams AlonzoEraOnwards ConwayEra
AlonzoEraOnwardsConway PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra ConwayEra)
ppup
              introInBabbage :: IntroducedInBabbagePParams ConwayEra
introInBabbage = BabbageEraOnwards ConwayEra
-> PParamsUpdate (ShelleyLedgerEra ConwayEra)
-> IntroducedInBabbagePParams ConwayEra
forall era.
BabbageEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era)
-> IntroducedInBabbagePParams era
pparamsUpdateToIntroducedInBabbagePParams BabbageEraOnwards ConwayEra
BabbageEraOnwardsConway PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra ConwayEra)
ppup
              introInConway :: IntroducedInConwayPParams ConwayEra
introInConway = PParamsUpdate ConwayEra -> IntroducedInConwayPParams ConwayEra
forall ledgerera.
ConwayEraPParams ledgerera =>
PParamsUpdate ledgerera -> IntroducedInConwayPParams ledgerera
pparamsUpdateToIntroducedInConwayPParams PParamsUpdate ConwayEra
PParamsUpdate (ShelleyLedgerEra era)
ppup
           in CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams ConwayEra
-> IntroducedInBabbagePParams ConwayEra
-> IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
-> EraBasedProtocolParametersUpdate ConwayEra
ConwayEraBasedProtocolParametersUpdate CommonProtocolParametersUpdate
common AlonzoOnwardsPParams ConwayEra
introInAlonzo IntroducedInBabbagePParams ConwayEra
introInBabbage IntroducedInConwayPParams ConwayEra
IntroducedInConwayPParams (ShelleyLedgerEra ConwayEra)
introInConway
        ShelleyBasedEra era
ShelleyBasedEraDijkstra ->
          let introInAlonzo :: AlonzoOnwardsPParams DijkstraEra
introInAlonzo = AlonzoEraOnwards DijkstraEra
-> PParamsUpdate (ShelleyLedgerEra DijkstraEra)
-> AlonzoOnwardsPParams DijkstraEra
forall era.
AlonzoEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era) -> AlonzoOnwardsPParams era
pparamsUpdateToAlonzoOnwardsPParams AlonzoEraOnwards DijkstraEra
AlonzoEraOnwardsDijkstra PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra DijkstraEra)
ppup
              introInBabbage :: IntroducedInBabbagePParams DijkstraEra
introInBabbage = BabbageEraOnwards DijkstraEra
-> PParamsUpdate (ShelleyLedgerEra DijkstraEra)
-> IntroducedInBabbagePParams DijkstraEra
forall era.
BabbageEraOnwards era
-> PParamsUpdate (ShelleyLedgerEra era)
-> IntroducedInBabbagePParams era
pparamsUpdateToIntroducedInBabbagePParams BabbageEraOnwards DijkstraEra
BabbageEraOnwardsDijkstra PParamsUpdate (ShelleyLedgerEra era)
PParamsUpdate (ShelleyLedgerEra DijkstraEra)
ppup
              introInConway :: IntroducedInConwayPParams DijkstraEra
introInConway = PParamsUpdate DijkstraEra -> IntroducedInConwayPParams DijkstraEra
forall ledgerera.
ConwayEraPParams ledgerera =>
PParamsUpdate ledgerera -> IntroducedInConwayPParams ledgerera
pparamsUpdateToIntroducedInConwayPParams PParamsUpdate DijkstraEra
PParamsUpdate (ShelleyLedgerEra era)
ppup
              introInDijkstra :: IntroducedInDijkstraPParams DijkstraEra
introInDijkstra = PParamsUpdate DijkstraEra
-> IntroducedInDijkstraPParams DijkstraEra
forall ledgerera.
DijkstraEraPParams ledgerera =>
PParamsUpdate ledgerera -> IntroducedInDijkstraPParams ledgerera
pparamsUpdateToIntroducedInDijkstraPParams PParamsUpdate DijkstraEra
PParamsUpdate (ShelleyLedgerEra era)
ppup
           in CommonProtocolParametersUpdate
-> AlonzoOnwardsPParams DijkstraEra
-> IntroducedInBabbagePParams DijkstraEra
-> IntroducedInConwayPParams (ShelleyLedgerEra DijkstraEra)
-> IntroducedInDijkstraPParams (ShelleyLedgerEra DijkstraEra)
-> EraBasedProtocolParametersUpdate DijkstraEra
DijkstraEraBasedProtocolParametersUpdate
                CommonProtocolParametersUpdate
common
                AlonzoOnwardsPParams DijkstraEra
introInAlonzo
                IntroducedInBabbagePParams DijkstraEra
introInBabbage
                IntroducedInConwayPParams DijkstraEra
IntroducedInConwayPParams (ShelleyLedgerEra DijkstraEra)
introInConway
                IntroducedInDijkstraPParams DijkstraEra
IntroducedInDijkstraPParams (ShelleyLedgerEra DijkstraEra)
introInDijkstra