numina_pkg/
common.rs

1use cosmwasm_schema::cw_serde;
2use cosmwasm_std::Decimal;
3use rhaki_cw_plus::serde_value::IntoSerdeJsonString;
4
5pub const YEAR_IN_SECONDS: u64 = 31_536_000;
6
7#[cw_serde]
8pub enum PriceType {
9    Oracle,
10    Fix { ratio: Decimal },
11}
12
13impl IntoSerdeJsonString for PriceType {}
14
15#[cw_serde]
16pub enum AssetType {
17    Token,
18    Cw20,
19}
20
21#[cw_serde]
22pub enum UpdateOption<T> {
23    ToNone,
24    Some(T),
25}
26
27impl<T: Clone> UpdateOption<T> {
28    pub fn into_option(&self) -> Option<T> {
29        match self {
30            UpdateOption::ToNone => None,
31            UpdateOption::Some(t) => Some(t.clone()),
32        }
33    }
34
35    pub fn unwrap(self) -> T {
36        match self {
37            UpdateOption::ToNone => panic!("Unwrap a None value"),
38            UpdateOption::Some(val) => val,
39        }
40    }
41}
42
43#[allow(clippy::from_over_into)]
44impl<T> Into<Option<T>> for UpdateOption<T> {
45    fn into(self) -> Option<T> {
46        match self {
47            UpdateOption::ToNone => None,
48            UpdateOption::Some(val) => Some(val),
49        }
50    }
51}