refactor: move feerate type to bitcoin module
This commit is contained in:
parent
4dd4e91ccd
commit
282fcfce0a
@ -222,20 +222,6 @@ dictionary CanonicalTx {
|
|||||||
// bdk crate - wallet module
|
// bdk crate - wallet module
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
interface FeeRate {
|
|
||||||
[Name=from_sat_per_vb, Throws=FeeRateError]
|
|
||||||
constructor(u64 sat_per_vb);
|
|
||||||
|
|
||||||
[Name=from_sat_per_kwu]
|
|
||||||
constructor(u64 sat_per_kwu);
|
|
||||||
|
|
||||||
u64 to_sat_per_vb_ceil();
|
|
||||||
|
|
||||||
u64 to_sat_per_vb_floor();
|
|
||||||
|
|
||||||
u64 to_sat_per_kwu();
|
|
||||||
};
|
|
||||||
|
|
||||||
enum ChangeSpendPolicy {
|
enum ChangeSpendPolicy {
|
||||||
"ChangeAllowed",
|
"ChangeAllowed",
|
||||||
"OnlyChange",
|
"OnlyChange",
|
||||||
@ -523,3 +509,17 @@ dictionary OutPoint {
|
|||||||
string txid;
|
string txid;
|
||||||
u32 vout;
|
u32 vout;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
interface FeeRate {
|
||||||
|
[Name=from_sat_per_vb, Throws=FeeRateError]
|
||||||
|
constructor(u64 sat_per_vb);
|
||||||
|
|
||||||
|
[Name=from_sat_per_kwu]
|
||||||
|
constructor(u64 sat_per_kwu);
|
||||||
|
|
||||||
|
u64 to_sat_per_vb_ceil();
|
||||||
|
|
||||||
|
u64 to_sat_per_vb_floor();
|
||||||
|
|
||||||
|
u64 to_sat_per_kwu();
|
||||||
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use crate::error::{AddressError, PsbtParseError, TransactionError};
|
use crate::error::{AddressError, FeeRateError, PsbtParseError, TransactionError};
|
||||||
|
|
||||||
use bdk::bitcoin::address::{NetworkChecked, NetworkUnchecked};
|
use bdk::bitcoin::address::{NetworkChecked, NetworkUnchecked};
|
||||||
use bdk::bitcoin::blockdata::script::ScriptBuf as BdkScriptBuf;
|
use bdk::bitcoin::blockdata::script::ScriptBuf as BdkScriptBuf;
|
||||||
@ -7,6 +7,7 @@ use bdk::bitcoin::consensus::encode::serialize;
|
|||||||
use bdk::bitcoin::consensus::Decodable;
|
use bdk::bitcoin::consensus::Decodable;
|
||||||
use bdk::bitcoin::psbt::ExtractTxError;
|
use bdk::bitcoin::psbt::ExtractTxError;
|
||||||
use bdk::bitcoin::Address as BdkAddress;
|
use bdk::bitcoin::Address as BdkAddress;
|
||||||
|
use bdk::bitcoin::FeeRate as BdkFeeRate;
|
||||||
use bdk::bitcoin::Network;
|
use bdk::bitcoin::Network;
|
||||||
use bdk::bitcoin::OutPoint as BdkOutPoint;
|
use bdk::bitcoin::OutPoint as BdkOutPoint;
|
||||||
use bdk::bitcoin::Psbt as BdkPsbt;
|
use bdk::bitcoin::Psbt as BdkPsbt;
|
||||||
@ -304,6 +305,35 @@ impl From<&BdkTxOut> for TxOut {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct FeeRate(pub BdkFeeRate);
|
||||||
|
|
||||||
|
impl FeeRate {
|
||||||
|
pub fn from_sat_per_vb(sat_per_vb: u64) -> Result<Self, FeeRateError> {
|
||||||
|
let fee_rate: Option<BdkFeeRate> = BdkFeeRate::from_sat_per_vb(sat_per_vb);
|
||||||
|
match fee_rate {
|
||||||
|
Some(fee_rate) => Ok(FeeRate(fee_rate)),
|
||||||
|
None => Err(FeeRateError::ArithmeticOverflow),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn from_sat_per_kwu(sat_per_kwu: u64) -> Self {
|
||||||
|
FeeRate(BdkFeeRate::from_sat_per_kwu(sat_per_kwu))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn to_sat_per_vb_ceil(&self) -> u64 {
|
||||||
|
self.0.to_sat_per_vb_ceil()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn to_sat_per_vb_floor(&self) -> u64 {
|
||||||
|
self.0.to_sat_per_vb_floor()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn to_sat_per_kwu(&self) -> u64 {
|
||||||
|
self.0.to_sat_per_kwu()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::bitcoin::Address;
|
use crate::bitcoin::Address;
|
||||||
|
@ -7,6 +7,7 @@ mod types;
|
|||||||
mod wallet;
|
mod wallet;
|
||||||
|
|
||||||
use crate::bitcoin::Address;
|
use crate::bitcoin::Address;
|
||||||
|
use crate::bitcoin::FeeRate;
|
||||||
use crate::bitcoin::OutPoint;
|
use crate::bitcoin::OutPoint;
|
||||||
use crate::bitcoin::Psbt;
|
use crate::bitcoin::Psbt;
|
||||||
use crate::bitcoin::Script;
|
use crate::bitcoin::Script;
|
||||||
@ -39,7 +40,6 @@ use crate::types::AddressInfo;
|
|||||||
use crate::types::Balance;
|
use crate::types::Balance;
|
||||||
use crate::types::CanonicalTx;
|
use crate::types::CanonicalTx;
|
||||||
use crate::types::ChainPosition;
|
use crate::types::ChainPosition;
|
||||||
use crate::types::FeeRate;
|
|
||||||
use crate::types::LocalOutput;
|
use crate::types::LocalOutput;
|
||||||
use crate::types::ScriptAmount;
|
use crate::types::ScriptAmount;
|
||||||
use crate::wallet::BumpFeeTxBuilder;
|
use crate::wallet::BumpFeeTxBuilder;
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
use crate::error::FeeRateError;
|
|
||||||
|
|
||||||
use crate::bitcoin::{Address, OutPoint, Script, Transaction, TxOut};
|
use crate::bitcoin::{Address, OutPoint, Script, Transaction, TxOut};
|
||||||
|
|
||||||
use bdk::bitcoin::FeeRate as BdkFeeRate;
|
|
||||||
use bdk::chain::tx_graph::CanonicalTx as BdkCanonicalTx;
|
use bdk::chain::tx_graph::CanonicalTx as BdkCanonicalTx;
|
||||||
use bdk::chain::{ChainPosition as BdkChainPosition, ConfirmationTimeHeightAnchor};
|
use bdk::chain::{ChainPosition as BdkChainPosition, ConfirmationTimeHeightAnchor};
|
||||||
use bdk::wallet::AddressIndex as BdkAddressIndex;
|
use bdk::wallet::AddressIndex as BdkAddressIndex;
|
||||||
@ -45,35 +42,6 @@ impl From<BdkCanonicalTx<'_, Arc<bdk::bitcoin::Transaction>, ConfirmationTimeHei
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
|
||||||
pub struct FeeRate(pub BdkFeeRate);
|
|
||||||
|
|
||||||
impl FeeRate {
|
|
||||||
pub fn from_sat_per_vb(sat_per_vb: u64) -> Result<Self, FeeRateError> {
|
|
||||||
let fee_rate: Option<BdkFeeRate> = BdkFeeRate::from_sat_per_vb(sat_per_vb);
|
|
||||||
match fee_rate {
|
|
||||||
Some(fee_rate) => Ok(FeeRate(fee_rate)),
|
|
||||||
None => Err(FeeRateError::ArithmeticOverflow),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn from_sat_per_kwu(sat_per_kwu: u64) -> Self {
|
|
||||||
FeeRate(BdkFeeRate::from_sat_per_kwu(sat_per_kwu))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn to_sat_per_vb_ceil(&self) -> u64 {
|
|
||||||
self.0.to_sat_per_vb_ceil()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn to_sat_per_vb_floor(&self) -> u64 {
|
|
||||||
self.0.to_sat_per_vb_floor()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn to_sat_per_kwu(&self) -> u64 {
|
|
||||||
self.0.to_sat_per_kwu()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct ScriptAmount {
|
pub struct ScriptAmount {
|
||||||
pub script: Arc<Script>,
|
pub script: Arc<Script>,
|
||||||
pub amount: u64,
|
pub amount: u64,
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
use crate::bitcoin::{OutPoint, Psbt, Script, Transaction};
|
use crate::bitcoin::{FeeRate, OutPoint, Psbt, Script, Transaction};
|
||||||
use crate::descriptor::Descriptor;
|
use crate::descriptor::Descriptor;
|
||||||
use crate::error::{
|
use crate::error::{
|
||||||
Alpha3Error, CalculateFeeError, CannotConnectError, PersistenceError, SignerError,
|
Alpha3Error, CalculateFeeError, CannotConnectError, PersistenceError, SignerError,
|
||||||
TxidParseError, WalletCreationError,
|
TxidParseError, WalletCreationError,
|
||||||
};
|
};
|
||||||
use crate::types::{
|
use crate::types::{AddressIndex, AddressInfo, Balance, CanonicalTx, LocalOutput, ScriptAmount};
|
||||||
AddressIndex, AddressInfo, Balance, CanonicalTx, FeeRate, LocalOutput, ScriptAmount,
|
|
||||||
};
|
|
||||||
|
|
||||||
use bdk::bitcoin::blockdata::script::ScriptBuf as BdkScriptBuf;
|
use bdk::bitcoin::blockdata::script::ScriptBuf as BdkScriptBuf;
|
||||||
use bdk::bitcoin::Network;
|
use bdk::bitcoin::Network;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user