Skip to main content

stellar_xdr/generated/
liquidity_pool_deposit_result.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// LiquidityPoolDepositResult is an XDR Union defined as:
5///
6/// ```text
7/// union LiquidityPoolDepositResult switch (LiquidityPoolDepositResultCode code)
8/// {
9/// case LIQUIDITY_POOL_DEPOSIT_SUCCESS:
10///     void;
11/// case LIQUIDITY_POOL_DEPOSIT_MALFORMED:
12/// case LIQUIDITY_POOL_DEPOSIT_NO_TRUST:
13/// case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED:
14/// case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED:
15/// case LIQUIDITY_POOL_DEPOSIT_LINE_FULL:
16/// case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE:
17/// case LIQUIDITY_POOL_DEPOSIT_POOL_FULL:
18/// case LIQUIDITY_POOL_DEPOSIT_TRUSTLINE_FROZEN:
19///     void;
20/// };
21/// ```
22///
23// union with discriminant LiquidityPoolDepositResultCode
24#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
25#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27#[cfg_attr(
28    all(feature = "serde", feature = "alloc"),
29    serde_with::serde_as,
30    derive(serde::Serialize, serde::Deserialize),
31    serde(rename_all = "snake_case")
32)]
33#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34#[allow(clippy::large_enum_variant)]
35pub enum LiquidityPoolDepositResult {
36    Success,
37    Malformed,
38    NoTrust,
39    NotAuthorized,
40    Underfunded,
41    LineFull,
42    BadPrice,
43    PoolFull,
44    TrustlineFrozen,
45}
46
47#[cfg(feature = "alloc")]
48impl Default for LiquidityPoolDepositResult {
49    fn default() -> Self {
50        Self::Success
51    }
52}
53
54impl LiquidityPoolDepositResult {
55    const _VARIANTS: &[LiquidityPoolDepositResultCode] = &[
56        LiquidityPoolDepositResultCode::Success,
57        LiquidityPoolDepositResultCode::Malformed,
58        LiquidityPoolDepositResultCode::NoTrust,
59        LiquidityPoolDepositResultCode::NotAuthorized,
60        LiquidityPoolDepositResultCode::Underfunded,
61        LiquidityPoolDepositResultCode::LineFull,
62        LiquidityPoolDepositResultCode::BadPrice,
63        LiquidityPoolDepositResultCode::PoolFull,
64        LiquidityPoolDepositResultCode::TrustlineFrozen,
65    ];
66    pub const VARIANTS: [LiquidityPoolDepositResultCode; Self::_VARIANTS.len()] = {
67        let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
68        let mut i = 1;
69        while i < Self::_VARIANTS.len() {
70            arr[i] = Self::_VARIANTS[i];
71            i += 1;
72        }
73        arr
74    };
75    const _VARIANTS_STR: &[&str] = &[
76        "Success",
77        "Malformed",
78        "NoTrust",
79        "NotAuthorized",
80        "Underfunded",
81        "LineFull",
82        "BadPrice",
83        "PoolFull",
84        "TrustlineFrozen",
85    ];
86    pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
87        let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
88        let mut i = 1;
89        while i < Self::_VARIANTS_STR.len() {
90            arr[i] = Self::_VARIANTS_STR[i];
91            i += 1;
92        }
93        arr
94    };
95
96    #[must_use]
97    pub const fn name(&self) -> &'static str {
98        match self {
99            Self::Success => "Success",
100            Self::Malformed => "Malformed",
101            Self::NoTrust => "NoTrust",
102            Self::NotAuthorized => "NotAuthorized",
103            Self::Underfunded => "Underfunded",
104            Self::LineFull => "LineFull",
105            Self::BadPrice => "BadPrice",
106            Self::PoolFull => "PoolFull",
107            Self::TrustlineFrozen => "TrustlineFrozen",
108        }
109    }
110
111    #[must_use]
112    pub const fn discriminant(&self) -> LiquidityPoolDepositResultCode {
113        #[allow(clippy::match_same_arms)]
114        match self {
115            Self::Success => LiquidityPoolDepositResultCode::Success,
116            Self::Malformed => LiquidityPoolDepositResultCode::Malformed,
117            Self::NoTrust => LiquidityPoolDepositResultCode::NoTrust,
118            Self::NotAuthorized => LiquidityPoolDepositResultCode::NotAuthorized,
119            Self::Underfunded => LiquidityPoolDepositResultCode::Underfunded,
120            Self::LineFull => LiquidityPoolDepositResultCode::LineFull,
121            Self::BadPrice => LiquidityPoolDepositResultCode::BadPrice,
122            Self::PoolFull => LiquidityPoolDepositResultCode::PoolFull,
123            Self::TrustlineFrozen => LiquidityPoolDepositResultCode::TrustlineFrozen,
124        }
125    }
126
127    #[must_use]
128    pub const fn variants() -> [LiquidityPoolDepositResultCode; Self::_VARIANTS.len()] {
129        Self::VARIANTS
130    }
131}
132
133impl Name for LiquidityPoolDepositResult {
134    #[must_use]
135    fn name(&self) -> &'static str {
136        Self::name(self)
137    }
138}
139
140impl Discriminant<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {
141    #[must_use]
142    fn discriminant(&self) -> LiquidityPoolDepositResultCode {
143        Self::discriminant(self)
144    }
145}
146
147impl Variants<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {
148    fn variants() -> slice::Iter<'static, LiquidityPoolDepositResultCode> {
149        Self::VARIANTS.iter()
150    }
151}
152
153impl Union<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {}
154
155impl ReadXdr for LiquidityPoolDepositResult {
156    #[cfg(feature = "std")]
157    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
158        r.with_limited_depth(|r| {
159            let dv: LiquidityPoolDepositResultCode =
160                <LiquidityPoolDepositResultCode as ReadXdr>::read_xdr(r)?;
161            #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
162            let v = match dv {
163                LiquidityPoolDepositResultCode::Success => Self::Success,
164                LiquidityPoolDepositResultCode::Malformed => Self::Malformed,
165                LiquidityPoolDepositResultCode::NoTrust => Self::NoTrust,
166                LiquidityPoolDepositResultCode::NotAuthorized => Self::NotAuthorized,
167                LiquidityPoolDepositResultCode::Underfunded => Self::Underfunded,
168                LiquidityPoolDepositResultCode::LineFull => Self::LineFull,
169                LiquidityPoolDepositResultCode::BadPrice => Self::BadPrice,
170                LiquidityPoolDepositResultCode::PoolFull => Self::PoolFull,
171                LiquidityPoolDepositResultCode::TrustlineFrozen => Self::TrustlineFrozen,
172                #[allow(unreachable_patterns)]
173                _ => return Err(Error::Invalid),
174            };
175            Ok(v)
176        })
177    }
178}
179
180impl WriteXdr for LiquidityPoolDepositResult {
181    #[cfg(feature = "std")]
182    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
183        w.with_limited_depth(|w| {
184            self.discriminant().write_xdr(w)?;
185            #[allow(clippy::match_same_arms)]
186            match self {
187                Self::Success => ().write_xdr(w)?,
188                Self::Malformed => ().write_xdr(w)?,
189                Self::NoTrust => ().write_xdr(w)?,
190                Self::NotAuthorized => ().write_xdr(w)?,
191                Self::Underfunded => ().write_xdr(w)?,
192                Self::LineFull => ().write_xdr(w)?,
193                Self::BadPrice => ().write_xdr(w)?,
194                Self::PoolFull => ().write_xdr(w)?,
195                Self::TrustlineFrozen => ().write_xdr(w)?,
196            };
197            Ok(())
198        })
199    }
200}