use super::Lamports;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct MicroLamports(pub(crate) u64);
impl MicroLamports {
pub const ZERO: Self = MicroLamports(0);
pub const MIN: Self = MicroLamports(10_000);
pub fn new(value: u64) -> Self {
MicroLamports(value)
}
pub fn into_inner(self) -> u64 {
self.0
}
pub fn checked_mul(&self, rhs: u64) -> Option<Self> {
self.0.checked_mul(rhs).map(MicroLamports)
}
pub fn checked_div(&self, rhs: u64) -> Option<Self> {
self.0.checked_div(rhs).map(MicroLamports)
}
pub fn checked_div_self(&self, rhs: Self) -> Option<u64> {
self.0.checked_div(rhs.0)
}
pub fn checked_add(&self, rhs: Self) -> Option<Self> {
self.0.checked_add(rhs.0).map(MicroLamports)
}
pub fn checked_sub(&self, rhs: Self) -> Option<Self> {
self.0.checked_sub(rhs.0).map(MicroLamports)
}
}
impl From<Lamports> for MicroLamports {
fn from(value: Lamports) -> Self {
MicroLamports(value.0 as u64 * 1_000_000)
}
}