feat: use FeeRate type in TxBuilder

This commit is contained in:
Matthew
2024-01-16 14:17:56 -06:00
parent 7319aea562
commit 8e9d2ddc14
13 changed files with 35 additions and 19 deletions

View File

@@ -68,7 +68,14 @@ dictionary TxOut {
// ------------------------------------------------------------------------
interface FeeRate {
[Name=from_sat_per_vb]
constructor(f32 sat_per_vb);
[Name=from_sat_per_kwu]
constructor(f32 sat_per_kwu);
f32 as_sat_per_vb();
f32 sat_per_kwu();
};
@@ -132,7 +139,7 @@ interface TxBuilder {
TxBuilder manually_selected_only();
TxBuilder fee_rate(float sat_per_vbyte);
TxBuilder fee_rate([ByRef] FeeRate fee_rate);
TxBuilder fee_absolute(u64 fee);

View File

@@ -11,9 +11,18 @@ use bdk::FeeRate as BdkFeeRate;
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct FeeRate(pub BdkFeeRate);
impl FeeRate {
pub fn from_sat_per_vb(sat_per_vb: f32) -> Self {
FeeRate(BdkFeeRate::from_sat_per_vb(sat_per_vb))
}
pub fn from_sat_per_kwu(sat_per_kwu: f32) -> Self {
FeeRate(BdkFeeRate::from_sat_per_kwu(sat_per_kwu))
}
pub fn as_sat_per_vb(&self) -> f32 {
self.0.as_sat_per_vb()
}

View File

@@ -309,7 +309,7 @@ pub struct TxBuilder {
pub(crate) unspendable: HashSet<OutPoint>,
pub(crate) change_policy: ChangeSpendPolicy,
pub(crate) manually_selected_only: bool,
pub(crate) fee_rate: Option<f32>,
pub(crate) fee_rate: Option<FeeRate>,
pub(crate) fee_absolute: Option<u64>,
pub(crate) drain_wallet: bool,
pub(crate) drain_to: Option<BdkScriptBuf>,
@@ -412,9 +412,9 @@ impl TxBuilder {
})
}
pub(crate) fn fee_rate(&self, sat_per_vb: f32) -> Arc<Self> {
pub(crate) fn fee_rate(&self, fee_rate: &FeeRate) -> Arc<Self> {
Arc::new(TxBuilder {
fee_rate: Some(sat_per_vb),
fee_rate: Some(fee_rate.clone()),
..self.clone()
})
}
@@ -486,8 +486,8 @@ impl TxBuilder {
if self.manually_selected_only {
tx_builder.manually_selected_only();
}
if let Some(sat_per_vb) = self.fee_rate {
tx_builder.fee_rate(BdkFeeRate::from_sat_per_vb(sat_per_vb));
if let Some(fee_rate) = &self.fee_rate {
tx_builder.fee_rate(fee_rate.0);
}
if let Some(fee_amount) = self.fee_absolute {
tx_builder.fee_absolute(fee_amount);