dpp/tokens/
emergency_action.rs

1use crate::tokens::status::TokenStatus;
2use crate::ProtocolError;
3use bincode::{Decode, Encode};
4use platform_version::version::PlatformVersion;
5#[cfg(feature = "serde-conversion")]
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Copy, Default, Encode, Decode, PartialOrd, PartialEq, Eq)]
9#[cfg_attr(
10    feature = "serde-conversion",
11    derive(Serialize, Deserialize),
12    serde(rename_all = "camelCase")
13)]
14pub enum TokenEmergencyAction {
15    #[default]
16    Pause = 0,
17    Resume = 1,
18}
19
20impl TokenEmergencyAction {
21    pub fn paused(&self) -> bool {
22        matches!(self, TokenEmergencyAction::Pause)
23    }
24    pub fn resulting_status(
25        &self,
26        platform_version: &PlatformVersion,
27    ) -> Result<TokenStatus, ProtocolError> {
28        match self {
29            TokenEmergencyAction::Pause => TokenStatus::new(true, platform_version),
30            TokenEmergencyAction::Resume => TokenStatus::new(false, platform_version),
31        }
32    }
33}