templar_common/vault/
restrictions.rs

1use near_sdk::near;
2use templar_vault_kernel::{Address, RestrictionMode};
3
4pub use templar_vault_kernel::RestrictionKind as RestrictionReason;
5
6#[near(serializers = [json, borsh])]
7#[derive(Clone, PartialEq, Eq)]
8pub enum Restrictions {
9    Paused,
10    Blacklist(Vec<Address>),
11    Whitelist(Vec<Address>),
12}
13
14impl Restrictions {
15    #[must_use]
16    pub fn to_kernel_mode(&self) -> Option<RestrictionMode> {
17        match self {
18            Self::Paused => None,
19            Self::Blacklist(addresses) => Some(RestrictionMode::blacklist(addresses.clone())),
20            Self::Whitelist(addresses) => Some(RestrictionMode::whitelist(addresses.clone())),
21        }
22    }
23}
24
25impl From<RestrictionMode> for Restrictions {
26    fn from(value: RestrictionMode) -> Self {
27        match value {
28            RestrictionMode::Blacklist(addresses) => Self::Blacklist(addresses),
29            RestrictionMode::Whitelist(addresses) => Self::Whitelist(addresses),
30        }
31    }
32}