dpp/data_contract/associated_token/token_configuration_localization/
mod.rs

1use crate::data_contract::associated_token::token_configuration_localization::v0::TokenConfigurationLocalizationV0;
2#[cfg(feature = "json-conversion")]
3use crate::serialization::JsonConvertible;
4#[cfg(feature = "value-conversion")]
5use crate::serialization::ValueConvertible;
6use bincode::Encode;
7use derive_more::From;
8use platform_serialization::de::Decode;
9use serde::{Deserialize, Serialize};
10use std::fmt;
11
12pub mod accessors;
13pub mod v0;
14
15/// Versioned wrapper for token name localization data.
16///
17/// `TokenConfigurationLocalization` allows extensibility for future schema upgrades
18/// while preserving backward compatibility. Each variant represents a specific format
19/// version for localization information.
20///
21/// This structure is used to map language codes to localized token names in a flexible,
22/// forward-compatible manner.
23#[cfg_attr(feature = "json-conversion", derive(JsonConvertible))]
24#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, PartialOrd, From)]
25#[cfg_attr(feature = "value-conversion", derive(ValueConvertible))]
26#[serde(tag = "$formatVersion")]
27pub enum TokenConfigurationLocalization {
28    /// Version 0 of the token localization schema.
29    ///
30    /// Defines basic capitalization preference, singular form, and plural form
31    /// for displaying token names.
32    #[serde(rename = "0")]
33    V0(TokenConfigurationLocalizationV0),
34}
35
36impl fmt::Display for TokenConfigurationLocalization {
37    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38        match self {
39            TokenConfigurationLocalization::V0(v0) => {
40                write!(f, "{}", v0) //just pass through
41            }
42        }
43    }
44}