1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use crate::block::output::FoundryId;
impl_id!(pub TokenId, 38, "TODO.");
#[cfg(feature = "serde")]
string_serde_impl!(TokenId);
impl From<FoundryId> for TokenId {
fn from(foundry_id: FoundryId) -> Self {
TokenId::new(*foundry_id)
}
}
#[cfg(feature = "dto")]
#[allow(missing_docs)]
pub mod dto {
use serde::{Deserialize, Serialize};
use super::*;
use crate::block::error::dto::DtoError;
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct TokenIdDto(pub String);
impl From<&TokenId> for TokenIdDto {
fn from(value: &TokenId) -> Self {
Self(prefix_hex::encode(**value))
}
}
impl TryFrom<&TokenIdDto> for TokenId {
type Error = DtoError;
fn try_from(value: &TokenIdDto) -> Result<Self, Self::Error> {
let token_id: [u8; TokenId::LENGTH] =
prefix_hex::decode(&value.0).map_err(|_e| DtoError::InvalidField("tokenId"))?;
Ok(TokenId::new(token_id))
}
}
}