#![doc = include_str!("../README.md")]
#![no_std]
#![warn(missing_docs)]
#![deny(unsafe_code)]
#[allow(unused_imports)]
#[macro_use]
extern crate alloc;
#[cfg(feature = "std")]
#[macro_use]
extern crate std;
mod coin_selector;
pub mod float;
pub use coin_selector::*;
mod bnb;
pub use bnb::*;
pub mod metrics;
mod feerate;
pub use feerate::*;
mod change_policy;
pub use change_policy::*;
pub const TXIN_BASE_WEIGHT: u32 = (32 + 4 + 4 + 1) * 4;
#[allow(clippy::identity_op)]
pub const TXOUT_BASE_WEIGHT: u32 =
4 * core::mem::size_of::<u64>() as u32
+ (4 * 1);
pub const TR_KEYSPEND_SATISFACTION_WEIGHT: u32 = 66;
pub const TR_SPK_WEIGHT: u32 = (1 + 1 + 32) * 4;
pub const TR_KEYSPEND_TXIN_WEIGHT: u32 = TXIN_BASE_WEIGHT + TR_KEYSPEND_SATISFACTION_WEIGHT;
fn varint_size(v: usize) -> u32 {
if v <= 0xfc {
return 1;
}
if v <= 0xffff {
return 3;
}
if v <= 0xffff_ffff {
return 5;
}
9
}
#[allow(unused)]
fn txout_weight_from_spk_len(spk_len: usize) -> u32 {
(TXOUT_BASE_WEIGHT + varint_size(spk_len) + (spk_len as u32)) * 4
}