1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use cosmwasm_schema::cw_serde;
use std::fmt;

pub mod fee;
pub mod hub;
pub mod marketplace;
pub mod metadata;
pub mod mint;
pub mod permission;
pub mod token;
pub mod whitelist;

#[cw_serde]
pub enum Modules {
    Hub,
    Mint,
    Permission,
    Swap,
    Merge,
    Marketplace,
    Fee,
}

impl Modules {
    pub fn as_str(&self) -> &str {
        match self {
            Modules::Hub => "hub",
            Modules::Mint => "mint",
            Modules::Permission => "permission",
            Modules::Swap => "swap",
            Modules::Merge => "merge",
            Modules::Marketplace => "marketplace",
            Modules::Fee => "fee",
        }
    }
}

impl fmt::Display for Modules {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Modules::Hub => write!(f, "hub"),
            Modules::Mint => write!(f, "mint"),
            Modules::Permission => write!(f, "permission"),
            Modules::Swap => write!(f, "swap"),
            Modules::Merge => write!(f, "merge"),
            Modules::Marketplace => write!(f, "marketplace"),
            Modules::Fee => write!(f, "fee"),
        }
    }
}

pub const MODULES_NAMESPACE: &str = "modules";