{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.State.Account () where import Cardano.Ledger.BaseTypes 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 = (AccountState DijkstraEra -> CompactForm Coin) -> (AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens AccountState DijkstraEra -> CompactForm Coin ConwayAccountState DijkstraEra -> CompactForm Coin forall era. ConwayAccountState era -> CompactForm Coin casBalance ((AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin)) -> (AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin) forall a b. (a -> b) -> a -> b $ \AccountState DijkstraEra cas CompactForm Coin b -> AccountState DijkstraEra cas {casBalance = b} depositAccountStateL :: Lens' (AccountState DijkstraEra) (CompactForm Coin) depositAccountStateL = (AccountState DijkstraEra -> CompactForm Coin) -> (AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens AccountState DijkstraEra -> CompactForm Coin ConwayAccountState DijkstraEra -> CompactForm Coin forall era. ConwayAccountState era -> CompactForm Coin casDeposit ((AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin)) -> (AccountState DijkstraEra -> CompactForm Coin -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (CompactForm Coin) forall a b. (a -> b) -> a -> b $ \AccountState DijkstraEra cas CompactForm Coin d -> AccountState DijkstraEra cas {casDeposit = d} stakePoolDelegationAccountStateL :: Lens' (AccountState DijkstraEra) (Maybe (KeyHash 'StakePool)) stakePoolDelegationAccountStateL = (AccountState DijkstraEra -> Maybe (KeyHash 'StakePool)) -> (AccountState DijkstraEra -> Maybe (KeyHash 'StakePool) -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe (KeyHash 'StakePool)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens (StrictMaybe (KeyHash 'StakePool) -> Maybe (KeyHash 'StakePool) forall a. StrictMaybe a -> Maybe a strictMaybeToMaybe (StrictMaybe (KeyHash 'StakePool) -> Maybe (KeyHash 'StakePool)) -> (ConwayAccountState DijkstraEra -> StrictMaybe (KeyHash 'StakePool)) -> ConwayAccountState DijkstraEra -> Maybe (KeyHash 'StakePool) forall b c a. (b -> c) -> (a -> b) -> a -> c . ConwayAccountState DijkstraEra -> StrictMaybe (KeyHash 'StakePool) forall era. ConwayAccountState era -> StrictMaybe (KeyHash 'StakePool) casStakePoolDelegation) ((AccountState DijkstraEra -> Maybe (KeyHash 'StakePool) -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe (KeyHash 'StakePool))) -> (AccountState DijkstraEra -> Maybe (KeyHash 'StakePool) -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe (KeyHash 'StakePool)) forall a b. (a -> b) -> a -> b $ \AccountState DijkstraEra cas Maybe (KeyHash 'StakePool) d -> AccountState DijkstraEra cas {casStakePoolDelegation = maybeToStrictMaybe d} 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 = (AccountState DijkstraEra -> Maybe DRep) -> (AccountState DijkstraEra -> Maybe DRep -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe DRep) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens (StrictMaybe DRep -> Maybe DRep forall a. StrictMaybe a -> Maybe a strictMaybeToMaybe (StrictMaybe DRep -> Maybe DRep) -> (ConwayAccountState DijkstraEra -> StrictMaybe DRep) -> ConwayAccountState DijkstraEra -> Maybe DRep forall b c a. (b -> c) -> (a -> b) -> a -> c . ConwayAccountState DijkstraEra -> StrictMaybe DRep forall era. ConwayAccountState era -> StrictMaybe DRep casDRepDelegation) ((AccountState DijkstraEra -> Maybe DRep -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe DRep)) -> (AccountState DijkstraEra -> Maybe DRep -> AccountState DijkstraEra) -> Lens' (AccountState DijkstraEra) (Maybe DRep) forall a b. (a -> b) -> a -> b $ \AccountState DijkstraEra cas Maybe DRep d -> AccountState DijkstraEra cas {casDRepDelegation = maybeToStrictMaybe d}