waves_rust/model/transaction/action/
reissue_action.rs1use 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}