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,19 @@ 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+ self . get_wallet ( )
105+ . calculate_fee ( & tx. clone ( ) . into ( ) )
106+ . map_err ( |err| err. into ( ) )
107+ }
108+
109+ pub fn calculate_fee_rate ( & self , tx : & Transaction ) -> Result < Arc < FeeRate > , CalculateFeeError > {
110+ self . get_wallet ( )
111+ . calculate_fee_rate ( & tx. clone ( ) . into ( ) )
112+ . map ( |bdk_fee_rate| Arc :: new ( FeeRate :: new ( bdk_fee_rate) ) )
113+ . map_err ( |err| err. into ( ) )
114+ }
101115}
102116
103117pub struct SentAndReceivedValues {
@@ -473,7 +487,7 @@ impl TxBuilder {
473487 tx_builder. manually_selected_only ( ) ;
474488 }
475489 if let Some ( sat_per_vb) = self . fee_rate {
476- tx_builder. fee_rate ( FeeRate :: from_sat_per_vb ( sat_per_vb) ) ;
490+ tx_builder. fee_rate ( BdkFeeRate :: from_sat_per_vb ( sat_per_vb) ) ;
477491 }
478492 if let Some ( fee_amount) = self . fee_absolute {
479493 tx_builder. fee_absolute ( fee_amount) ;
@@ -551,7 +565,7 @@ impl BumpFeeTxBuilder {
551565 Txid :: from_str ( self . txid . as_str ( ) ) . map_err ( |e| BdkError :: Generic ( e. to_string ( ) ) ) ?;
552566 let mut wallet = wallet. get_wallet ( ) ;
553567 let mut tx_builder = wallet. build_fee_bump ( txid) ?;
554- tx_builder. fee_rate ( FeeRate :: from_sat_per_vb ( self . fee_rate ) ) ;
568+ tx_builder. fee_rate ( BdkFeeRate :: from_sat_per_vb ( self . fee_rate ) ) ;
555569 if let Some ( allow_shrinking) = & self . allow_shrinking {
556570 tx_builder. allow_shrinking ( allow_shrinking. 0 . clone ( ) ) ?;
557571 }
0 commit comments