waves_rust/model/transaction/action/
reissue_action.rs

1use crate::error::{Error, Result};
2use crate::model::AssetId;
3use crate::util::JsonDeserializer;
4use serde_json::Value;
5
6#[derive(Eq, PartialEq, Clone, Debug)]
7pub struct ReissueAction {
8    asset_id: AssetId,
9    quantity: u64,
10    reissuable: bool,
11}
12
13impl ReissueAction {
14    pub fn new(asset_id: AssetId, quantity: u64, reissuable: bool) -> ReissueAction {
15        ReissueAction {
16            asset_id,
17            quantity,
18            reissuable,
19        }
20    }
21
22    pub fn asset_id(&self) -> AssetId {
23        self.asset_id.clone()
24    }
25
26    pub fn quantity(&self) -> u64 {
27        self.quantity
28    }
29
30    pub fn is_reissuable(&self) -> bool {
31        self.reissuable
32    }
33}
34
35impl TryFrom<&Value> for ReissueAction {
36    type Error = Error;
37
38    fn try_from(value: &Value) -> Result<Self> {
39        let asset = JsonDeserializer::safe_to_string_from_field(value, "assetId")?;
40        let quantity = JsonDeserializer::safe_to_int_from_field(value, "quantity")?;
41        let reissuable = JsonDeserializer::safe_to_boolean_from_field(value, "isReissuable")?;
42        Ok(ReissueAction {
43            asset_id: AssetId::from_string(&asset)?,
44            quantity: quantity as u64,
45            reissuable,
46        })
47    }
48}