#[allow(unused)] use crate::float::FloatExt;
use crate::{DrainWeights, FeeRate};
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ChangePolicy {
pub min_value: u64,
pub drain_weights: DrainWeights,
}
impl ChangePolicy {
pub fn min_value(drain_weights: DrainWeights, min_value: u64) -> Self {
Self {
drain_weights,
min_value,
}
}
pub fn min_value_and_waste(
drain_weights: DrainWeights,
min_value: u64,
target_feerate: FeeRate,
long_term_feerate: FeeRate,
) -> Self {
let waste_with_change = drain_weights
.waste(target_feerate, long_term_feerate)
.ceil() as u64;
Self {
drain_weights,
min_value: waste_with_change.max(min_value),
}
}
}