11use crate :: bitcoin:: { OutPoint , PartiallySignedTransaction , Transaction } ;
22use crate :: descriptor:: Descriptor ;
3- use crate :: types :: Balance ;
3+ use crate :: error :: CalculateFeeError ;
44use crate :: types:: ScriptAmount ;
5+ use crate :: types:: { Balance , FeeRate } ;
56use crate :: Script ;
67use crate :: { AddressIndex , AddressInfo , Network } ;
78
@@ -10,7 +11,7 @@ use bdk::bitcoin::psbt::PartiallySignedTransaction as BdkPartiallySignedTransact
1011use bdk:: bitcoin:: { OutPoint as BdkOutPoint , Sequence , Txid } ;
1112use bdk:: wallet:: tx_builder:: ChangeSpendPolicy ;
1213use bdk:: wallet:: Update as BdkUpdate ;
13- use bdk:: { Error as BdkError , FeeRate } ;
14+ use bdk:: { Error as BdkError , FeeRate as BdkFeeRate } ;
1415use bdk:: { SignOptions , Wallet as BdkWallet } ;
1516
1617use std:: collections:: HashSet ;
@@ -98,6 +99,18 @@ impl Wallet {
9899 . map ( |tx| Arc :: new ( tx. tx_node . tx . clone ( ) . into ( ) ) )
99100 . collect ( )
100101 }
102+
103+ pub fn calculate_fee ( & self , tx : & Transaction ) -> Result < u64 , CalculateFeeError > {
104+ let fee_result = self . get_wallet ( ) . calculate_fee ( & tx. clone ( ) . into ( ) ) ;
105+ fee_result. map_err ( |err| err. into ( ) )
106+ }
107+
108+ pub fn calculate_fee_rate ( & self , tx : & Transaction ) -> Result < Arc < FeeRate > , CalculateFeeError > {
109+ let fee_rate_result = self . get_wallet ( ) . calculate_fee_rate ( & tx. clone ( ) . into ( ) ) ;
110+ fee_rate_result
111+ . map ( |fee_rate| Arc :: new ( FeeRate :: from_sat_per_vb ( fee_rate. as_sat_per_vb ( ) ) ) )
112+ . map_err ( |err| err. into ( ) )
113+ }
101114}
102115
103116pub struct SentAndReceivedValues {
@@ -473,7 +486,7 @@ impl TxBuilder {
473486 tx_builder. manually_selected_only ( ) ;
474487 }
475488 if let Some ( sat_per_vb) = self . fee_rate {
476- tx_builder. fee_rate ( FeeRate :: from_sat_per_vb ( sat_per_vb) ) ;
489+ tx_builder. fee_rate ( BdkFeeRate :: from_sat_per_vb ( sat_per_vb) ) ;
477490 }
478491 if let Some ( fee_amount) = self . fee_absolute {
479492 tx_builder. fee_absolute ( fee_amount) ;
@@ -551,7 +564,7 @@ impl BumpFeeTxBuilder {
551564 Txid :: from_str ( self . txid . as_str ( ) ) . map_err ( |e| BdkError :: Generic ( e. to_string ( ) ) ) ?;
552565 let mut wallet = wallet. get_wallet ( ) ;
553566 let mut tx_builder = wallet. build_fee_bump ( txid) ?;
554- tx_builder. fee_rate ( FeeRate :: from_sat_per_vb ( self . fee_rate ) ) ;
567+ tx_builder. fee_rate ( BdkFeeRate :: from_sat_per_vb ( self . fee_rate ) ) ;
555568 if let Some ( allow_shrinking) = & self . allow_shrinking {
556569 tx_builder. allow_shrinking ( allow_shrinking. 0 . clone ( ) ) ?;
557570 }
0 commit comments