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