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