@@ -40,6 +40,7 @@ use core::fmt;
4040use core:: ops:: Deref ;
4141use miniscript:: psbt:: { PsbtExt , PsbtInputExt , PsbtInputSatisfier } ;
4242
43+ use bdk_chain:: tx_graph:: CalculateFeeError ;
4344#[ allow( unused_imports) ]
4445use log:: { debug, error, info, trace} ;
4546
@@ -66,7 +67,7 @@ use crate::descriptor::{
6667 calc_checksum, into_wallet_descriptor_checked, DerivedDescriptor , DescriptorMeta ,
6768 ExtendedDescriptor , ExtractPolicy , IntoWalletDescriptor , Policy , XKeyUtils ,
6869} ;
69- use crate :: error:: { CalculateFeeError , Error , MiniscriptPsbtError } ;
70+ use crate :: error:: { Error , MiniscriptPsbtError } ;
7071use crate :: psbt:: PsbtUtils ;
7172use crate :: signer:: SignerError ;
7273use crate :: types:: * ;
@@ -434,11 +435,7 @@ impl<D> Wallet<D> {
434435 ///
435436 /// Note `tx` does not have to be in the graph for this to work.
436437 pub fn calculate_fee ( & self , tx : & Transaction ) -> Result < u64 , CalculateFeeError > {
437- match self . indexed_graph . graph ( ) . calculate_fee ( tx) {
438- None => Err ( CalculateFeeError :: MissingTxOut ) ,
439- Some ( fee) if fee < 0 => Err ( CalculateFeeError :: NegativeFee ( fee) ) ,
440- Some ( fee) => Ok ( u64:: try_from ( fee) . unwrap ( ) ) ,
441- }
438+ self . indexed_graph . graph ( ) . calculate_fee ( tx)
442439 }
443440
444441 /// Calculate the `FeeRate` for a given transaction.
@@ -1072,13 +1069,12 @@ impl<D> Wallet<D> {
10721069 return Err ( Error :: IrreplaceableTransaction ) ;
10731070 }
10741071
1075- let fee = graph. calculate_fee ( & tx) . ok_or ( Error :: FeeRateUnavailable ) ?;
1076- if fee < 0 {
1077- // It's available but it's wrong so let's say it's unavailable
1078- return Err ( Error :: FeeRateUnavailable ) ?;
1079- }
1080- let fee = fee as u64 ;
1081- let feerate = FeeRate :: from_wu ( fee, tx. weight ( ) ) ;
1072+ let fee = self
1073+ . calculate_fee ( & tx)
1074+ . map_err ( |_| Error :: FeeRateUnavailable ) ?;
1075+ let fee_rate = self
1076+ . calculate_fee_rate ( & tx)
1077+ . map_err ( |_| Error :: FeeRateUnavailable ) ?;
10821078
10831079 // remove the inputs from the tx and process them
10841080 let original_txin = tx. input . drain ( ..) . collect :: < Vec < _ > > ( ) ;
@@ -1162,7 +1158,7 @@ impl<D> Wallet<D> {
11621158 utxos : original_utxos,
11631159 bumping_fee : Some ( tx_builder:: PreviousFee {
11641160 absolute : fee,
1165- rate : feerate . as_sat_per_vb ( ) ,
1161+ rate : fee_rate . as_sat_per_vb ( ) ,
11661162 } ) ,
11671163 ..Default :: default ( )
11681164 } ;
0 commit comments