1use solana_program::program_error::ProgramError;
4
5pub const SCALE: usize = 18;
7pub const WAD: u64 = 1_000_000_000_000_000_000;
9pub const HALF_WAD: u64 = 500_000_000_000_000_000;
11pub const PERCENT_SCALER: u64 = 10_000_000_000_000_000;
13
14pub const BIPS_SCALER: u64 = PERCENT_SCALER / 100;
16
17pub trait TrySub: Sized {
19 fn try_sub(self, rhs: Self) -> Result<Self, ProgramError>;
21}
22
23pub trait TryAdd: Sized {
25 fn try_add(self, rhs: Self) -> Result<Self, ProgramError>;
27}
28
29pub trait TryDiv<RHS>: Sized {
31 fn try_div(self, rhs: RHS) -> Result<Self, ProgramError>;
33}
34
35pub trait TryMul<RHS>: Sized {
37 fn try_mul(self, rhs: RHS) -> Result<Self, ProgramError>;
39}