{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.State.Account () where import Cardano.Ledger.Conway.State import Cardano.Ledger.Dijkstra.Era import qualified Data.Map.Strict as Map import Lens.Micro instance EraAccounts DijkstraEra where type AccountState DijkstraEra = ConwayAccountState DijkstraEra type Accounts DijkstraEra = ConwayAccounts DijkstraEra addAccountState :: Credential Staking -> AccountState DijkstraEra -> Accounts DijkstraEra -> Accounts DijkstraEra addAccountState Credential Staking cred AccountState DijkstraEra accountState = (Map (Credential Staking) (AccountState DijkstraEra) -> Identity (Map (Credential Staking) (AccountState DijkstraEra))) -> Accounts DijkstraEra -> Identity (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra) -> Identity (Map (Credential Staking) (AccountState DijkstraEra))) -> ConwayAccounts DijkstraEra -> Identity (ConwayAccounts DijkstraEra) forall era. EraAccounts era => Lens' (Accounts era) (Map (Credential Staking) (AccountState era)) Lens' (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra)) accountsMapL ((Map (Credential Staking) (AccountState DijkstraEra) -> Identity (Map (Credential Staking) (AccountState DijkstraEra))) -> ConwayAccounts DijkstraEra -> Identity (ConwayAccounts DijkstraEra)) -> (Map (Credential Staking) (AccountState DijkstraEra) -> Map (Credential Staking) (AccountState DijkstraEra)) -> ConwayAccounts DijkstraEra -> ConwayAccounts DijkstraEra forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ Credential Staking -> AccountState DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra) -> Map (Credential Staking) (AccountState DijkstraEra) forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert Credential Staking cred AccountState DijkstraEra accountState accountsMapL :: Lens' (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra)) accountsMapL = (Accounts DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra)) -> (Accounts DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra) -> Accounts DijkstraEra) -> Lens' (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Accounts DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra) ConwayAccounts DijkstraEra -> Map (Credential Staking) (ConwayAccountState DijkstraEra) forall era. ConwayAccounts era -> Map (Credential Staking) (ConwayAccountState era) caStates ((Accounts DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra) -> Accounts DijkstraEra) -> Lens' (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra))) -> (Accounts DijkstraEra -> Map (Credential Staking) (AccountState DijkstraEra) -> Accounts DijkstraEra) -> Lens' (Accounts DijkstraEra) (Map (Credential Staking) (AccountState DijkstraEra)) forall a b. (a -> b) -> a -> b $ \Accounts DijkstraEra cas Map (Credential Staking) (AccountState DijkstraEra) asMap -> Accounts DijkstraEra cas {caStates = asMap} balanceAccountStateL :: Lens' (AccountState DijkstraEra) (CompactForm Coin) balanceAccountStateL = (CompactForm Coin -> f (CompactForm Coin)) -> AccountState DijkstraEra -> f (AccountState DijkstraEra) (CompactForm Coin -> f (CompactForm Coin)) -> ConwayAccountState DijkstraEra -> f (ConwayAccountState DijkstraEra) forall era (f :: * -> *). Functor f => (CompactForm Coin -> f (CompactForm Coin)) -> ConwayAccountState era -> f (ConwayAccountState era) balanceConwayAccountStateL {-# INLINE balanceAccountStateL #-} depositAccountStateL :: Lens' (AccountState DijkstraEra) (CompactForm Coin) depositAccountStateL = (CompactForm Coin -> f (CompactForm Coin)) -> AccountState DijkstraEra -> f (AccountState DijkstraEra) (CompactForm Coin -> f (CompactForm Coin)) -> ConwayAccountState DijkstraEra -> f (ConwayAccountState DijkstraEra) forall era (f :: * -> *). Functor f => (CompactForm Coin -> f (CompactForm Coin)) -> ConwayAccountState era -> f (ConwayAccountState era) depositConwayAccountStateL {-# INLINE depositAccountStateL #-} stakePoolDelegationAccountStateL :: Lens' (AccountState DijkstraEra) (Maybe (KeyHash StakePool)) stakePoolDelegationAccountStateL = (Maybe (KeyHash StakePool) -> f (Maybe (KeyHash StakePool))) -> AccountState DijkstraEra -> f (AccountState DijkstraEra) (Maybe (KeyHash StakePool) -> f (Maybe (KeyHash StakePool))) -> ConwayAccountState DijkstraEra -> f (ConwayAccountState DijkstraEra) forall era (f :: * -> *). Functor f => (Maybe (KeyHash StakePool) -> f (Maybe (KeyHash StakePool))) -> ConwayAccountState era -> f (ConwayAccountState era) stakePoolDelegationConwayAccountStateL {-# INLINE stakePoolDelegationAccountStateL #-} unregisterAccount :: Credential Staking -> Accounts DijkstraEra -> (Maybe (AccountState DijkstraEra), Accounts DijkstraEra) unregisterAccount = Credential Staking -> Accounts DijkstraEra -> (Maybe (AccountState DijkstraEra), Accounts DijkstraEra) forall era. EraAccounts era => Credential Staking -> Accounts era -> (Maybe (AccountState era), Accounts era) unregisterConwayAccount instance ConwayEraAccounts DijkstraEra where dRepDelegationAccountStateL :: Lens' (AccountState DijkstraEra) (Maybe DRep) dRepDelegationAccountStateL = (Maybe DRep -> f (Maybe DRep)) -> AccountState DijkstraEra -> f (AccountState DijkstraEra) (Maybe DRep -> f (Maybe DRep)) -> ConwayAccountState DijkstraEra -> f (ConwayAccountState DijkstraEra) forall era (f :: * -> *). Functor f => (Maybe DRep -> f (Maybe DRep)) -> ConwayAccountState era -> f (ConwayAccountState era) dRepDelegationConwayAccountStateL {-# INLINE dRepDelegationAccountStateL #-}