diff --git a/lib/wallet/cardano-wallet.cabal b/lib/wallet/cardano-wallet.cabal index 3d10c068755..353f17acd94 100644 --- a/lib/wallet/cardano-wallet.cabal +++ b/lib/wallet/cardano-wallet.cabal @@ -316,6 +316,7 @@ library Cardano.Wallet.Read.Primitive.Tx.Features.Mint Cardano.Wallet.Read.Primitive.Tx.Features.Outputs Cardano.Wallet.Read.Primitive.Tx.Features.Validity + Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals Cardano.Wallet.Read.Primitive.Tx.Mary Cardano.Wallet.Read.Primitive.Tx.Shelley Cardano.Wallet.Read.Tx diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Allegra.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Allegra.hs index e9fbd385f32..378d4c4eced 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Allegra.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Allegra.hs @@ -39,8 +39,10 @@ import Cardano.Wallet.Read.Primitive.Tx.Features.Outputs ( fromAllegraTxOut ) import Cardano.Wallet.Read.Primitive.Tx.Features.Validity ( afterShelleyValidityInterval ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals + ( fromShelleyWdrl ) import Cardano.Wallet.Read.Primitive.Tx.Shelley - ( fromShelleyMD, fromShelleyWdrl ) + ( fromShelleyMD ) import Cardano.Wallet.Read.Tx ( Tx (..) ) import Cardano.Wallet.Read.Tx.CBOR diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Alonzo.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Alonzo.hs index 0b3c3961e81..453c032b9ca 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Alonzo.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Alonzo.hs @@ -36,7 +36,10 @@ import Cardano.Wallet.Read.Primitive.Tx.Features.Outputs ( fromAlonzoTxOut ) import Cardano.Wallet.Read.Primitive.Tx.Features.Validity ( afterShelleyValidityInterval ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals + ( fromShelleyWdrl ) import Cardano.Wallet.Read.Primitive.Tx.Shelley + ( fromShelleyMD ) import Cardano.Wallet.Read.Tx ( Tx (..) ) import Cardano.Wallet.Read.Tx.CBOR diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Babbage.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Babbage.hs index 92eec8541f7..d45d55fbf87 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Babbage.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Babbage.hs @@ -39,8 +39,10 @@ import Cardano.Wallet.Read.Primitive.Tx.Features.Outputs ( fromBabbageTxOut ) import Cardano.Wallet.Read.Primitive.Tx.Features.Validity ( afterShelleyValidityInterval ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals + ( fromShelleyWdrl ) import Cardano.Wallet.Read.Primitive.Tx.Shelley - ( fromShelleyMD, fromShelleyWdrl ) + ( fromShelleyMD ) import Cardano.Wallet.Read.Tx ( Tx (..) ) import Cardano.Wallet.Read.Tx.CBOR diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/CollateralOutputs.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/CollateralOutputs.hs index 42f5aa0be74..d7da7d79b0e 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/CollateralOutputs.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/CollateralOutputs.hs @@ -9,10 +9,8 @@ import Prelude import Cardano.Wallet.Read.Eras ( EraFun (..), K (..) ) -import Cardano.Wallet.Read.Primitive.Tx.Mary - ( fromCardanoValue ) -import Cardano.Wallet.Read.Primitive.Tx.Shelley - ( fromShelleyAddress ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Outputs + ( fromCardanoValue, fromShelleyAddress ) import Cardano.Wallet.Read.Tx.CollateralOutputs ( CollateralOutputs (..) ) import Data.Maybe.Strict diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/Withdrawals.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/Withdrawals.hs new file mode 100644 index 00000000000..c436aab0ad2 --- /dev/null +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Features/Withdrawals.hs @@ -0,0 +1,59 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE TypeFamilies #-} + +-- | +-- Copyright: © 2020-2022 IOHK +-- License: Apache-2.0 +-- + +module Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals + ( getWithdrawals + , fromShelleyWdrl + ) + where + +import Prelude + +import Cardano.Ledger.Crypto + ( StandardCrypto ) +import Cardano.Wallet.Primitive.Types.Coin + ( Coin ) +import Cardano.Wallet.Primitive.Types.RewardAccount + ( RewardAccount ) +import Cardano.Wallet.Read.Eras + ( EraFun (..), K (..) ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Certificates + ( fromStakeCredential ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Fee + ( fromShelleyCoin ) +import Cardano.Wallet.Read.Tx.Withdrawals + ( Withdrawals (..) ) +import Data.Bifunctor + ( Bifunctor (..) ) +import Data.Map.Strict + ( Map ) + +import qualified Cardano.Ledger.Shelley.TxBody as SL +import qualified Cardano.Wallet.Primitive.Types.Coin as W +import qualified Cardano.Wallet.Primitive.Types.RewardAccount as W +import qualified Data.Map.Strict as Map + +getWithdrawals :: EraFun Withdrawals (K (Maybe (Map RewardAccount Coin))) +getWithdrawals = EraFun + { byronFun = noWithdrawals + , shelleyFun = yesWithdrawals + , allegraFun = yesWithdrawals + , maryFun = yesWithdrawals + , alonzoFun = yesWithdrawals + , babbageFun = yesWithdrawals + } + where + noWithdrawals = const $ K Nothing + yesWithdrawals (Withdrawals ttl) + = K . Just . fromShelleyWdrl $ ttl + +fromShelleyWdrl :: SL.Wdrl StandardCrypto -> Map W.RewardAccount W.Coin +fromShelleyWdrl (SL.Wdrl wdrl) = Map.fromList $ + bimap (fromStakeCredential . SL.getRwdCred) fromShelleyCoin + <$> Map.toList wdrl diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Mary.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Mary.hs index 32d43d62756..97fb8cc475c 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Mary.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Mary.hs @@ -35,7 +35,10 @@ import Cardano.Wallet.Read.Primitive.Tx.Features.Outputs ( fromMaryTxOut ) import Cardano.Wallet.Read.Primitive.Tx.Features.Validity ( afterShelleyValidityInterval ) +import Cardano.Wallet.Read.Primitive.Tx.Features.Withdrawals + ( fromShelleyWdrl ) import Cardano.Wallet.Read.Primitive.Tx.Shelley + ( fromShelleyMD ) import Cardano.Wallet.Read.Tx ( Tx (Tx) ) import Cardano.Wallet.Read.Tx.CBOR diff --git a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Shelley.hs b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Shelley.hs index 264ca593433..3f6c194a4f8 100644 --- a/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Shelley.hs +++ b/lib/wallet/src/Cardano/Wallet/Read/Primitive/Tx/Shelley.hs @@ -10,8 +10,7 @@ -- module Cardano.Wallet.Read.Primitive.Tx.Shelley - ( fromShelleyWdrl - , fromShelleyMD + ( fromShelleyMD , fromShelleyTx ) where