@@ -191,12 +191,7 @@ util::Result<PreSelectedInputs> FetchSelectedInputs(const CWallet& wallet, const
191
191
CoinsResult AvailableCoins (const CWallet& wallet,
192
192
const CCoinControl* coinControl,
193
193
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)
200
195
{
201
196
AssertLockHeld (wallet.cs_wallet );
202
197
@@ -214,7 +209,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
214
209
const uint256& wtxid = entry.first ;
215
210
const CWalletTx& wtx = entry.second ;
216
211
217
- if (wallet.IsTxImmatureCoinBase (wtx) && !include_immature_coinbase)
212
+ if (wallet.IsTxImmatureCoinBase (wtx) && !params. include_immature_coinbase )
218
213
continue ;
219
214
220
215
int nDepth = wallet.GetTxDepthInMainChain (wtx);
@@ -273,7 +268,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
273
268
const CTxOut& output = wtx.tx ->vout [i];
274
269
const COutPoint outpoint (wtxid, i);
275
270
276
- if (output.nValue < nMinimumAmount || output.nValue > nMaximumAmount)
271
+ if (output.nValue < params. nMinimumAmount || output.nValue > params. nMaximumAmount )
277
272
continue ;
278
273
279
274
// Skip manually selected coins (the caller can fetch them directly)
@@ -305,7 +300,7 @@ CoinsResult AvailableCoins(const CWallet& wallet,
305
300
bool spendable = ((mine & ISMINE_SPENDABLE) != ISMINE_NO) || (((mine & ISMINE_WATCH_ONLY) != ISMINE_NO) && (coinControl && coinControl->fAllowWatchOnly && solvable));
306
301
307
302
// Filter by spendable outputs only
308
- if (!spendable && only_spendable) continue ;
303
+ if (!spendable && params. only_spendable ) continue ;
309
304
310
305
// Obtain script type
311
306
std::vector<std::vector<uint8_t >> script_solutions;
@@ -329,14 +324,14 @@ CoinsResult AvailableCoins(const CWallet& wallet,
329
324
// Cache total amount as we go
330
325
result.total_amount += output.nValue ;
331
326
// 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 ) {
334
329
return result;
335
330
}
336
331
}
337
332
338
333
// Checks the maximum number of UTXO's.
339
- if (nMaximumCount > 0 && result.Size () >= nMaximumCount) {
334
+ if (params. nMaximumCount > 0 && result.Size () >= params. nMaximumCount ) {
340
335
return result;
341
336
}
342
337
}
@@ -345,21 +340,16 @@ CoinsResult AvailableCoins(const CWallet& wallet,
345
340
return result;
346
341
}
347
342
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 )
349
344
{
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);
351
347
}
352
348
353
349
CAmount GetAvailableBalance (const CWallet& wallet, const CCoinControl* coinControl)
354
350
{
355
351
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 ;
363
353
}
364
354
365
355
const CTxOut& FindNonChangeParentOutput (const CWallet& wallet, const CTransaction& tx, int output)
@@ -898,13 +888,7 @@ static util::Result<CreatedTransactionResult> CreateTransactionInternal(
898
888
// allowed (coins automatically selected by the wallet)
899
889
CoinsResult available_coins;
900
890
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 );
908
892
}
909
893
910
894
// Choose coins to use
0 commit comments