penumbra_sdk_asset/asset/
denom.rs

1use penumbra_sdk_proto::{penumbra::core::asset::v1 as pb, DomainType};
2use serde::{Deserialize, Serialize};
3/// An asset denomination.
4///
5/// Each denomination has a unique [`asset::Id`] and base unit, and may also
6/// have other display units.
7#[derive(Serialize, Deserialize, Clone)]
8#[serde(try_from = "pb::Denom", into = "pb::Denom")]
9pub struct Denom {
10    pub denom: String,
11}
12
13impl DomainType for Denom {
14    type Proto = pb::Denom;
15}
16
17impl From<Denom> for pb::Denom {
18    fn from(dn: Denom) -> Self {
19        pb::Denom { denom: dn.denom }
20    }
21}
22
23impl TryFrom<pb::Denom> for Denom {
24    type Error = anyhow::Error;
25
26    fn try_from(value: pb::Denom) -> Result<Self, Self::Error> {
27        Ok(Denom { denom: value.denom })
28    }
29}