Skip to main content

defuse/contract/
config.rs

1use std::collections::{HashMap, HashSet};
2
3use defuse_core::fees::FeesConfig;
4use near_sdk::AccountId;
5use serde::{Deserialize, Serialize};
6
7use super::Role;
8
9#[cfg_attr(feature = "abi", derive(::schemars::JsonSchema))]
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct DefuseConfig {
12    pub wnear_id: AccountId,
13    pub fees: FeesConfig,
14    #[serde(default)]
15    pub roles: RolesConfig,
16}
17
18#[cfg_attr(feature = "abi", derive(::schemars::JsonSchema))]
19#[derive(Debug, Clone, Default, Serialize, Deserialize)]
20pub struct RolesConfig {
21    #[serde(default)]
22    pub super_admins: HashSet<AccountId>,
23    #[serde(default)]
24    pub admins: HashMap<Role, HashSet<AccountId>>,
25    #[serde(default)]
26    pub grantees: HashMap<Role, HashSet<AccountId>>,
27}