templar_common/vault/
restrictions.rs1use 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}