Skip to main content

stellar_xdr/generated/
transaction_result_result.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// TransactionResultResult is an XDR NestedUnion defined as:
5///
6/// ```text
7/// union switch (TransactionResultCode code)
8///     {
9///     case txFEE_BUMP_INNER_SUCCESS:
10///     case txFEE_BUMP_INNER_FAILED:
11///         InnerTransactionResultPair innerResultPair;
12///     case txSUCCESS:
13///     case txFAILED:
14///         OperationResult results<>;
15///     case txTOO_EARLY:
16///     case txTOO_LATE:
17///     case txMISSING_OPERATION:
18///     case txBAD_SEQ:
19///     case txBAD_AUTH:
20///     case txINSUFFICIENT_BALANCE:
21///     case txNO_ACCOUNT:
22///     case txINSUFFICIENT_FEE:
23///     case txBAD_AUTH_EXTRA:
24///     case txINTERNAL_ERROR:
25///     case txNOT_SUPPORTED:
26///     // case txFEE_BUMP_INNER_FAILED: handled above
27///     case txBAD_SPONSORSHIP:
28///     case txBAD_MIN_SEQ_AGE_OR_GAP:
29///     case txMALFORMED:
30///     case txSOROBAN_INVALID:
31///     case txFROZEN_KEY_ACCESSED:
32///         void;
33///     }
34/// ```
35///
36// union with discriminant TransactionResultCode
37#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
38#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40#[cfg_attr(
41    all(feature = "serde", feature = "alloc"),
42    serde_with::serde_as,
43    derive(serde::Serialize, serde::Deserialize),
44    serde(rename_all = "snake_case")
45)]
46#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47#[allow(clippy::large_enum_variant)]
48pub enum TransactionResultResult {
49    TxFeeBumpInnerSuccess(InnerTransactionResultPair),
50    TxFeeBumpInnerFailed(InnerTransactionResultPair),
51    TxSuccess(VecM<OperationResult>),
52    TxFailed(VecM<OperationResult>),
53    TxTooEarly,
54    TxTooLate,
55    TxMissingOperation,
56    TxBadSeq,
57    TxBadAuth,
58    TxInsufficientBalance,
59    TxNoAccount,
60    TxInsufficientFee,
61    TxBadAuthExtra,
62    TxInternalError,
63    TxNotSupported,
64    TxBadSponsorship,
65    TxBadMinSeqAgeOrGap,
66    TxMalformed,
67    TxSorobanInvalid,
68    TxFrozenKeyAccessed,
69}
70
71#[cfg(feature = "alloc")]
72impl Default for TransactionResultResult {
73    fn default() -> Self {
74        Self::TxFeeBumpInnerSuccess(InnerTransactionResultPair::default())
75    }
76}
77
78impl TransactionResultResult {
79    const _VARIANTS: &[TransactionResultCode] = &[
80        TransactionResultCode::TxFeeBumpInnerSuccess,
81        TransactionResultCode::TxFeeBumpInnerFailed,
82        TransactionResultCode::TxSuccess,
83        TransactionResultCode::TxFailed,
84        TransactionResultCode::TxTooEarly,
85        TransactionResultCode::TxTooLate,
86        TransactionResultCode::TxMissingOperation,
87        TransactionResultCode::TxBadSeq,
88        TransactionResultCode::TxBadAuth,
89        TransactionResultCode::TxInsufficientBalance,
90        TransactionResultCode::TxNoAccount,
91        TransactionResultCode::TxInsufficientFee,
92        TransactionResultCode::TxBadAuthExtra,
93        TransactionResultCode::TxInternalError,
94        TransactionResultCode::TxNotSupported,
95        TransactionResultCode::TxBadSponsorship,
96        TransactionResultCode::TxBadMinSeqAgeOrGap,
97        TransactionResultCode::TxMalformed,
98        TransactionResultCode::TxSorobanInvalid,
99        TransactionResultCode::TxFrozenKeyAccessed,
100    ];
101    pub const VARIANTS: [TransactionResultCode; Self::_VARIANTS.len()] = {
102        let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
103        let mut i = 1;
104        while i < Self::_VARIANTS.len() {
105            arr[i] = Self::_VARIANTS[i];
106            i += 1;
107        }
108        arr
109    };
110    const _VARIANTS_STR: &[&str] = &[
111        "TxFeeBumpInnerSuccess",
112        "TxFeeBumpInnerFailed",
113        "TxSuccess",
114        "TxFailed",
115        "TxTooEarly",
116        "TxTooLate",
117        "TxMissingOperation",
118        "TxBadSeq",
119        "TxBadAuth",
120        "TxInsufficientBalance",
121        "TxNoAccount",
122        "TxInsufficientFee",
123        "TxBadAuthExtra",
124        "TxInternalError",
125        "TxNotSupported",
126        "TxBadSponsorship",
127        "TxBadMinSeqAgeOrGap",
128        "TxMalformed",
129        "TxSorobanInvalid",
130        "TxFrozenKeyAccessed",
131    ];
132    pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
133        let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
134        let mut i = 1;
135        while i < Self::_VARIANTS_STR.len() {
136            arr[i] = Self::_VARIANTS_STR[i];
137            i += 1;
138        }
139        arr
140    };
141
142    #[must_use]
143    pub const fn name(&self) -> &'static str {
144        match self {
145            Self::TxFeeBumpInnerSuccess(_) => "TxFeeBumpInnerSuccess",
146            Self::TxFeeBumpInnerFailed(_) => "TxFeeBumpInnerFailed",
147            Self::TxSuccess(_) => "TxSuccess",
148            Self::TxFailed(_) => "TxFailed",
149            Self::TxTooEarly => "TxTooEarly",
150            Self::TxTooLate => "TxTooLate",
151            Self::TxMissingOperation => "TxMissingOperation",
152            Self::TxBadSeq => "TxBadSeq",
153            Self::TxBadAuth => "TxBadAuth",
154            Self::TxInsufficientBalance => "TxInsufficientBalance",
155            Self::TxNoAccount => "TxNoAccount",
156            Self::TxInsufficientFee => "TxInsufficientFee",
157            Self::TxBadAuthExtra => "TxBadAuthExtra",
158            Self::TxInternalError => "TxInternalError",
159            Self::TxNotSupported => "TxNotSupported",
160            Self::TxBadSponsorship => "TxBadSponsorship",
161            Self::TxBadMinSeqAgeOrGap => "TxBadMinSeqAgeOrGap",
162            Self::TxMalformed => "TxMalformed",
163            Self::TxSorobanInvalid => "TxSorobanInvalid",
164            Self::TxFrozenKeyAccessed => "TxFrozenKeyAccessed",
165        }
166    }
167
168    #[must_use]
169    pub const fn discriminant(&self) -> TransactionResultCode {
170        #[allow(clippy::match_same_arms)]
171        match self {
172            Self::TxFeeBumpInnerSuccess(_) => TransactionResultCode::TxFeeBumpInnerSuccess,
173            Self::TxFeeBumpInnerFailed(_) => TransactionResultCode::TxFeeBumpInnerFailed,
174            Self::TxSuccess(_) => TransactionResultCode::TxSuccess,
175            Self::TxFailed(_) => TransactionResultCode::TxFailed,
176            Self::TxTooEarly => TransactionResultCode::TxTooEarly,
177            Self::TxTooLate => TransactionResultCode::TxTooLate,
178            Self::TxMissingOperation => TransactionResultCode::TxMissingOperation,
179            Self::TxBadSeq => TransactionResultCode::TxBadSeq,
180            Self::TxBadAuth => TransactionResultCode::TxBadAuth,
181            Self::TxInsufficientBalance => TransactionResultCode::TxInsufficientBalance,
182            Self::TxNoAccount => TransactionResultCode::TxNoAccount,
183            Self::TxInsufficientFee => TransactionResultCode::TxInsufficientFee,
184            Self::TxBadAuthExtra => TransactionResultCode::TxBadAuthExtra,
185            Self::TxInternalError => TransactionResultCode::TxInternalError,
186            Self::TxNotSupported => TransactionResultCode::TxNotSupported,
187            Self::TxBadSponsorship => TransactionResultCode::TxBadSponsorship,
188            Self::TxBadMinSeqAgeOrGap => TransactionResultCode::TxBadMinSeqAgeOrGap,
189            Self::TxMalformed => TransactionResultCode::TxMalformed,
190            Self::TxSorobanInvalid => TransactionResultCode::TxSorobanInvalid,
191            Self::TxFrozenKeyAccessed => TransactionResultCode::TxFrozenKeyAccessed,
192        }
193    }
194
195    #[must_use]
196    pub const fn variants() -> [TransactionResultCode; Self::_VARIANTS.len()] {
197        Self::VARIANTS
198    }
199}
200
201impl Name for TransactionResultResult {
202    #[must_use]
203    fn name(&self) -> &'static str {
204        Self::name(self)
205    }
206}
207
208impl Discriminant<TransactionResultCode> for TransactionResultResult {
209    #[must_use]
210    fn discriminant(&self) -> TransactionResultCode {
211        Self::discriminant(self)
212    }
213}
214
215impl Variants<TransactionResultCode> for TransactionResultResult {
216    fn variants() -> slice::Iter<'static, TransactionResultCode> {
217        Self::VARIANTS.iter()
218    }
219}
220
221impl Union<TransactionResultCode> for TransactionResultResult {}
222
223impl ReadXdr for TransactionResultResult {
224    #[cfg(feature = "std")]
225    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
226        r.with_limited_depth(|r| {
227            let dv: TransactionResultCode = <TransactionResultCode as ReadXdr>::read_xdr(r)?;
228            #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
229            let v = match dv {
230                TransactionResultCode::TxFeeBumpInnerSuccess => {
231                    Self::TxFeeBumpInnerSuccess(InnerTransactionResultPair::read_xdr(r)?)
232                }
233                TransactionResultCode::TxFeeBumpInnerFailed => {
234                    Self::TxFeeBumpInnerFailed(InnerTransactionResultPair::read_xdr(r)?)
235                }
236                TransactionResultCode::TxSuccess => {
237                    Self::TxSuccess(VecM::<OperationResult>::read_xdr(r)?)
238                }
239                TransactionResultCode::TxFailed => {
240                    Self::TxFailed(VecM::<OperationResult>::read_xdr(r)?)
241                }
242                TransactionResultCode::TxTooEarly => Self::TxTooEarly,
243                TransactionResultCode::TxTooLate => Self::TxTooLate,
244                TransactionResultCode::TxMissingOperation => Self::TxMissingOperation,
245                TransactionResultCode::TxBadSeq => Self::TxBadSeq,
246                TransactionResultCode::TxBadAuth => Self::TxBadAuth,
247                TransactionResultCode::TxInsufficientBalance => Self::TxInsufficientBalance,
248                TransactionResultCode::TxNoAccount => Self::TxNoAccount,
249                TransactionResultCode::TxInsufficientFee => Self::TxInsufficientFee,
250                TransactionResultCode::TxBadAuthExtra => Self::TxBadAuthExtra,
251                TransactionResultCode::TxInternalError => Self::TxInternalError,
252                TransactionResultCode::TxNotSupported => Self::TxNotSupported,
253                TransactionResultCode::TxBadSponsorship => Self::TxBadSponsorship,
254                TransactionResultCode::TxBadMinSeqAgeOrGap => Self::TxBadMinSeqAgeOrGap,
255                TransactionResultCode::TxMalformed => Self::TxMalformed,
256                TransactionResultCode::TxSorobanInvalid => Self::TxSorobanInvalid,
257                TransactionResultCode::TxFrozenKeyAccessed => Self::TxFrozenKeyAccessed,
258                #[allow(unreachable_patterns)]
259                _ => return Err(Error::Invalid),
260            };
261            Ok(v)
262        })
263    }
264}
265
266impl WriteXdr for TransactionResultResult {
267    #[cfg(feature = "std")]
268    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
269        w.with_limited_depth(|w| {
270            self.discriminant().write_xdr(w)?;
271            #[allow(clippy::match_same_arms)]
272            match self {
273                Self::TxFeeBumpInnerSuccess(v) => v.write_xdr(w)?,
274                Self::TxFeeBumpInnerFailed(v) => v.write_xdr(w)?,
275                Self::TxSuccess(v) => v.write_xdr(w)?,
276                Self::TxFailed(v) => v.write_xdr(w)?,
277                Self::TxTooEarly => ().write_xdr(w)?,
278                Self::TxTooLate => ().write_xdr(w)?,
279                Self::TxMissingOperation => ().write_xdr(w)?,
280                Self::TxBadSeq => ().write_xdr(w)?,
281                Self::TxBadAuth => ().write_xdr(w)?,
282                Self::TxInsufficientBalance => ().write_xdr(w)?,
283                Self::TxNoAccount => ().write_xdr(w)?,
284                Self::TxInsufficientFee => ().write_xdr(w)?,
285                Self::TxBadAuthExtra => ().write_xdr(w)?,
286                Self::TxInternalError => ().write_xdr(w)?,
287                Self::TxNotSupported => ().write_xdr(w)?,
288                Self::TxBadSponsorship => ().write_xdr(w)?,
289                Self::TxBadMinSeqAgeOrGap => ().write_xdr(w)?,
290                Self::TxMalformed => ().write_xdr(w)?,
291                Self::TxSorobanInvalid => ().write_xdr(w)?,
292                Self::TxFrozenKeyAccessed => ().write_xdr(w)?,
293            };
294            Ok(())
295        })
296    }
297}