@@ -128,6 +128,7 @@ import Cardano.Wallet.Api.Types
128128 , ApiT (.. )
129129 , ApiTxId (ApiTxId )
130130 , ApiWallet
131+ , ApiWithdrawRewards (.. )
131132 , ByronWalletPostData (.. )
132133 , ByronWalletStyle (.. )
133134 , Iso8601Time (.. )
@@ -689,6 +690,7 @@ data TransactionCreateArgs t = TransactionCreateArgs
689690 { _port :: Port " Wallet"
690691 , _id :: WalletId
691692 , _payments :: NonEmpty Text
693+ , _withdrawRewards :: Bool
692694 }
693695
694696cmdTransactionCreate
@@ -704,7 +706,8 @@ cmdTransactionCreate mkTxClient mkWalletClient =
704706 <$> portOption
705707 <*> walletIdArgument
706708 <*> fmap NE. fromList (some paymentOption)
707- exec (TransactionCreateArgs wPort wId wAddressAmounts) = do
709+ <*> withdrawRewardsFlag
710+ exec (TransactionCreateArgs wPort wId wAddressAmounts wWithdraw) = do
708711 wPayments <- either (fail . getTextDecodingError) pure $
709712 traverse (fromText @ (AddressAmount Text )) wAddressAmounts
710713 res <- sendRequest wPort $ getWallet mkWalletClient $ ApiT wId
@@ -714,6 +717,7 @@ cmdTransactionCreate mkTxClient mkWalletClient =
714717 runClient wPort Aeson. encodePretty $ postTransaction
715718 mkTxClient
716719 (ApiT wId)
720+ (ApiWithdrawRewards wWithdraw)
717721 (Aeson. object
718722 [ " payments" .= wPayments
719723 , " passphrase" .= ApiT wPwd
@@ -735,7 +739,8 @@ cmdTransactionFees mkTxClient mkWalletClient =
735739 <$> portOption
736740 <*> walletIdArgument
737741 <*> fmap NE. fromList (some paymentOption)
738- exec (TransactionCreateArgs wPort wId wAddressAmounts) = do
742+ <*> withdrawRewardsFlag
743+ exec (TransactionCreateArgs wPort wId wAddressAmounts wWithdraw) = do
739744 wPayments <- either (fail . getTextDecodingError) pure $
740745 traverse (fromText @ (AddressAmount Text )) wAddressAmounts
741746 res <- sendRequest wPort $ getWallet mkWalletClient $ ApiT wId
@@ -744,6 +749,7 @@ cmdTransactionFees mkTxClient mkWalletClient =
744749 runClient wPort Aeson. encodePretty $ postTransactionFee
745750 mkTxClient
746751 (ApiT wId)
752+ (ApiWithdrawRewards wWithdraw)
747753 (Aeson. object [ " payments" .= wPayments ])
748754 Left _ ->
749755 handleResponse Aeson. encodePretty res
@@ -1335,6 +1341,13 @@ addressIdArgument :: Parser Text
13351341addressIdArgument = argumentT $ mempty
13361342 <> metavar " ADDRESS"
13371343
1344+ -- | [--withdraw-rewards]
1345+ withdrawRewardsFlag :: Parser Bool
1346+ withdrawRewardsFlag = switch $ mempty
1347+ <> long " withdraw-rewards"
1348+ <> help " Withdraw rewards as change in this transaction, provided they \
1349+ \contribute positively to the balance."
1350+
13381351-- | Helper for writing an option 'Parser' using a 'FromText' instance.
13391352optionT :: FromText a => Mod OptionFields a -> Parser a
13401353optionT = option (eitherReader fromTextS)
0 commit comments