{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Mary.State.Account () where import Cardano.Ledger.BaseTypes import Cardano.Ledger.Mary.Era import Cardano.Ledger.Shelley.State import Lens.Micro instance EraAccounts MaryEra where type AccountState MaryEra = ShelleyAccountState MaryEra type Accounts MaryEra = ShelleyAccounts MaryEra addAccountState :: Credential 'Staking -> AccountState MaryEra -> Accounts MaryEra -> Accounts MaryEra addAccountState = Credential 'Staking -> AccountState MaryEra -> Accounts MaryEra -> Accounts MaryEra forall era. ShelleyEraAccounts era => Credential 'Staking -> AccountState era -> Accounts era -> Accounts era shelleyAddAccountState accountsMapL :: Lens' (Accounts MaryEra) (Map (Credential 'Staking) (AccountState MaryEra)) accountsMapL = (Accounts MaryEra -> Map (Credential 'Staking) (AccountState MaryEra)) -> (Accounts MaryEra -> Map (Credential 'Staking) (AccountState MaryEra) -> Accounts MaryEra) -> Lens' (Accounts MaryEra) (Map (Credential 'Staking) (AccountState MaryEra)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Accounts MaryEra -> Map (Credential 'Staking) (AccountState MaryEra) ShelleyAccounts MaryEra -> Map (Credential 'Staking) (ShelleyAccountState MaryEra) forall era. ShelleyAccounts era -> Map (Credential 'Staking) (ShelleyAccountState era) saStates ((Accounts MaryEra -> Map (Credential 'Staking) (AccountState MaryEra) -> Accounts MaryEra) -> Lens' (Accounts MaryEra) (Map (Credential 'Staking) (AccountState MaryEra))) -> (Accounts MaryEra -> Map (Credential 'Staking) (AccountState MaryEra) -> Accounts MaryEra) -> Lens' (Accounts MaryEra) (Map (Credential 'Staking) (AccountState MaryEra)) forall a b. (a -> b) -> a -> b $ \Accounts MaryEra sas Map (Credential 'Staking) (AccountState MaryEra) asMap -> Accounts MaryEra sas {saStates = asMap} balanceAccountStateL :: Lens' (AccountState MaryEra) (CompactForm Coin) balanceAccountStateL = (AccountState MaryEra -> CompactForm Coin) -> (AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens AccountState MaryEra -> CompactForm Coin ShelleyAccountState MaryEra -> CompactForm Coin forall era. ShelleyAccountState era -> CompactForm Coin sasBalance ((AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin)) -> (AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin) forall a b. (a -> b) -> a -> b $ \AccountState MaryEra sas CompactForm Coin b -> AccountState MaryEra sas {sasBalance = b} depositAccountStateL :: Lens' (AccountState MaryEra) (CompactForm Coin) depositAccountStateL = (AccountState MaryEra -> CompactForm Coin) -> (AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens AccountState MaryEra -> CompactForm Coin ShelleyAccountState MaryEra -> CompactForm Coin forall era. ShelleyAccountState era -> CompactForm Coin sasDeposit ((AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin)) -> (AccountState MaryEra -> CompactForm Coin -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (CompactForm Coin) forall a b. (a -> b) -> a -> b $ \AccountState MaryEra sas CompactForm Coin d -> AccountState MaryEra sas {sasDeposit = d} stakePoolDelegationAccountStateL :: Lens' (AccountState MaryEra) (Maybe (KeyHash 'StakePool)) stakePoolDelegationAccountStateL = (AccountState MaryEra -> Maybe (KeyHash 'StakePool)) -> (AccountState MaryEra -> Maybe (KeyHash 'StakePool) -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (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)) -> (ShelleyAccountState MaryEra -> StrictMaybe (KeyHash 'StakePool)) -> ShelleyAccountState MaryEra -> Maybe (KeyHash 'StakePool) forall b c a. (b -> c) -> (a -> b) -> a -> c . ShelleyAccountState MaryEra -> StrictMaybe (KeyHash 'StakePool) forall era. ShelleyAccountState era -> StrictMaybe (KeyHash 'StakePool) sasStakePoolDelegation) ((AccountState MaryEra -> Maybe (KeyHash 'StakePool) -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (Maybe (KeyHash 'StakePool))) -> (AccountState MaryEra -> Maybe (KeyHash 'StakePool) -> AccountState MaryEra) -> Lens' (AccountState MaryEra) (Maybe (KeyHash 'StakePool)) forall a b. (a -> b) -> a -> b $ \AccountState MaryEra sas Maybe (KeyHash 'StakePool) d -> AccountState MaryEra sas {sasStakePoolDelegation = maybeToStrictMaybe d} unregisterAccount :: Credential 'Staking -> Accounts MaryEra -> (Maybe (AccountState MaryEra), Accounts MaryEra) unregisterAccount = Credential 'Staking -> Accounts MaryEra -> (Maybe (AccountState MaryEra), Accounts MaryEra) forall era. ShelleyEraAccounts era => Credential 'Staking -> Accounts era -> (Maybe (AccountState era), Accounts era) unregisterShelleyAccount instance ShelleyEraAccounts MaryEra