use vapory_types::U256;
#[cfg(feature = "price-info")]
use crate::gas_price_calibrator::GasPriceCalibrator;
#[derive(Debug, PartialEq)]
pub enum GasPricer {
Fixed(U256),
#[cfg(feature = "price-info")]
Calibrated(GasPriceCalibrator),
}
impl GasPricer {
#[cfg(feature = "price-info")]
pub fn new_calibrated(calibrator: GasPriceCalibrator) -> GasPricer {
GasPricer::Calibrated(calibrator)
}
pub fn new_fixed(gas_price: U256) -> GasPricer {
GasPricer::Fixed(gas_price)
}
pub fn recalibrate<F: FnOnce(U256) + Sync + Send + 'static>(&mut self, set_price: F) {
match *self {
GasPricer::Fixed(ref curr) => set_price(curr.clone()),
#[cfg(feature = "price-info")]
GasPricer::Calibrated(ref mut cal) => cal.recalibrate(set_price),
}
}
}