@@ -191,12 +191,7 @@ util::Result<PreSelectedInputs> FetchSelectedInputs(const CWallet& wallet, const
191191CoinsResult AvailableCoins (const CWallet& wallet,
192192 const CCoinControl* coinControl,
193193 std::optional<CFeeRate> feerate,
194- const CAmount& nMinimumAmount,
195- const CAmount& nMaximumAmount,
196- const CAmount& nMinimumSumAmount,
197- const uint64_t nMaximumCount,
198- bool only_spendable,
199- bool include_immature_coinbase)
194+ const CoinFilterParams& params)
200195{
201196 AssertLockHeld (wallet.cs_wallet );
202197
@@ -214,7 +209,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
214209 const uint256& wtxid = entry.first ;
215210 const CWalletTx& wtx = entry.second ;
216211
217- if (wallet.IsTxImmatureCoinBase (wtx) && !include_immature_coinbase)
212+ if (wallet.IsTxImmatureCoinBase (wtx) && !params. include_immature_coinbase )
218213 continue ;
219214
220215 int nDepth = wallet.GetTxDepthInMainChain (wtx);
@@ -273,7 +268,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
273268 const CTxOut& output = wtx.tx ->vout [i];
274269 const COutPoint outpoint (wtxid, i);
275270
276- if (output.nValue < nMinimumAmount || output.nValue > nMaximumAmount)
271+ if (output.nValue < params. nMinimumAmount || output.nValue > params. nMaximumAmount )
277272 continue ;
278273
279274 // Skip manually selected coins (the caller can fetch them directly)
@@ -305,7 +300,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
305300 bool spendable = ((mine & ISMINE_SPENDABLE) != ISMINE_NO) || (((mine & ISMINE_WATCH_ONLY) != ISMINE_NO) && (coinControl && coinControl->fAllowWatchOnly && solvable));
306301
307302 // Filter by spendable outputs only
308- if (!spendable && only_spendable) continue ;
303+ if (!spendable && params. only_spendable ) continue ;
309304
310305 // Obtain script type
311306 std::vector<std::vector<uint8_t >> script_solutions;
@@ -329,14 +324,14 @@ CoinsResult AvailableCoins(const CWallet& wallet,
329324 // Cache total amount as we go
330325 result.total_amount += output.nValue ;
331326 // Checks the sum amount of all UTXO's.
332- if (nMinimumSumAmount != MAX_MONEY) {
333- if (result.total_amount >= nMinimumSumAmount) {
327+ if (params. nMinimumSumAmount != MAX_MONEY) {
328+ if (result.total_amount >= params. nMinimumSumAmount ) {
334329 return result;
335330 }
336331 }
337332
338333 // Checks the maximum number of UTXO's.
339- if (nMaximumCount > 0 && result.Size () >= nMaximumCount) {
334+ if (params. nMaximumCount > 0 && result.Size () >= params. nMaximumCount ) {
340335 return result;
341336 }
342337 }
@@ -345,21 +340,16 @@ CoinsResult AvailableCoins(const CWallet& wallet,
345340 return result;
346341}
347342
348- CoinsResult AvailableCoinsListUnspent (const CWallet& wallet, const CCoinControl* coinControl, const CAmount& nMinimumAmount, const CAmount& nMaximumAmount, const CAmount& nMinimumSumAmount, const uint64_t nMaximumCount, bool include_immature_coinbase )
343+ CoinsResult AvailableCoinsListUnspent (const CWallet& wallet, const CCoinControl* coinControl, CoinFilterParams params )
349344{
350- return AvailableCoins (wallet, coinControl, /* feerate=*/ std::nullopt , nMinimumAmount, nMaximumAmount, nMinimumSumAmount, nMaximumCount, /* only_spendable=*/ false , include_immature_coinbase);
345+ params.only_spendable = false ;
346+ return AvailableCoins (wallet, coinControl, /* feerate=*/ std::nullopt , params);
351347}
352348
353349CAmount GetAvailableBalance (const CWallet& wallet, const CCoinControl* coinControl)
354350{
355351 LOCK (wallet.cs_wallet );
356- return AvailableCoins (wallet, coinControl,
357- /* feerate=*/ std::nullopt ,
358- /* nMinimumAmount=*/ 1 ,
359- /* nMaximumAmount=*/ MAX_MONEY,
360- /* nMinimumSumAmount=*/ MAX_MONEY,
361- /* nMaximumCount=*/ 0
362- ).total_amount ;
352+ return AvailableCoins (wallet, coinControl).total_amount ;
363353}
364354
365355const CTxOut& FindNonChangeParentOutput (const CWallet& wallet, const CTransaction& tx, int output)
@@ -898,13 +888,7 @@ static util::Result<CreatedTransactionResult> CreateTransactionInternal(
898888 // allowed (coins automatically selected by the wallet)
899889 CoinsResult available_coins;
900890 if (coin_control.m_allow_other_inputs ) {
901- available_coins = AvailableCoins (wallet,
902- &coin_control,
903- coin_selection_params.m_effective_feerate ,
904- 1 , /* nMinimumAmount*/
905- MAX_MONEY, /* nMaximumAmount*/
906- MAX_MONEY, /* nMinimumSumAmount*/
907- 0 ); /* nMaximumCount*/
891+ available_coins = AvailableCoins (wallet, &coin_control, coin_selection_params.m_effective_feerate );
908892 }
909893
910894 // Choose coins to use
0 commit comments