{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Conway.Transition (
ConwayEraTransition (..),
TransitionConfig (..),
toConwayTransitionConfigPairs,
) where
import Cardano.Ledger.Alonzo.Transition (toAlonzoTransitionConfigPairs)
import Cardano.Ledger.Babbage
import Cardano.Ledger.Babbage.Transition (TransitionConfig (BabbageTransitionConfig))
import Cardano.Ledger.Conway.Era
import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..), toConwayGenesisPairs)
import Cardano.Ledger.Conway.Rules.Deleg (processDelegation)
import Cardano.Ledger.Conway.State (
ConwayEraCertState (..),
vsDRepsL,
)
import Cardano.Ledger.Conway.Translation ()
import Cardano.Ledger.Conway.TxCert (Delegatee)
import Cardano.Ledger.Credential (Credential)
import Cardano.Ledger.DRep (DRepState)
import Cardano.Ledger.Keys (KeyRole (..))
import Cardano.Ledger.Shelley.LedgerState (
NewEpochState,
esLStateL,
lsCertStateL,
nesEsL,
)
import Cardano.Ledger.Shelley.Transition
import Data.Aeson (
FromJSON (..),
KeyValue (..),
ToJSON (..),
Value (..),
object,
pairs,
withObject,
(.:),
)
import Data.ListMap (ListMap)
import qualified Data.ListMap as ListMap
import GHC.Generics
import Lens.Micro
import NoThunks.Class (NoThunks (..))
class (EraTransition era, ConwayEraCertState era) => ConwayEraTransition era where
tcDelegsL :: Lens' (TransitionConfig era) (ListMap (Credential 'Staking) Delegatee)
tcInitialDRepsL :: Lens' (TransitionConfig era) (ListMap (Credential 'DRepRole) DRepState)
tcConwayGenesisL :: Lens' (TransitionConfig era) ConwayGenesis
registerDRepsThenDelegs ::
ConwayEraTransition era =>
TransitionConfig era ->
NewEpochState era ->
NewEpochState era
registerDRepsThenDelegs :: forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerDRepsThenDelegs TransitionConfig era
cfg =
TransitionConfig era -> NewEpochState era -> NewEpochState era
forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerDelegs TransitionConfig era
cfg (NewEpochState era -> NewEpochState era)
-> (NewEpochState era -> NewEpochState era)
-> NewEpochState era
-> NewEpochState era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TransitionConfig era -> NewEpochState era -> NewEpochState era
forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerInitialDReps TransitionConfig era
cfg
instance EraTransition ConwayEra where
data TransitionConfig ConwayEra = ConwayTransitionConfig
{ TransitionConfig ConwayEra -> ConwayGenesis
ctcConwayGenesis :: !ConwayGenesis
, TransitionConfig ConwayEra -> TransitionConfig BabbageEra
ctcBabbageTransitionConfig :: !(TransitionConfig BabbageEra)
}
deriving (Int -> TransitionConfig ConwayEra -> ShowS
[TransitionConfig ConwayEra] -> ShowS
TransitionConfig ConwayEra -> String
(Int -> TransitionConfig ConwayEra -> ShowS)
-> (TransitionConfig ConwayEra -> String)
-> ([TransitionConfig ConwayEra] -> ShowS)
-> Show (TransitionConfig ConwayEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TransitionConfig ConwayEra -> ShowS
showsPrec :: Int -> TransitionConfig ConwayEra -> ShowS
$cshow :: TransitionConfig ConwayEra -> String
show :: TransitionConfig ConwayEra -> String
$cshowList :: [TransitionConfig ConwayEra] -> ShowS
showList :: [TransitionConfig ConwayEra] -> ShowS
Show, TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool
(TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool)
-> (TransitionConfig ConwayEra
-> TransitionConfig ConwayEra -> Bool)
-> Eq (TransitionConfig ConwayEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool
== :: TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool
$c/= :: TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool
/= :: TransitionConfig ConwayEra -> TransitionConfig ConwayEra -> Bool
Eq, (forall x.
TransitionConfig ConwayEra -> Rep (TransitionConfig ConwayEra) x)
-> (forall x.
Rep (TransitionConfig ConwayEra) x -> TransitionConfig ConwayEra)
-> Generic (TransitionConfig ConwayEra)
forall x.
Rep (TransitionConfig ConwayEra) x -> TransitionConfig ConwayEra
forall x.
TransitionConfig ConwayEra -> Rep (TransitionConfig ConwayEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
TransitionConfig ConwayEra -> Rep (TransitionConfig ConwayEra) x
from :: forall x.
TransitionConfig ConwayEra -> Rep (TransitionConfig ConwayEra) x
$cto :: forall x.
Rep (TransitionConfig ConwayEra) x -> TransitionConfig ConwayEra
to :: forall x.
Rep (TransitionConfig ConwayEra) x -> TransitionConfig ConwayEra
Generic)
mkTransitionConfig :: TranslationContext ConwayEra
-> TransitionConfig (PreviousEra ConwayEra)
-> TransitionConfig ConwayEra
mkTransitionConfig = TranslationContext ConwayEra
-> TransitionConfig (PreviousEra ConwayEra)
-> TransitionConfig ConwayEra
ConwayGenesis
-> TransitionConfig BabbageEra -> TransitionConfig ConwayEra
ConwayTransitionConfig
injectIntoTestState :: TransitionConfig ConwayEra
-> NewEpochState ConwayEra -> NewEpochState ConwayEra
injectIntoTestState TransitionConfig ConwayEra
cfg =
TransitionConfig ConwayEra
-> NewEpochState ConwayEra -> NewEpochState ConwayEra
forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerDRepsThenDelegs TransitionConfig ConwayEra
cfg
(NewEpochState ConwayEra -> NewEpochState ConwayEra)
-> (NewEpochState ConwayEra -> NewEpochState ConwayEra)
-> NewEpochState ConwayEra
-> NewEpochState ConwayEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TransitionConfig ConwayEra
-> NewEpochState ConwayEra -> NewEpochState ConwayEra
forall era.
EraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerInitialFundsThenStaking TransitionConfig ConwayEra
cfg
tcPreviousEraConfigL :: EraTransition (PreviousEra ConwayEra) =>
Lens'
(TransitionConfig ConwayEra)
(TransitionConfig (PreviousEra ConwayEra))
tcPreviousEraConfigL =
(TransitionConfig ConwayEra -> TransitionConfig BabbageEra)
-> (TransitionConfig ConwayEra
-> TransitionConfig BabbageEra -> TransitionConfig ConwayEra)
-> Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
(TransitionConfig BabbageEra)
(TransitionConfig BabbageEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens TransitionConfig ConwayEra -> TransitionConfig BabbageEra
ctcBabbageTransitionConfig (\TransitionConfig ConwayEra
ctc TransitionConfig BabbageEra
pc -> TransitionConfig ConwayEra
ctc {ctcBabbageTransitionConfig = pc})
tcTranslationContextL :: Lens' (TransitionConfig ConwayEra) (TranslationContext ConwayEra)
tcTranslationContextL =
(TransitionConfig ConwayEra -> ConwayGenesis)
-> (TransitionConfig ConwayEra
-> ConwayGenesis -> TransitionConfig ConwayEra)
-> Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
ConwayGenesis
ConwayGenesis
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens TransitionConfig ConwayEra -> ConwayGenesis
ctcConwayGenesis (\TransitionConfig ConwayEra
ctc ConwayGenesis
ag -> TransitionConfig ConwayEra
ctc {ctcConwayGenesis = ag})
instance ConwayEraTransition ConwayEra where
tcConwayGenesisL :: Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
ConwayGenesis
ConwayGenesis
tcConwayGenesisL = (TransitionConfig ConwayEra -> ConwayGenesis)
-> (TransitionConfig ConwayEra
-> ConwayGenesis -> TransitionConfig ConwayEra)
-> Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
ConwayGenesis
ConwayGenesis
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens TransitionConfig ConwayEra -> ConwayGenesis
ctcConwayGenesis (\TransitionConfig ConwayEra
g ConwayGenesis
x -> TransitionConfig ConwayEra
g {ctcConwayGenesis = x})
tcDelegsL :: Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
tcDelegsL =
String
-> (ListMap (Credential 'Staking) Delegatee -> Bool)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
forall era a.
(HasCallStack, EraTransition era) =>
String
-> (a -> Bool)
-> Lens' (TransitionConfig era) a
-> Lens' (TransitionConfig era) a
protectMainnetLens String
"ConwayDelegs" ListMap (Credential 'Staking) Delegatee -> Bool
forall a. ListMap (Credential 'Staking) a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee))
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'Staking) Delegatee)
forall a b. (a -> b) -> a -> b
$
(ConwayGenesis -> f ConwayGenesis)
-> TransitionConfig ConwayEra -> f (TransitionConfig ConwayEra)
forall era.
ConwayEraTransition era =>
Lens' (TransitionConfig era) ConwayGenesis
Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
ConwayGenesis
ConwayGenesis
tcConwayGenesisL ((ConwayGenesis -> f ConwayGenesis)
-> TransitionConfig ConwayEra -> f (TransitionConfig ConwayEra))
-> ((ListMap (Credential 'Staking) Delegatee
-> f (ListMap (Credential 'Staking) Delegatee))
-> ConwayGenesis -> f ConwayGenesis)
-> (ListMap (Credential 'Staking) Delegatee
-> f (ListMap (Credential 'Staking) Delegatee))
-> TransitionConfig ConwayEra
-> f (TransitionConfig ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ConwayGenesis -> ListMap (Credential 'Staking) Delegatee)
-> (ConwayGenesis
-> ListMap (Credential 'Staking) Delegatee -> ConwayGenesis)
-> Lens
ConwayGenesis
ConwayGenesis
(ListMap (Credential 'Staking) Delegatee)
(ListMap (Credential 'Staking) Delegatee)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens ConwayGenesis -> ListMap (Credential 'Staking) Delegatee
cgDelegs (\ConwayGenesis
g ListMap (Credential 'Staking) Delegatee
x -> ConwayGenesis
g {cgDelegs = x})
tcInitialDRepsL :: Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
tcInitialDRepsL =
String
-> (ListMap (Credential 'DRepRole) DRepState -> Bool)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
forall era a.
(HasCallStack, EraTransition era) =>
String
-> (a -> Bool)
-> Lens' (TransitionConfig era) a
-> Lens' (TransitionConfig era) a
protectMainnetLens String
"InitialDReps" ListMap (Credential 'DRepRole) DRepState -> Bool
forall a. ListMap (Credential 'DRepRole) a -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null (Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState))
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
-> Lens'
(TransitionConfig ConwayEra)
(ListMap (Credential 'DRepRole) DRepState)
forall a b. (a -> b) -> a -> b
$
(ConwayGenesis -> f ConwayGenesis)
-> TransitionConfig ConwayEra -> f (TransitionConfig ConwayEra)
forall era.
ConwayEraTransition era =>
Lens' (TransitionConfig era) ConwayGenesis
Lens
(TransitionConfig ConwayEra)
(TransitionConfig ConwayEra)
ConwayGenesis
ConwayGenesis
tcConwayGenesisL ((ConwayGenesis -> f ConwayGenesis)
-> TransitionConfig ConwayEra -> f (TransitionConfig ConwayEra))
-> ((ListMap (Credential 'DRepRole) DRepState
-> f (ListMap (Credential 'DRepRole) DRepState))
-> ConwayGenesis -> f ConwayGenesis)
-> (ListMap (Credential 'DRepRole) DRepState
-> f (ListMap (Credential 'DRepRole) DRepState))
-> TransitionConfig ConwayEra
-> f (TransitionConfig ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ConwayGenesis -> ListMap (Credential 'DRepRole) DRepState)
-> (ConwayGenesis
-> ListMap (Credential 'DRepRole) DRepState -> ConwayGenesis)
-> Lens
ConwayGenesis
ConwayGenesis
(ListMap (Credential 'DRepRole) DRepState)
(ListMap (Credential 'DRepRole) DRepState)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens ConwayGenesis -> ListMap (Credential 'DRepRole) DRepState
cgInitialDReps (\ConwayGenesis
g ListMap (Credential 'DRepRole) DRepState
x -> ConwayGenesis
g {cgInitialDReps = x})
instance NoThunks (TransitionConfig ConwayEra)
instance ToJSON (TransitionConfig ConwayEra) where
toJSON :: TransitionConfig ConwayEra -> Value
toJSON = [Pair] -> Value
object ([Pair] -> Value)
-> (TransitionConfig ConwayEra -> [Pair])
-> TransitionConfig ConwayEra
-> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TransitionConfig ConwayEra -> [Pair]
forall e a. KeyValue e a => TransitionConfig ConwayEra -> [a]
toConwayTransitionConfigPairs
toEncoding :: TransitionConfig ConwayEra -> Encoding
toEncoding = Series -> Encoding
pairs (Series -> Encoding)
-> (TransitionConfig ConwayEra -> Series)
-> TransitionConfig ConwayEra
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Series] -> Series
forall a. Monoid a => [a] -> a
mconcat ([Series] -> Series)
-> (TransitionConfig ConwayEra -> [Series])
-> TransitionConfig ConwayEra
-> Series
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TransitionConfig ConwayEra -> [Series]
forall e a. KeyValue e a => TransitionConfig ConwayEra -> [a]
toConwayTransitionConfigPairs
toConwayTransitionConfigPairs :: KeyValue e a => TransitionConfig ConwayEra -> [a]
toConwayTransitionConfigPairs :: forall e a. KeyValue e a => TransitionConfig ConwayEra -> [a]
toConwayTransitionConfigPairs TransitionConfig ConwayEra
conwayConfig =
TransitionConfig AlonzoEra -> [a]
forall e a. KeyValue e a => TransitionConfig AlonzoEra -> [a]
toAlonzoTransitionConfigPairs TransitionConfig AlonzoEra
alonzoConfig
[a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [Key
"conway" Key -> Value -> a
forall v. ToJSON v => Key -> v -> a
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object (ConwayGenesis -> [Pair]
forall e a. KeyValue e a => ConwayGenesis -> [a]
toConwayGenesisPairs (TransitionConfig ConwayEra
conwayConfig TransitionConfig ConwayEra
-> Getting ConwayGenesis (TransitionConfig ConwayEra) ConwayGenesis
-> ConwayGenesis
forall s a. s -> Getting a s a -> a
^. (TranslationContext ConwayEra
-> Const ConwayGenesis (TranslationContext ConwayEra))
-> TransitionConfig ConwayEra
-> Const ConwayGenesis (TransitionConfig ConwayEra)
Getting ConwayGenesis (TransitionConfig ConwayEra) ConwayGenesis
forall era.
EraTransition era =>
Lens' (TransitionConfig era) (TranslationContext era)
Lens' (TransitionConfig ConwayEra) (TranslationContext ConwayEra)
tcTranslationContextL))]
where
babbageConfig :: TransitionConfig BabbageEra
babbageConfig = TransitionConfig ConwayEra
conwayConfig TransitionConfig ConwayEra
-> Getting
(TransitionConfig BabbageEra)
(TransitionConfig ConwayEra)
(TransitionConfig BabbageEra)
-> TransitionConfig BabbageEra
forall s a. s -> Getting a s a -> a
^. (TransitionConfig (PreviousEra ConwayEra)
-> Const
(TransitionConfig BabbageEra)
(TransitionConfig (PreviousEra ConwayEra)))
-> TransitionConfig ConwayEra
-> Const (TransitionConfig BabbageEra) (TransitionConfig ConwayEra)
Getting
(TransitionConfig BabbageEra)
(TransitionConfig ConwayEra)
(TransitionConfig BabbageEra)
forall era.
(EraTransition era, EraTransition (PreviousEra era)) =>
Lens' (TransitionConfig era) (TransitionConfig (PreviousEra era))
Lens'
(TransitionConfig ConwayEra)
(TransitionConfig (PreviousEra ConwayEra))
tcPreviousEraConfigL
alonzoConfig :: TransitionConfig AlonzoEra
alonzoConfig = TransitionConfig BabbageEra
babbageConfig TransitionConfig BabbageEra
-> Getting
(TransitionConfig AlonzoEra)
(TransitionConfig BabbageEra)
(TransitionConfig AlonzoEra)
-> TransitionConfig AlonzoEra
forall s a. s -> Getting a s a -> a
^. (TransitionConfig (PreviousEra BabbageEra)
-> Const
(TransitionConfig AlonzoEra)
(TransitionConfig (PreviousEra BabbageEra)))
-> TransitionConfig BabbageEra
-> Const (TransitionConfig AlonzoEra) (TransitionConfig BabbageEra)
Getting
(TransitionConfig AlonzoEra)
(TransitionConfig BabbageEra)
(TransitionConfig AlonzoEra)
forall era.
(EraTransition era, EraTransition (PreviousEra era)) =>
Lens' (TransitionConfig era) (TransitionConfig (PreviousEra era))
Lens'
(TransitionConfig BabbageEra)
(TransitionConfig (PreviousEra BabbageEra))
tcPreviousEraConfigL
instance FromJSON (TransitionConfig ConwayEra) where
parseJSON :: Value -> Parser (TransitionConfig ConwayEra)
parseJSON = String
-> (Object -> Parser (TransitionConfig ConwayEra))
-> Value
-> Parser (TransitionConfig ConwayEra)
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ConwayTransitionConfig" ((Object -> Parser (TransitionConfig ConwayEra))
-> Value -> Parser (TransitionConfig ConwayEra))
-> (Object -> Parser (TransitionConfig ConwayEra))
-> Value
-> Parser (TransitionConfig ConwayEra)
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
ConwayGenesis
pc <- Value -> Parser ConwayGenesis
forall a. FromJSON a => Value -> Parser a
parseJSON (Object -> Value
Object Object
o)
TransitionConfig BabbageEra
ag <- Object
o Object -> Key -> Parser (TransitionConfig BabbageEra)
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"conway"
TransitionConfig ConwayEra -> Parser (TransitionConfig ConwayEra)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (TransitionConfig ConwayEra -> Parser (TransitionConfig ConwayEra))
-> TransitionConfig ConwayEra
-> Parser (TransitionConfig ConwayEra)
forall a b. (a -> b) -> a -> b
$ TranslationContext ConwayEra
-> TransitionConfig (PreviousEra ConwayEra)
-> TransitionConfig ConwayEra
forall era.
EraTransition era =>
TranslationContext era
-> TransitionConfig (PreviousEra era) -> TransitionConfig era
mkTransitionConfig TranslationContext ConwayEra
ConwayGenesis
pc TransitionConfig (PreviousEra ConwayEra)
TransitionConfig BabbageEra
ag
registerInitialDReps ::
ConwayEraTransition era =>
TransitionConfig era ->
NewEpochState era ->
NewEpochState era
registerInitialDReps :: forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerInitialDReps TransitionConfig era
cfg =
(EpochState era -> Identity (EpochState era))
-> NewEpochState era -> Identity (NewEpochState era)
forall era (f :: * -> *).
Functor f =>
(EpochState era -> f (EpochState era))
-> NewEpochState era -> f (NewEpochState era)
nesEsL ((EpochState era -> Identity (EpochState era))
-> NewEpochState era -> Identity (NewEpochState era))
-> ((Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> EpochState era -> Identity (EpochState era))
-> (Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> NewEpochState era
-> Identity (NewEpochState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (LedgerState era -> Identity (LedgerState era))
-> EpochState era -> Identity (EpochState era)
forall era (f :: * -> *).
Functor f =>
(LedgerState era -> f (LedgerState era))
-> EpochState era -> f (EpochState era)
esLStateL ((LedgerState era -> Identity (LedgerState era))
-> EpochState era -> Identity (EpochState era))
-> ((Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> LedgerState era -> Identity (LedgerState era))
-> (Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> EpochState era
-> Identity (EpochState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CertState era -> Identity (CertState era))
-> LedgerState era -> Identity (LedgerState era)
forall era (f :: * -> *).
Functor f =>
(CertState era -> f (CertState era))
-> LedgerState era -> f (LedgerState era)
lsCertStateL ((CertState era -> Identity (CertState era))
-> LedgerState era -> Identity (LedgerState era))
-> ((Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> CertState era -> Identity (CertState era))
-> (Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> LedgerState era
-> Identity (LedgerState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (VState era -> Identity (VState era))
-> CertState era -> Identity (CertState era)
forall era.
ConwayEraCertState era =>
Lens' (CertState era) (VState era)
Lens' (CertState era) (VState era)
certVStateL ((VState era -> Identity (VState era))
-> CertState era -> Identity (CertState era))
-> ((Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> VState era -> Identity (VState era))
-> (Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> CertState era
-> Identity (CertState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> VState era -> Identity (VState era)
forall era (f :: * -> *).
Functor f =>
(Map (Credential 'DRepRole) DRepState
-> f (Map (Credential 'DRepRole) DRepState))
-> VState era -> f (VState era)
vsDRepsL ((Map (Credential 'DRepRole) DRepState
-> Identity (Map (Credential 'DRepRole) DRepState))
-> NewEpochState era -> Identity (NewEpochState era))
-> Map (Credential 'DRepRole) DRepState
-> NewEpochState era
-> NewEpochState era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map (Credential 'DRepRole) DRepState
drepsMap
where
drepsMap :: Map (Credential 'DRepRole) DRepState
drepsMap = ListMap (Credential 'DRepRole) DRepState
-> Map (Credential 'DRepRole) DRepState
forall k v. Ord k => ListMap k v -> Map k v
ListMap.toMap (ListMap (Credential 'DRepRole) DRepState
-> Map (Credential 'DRepRole) DRepState)
-> ListMap (Credential 'DRepRole) DRepState
-> Map (Credential 'DRepRole) DRepState
forall a b. (a -> b) -> a -> b
$ TransitionConfig era
cfg TransitionConfig era
-> Getting
(ListMap (Credential 'DRepRole) DRepState)
(TransitionConfig era)
(ListMap (Credential 'DRepRole) DRepState)
-> ListMap (Credential 'DRepRole) DRepState
forall s a. s -> Getting a s a -> a
^. Getting
(ListMap (Credential 'DRepRole) DRepState)
(TransitionConfig era)
(ListMap (Credential 'DRepRole) DRepState)
forall era.
ConwayEraTransition era =>
Lens'
(TransitionConfig era) (ListMap (Credential 'DRepRole) DRepState)
Lens'
(TransitionConfig era) (ListMap (Credential 'DRepRole) DRepState)
tcInitialDRepsL
registerDelegs ::
forall era.
ConwayEraTransition era =>
TransitionConfig era ->
NewEpochState era ->
NewEpochState era
registerDelegs :: forall era.
ConwayEraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerDelegs TransitionConfig era
cfg =
(EpochState era -> Identity (EpochState era))
-> NewEpochState era -> Identity (NewEpochState era)
forall era (f :: * -> *).
Functor f =>
(EpochState era -> f (EpochState era))
-> NewEpochState era -> f (NewEpochState era)
nesEsL ((EpochState era -> Identity (EpochState era))
-> NewEpochState era -> Identity (NewEpochState era))
-> ((CertState era -> Identity (CertState era))
-> EpochState era -> Identity (EpochState era))
-> (CertState era -> Identity (CertState era))
-> NewEpochState era
-> Identity (NewEpochState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (LedgerState era -> Identity (LedgerState era))
-> EpochState era -> Identity (EpochState era)
forall era (f :: * -> *).
Functor f =>
(LedgerState era -> f (LedgerState era))
-> EpochState era -> f (EpochState era)
esLStateL ((LedgerState era -> Identity (LedgerState era))
-> EpochState era -> Identity (EpochState era))
-> ((CertState era -> Identity (CertState era))
-> LedgerState era -> Identity (LedgerState era))
-> (CertState era -> Identity (CertState era))
-> EpochState era
-> Identity (EpochState era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CertState era -> Identity (CertState era))
-> LedgerState era -> Identity (LedgerState era)
forall era (f :: * -> *).
Functor f =>
(CertState era -> f (CertState era))
-> LedgerState era -> f (LedgerState era)
lsCertStateL
((CertState era -> Identity (CertState era))
-> NewEpochState era -> Identity (NewEpochState era))
-> (CertState era -> CertState era)
-> NewEpochState era
-> NewEpochState era
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ \CertState era
certState -> ((Credential 'Staking, Delegatee)
-> CertState era -> CertState era)
-> CertState era
-> ListMap (Credential 'Staking) Delegatee
-> CertState era
forall k a b. ((k, a) -> b -> b) -> b -> ListMap k a -> b
ListMap.foldrWithKey ((Credential 'Staking
-> Delegatee -> CertState era -> CertState era)
-> (Credential 'Staking, Delegatee)
-> CertState era
-> CertState era
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Credential 'Staking -> Delegatee -> CertState era -> CertState era
forall era.
ConwayEraCertState era =>
Credential 'Staking -> Delegatee -> CertState era -> CertState era
processDelegation) CertState era
certState (TransitionConfig era
cfg TransitionConfig era
-> Getting
(ListMap (Credential 'Staking) Delegatee)
(TransitionConfig era)
(ListMap (Credential 'Staking) Delegatee)
-> ListMap (Credential 'Staking) Delegatee
forall s a. s -> Getting a s a -> a
^. Getting
(ListMap (Credential 'Staking) Delegatee)
(TransitionConfig era)
(ListMap (Credential 'Staking) Delegatee)
forall era.
ConwayEraTransition era =>
Lens'
(TransitionConfig era) (ListMap (Credential 'Staking) Delegatee)
Lens'
(TransitionConfig era) (ListMap (Credential 'Staking) Delegatee)
tcDelegsL)