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