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}