dpp/data_contract/associated_token/token_perpetual_distribution/
mod.rs

1use crate::data_contract::associated_token::token_perpetual_distribution::v0::TokenPerpetualDistributionV0;
2use crate::errors::ProtocolError;
3#[cfg(feature = "json-conversion")]
4use crate::serialization::JsonConvertible;
5use bincode::{Decode, Encode};
6use derive_more::From;
7use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize};
8use serde::{Deserialize, Serialize};
9use std::fmt;
10
11pub mod distribution_function;
12pub mod distribution_recipient;
13pub mod methods;
14pub mod reward_distribution_moment;
15pub mod reward_distribution_type;
16pub mod v0;
17
18#[cfg_attr(feature = "json-conversion", derive(JsonConvertible))]
19#[derive(
20    Serialize,
21    Deserialize,
22    Encode,
23    Decode,
24    PlatformSerialize,
25    PlatformDeserialize,
26    Debug,
27    Clone,
28    PartialEq,
29    Eq,
30    PartialOrd,
31    From,
32)]
33#[serde(tag = "$formatVersion")]
34#[platform_serialize(unversioned)]
35pub enum TokenPerpetualDistribution {
36    #[serde(rename = "0")]
37    V0(TokenPerpetualDistributionV0),
38}
39
40impl fmt::Display for TokenPerpetualDistribution {
41    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42        match self {
43            TokenPerpetualDistribution::V0(v0) => {
44                write!(f, "{}", v0) //just pass through
45            }
46        }
47    }
48}