1#![allow(clippy::missing_errors_doc, clippy::unreadable_literal)]
17
18pub const XDR_FILES_SHA256: [(&str, &str); 13] = [
20 (
21 "xdr/next/Stellar-SCP.x",
22 "8f32b04d008f8bc33b8843d075e69837231a673691ee41d8b821ca229a6e802a",
23 ),
24 (
25 "xdr/next/Stellar-contract-config-setting.x",
26 "5d1d926e4288b0f2d1ce9f891ca2cab97de9246381d57fca22e25a0d276c6682",
27 ),
28 (
29 "xdr/next/Stellar-contract-env-meta.x",
30 "75a271414d852096fea3283c63b7f2a702f2905f78fc28eb60ec7d7bd366a780",
31 ),
32 (
33 "xdr/next/Stellar-contract-meta.x",
34 "f01532c11ca044e19d9f9f16fe373e9af64835da473be556b9a807ee3319ae0d",
35 ),
36 (
37 "xdr/next/Stellar-contract-spec.x",
38 "7bd048e1b008c274f667a4f9b8fcf5ae848e301aca0073cdc8b266ecd2c5f2f9",
39 ),
40 (
41 "xdr/next/Stellar-contract.x",
42 "dce61df115c93fef5bb352beac1b504a518cb11dcb8ee029b1bb1b5f8fe52982",
43 ),
44 (
45 "xdr/next/Stellar-exporter.x",
46 "a00c83d02e8c8382e06f79a191f1fb5abd097a4bbcab8481c67467e3270e0529",
47 ),
48 (
49 "xdr/next/Stellar-internal.x",
50 "227835866c1b2122d1eaf28839ba85ea7289d1cb681dda4ca619c2da3d71fe00",
51 ),
52 (
53 "xdr/next/Stellar-ledger-entries.x",
54 "5157cad76b008b3606fe5bc2cfe87596827d8e02d16cbec3cedc297bb571aa54",
55 ),
56 (
57 "xdr/next/Stellar-ledger.x",
58 "cf936606885dd265082e553aa433c2cf47b720b6d58839b154cf71096b885d1e",
59 ),
60 (
61 "xdr/next/Stellar-overlay.x",
62 "8c9b9c13c86fa4672f03d741705b41e7221be0fc48e1ea6eeb1ba07d31ec0723",
63 ),
64 (
65 "xdr/next/Stellar-transaction.x",
66 "7c4c951f233ad7cdabedd740abd9697626ec5bc03ce97bf60cbaeee1481a48d1",
67 ),
68 (
69 "xdr/next/Stellar-types.x",
70 "d37a4b8683d2ddb9f13f6d8a4e5111dfe7de4176516db52bc0517ec46a82c3d4",
71 ),
72];
73
74use core::{array::TryFromSliceError, fmt, fmt::Debug, marker::Sized, ops::Deref, slice};
75
76#[cfg(feature = "std")]
77use core::marker::PhantomData;
78
79#[cfg(not(feature = "alloc"))]
81mod noalloc {
82 pub mod boxed {
83 pub type Box<T> = &'static T;
84 }
85 pub mod vec {
86 pub type Vec<T> = &'static [T];
87 }
88}
89#[cfg(not(feature = "alloc"))]
90use noalloc::{boxed::Box, vec::Vec};
91
92#[cfg(all(not(feature = "std"), feature = "alloc"))]
95extern crate alloc;
96#[cfg(all(not(feature = "std"), feature = "alloc"))]
97use alloc::{
98 borrow::ToOwned,
99 boxed::Box,
100 string::{FromUtf8Error, String},
101 vec::Vec,
102};
103#[cfg(feature = "std")]
104use std::string::FromUtf8Error;
105
106#[cfg(feature = "arbitrary")]
107use arbitrary::Arbitrary;
108
109#[cfg(all(feature = "schemars", feature = "alloc", not(feature = "std")))]
110use alloc::borrow::Cow;
111#[cfg(all(feature = "schemars", feature = "alloc", feature = "std"))]
112use std::borrow::Cow;
113
114#[cfg(feature = "std")]
117use std::{
118 error, io,
119 io::{BufRead, BufReader, Cursor, Read, Write},
120};
121
122#[derive(Debug)]
126pub enum Error {
127 Invalid,
128 Unsupported,
129 LengthExceedsMax,
130 LengthMismatch,
131 NonZeroPadding,
132 Utf8Error(core::str::Utf8Error),
133 #[cfg(feature = "alloc")]
134 InvalidHex,
135 #[cfg(feature = "std")]
136 Io(io::Error),
137 DepthLimitExceeded,
138 #[cfg(feature = "serde_json")]
139 Json(serde_json::Error),
140 LengthLimitExceeded,
141 #[cfg(feature = "arbitrary")]
142 Arbitrary(arbitrary::Error),
143}
144
145impl PartialEq for Error {
146 fn eq(&self, other: &Self) -> bool {
147 match (self, other) {
148 (Self::Invalid, Self::Invalid)
149 | (Self::Unsupported, Self::Unsupported)
150 | (Self::LengthExceedsMax, Self::LengthExceedsMax)
151 | (Self::LengthMismatch, Self::LengthMismatch)
152 | (Self::NonZeroPadding, Self::NonZeroPadding) => true,
153
154 (Self::Utf8Error(l), Self::Utf8Error(r)) => l == r,
155
156 #[cfg(feature = "alloc")]
157 (Self::InvalidHex, Self::InvalidHex) => true,
158
159 #[cfg(feature = "std")]
166 (Self::Io(l), Self::Io(r)) => l.kind() == r.kind(),
167
168 (Self::DepthLimitExceeded, Self::DepthLimitExceeded) => true,
169
170 #[cfg(feature = "serde_json")]
171 (Self::Json(l), Self::Json(r)) => l.classify() == r.classify(),
172
173 (Self::LengthLimitExceeded, Self::LengthLimitExceeded) => true,
174
175 #[cfg(feature = "arbitrary")]
176 (Self::Arbitrary(l), Self::Arbitrary(r)) => l == r,
177
178 _ => false,
179 }
180 }
181}
182
183#[cfg(feature = "std")]
184impl error::Error for Error {
185 #[must_use]
186 fn source(&self) -> Option<&(dyn error::Error + 'static)> {
187 match self {
188 Error::Invalid
189 | Error::Unsupported
190 | Error::LengthExceedsMax
191 | Error::LengthMismatch
192 | Error::NonZeroPadding => None,
193
194 Error::Utf8Error(e) => Some(e),
195
196 Self::InvalidHex => None,
197
198 Self::Io(e) => Some(e),
199
200 Self::DepthLimitExceeded => None,
201
202 #[cfg(feature = "serde_json")]
203 Self::Json(e) => Some(e),
204
205 Self::LengthLimitExceeded => None,
206
207 #[cfg(feature = "arbitrary")]
208 Self::Arbitrary(e) => Some(e),
209 }
210 }
211}
212
213impl fmt::Display for Error {
214 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
215 match self {
216 Error::Invalid => write!(f, "xdr value invalid"),
217 Error::Unsupported => write!(f, "xdr value unsupported"),
218 Error::LengthExceedsMax => write!(f, "xdr value max length exceeded"),
219 Error::LengthMismatch => write!(f, "xdr value length does not match"),
220 Error::NonZeroPadding => write!(f, "xdr padding contains non-zero bytes"),
221 Error::Utf8Error(e) => write!(f, "{e}"),
222
223 #[cfg(feature = "alloc")]
224 Error::InvalidHex => write!(f, "hex invalid"),
225
226 #[cfg(feature = "std")]
227 Error::Io(e) => write!(f, "{e}"),
228
229 Error::DepthLimitExceeded => write!(f, "depth limit exceeded"),
230
231 #[cfg(feature = "serde_json")]
232 Error::Json(e) => write!(f, "{e}"),
233
234 Error::LengthLimitExceeded => write!(f, "length limit exceeded"),
235
236 #[cfg(feature = "arbitrary")]
237 Error::Arbitrary(e) => write!(f, "{e}"),
238 }
239 }
240}
241
242impl From<TryFromSliceError> for Error {
243 fn from(_: TryFromSliceError) -> Error {
244 Error::LengthMismatch
245 }
246}
247
248impl From<core::str::Utf8Error> for Error {
249 #[must_use]
250 fn from(e: core::str::Utf8Error) -> Self {
251 Error::Utf8Error(e)
252 }
253}
254
255#[cfg(feature = "alloc")]
256impl From<FromUtf8Error> for Error {
257 #[must_use]
258 fn from(e: FromUtf8Error) -> Self {
259 Error::Utf8Error(e.utf8_error())
260 }
261}
262
263#[cfg(feature = "std")]
264impl From<io::Error> for Error {
265 #[must_use]
266 fn from(e: io::Error) -> Self {
267 Error::Io(e)
268 }
269}
270
271#[cfg(feature = "serde_json")]
272impl From<serde_json::Error> for Error {
273 #[must_use]
274 fn from(e: serde_json::Error) -> Self {
275 Error::Json(e)
276 }
277}
278
279#[cfg(feature = "arbitrary")]
280impl From<arbitrary::Error> for Error {
281 #[must_use]
282 fn from(e: arbitrary::Error) -> Self {
283 Error::Arbitrary(e)
284 }
285}
286
287impl From<Error> for () {
288 fn from(_: Error) {}
289}
290
291pub trait Name {
295 fn name(&self) -> &'static str;
296}
297
298pub trait Discriminant<D> {
302 fn discriminant(&self) -> D;
303}
304
305pub trait Variants<V> {
307 fn variants() -> slice::Iter<'static, V>
308 where
309 V: Sized;
310}
311
312pub trait Enum: Name + Variants<Self> + Sized {}
314
315pub trait Union<D>: Name + Discriminant<D> + Variants<D>
317where
318 D: Sized,
319{
320}
321
322#[cfg(feature = "std")]
325#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
326pub struct Limits {
327 pub depth: u32,
336
337 pub len: usize,
339}
340
341#[cfg(feature = "std")]
342impl Limits {
343 #[must_use]
344 pub fn none() -> Self {
345 Self {
346 depth: u32::MAX,
347 len: usize::MAX,
348 }
349 }
350
351 #[must_use]
352 pub fn depth(depth: u32) -> Self {
353 Limits {
354 depth,
355 ..Limits::none()
356 }
357 }
358
359 #[must_use]
360 pub fn len(len: usize) -> Self {
361 Limits {
362 len,
363 ..Limits::none()
364 }
365 }
366}
367
368#[cfg(feature = "std")]
373pub struct Limited<L> {
374 pub inner: L,
375 pub(crate) limits: Limits,
376}
377
378#[cfg(feature = "std")]
379impl<L> Limited<L> {
380 pub fn new(inner: L, limits: Limits) -> Self {
385 Limited { inner, limits }
386 }
387
388 pub(crate) fn consume_len(&mut self, len: usize) -> Result<(), Error> {
395 if let Some(len) = self.limits.len.checked_sub(len) {
396 self.limits.len = len;
397 Ok(())
398 } else {
399 Err(Error::LengthLimitExceeded)
400 }
401 }
402
403 pub(crate) fn with_limited_depth<T, F>(&mut self, f: F) -> Result<T, Error>
409 where
410 F: FnOnce(&mut Self) -> Result<T, Error>,
411 {
412 if let Some(depth) = self.limits.depth.checked_sub(1) {
413 self.limits.depth = depth;
414 let res = f(self);
415 self.limits.depth = self.limits.depth.saturating_add(1);
416 res
417 } else {
418 Err(Error::DepthLimitExceeded)
419 }
420 }
421}
422
423#[cfg(feature = "std")]
424impl<R: Read> Read for Limited<R> {
425 fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
427 self.inner.read(buf)
428 }
429}
430
431#[cfg(feature = "std")]
432impl<R: BufRead> BufRead for Limited<R> {
433 fn fill_buf(&mut self) -> std::io::Result<&[u8]> {
435 self.inner.fill_buf()
436 }
437
438 fn consume(&mut self, amt: usize) {
440 self.inner.consume(amt);
441 }
442}
443
444#[cfg(feature = "std")]
445impl<W: Write> Write for Limited<W> {
446 fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
448 self.inner.write(buf)
449 }
450
451 fn flush(&mut self) -> std::io::Result<()> {
453 self.inner.flush()
454 }
455}
456
457#[cfg(feature = "std")]
458pub struct ReadXdrIter<R: Read, S: ReadXdr> {
459 reader: Limited<BufReader<R>>,
460 _s: PhantomData<S>,
461}
462
463#[cfg(feature = "std")]
464impl<R: Read, S: ReadXdr> ReadXdrIter<R, S> {
465 fn new(r: R, limits: Limits) -> Self {
466 Self {
467 reader: Limited {
468 inner: BufReader::new(r),
469 limits,
470 },
471 _s: PhantomData,
472 }
473 }
474}
475
476#[cfg(feature = "std")]
477impl<R: Read, S: ReadXdr> Iterator for ReadXdrIter<R, S> {
478 type Item = Result<S, Error>;
479
480 fn next(&mut self) -> Option<Self::Item> {
488 match self.reader.fill_buf() {
495 Ok([]) => return None,
498 Err(e) => return Some(Err(Error::Io(e))),
500 Ok([..]) => (),
502 };
503 let r = self.reader.with_limited_depth(|dlr| S::read_xdr(dlr));
505 match r {
506 Ok(s) => Some(Ok(s)),
507 Err(e) => Some(Err(e)),
508 }
509 }
510}
511
512pub trait ReadXdr
513where
514 Self: Sized,
515{
516 #[cfg(feature = "std")]
531 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error>;
532
533 #[cfg(feature = "base64")]
538 fn read_xdr_base64<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
539 let mut dec = Limited::new(
540 base64::read::DecoderReader::new(
541 SkipWhitespace::new(&mut r.inner),
542 &base64::engine::general_purpose::STANDARD,
543 ),
544 r.limits.clone(),
545 );
546 let t = Self::read_xdr(&mut dec)?;
547 Ok(t)
548 }
549
550 #[cfg(feature = "std")]
569 fn read_xdr_to_end<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
570 let s = Self::read_xdr(r)?;
571 if r.read(&mut [0u8; 1])? == 0 {
574 Ok(s)
575 } else {
576 Err(Error::Invalid)
577 }
578 }
579
580 #[cfg(feature = "base64")]
585 fn read_xdr_base64_to_end<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
586 let mut dec = Limited::new(
587 base64::read::DecoderReader::new(
588 SkipWhitespace::new(&mut r.inner),
589 &base64::engine::general_purpose::STANDARD,
590 ),
591 r.limits.clone(),
592 );
593 let t = Self::read_xdr_to_end(&mut dec)?;
594 Ok(t)
595 }
596
597 #[cfg(feature = "std")]
612 fn read_xdr_into<R: Read>(&mut self, r: &mut Limited<R>) -> Result<(), Error> {
613 *self = Self::read_xdr(r)?;
614 Ok(())
615 }
616
617 #[cfg(feature = "std")]
636 fn read_xdr_into_to_end<R: Read>(&mut self, r: &mut Limited<R>) -> Result<(), Error> {
637 Self::read_xdr_into(self, r)?;
638 if r.read(&mut [0u8; 1])? == 0 {
641 Ok(())
642 } else {
643 Err(Error::Invalid)
644 }
645 }
646
647 #[cfg(feature = "std")]
666 fn read_xdr_iter<R: Read>(r: &mut Limited<R>) -> ReadXdrIter<&mut R, Self> {
667 ReadXdrIter::new(&mut r.inner, r.limits.clone())
668 }
669
670 #[cfg(feature = "base64")]
673 fn read_xdr_base64_iter<R: Read>(
674 r: &mut Limited<R>,
675 ) -> ReadXdrIter<
676 base64::read::DecoderReader<
677 '_,
678 base64::engine::general_purpose::GeneralPurpose,
679 SkipWhitespace<&mut R>,
680 >,
681 Self,
682 > {
683 let dec = base64::read::DecoderReader::new(
684 SkipWhitespace::new(&mut r.inner),
685 &base64::engine::general_purpose::STANDARD,
686 );
687 ReadXdrIter::new(dec, r.limits.clone())
688 }
689
690 #[cfg(feature = "std")]
695 fn from_xdr(bytes: impl AsRef<[u8]>, limits: Limits) -> Result<Self, Error> {
696 let mut cursor = Limited::new(Cursor::new(bytes.as_ref()), limits);
697 let t = Self::read_xdr_to_end(&mut cursor)?;
698 Ok(t)
699 }
700
701 #[cfg(feature = "base64")]
706 fn from_xdr_base64(b64: impl AsRef<[u8]>, limits: Limits) -> Result<Self, Error> {
707 let b64_reader = Cursor::new(b64);
708 let mut dec = Limited::new(
709 base64::read::DecoderReader::new(
710 SkipWhitespace::new(b64_reader),
711 &base64::engine::general_purpose::STANDARD,
712 ),
713 limits,
714 );
715 let t = Self::read_xdr_to_end(&mut dec)?;
716 Ok(t)
717 }
718}
719
720pub trait WriteXdr {
721 #[cfg(feature = "std")]
722 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error>;
723
724 #[cfg(feature = "std")]
725 fn to_xdr(&self, limits: Limits) -> Result<Vec<u8>, Error> {
726 let mut cursor = Limited::new(Cursor::new(vec![]), limits);
727 self.write_xdr(&mut cursor)?;
728 let bytes = cursor.inner.into_inner();
729 Ok(bytes)
730 }
731
732 #[cfg(feature = "base64")]
733 fn to_xdr_base64(&self, limits: Limits) -> Result<String, Error> {
734 let mut enc = Limited::new(
735 base64::write::EncoderStringWriter::new(&base64::engine::general_purpose::STANDARD),
736 limits,
737 );
738 self.write_xdr(&mut enc)?;
739 let b64 = enc.inner.into_inner();
740 Ok(b64)
741 }
742}
743
744#[cfg(feature = "std")]
747fn pad_len(len: usize) -> usize {
748 (4 - (len % 4)) % 4
749}
750
751impl ReadXdr for i32 {
752 #[cfg(feature = "std")]
753 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
754 let mut b = [0u8; 4];
755 r.with_limited_depth(|r| {
756 r.consume_len(b.len())?;
757 r.read_exact(&mut b)?;
758 Ok(i32::from_be_bytes(b))
759 })
760 }
761}
762
763impl WriteXdr for i32 {
764 #[cfg(feature = "std")]
765 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
766 let b: [u8; 4] = self.to_be_bytes();
767 w.with_limited_depth(|w| {
768 w.consume_len(b.len())?;
769 Ok(w.write_all(&b)?)
770 })
771 }
772}
773
774impl ReadXdr for u32 {
775 #[cfg(feature = "std")]
776 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
777 let mut b = [0u8; 4];
778 r.with_limited_depth(|r| {
779 r.consume_len(b.len())?;
780 r.read_exact(&mut b)?;
781 Ok(u32::from_be_bytes(b))
782 })
783 }
784}
785
786impl WriteXdr for u32 {
787 #[cfg(feature = "std")]
788 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
789 let b: [u8; 4] = self.to_be_bytes();
790 w.with_limited_depth(|w| {
791 w.consume_len(b.len())?;
792 Ok(w.write_all(&b)?)
793 })
794 }
795}
796
797impl ReadXdr for i64 {
798 #[cfg(feature = "std")]
799 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
800 let mut b = [0u8; 8];
801 r.with_limited_depth(|r| {
802 r.consume_len(b.len())?;
803 r.read_exact(&mut b)?;
804 Ok(i64::from_be_bytes(b))
805 })
806 }
807}
808
809impl WriteXdr for i64 {
810 #[cfg(feature = "std")]
811 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
812 let b: [u8; 8] = self.to_be_bytes();
813 w.with_limited_depth(|w| {
814 w.consume_len(b.len())?;
815 Ok(w.write_all(&b)?)
816 })
817 }
818}
819
820impl ReadXdr for u64 {
821 #[cfg(feature = "std")]
822 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
823 let mut b = [0u8; 8];
824 r.with_limited_depth(|r| {
825 r.consume_len(b.len())?;
826 r.read_exact(&mut b)?;
827 Ok(u64::from_be_bytes(b))
828 })
829 }
830}
831
832impl WriteXdr for u64 {
833 #[cfg(feature = "std")]
834 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
835 let b: [u8; 8] = self.to_be_bytes();
836 w.with_limited_depth(|w| {
837 w.consume_len(b.len())?;
838 Ok(w.write_all(&b)?)
839 })
840 }
841}
842
843impl ReadXdr for f32 {
844 #[cfg(feature = "std")]
845 fn read_xdr<R: Read>(_r: &mut Limited<R>) -> Result<Self, Error> {
846 todo!()
847 }
848}
849
850impl WriteXdr for f32 {
851 #[cfg(feature = "std")]
852 fn write_xdr<W: Write>(&self, _w: &mut Limited<W>) -> Result<(), Error> {
853 todo!()
854 }
855}
856
857impl ReadXdr for f64 {
858 #[cfg(feature = "std")]
859 fn read_xdr<R: Read>(_r: &mut Limited<R>) -> Result<Self, Error> {
860 todo!()
861 }
862}
863
864impl WriteXdr for f64 {
865 #[cfg(feature = "std")]
866 fn write_xdr<W: Write>(&self, _w: &mut Limited<W>) -> Result<(), Error> {
867 todo!()
868 }
869}
870
871impl ReadXdr for bool {
872 #[cfg(feature = "std")]
873 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
874 r.with_limited_depth(|r| {
875 let i = u32::read_xdr(r)?;
876 let b = i == 1;
877 Ok(b)
878 })
879 }
880}
881
882impl WriteXdr for bool {
883 #[cfg(feature = "std")]
884 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
885 w.with_limited_depth(|w| {
886 let i = u32::from(*self); i.write_xdr(w)
888 })
889 }
890}
891
892impl<T: ReadXdr> ReadXdr for Option<T> {
893 #[cfg(feature = "std")]
894 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
895 r.with_limited_depth(|r| {
896 let i = u32::read_xdr(r)?;
897 match i {
898 0 => Ok(None),
899 1 => {
900 let t = T::read_xdr(r)?;
901 Ok(Some(t))
902 }
903 _ => Err(Error::Invalid),
904 }
905 })
906 }
907}
908
909impl<T: WriteXdr> WriteXdr for Option<T> {
910 #[cfg(feature = "std")]
911 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
912 w.with_limited_depth(|w| {
913 if let Some(t) = self {
914 1u32.write_xdr(w)?;
915 t.write_xdr(w)?;
916 } else {
917 0u32.write_xdr(w)?;
918 }
919 Ok(())
920 })
921 }
922}
923
924impl<T: ReadXdr> ReadXdr for Box<T> {
925 #[cfg(feature = "std")]
926 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
927 r.with_limited_depth(|r| Ok(Box::new(T::read_xdr(r)?)))
928 }
929}
930
931impl<T: WriteXdr> WriteXdr for Box<T> {
932 #[cfg(feature = "std")]
933 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
934 w.with_limited_depth(|w| T::write_xdr(self, w))
935 }
936}
937
938impl ReadXdr for () {
939 #[cfg(feature = "std")]
940 fn read_xdr<R: Read>(_r: &mut Limited<R>) -> Result<Self, Error> {
941 Ok(())
942 }
943}
944
945impl WriteXdr for () {
946 #[cfg(feature = "std")]
947 fn write_xdr<W: Write>(&self, _w: &mut Limited<W>) -> Result<(), Error> {
948 Ok(())
949 }
950}
951
952impl<const N: usize> ReadXdr for [u8; N] {
953 #[cfg(feature = "std")]
954 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
955 r.with_limited_depth(|r| {
956 r.consume_len(N)?;
957 let padding = pad_len(N);
958 r.consume_len(padding)?;
959 let mut arr = [0u8; N];
960 r.read_exact(&mut arr)?;
961 let pad = &mut [0u8; 3][..padding];
962 r.read_exact(pad)?;
963 if pad.iter().any(|b| *b != 0) {
964 return Err(Error::NonZeroPadding);
965 }
966 Ok(arr)
967 })
968 }
969}
970
971impl<const N: usize> WriteXdr for [u8; N] {
972 #[cfg(feature = "std")]
973 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
974 w.with_limited_depth(|w| {
975 w.consume_len(N)?;
976 let padding = pad_len(N);
977 w.consume_len(padding)?;
978 w.write_all(self)?;
979 w.write_all(&[0u8; 3][..padding])?;
980 Ok(())
981 })
982 }
983}
984
985impl<T: ReadXdr, const N: usize> ReadXdr for [T; N] {
986 #[cfg(feature = "std")]
987 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
988 r.with_limited_depth(|r| {
989 let mut vec = Vec::with_capacity(N);
990 for _ in 0..N {
991 let t = T::read_xdr(r)?;
992 vec.push(t);
993 }
994 let arr: [T; N] = vec.try_into().unwrap_or_else(|_: Vec<T>| unreachable!());
995 Ok(arr)
996 })
997 }
998}
999
1000impl<T: WriteXdr, const N: usize> WriteXdr for [T; N] {
1001 #[cfg(feature = "std")]
1002 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
1003 w.with_limited_depth(|w| {
1004 for t in self {
1005 t.write_xdr(w)?;
1006 }
1007 Ok(())
1008 })
1009 }
1010}
1011
1012#[cfg(feature = "alloc")]
1015#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1016#[cfg_attr(
1017 feature = "serde",
1018 serde_with::serde_as,
1019 derive(serde::Serialize, serde::Deserialize)
1020)]
1021#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1022pub struct VecM<T, const MAX: u32 = { u32::MAX }>(Vec<T>);
1023
1024#[cfg(not(feature = "alloc"))]
1025#[derive(Debug, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1026#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1027pub struct VecM<T, const MAX: u32 = { u32::MAX }>(Vec<T>)
1028where
1029 T: 'static;
1030
1031impl<T, const MAX: u32> Deref for VecM<T, MAX> {
1032 type Target = Vec<T>;
1033
1034 fn deref(&self) -> &Self::Target {
1035 &self.0
1036 }
1037}
1038
1039impl<T, const MAX: u32> Default for VecM<T, MAX> {
1040 fn default() -> Self {
1041 Self(Vec::default())
1042 }
1043}
1044
1045#[cfg(feature = "schemars")]
1046impl<T: schemars::JsonSchema, const MAX: u32> schemars::JsonSchema for VecM<T, MAX> {
1047 fn schema_name() -> String {
1048 format!("VecM<{}, {}>", T::schema_name(), MAX)
1049 }
1050
1051 fn is_referenceable() -> bool {
1052 false
1053 }
1054
1055 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
1056 let schema = Vec::<T>::json_schema(gen);
1057 if let schemars::schema::Schema::Object(mut schema) = schema {
1058 if let Some(array) = schema.array.clone() {
1059 schema.array = Some(Box::new(schemars::schema::ArrayValidation {
1060 max_items: Some(MAX),
1061 ..*array
1062 }));
1063 }
1064 schema.into()
1065 } else {
1066 schema
1067 }
1068 }
1069}
1070
1071#[cfg(feature = "schemars")]
1072impl<T, TA, const MAX: u32> serde_with::schemars_0_8::JsonSchemaAs<VecM<T, MAX>> for VecM<TA, MAX>
1073where
1074 TA: serde_with::schemars_0_8::JsonSchemaAs<T>,
1075{
1076 fn schema_name() -> String {
1077 <VecM<serde_with::Schema<T, TA>, MAX> as schemars::JsonSchema>::schema_name()
1078 }
1079
1080 fn schema_id() -> Cow<'static, str> {
1081 <VecM<serde_with::Schema<T, TA>, MAX> as schemars::JsonSchema>::schema_id()
1082 }
1083
1084 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
1085 <VecM<serde_with::Schema<T, TA>, MAX> as schemars::JsonSchema>::json_schema(gen)
1086 }
1087
1088 fn is_referenceable() -> bool {
1089 <VecM<serde_with::Schema<T, TA>, MAX> as schemars::JsonSchema>::is_referenceable()
1090 }
1091}
1092
1093#[cfg(feature = "serde")]
1094impl<T, U, const MAX: u32> serde_with::SerializeAs<VecM<T, MAX>> for VecM<U, MAX>
1095where
1096 U: serde_with::SerializeAs<T>,
1097{
1098 fn serialize_as<S>(source: &VecM<T, MAX>, serializer: S) -> Result<S::Ok, S::Error>
1099 where
1100 S: serde::Serializer,
1101 {
1102 serializer.collect_seq(
1103 source
1104 .iter()
1105 .map(|item| serde_with::ser::SerializeAsWrap::<T, U>::new(item)),
1106 )
1107 }
1108}
1109
1110#[cfg(feature = "serde")]
1111impl<'de, T, U, const MAX: u32> serde_with::DeserializeAs<'de, VecM<T, MAX>> for VecM<U, MAX>
1112where
1113 U: serde_with::DeserializeAs<'de, T>,
1114{
1115 fn deserialize_as<D>(deserializer: D) -> Result<VecM<T, MAX>, D::Error>
1116 where
1117 D: serde::Deserializer<'de>,
1118 {
1119 let vec = <Vec<U> as serde_with::DeserializeAs<Vec<T>>>::deserialize_as(deserializer)?;
1120 vec.try_into().map_err(serde::de::Error::custom)
1121 }
1122}
1123
1124impl<T, const MAX: u32> VecM<T, MAX> {
1125 pub const MAX_LEN: usize = { MAX as usize };
1126
1127 #[must_use]
1128 #[allow(clippy::unused_self)]
1129 pub fn max_len(&self) -> usize {
1130 Self::MAX_LEN
1131 }
1132
1133 #[must_use]
1134 pub fn as_vec(&self) -> &Vec<T> {
1135 self.as_ref()
1136 }
1137}
1138
1139#[cfg(feature = "alloc")]
1140impl<T, const MAX: u32> VecM<T, MAX> {
1141 pub fn iter_mut(&mut self) -> core::slice::IterMut<'_, T> {
1142 self.0.iter_mut()
1143 }
1144}
1145
1146#[cfg(feature = "alloc")]
1147impl<'a, T, const MAX: u32> core::iter::IntoIterator for &'a mut VecM<T, MAX> {
1148 type Item = &'a mut T;
1149 type IntoIter = core::slice::IterMut<'a, T>;
1150 fn into_iter(self) -> Self::IntoIter {
1151 self.iter_mut()
1152 }
1153}
1154
1155impl<T: Clone, const MAX: u32> VecM<T, MAX> {
1156 #[must_use]
1157 #[cfg(feature = "alloc")]
1158 pub fn to_vec(&self) -> Vec<T> {
1159 self.into()
1160 }
1161
1162 #[must_use]
1163 pub fn into_vec(self) -> Vec<T> {
1164 self.into()
1165 }
1166}
1167
1168impl<const MAX: u32> VecM<u8, MAX> {
1169 #[cfg(feature = "alloc")]
1170 pub fn to_string(&self) -> Result<String, Error> {
1171 self.try_into()
1172 }
1173
1174 #[cfg(feature = "alloc")]
1175 pub fn into_string(self) -> Result<String, Error> {
1176 self.try_into()
1177 }
1178
1179 #[cfg(feature = "alloc")]
1180 #[must_use]
1181 pub fn to_string_lossy(&self) -> String {
1182 String::from_utf8_lossy(&self.0).into_owned()
1183 }
1184
1185 #[cfg(feature = "alloc")]
1186 #[must_use]
1187 pub fn into_string_lossy(self) -> String {
1188 String::from_utf8_lossy(&self.0).into_owned()
1189 }
1190}
1191
1192impl<T: Clone> VecM<T, 1> {
1193 #[must_use]
1194 pub fn to_option(&self) -> Option<T> {
1195 if self.len() > 0 {
1196 Some(self.0[0].clone())
1197 } else {
1198 None
1199 }
1200 }
1201}
1202
1203#[cfg(not(feature = "alloc"))]
1204impl<T: Clone> From<VecM<T, 1>> for Option<T> {
1205 #[must_use]
1206 fn from(v: VecM<T, 1>) -> Self {
1207 v.to_option()
1208 }
1209}
1210
1211#[cfg(feature = "alloc")]
1212impl<T> VecM<T, 1> {
1213 #[must_use]
1214 pub fn into_option(mut self) -> Option<T> {
1215 self.0.drain(..).next()
1216 }
1217}
1218
1219#[cfg(feature = "alloc")]
1220impl<T> From<VecM<T, 1>> for Option<T> {
1221 #[must_use]
1222 fn from(v: VecM<T, 1>) -> Self {
1223 v.into_option()
1224 }
1225}
1226
1227impl<T, const MAX: u32> TryFrom<Vec<T>> for VecM<T, MAX> {
1228 type Error = Error;
1229
1230 fn try_from(v: Vec<T>) -> Result<Self, Error> {
1231 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1232 if len <= MAX {
1233 Ok(VecM(v))
1234 } else {
1235 Err(Error::LengthExceedsMax)
1236 }
1237 }
1238}
1239
1240impl<T, const MAX: u32> From<VecM<T, MAX>> for Vec<T> {
1241 #[must_use]
1242 fn from(v: VecM<T, MAX>) -> Self {
1243 v.0
1244 }
1245}
1246
1247#[cfg(feature = "alloc")]
1248impl<T: Clone, const MAX: u32> From<&VecM<T, MAX>> for Vec<T> {
1249 #[must_use]
1250 fn from(v: &VecM<T, MAX>) -> Self {
1251 v.0.clone()
1252 }
1253}
1254
1255impl<T, const MAX: u32> AsRef<Vec<T>> for VecM<T, MAX> {
1256 #[must_use]
1257 fn as_ref(&self) -> &Vec<T> {
1258 &self.0
1259 }
1260}
1261
1262#[cfg(feature = "alloc")]
1263impl<T: Clone, const MAX: u32> TryFrom<&Vec<T>> for VecM<T, MAX> {
1264 type Error = Error;
1265
1266 fn try_from(v: &Vec<T>) -> Result<Self, Error> {
1267 v.as_slice().try_into()
1268 }
1269}
1270
1271#[cfg(feature = "alloc")]
1272impl<T: Clone, const MAX: u32> TryFrom<&[T]> for VecM<T, MAX> {
1273 type Error = Error;
1274
1275 fn try_from(v: &[T]) -> Result<Self, Error> {
1276 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1277 if len <= MAX {
1278 Ok(VecM(v.to_vec()))
1279 } else {
1280 Err(Error::LengthExceedsMax)
1281 }
1282 }
1283}
1284
1285impl<T, const MAX: u32> AsRef<[T]> for VecM<T, MAX> {
1286 #[cfg(feature = "alloc")]
1287 #[must_use]
1288 fn as_ref(&self) -> &[T] {
1289 self.0.as_ref()
1290 }
1291 #[cfg(not(feature = "alloc"))]
1292 #[must_use]
1293 fn as_ref(&self) -> &[T] {
1294 self.0
1295 }
1296}
1297
1298#[cfg(feature = "alloc")]
1299impl<T: Clone, const N: usize, const MAX: u32> TryFrom<[T; N]> for VecM<T, MAX> {
1300 type Error = Error;
1301
1302 fn try_from(v: [T; N]) -> Result<Self, Error> {
1303 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1304 if len <= MAX {
1305 Ok(VecM(v.to_vec()))
1306 } else {
1307 Err(Error::LengthExceedsMax)
1308 }
1309 }
1310}
1311
1312#[cfg(feature = "alloc")]
1313impl<T: Clone, const N: usize, const MAX: u32> TryFrom<VecM<T, MAX>> for [T; N] {
1314 type Error = VecM<T, MAX>;
1315
1316 fn try_from(v: VecM<T, MAX>) -> core::result::Result<Self, Self::Error> {
1317 let s: [T; N] = v.0.try_into().map_err(|v: Vec<T>| VecM::<T, MAX>(v))?;
1318 Ok(s)
1319 }
1320}
1321
1322#[cfg(feature = "alloc")]
1323impl<T: Clone, const N: usize, const MAX: u32> TryFrom<&[T; N]> for VecM<T, MAX> {
1324 type Error = Error;
1325
1326 fn try_from(v: &[T; N]) -> Result<Self, Error> {
1327 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1328 if len <= MAX {
1329 Ok(VecM(v.to_vec()))
1330 } else {
1331 Err(Error::LengthExceedsMax)
1332 }
1333 }
1334}
1335
1336#[cfg(not(feature = "alloc"))]
1337impl<T: Clone, const N: usize, const MAX: u32> TryFrom<&'static [T; N]> for VecM<T, MAX> {
1338 type Error = Error;
1339
1340 fn try_from(v: &'static [T; N]) -> Result<Self, Error> {
1341 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1342 if len <= MAX {
1343 Ok(VecM(v))
1344 } else {
1345 Err(Error::LengthExceedsMax)
1346 }
1347 }
1348}
1349
1350#[cfg(feature = "alloc")]
1351impl<const MAX: u32> TryFrom<&String> for VecM<u8, MAX> {
1352 type Error = Error;
1353
1354 fn try_from(v: &String) -> Result<Self, Error> {
1355 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1356 if len <= MAX {
1357 Ok(VecM(v.as_bytes().to_vec()))
1358 } else {
1359 Err(Error::LengthExceedsMax)
1360 }
1361 }
1362}
1363
1364#[cfg(feature = "alloc")]
1365impl<const MAX: u32> TryFrom<String> for VecM<u8, MAX> {
1366 type Error = Error;
1367
1368 fn try_from(v: String) -> Result<Self, Error> {
1369 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1370 if len <= MAX {
1371 Ok(VecM(v.into()))
1372 } else {
1373 Err(Error::LengthExceedsMax)
1374 }
1375 }
1376}
1377
1378#[cfg(feature = "alloc")]
1379impl<const MAX: u32> TryFrom<VecM<u8, MAX>> for String {
1380 type Error = Error;
1381
1382 fn try_from(v: VecM<u8, MAX>) -> Result<Self, Error> {
1383 Ok(String::from_utf8(v.0)?)
1384 }
1385}
1386
1387#[cfg(feature = "alloc")]
1388impl<const MAX: u32> TryFrom<&VecM<u8, MAX>> for String {
1389 type Error = Error;
1390
1391 fn try_from(v: &VecM<u8, MAX>) -> Result<Self, Error> {
1392 Ok(core::str::from_utf8(v.as_ref())?.to_owned())
1393 }
1394}
1395
1396#[cfg(feature = "alloc")]
1397impl<const MAX: u32> TryFrom<&str> for VecM<u8, MAX> {
1398 type Error = Error;
1399
1400 fn try_from(v: &str) -> Result<Self, Error> {
1401 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1402 if len <= MAX {
1403 Ok(VecM(v.into()))
1404 } else {
1405 Err(Error::LengthExceedsMax)
1406 }
1407 }
1408}
1409
1410#[cfg(not(feature = "alloc"))]
1411impl<const MAX: u32> TryFrom<&'static str> for VecM<u8, MAX> {
1412 type Error = Error;
1413
1414 fn try_from(v: &'static str) -> Result<Self, Error> {
1415 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1416 if len <= MAX {
1417 Ok(VecM(v.as_bytes()))
1418 } else {
1419 Err(Error::LengthExceedsMax)
1420 }
1421 }
1422}
1423
1424impl<'a, const MAX: u32> TryFrom<&'a VecM<u8, MAX>> for &'a str {
1425 type Error = Error;
1426
1427 fn try_from(v: &'a VecM<u8, MAX>) -> Result<Self, Error> {
1428 Ok(core::str::from_utf8(v.as_ref())?)
1429 }
1430}
1431
1432impl<const MAX: u32> ReadXdr for VecM<u8, MAX> {
1433 #[cfg(feature = "std")]
1434 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
1435 r.with_limited_depth(|r| {
1436 let len: u32 = u32::read_xdr(r)?;
1437 if len > MAX {
1438 return Err(Error::LengthExceedsMax);
1439 }
1440
1441 r.consume_len(len as usize)?;
1442 let padding = pad_len(len as usize);
1443 r.consume_len(padding)?;
1444
1445 let mut vec = vec![0u8; len as usize];
1446 r.read_exact(&mut vec)?;
1447
1448 let pad = &mut [0u8; 3][..padding];
1449 r.read_exact(pad)?;
1450 if pad.iter().any(|b| *b != 0) {
1451 return Err(Error::NonZeroPadding);
1452 }
1453
1454 Ok(VecM(vec))
1455 })
1456 }
1457}
1458
1459impl<const MAX: u32> WriteXdr for VecM<u8, MAX> {
1460 #[cfg(feature = "std")]
1461 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
1462 w.with_limited_depth(|w| {
1463 let len: u32 = self.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1464 len.write_xdr(w)?;
1465
1466 w.consume_len(self.len())?;
1467 let padding = pad_len(self.len());
1468 w.consume_len(padding)?;
1469
1470 w.write_all(&self.0)?;
1471
1472 w.write_all(&[0u8; 3][..padding])?;
1473
1474 Ok(())
1475 })
1476 }
1477}
1478
1479impl<T: ReadXdr, const MAX: u32> ReadXdr for VecM<T, MAX> {
1480 #[cfg(feature = "std")]
1481 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
1482 r.with_limited_depth(|r| {
1483 let len = u32::read_xdr(r)?;
1484 if len > MAX {
1485 return Err(Error::LengthExceedsMax);
1486 }
1487
1488 let mut vec = Vec::new();
1489 for _ in 0..len {
1490 let t = T::read_xdr(r)?;
1491 vec.push(t);
1492 }
1493
1494 Ok(VecM(vec))
1495 })
1496 }
1497}
1498
1499impl<T: WriteXdr, const MAX: u32> WriteXdr for VecM<T, MAX> {
1500 #[cfg(feature = "std")]
1501 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
1502 w.with_limited_depth(|w| {
1503 let len: u32 = self.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1504 len.write_xdr(w)?;
1505
1506 for t in &self.0 {
1507 t.write_xdr(w)?;
1508 }
1509
1510 Ok(())
1511 })
1512 }
1513}
1514
1515#[cfg(feature = "alloc")]
1518#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1519#[cfg_attr(
1520 feature = "serde",
1521 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
1522)]
1523#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1524pub struct BytesM<const MAX: u32 = { u32::MAX }>(Vec<u8>);
1525
1526#[cfg(not(feature = "alloc"))]
1527#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1528#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1529pub struct BytesM<const MAX: u32 = { u32::MAX }>(Vec<u8>);
1530
1531impl<const MAX: u32> core::fmt::Display for BytesM<MAX> {
1532 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1533 #[cfg(feature = "alloc")]
1534 let v = &self.0;
1535 #[cfg(not(feature = "alloc"))]
1536 let v = self.0;
1537 for b in v {
1538 write!(f, "{b:02x}")?;
1539 }
1540 Ok(())
1541 }
1542}
1543
1544impl<const MAX: u32> core::fmt::Debug for BytesM<MAX> {
1545 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1546 #[cfg(feature = "alloc")]
1547 let v = &self.0;
1548 #[cfg(not(feature = "alloc"))]
1549 let v = self.0;
1550 write!(f, "BytesM(")?;
1551 for b in v {
1552 write!(f, "{b:02x}")?;
1553 }
1554 write!(f, ")")?;
1555 Ok(())
1556 }
1557}
1558
1559#[cfg(feature = "alloc")]
1560impl<const MAX: u32> core::str::FromStr for BytesM<MAX> {
1561 type Err = Error;
1562 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
1563 hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into()
1564 }
1565}
1566
1567impl<const MAX: u32> Deref for BytesM<MAX> {
1568 type Target = Vec<u8>;
1569
1570 fn deref(&self) -> &Self::Target {
1571 &self.0
1572 }
1573}
1574
1575#[cfg(feature = "schemars")]
1576impl<const MAX: u32> schemars::JsonSchema for BytesM<MAX> {
1577 fn schema_name() -> String {
1578 format!("BytesM<{MAX}>")
1579 }
1580
1581 fn is_referenceable() -> bool {
1582 false
1583 }
1584
1585 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
1586 let schema = String::json_schema(gen);
1587 if let schemars::schema::Schema::Object(mut schema) = schema {
1588 schema.extensions.insert(
1589 "contentEncoding".to_owned(),
1590 serde_json::Value::String("hex".to_string()),
1591 );
1592 schema.extensions.insert(
1593 "contentMediaType".to_owned(),
1594 serde_json::Value::String("application/binary".to_string()),
1595 );
1596 let string = *schema.string.unwrap_or_default().clone();
1597 schema.string = Some(Box::new(schemars::schema::StringValidation {
1598 max_length: MAX.checked_mul(2).map(Some).unwrap_or_default(),
1599 min_length: None,
1600 ..string
1601 }));
1602 schema.into()
1603 } else {
1604 schema
1605 }
1606 }
1607}
1608
1609impl<const MAX: u32> Default for BytesM<MAX> {
1610 fn default() -> Self {
1611 Self(Vec::default())
1612 }
1613}
1614
1615impl<const MAX: u32> BytesM<MAX> {
1616 pub const MAX_LEN: usize = { MAX as usize };
1617
1618 #[must_use]
1619 #[allow(clippy::unused_self)]
1620 pub fn max_len(&self) -> usize {
1621 Self::MAX_LEN
1622 }
1623
1624 #[must_use]
1625 pub fn as_vec(&self) -> &Vec<u8> {
1626 self.as_ref()
1627 }
1628}
1629
1630impl<const MAX: u32> BytesM<MAX> {
1631 #[must_use]
1632 #[cfg(feature = "alloc")]
1633 pub fn to_vec(&self) -> Vec<u8> {
1634 self.into()
1635 }
1636
1637 #[must_use]
1638 pub fn into_vec(self) -> Vec<u8> {
1639 self.into()
1640 }
1641}
1642
1643impl<const MAX: u32> BytesM<MAX> {
1644 #[cfg(feature = "alloc")]
1645 pub fn to_string(&self) -> Result<String, Error> {
1646 self.try_into()
1647 }
1648
1649 #[cfg(feature = "alloc")]
1650 pub fn into_string(self) -> Result<String, Error> {
1651 self.try_into()
1652 }
1653
1654 #[cfg(feature = "alloc")]
1655 #[must_use]
1656 pub fn to_string_lossy(&self) -> String {
1657 String::from_utf8_lossy(&self.0).into_owned()
1658 }
1659
1660 #[cfg(feature = "alloc")]
1661 #[must_use]
1662 pub fn into_string_lossy(self) -> String {
1663 String::from_utf8_lossy(&self.0).into_owned()
1664 }
1665}
1666
1667impl<const MAX: u32> TryFrom<Vec<u8>> for BytesM<MAX> {
1668 type Error = Error;
1669
1670 fn try_from(v: Vec<u8>) -> Result<Self, Error> {
1671 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1672 if len <= MAX {
1673 Ok(BytesM(v))
1674 } else {
1675 Err(Error::LengthExceedsMax)
1676 }
1677 }
1678}
1679
1680impl<const MAX: u32> From<BytesM<MAX>> for Vec<u8> {
1681 #[must_use]
1682 fn from(v: BytesM<MAX>) -> Self {
1683 v.0
1684 }
1685}
1686
1687#[cfg(feature = "alloc")]
1688impl<const MAX: u32> From<&BytesM<MAX>> for Vec<u8> {
1689 #[must_use]
1690 fn from(v: &BytesM<MAX>) -> Self {
1691 v.0.clone()
1692 }
1693}
1694
1695impl<const MAX: u32> AsRef<Vec<u8>> for BytesM<MAX> {
1696 #[must_use]
1697 fn as_ref(&self) -> &Vec<u8> {
1698 &self.0
1699 }
1700}
1701
1702#[cfg(feature = "alloc")]
1703impl<const MAX: u32> TryFrom<&Vec<u8>> for BytesM<MAX> {
1704 type Error = Error;
1705
1706 fn try_from(v: &Vec<u8>) -> Result<Self, Error> {
1707 v.as_slice().try_into()
1708 }
1709}
1710
1711#[cfg(feature = "alloc")]
1712impl<const MAX: u32> TryFrom<&[u8]> for BytesM<MAX> {
1713 type Error = Error;
1714
1715 fn try_from(v: &[u8]) -> Result<Self, Error> {
1716 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1717 if len <= MAX {
1718 Ok(BytesM(v.to_vec()))
1719 } else {
1720 Err(Error::LengthExceedsMax)
1721 }
1722 }
1723}
1724
1725impl<const MAX: u32> AsRef<[u8]> for BytesM<MAX> {
1726 #[cfg(feature = "alloc")]
1727 #[must_use]
1728 fn as_ref(&self) -> &[u8] {
1729 self.0.as_ref()
1730 }
1731 #[cfg(not(feature = "alloc"))]
1732 #[must_use]
1733 fn as_ref(&self) -> &[u8] {
1734 self.0
1735 }
1736}
1737
1738#[cfg(feature = "alloc")]
1739impl<const N: usize, const MAX: u32> TryFrom<[u8; N]> for BytesM<MAX> {
1740 type Error = Error;
1741
1742 fn try_from(v: [u8; N]) -> Result<Self, Error> {
1743 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1744 if len <= MAX {
1745 Ok(BytesM(v.to_vec()))
1746 } else {
1747 Err(Error::LengthExceedsMax)
1748 }
1749 }
1750}
1751
1752#[cfg(feature = "alloc")]
1753impl<const N: usize, const MAX: u32> TryFrom<BytesM<MAX>> for [u8; N] {
1754 type Error = BytesM<MAX>;
1755
1756 fn try_from(v: BytesM<MAX>) -> core::result::Result<Self, Self::Error> {
1757 let s: [u8; N] = v.0.try_into().map_err(BytesM::<MAX>)?;
1758 Ok(s)
1759 }
1760}
1761
1762#[cfg(feature = "alloc")]
1763impl<const N: usize, const MAX: u32> TryFrom<&[u8; N]> for BytesM<MAX> {
1764 type Error = Error;
1765
1766 fn try_from(v: &[u8; N]) -> Result<Self, Error> {
1767 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1768 if len <= MAX {
1769 Ok(BytesM(v.to_vec()))
1770 } else {
1771 Err(Error::LengthExceedsMax)
1772 }
1773 }
1774}
1775
1776#[cfg(not(feature = "alloc"))]
1777impl<const N: usize, const MAX: u32> TryFrom<&'static [u8; N]> for BytesM<MAX> {
1778 type Error = Error;
1779
1780 fn try_from(v: &'static [u8; N]) -> Result<Self, Error> {
1781 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1782 if len <= MAX {
1783 Ok(BytesM(v))
1784 } else {
1785 Err(Error::LengthExceedsMax)
1786 }
1787 }
1788}
1789
1790#[cfg(feature = "alloc")]
1791impl<const MAX: u32> TryFrom<&String> for BytesM<MAX> {
1792 type Error = Error;
1793
1794 fn try_from(v: &String) -> Result<Self, Error> {
1795 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1796 if len <= MAX {
1797 Ok(BytesM(v.as_bytes().to_vec()))
1798 } else {
1799 Err(Error::LengthExceedsMax)
1800 }
1801 }
1802}
1803
1804#[cfg(feature = "alloc")]
1805impl<const MAX: u32> TryFrom<String> for BytesM<MAX> {
1806 type Error = Error;
1807
1808 fn try_from(v: String) -> Result<Self, Error> {
1809 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1810 if len <= MAX {
1811 Ok(BytesM(v.into()))
1812 } else {
1813 Err(Error::LengthExceedsMax)
1814 }
1815 }
1816}
1817
1818#[cfg(feature = "alloc")]
1819impl<const MAX: u32> TryFrom<BytesM<MAX>> for String {
1820 type Error = Error;
1821
1822 fn try_from(v: BytesM<MAX>) -> Result<Self, Error> {
1823 Ok(String::from_utf8(v.0)?)
1824 }
1825}
1826
1827#[cfg(feature = "alloc")]
1828impl<const MAX: u32> TryFrom<&BytesM<MAX>> for String {
1829 type Error = Error;
1830
1831 fn try_from(v: &BytesM<MAX>) -> Result<Self, Error> {
1832 Ok(core::str::from_utf8(v.as_ref())?.to_owned())
1833 }
1834}
1835
1836#[cfg(feature = "alloc")]
1837impl<const MAX: u32> TryFrom<&str> for BytesM<MAX> {
1838 type Error = Error;
1839
1840 fn try_from(v: &str) -> Result<Self, Error> {
1841 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1842 if len <= MAX {
1843 Ok(BytesM(v.into()))
1844 } else {
1845 Err(Error::LengthExceedsMax)
1846 }
1847 }
1848}
1849
1850#[cfg(not(feature = "alloc"))]
1851impl<const MAX: u32> TryFrom<&'static str> for BytesM<MAX> {
1852 type Error = Error;
1853
1854 fn try_from(v: &'static str) -> Result<Self, Error> {
1855 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1856 if len <= MAX {
1857 Ok(BytesM(v.as_bytes()))
1858 } else {
1859 Err(Error::LengthExceedsMax)
1860 }
1861 }
1862}
1863
1864impl<'a, const MAX: u32> TryFrom<&'a BytesM<MAX>> for &'a str {
1865 type Error = Error;
1866
1867 fn try_from(v: &'a BytesM<MAX>) -> Result<Self, Error> {
1868 Ok(core::str::from_utf8(v.as_ref())?)
1869 }
1870}
1871
1872impl<const MAX: u32> ReadXdr for BytesM<MAX> {
1873 #[cfg(feature = "std")]
1874 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
1875 r.with_limited_depth(|r| {
1876 let len: u32 = u32::read_xdr(r)?;
1877 if len > MAX {
1878 return Err(Error::LengthExceedsMax);
1879 }
1880
1881 r.consume_len(len as usize)?;
1882 let padding = pad_len(len as usize);
1883 r.consume_len(padding)?;
1884
1885 let mut vec = vec![0u8; len as usize];
1886 r.read_exact(&mut vec)?;
1887
1888 let pad = &mut [0u8; 3][..padding];
1889 r.read_exact(pad)?;
1890 if pad.iter().any(|b| *b != 0) {
1891 return Err(Error::NonZeroPadding);
1892 }
1893
1894 Ok(BytesM(vec))
1895 })
1896 }
1897}
1898
1899impl<const MAX: u32> WriteXdr for BytesM<MAX> {
1900 #[cfg(feature = "std")]
1901 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
1902 w.with_limited_depth(|w| {
1903 let len: u32 = self.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
1904 len.write_xdr(w)?;
1905
1906 w.consume_len(self.len())?;
1907 let padding = pad_len(self.len());
1908 w.consume_len(padding)?;
1909
1910 w.write_all(&self.0)?;
1911
1912 w.write_all(&[0u8; 3][..pad_len(len as usize)])?;
1913
1914 Ok(())
1915 })
1916 }
1917}
1918
1919#[cfg(feature = "alloc")]
1933#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1934#[cfg_attr(
1935 feature = "serde",
1936 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
1937)]
1938#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1939pub struct StringM<const MAX: u32 = { u32::MAX }>(Vec<u8>);
1940
1941#[cfg(not(feature = "alloc"))]
1942#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
1943#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
1944pub struct StringM<const MAX: u32 = { u32::MAX }>(Vec<u8>);
1945
1946impl<const MAX: u32> core::fmt::Display for StringM<MAX> {
1947 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1948 #[cfg(feature = "alloc")]
1949 let v = &self.0;
1950 #[cfg(not(feature = "alloc"))]
1951 let v = self.0;
1952 for b in escape_bytes::Escape::new(v) {
1953 write!(f, "{}", b as char)?;
1954 }
1955 Ok(())
1956 }
1957}
1958
1959impl<const MAX: u32> core::fmt::Debug for StringM<MAX> {
1960 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1961 #[cfg(feature = "alloc")]
1962 let v = &self.0;
1963 #[cfg(not(feature = "alloc"))]
1964 let v = self.0;
1965 write!(f, "StringM(")?;
1966 for b in escape_bytes::Escape::new(v) {
1967 write!(f, "{}", b as char)?;
1968 }
1969 write!(f, ")")?;
1970 Ok(())
1971 }
1972}
1973
1974#[cfg(feature = "alloc")]
1975impl<const MAX: u32> core::str::FromStr for StringM<MAX> {
1976 type Err = Error;
1977 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
1978 let b = escape_bytes::unescape(s.as_bytes()).map_err(|_| Error::Invalid)?;
1979 Ok(Self(b))
1980 }
1981}
1982
1983impl<const MAX: u32> Deref for StringM<MAX> {
1984 type Target = Vec<u8>;
1985
1986 fn deref(&self) -> &Self::Target {
1987 &self.0
1988 }
1989}
1990
1991impl<const MAX: u32> Default for StringM<MAX> {
1992 fn default() -> Self {
1993 Self(Vec::default())
1994 }
1995}
1996
1997#[cfg(feature = "schemars")]
1998impl<const MAX: u32> schemars::JsonSchema for StringM<MAX> {
1999 fn schema_name() -> String {
2000 format!("StringM<{MAX}>")
2001 }
2002
2003 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
2004 let schema = String::json_schema(gen);
2005 if let schemars::schema::Schema::Object(mut schema) = schema {
2006 let string = *schema.string.unwrap_or_default().clone();
2007 schema.string = Some(Box::new(schemars::schema::StringValidation {
2008 max_length: Some(MAX),
2009 ..string
2010 }));
2011 schema.into()
2012 } else {
2013 schema
2014 }
2015 }
2016}
2017
2018impl<const MAX: u32> StringM<MAX> {
2019 pub const MAX_LEN: usize = { MAX as usize };
2020
2021 #[must_use]
2022 #[allow(clippy::unused_self)]
2023 pub fn max_len(&self) -> usize {
2024 Self::MAX_LEN
2025 }
2026
2027 #[must_use]
2028 pub fn as_vec(&self) -> &Vec<u8> {
2029 self.as_ref()
2030 }
2031}
2032
2033impl<const MAX: u32> StringM<MAX> {
2034 #[must_use]
2035 #[cfg(feature = "alloc")]
2036 pub fn to_vec(&self) -> Vec<u8> {
2037 self.into()
2038 }
2039
2040 #[must_use]
2041 pub fn into_vec(self) -> Vec<u8> {
2042 self.into()
2043 }
2044}
2045
2046impl<const MAX: u32> StringM<MAX> {
2047 #[cfg(feature = "alloc")]
2048 pub fn to_utf8_string(&self) -> Result<String, Error> {
2049 self.try_into()
2050 }
2051
2052 #[cfg(feature = "alloc")]
2053 pub fn into_utf8_string(self) -> Result<String, Error> {
2054 self.try_into()
2055 }
2056
2057 #[cfg(feature = "alloc")]
2058 #[must_use]
2059 pub fn to_utf8_string_lossy(&self) -> String {
2060 String::from_utf8_lossy(&self.0).into_owned()
2061 }
2062
2063 #[cfg(feature = "alloc")]
2064 #[must_use]
2065 pub fn into_utf8_string_lossy(self) -> String {
2066 String::from_utf8_lossy(&self.0).into_owned()
2067 }
2068}
2069
2070impl<const MAX: u32> TryFrom<Vec<u8>> for StringM<MAX> {
2071 type Error = Error;
2072
2073 fn try_from(v: Vec<u8>) -> Result<Self, Error> {
2074 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2075 if len <= MAX {
2076 Ok(StringM(v))
2077 } else {
2078 Err(Error::LengthExceedsMax)
2079 }
2080 }
2081}
2082
2083impl<const MAX: u32> From<StringM<MAX>> for Vec<u8> {
2084 #[must_use]
2085 fn from(v: StringM<MAX>) -> Self {
2086 v.0
2087 }
2088}
2089
2090#[cfg(feature = "alloc")]
2091impl<const MAX: u32> From<&StringM<MAX>> for Vec<u8> {
2092 #[must_use]
2093 fn from(v: &StringM<MAX>) -> Self {
2094 v.0.clone()
2095 }
2096}
2097
2098impl<const MAX: u32> AsRef<Vec<u8>> for StringM<MAX> {
2099 #[must_use]
2100 fn as_ref(&self) -> &Vec<u8> {
2101 &self.0
2102 }
2103}
2104
2105#[cfg(feature = "alloc")]
2106impl<const MAX: u32> TryFrom<&Vec<u8>> for StringM<MAX> {
2107 type Error = Error;
2108
2109 fn try_from(v: &Vec<u8>) -> Result<Self, Error> {
2110 v.as_slice().try_into()
2111 }
2112}
2113
2114#[cfg(feature = "alloc")]
2115impl<const MAX: u32> TryFrom<&[u8]> for StringM<MAX> {
2116 type Error = Error;
2117
2118 fn try_from(v: &[u8]) -> Result<Self, Error> {
2119 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2120 if len <= MAX {
2121 Ok(StringM(v.to_vec()))
2122 } else {
2123 Err(Error::LengthExceedsMax)
2124 }
2125 }
2126}
2127
2128impl<const MAX: u32> AsRef<[u8]> for StringM<MAX> {
2129 #[cfg(feature = "alloc")]
2130 #[must_use]
2131 fn as_ref(&self) -> &[u8] {
2132 self.0.as_ref()
2133 }
2134 #[cfg(not(feature = "alloc"))]
2135 #[must_use]
2136 fn as_ref(&self) -> &[u8] {
2137 self.0
2138 }
2139}
2140
2141#[cfg(feature = "alloc")]
2142impl<const N: usize, const MAX: u32> TryFrom<[u8; N]> for StringM<MAX> {
2143 type Error = Error;
2144
2145 fn try_from(v: [u8; N]) -> Result<Self, Error> {
2146 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2147 if len <= MAX {
2148 Ok(StringM(v.to_vec()))
2149 } else {
2150 Err(Error::LengthExceedsMax)
2151 }
2152 }
2153}
2154
2155#[cfg(feature = "alloc")]
2156impl<const N: usize, const MAX: u32> TryFrom<StringM<MAX>> for [u8; N] {
2157 type Error = StringM<MAX>;
2158
2159 fn try_from(v: StringM<MAX>) -> core::result::Result<Self, Self::Error> {
2160 let s: [u8; N] = v.0.try_into().map_err(StringM::<MAX>)?;
2161 Ok(s)
2162 }
2163}
2164
2165#[cfg(feature = "alloc")]
2166impl<const N: usize, const MAX: u32> TryFrom<&[u8; N]> for StringM<MAX> {
2167 type Error = Error;
2168
2169 fn try_from(v: &[u8; N]) -> Result<Self, Error> {
2170 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2171 if len <= MAX {
2172 Ok(StringM(v.to_vec()))
2173 } else {
2174 Err(Error::LengthExceedsMax)
2175 }
2176 }
2177}
2178
2179#[cfg(not(feature = "alloc"))]
2180impl<const N: usize, const MAX: u32> TryFrom<&'static [u8; N]> for StringM<MAX> {
2181 type Error = Error;
2182
2183 fn try_from(v: &'static [u8; N]) -> Result<Self, Error> {
2184 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2185 if len <= MAX {
2186 Ok(StringM(v))
2187 } else {
2188 Err(Error::LengthExceedsMax)
2189 }
2190 }
2191}
2192
2193#[cfg(feature = "alloc")]
2194impl<const MAX: u32> TryFrom<&String> for StringM<MAX> {
2195 type Error = Error;
2196
2197 fn try_from(v: &String) -> Result<Self, Error> {
2198 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2199 if len <= MAX {
2200 Ok(StringM(v.as_bytes().to_vec()))
2201 } else {
2202 Err(Error::LengthExceedsMax)
2203 }
2204 }
2205}
2206
2207#[cfg(feature = "alloc")]
2208impl<const MAX: u32> TryFrom<String> for StringM<MAX> {
2209 type Error = Error;
2210
2211 fn try_from(v: String) -> Result<Self, Error> {
2212 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2213 if len <= MAX {
2214 Ok(StringM(v.into()))
2215 } else {
2216 Err(Error::LengthExceedsMax)
2217 }
2218 }
2219}
2220
2221#[cfg(feature = "alloc")]
2222impl<const MAX: u32> TryFrom<StringM<MAX>> for String {
2223 type Error = Error;
2224
2225 fn try_from(v: StringM<MAX>) -> Result<Self, Error> {
2226 Ok(String::from_utf8(v.0)?)
2227 }
2228}
2229
2230#[cfg(feature = "alloc")]
2231impl<const MAX: u32> TryFrom<&StringM<MAX>> for String {
2232 type Error = Error;
2233
2234 fn try_from(v: &StringM<MAX>) -> Result<Self, Error> {
2235 Ok(core::str::from_utf8(v.as_ref())?.to_owned())
2236 }
2237}
2238
2239#[cfg(feature = "alloc")]
2240impl<const MAX: u32> TryFrom<&str> for StringM<MAX> {
2241 type Error = Error;
2242
2243 fn try_from(v: &str) -> Result<Self, Error> {
2244 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2245 if len <= MAX {
2246 Ok(StringM(v.into()))
2247 } else {
2248 Err(Error::LengthExceedsMax)
2249 }
2250 }
2251}
2252
2253#[cfg(not(feature = "alloc"))]
2254impl<const MAX: u32> TryFrom<&'static str> for StringM<MAX> {
2255 type Error = Error;
2256
2257 fn try_from(v: &'static str) -> Result<Self, Error> {
2258 let len: u32 = v.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2259 if len <= MAX {
2260 Ok(StringM(v.as_bytes()))
2261 } else {
2262 Err(Error::LengthExceedsMax)
2263 }
2264 }
2265}
2266
2267impl<'a, const MAX: u32> TryFrom<&'a StringM<MAX>> for &'a str {
2268 type Error = Error;
2269
2270 fn try_from(v: &'a StringM<MAX>) -> Result<Self, Error> {
2271 Ok(core::str::from_utf8(v.as_ref())?)
2272 }
2273}
2274
2275impl<const MAX: u32> ReadXdr for StringM<MAX> {
2276 #[cfg(feature = "std")]
2277 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
2278 r.with_limited_depth(|r| {
2279 let len: u32 = u32::read_xdr(r)?;
2280 if len > MAX {
2281 return Err(Error::LengthExceedsMax);
2282 }
2283
2284 r.consume_len(len as usize)?;
2285 let padding = pad_len(len as usize);
2286 r.consume_len(padding)?;
2287
2288 let mut vec = vec![0u8; len as usize];
2289 r.read_exact(&mut vec)?;
2290
2291 let pad = &mut [0u8; 3][..padding];
2292 r.read_exact(pad)?;
2293 if pad.iter().any(|b| *b != 0) {
2294 return Err(Error::NonZeroPadding);
2295 }
2296
2297 Ok(StringM(vec))
2298 })
2299 }
2300}
2301
2302impl<const MAX: u32> WriteXdr for StringM<MAX> {
2303 #[cfg(feature = "std")]
2304 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
2305 w.with_limited_depth(|w| {
2306 let len: u32 = self.len().try_into().map_err(|_| Error::LengthExceedsMax)?;
2307 len.write_xdr(w)?;
2308
2309 w.consume_len(self.len())?;
2310 let padding = pad_len(self.len());
2311 w.consume_len(padding)?;
2312
2313 w.write_all(&self.0)?;
2314
2315 w.write_all(&[0u8; 3][..padding])?;
2316
2317 Ok(())
2318 })
2319 }
2320}
2321
2322#[derive(Default, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
2325#[cfg_attr(
2326 all(feature = "serde", feature = "alloc"),
2327 derive(serde::Serialize, serde::Deserialize),
2328 serde(rename_all = "snake_case")
2329)]
2330pub struct Frame<T>(pub T)
2331where
2332 T: ReadXdr;
2333
2334#[cfg(feature = "schemars")]
2335impl<T: schemars::JsonSchema + ReadXdr> schemars::JsonSchema for Frame<T> {
2336 fn schema_name() -> String {
2337 format!("Frame<{}>", T::schema_name())
2338 }
2339
2340 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
2341 T::json_schema(gen)
2342 }
2343}
2344
2345impl<T> ReadXdr for Frame<T>
2346where
2347 T: ReadXdr,
2348{
2349 #[cfg(feature = "std")]
2350 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
2351 let header = u32::read_xdr(r)?;
2356 let last_record = header >> 31 == 1;
2358 if last_record {
2359 Ok(Self(T::read_xdr(r)?))
2361 } else {
2362 Err(Error::Unsupported)
2365 }
2366 }
2367}
2368
2369#[cfg(feature = "std")]
2372pub struct SkipWhitespace<R: Read> {
2373 pub inner: R,
2374}
2375
2376#[cfg(feature = "std")]
2377impl<R: Read> SkipWhitespace<R> {
2378 pub fn new(inner: R) -> Self {
2379 SkipWhitespace { inner }
2380 }
2381}
2382
2383#[cfg(feature = "std")]
2384impl<R: Read> Read for SkipWhitespace<R> {
2385 fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
2386 let n = self.inner.read(buf)?;
2387
2388 let mut written = 0;
2389 for read in 0..n {
2390 if !buf[read].is_ascii_whitespace() {
2391 buf[written] = buf[read];
2392 written += 1;
2393 }
2394 }
2395
2396 Ok(written)
2397 }
2398}
2399
2400#[cfg(all(test, feature = "std"))]
2401mod test_skip_whitespace {
2402 use super::*;
2403
2404 #[test]
2405 fn test() {
2406 struct Test {
2407 input: &'static [u8],
2408 output: &'static [u8],
2409 }
2410 let tests = [
2411 Test {
2412 input: b"",
2413 output: b"",
2414 },
2415 Test {
2416 input: b" \n\t\r",
2417 output: b"",
2418 },
2419 Test {
2420 input: b"a c",
2421 output: b"ac",
2422 },
2423 Test {
2424 input: b"ab cd",
2425 output: b"abcd",
2426 },
2427 Test {
2428 input: b" ab \n cd ",
2429 output: b"abcd",
2430 },
2431 ];
2432 for (i, t) in tests.iter().enumerate() {
2433 let mut skip = SkipWhitespace::new(t.input);
2434 let mut output = Vec::new();
2435 skip.read_to_end(&mut output).unwrap();
2436 assert_eq!(output, t.output, "#{i}");
2437 }
2438 }
2439}
2440
2441#[cfg(feature = "serde")]
2454struct NumberOrString;
2455
2456#[cfg(feature = "serde")]
2457impl<'de> serde_with::DeserializeAs<'de, i64> for NumberOrString {
2458 fn deserialize_as<D>(deserializer: D) -> Result<i64, D::Error>
2459 where
2460 D: serde::Deserializer<'de>,
2461 {
2462 use serde::Deserialize;
2463 #[derive(Deserialize)]
2464 #[serde(untagged)]
2465 enum I64OrString<'a> {
2466 Str(&'a str),
2467 String(String),
2468 I64(i64),
2469 }
2470 match I64OrString::deserialize(deserializer)? {
2471 I64OrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
2472 I64OrString::String(s) => s.parse().map_err(serde::de::Error::custom),
2473 I64OrString::I64(v) => Ok(v),
2474 }
2475 }
2476}
2477
2478#[cfg(feature = "serde")]
2479impl<'de> serde_with::DeserializeAs<'de, u64> for NumberOrString {
2480 fn deserialize_as<D>(deserializer: D) -> Result<u64, D::Error>
2481 where
2482 D: serde::Deserializer<'de>,
2483 {
2484 use serde::Deserialize;
2485 #[derive(Deserialize)]
2486 #[serde(untagged)]
2487 enum U64OrString<'a> {
2488 Str(&'a str),
2489 String(String),
2490 U64(u64),
2491 }
2492 match U64OrString::deserialize(deserializer)? {
2493 U64OrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
2494 U64OrString::String(s) => s.parse().map_err(serde::de::Error::custom),
2495 U64OrString::U64(v) => Ok(v),
2496 }
2497 }
2498}
2499
2500#[cfg(feature = "serde")]
2501impl serde_with::SerializeAs<i64> for NumberOrString {
2502 fn serialize_as<S>(source: &i64, serializer: S) -> Result<S::Ok, S::Error>
2503 where
2504 S: serde::Serializer,
2505 {
2506 serializer.collect_str(source)
2507 }
2508}
2509
2510#[cfg(feature = "serde")]
2511impl serde_with::SerializeAs<u64> for NumberOrString {
2512 fn serialize_as<S>(source: &u64, serializer: S) -> Result<S::Ok, S::Error>
2513 where
2514 S: serde::Serializer,
2515 {
2516 serializer.collect_str(source)
2517 }
2518}
2519
2520#[cfg(feature = "schemars")]
2521impl<T> serde_with::schemars_0_8::JsonSchemaAs<T> for NumberOrString {
2522 fn schema_name() -> String {
2523 <String as schemars::JsonSchema>::schema_name()
2524 }
2525
2526 fn schema_id() -> std::borrow::Cow<'static, str> {
2527 <String as schemars::JsonSchema>::schema_id()
2528 }
2529
2530 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
2531 <String as schemars::JsonSchema>::json_schema(gen)
2532 }
2533
2534 fn is_referenceable() -> bool {
2535 <String as schemars::JsonSchema>::is_referenceable()
2536 }
2537}
2538
2539#[cfg(all(test, feature = "std"))]
2542mod tests {
2543 use std::io::Cursor;
2544
2545 use super::*;
2546
2547 #[test]
2548 pub fn vec_u8_read_without_padding() {
2549 let buf = Cursor::new(vec![0, 0, 0, 4, 2, 2, 2, 2]);
2550 let v = VecM::<u8, 8>::read_xdr(&mut Limited::new(buf, Limits::none())).unwrap();
2551 assert_eq!(v.to_vec(), vec![2, 2, 2, 2]);
2552 }
2553
2554 #[test]
2555 pub fn vec_u8_read_with_padding() {
2556 let buf = Cursor::new(vec![0, 0, 0, 1, 2, 0, 0, 0]);
2557 let v = VecM::<u8, 8>::read_xdr(&mut Limited::new(buf, Limits::none())).unwrap();
2558 assert_eq!(v.to_vec(), vec![2]);
2559 }
2560
2561 #[test]
2562 pub fn vec_u8_read_with_insufficient_padding() {
2563 let buf = Cursor::new(vec![0, 0, 0, 1, 2, 0, 0]);
2564 let res = VecM::<u8, 8>::read_xdr(&mut Limited::new(buf, Limits::none()));
2565 match res {
2566 Err(Error::Io(_)) => (),
2567 _ => panic!("expected IO error got {res:?}"),
2568 }
2569 }
2570
2571 #[test]
2572 pub fn vec_u8_read_with_non_zero_padding() {
2573 let buf = Cursor::new(vec![0, 0, 0, 1, 2, 3, 0, 0]);
2574 let res = VecM::<u8, 8>::read_xdr(&mut Limited::new(buf, Limits::none()));
2575 match res {
2576 Err(Error::NonZeroPadding) => (),
2577 _ => panic!("expected NonZeroPadding got {res:?}"),
2578 }
2579 }
2580
2581 #[test]
2582 pub fn vec_u8_write_without_padding() {
2583 let mut buf = vec![];
2584 let v: VecM<u8, 8> = vec![2, 2, 2, 2].try_into().unwrap();
2585
2586 v.write_xdr(&mut Limited::new(Cursor::new(&mut buf), Limits::none()))
2587 .unwrap();
2588 assert_eq!(buf, vec![0, 0, 0, 4, 2, 2, 2, 2]);
2589 }
2590
2591 #[test]
2592 pub fn vec_u8_write_with_padding() {
2593 let mut buf = vec![];
2594 let v: VecM<u8, 8> = vec![2].try_into().unwrap();
2595 v.write_xdr(&mut Limited::new(Cursor::new(&mut buf), Limits::none()))
2596 .unwrap();
2597 assert_eq!(buf, vec![0, 0, 0, 1, 2, 0, 0, 0]);
2598 }
2599
2600 #[test]
2601 pub fn arr_u8_read_without_padding() {
2602 let buf = Cursor::new(vec![2, 2, 2, 2]);
2603 let v = <[u8; 4]>::read_xdr(&mut Limited::new(buf, Limits::none())).unwrap();
2604 assert_eq!(v, [2, 2, 2, 2]);
2605 }
2606
2607 #[test]
2608 pub fn arr_u8_read_with_padding() {
2609 let buf = Cursor::new(vec![2, 0, 0, 0]);
2610 let v = <[u8; 1]>::read_xdr(&mut Limited::new(buf, Limits::none())).unwrap();
2611 assert_eq!(v, [2]);
2612 }
2613
2614 #[test]
2615 pub fn arr_u8_read_with_insufficient_padding() {
2616 let buf = Cursor::new(vec![2, 0, 0]);
2617 let res = <[u8; 1]>::read_xdr(&mut Limited::new(buf, Limits::none()));
2618 match res {
2619 Err(Error::Io(_)) => (),
2620 _ => panic!("expected IO error got {res:?}"),
2621 }
2622 }
2623
2624 #[test]
2625 pub fn arr_u8_read_with_non_zero_padding() {
2626 let buf = Cursor::new(vec![2, 3, 0, 0]);
2627 let res = <[u8; 1]>::read_xdr(&mut Limited::new(buf, Limits::none()));
2628 match res {
2629 Err(Error::NonZeroPadding) => (),
2630 _ => panic!("expected NonZeroPadding got {res:?}"),
2631 }
2632 }
2633
2634 #[test]
2635 pub fn arr_u8_write_without_padding() {
2636 let mut buf = vec![];
2637 [2u8, 2, 2, 2]
2638 .write_xdr(&mut Limited::new(Cursor::new(&mut buf), Limits::none()))
2639 .unwrap();
2640 assert_eq!(buf, vec![2, 2, 2, 2]);
2641 }
2642
2643 #[test]
2644 pub fn arr_u8_write_with_padding() {
2645 let mut buf = vec![];
2646 [2u8]
2647 .write_xdr(&mut Limited::new(Cursor::new(&mut buf), Limits::none()))
2648 .unwrap();
2649 assert_eq!(buf, vec![2, 0, 0, 0]);
2650 }
2651}
2652
2653#[cfg(all(test, feature = "std"))]
2654mod test {
2655 use super::*;
2656
2657 #[test]
2658 fn into_option_none() {
2659 let v: VecM<u32, 1> = vec![].try_into().unwrap();
2660 assert_eq!(v.into_option(), None);
2661 }
2662
2663 #[test]
2664 fn into_option_some() {
2665 let v: VecM<_, 1> = vec![1].try_into().unwrap();
2666 assert_eq!(v.into_option(), Some(1));
2667 }
2668
2669 #[test]
2670 fn to_option_none() {
2671 let v: VecM<u32, 1> = vec![].try_into().unwrap();
2672 assert_eq!(v.to_option(), None);
2673 }
2674
2675 #[test]
2676 fn to_option_some() {
2677 let v: VecM<_, 1> = vec![1].try_into().unwrap();
2678 assert_eq!(v.to_option(), Some(1));
2679 }
2680
2681 #[test]
2682 fn depth_limited_read_write_under_the_limit_success() {
2683 let a: Option<Option<Option<u32>>> = Some(Some(Some(5)));
2684 let mut buf = Limited::new(Vec::new(), Limits::depth(4));
2685 a.write_xdr(&mut buf).unwrap();
2686
2687 let mut dlr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::depth(4));
2688 let a_back: Option<Option<Option<u32>>> = ReadXdr::read_xdr(&mut dlr).unwrap();
2689 assert_eq!(a, a_back);
2690 }
2691
2692 #[test]
2693 fn write_over_depth_limit_fail() {
2694 let a: Option<Option<Option<u32>>> = Some(Some(Some(5)));
2695 let mut buf = Limited::new(Vec::new(), Limits::depth(3));
2696 let res = a.write_xdr(&mut buf);
2697 match res {
2698 Err(Error::DepthLimitExceeded) => (),
2699 _ => panic!("expected DepthLimitExceeded got {res:?}"),
2700 }
2701 }
2702
2703 #[test]
2704 fn read_over_depth_limit_fail() {
2705 let read_limits = Limits::depth(3);
2706 let write_limits = Limits::depth(5);
2707 let a: Option<Option<Option<u32>>> = Some(Some(Some(5)));
2708 let mut buf = Limited::new(Vec::new(), write_limits);
2709 a.write_xdr(&mut buf).unwrap();
2710
2711 let mut dlr = Limited::new(Cursor::new(buf.inner.as_slice()), read_limits);
2712 let res: Result<Option<Option<Option<u32>>>, _> = ReadXdr::read_xdr(&mut dlr);
2713 match res {
2714 Err(Error::DepthLimitExceeded) => (),
2715 _ => panic!("expected DepthLimitExceeded got {res:?}"),
2716 }
2717 }
2718
2719 #[test]
2720 fn length_limited_read_write_i32() {
2721 let v = 123i32;
2723 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2724 v.write_xdr(&mut buf).unwrap();
2725 assert_eq!(buf.limits.len, 0);
2726 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(4));
2727 let v_back: i32 = ReadXdr::read_xdr(&mut lr).unwrap();
2728 assert_eq!(buf.limits.len, 0);
2729 assert_eq!(v, v_back);
2730
2731 let v = 123i32;
2733 let mut buf = Limited::new(Vec::new(), Limits::len(5));
2734 v.write_xdr(&mut buf).unwrap();
2735 assert_eq!(buf.limits.len, 1);
2736 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(5));
2737 let v_back: i32 = ReadXdr::read_xdr(&mut lr).unwrap();
2738 assert_eq!(buf.limits.len, 1);
2739 assert_eq!(v, v_back);
2740
2741 let v = 123i32;
2743 let mut buf = Limited::new(Vec::new(), Limits::len(3));
2744 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2745
2746 let v = 123i32;
2748 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2749 v.write_xdr(&mut buf).unwrap();
2750 assert_eq!(buf.limits.len, 0);
2751 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(3));
2752 assert_eq!(
2753 <i32 as ReadXdr>::read_xdr(&mut lr),
2754 Err(Error::LengthLimitExceeded)
2755 );
2756 }
2757
2758 #[test]
2759 fn length_limited_read_write_u32() {
2760 let v = 123u32;
2762 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2763 v.write_xdr(&mut buf).unwrap();
2764 assert_eq!(buf.limits.len, 0);
2765 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(4));
2766 let v_back: u32 = ReadXdr::read_xdr(&mut lr).unwrap();
2767 assert_eq!(buf.limits.len, 0);
2768 assert_eq!(v, v_back);
2769
2770 let v = 123u32;
2772 let mut buf = Limited::new(Vec::new(), Limits::len(5));
2773 v.write_xdr(&mut buf).unwrap();
2774 assert_eq!(buf.limits.len, 1);
2775 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(5));
2776 let v_back: u32 = ReadXdr::read_xdr(&mut lr).unwrap();
2777 assert_eq!(buf.limits.len, 1);
2778 assert_eq!(v, v_back);
2779
2780 let v = 123u32;
2782 let mut buf = Limited::new(Vec::new(), Limits::len(3));
2783 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2784
2785 let v = 123u32;
2787 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2788 v.write_xdr(&mut buf).unwrap();
2789 assert_eq!(buf.limits.len, 0);
2790 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(3));
2791 assert_eq!(
2792 <u32 as ReadXdr>::read_xdr(&mut lr),
2793 Err(Error::LengthLimitExceeded)
2794 );
2795 }
2796
2797 #[test]
2798 fn length_limited_read_write_i64() {
2799 let v = 123i64;
2801 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2802 v.write_xdr(&mut buf).unwrap();
2803 assert_eq!(buf.limits.len, 0);
2804 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(8));
2805 let v_back: i64 = ReadXdr::read_xdr(&mut lr).unwrap();
2806 assert_eq!(buf.limits.len, 0);
2807 assert_eq!(v, v_back);
2808
2809 let v = 123i64;
2811 let mut buf = Limited::new(Vec::new(), Limits::len(9));
2812 v.write_xdr(&mut buf).unwrap();
2813 assert_eq!(buf.limits.len, 1);
2814 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(9));
2815 let v_back: i64 = ReadXdr::read_xdr(&mut lr).unwrap();
2816 assert_eq!(buf.limits.len, 1);
2817 assert_eq!(v, v_back);
2818
2819 let v = 123i64;
2821 let mut buf = Limited::new(Vec::new(), Limits::len(7));
2822 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2823
2824 let v = 123i64;
2826 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2827 v.write_xdr(&mut buf).unwrap();
2828 assert_eq!(buf.limits.len, 0);
2829 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(7));
2830 assert_eq!(
2831 <i64 as ReadXdr>::read_xdr(&mut lr),
2832 Err(Error::LengthLimitExceeded)
2833 );
2834 }
2835
2836 #[test]
2837 fn length_limited_read_write_u64() {
2838 let v = 123u64;
2840 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2841 v.write_xdr(&mut buf).unwrap();
2842 assert_eq!(buf.limits.len, 0);
2843 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(8));
2844 let v_back: u64 = ReadXdr::read_xdr(&mut lr).unwrap();
2845 assert_eq!(buf.limits.len, 0);
2846 assert_eq!(v, v_back);
2847
2848 let v = 123u64;
2850 let mut buf = Limited::new(Vec::new(), Limits::len(9));
2851 v.write_xdr(&mut buf).unwrap();
2852 assert_eq!(buf.limits.len, 1);
2853 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(9));
2854 let v_back: u64 = ReadXdr::read_xdr(&mut lr).unwrap();
2855 assert_eq!(buf.limits.len, 1);
2856 assert_eq!(v, v_back);
2857
2858 let v = 123u64;
2860 let mut buf = Limited::new(Vec::new(), Limits::len(7));
2861 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2862
2863 let v = 123u64;
2865 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2866 v.write_xdr(&mut buf).unwrap();
2867 assert_eq!(buf.limits.len, 0);
2868 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(7));
2869 assert_eq!(
2870 <u64 as ReadXdr>::read_xdr(&mut lr),
2871 Err(Error::LengthLimitExceeded)
2872 );
2873 }
2874
2875 #[test]
2876 fn length_limited_read_write_bool() {
2877 let v = true;
2879 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2880 v.write_xdr(&mut buf).unwrap();
2881 assert_eq!(buf.limits.len, 0);
2882 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(4));
2883 let v_back: bool = ReadXdr::read_xdr(&mut lr).unwrap();
2884 assert_eq!(buf.limits.len, 0);
2885 assert_eq!(v, v_back);
2886
2887 let v = true;
2889 let mut buf = Limited::new(Vec::new(), Limits::len(5));
2890 v.write_xdr(&mut buf).unwrap();
2891 assert_eq!(buf.limits.len, 1);
2892 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(5));
2893 let v_back: bool = ReadXdr::read_xdr(&mut lr).unwrap();
2894 assert_eq!(buf.limits.len, 1);
2895 assert_eq!(v, v_back);
2896
2897 let v = true;
2899 let mut buf = Limited::new(Vec::new(), Limits::len(3));
2900 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2901
2902 let v = true;
2904 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2905 v.write_xdr(&mut buf).unwrap();
2906 assert_eq!(buf.limits.len, 0);
2907 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(3));
2908 assert_eq!(
2909 <bool as ReadXdr>::read_xdr(&mut lr),
2910 Err(Error::LengthLimitExceeded)
2911 );
2912 }
2913
2914 #[test]
2915 fn length_limited_read_write_option() {
2916 let v = Some(true);
2918 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2919 v.write_xdr(&mut buf).unwrap();
2920 assert_eq!(buf.limits.len, 0);
2921 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(8));
2922 let v_back: Option<bool> = ReadXdr::read_xdr(&mut lr).unwrap();
2923 assert_eq!(buf.limits.len, 0);
2924 assert_eq!(v, v_back);
2925
2926 let v = Some(true);
2928 let mut buf = Limited::new(Vec::new(), Limits::len(9));
2929 v.write_xdr(&mut buf).unwrap();
2930 assert_eq!(buf.limits.len, 1);
2931 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(9));
2932 let v_back: Option<bool> = ReadXdr::read_xdr(&mut lr).unwrap();
2933 assert_eq!(buf.limits.len, 1);
2934 assert_eq!(v, v_back);
2935
2936 let v = Some(true);
2938 let mut buf = Limited::new(Vec::new(), Limits::len(7));
2939 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2940
2941 let v = Some(true);
2943 let mut buf = Limited::new(Vec::new(), Limits::len(8));
2944 v.write_xdr(&mut buf).unwrap();
2945 assert_eq!(buf.limits.len, 0);
2946 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(7));
2947 assert_eq!(
2948 <Option<bool> as ReadXdr>::read_xdr(&mut lr),
2949 Err(Error::LengthLimitExceeded)
2950 );
2951 }
2952
2953 #[test]
2954 fn length_limited_read_write_array_u8() {
2955 let v = [1u8, 2, 3];
2957 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2958 v.write_xdr(&mut buf).unwrap();
2959 assert_eq!(buf.limits.len, 0);
2960 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(4));
2961 let v_back: [u8; 3] = ReadXdr::read_xdr(&mut lr).unwrap();
2962 assert_eq!(buf.limits.len, 0);
2963 assert_eq!(v, v_back);
2964
2965 let v = [1u8, 2, 3];
2967 let mut buf = Limited::new(Vec::new(), Limits::len(5));
2968 v.write_xdr(&mut buf).unwrap();
2969 assert_eq!(buf.limits.len, 1);
2970 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(5));
2971 let v_back: [u8; 3] = ReadXdr::read_xdr(&mut lr).unwrap();
2972 assert_eq!(buf.limits.len, 1);
2973 assert_eq!(v, v_back);
2974
2975 let v = [1u8, 2, 3];
2977 let mut buf = Limited::new(Vec::new(), Limits::len(3));
2978 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
2979
2980 let v = [1u8, 2, 3];
2982 let mut buf = Limited::new(Vec::new(), Limits::len(4));
2983 v.write_xdr(&mut buf).unwrap();
2984 assert_eq!(buf.limits.len, 0);
2985 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(3));
2986 assert_eq!(
2987 <[u8; 3] as ReadXdr>::read_xdr(&mut lr),
2988 Err(Error::LengthLimitExceeded)
2989 );
2990 }
2991
2992 #[test]
2993 fn length_limited_read_write_array_type() {
2994 let v = [true, false, true];
2996 let mut buf = Limited::new(Vec::new(), Limits::len(12));
2997 v.write_xdr(&mut buf).unwrap();
2998 assert_eq!(buf.limits.len, 0);
2999 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(12));
3000 let v_back: [bool; 3] = ReadXdr::read_xdr(&mut lr).unwrap();
3001 assert_eq!(buf.limits.len, 0);
3002 assert_eq!(v, v_back);
3003
3004 let v = [true, false, true];
3006 let mut buf = Limited::new(Vec::new(), Limits::len(13));
3007 v.write_xdr(&mut buf).unwrap();
3008 assert_eq!(buf.limits.len, 1);
3009 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(13));
3010 let v_back: [bool; 3] = ReadXdr::read_xdr(&mut lr).unwrap();
3011 assert_eq!(buf.limits.len, 1);
3012 assert_eq!(v, v_back);
3013
3014 let v = [true, false, true];
3016 let mut buf = Limited::new(Vec::new(), Limits::len(11));
3017 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
3018
3019 let v = [true, false, true];
3021 let mut buf = Limited::new(Vec::new(), Limits::len(12));
3022 v.write_xdr(&mut buf).unwrap();
3023 assert_eq!(buf.limits.len, 0);
3024 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(11));
3025 assert_eq!(
3026 <[bool; 3] as ReadXdr>::read_xdr(&mut lr),
3027 Err(Error::LengthLimitExceeded)
3028 );
3029 }
3030
3031 #[test]
3032 fn length_limited_read_write_vec() {
3033 let v = VecM::<i32, 3>::try_from([1i32, 2, 3]).unwrap();
3035 let mut buf = Limited::new(Vec::new(), Limits::len(16));
3036 v.write_xdr(&mut buf).unwrap();
3037 assert_eq!(buf.limits.len, 0);
3038 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(16));
3039 let v_back: VecM<i32, 3> = ReadXdr::read_xdr(&mut lr).unwrap();
3040 assert_eq!(buf.limits.len, 0);
3041 assert_eq!(v, v_back);
3042
3043 let v = VecM::<i32, 3>::try_from([1i32, 2, 3]).unwrap();
3045 let mut buf = Limited::new(Vec::new(), Limits::len(17));
3046 v.write_xdr(&mut buf).unwrap();
3047 assert_eq!(buf.limits.len, 1);
3048 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(17));
3049 let v_back: VecM<i32, 3> = ReadXdr::read_xdr(&mut lr).unwrap();
3050 assert_eq!(buf.limits.len, 1);
3051 assert_eq!(v, v_back);
3052
3053 let v = VecM::<i32, 3>::try_from([1i32, 2, 3]).unwrap();
3055 let mut buf = Limited::new(Vec::new(), Limits::len(15));
3056 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
3057
3058 let v = VecM::<i32, 3>::try_from([1i32, 2, 3]).unwrap();
3060 let mut buf = Limited::new(Vec::new(), Limits::len(16));
3061 v.write_xdr(&mut buf).unwrap();
3062 assert_eq!(buf.limits.len, 0);
3063 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(15));
3064 assert_eq!(
3065 <VecM<i32, 3> as ReadXdr>::read_xdr(&mut lr),
3066 Err(Error::LengthLimitExceeded)
3067 );
3068 }
3069
3070 #[test]
3071 fn length_limited_read_write_bytes() {
3072 let v = BytesM::<3>::try_from([1u8, 2, 3]).unwrap();
3074 let mut buf = Limited::new(Vec::new(), Limits::len(8));
3075 v.write_xdr(&mut buf).unwrap();
3076 assert_eq!(buf.limits.len, 0);
3077 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(8));
3078 let v_back: BytesM<3> = ReadXdr::read_xdr(&mut lr).unwrap();
3079 assert_eq!(buf.limits.len, 0);
3080 assert_eq!(v, v_back);
3081
3082 let v = BytesM::<3>::try_from([1u8, 2, 3]).unwrap();
3084 let mut buf = Limited::new(Vec::new(), Limits::len(9));
3085 v.write_xdr(&mut buf).unwrap();
3086 assert_eq!(buf.limits.len, 1);
3087 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(9));
3088 let v_back: BytesM<3> = ReadXdr::read_xdr(&mut lr).unwrap();
3089 assert_eq!(buf.limits.len, 1);
3090 assert_eq!(v, v_back);
3091
3092 let v = BytesM::<3>::try_from([1u8, 2, 3]).unwrap();
3094 let mut buf = Limited::new(Vec::new(), Limits::len(7));
3095 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
3096
3097 let v = BytesM::<3>::try_from([1u8, 2, 3]).unwrap();
3099 let mut buf = Limited::new(Vec::new(), Limits::len(8));
3100 v.write_xdr(&mut buf).unwrap();
3101 assert_eq!(buf.limits.len, 0);
3102 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(7));
3103 assert_eq!(
3104 <BytesM<3> as ReadXdr>::read_xdr(&mut lr),
3105 Err(Error::LengthLimitExceeded)
3106 );
3107 }
3108
3109 #[test]
3110 fn length_limited_read_write_string() {
3111 let v = StringM::<3>::try_from("123").unwrap();
3113 let mut buf = Limited::new(Vec::new(), Limits::len(8));
3114 v.write_xdr(&mut buf).unwrap();
3115 assert_eq!(buf.limits.len, 0);
3116 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(8));
3117 let v_back: StringM<3> = ReadXdr::read_xdr(&mut lr).unwrap();
3118 assert_eq!(buf.limits.len, 0);
3119 assert_eq!(v, v_back);
3120
3121 let v = StringM::<3>::try_from("123").unwrap();
3123 let mut buf = Limited::new(Vec::new(), Limits::len(9));
3124 v.write_xdr(&mut buf).unwrap();
3125 assert_eq!(buf.limits.len, 1);
3126 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(9));
3127 let v_back: StringM<3> = ReadXdr::read_xdr(&mut lr).unwrap();
3128 assert_eq!(buf.limits.len, 1);
3129 assert_eq!(v, v_back);
3130
3131 let v = StringM::<3>::try_from("123").unwrap();
3133 let mut buf = Limited::new(Vec::new(), Limits::len(7));
3134 assert_eq!(v.write_xdr(&mut buf), Err(Error::LengthLimitExceeded));
3135
3136 let v = StringM::<3>::try_from("123").unwrap();
3138 let mut buf = Limited::new(Vec::new(), Limits::len(8));
3139 v.write_xdr(&mut buf).unwrap();
3140 assert_eq!(buf.limits.len, 0);
3141 let mut lr = Limited::new(Cursor::new(buf.inner.as_slice()), Limits::len(7));
3142 assert_eq!(
3143 <StringM<3> as ReadXdr>::read_xdr(&mut lr),
3144 Err(Error::LengthLimitExceeded)
3145 );
3146 }
3147}
3148
3149#[cfg(all(test, not(feature = "alloc")))]
3150mod test {
3151 use super::VecM;
3152
3153 #[test]
3154 fn to_option_none() {
3155 let v: VecM<u32, 1> = (&[]).try_into().unwrap();
3156 assert_eq!(v.to_option(), None);
3157 }
3158
3159 #[test]
3160 fn to_option_some() {
3161 let v: VecM<_, 1> = (&[1]).try_into().unwrap();
3162 assert_eq!(v.to_option(), Some(1));
3163 }
3164}
3165
3166#[cfg(all(test, feature = "serde"))]
3167mod tests_for_number_or_string {
3168 use super::*;
3169 use serde::{Deserialize, Serialize};
3170 use serde_json;
3171 use serde_with::serde_as;
3172
3173 #[serde_as]
3175 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3176 struct TestI64 {
3177 #[serde_as(as = "NumberOrString")]
3178 val: i64,
3179 }
3180
3181 #[serde_as]
3182 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3183 struct TestU64 {
3184 #[serde_as(as = "NumberOrString")]
3185 val: u64,
3186 }
3187
3188 #[serde_as]
3189 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3190 struct TestOptionI64 {
3191 #[serde_as(as = "Option<NumberOrString>")]
3192 val: Option<i64>,
3193 }
3194
3195 #[serde_as]
3196 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3197 struct TestOptionU64 {
3198 #[serde_as(as = "Option<NumberOrString>")]
3199 val: Option<u64>,
3200 }
3201
3202 #[serde_as]
3203 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3204 struct TestVecI64 {
3205 #[serde_as(as = "Vec<NumberOrString>")]
3206 val: Vec<i64>,
3207 }
3208
3209 #[serde_as]
3210 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3211 struct TestVecU64 {
3212 #[serde_as(as = "Vec<NumberOrString>")]
3213 val: Vec<u64>,
3214 }
3215
3216 #[serde_as]
3218 #[derive(Debug, PartialEq, Deserialize, Serialize)]
3219 #[serde(rename_all = "camelCase")] enum TestEnum {
3221 VariantA {
3222 #[serde(rename = "numVal")]
3223 #[serde_as(as = "NumberOrString")]
3224 num_val: i64,
3225 #[serde(rename = "otherData")]
3226 other_data: String,
3227 },
3228 VariantB {
3229 #[serde_as(as = "NumberOrString")]
3230 count: u64,
3231 },
3232 SimpleVariant,
3233 }
3234
3235 #[test]
3237 fn deserialize_i64_from_json_reader() {
3238 let json = r#"{"val": "123"}"#;
3239 let expected = TestI64 { val: 123 };
3240 assert_eq!(
3241 serde_json::from_reader::<_, TestI64>(Cursor::new(json)).unwrap(),
3242 expected
3243 );
3244 }
3245
3246 #[test]
3247 fn deserialize_i64_from_json_number_positive() {
3248 let json = r#"{"val": 123}"#;
3249 let expected = TestI64 { val: 123 };
3250 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3251 }
3252
3253 #[test]
3254 fn deserialize_i64_from_json_number_negative() {
3255 let json = r#"{"val": -456}"#;
3256 let expected = TestI64 { val: -456 };
3257 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3258 }
3259
3260 #[test]
3261 fn deserialize_i64_from_json_number_zero() {
3262 let json = r#"{"val": 0}"#;
3263 let expected = TestI64 { val: 0 };
3264 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3265 }
3266
3267 #[test]
3268 fn deserialize_i64_from_json_number_max() {
3269 let json = format!(r#"{{"val": {}}}"#, i64::MAX);
3270 let expected = TestI64 { val: i64::MAX };
3271 assert_eq!(serde_json::from_str::<TestI64>(&json).unwrap(), expected);
3272 }
3273
3274 #[test]
3275 fn deserialize_i64_from_json_number_min() {
3276 let json = format!(r#"{{"val": {}}}"#, i64::MIN);
3277 let expected = TestI64 { val: i64::MIN };
3278 assert_eq!(serde_json::from_str::<TestI64>(&json).unwrap(), expected);
3279 }
3280
3281 #[test]
3282 fn deserialize_i64_from_json_string_positive() {
3283 let json = r#"{"val": "789"}"#;
3284 let expected = TestI64 { val: 789 };
3285 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3286 }
3287
3288 #[test]
3289 fn deserialize_i64_from_json_string_negative() {
3290 let json = r#"{"val": "-101"}"#;
3291 let expected = TestI64 { val: -101 };
3292 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3293 }
3294
3295 #[test]
3296 fn deserialize_i64_from_json_string_zero() {
3297 let json = r#"{"val": "0"}"#;
3298 let expected = TestI64 { val: 0 };
3299 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3300 }
3301
3302 #[test]
3303 fn deserialize_i64_from_json_string_max() {
3304 let json = format!(r#"{{"val": "{}"}}"#, i64::MAX);
3305 let expected = TestI64 { val: i64::MAX };
3306 assert_eq!(serde_json::from_str::<TestI64>(&json).unwrap(), expected);
3307 }
3308
3309 #[test]
3310 fn deserialize_i64_from_json_string_min() {
3311 let json = format!(r#"{{"val": "{}"}}"#, i64::MIN);
3312 let expected = TestI64 { val: i64::MIN };
3313 assert_eq!(serde_json::from_str::<TestI64>(&json).unwrap(), expected);
3314 }
3315
3316 #[test]
3317 fn deserialize_i64_from_json_string_with_plus_prefix() {
3318 let json = r#"{"val": "+123"}"#;
3319 let expected = TestI64 { val: 123 };
3320 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3321 }
3322
3323 #[test]
3324 fn deserialize_i64_from_json_string_with_plus_zero() {
3325 let json = r#"{"val": "+0"}"#;
3326 let expected = TestI64 { val: 0 };
3327 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3328 }
3329
3330 #[test]
3331 fn deserialize_i64_from_json_string_with_minus_zero() {
3332 let json = r#"{"val": "-0"}"#;
3333 let expected = TestI64 { val: 0 };
3334 assert_eq!(serde_json::from_str::<TestI64>(json).unwrap(), expected);
3335 }
3336
3337 #[test]
3338 fn deserialize_i64_error_from_json_string_with_leading_whitespace() {
3339 let json = r#"{"val": " 123"}"#;
3340 assert!(serde_json::from_str::<TestI64>(json).is_err());
3341 }
3342
3343 #[test]
3344 fn deserialize_i64_error_from_json_string_with_trailing_whitespace() {
3345 let json = r#"{"val": "123 "}"#;
3346 assert!(serde_json::from_str::<TestI64>(json).is_err());
3347 }
3348
3349 #[test]
3350 fn deserialize_i64_error_from_json_string_with_both_whitespace() {
3351 let json = r#"{"val": " 123 "}"#;
3352 assert!(serde_json::from_str::<TestI64>(json).is_err());
3353 }
3354
3355 #[test]
3356 fn deserialize_i64_error_from_json_string_with_invalid_plus_prefix() {
3357 let json = r#"{"val": "++123"}"#;
3358 assert!(serde_json::from_str::<TestI64>(json).is_err());
3359 }
3360
3361 #[test]
3362 fn deserialize_i64_error_from_json_string_with_invalid_minus_prefix() {
3363 let json = r#"{"val": "--123"}"#;
3364 assert!(serde_json::from_str::<TestI64>(json).is_err());
3365 }
3366
3367 #[test]
3368 fn deserialize_i64_error_from_json_string_with_invalid_mixed_prefix() {
3369 let json = r#"{"val": "+-123"}"#;
3370 assert!(serde_json::from_str::<TestI64>(json).is_err());
3371 }
3372
3373 #[test]
3374 fn deserialize_i64_error_from_string_not_a_number() {
3375 let json = r#"{"val": "abc"}"#;
3376 assert!(serde_json::from_str::<TestI64>(json).is_err());
3377 }
3378
3379 #[test]
3380 fn deserialize_i64_error_from_string_float() {
3381 let json = r#"{"val": "123.45"}"#; assert!(serde_json::from_str::<TestI64>(json).is_err());
3383 }
3384
3385 #[test]
3386 fn deserialize_i64_error_from_string_empty() {
3387 let json = r#"{"val": ""}"#;
3388 assert!(serde_json::from_str::<TestI64>(json).is_err());
3389 }
3390
3391 #[test]
3392 fn deserialize_i64_error_from_string_overflow() {
3393 let overflow_val = i128::from(i64::MAX) + 1;
3394 let json = format!(r#"{{"val": "{overflow_val}"}}"#);
3395 assert!(serde_json::from_str::<TestI64>(&json).is_err());
3396 }
3397
3398 #[test]
3399 fn deserialize_i64_error_from_string_underflow() {
3400 let underflow_val = i128::from(i64::MIN) - 1;
3401 let json = format!(r#"{{"val": "{underflow_val}"}}"#);
3402 assert!(serde_json::from_str::<TestI64>(&json).is_err());
3403 }
3404
3405 #[test]
3406 fn deserialize_i64_error_from_json_float_number() {
3407 let json = r#"{"val": 123.45}"#;
3408 assert!(serde_json::from_str::<TestI64>(json).is_err());
3409 }
3410
3411 #[test]
3412 fn deserialize_i64_error_from_json_bool_true() {
3413 let json = r#"{"val": true}"#;
3414 assert!(serde_json::from_str::<TestI64>(json).is_err());
3415 }
3416
3417 #[test]
3418 fn deserialize_i64_error_from_json_array() {
3419 let json = r#"{"val": []}"#;
3420 assert!(serde_json::from_str::<TestI64>(json).is_err());
3421 }
3422
3423 #[test]
3424 fn deserialize_i64_error_from_json_object() {
3425 let json = r#"{"val": {}}"#;
3426 assert!(serde_json::from_str::<TestI64>(json).is_err());
3427 }
3428
3429 #[test]
3430 fn deserialize_i64_error_from_json_null() {
3431 let json = r#"{"val": null}"#;
3432 assert!(serde_json::from_str::<TestI64>(json).is_err());
3433 }
3434
3435 #[test]
3437 fn deserialize_i64_error_from_hex_string() {
3438 let json = r#"{"val": "0x1A"}"#; assert!(
3441 serde_json::from_str::<TestI64>(json).is_err(),
3442 "Hex string should fail parsing to i64"
3443 );
3444 }
3445
3446 #[test]
3447 fn deserialize_i64_error_from_octal_string() {
3448 let json = r#"{"val": "0o77"}"#; assert!(
3451 serde_json::from_str::<TestI64>(json).is_err(),
3452 "Octal string should fail parsing to i64"
3453 );
3454 }
3455
3456 #[test]
3457 fn deserialize_i64_error_from_scientific_notation_string() {
3458 let json = r#"{"val": "1e3"}"#; assert!(
3461 serde_json::from_str::<TestI64>(json).is_err(),
3462 "Scientific notation string should fail parsing to i64"
3463 );
3464 }
3465
3466 #[test]
3467 fn deserialize_i64_error_from_invalid_scientific_notation_string() {
3468 let json = r#"{"val": "1e"}"#;
3469 assert!(
3470 serde_json::from_str::<TestI64>(json).is_err(),
3471 "Invalid scientific notation string should fail"
3472 );
3473 }
3474
3475 #[test]
3476 fn deserialize_i64_error_from_string_with_underscores() {
3477 let json = r#"{"val": "1_000_000"}"#;
3478 assert!(
3480 serde_json::from_str::<TestI64>(json).is_err(),
3481 "String with underscores should fail parsing to i64"
3482 );
3483 }
3484
3485 #[test]
3486 fn deserialize_i64_from_string_with_leading_zeros() {
3487 let json = r#"{"val": "000123"}"#;
3488 let expected = TestI64 { val: 123 };
3489 assert_eq!(
3491 serde_json::from_str::<TestI64>(json).unwrap(),
3492 expected,
3493 "String with leading zeros should parse"
3494 );
3495 }
3496
3497 #[test]
3498 fn deserialize_i64_from_string_with_leading_zeros_negative() {
3499 let json = r#"{"val": "-000123"}"#;
3500 let expected = TestI64 { val: -123 };
3501 assert_eq!(
3502 serde_json::from_str::<TestI64>(json).unwrap(),
3503 expected,
3504 "Negative string with leading zeros should parse"
3505 );
3506 }
3507
3508 #[test]
3509 fn deserialize_i64_error_from_string_with_decimal_zeros() {
3510 let json = r#"{"val": "123.000"}"#;
3511 assert!(
3513 serde_json::from_str::<TestI64>(json).is_err(),
3514 "String with decimal part should fail parsing to i64"
3515 );
3516 }
3517
3518 #[test]
3519 fn deserialize_i64_error_from_string_with_internal_decimal() {
3520 let json = r#"{"val": "12.345"}"#;
3521 assert!(
3522 serde_json::from_str::<TestI64>(json).is_err(),
3523 "String with internal decimal point should fail"
3524 );
3525 }
3526
3527 #[test]
3528 fn deserialize_i64_error_from_localized_string_commas() {
3529 let json = r#"{"val": "1,234"}"#;
3530 assert!(
3532 serde_json::from_str::<TestI64>(json).is_err(),
3533 "Localized string with commas should fail parsing to i64"
3534 );
3535 }
3536
3537 #[test]
3539 fn deserialize_u64_from_json_reader() {
3540 let json = r#"{"val": "123"}"#;
3541 let expected = TestU64 { val: 123 };
3542 assert_eq!(
3543 serde_json::from_reader::<_, TestU64>(Cursor::new(json)).unwrap(),
3544 expected
3545 );
3546 }
3547
3548 #[test]
3549 fn deserialize_u64_from_json_number() {
3550 let json = r#"{"val": 123}"#;
3551 let expected = TestU64 { val: 123 };
3552 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3553 }
3554
3555 #[test]
3556 fn deserialize_u64_from_json_number_zero() {
3557 let json = r#"{"val": 0}"#;
3558 let expected = TestU64 { val: 0 };
3559 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3560 }
3561
3562 #[test]
3563 fn deserialize_u64_from_json_number_max() {
3564 let json = format!(r#"{{"val": {}}}"#, u64::MAX);
3565 let expected = TestU64 { val: u64::MAX };
3566 assert_eq!(serde_json::from_str::<TestU64>(&json).unwrap(), expected);
3567 }
3568
3569 #[test]
3570 fn deserialize_u64_from_json_string() {
3571 let json = r#"{"val": "789"}"#;
3572 let expected = TestU64 { val: 789 };
3573 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3574 }
3575
3576 #[test]
3577 fn deserialize_u64_from_json_string_zero() {
3578 let json = r#"{"val": "0"}"#;
3579 let expected = TestU64 { val: 0 };
3580 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3581 }
3582
3583 #[test]
3584 fn deserialize_u64_from_json_string_max() {
3585 let json = format!(r#"{{"val": "{}"}}"#, u64::MAX);
3586 let expected = TestU64 { val: u64::MAX };
3587 assert_eq!(serde_json::from_str::<TestU64>(&json).unwrap(), expected);
3588 }
3589
3590 #[test]
3591 fn deserialize_u64_from_json_string_with_plus_prefix() {
3592 let json = r#"{"val": "+123"}"#;
3593 let expected = TestU64 { val: 123 };
3594 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3595 }
3596
3597 #[test]
3598 fn deserialize_u64_from_json_string_with_plus_zero() {
3599 let json = r#"{"val": "+0"}"#;
3600 let expected = TestU64 { val: 0 };
3601 assert_eq!(serde_json::from_str::<TestU64>(json).unwrap(), expected);
3602 }
3603
3604 #[test]
3605 fn deserialize_u64_error_from_json_string_with_leading_whitespace() {
3606 let json = r#"{"val": " 123"}"#;
3607 assert!(serde_json::from_str::<TestU64>(json).is_err());
3608 }
3609
3610 #[test]
3611 fn deserialize_u64_error_from_json_string_with_trailing_whitespace() {
3612 let json = r#"{"val": "123 "}"#;
3613 assert!(serde_json::from_str::<TestU64>(json).is_err());
3614 }
3615
3616 #[test]
3617 fn deserialize_u64_error_from_json_string_with_invalid_plus_prefix() {
3618 let json = r#"{"val": "++123"}"#;
3619 assert!(serde_json::from_str::<TestU64>(json).is_err());
3620 }
3621
3622 #[test]
3623 fn deserialize_u64_error_from_string_negative() {
3624 let json = r#"{"val": "-123"}"#; assert!(serde_json::from_str::<TestU64>(json).is_err());
3626 }
3627
3628 #[test]
3629 fn deserialize_u64_error_from_json_number_negative() {
3630 let json = r#"{"val": -1}"#; assert!(serde_json::from_str::<TestU64>(json).is_err());
3632 }
3633
3634 #[test]
3635 fn deserialize_u64_error_from_string_not_a_number() {
3636 let json = r#"{"val": "abc"}"#;
3637 assert!(serde_json::from_str::<TestU64>(json).is_err());
3638 }
3639
3640 #[test]
3641 fn deserialize_u64_error_from_string_float() {
3642 let json = r#"{"val": "123.45"}"#;
3643 assert!(serde_json::from_str::<TestU64>(json).is_err());
3644 }
3645
3646 #[test]
3647 fn deserialize_u64_error_from_string_empty() {
3648 let json = r#"{"val": ""}"#;
3649 assert!(serde_json::from_str::<TestU64>(json).is_err());
3650 }
3651
3652 #[test]
3653 fn deserialize_u64_error_from_string_overflow() {
3654 let overflow_val = u128::from(u64::MAX) + 1;
3655 let json = format!(r#"{{"val": "{overflow_val}"}}"#);
3656 assert!(serde_json::from_str::<TestU64>(&json).is_err());
3657 }
3658
3659 #[test]
3660 fn deserialize_u64_error_from_json_float_number() {
3661 let json = r#"{"val": 123.45}"#;
3662 assert!(serde_json::from_str::<TestU64>(json).is_err());
3663 }
3664
3665 #[test]
3666 fn deserialize_u64_error_from_json_bool_true() {
3667 let json = r#"{"val": true}"#;
3668 assert!(serde_json::from_str::<TestU64>(json).is_err());
3669 }
3670
3671 #[test]
3672 fn deserialize_u64_error_from_json_array() {
3673 let json = r#"{"val": []}"#;
3674 assert!(serde_json::from_str::<TestU64>(json).is_err());
3675 }
3676
3677 #[test]
3678 fn deserialize_u64_error_from_json_object() {
3679 let json = r#"{"val": {}}"#;
3680 assert!(serde_json::from_str::<TestU64>(json).is_err());
3681 }
3682
3683 #[test]
3684 fn deserialize_u64_error_from_json_null() {
3685 let json = r#"{"val": null}"#;
3686 assert!(serde_json::from_str::<TestU64>(json).is_err());
3687 }
3688
3689 #[test]
3691 fn deserialize_u64_error_from_hex_string() {
3692 let json = r#"{"val": "0x1A"}"#; assert!(
3694 serde_json::from_str::<TestU64>(json).is_err(),
3695 "Hex string should fail parsing to u64"
3696 );
3697 }
3698
3699 #[test]
3700 fn deserialize_u64_error_from_octal_string() {
3701 let json = r#"{"val": "0o77"}"#; assert!(
3703 serde_json::from_str::<TestU64>(json).is_err(),
3704 "Octal string should fail parsing to u64"
3705 );
3706 }
3707
3708 #[test]
3709 fn deserialize_u64_error_from_scientific_notation_string() {
3710 let json = r#"{"val": "1e3"}"#;
3711 assert!(
3712 serde_json::from_str::<TestU64>(json).is_err(),
3713 "Scientific notation string should fail parsing to u64"
3714 );
3715 }
3716
3717 #[test]
3718 fn deserialize_u64_error_from_string_with_underscores() {
3719 let json = r#"{"val": "1_000_000"}"#;
3720 assert!(
3721 serde_json::from_str::<TestU64>(json).is_err(),
3722 "String with underscores should fail parsing to u64"
3723 );
3724 }
3725
3726 #[test]
3727 fn deserialize_u64_from_string_with_leading_zeros() {
3728 let json = r#"{"val": "000123"}"#;
3729 let expected = TestU64 { val: 123 };
3730 assert_eq!(
3731 serde_json::from_str::<TestU64>(json).unwrap(),
3732 expected,
3733 "String with leading zeros should parse to u64"
3734 );
3735 }
3736
3737 #[test]
3738 fn deserialize_u64_error_from_string_with_decimal_zeros() {
3739 let json = r#"{"val": "123.000"}"#;
3740 assert!(
3741 serde_json::from_str::<TestU64>(json).is_err(),
3742 "String with decimal part should fail parsing to u64"
3743 );
3744 }
3745
3746 #[test]
3747 fn deserialize_u64_error_from_localized_string_commas() {
3748 let json = r#"{"val": "1,234"}"#;
3749 assert!(
3750 serde_json::from_str::<TestU64>(json).is_err(),
3751 "Localized string with commas should fail parsing to u64"
3752 );
3753 }
3754
3755 #[test]
3757 fn serialize_i64_positive() {
3758 let data = TestI64 { val: 123 };
3759 let expected_json = r#"{"val":"123"}"#;
3760 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3761 }
3762
3763 #[test]
3764 fn serialize_i64_negative() {
3765 let data = TestI64 { val: -456 };
3766 let expected_json = r#"{"val":"-456"}"#;
3767 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3768 }
3769
3770 #[test]
3771 fn serialize_i64_zero() {
3772 let data = TestI64 { val: 0 };
3773 let expected_json = r#"{"val":"0"}"#;
3774 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3775 }
3776
3777 #[test]
3778 fn serialize_i64_max() {
3779 let data = TestI64 { val: i64::MAX };
3780 let expected_json = format!(r#"{{"val":"{}"}}"#, i64::MAX);
3781 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3782 }
3783
3784 #[test]
3785 fn serialize_i64_min() {
3786 let data = TestI64 { val: i64::MIN };
3787 let expected_json = format!(r#"{{"val":"{}"}}"#, i64::MIN);
3788 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3789 }
3790
3791 #[test]
3793 fn serialize_u64_positive() {
3794 let data = TestU64 { val: 789 };
3795 let expected_json = r#"{"val":"789"}"#;
3796 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3797 }
3798
3799 #[test]
3800 fn serialize_u64_zero() {
3801 let data = TestU64 { val: 0 };
3802 let expected_json = r#"{"val":"0"}"#;
3803 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3804 }
3805
3806 #[test]
3807 fn serialize_u64_max() {
3808 let data = TestU64 { val: u64::MAX };
3809 let expected_json = format!(r#"{{"val":"{}"}}"#, u64::MAX);
3810 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3811 }
3812
3813 #[test]
3815 fn deserialize_option_i64_some_from_json_number() {
3816 let json = r#"{"val": 123}"#;
3817 let expected = TestOptionI64 { val: Some(123) };
3818 assert_eq!(
3819 serde_json::from_str::<TestOptionI64>(json).unwrap(),
3820 expected
3821 );
3822 }
3823
3824 #[test]
3825 fn deserialize_option_i64_some_from_json_string() {
3826 let json = r#"{"val": "456"}"#;
3827 let expected = TestOptionI64 { val: Some(456) };
3828 assert_eq!(
3829 serde_json::from_str::<TestOptionI64>(json).unwrap(),
3830 expected
3831 );
3832 }
3833
3834 #[test]
3835 fn deserialize_option_i64_none_from_json_null() {
3836 let json = r#"{"val": null}"#;
3837 let expected = TestOptionI64 { val: None };
3838 assert_eq!(
3839 serde_json::from_str::<TestOptionI64>(json).unwrap(),
3840 expected
3841 );
3842 }
3843
3844 #[test]
3845 fn deserialize_option_i64_error_from_invalid_string() {
3846 let json = r#"{"val": "abc"}"#;
3847 assert!(serde_json::from_str::<TestOptionI64>(json).is_err());
3848 }
3849
3850 #[test]
3851 fn deserialize_option_i64_error_from_invalid_type() {
3852 let json = r#"{"val": true}"#;
3853 assert!(serde_json::from_str::<TestOptionI64>(json).is_err());
3854 }
3855
3856 #[test]
3857 fn serialize_option_i64_some() {
3858 let data = TestOptionI64 { val: Some(123) };
3859 let expected_json = r#"{"val":"123"}"#;
3860 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3861 }
3862
3863 #[test]
3864 fn serialize_option_i64_none() {
3865 let data = TestOptionI64 { val: None };
3866 let expected_json = r#"{"val":null}"#;
3867 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3868 }
3869
3870 #[test]
3872 fn deserialize_option_u64_some_from_json_number() {
3873 let json = r#"{"val": 123}"#;
3874 let expected = TestOptionU64 { val: Some(123) };
3875 assert_eq!(
3876 serde_json::from_str::<TestOptionU64>(json).unwrap(),
3877 expected
3878 );
3879 }
3880
3881 #[test]
3882 fn deserialize_option_u64_some_from_json_string() {
3883 let json = r#"{"val": "456"}"#;
3884 let expected = TestOptionU64 { val: Some(456) };
3885 assert_eq!(
3886 serde_json::from_str::<TestOptionU64>(json).unwrap(),
3887 expected
3888 );
3889 }
3890
3891 #[test]
3892 fn deserialize_option_u64_none_from_json_null() {
3893 let json = r#"{"val": null}"#;
3894 let expected = TestOptionU64 { val: None };
3895 assert_eq!(
3896 serde_json::from_str::<TestOptionU64>(json).unwrap(),
3897 expected
3898 );
3899 }
3900
3901 #[test]
3902 fn deserialize_option_u64_error_from_invalid_string() {
3903 let json = r#"{"val": "abc"}"#;
3904 assert!(serde_json::from_str::<TestOptionU64>(json).is_err());
3905 }
3906
3907 #[test]
3908 fn deserialize_option_u64_error_from_negative_string() {
3909 let json = r#"{"val": "-1"}"#; assert!(serde_json::from_str::<TestOptionU64>(json).is_err());
3911 }
3912
3913 #[test]
3914 fn serialize_option_u64_some() {
3915 let data = TestOptionU64 { val: Some(123) };
3916 let expected_json = r#"{"val":"123"}"#;
3917 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3918 }
3919
3920 #[test]
3921 fn serialize_option_u64_none() {
3922 let data = TestOptionU64 { val: None };
3923 let expected_json = r#"{"val":null}"#;
3924 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3925 }
3926
3927 #[test]
3929 fn deserialize_vec_i64_empty() {
3930 let json = r#"{"val": []}"#;
3931 let expected = TestVecI64 { val: vec![] };
3932 assert_eq!(serde_json::from_str::<TestVecI64>(json).unwrap(), expected);
3933 }
3934
3935 #[test]
3936 fn deserialize_vec_i64_from_numbers_and_strings() {
3937 let json = r#"{"val": [1, "2", -3, "-4"]}"#;
3938 let expected = TestVecI64 {
3939 val: vec![1, 2, -3, -4],
3940 };
3941 assert_eq!(serde_json::from_str::<TestVecI64>(json).unwrap(), expected);
3942 }
3943
3944 #[test]
3945 fn deserialize_vec_i64_error_if_item_is_invalid_string() {
3946 let json = r#"{"val": [1, "abc", 3]}"#;
3947 let err = serde_json::from_str::<TestVecI64>(json).unwrap_err();
3948 assert!(err.to_string().contains("invalid digit found in string")); }
3951
3952 #[test]
3953 fn deserialize_vec_i64_error_if_item_is_invalid_type() {
3954 let json = r#"{"val": [1, true, 3]}"#;
3955 assert!(serde_json::from_str::<TestVecI64>(json).is_err());
3956 }
3957
3958 #[test]
3959 fn serialize_vec_i64_empty() {
3960 let data = TestVecI64 { val: vec![] };
3961 let expected_json = r#"{"val":[]}"#;
3962 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3963 }
3964
3965 #[test]
3966 fn serialize_vec_i64_with_values() {
3967 let data = TestVecI64 {
3968 val: vec![1, -2, 0],
3969 };
3970 let expected_json = r#"{"val":["1","-2","0"]}"#;
3971 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
3972 }
3973
3974 #[test]
3976 fn deserialize_vec_u64_empty() {
3977 let json = r#"{"val": []}"#;
3978 let expected = TestVecU64 { val: vec![] };
3979 assert_eq!(serde_json::from_str::<TestVecU64>(json).unwrap(), expected);
3980 }
3981
3982 #[test]
3983 fn deserialize_vec_u64_from_numbers_and_strings() {
3984 let json = r#"{"val": [1, "2", 3, "4"]}"#;
3985 let expected = TestVecU64 {
3986 val: vec![1, 2, 3, 4],
3987 };
3988 assert_eq!(serde_json::from_str::<TestVecU64>(json).unwrap(), expected);
3989 }
3990
3991 #[test]
3992 fn deserialize_vec_u64_error_if_item_is_invalid_string() {
3993 let json = r#"{"val": [1, "abc", 3]}"#;
3994 let err = serde_json::from_str::<TestVecU64>(json).unwrap_err();
3995 assert!(err.to_string().contains("invalid digit found in string"));
3996 }
3997
3998 #[test]
3999 fn deserialize_vec_u64_error_if_item_is_negative_string() {
4000 let json = r#"{"val": [1, "-2", 3]}"#;
4001 let err = serde_json::from_str::<TestVecU64>(json).unwrap_err();
4002 assert!(err.to_string().contains("invalid digit found in string")); }
4004
4005 #[test]
4006 fn deserialize_vec_u64_error_if_item_is_negative_number() {
4007 let json = r#"{"val": [1, -2, 3]}"#;
4008 assert!(serde_json::from_str::<TestVecU64>(json).is_err());
4009 }
4010
4011 #[test]
4012 fn serialize_vec_u64_empty() {
4013 let data = TestVecU64 { val: vec![] };
4014 let expected_json = r#"{"val":[]}"#;
4015 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
4016 }
4017
4018 #[test]
4019 fn serialize_vec_u64_with_values() {
4020 let data = TestVecU64 { val: vec![1, 2, 0] };
4021 let expected_json = r#"{"val":["1","2","0"]}"#;
4022 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
4023 }
4024
4025 #[test]
4027 fn deserialize_enum_variant_a_with_number() {
4028 let json = r#"{"variantA": {"numVal": 123, "otherData": "test"}}"#;
4029 let expected = TestEnum::VariantA {
4030 num_val: 123,
4031 other_data: "test".to_string(),
4032 };
4033 assert_eq!(serde_json::from_str::<TestEnum>(json).unwrap(), expected);
4034 }
4035
4036 #[test]
4037 fn deserialize_enum_variant_a_with_string_number() {
4038 let json = r#"{"variantA": {"numVal": "-45", "otherData": "data"}}"#;
4039 let expected = TestEnum::VariantA {
4040 num_val: -45,
4041 other_data: "data".to_string(),
4042 };
4043 assert_eq!(serde_json::from_str::<TestEnum>(json).unwrap(), expected);
4044 }
4045
4046 #[test]
4047 fn deserialize_enum_variant_b_with_number() {
4048 let json = r#"{"variantB": {"count": 7890}}"#;
4049 let expected = TestEnum::VariantB { count: 7890 };
4050 assert_eq!(serde_json::from_str::<TestEnum>(json).unwrap(), expected);
4051 }
4052
4053 #[test]
4054 fn deserialize_enum_variant_b_with_string_number() {
4055 let json = r#"{"variantB": {"count": "1234567890"}}"#;
4056 let expected = TestEnum::VariantB { count: 1234567890 };
4057 assert_eq!(serde_json::from_str::<TestEnum>(json).unwrap(), expected);
4058 }
4059
4060 #[test]
4061 fn deserialize_enum_variant_a_error_invalid_num_string() {
4062 let json = r#"{"variantA": {"numVal": "abc", "otherData": "test"}}"#;
4063 assert!(serde_json::from_str::<TestEnum>(json).is_err());
4064 }
4065
4066 #[test]
4067 fn serialize_enum_variant_a() {
4068 let data = TestEnum::VariantA {
4069 num_val: 123,
4070 other_data: "test".to_string(),
4071 };
4072 let expected_json = r#"{"variantA":{"numVal":"123","otherData":"test"}}"#;
4074 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
4075 }
4076
4077 #[test]
4078 fn serialize_enum_variant_b() {
4079 let data = TestEnum::VariantB { count: 7890 };
4080 let expected_json = r#"{"variantB":{"count":"7890"}}"#;
4081 assert_eq!(serde_json::to_string(&data).unwrap(), expected_json);
4082 }
4083}
4084
4085#[cfg_eval::cfg_eval]
4092#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
4093#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4094#[cfg_attr(
4095 all(feature = "serde", feature = "alloc"),
4096 serde_with::serde_as,
4097 derive(serde::Serialize, serde::Deserialize),
4098 serde(rename_all = "snake_case")
4099)]
4100#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4101#[derive(Debug)]
4102pub struct Value(pub BytesM);
4103
4104impl From<Value> for BytesM {
4105 #[must_use]
4106 fn from(x: Value) -> Self {
4107 x.0
4108 }
4109}
4110
4111impl From<BytesM> for Value {
4112 #[must_use]
4113 fn from(x: BytesM) -> Self {
4114 Value(x)
4115 }
4116}
4117
4118impl AsRef<BytesM> for Value {
4119 #[must_use]
4120 fn as_ref(&self) -> &BytesM {
4121 &self.0
4122 }
4123}
4124
4125impl ReadXdr for Value {
4126 #[cfg(feature = "std")]
4127 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4128 r.with_limited_depth(|r| {
4129 let i = BytesM::read_xdr(r)?;
4130 let v = Value(i);
4131 Ok(v)
4132 })
4133 }
4134}
4135
4136impl WriteXdr for Value {
4137 #[cfg(feature = "std")]
4138 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4139 w.with_limited_depth(|w| self.0.write_xdr(w))
4140 }
4141}
4142
4143impl Deref for Value {
4144 type Target = BytesM;
4145 fn deref(&self) -> &Self::Target {
4146 &self.0
4147 }
4148}
4149
4150impl From<Value> for Vec<u8> {
4151 #[must_use]
4152 fn from(x: Value) -> Self {
4153 x.0 .0
4154 }
4155}
4156
4157impl TryFrom<Vec<u8>> for Value {
4158 type Error = Error;
4159 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
4160 Ok(Value(x.try_into()?))
4161 }
4162}
4163
4164#[cfg(feature = "alloc")]
4165impl TryFrom<&Vec<u8>> for Value {
4166 type Error = Error;
4167 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
4168 Ok(Value(x.try_into()?))
4169 }
4170}
4171
4172impl AsRef<Vec<u8>> for Value {
4173 #[must_use]
4174 fn as_ref(&self) -> &Vec<u8> {
4175 &self.0 .0
4176 }
4177}
4178
4179impl AsRef<[u8]> for Value {
4180 #[cfg(feature = "alloc")]
4181 #[must_use]
4182 fn as_ref(&self) -> &[u8] {
4183 &self.0 .0
4184 }
4185 #[cfg(not(feature = "alloc"))]
4186 #[must_use]
4187 fn as_ref(&self) -> &[u8] {
4188 self.0 .0
4189 }
4190}
4191
4192#[cfg_attr(feature = "alloc", derive(Default))]
4203#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4204#[cfg_eval::cfg_eval]
4205#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4206#[cfg_attr(
4207 all(feature = "serde", feature = "alloc"),
4208 serde_with::serde_as,
4209 derive(serde::Serialize, serde::Deserialize),
4210 serde(rename_all = "snake_case")
4211)]
4212#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4213pub struct ScpBallot {
4214 pub counter: u32,
4215 pub value: Value,
4216}
4217
4218impl ReadXdr for ScpBallot {
4219 #[cfg(feature = "std")]
4220 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4221 r.with_limited_depth(|r| {
4222 Ok(Self {
4223 counter: u32::read_xdr(r)?,
4224 value: Value::read_xdr(r)?,
4225 })
4226 })
4227 }
4228}
4229
4230impl WriteXdr for ScpBallot {
4231 #[cfg(feature = "std")]
4232 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4233 w.with_limited_depth(|w| {
4234 self.counter.write_xdr(w)?;
4235 self.value.write_xdr(w)?;
4236 Ok(())
4237 })
4238 }
4239}
4240
4241#[cfg_attr(feature = "alloc", derive(Default))]
4255#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4256#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4257#[cfg_attr(
4258 all(feature = "serde", feature = "alloc"),
4259 derive(serde::Serialize, serde::Deserialize),
4260 serde(rename_all = "snake_case")
4261)]
4262#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4263#[repr(i32)]
4264pub enum ScpStatementType {
4265 #[cfg_attr(feature = "alloc", default)]
4266 Prepare = 0,
4267 Confirm = 1,
4268 Externalize = 2,
4269 Nominate = 3,
4270}
4271
4272impl ScpStatementType {
4273 pub const VARIANTS: [ScpStatementType; 4] = [
4274 ScpStatementType::Prepare,
4275 ScpStatementType::Confirm,
4276 ScpStatementType::Externalize,
4277 ScpStatementType::Nominate,
4278 ];
4279 pub const VARIANTS_STR: [&'static str; 4] = ["Prepare", "Confirm", "Externalize", "Nominate"];
4280
4281 #[must_use]
4282 pub const fn name(&self) -> &'static str {
4283 match self {
4284 Self::Prepare => "Prepare",
4285 Self::Confirm => "Confirm",
4286 Self::Externalize => "Externalize",
4287 Self::Nominate => "Nominate",
4288 }
4289 }
4290
4291 #[must_use]
4292 pub const fn variants() -> [ScpStatementType; 4] {
4293 Self::VARIANTS
4294 }
4295}
4296
4297impl Name for ScpStatementType {
4298 #[must_use]
4299 fn name(&self) -> &'static str {
4300 Self::name(self)
4301 }
4302}
4303
4304impl Variants<ScpStatementType> for ScpStatementType {
4305 fn variants() -> slice::Iter<'static, ScpStatementType> {
4306 Self::VARIANTS.iter()
4307 }
4308}
4309
4310impl Enum for ScpStatementType {}
4311
4312impl fmt::Display for ScpStatementType {
4313 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
4314 f.write_str(self.name())
4315 }
4316}
4317
4318impl TryFrom<i32> for ScpStatementType {
4319 type Error = Error;
4320
4321 fn try_from(i: i32) -> Result<Self, Error> {
4322 let e = match i {
4323 0 => ScpStatementType::Prepare,
4324 1 => ScpStatementType::Confirm,
4325 2 => ScpStatementType::Externalize,
4326 3 => ScpStatementType::Nominate,
4327 #[allow(unreachable_patterns)]
4328 _ => return Err(Error::Invalid),
4329 };
4330 Ok(e)
4331 }
4332}
4333
4334impl From<ScpStatementType> for i32 {
4335 #[must_use]
4336 fn from(e: ScpStatementType) -> Self {
4337 e as Self
4338 }
4339}
4340
4341impl ReadXdr for ScpStatementType {
4342 #[cfg(feature = "std")]
4343 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4344 r.with_limited_depth(|r| {
4345 let e = i32::read_xdr(r)?;
4346 let v: Self = e.try_into()?;
4347 Ok(v)
4348 })
4349 }
4350}
4351
4352impl WriteXdr for ScpStatementType {
4353 #[cfg(feature = "std")]
4354 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4355 w.with_limited_depth(|w| {
4356 let i: i32 = (*self).into();
4357 i.write_xdr(w)
4358 })
4359 }
4360}
4361
4362#[cfg_attr(feature = "alloc", derive(Default))]
4374#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4375#[cfg_eval::cfg_eval]
4376#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4377#[cfg_attr(
4378 all(feature = "serde", feature = "alloc"),
4379 serde_with::serde_as,
4380 derive(serde::Serialize, serde::Deserialize),
4381 serde(rename_all = "snake_case")
4382)]
4383#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4384pub struct ScpNomination {
4385 pub quorum_set_hash: Hash,
4386 pub votes: VecM<Value>,
4387 pub accepted: VecM<Value>,
4388}
4389
4390impl ReadXdr for ScpNomination {
4391 #[cfg(feature = "std")]
4392 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4393 r.with_limited_depth(|r| {
4394 Ok(Self {
4395 quorum_set_hash: Hash::read_xdr(r)?,
4396 votes: VecM::<Value>::read_xdr(r)?,
4397 accepted: VecM::<Value>::read_xdr(r)?,
4398 })
4399 })
4400 }
4401}
4402
4403impl WriteXdr for ScpNomination {
4404 #[cfg(feature = "std")]
4405 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4406 w.with_limited_depth(|w| {
4407 self.quorum_set_hash.write_xdr(w)?;
4408 self.votes.write_xdr(w)?;
4409 self.accepted.write_xdr(w)?;
4410 Ok(())
4411 })
4412 }
4413}
4414
4415#[cfg_attr(feature = "alloc", derive(Default))]
4430#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4431#[cfg_eval::cfg_eval]
4432#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4433#[cfg_attr(
4434 all(feature = "serde", feature = "alloc"),
4435 serde_with::serde_as,
4436 derive(serde::Serialize, serde::Deserialize),
4437 serde(rename_all = "snake_case")
4438)]
4439#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4440pub struct ScpStatementPrepare {
4441 pub quorum_set_hash: Hash,
4442 pub ballot: ScpBallot,
4443 pub prepared: Option<ScpBallot>,
4444 pub prepared_prime: Option<ScpBallot>,
4445 pub n_c: u32,
4446 pub n_h: u32,
4447}
4448
4449impl ReadXdr for ScpStatementPrepare {
4450 #[cfg(feature = "std")]
4451 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4452 r.with_limited_depth(|r| {
4453 Ok(Self {
4454 quorum_set_hash: Hash::read_xdr(r)?,
4455 ballot: ScpBallot::read_xdr(r)?,
4456 prepared: Option::<ScpBallot>::read_xdr(r)?,
4457 prepared_prime: Option::<ScpBallot>::read_xdr(r)?,
4458 n_c: u32::read_xdr(r)?,
4459 n_h: u32::read_xdr(r)?,
4460 })
4461 })
4462 }
4463}
4464
4465impl WriteXdr for ScpStatementPrepare {
4466 #[cfg(feature = "std")]
4467 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4468 w.with_limited_depth(|w| {
4469 self.quorum_set_hash.write_xdr(w)?;
4470 self.ballot.write_xdr(w)?;
4471 self.prepared.write_xdr(w)?;
4472 self.prepared_prime.write_xdr(w)?;
4473 self.n_c.write_xdr(w)?;
4474 self.n_h.write_xdr(w)?;
4475 Ok(())
4476 })
4477 }
4478}
4479
4480#[cfg_attr(feature = "alloc", derive(Default))]
4494#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4495#[cfg_eval::cfg_eval]
4496#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4497#[cfg_attr(
4498 all(feature = "serde", feature = "alloc"),
4499 serde_with::serde_as,
4500 derive(serde::Serialize, serde::Deserialize),
4501 serde(rename_all = "snake_case")
4502)]
4503#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4504pub struct ScpStatementConfirm {
4505 pub ballot: ScpBallot,
4506 pub n_prepared: u32,
4507 pub n_commit: u32,
4508 pub n_h: u32,
4509 pub quorum_set_hash: Hash,
4510}
4511
4512impl ReadXdr for ScpStatementConfirm {
4513 #[cfg(feature = "std")]
4514 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4515 r.with_limited_depth(|r| {
4516 Ok(Self {
4517 ballot: ScpBallot::read_xdr(r)?,
4518 n_prepared: u32::read_xdr(r)?,
4519 n_commit: u32::read_xdr(r)?,
4520 n_h: u32::read_xdr(r)?,
4521 quorum_set_hash: Hash::read_xdr(r)?,
4522 })
4523 })
4524 }
4525}
4526
4527impl WriteXdr for ScpStatementConfirm {
4528 #[cfg(feature = "std")]
4529 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4530 w.with_limited_depth(|w| {
4531 self.ballot.write_xdr(w)?;
4532 self.n_prepared.write_xdr(w)?;
4533 self.n_commit.write_xdr(w)?;
4534 self.n_h.write_xdr(w)?;
4535 self.quorum_set_hash.write_xdr(w)?;
4536 Ok(())
4537 })
4538 }
4539}
4540
4541#[cfg_attr(feature = "alloc", derive(Default))]
4553#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4554#[cfg_eval::cfg_eval]
4555#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4556#[cfg_attr(
4557 all(feature = "serde", feature = "alloc"),
4558 serde_with::serde_as,
4559 derive(serde::Serialize, serde::Deserialize),
4560 serde(rename_all = "snake_case")
4561)]
4562#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4563pub struct ScpStatementExternalize {
4564 pub commit: ScpBallot,
4565 pub n_h: u32,
4566 pub commit_quorum_set_hash: Hash,
4567}
4568
4569impl ReadXdr for ScpStatementExternalize {
4570 #[cfg(feature = "std")]
4571 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4572 r.with_limited_depth(|r| {
4573 Ok(Self {
4574 commit: ScpBallot::read_xdr(r)?,
4575 n_h: u32::read_xdr(r)?,
4576 commit_quorum_set_hash: Hash::read_xdr(r)?,
4577 })
4578 })
4579 }
4580}
4581
4582impl WriteXdr for ScpStatementExternalize {
4583 #[cfg(feature = "std")]
4584 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4585 w.with_limited_depth(|w| {
4586 self.commit.write_xdr(w)?;
4587 self.n_h.write_xdr(w)?;
4588 self.commit_quorum_set_hash.write_xdr(w)?;
4589 Ok(())
4590 })
4591 }
4592}
4593
4594#[cfg_eval::cfg_eval]
4632#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4633#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4634#[cfg_attr(
4635 all(feature = "serde", feature = "alloc"),
4636 serde_with::serde_as,
4637 derive(serde::Serialize, serde::Deserialize),
4638 serde(rename_all = "snake_case")
4639)]
4640#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4641#[allow(clippy::large_enum_variant)]
4642pub enum ScpStatementPledges {
4643 Prepare(ScpStatementPrepare),
4644 Confirm(ScpStatementConfirm),
4645 Externalize(ScpStatementExternalize),
4646 Nominate(ScpNomination),
4647}
4648
4649#[cfg(feature = "alloc")]
4650impl Default for ScpStatementPledges {
4651 fn default() -> Self {
4652 Self::Prepare(ScpStatementPrepare::default())
4653 }
4654}
4655
4656impl ScpStatementPledges {
4657 pub const VARIANTS: [ScpStatementType; 4] = [
4658 ScpStatementType::Prepare,
4659 ScpStatementType::Confirm,
4660 ScpStatementType::Externalize,
4661 ScpStatementType::Nominate,
4662 ];
4663 pub const VARIANTS_STR: [&'static str; 4] = ["Prepare", "Confirm", "Externalize", "Nominate"];
4664
4665 #[must_use]
4666 pub const fn name(&self) -> &'static str {
4667 match self {
4668 Self::Prepare(_) => "Prepare",
4669 Self::Confirm(_) => "Confirm",
4670 Self::Externalize(_) => "Externalize",
4671 Self::Nominate(_) => "Nominate",
4672 }
4673 }
4674
4675 #[must_use]
4676 pub const fn discriminant(&self) -> ScpStatementType {
4677 #[allow(clippy::match_same_arms)]
4678 match self {
4679 Self::Prepare(_) => ScpStatementType::Prepare,
4680 Self::Confirm(_) => ScpStatementType::Confirm,
4681 Self::Externalize(_) => ScpStatementType::Externalize,
4682 Self::Nominate(_) => ScpStatementType::Nominate,
4683 }
4684 }
4685
4686 #[must_use]
4687 pub const fn variants() -> [ScpStatementType; 4] {
4688 Self::VARIANTS
4689 }
4690}
4691
4692impl Name for ScpStatementPledges {
4693 #[must_use]
4694 fn name(&self) -> &'static str {
4695 Self::name(self)
4696 }
4697}
4698
4699impl Discriminant<ScpStatementType> for ScpStatementPledges {
4700 #[must_use]
4701 fn discriminant(&self) -> ScpStatementType {
4702 Self::discriminant(self)
4703 }
4704}
4705
4706impl Variants<ScpStatementType> for ScpStatementPledges {
4707 fn variants() -> slice::Iter<'static, ScpStatementType> {
4708 Self::VARIANTS.iter()
4709 }
4710}
4711
4712impl Union<ScpStatementType> for ScpStatementPledges {}
4713
4714impl ReadXdr for ScpStatementPledges {
4715 #[cfg(feature = "std")]
4716 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4717 r.with_limited_depth(|r| {
4718 let dv: ScpStatementType = <ScpStatementType as ReadXdr>::read_xdr(r)?;
4719 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
4720 let v = match dv {
4721 ScpStatementType::Prepare => Self::Prepare(ScpStatementPrepare::read_xdr(r)?),
4722 ScpStatementType::Confirm => Self::Confirm(ScpStatementConfirm::read_xdr(r)?),
4723 ScpStatementType::Externalize => {
4724 Self::Externalize(ScpStatementExternalize::read_xdr(r)?)
4725 }
4726 ScpStatementType::Nominate => Self::Nominate(ScpNomination::read_xdr(r)?),
4727 #[allow(unreachable_patterns)]
4728 _ => return Err(Error::Invalid),
4729 };
4730 Ok(v)
4731 })
4732 }
4733}
4734
4735impl WriteXdr for ScpStatementPledges {
4736 #[cfg(feature = "std")]
4737 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4738 w.with_limited_depth(|w| {
4739 self.discriminant().write_xdr(w)?;
4740 #[allow(clippy::match_same_arms)]
4741 match self {
4742 Self::Prepare(v) => v.write_xdr(w)?,
4743 Self::Confirm(v) => v.write_xdr(w)?,
4744 Self::Externalize(v) => v.write_xdr(w)?,
4745 Self::Nominate(v) => v.write_xdr(w)?,
4746 };
4747 Ok(())
4748 })
4749 }
4750}
4751
4752#[cfg_attr(feature = "alloc", derive(Default))]
4796#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4797#[cfg_eval::cfg_eval]
4798#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4799#[cfg_attr(
4800 all(feature = "serde", feature = "alloc"),
4801 serde_with::serde_as,
4802 derive(serde::Serialize, serde::Deserialize),
4803 serde(rename_all = "snake_case")
4804)]
4805#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4806pub struct ScpStatement {
4807 pub node_id: NodeId,
4808 #[cfg_attr(
4809 all(feature = "serde", feature = "alloc"),
4810 serde_as(as = "NumberOrString")
4811 )]
4812 pub slot_index: u64,
4813 pub pledges: ScpStatementPledges,
4814}
4815
4816impl ReadXdr for ScpStatement {
4817 #[cfg(feature = "std")]
4818 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4819 r.with_limited_depth(|r| {
4820 Ok(Self {
4821 node_id: NodeId::read_xdr(r)?,
4822 slot_index: u64::read_xdr(r)?,
4823 pledges: ScpStatementPledges::read_xdr(r)?,
4824 })
4825 })
4826 }
4827}
4828
4829impl WriteXdr for ScpStatement {
4830 #[cfg(feature = "std")]
4831 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4832 w.with_limited_depth(|w| {
4833 self.node_id.write_xdr(w)?;
4834 self.slot_index.write_xdr(w)?;
4835 self.pledges.write_xdr(w)?;
4836 Ok(())
4837 })
4838 }
4839}
4840
4841#[cfg_attr(feature = "alloc", derive(Default))]
4852#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4853#[cfg_eval::cfg_eval]
4854#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4855#[cfg_attr(
4856 all(feature = "serde", feature = "alloc"),
4857 serde_with::serde_as,
4858 derive(serde::Serialize, serde::Deserialize),
4859 serde(rename_all = "snake_case")
4860)]
4861#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4862pub struct ScpEnvelope {
4863 pub statement: ScpStatement,
4864 pub signature: Signature,
4865}
4866
4867impl ReadXdr for ScpEnvelope {
4868 #[cfg(feature = "std")]
4869 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4870 r.with_limited_depth(|r| {
4871 Ok(Self {
4872 statement: ScpStatement::read_xdr(r)?,
4873 signature: Signature::read_xdr(r)?,
4874 })
4875 })
4876 }
4877}
4878
4879impl WriteXdr for ScpEnvelope {
4880 #[cfg(feature = "std")]
4881 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4882 w.with_limited_depth(|w| {
4883 self.statement.write_xdr(w)?;
4884 self.signature.write_xdr(w)?;
4885 Ok(())
4886 })
4887 }
4888}
4889
4890#[cfg_attr(feature = "alloc", derive(Default))]
4902#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4903#[cfg_eval::cfg_eval]
4904#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4905#[cfg_attr(
4906 all(feature = "serde", feature = "alloc"),
4907 serde_with::serde_as,
4908 derive(serde::Serialize, serde::Deserialize),
4909 serde(rename_all = "snake_case")
4910)]
4911#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4912pub struct ScpQuorumSet {
4913 pub threshold: u32,
4914 pub validators: VecM<NodeId>,
4915 pub inner_sets: VecM<ScpQuorumSet>,
4916}
4917
4918impl ReadXdr for ScpQuorumSet {
4919 #[cfg(feature = "std")]
4920 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4921 r.with_limited_depth(|r| {
4922 Ok(Self {
4923 threshold: u32::read_xdr(r)?,
4924 validators: VecM::<NodeId>::read_xdr(r)?,
4925 inner_sets: VecM::<ScpQuorumSet>::read_xdr(r)?,
4926 })
4927 })
4928 }
4929}
4930
4931impl WriteXdr for ScpQuorumSet {
4932 #[cfg(feature = "std")]
4933 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4934 w.with_limited_depth(|w| {
4935 self.threshold.write_xdr(w)?;
4936 self.validators.write_xdr(w)?;
4937 self.inner_sets.write_xdr(w)?;
4938 Ok(())
4939 })
4940 }
4941}
4942
4943#[cfg_attr(feature = "alloc", derive(Default))]
4954#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
4955#[cfg_eval::cfg_eval]
4956#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
4957#[cfg_attr(
4958 all(feature = "serde", feature = "alloc"),
4959 serde_with::serde_as,
4960 derive(serde::Serialize, serde::Deserialize),
4961 serde(rename_all = "snake_case")
4962)]
4963#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
4964pub struct ConfigSettingContractExecutionLanesV0 {
4965 pub ledger_max_tx_count: u32,
4966}
4967
4968impl ReadXdr for ConfigSettingContractExecutionLanesV0 {
4969 #[cfg(feature = "std")]
4970 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
4971 r.with_limited_depth(|r| {
4972 Ok(Self {
4973 ledger_max_tx_count: u32::read_xdr(r)?,
4974 })
4975 })
4976 }
4977}
4978
4979impl WriteXdr for ConfigSettingContractExecutionLanesV0 {
4980 #[cfg(feature = "std")]
4981 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
4982 w.with_limited_depth(|w| {
4983 self.ledger_max_tx_count.write_xdr(w)?;
4984 Ok(())
4985 })
4986 }
4987}
4988
4989#[cfg_attr(feature = "alloc", derive(Default))]
5008#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5009#[cfg_eval::cfg_eval]
5010#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5011#[cfg_attr(
5012 all(feature = "serde", feature = "alloc"),
5013 serde_with::serde_as,
5014 derive(serde::Serialize, serde::Deserialize),
5015 serde(rename_all = "snake_case")
5016)]
5017#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5018pub struct ConfigSettingContractComputeV0 {
5019 #[cfg_attr(
5020 all(feature = "serde", feature = "alloc"),
5021 serde_as(as = "NumberOrString")
5022 )]
5023 pub ledger_max_instructions: i64,
5024 #[cfg_attr(
5025 all(feature = "serde", feature = "alloc"),
5026 serde_as(as = "NumberOrString")
5027 )]
5028 pub tx_max_instructions: i64,
5029 #[cfg_attr(
5030 all(feature = "serde", feature = "alloc"),
5031 serde_as(as = "NumberOrString")
5032 )]
5033 pub fee_rate_per_instructions_increment: i64,
5034 pub tx_memory_limit: u32,
5035}
5036
5037impl ReadXdr for ConfigSettingContractComputeV0 {
5038 #[cfg(feature = "std")]
5039 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5040 r.with_limited_depth(|r| {
5041 Ok(Self {
5042 ledger_max_instructions: i64::read_xdr(r)?,
5043 tx_max_instructions: i64::read_xdr(r)?,
5044 fee_rate_per_instructions_increment: i64::read_xdr(r)?,
5045 tx_memory_limit: u32::read_xdr(r)?,
5046 })
5047 })
5048 }
5049}
5050
5051impl WriteXdr for ConfigSettingContractComputeV0 {
5052 #[cfg(feature = "std")]
5053 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5054 w.with_limited_depth(|w| {
5055 self.ledger_max_instructions.write_xdr(w)?;
5056 self.tx_max_instructions.write_xdr(w)?;
5057 self.fee_rate_per_instructions_increment.write_xdr(w)?;
5058 self.tx_memory_limit.write_xdr(w)?;
5059 Ok(())
5060 })
5061 }
5062}
5063
5064#[cfg_attr(feature = "alloc", derive(Default))]
5078#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5079#[cfg_eval::cfg_eval]
5080#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5081#[cfg_attr(
5082 all(feature = "serde", feature = "alloc"),
5083 serde_with::serde_as,
5084 derive(serde::Serialize, serde::Deserialize),
5085 serde(rename_all = "snake_case")
5086)]
5087#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5088pub struct ConfigSettingContractParallelComputeV0 {
5089 pub ledger_max_dependent_tx_clusters: u32,
5090}
5091
5092impl ReadXdr for ConfigSettingContractParallelComputeV0 {
5093 #[cfg(feature = "std")]
5094 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5095 r.with_limited_depth(|r| {
5096 Ok(Self {
5097 ledger_max_dependent_tx_clusters: u32::read_xdr(r)?,
5098 })
5099 })
5100 }
5101}
5102
5103impl WriteXdr for ConfigSettingContractParallelComputeV0 {
5104 #[cfg(feature = "std")]
5105 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5106 w.with_limited_depth(|w| {
5107 self.ledger_max_dependent_tx_clusters.write_xdr(w)?;
5108 Ok(())
5109 })
5110 }
5111}
5112
5113#[cfg_attr(feature = "alloc", derive(Default))]
5154#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5155#[cfg_eval::cfg_eval]
5156#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5157#[cfg_attr(
5158 all(feature = "serde", feature = "alloc"),
5159 serde_with::serde_as,
5160 derive(serde::Serialize, serde::Deserialize),
5161 serde(rename_all = "snake_case")
5162)]
5163#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5164pub struct ConfigSettingContractLedgerCostV0 {
5165 pub ledger_max_disk_read_entries: u32,
5166 pub ledger_max_disk_read_bytes: u32,
5167 pub ledger_max_write_ledger_entries: u32,
5168 pub ledger_max_write_bytes: u32,
5169 pub tx_max_disk_read_entries: u32,
5170 pub tx_max_disk_read_bytes: u32,
5171 pub tx_max_write_ledger_entries: u32,
5172 pub tx_max_write_bytes: u32,
5173 #[cfg_attr(
5174 all(feature = "serde", feature = "alloc"),
5175 serde_as(as = "NumberOrString")
5176 )]
5177 pub fee_disk_read_ledger_entry: i64,
5178 #[cfg_attr(
5179 all(feature = "serde", feature = "alloc"),
5180 serde_as(as = "NumberOrString")
5181 )]
5182 pub fee_write_ledger_entry: i64,
5183 #[cfg_attr(
5184 all(feature = "serde", feature = "alloc"),
5185 serde_as(as = "NumberOrString")
5186 )]
5187 pub fee_disk_read1_kb: i64,
5188 #[cfg_attr(
5189 all(feature = "serde", feature = "alloc"),
5190 serde_as(as = "NumberOrString")
5191 )]
5192 pub soroban_state_target_size_bytes: i64,
5193 #[cfg_attr(
5194 all(feature = "serde", feature = "alloc"),
5195 serde_as(as = "NumberOrString")
5196 )]
5197 pub rent_fee1_kb_soroban_state_size_low: i64,
5198 #[cfg_attr(
5199 all(feature = "serde", feature = "alloc"),
5200 serde_as(as = "NumberOrString")
5201 )]
5202 pub rent_fee1_kb_soroban_state_size_high: i64,
5203 pub soroban_state_rent_fee_growth_factor: u32,
5204}
5205
5206impl ReadXdr for ConfigSettingContractLedgerCostV0 {
5207 #[cfg(feature = "std")]
5208 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5209 r.with_limited_depth(|r| {
5210 Ok(Self {
5211 ledger_max_disk_read_entries: u32::read_xdr(r)?,
5212 ledger_max_disk_read_bytes: u32::read_xdr(r)?,
5213 ledger_max_write_ledger_entries: u32::read_xdr(r)?,
5214 ledger_max_write_bytes: u32::read_xdr(r)?,
5215 tx_max_disk_read_entries: u32::read_xdr(r)?,
5216 tx_max_disk_read_bytes: u32::read_xdr(r)?,
5217 tx_max_write_ledger_entries: u32::read_xdr(r)?,
5218 tx_max_write_bytes: u32::read_xdr(r)?,
5219 fee_disk_read_ledger_entry: i64::read_xdr(r)?,
5220 fee_write_ledger_entry: i64::read_xdr(r)?,
5221 fee_disk_read1_kb: i64::read_xdr(r)?,
5222 soroban_state_target_size_bytes: i64::read_xdr(r)?,
5223 rent_fee1_kb_soroban_state_size_low: i64::read_xdr(r)?,
5224 rent_fee1_kb_soroban_state_size_high: i64::read_xdr(r)?,
5225 soroban_state_rent_fee_growth_factor: u32::read_xdr(r)?,
5226 })
5227 })
5228 }
5229}
5230
5231impl WriteXdr for ConfigSettingContractLedgerCostV0 {
5232 #[cfg(feature = "std")]
5233 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5234 w.with_limited_depth(|w| {
5235 self.ledger_max_disk_read_entries.write_xdr(w)?;
5236 self.ledger_max_disk_read_bytes.write_xdr(w)?;
5237 self.ledger_max_write_ledger_entries.write_xdr(w)?;
5238 self.ledger_max_write_bytes.write_xdr(w)?;
5239 self.tx_max_disk_read_entries.write_xdr(w)?;
5240 self.tx_max_disk_read_bytes.write_xdr(w)?;
5241 self.tx_max_write_ledger_entries.write_xdr(w)?;
5242 self.tx_max_write_bytes.write_xdr(w)?;
5243 self.fee_disk_read_ledger_entry.write_xdr(w)?;
5244 self.fee_write_ledger_entry.write_xdr(w)?;
5245 self.fee_disk_read1_kb.write_xdr(w)?;
5246 self.soroban_state_target_size_bytes.write_xdr(w)?;
5247 self.rent_fee1_kb_soroban_state_size_low.write_xdr(w)?;
5248 self.rent_fee1_kb_soroban_state_size_high.write_xdr(w)?;
5249 self.soroban_state_rent_fee_growth_factor.write_xdr(w)?;
5250 Ok(())
5251 })
5252 }
5253}
5254
5255#[cfg_attr(feature = "alloc", derive(Default))]
5270#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5271#[cfg_eval::cfg_eval]
5272#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5273#[cfg_attr(
5274 all(feature = "serde", feature = "alloc"),
5275 serde_with::serde_as,
5276 derive(serde::Serialize, serde::Deserialize),
5277 serde(rename_all = "snake_case")
5278)]
5279#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5280pub struct ConfigSettingContractLedgerCostExtV0 {
5281 pub tx_max_footprint_entries: u32,
5282 #[cfg_attr(
5283 all(feature = "serde", feature = "alloc"),
5284 serde_as(as = "NumberOrString")
5285 )]
5286 pub fee_write1_kb: i64,
5287}
5288
5289impl ReadXdr for ConfigSettingContractLedgerCostExtV0 {
5290 #[cfg(feature = "std")]
5291 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5292 r.with_limited_depth(|r| {
5293 Ok(Self {
5294 tx_max_footprint_entries: u32::read_xdr(r)?,
5295 fee_write1_kb: i64::read_xdr(r)?,
5296 })
5297 })
5298 }
5299}
5300
5301impl WriteXdr for ConfigSettingContractLedgerCostExtV0 {
5302 #[cfg(feature = "std")]
5303 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5304 w.with_limited_depth(|w| {
5305 self.tx_max_footprint_entries.write_xdr(w)?;
5306 self.fee_write1_kb.write_xdr(w)?;
5307 Ok(())
5308 })
5309 }
5310}
5311
5312#[cfg_attr(feature = "alloc", derive(Default))]
5322#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5323#[cfg_eval::cfg_eval]
5324#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5325#[cfg_attr(
5326 all(feature = "serde", feature = "alloc"),
5327 serde_with::serde_as,
5328 derive(serde::Serialize, serde::Deserialize),
5329 serde(rename_all = "snake_case")
5330)]
5331#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5332pub struct ConfigSettingContractHistoricalDataV0 {
5333 #[cfg_attr(
5334 all(feature = "serde", feature = "alloc"),
5335 serde_as(as = "NumberOrString")
5336 )]
5337 pub fee_historical1_kb: i64,
5338}
5339
5340impl ReadXdr for ConfigSettingContractHistoricalDataV0 {
5341 #[cfg(feature = "std")]
5342 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5343 r.with_limited_depth(|r| {
5344 Ok(Self {
5345 fee_historical1_kb: i64::read_xdr(r)?,
5346 })
5347 })
5348 }
5349}
5350
5351impl WriteXdr for ConfigSettingContractHistoricalDataV0 {
5352 #[cfg(feature = "std")]
5353 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5354 w.with_limited_depth(|w| {
5355 self.fee_historical1_kb.write_xdr(w)?;
5356 Ok(())
5357 })
5358 }
5359}
5360
5361#[cfg_attr(feature = "alloc", derive(Default))]
5374#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5375#[cfg_eval::cfg_eval]
5376#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5377#[cfg_attr(
5378 all(feature = "serde", feature = "alloc"),
5379 serde_with::serde_as,
5380 derive(serde::Serialize, serde::Deserialize),
5381 serde(rename_all = "snake_case")
5382)]
5383#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5384pub struct ConfigSettingContractEventsV0 {
5385 pub tx_max_contract_events_size_bytes: u32,
5386 #[cfg_attr(
5387 all(feature = "serde", feature = "alloc"),
5388 serde_as(as = "NumberOrString")
5389 )]
5390 pub fee_contract_events1_kb: i64,
5391}
5392
5393impl ReadXdr for ConfigSettingContractEventsV0 {
5394 #[cfg(feature = "std")]
5395 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5396 r.with_limited_depth(|r| {
5397 Ok(Self {
5398 tx_max_contract_events_size_bytes: u32::read_xdr(r)?,
5399 fee_contract_events1_kb: i64::read_xdr(r)?,
5400 })
5401 })
5402 }
5403}
5404
5405impl WriteXdr for ConfigSettingContractEventsV0 {
5406 #[cfg(feature = "std")]
5407 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5408 w.with_limited_depth(|w| {
5409 self.tx_max_contract_events_size_bytes.write_xdr(w)?;
5410 self.fee_contract_events1_kb.write_xdr(w)?;
5411 Ok(())
5412 })
5413 }
5414}
5415
5416#[cfg_attr(feature = "alloc", derive(Default))]
5432#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5433#[cfg_eval::cfg_eval]
5434#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5435#[cfg_attr(
5436 all(feature = "serde", feature = "alloc"),
5437 serde_with::serde_as,
5438 derive(serde::Serialize, serde::Deserialize),
5439 serde(rename_all = "snake_case")
5440)]
5441#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5442pub struct ConfigSettingContractBandwidthV0 {
5443 pub ledger_max_txs_size_bytes: u32,
5444 pub tx_max_size_bytes: u32,
5445 #[cfg_attr(
5446 all(feature = "serde", feature = "alloc"),
5447 serde_as(as = "NumberOrString")
5448 )]
5449 pub fee_tx_size1_kb: i64,
5450}
5451
5452impl ReadXdr for ConfigSettingContractBandwidthV0 {
5453 #[cfg(feature = "std")]
5454 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
5455 r.with_limited_depth(|r| {
5456 Ok(Self {
5457 ledger_max_txs_size_bytes: u32::read_xdr(r)?,
5458 tx_max_size_bytes: u32::read_xdr(r)?,
5459 fee_tx_size1_kb: i64::read_xdr(r)?,
5460 })
5461 })
5462 }
5463}
5464
5465impl WriteXdr for ConfigSettingContractBandwidthV0 {
5466 #[cfg(feature = "std")]
5467 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
5468 w.with_limited_depth(|w| {
5469 self.ledger_max_txs_size_bytes.write_xdr(w)?;
5470 self.tx_max_size_bytes.write_xdr(w)?;
5471 self.fee_tx_size1_kb.write_xdr(w)?;
5472 Ok(())
5473 })
5474 }
5475}
5476
5477#[cfg_attr(feature = "alloc", derive(Default))]
5636#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
5637#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
5638#[cfg_attr(
5639 all(feature = "serde", feature = "alloc"),
5640 derive(serde::Serialize, serde::Deserialize),
5641 serde(rename_all = "snake_case")
5642)]
5643#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5644#[repr(i32)]
5645pub enum ContractCostType {
5646 #[cfg_attr(feature = "alloc", default)]
5647 WasmInsnExec = 0,
5648 MemAlloc = 1,
5649 MemCpy = 2,
5650 MemCmp = 3,
5651 DispatchHostFunction = 4,
5652 VisitObject = 5,
5653 ValSer = 6,
5654 ValDeser = 7,
5655 ComputeSha256Hash = 8,
5656 ComputeEd25519PubKey = 9,
5657 VerifyEd25519Sig = 10,
5658 VmInstantiation = 11,
5659 VmCachedInstantiation = 12,
5660 InvokeVmFunction = 13,
5661 ComputeKeccak256Hash = 14,
5662 DecodeEcdsaCurve256Sig = 15,
5663 RecoverEcdsaSecp256k1Key = 16,
5664 Int256AddSub = 17,
5665 Int256Mul = 18,
5666 Int256Div = 19,
5667 Int256Pow = 20,
5668 Int256Shift = 21,
5669 ChaCha20DrawBytes = 22,
5670 ParseWasmInstructions = 23,
5671 ParseWasmFunctions = 24,
5672 ParseWasmGlobals = 25,
5673 ParseWasmTableEntries = 26,
5674 ParseWasmTypes = 27,
5675 ParseWasmDataSegments = 28,
5676 ParseWasmElemSegments = 29,
5677 ParseWasmImports = 30,
5678 ParseWasmExports = 31,
5679 ParseWasmDataSegmentBytes = 32,
5680 InstantiateWasmInstructions = 33,
5681 InstantiateWasmFunctions = 34,
5682 InstantiateWasmGlobals = 35,
5683 InstantiateWasmTableEntries = 36,
5684 InstantiateWasmTypes = 37,
5685 InstantiateWasmDataSegments = 38,
5686 InstantiateWasmElemSegments = 39,
5687 InstantiateWasmImports = 40,
5688 InstantiateWasmExports = 41,
5689 InstantiateWasmDataSegmentBytes = 42,
5690 Sec1DecodePointUncompressed = 43,
5691 VerifyEcdsaSecp256r1Sig = 44,
5692 Bls12381EncodeFp = 45,
5693 Bls12381DecodeFp = 46,
5694 Bls12381G1CheckPointOnCurve = 47,
5695 Bls12381G1CheckPointInSubgroup = 48,
5696 Bls12381G2CheckPointOnCurve = 49,
5697 Bls12381G2CheckPointInSubgroup = 50,
5698 Bls12381G1ProjectiveToAffine = 51,
5699 Bls12381G2ProjectiveToAffine = 52,
5700 Bls12381G1Add = 53,
5701 Bls12381G1Mul = 54,
5702 Bls12381G1Msm = 55,
5703 Bls12381MapFpToG1 = 56,
5704 Bls12381HashToG1 = 57,
5705 Bls12381G2Add = 58,
5706 Bls12381G2Mul = 59,
5707 Bls12381G2Msm = 60,
5708 Bls12381MapFp2ToG2 = 61,
5709 Bls12381HashToG2 = 62,
5710 Bls12381Pairing = 63,
5711 Bls12381FrFromU256 = 64,
5712 Bls12381FrToU256 = 65,
5713 Bls12381FrAddSub = 66,
5714 Bls12381FrMul = 67,
5715 Bls12381FrPow = 68,
5716 Bls12381FrInv = 69,
5717}
5718
5719impl ContractCostType {
5720 pub const VARIANTS: [ContractCostType; 70] = [
5721 ContractCostType::WasmInsnExec,
5722 ContractCostType::MemAlloc,
5723 ContractCostType::MemCpy,
5724 ContractCostType::MemCmp,
5725 ContractCostType::DispatchHostFunction,
5726 ContractCostType::VisitObject,
5727 ContractCostType::ValSer,
5728 ContractCostType::ValDeser,
5729 ContractCostType::ComputeSha256Hash,
5730 ContractCostType::ComputeEd25519PubKey,
5731 ContractCostType::VerifyEd25519Sig,
5732 ContractCostType::VmInstantiation,
5733 ContractCostType::VmCachedInstantiation,
5734 ContractCostType::InvokeVmFunction,
5735 ContractCostType::ComputeKeccak256Hash,
5736 ContractCostType::DecodeEcdsaCurve256Sig,
5737 ContractCostType::RecoverEcdsaSecp256k1Key,
5738 ContractCostType::Int256AddSub,
5739 ContractCostType::Int256Mul,
5740 ContractCostType::Int256Div,
5741 ContractCostType::Int256Pow,
5742 ContractCostType::Int256Shift,
5743 ContractCostType::ChaCha20DrawBytes,
5744 ContractCostType::ParseWasmInstructions,
5745 ContractCostType::ParseWasmFunctions,
5746 ContractCostType::ParseWasmGlobals,
5747 ContractCostType::ParseWasmTableEntries,
5748 ContractCostType::ParseWasmTypes,
5749 ContractCostType::ParseWasmDataSegments,
5750 ContractCostType::ParseWasmElemSegments,
5751 ContractCostType::ParseWasmImports,
5752 ContractCostType::ParseWasmExports,
5753 ContractCostType::ParseWasmDataSegmentBytes,
5754 ContractCostType::InstantiateWasmInstructions,
5755 ContractCostType::InstantiateWasmFunctions,
5756 ContractCostType::InstantiateWasmGlobals,
5757 ContractCostType::InstantiateWasmTableEntries,
5758 ContractCostType::InstantiateWasmTypes,
5759 ContractCostType::InstantiateWasmDataSegments,
5760 ContractCostType::InstantiateWasmElemSegments,
5761 ContractCostType::InstantiateWasmImports,
5762 ContractCostType::InstantiateWasmExports,
5763 ContractCostType::InstantiateWasmDataSegmentBytes,
5764 ContractCostType::Sec1DecodePointUncompressed,
5765 ContractCostType::VerifyEcdsaSecp256r1Sig,
5766 ContractCostType::Bls12381EncodeFp,
5767 ContractCostType::Bls12381DecodeFp,
5768 ContractCostType::Bls12381G1CheckPointOnCurve,
5769 ContractCostType::Bls12381G1CheckPointInSubgroup,
5770 ContractCostType::Bls12381G2CheckPointOnCurve,
5771 ContractCostType::Bls12381G2CheckPointInSubgroup,
5772 ContractCostType::Bls12381G1ProjectiveToAffine,
5773 ContractCostType::Bls12381G2ProjectiveToAffine,
5774 ContractCostType::Bls12381G1Add,
5775 ContractCostType::Bls12381G1Mul,
5776 ContractCostType::Bls12381G1Msm,
5777 ContractCostType::Bls12381MapFpToG1,
5778 ContractCostType::Bls12381HashToG1,
5779 ContractCostType::Bls12381G2Add,
5780 ContractCostType::Bls12381G2Mul,
5781 ContractCostType::Bls12381G2Msm,
5782 ContractCostType::Bls12381MapFp2ToG2,
5783 ContractCostType::Bls12381HashToG2,
5784 ContractCostType::Bls12381Pairing,
5785 ContractCostType::Bls12381FrFromU256,
5786 ContractCostType::Bls12381FrToU256,
5787 ContractCostType::Bls12381FrAddSub,
5788 ContractCostType::Bls12381FrMul,
5789 ContractCostType::Bls12381FrPow,
5790 ContractCostType::Bls12381FrInv,
5791 ];
5792 pub const VARIANTS_STR: [&'static str; 70] = [
5793 "WasmInsnExec",
5794 "MemAlloc",
5795 "MemCpy",
5796 "MemCmp",
5797 "DispatchHostFunction",
5798 "VisitObject",
5799 "ValSer",
5800 "ValDeser",
5801 "ComputeSha256Hash",
5802 "ComputeEd25519PubKey",
5803 "VerifyEd25519Sig",
5804 "VmInstantiation",
5805 "VmCachedInstantiation",
5806 "InvokeVmFunction",
5807 "ComputeKeccak256Hash",
5808 "DecodeEcdsaCurve256Sig",
5809 "RecoverEcdsaSecp256k1Key",
5810 "Int256AddSub",
5811 "Int256Mul",
5812 "Int256Div",
5813 "Int256Pow",
5814 "Int256Shift",
5815 "ChaCha20DrawBytes",
5816 "ParseWasmInstructions",
5817 "ParseWasmFunctions",
5818 "ParseWasmGlobals",
5819 "ParseWasmTableEntries",
5820 "ParseWasmTypes",
5821 "ParseWasmDataSegments",
5822 "ParseWasmElemSegments",
5823 "ParseWasmImports",
5824 "ParseWasmExports",
5825 "ParseWasmDataSegmentBytes",
5826 "InstantiateWasmInstructions",
5827 "InstantiateWasmFunctions",
5828 "InstantiateWasmGlobals",
5829 "InstantiateWasmTableEntries",
5830 "InstantiateWasmTypes",
5831 "InstantiateWasmDataSegments",
5832 "InstantiateWasmElemSegments",
5833 "InstantiateWasmImports",
5834 "InstantiateWasmExports",
5835 "InstantiateWasmDataSegmentBytes",
5836 "Sec1DecodePointUncompressed",
5837 "VerifyEcdsaSecp256r1Sig",
5838 "Bls12381EncodeFp",
5839 "Bls12381DecodeFp",
5840 "Bls12381G1CheckPointOnCurve",
5841 "Bls12381G1CheckPointInSubgroup",
5842 "Bls12381G2CheckPointOnCurve",
5843 "Bls12381G2CheckPointInSubgroup",
5844 "Bls12381G1ProjectiveToAffine",
5845 "Bls12381G2ProjectiveToAffine",
5846 "Bls12381G1Add",
5847 "Bls12381G1Mul",
5848 "Bls12381G1Msm",
5849 "Bls12381MapFpToG1",
5850 "Bls12381HashToG1",
5851 "Bls12381G2Add",
5852 "Bls12381G2Mul",
5853 "Bls12381G2Msm",
5854 "Bls12381MapFp2ToG2",
5855 "Bls12381HashToG2",
5856 "Bls12381Pairing",
5857 "Bls12381FrFromU256",
5858 "Bls12381FrToU256",
5859 "Bls12381FrAddSub",
5860 "Bls12381FrMul",
5861 "Bls12381FrPow",
5862 "Bls12381FrInv",
5863 ];
5864
5865 #[must_use]
5866 pub const fn name(&self) -> &'static str {
5867 match self {
5868 Self::WasmInsnExec => "WasmInsnExec",
5869 Self::MemAlloc => "MemAlloc",
5870 Self::MemCpy => "MemCpy",
5871 Self::MemCmp => "MemCmp",
5872 Self::DispatchHostFunction => "DispatchHostFunction",
5873 Self::VisitObject => "VisitObject",
5874 Self::ValSer => "ValSer",
5875 Self::ValDeser => "ValDeser",
5876 Self::ComputeSha256Hash => "ComputeSha256Hash",
5877 Self::ComputeEd25519PubKey => "ComputeEd25519PubKey",
5878 Self::VerifyEd25519Sig => "VerifyEd25519Sig",
5879 Self::VmInstantiation => "VmInstantiation",
5880 Self::VmCachedInstantiation => "VmCachedInstantiation",
5881 Self::InvokeVmFunction => "InvokeVmFunction",
5882 Self::ComputeKeccak256Hash => "ComputeKeccak256Hash",
5883 Self::DecodeEcdsaCurve256Sig => "DecodeEcdsaCurve256Sig",
5884 Self::RecoverEcdsaSecp256k1Key => "RecoverEcdsaSecp256k1Key",
5885 Self::Int256AddSub => "Int256AddSub",
5886 Self::Int256Mul => "Int256Mul",
5887 Self::Int256Div => "Int256Div",
5888 Self::Int256Pow => "Int256Pow",
5889 Self::Int256Shift => "Int256Shift",
5890 Self::ChaCha20DrawBytes => "ChaCha20DrawBytes",
5891 Self::ParseWasmInstructions => "ParseWasmInstructions",
5892 Self::ParseWasmFunctions => "ParseWasmFunctions",
5893 Self::ParseWasmGlobals => "ParseWasmGlobals",
5894 Self::ParseWasmTableEntries => "ParseWasmTableEntries",
5895 Self::ParseWasmTypes => "ParseWasmTypes",
5896 Self::ParseWasmDataSegments => "ParseWasmDataSegments",
5897 Self::ParseWasmElemSegments => "ParseWasmElemSegments",
5898 Self::ParseWasmImports => "ParseWasmImports",
5899 Self::ParseWasmExports => "ParseWasmExports",
5900 Self::ParseWasmDataSegmentBytes => "ParseWasmDataSegmentBytes",
5901 Self::InstantiateWasmInstructions => "InstantiateWasmInstructions",
5902 Self::InstantiateWasmFunctions => "InstantiateWasmFunctions",
5903 Self::InstantiateWasmGlobals => "InstantiateWasmGlobals",
5904 Self::InstantiateWasmTableEntries => "InstantiateWasmTableEntries",
5905 Self::InstantiateWasmTypes => "InstantiateWasmTypes",
5906 Self::InstantiateWasmDataSegments => "InstantiateWasmDataSegments",
5907 Self::InstantiateWasmElemSegments => "InstantiateWasmElemSegments",
5908 Self::InstantiateWasmImports => "InstantiateWasmImports",
5909 Self::InstantiateWasmExports => "InstantiateWasmExports",
5910 Self::InstantiateWasmDataSegmentBytes => "InstantiateWasmDataSegmentBytes",
5911 Self::Sec1DecodePointUncompressed => "Sec1DecodePointUncompressed",
5912 Self::VerifyEcdsaSecp256r1Sig => "VerifyEcdsaSecp256r1Sig",
5913 Self::Bls12381EncodeFp => "Bls12381EncodeFp",
5914 Self::Bls12381DecodeFp => "Bls12381DecodeFp",
5915 Self::Bls12381G1CheckPointOnCurve => "Bls12381G1CheckPointOnCurve",
5916 Self::Bls12381G1CheckPointInSubgroup => "Bls12381G1CheckPointInSubgroup",
5917 Self::Bls12381G2CheckPointOnCurve => "Bls12381G2CheckPointOnCurve",
5918 Self::Bls12381G2CheckPointInSubgroup => "Bls12381G2CheckPointInSubgroup",
5919 Self::Bls12381G1ProjectiveToAffine => "Bls12381G1ProjectiveToAffine",
5920 Self::Bls12381G2ProjectiveToAffine => "Bls12381G2ProjectiveToAffine",
5921 Self::Bls12381G1Add => "Bls12381G1Add",
5922 Self::Bls12381G1Mul => "Bls12381G1Mul",
5923 Self::Bls12381G1Msm => "Bls12381G1Msm",
5924 Self::Bls12381MapFpToG1 => "Bls12381MapFpToG1",
5925 Self::Bls12381HashToG1 => "Bls12381HashToG1",
5926 Self::Bls12381G2Add => "Bls12381G2Add",
5927 Self::Bls12381G2Mul => "Bls12381G2Mul",
5928 Self::Bls12381G2Msm => "Bls12381G2Msm",
5929 Self::Bls12381MapFp2ToG2 => "Bls12381MapFp2ToG2",
5930 Self::Bls12381HashToG2 => "Bls12381HashToG2",
5931 Self::Bls12381Pairing => "Bls12381Pairing",
5932 Self::Bls12381FrFromU256 => "Bls12381FrFromU256",
5933 Self::Bls12381FrToU256 => "Bls12381FrToU256",
5934 Self::Bls12381FrAddSub => "Bls12381FrAddSub",
5935 Self::Bls12381FrMul => "Bls12381FrMul",
5936 Self::Bls12381FrPow => "Bls12381FrPow",
5937 Self::Bls12381FrInv => "Bls12381FrInv",
5938 }
5939 }
5940
5941 #[must_use]
5942 pub const fn variants() -> [ContractCostType; 70] {
5943 Self::VARIANTS
5944 }
5945}
5946
5947impl Name for ContractCostType {
5948 #[must_use]
5949 fn name(&self) -> &'static str {
5950 Self::name(self)
5951 }
5952}
5953
5954impl Variants<ContractCostType> for ContractCostType {
5955 fn variants() -> slice::Iter<'static, ContractCostType> {
5956 Self::VARIANTS.iter()
5957 }
5958}
5959
5960impl Enum for ContractCostType {}
5961
5962impl fmt::Display for ContractCostType {
5963 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
5964 f.write_str(self.name())
5965 }
5966}
5967
5968impl TryFrom<i32> for ContractCostType {
5969 type Error = Error;
5970
5971 fn try_from(i: i32) -> Result<Self, Error> {
5972 let e = match i {
5973 0 => ContractCostType::WasmInsnExec,
5974 1 => ContractCostType::MemAlloc,
5975 2 => ContractCostType::MemCpy,
5976 3 => ContractCostType::MemCmp,
5977 4 => ContractCostType::DispatchHostFunction,
5978 5 => ContractCostType::VisitObject,
5979 6 => ContractCostType::ValSer,
5980 7 => ContractCostType::ValDeser,
5981 8 => ContractCostType::ComputeSha256Hash,
5982 9 => ContractCostType::ComputeEd25519PubKey,
5983 10 => ContractCostType::VerifyEd25519Sig,
5984 11 => ContractCostType::VmInstantiation,
5985 12 => ContractCostType::VmCachedInstantiation,
5986 13 => ContractCostType::InvokeVmFunction,
5987 14 => ContractCostType::ComputeKeccak256Hash,
5988 15 => ContractCostType::DecodeEcdsaCurve256Sig,
5989 16 => ContractCostType::RecoverEcdsaSecp256k1Key,
5990 17 => ContractCostType::Int256AddSub,
5991 18 => ContractCostType::Int256Mul,
5992 19 => ContractCostType::Int256Div,
5993 20 => ContractCostType::Int256Pow,
5994 21 => ContractCostType::Int256Shift,
5995 22 => ContractCostType::ChaCha20DrawBytes,
5996 23 => ContractCostType::ParseWasmInstructions,
5997 24 => ContractCostType::ParseWasmFunctions,
5998 25 => ContractCostType::ParseWasmGlobals,
5999 26 => ContractCostType::ParseWasmTableEntries,
6000 27 => ContractCostType::ParseWasmTypes,
6001 28 => ContractCostType::ParseWasmDataSegments,
6002 29 => ContractCostType::ParseWasmElemSegments,
6003 30 => ContractCostType::ParseWasmImports,
6004 31 => ContractCostType::ParseWasmExports,
6005 32 => ContractCostType::ParseWasmDataSegmentBytes,
6006 33 => ContractCostType::InstantiateWasmInstructions,
6007 34 => ContractCostType::InstantiateWasmFunctions,
6008 35 => ContractCostType::InstantiateWasmGlobals,
6009 36 => ContractCostType::InstantiateWasmTableEntries,
6010 37 => ContractCostType::InstantiateWasmTypes,
6011 38 => ContractCostType::InstantiateWasmDataSegments,
6012 39 => ContractCostType::InstantiateWasmElemSegments,
6013 40 => ContractCostType::InstantiateWasmImports,
6014 41 => ContractCostType::InstantiateWasmExports,
6015 42 => ContractCostType::InstantiateWasmDataSegmentBytes,
6016 43 => ContractCostType::Sec1DecodePointUncompressed,
6017 44 => ContractCostType::VerifyEcdsaSecp256r1Sig,
6018 45 => ContractCostType::Bls12381EncodeFp,
6019 46 => ContractCostType::Bls12381DecodeFp,
6020 47 => ContractCostType::Bls12381G1CheckPointOnCurve,
6021 48 => ContractCostType::Bls12381G1CheckPointInSubgroup,
6022 49 => ContractCostType::Bls12381G2CheckPointOnCurve,
6023 50 => ContractCostType::Bls12381G2CheckPointInSubgroup,
6024 51 => ContractCostType::Bls12381G1ProjectiveToAffine,
6025 52 => ContractCostType::Bls12381G2ProjectiveToAffine,
6026 53 => ContractCostType::Bls12381G1Add,
6027 54 => ContractCostType::Bls12381G1Mul,
6028 55 => ContractCostType::Bls12381G1Msm,
6029 56 => ContractCostType::Bls12381MapFpToG1,
6030 57 => ContractCostType::Bls12381HashToG1,
6031 58 => ContractCostType::Bls12381G2Add,
6032 59 => ContractCostType::Bls12381G2Mul,
6033 60 => ContractCostType::Bls12381G2Msm,
6034 61 => ContractCostType::Bls12381MapFp2ToG2,
6035 62 => ContractCostType::Bls12381HashToG2,
6036 63 => ContractCostType::Bls12381Pairing,
6037 64 => ContractCostType::Bls12381FrFromU256,
6038 65 => ContractCostType::Bls12381FrToU256,
6039 66 => ContractCostType::Bls12381FrAddSub,
6040 67 => ContractCostType::Bls12381FrMul,
6041 68 => ContractCostType::Bls12381FrPow,
6042 69 => ContractCostType::Bls12381FrInv,
6043 #[allow(unreachable_patterns)]
6044 _ => return Err(Error::Invalid),
6045 };
6046 Ok(e)
6047 }
6048}
6049
6050impl From<ContractCostType> for i32 {
6051 #[must_use]
6052 fn from(e: ContractCostType) -> Self {
6053 e as Self
6054 }
6055}
6056
6057impl ReadXdr for ContractCostType {
6058 #[cfg(feature = "std")]
6059 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6060 r.with_limited_depth(|r| {
6061 let e = i32::read_xdr(r)?;
6062 let v: Self = e.try_into()?;
6063 Ok(v)
6064 })
6065 }
6066}
6067
6068impl WriteXdr for ContractCostType {
6069 #[cfg(feature = "std")]
6070 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6071 w.with_limited_depth(|w| {
6072 let i: i32 = (*self).into();
6073 i.write_xdr(w)
6074 })
6075 }
6076}
6077
6078#[cfg_attr(feature = "alloc", derive(Default))]
6091#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6092#[cfg_eval::cfg_eval]
6093#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6094#[cfg_attr(
6095 all(feature = "serde", feature = "alloc"),
6096 serde_with::serde_as,
6097 derive(serde::Serialize, serde::Deserialize),
6098 serde(rename_all = "snake_case")
6099)]
6100#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6101pub struct ContractCostParamEntry {
6102 pub ext: ExtensionPoint,
6103 #[cfg_attr(
6104 all(feature = "serde", feature = "alloc"),
6105 serde_as(as = "NumberOrString")
6106 )]
6107 pub const_term: i64,
6108 #[cfg_attr(
6109 all(feature = "serde", feature = "alloc"),
6110 serde_as(as = "NumberOrString")
6111 )]
6112 pub linear_term: i64,
6113}
6114
6115impl ReadXdr for ContractCostParamEntry {
6116 #[cfg(feature = "std")]
6117 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6118 r.with_limited_depth(|r| {
6119 Ok(Self {
6120 ext: ExtensionPoint::read_xdr(r)?,
6121 const_term: i64::read_xdr(r)?,
6122 linear_term: i64::read_xdr(r)?,
6123 })
6124 })
6125 }
6126}
6127
6128impl WriteXdr for ContractCostParamEntry {
6129 #[cfg(feature = "std")]
6130 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6131 w.with_limited_depth(|w| {
6132 self.ext.write_xdr(w)?;
6133 self.const_term.write_xdr(w)?;
6134 self.linear_term.write_xdr(w)?;
6135 Ok(())
6136 })
6137 }
6138}
6139
6140#[cfg_attr(feature = "alloc", derive(Default))]
6170#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6171#[cfg_eval::cfg_eval]
6172#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6173#[cfg_attr(
6174 all(feature = "serde", feature = "alloc"),
6175 serde_with::serde_as,
6176 derive(serde::Serialize, serde::Deserialize),
6177 serde(rename_all = "snake_case")
6178)]
6179#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6180pub struct StateArchivalSettings {
6181 pub max_entry_ttl: u32,
6182 pub min_temporary_ttl: u32,
6183 pub min_persistent_ttl: u32,
6184 #[cfg_attr(
6185 all(feature = "serde", feature = "alloc"),
6186 serde_as(as = "NumberOrString")
6187 )]
6188 pub persistent_rent_rate_denominator: i64,
6189 #[cfg_attr(
6190 all(feature = "serde", feature = "alloc"),
6191 serde_as(as = "NumberOrString")
6192 )]
6193 pub temp_rent_rate_denominator: i64,
6194 pub max_entries_to_archive: u32,
6195 pub live_soroban_state_size_window_sample_size: u32,
6196 pub live_soroban_state_size_window_sample_period: u32,
6197 pub eviction_scan_size: u32,
6198 pub starting_eviction_scan_level: u32,
6199}
6200
6201impl ReadXdr for StateArchivalSettings {
6202 #[cfg(feature = "std")]
6203 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6204 r.with_limited_depth(|r| {
6205 Ok(Self {
6206 max_entry_ttl: u32::read_xdr(r)?,
6207 min_temporary_ttl: u32::read_xdr(r)?,
6208 min_persistent_ttl: u32::read_xdr(r)?,
6209 persistent_rent_rate_denominator: i64::read_xdr(r)?,
6210 temp_rent_rate_denominator: i64::read_xdr(r)?,
6211 max_entries_to_archive: u32::read_xdr(r)?,
6212 live_soroban_state_size_window_sample_size: u32::read_xdr(r)?,
6213 live_soroban_state_size_window_sample_period: u32::read_xdr(r)?,
6214 eviction_scan_size: u32::read_xdr(r)?,
6215 starting_eviction_scan_level: u32::read_xdr(r)?,
6216 })
6217 })
6218 }
6219}
6220
6221impl WriteXdr for StateArchivalSettings {
6222 #[cfg(feature = "std")]
6223 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6224 w.with_limited_depth(|w| {
6225 self.max_entry_ttl.write_xdr(w)?;
6226 self.min_temporary_ttl.write_xdr(w)?;
6227 self.min_persistent_ttl.write_xdr(w)?;
6228 self.persistent_rent_rate_denominator.write_xdr(w)?;
6229 self.temp_rent_rate_denominator.write_xdr(w)?;
6230 self.max_entries_to_archive.write_xdr(w)?;
6231 self.live_soroban_state_size_window_sample_size
6232 .write_xdr(w)?;
6233 self.live_soroban_state_size_window_sample_period
6234 .write_xdr(w)?;
6235 self.eviction_scan_size.write_xdr(w)?;
6236 self.starting_eviction_scan_level.write_xdr(w)?;
6237 Ok(())
6238 })
6239 }
6240}
6241
6242#[cfg_attr(feature = "alloc", derive(Default))]
6253#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6254#[cfg_eval::cfg_eval]
6255#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6256#[cfg_attr(
6257 all(feature = "serde", feature = "alloc"),
6258 serde_with::serde_as,
6259 derive(serde::Serialize, serde::Deserialize),
6260 serde(rename_all = "snake_case")
6261)]
6262#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6263pub struct EvictionIterator {
6264 pub bucket_list_level: u32,
6265 pub is_curr_bucket: bool,
6266 #[cfg_attr(
6267 all(feature = "serde", feature = "alloc"),
6268 serde_as(as = "NumberOrString")
6269 )]
6270 pub bucket_file_offset: u64,
6271}
6272
6273impl ReadXdr for EvictionIterator {
6274 #[cfg(feature = "std")]
6275 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6276 r.with_limited_depth(|r| {
6277 Ok(Self {
6278 bucket_list_level: u32::read_xdr(r)?,
6279 is_curr_bucket: bool::read_xdr(r)?,
6280 bucket_file_offset: u64::read_xdr(r)?,
6281 })
6282 })
6283 }
6284}
6285
6286impl WriteXdr for EvictionIterator {
6287 #[cfg(feature = "std")]
6288 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6289 w.with_limited_depth(|w| {
6290 self.bucket_list_level.write_xdr(w)?;
6291 self.is_curr_bucket.write_xdr(w)?;
6292 self.bucket_file_offset.write_xdr(w)?;
6293 Ok(())
6294 })
6295 }
6296}
6297
6298#[cfg_attr(feature = "alloc", derive(Default))]
6311#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6312#[cfg_eval::cfg_eval]
6313#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6314#[cfg_attr(
6315 all(feature = "serde", feature = "alloc"),
6316 serde_with::serde_as,
6317 derive(serde::Serialize, serde::Deserialize),
6318 serde(rename_all = "snake_case")
6319)]
6320#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6321pub struct ConfigSettingScpTiming {
6322 pub ledger_target_close_time_milliseconds: u32,
6323 pub nomination_timeout_initial_milliseconds: u32,
6324 pub nomination_timeout_increment_milliseconds: u32,
6325 pub ballot_timeout_initial_milliseconds: u32,
6326 pub ballot_timeout_increment_milliseconds: u32,
6327}
6328
6329impl ReadXdr for ConfigSettingScpTiming {
6330 #[cfg(feature = "std")]
6331 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6332 r.with_limited_depth(|r| {
6333 Ok(Self {
6334 ledger_target_close_time_milliseconds: u32::read_xdr(r)?,
6335 nomination_timeout_initial_milliseconds: u32::read_xdr(r)?,
6336 nomination_timeout_increment_milliseconds: u32::read_xdr(r)?,
6337 ballot_timeout_initial_milliseconds: u32::read_xdr(r)?,
6338 ballot_timeout_increment_milliseconds: u32::read_xdr(r)?,
6339 })
6340 })
6341 }
6342}
6343
6344impl WriteXdr for ConfigSettingScpTiming {
6345 #[cfg(feature = "std")]
6346 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6347 w.with_limited_depth(|w| {
6348 self.ledger_target_close_time_milliseconds.write_xdr(w)?;
6349 self.nomination_timeout_initial_milliseconds.write_xdr(w)?;
6350 self.nomination_timeout_increment_milliseconds
6351 .write_xdr(w)?;
6352 self.ballot_timeout_initial_milliseconds.write_xdr(w)?;
6353 self.ballot_timeout_increment_milliseconds.write_xdr(w)?;
6354 Ok(())
6355 })
6356 }
6357}
6358
6359pub const CONTRACT_COST_COUNT_LIMIT: u64 = 1024;
6366
6367#[cfg_eval::cfg_eval]
6374#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
6375#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6376#[cfg_attr(
6377 all(feature = "serde", feature = "alloc"),
6378 serde_with::serde_as,
6379 derive(serde::Serialize, serde::Deserialize),
6380 serde(rename_all = "snake_case")
6381)]
6382#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6383#[derive(Debug)]
6384pub struct ContractCostParams(pub VecM<ContractCostParamEntry, 1024>);
6385
6386impl From<ContractCostParams> for VecM<ContractCostParamEntry, 1024> {
6387 #[must_use]
6388 fn from(x: ContractCostParams) -> Self {
6389 x.0
6390 }
6391}
6392
6393impl From<VecM<ContractCostParamEntry, 1024>> for ContractCostParams {
6394 #[must_use]
6395 fn from(x: VecM<ContractCostParamEntry, 1024>) -> Self {
6396 ContractCostParams(x)
6397 }
6398}
6399
6400impl AsRef<VecM<ContractCostParamEntry, 1024>> for ContractCostParams {
6401 #[must_use]
6402 fn as_ref(&self) -> &VecM<ContractCostParamEntry, 1024> {
6403 &self.0
6404 }
6405}
6406
6407impl ReadXdr for ContractCostParams {
6408 #[cfg(feature = "std")]
6409 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6410 r.with_limited_depth(|r| {
6411 let i = VecM::<ContractCostParamEntry, 1024>::read_xdr(r)?;
6412 let v = ContractCostParams(i);
6413 Ok(v)
6414 })
6415 }
6416}
6417
6418impl WriteXdr for ContractCostParams {
6419 #[cfg(feature = "std")]
6420 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6421 w.with_limited_depth(|w| self.0.write_xdr(w))
6422 }
6423}
6424
6425impl Deref for ContractCostParams {
6426 type Target = VecM<ContractCostParamEntry, 1024>;
6427 fn deref(&self) -> &Self::Target {
6428 &self.0
6429 }
6430}
6431
6432impl From<ContractCostParams> for Vec<ContractCostParamEntry> {
6433 #[must_use]
6434 fn from(x: ContractCostParams) -> Self {
6435 x.0 .0
6436 }
6437}
6438
6439impl TryFrom<Vec<ContractCostParamEntry>> for ContractCostParams {
6440 type Error = Error;
6441 fn try_from(x: Vec<ContractCostParamEntry>) -> Result<Self, Error> {
6442 Ok(ContractCostParams(x.try_into()?))
6443 }
6444}
6445
6446#[cfg(feature = "alloc")]
6447impl TryFrom<&Vec<ContractCostParamEntry>> for ContractCostParams {
6448 type Error = Error;
6449 fn try_from(x: &Vec<ContractCostParamEntry>) -> Result<Self, Error> {
6450 Ok(ContractCostParams(x.try_into()?))
6451 }
6452}
6453
6454impl AsRef<Vec<ContractCostParamEntry>> for ContractCostParams {
6455 #[must_use]
6456 fn as_ref(&self) -> &Vec<ContractCostParamEntry> {
6457 &self.0 .0
6458 }
6459}
6460
6461impl AsRef<[ContractCostParamEntry]> for ContractCostParams {
6462 #[cfg(feature = "alloc")]
6463 #[must_use]
6464 fn as_ref(&self) -> &[ContractCostParamEntry] {
6465 &self.0 .0
6466 }
6467 #[cfg(not(feature = "alloc"))]
6468 #[must_use]
6469 fn as_ref(&self) -> &[ContractCostParamEntry] {
6470 self.0 .0
6471 }
6472}
6473
6474#[cfg_attr(feature = "alloc", derive(Default))]
6501#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6502#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6503#[cfg_attr(
6504 all(feature = "serde", feature = "alloc"),
6505 derive(serde::Serialize, serde::Deserialize),
6506 serde(rename_all = "snake_case")
6507)]
6508#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6509#[repr(i32)]
6510pub enum ConfigSettingId {
6511 #[cfg_attr(feature = "alloc", default)]
6512 ContractMaxSizeBytes = 0,
6513 ContractComputeV0 = 1,
6514 ContractLedgerCostV0 = 2,
6515 ContractHistoricalDataV0 = 3,
6516 ContractEventsV0 = 4,
6517 ContractBandwidthV0 = 5,
6518 ContractCostParamsCpuInstructions = 6,
6519 ContractCostParamsMemoryBytes = 7,
6520 ContractDataKeySizeBytes = 8,
6521 ContractDataEntrySizeBytes = 9,
6522 StateArchival = 10,
6523 ContractExecutionLanes = 11,
6524 LiveSorobanStateSizeWindow = 12,
6525 EvictionIterator = 13,
6526 ContractParallelComputeV0 = 14,
6527 ContractLedgerCostExtV0 = 15,
6528 ScpTiming = 16,
6529}
6530
6531impl ConfigSettingId {
6532 pub const VARIANTS: [ConfigSettingId; 17] = [
6533 ConfigSettingId::ContractMaxSizeBytes,
6534 ConfigSettingId::ContractComputeV0,
6535 ConfigSettingId::ContractLedgerCostV0,
6536 ConfigSettingId::ContractHistoricalDataV0,
6537 ConfigSettingId::ContractEventsV0,
6538 ConfigSettingId::ContractBandwidthV0,
6539 ConfigSettingId::ContractCostParamsCpuInstructions,
6540 ConfigSettingId::ContractCostParamsMemoryBytes,
6541 ConfigSettingId::ContractDataKeySizeBytes,
6542 ConfigSettingId::ContractDataEntrySizeBytes,
6543 ConfigSettingId::StateArchival,
6544 ConfigSettingId::ContractExecutionLanes,
6545 ConfigSettingId::LiveSorobanStateSizeWindow,
6546 ConfigSettingId::EvictionIterator,
6547 ConfigSettingId::ContractParallelComputeV0,
6548 ConfigSettingId::ContractLedgerCostExtV0,
6549 ConfigSettingId::ScpTiming,
6550 ];
6551 pub const VARIANTS_STR: [&'static str; 17] = [
6552 "ContractMaxSizeBytes",
6553 "ContractComputeV0",
6554 "ContractLedgerCostV0",
6555 "ContractHistoricalDataV0",
6556 "ContractEventsV0",
6557 "ContractBandwidthV0",
6558 "ContractCostParamsCpuInstructions",
6559 "ContractCostParamsMemoryBytes",
6560 "ContractDataKeySizeBytes",
6561 "ContractDataEntrySizeBytes",
6562 "StateArchival",
6563 "ContractExecutionLanes",
6564 "LiveSorobanStateSizeWindow",
6565 "EvictionIterator",
6566 "ContractParallelComputeV0",
6567 "ContractLedgerCostExtV0",
6568 "ScpTiming",
6569 ];
6570
6571 #[must_use]
6572 pub const fn name(&self) -> &'static str {
6573 match self {
6574 Self::ContractMaxSizeBytes => "ContractMaxSizeBytes",
6575 Self::ContractComputeV0 => "ContractComputeV0",
6576 Self::ContractLedgerCostV0 => "ContractLedgerCostV0",
6577 Self::ContractHistoricalDataV0 => "ContractHistoricalDataV0",
6578 Self::ContractEventsV0 => "ContractEventsV0",
6579 Self::ContractBandwidthV0 => "ContractBandwidthV0",
6580 Self::ContractCostParamsCpuInstructions => "ContractCostParamsCpuInstructions",
6581 Self::ContractCostParamsMemoryBytes => "ContractCostParamsMemoryBytes",
6582 Self::ContractDataKeySizeBytes => "ContractDataKeySizeBytes",
6583 Self::ContractDataEntrySizeBytes => "ContractDataEntrySizeBytes",
6584 Self::StateArchival => "StateArchival",
6585 Self::ContractExecutionLanes => "ContractExecutionLanes",
6586 Self::LiveSorobanStateSizeWindow => "LiveSorobanStateSizeWindow",
6587 Self::EvictionIterator => "EvictionIterator",
6588 Self::ContractParallelComputeV0 => "ContractParallelComputeV0",
6589 Self::ContractLedgerCostExtV0 => "ContractLedgerCostExtV0",
6590 Self::ScpTiming => "ScpTiming",
6591 }
6592 }
6593
6594 #[must_use]
6595 pub const fn variants() -> [ConfigSettingId; 17] {
6596 Self::VARIANTS
6597 }
6598}
6599
6600impl Name for ConfigSettingId {
6601 #[must_use]
6602 fn name(&self) -> &'static str {
6603 Self::name(self)
6604 }
6605}
6606
6607impl Variants<ConfigSettingId> for ConfigSettingId {
6608 fn variants() -> slice::Iter<'static, ConfigSettingId> {
6609 Self::VARIANTS.iter()
6610 }
6611}
6612
6613impl Enum for ConfigSettingId {}
6614
6615impl fmt::Display for ConfigSettingId {
6616 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
6617 f.write_str(self.name())
6618 }
6619}
6620
6621impl TryFrom<i32> for ConfigSettingId {
6622 type Error = Error;
6623
6624 fn try_from(i: i32) -> Result<Self, Error> {
6625 let e = match i {
6626 0 => ConfigSettingId::ContractMaxSizeBytes,
6627 1 => ConfigSettingId::ContractComputeV0,
6628 2 => ConfigSettingId::ContractLedgerCostV0,
6629 3 => ConfigSettingId::ContractHistoricalDataV0,
6630 4 => ConfigSettingId::ContractEventsV0,
6631 5 => ConfigSettingId::ContractBandwidthV0,
6632 6 => ConfigSettingId::ContractCostParamsCpuInstructions,
6633 7 => ConfigSettingId::ContractCostParamsMemoryBytes,
6634 8 => ConfigSettingId::ContractDataKeySizeBytes,
6635 9 => ConfigSettingId::ContractDataEntrySizeBytes,
6636 10 => ConfigSettingId::StateArchival,
6637 11 => ConfigSettingId::ContractExecutionLanes,
6638 12 => ConfigSettingId::LiveSorobanStateSizeWindow,
6639 13 => ConfigSettingId::EvictionIterator,
6640 14 => ConfigSettingId::ContractParallelComputeV0,
6641 15 => ConfigSettingId::ContractLedgerCostExtV0,
6642 16 => ConfigSettingId::ScpTiming,
6643 #[allow(unreachable_patterns)]
6644 _ => return Err(Error::Invalid),
6645 };
6646 Ok(e)
6647 }
6648}
6649
6650impl From<ConfigSettingId> for i32 {
6651 #[must_use]
6652 fn from(e: ConfigSettingId) -> Self {
6653 e as Self
6654 }
6655}
6656
6657impl ReadXdr for ConfigSettingId {
6658 #[cfg(feature = "std")]
6659 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6660 r.with_limited_depth(|r| {
6661 let e = i32::read_xdr(r)?;
6662 let v: Self = e.try_into()?;
6663 Ok(v)
6664 })
6665 }
6666}
6667
6668impl WriteXdr for ConfigSettingId {
6669 #[cfg(feature = "std")]
6670 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6671 w.with_limited_depth(|w| {
6672 let i: i32 = (*self).into();
6673 i.write_xdr(w)
6674 })
6675 }
6676}
6677
6678#[cfg_eval::cfg_eval]
6722#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6723#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6724#[cfg_attr(
6725 all(feature = "serde", feature = "alloc"),
6726 serde_with::serde_as,
6727 derive(serde::Serialize, serde::Deserialize),
6728 serde(rename_all = "snake_case")
6729)]
6730#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6731#[allow(clippy::large_enum_variant)]
6732pub enum ConfigSettingEntry {
6733 ContractMaxSizeBytes(u32),
6734 ContractComputeV0(ConfigSettingContractComputeV0),
6735 ContractLedgerCostV0(ConfigSettingContractLedgerCostV0),
6736 ContractHistoricalDataV0(ConfigSettingContractHistoricalDataV0),
6737 ContractEventsV0(ConfigSettingContractEventsV0),
6738 ContractBandwidthV0(ConfigSettingContractBandwidthV0),
6739 ContractCostParamsCpuInstructions(ContractCostParams),
6740 ContractCostParamsMemoryBytes(ContractCostParams),
6741 ContractDataKeySizeBytes(u32),
6742 ContractDataEntrySizeBytes(u32),
6743 StateArchival(StateArchivalSettings),
6744 ContractExecutionLanes(ConfigSettingContractExecutionLanesV0),
6745 LiveSorobanStateSizeWindow(
6746 #[cfg_attr(
6747 all(feature = "serde", feature = "alloc"),
6748 serde_as(as = "VecM<NumberOrString>")
6749 )]
6750 VecM<u64>,
6751 ),
6752 EvictionIterator(EvictionIterator),
6753 ContractParallelComputeV0(ConfigSettingContractParallelComputeV0),
6754 ContractLedgerCostExtV0(ConfigSettingContractLedgerCostExtV0),
6755 ScpTiming(ConfigSettingScpTiming),
6756}
6757
6758#[cfg(feature = "alloc")]
6759impl Default for ConfigSettingEntry {
6760 fn default() -> Self {
6761 Self::ContractMaxSizeBytes(u32::default())
6762 }
6763}
6764
6765impl ConfigSettingEntry {
6766 pub const VARIANTS: [ConfigSettingId; 17] = [
6767 ConfigSettingId::ContractMaxSizeBytes,
6768 ConfigSettingId::ContractComputeV0,
6769 ConfigSettingId::ContractLedgerCostV0,
6770 ConfigSettingId::ContractHistoricalDataV0,
6771 ConfigSettingId::ContractEventsV0,
6772 ConfigSettingId::ContractBandwidthV0,
6773 ConfigSettingId::ContractCostParamsCpuInstructions,
6774 ConfigSettingId::ContractCostParamsMemoryBytes,
6775 ConfigSettingId::ContractDataKeySizeBytes,
6776 ConfigSettingId::ContractDataEntrySizeBytes,
6777 ConfigSettingId::StateArchival,
6778 ConfigSettingId::ContractExecutionLanes,
6779 ConfigSettingId::LiveSorobanStateSizeWindow,
6780 ConfigSettingId::EvictionIterator,
6781 ConfigSettingId::ContractParallelComputeV0,
6782 ConfigSettingId::ContractLedgerCostExtV0,
6783 ConfigSettingId::ScpTiming,
6784 ];
6785 pub const VARIANTS_STR: [&'static str; 17] = [
6786 "ContractMaxSizeBytes",
6787 "ContractComputeV0",
6788 "ContractLedgerCostV0",
6789 "ContractHistoricalDataV0",
6790 "ContractEventsV0",
6791 "ContractBandwidthV0",
6792 "ContractCostParamsCpuInstructions",
6793 "ContractCostParamsMemoryBytes",
6794 "ContractDataKeySizeBytes",
6795 "ContractDataEntrySizeBytes",
6796 "StateArchival",
6797 "ContractExecutionLanes",
6798 "LiveSorobanStateSizeWindow",
6799 "EvictionIterator",
6800 "ContractParallelComputeV0",
6801 "ContractLedgerCostExtV0",
6802 "ScpTiming",
6803 ];
6804
6805 #[must_use]
6806 pub const fn name(&self) -> &'static str {
6807 match self {
6808 Self::ContractMaxSizeBytes(_) => "ContractMaxSizeBytes",
6809 Self::ContractComputeV0(_) => "ContractComputeV0",
6810 Self::ContractLedgerCostV0(_) => "ContractLedgerCostV0",
6811 Self::ContractHistoricalDataV0(_) => "ContractHistoricalDataV0",
6812 Self::ContractEventsV0(_) => "ContractEventsV0",
6813 Self::ContractBandwidthV0(_) => "ContractBandwidthV0",
6814 Self::ContractCostParamsCpuInstructions(_) => "ContractCostParamsCpuInstructions",
6815 Self::ContractCostParamsMemoryBytes(_) => "ContractCostParamsMemoryBytes",
6816 Self::ContractDataKeySizeBytes(_) => "ContractDataKeySizeBytes",
6817 Self::ContractDataEntrySizeBytes(_) => "ContractDataEntrySizeBytes",
6818 Self::StateArchival(_) => "StateArchival",
6819 Self::ContractExecutionLanes(_) => "ContractExecutionLanes",
6820 Self::LiveSorobanStateSizeWindow(_) => "LiveSorobanStateSizeWindow",
6821 Self::EvictionIterator(_) => "EvictionIterator",
6822 Self::ContractParallelComputeV0(_) => "ContractParallelComputeV0",
6823 Self::ContractLedgerCostExtV0(_) => "ContractLedgerCostExtV0",
6824 Self::ScpTiming(_) => "ScpTiming",
6825 }
6826 }
6827
6828 #[must_use]
6829 pub const fn discriminant(&self) -> ConfigSettingId {
6830 #[allow(clippy::match_same_arms)]
6831 match self {
6832 Self::ContractMaxSizeBytes(_) => ConfigSettingId::ContractMaxSizeBytes,
6833 Self::ContractComputeV0(_) => ConfigSettingId::ContractComputeV0,
6834 Self::ContractLedgerCostV0(_) => ConfigSettingId::ContractLedgerCostV0,
6835 Self::ContractHistoricalDataV0(_) => ConfigSettingId::ContractHistoricalDataV0,
6836 Self::ContractEventsV0(_) => ConfigSettingId::ContractEventsV0,
6837 Self::ContractBandwidthV0(_) => ConfigSettingId::ContractBandwidthV0,
6838 Self::ContractCostParamsCpuInstructions(_) => {
6839 ConfigSettingId::ContractCostParamsCpuInstructions
6840 }
6841 Self::ContractCostParamsMemoryBytes(_) => {
6842 ConfigSettingId::ContractCostParamsMemoryBytes
6843 }
6844 Self::ContractDataKeySizeBytes(_) => ConfigSettingId::ContractDataKeySizeBytes,
6845 Self::ContractDataEntrySizeBytes(_) => ConfigSettingId::ContractDataEntrySizeBytes,
6846 Self::StateArchival(_) => ConfigSettingId::StateArchival,
6847 Self::ContractExecutionLanes(_) => ConfigSettingId::ContractExecutionLanes,
6848 Self::LiveSorobanStateSizeWindow(_) => ConfigSettingId::LiveSorobanStateSizeWindow,
6849 Self::EvictionIterator(_) => ConfigSettingId::EvictionIterator,
6850 Self::ContractParallelComputeV0(_) => ConfigSettingId::ContractParallelComputeV0,
6851 Self::ContractLedgerCostExtV0(_) => ConfigSettingId::ContractLedgerCostExtV0,
6852 Self::ScpTiming(_) => ConfigSettingId::ScpTiming,
6853 }
6854 }
6855
6856 #[must_use]
6857 pub const fn variants() -> [ConfigSettingId; 17] {
6858 Self::VARIANTS
6859 }
6860}
6861
6862impl Name for ConfigSettingEntry {
6863 #[must_use]
6864 fn name(&self) -> &'static str {
6865 Self::name(self)
6866 }
6867}
6868
6869impl Discriminant<ConfigSettingId> for ConfigSettingEntry {
6870 #[must_use]
6871 fn discriminant(&self) -> ConfigSettingId {
6872 Self::discriminant(self)
6873 }
6874}
6875
6876impl Variants<ConfigSettingId> for ConfigSettingEntry {
6877 fn variants() -> slice::Iter<'static, ConfigSettingId> {
6878 Self::VARIANTS.iter()
6879 }
6880}
6881
6882impl Union<ConfigSettingId> for ConfigSettingEntry {}
6883
6884impl ReadXdr for ConfigSettingEntry {
6885 #[cfg(feature = "std")]
6886 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
6887 r.with_limited_depth(|r| {
6888 let dv: ConfigSettingId = <ConfigSettingId as ReadXdr>::read_xdr(r)?;
6889 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
6890 let v = match dv {
6891 ConfigSettingId::ContractMaxSizeBytes => {
6892 Self::ContractMaxSizeBytes(u32::read_xdr(r)?)
6893 }
6894 ConfigSettingId::ContractComputeV0 => {
6895 Self::ContractComputeV0(ConfigSettingContractComputeV0::read_xdr(r)?)
6896 }
6897 ConfigSettingId::ContractLedgerCostV0 => {
6898 Self::ContractLedgerCostV0(ConfigSettingContractLedgerCostV0::read_xdr(r)?)
6899 }
6900 ConfigSettingId::ContractHistoricalDataV0 => Self::ContractHistoricalDataV0(
6901 ConfigSettingContractHistoricalDataV0::read_xdr(r)?,
6902 ),
6903 ConfigSettingId::ContractEventsV0 => {
6904 Self::ContractEventsV0(ConfigSettingContractEventsV0::read_xdr(r)?)
6905 }
6906 ConfigSettingId::ContractBandwidthV0 => {
6907 Self::ContractBandwidthV0(ConfigSettingContractBandwidthV0::read_xdr(r)?)
6908 }
6909 ConfigSettingId::ContractCostParamsCpuInstructions => {
6910 Self::ContractCostParamsCpuInstructions(ContractCostParams::read_xdr(r)?)
6911 }
6912 ConfigSettingId::ContractCostParamsMemoryBytes => {
6913 Self::ContractCostParamsMemoryBytes(ContractCostParams::read_xdr(r)?)
6914 }
6915 ConfigSettingId::ContractDataKeySizeBytes => {
6916 Self::ContractDataKeySizeBytes(u32::read_xdr(r)?)
6917 }
6918 ConfigSettingId::ContractDataEntrySizeBytes => {
6919 Self::ContractDataEntrySizeBytes(u32::read_xdr(r)?)
6920 }
6921 ConfigSettingId::StateArchival => {
6922 Self::StateArchival(StateArchivalSettings::read_xdr(r)?)
6923 }
6924 ConfigSettingId::ContractExecutionLanes => Self::ContractExecutionLanes(
6925 ConfigSettingContractExecutionLanesV0::read_xdr(r)?,
6926 ),
6927 ConfigSettingId::LiveSorobanStateSizeWindow => {
6928 Self::LiveSorobanStateSizeWindow(VecM::<u64>::read_xdr(r)?)
6929 }
6930 ConfigSettingId::EvictionIterator => {
6931 Self::EvictionIterator(EvictionIterator::read_xdr(r)?)
6932 }
6933 ConfigSettingId::ContractParallelComputeV0 => Self::ContractParallelComputeV0(
6934 ConfigSettingContractParallelComputeV0::read_xdr(r)?,
6935 ),
6936 ConfigSettingId::ContractLedgerCostExtV0 => Self::ContractLedgerCostExtV0(
6937 ConfigSettingContractLedgerCostExtV0::read_xdr(r)?,
6938 ),
6939 ConfigSettingId::ScpTiming => Self::ScpTiming(ConfigSettingScpTiming::read_xdr(r)?),
6940 #[allow(unreachable_patterns)]
6941 _ => return Err(Error::Invalid),
6942 };
6943 Ok(v)
6944 })
6945 }
6946}
6947
6948impl WriteXdr for ConfigSettingEntry {
6949 #[cfg(feature = "std")]
6950 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
6951 w.with_limited_depth(|w| {
6952 self.discriminant().write_xdr(w)?;
6953 #[allow(clippy::match_same_arms)]
6954 match self {
6955 Self::ContractMaxSizeBytes(v) => v.write_xdr(w)?,
6956 Self::ContractComputeV0(v) => v.write_xdr(w)?,
6957 Self::ContractLedgerCostV0(v) => v.write_xdr(w)?,
6958 Self::ContractHistoricalDataV0(v) => v.write_xdr(w)?,
6959 Self::ContractEventsV0(v) => v.write_xdr(w)?,
6960 Self::ContractBandwidthV0(v) => v.write_xdr(w)?,
6961 Self::ContractCostParamsCpuInstructions(v) => v.write_xdr(w)?,
6962 Self::ContractCostParamsMemoryBytes(v) => v.write_xdr(w)?,
6963 Self::ContractDataKeySizeBytes(v) => v.write_xdr(w)?,
6964 Self::ContractDataEntrySizeBytes(v) => v.write_xdr(w)?,
6965 Self::StateArchival(v) => v.write_xdr(w)?,
6966 Self::ContractExecutionLanes(v) => v.write_xdr(w)?,
6967 Self::LiveSorobanStateSizeWindow(v) => v.write_xdr(w)?,
6968 Self::EvictionIterator(v) => v.write_xdr(w)?,
6969 Self::ContractParallelComputeV0(v) => v.write_xdr(w)?,
6970 Self::ContractLedgerCostExtV0(v) => v.write_xdr(w)?,
6971 Self::ScpTiming(v) => v.write_xdr(w)?,
6972 };
6973 Ok(())
6974 })
6975 }
6976}
6977
6978#[cfg_attr(feature = "alloc", derive(Default))]
6989#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
6990#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
6991#[cfg_attr(
6992 all(feature = "serde", feature = "alloc"),
6993 derive(serde::Serialize, serde::Deserialize),
6994 serde(rename_all = "snake_case")
6995)]
6996#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
6997#[repr(i32)]
6998pub enum ScEnvMetaKind {
6999 #[cfg_attr(feature = "alloc", default)]
7000 ScEnvMetaKindInterfaceVersion = 0,
7001}
7002
7003impl ScEnvMetaKind {
7004 pub const VARIANTS: [ScEnvMetaKind; 1] = [ScEnvMetaKind::ScEnvMetaKindInterfaceVersion];
7005 pub const VARIANTS_STR: [&'static str; 1] = ["ScEnvMetaKindInterfaceVersion"];
7006
7007 #[must_use]
7008 pub const fn name(&self) -> &'static str {
7009 match self {
7010 Self::ScEnvMetaKindInterfaceVersion => "ScEnvMetaKindInterfaceVersion",
7011 }
7012 }
7013
7014 #[must_use]
7015 pub const fn variants() -> [ScEnvMetaKind; 1] {
7016 Self::VARIANTS
7017 }
7018}
7019
7020impl Name for ScEnvMetaKind {
7021 #[must_use]
7022 fn name(&self) -> &'static str {
7023 Self::name(self)
7024 }
7025}
7026
7027impl Variants<ScEnvMetaKind> for ScEnvMetaKind {
7028 fn variants() -> slice::Iter<'static, ScEnvMetaKind> {
7029 Self::VARIANTS.iter()
7030 }
7031}
7032
7033impl Enum for ScEnvMetaKind {}
7034
7035impl fmt::Display for ScEnvMetaKind {
7036 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
7037 f.write_str(self.name())
7038 }
7039}
7040
7041impl TryFrom<i32> for ScEnvMetaKind {
7042 type Error = Error;
7043
7044 fn try_from(i: i32) -> Result<Self, Error> {
7045 let e = match i {
7046 0 => ScEnvMetaKind::ScEnvMetaKindInterfaceVersion,
7047 #[allow(unreachable_patterns)]
7048 _ => return Err(Error::Invalid),
7049 };
7050 Ok(e)
7051 }
7052}
7053
7054impl From<ScEnvMetaKind> for i32 {
7055 #[must_use]
7056 fn from(e: ScEnvMetaKind) -> Self {
7057 e as Self
7058 }
7059}
7060
7061impl ReadXdr for ScEnvMetaKind {
7062 #[cfg(feature = "std")]
7063 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7064 r.with_limited_depth(|r| {
7065 let e = i32::read_xdr(r)?;
7066 let v: Self = e.try_into()?;
7067 Ok(v)
7068 })
7069 }
7070}
7071
7072impl WriteXdr for ScEnvMetaKind {
7073 #[cfg(feature = "std")]
7074 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7075 w.with_limited_depth(|w| {
7076 let i: i32 = (*self).into();
7077 i.write_xdr(w)
7078 })
7079 }
7080}
7081
7082#[cfg_attr(feature = "alloc", derive(Default))]
7092#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7093#[cfg_eval::cfg_eval]
7094#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7095#[cfg_attr(
7096 all(feature = "serde", feature = "alloc"),
7097 serde_with::serde_as,
7098 derive(serde::Serialize, serde::Deserialize),
7099 serde(rename_all = "snake_case")
7100)]
7101#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7102pub struct ScEnvMetaEntryInterfaceVersion {
7103 pub protocol: u32,
7104 pub pre_release: u32,
7105}
7106
7107impl ReadXdr for ScEnvMetaEntryInterfaceVersion {
7108 #[cfg(feature = "std")]
7109 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7110 r.with_limited_depth(|r| {
7111 Ok(Self {
7112 protocol: u32::read_xdr(r)?,
7113 pre_release: u32::read_xdr(r)?,
7114 })
7115 })
7116 }
7117}
7118
7119impl WriteXdr for ScEnvMetaEntryInterfaceVersion {
7120 #[cfg(feature = "std")]
7121 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7122 w.with_limited_depth(|w| {
7123 self.protocol.write_xdr(w)?;
7124 self.pre_release.write_xdr(w)?;
7125 Ok(())
7126 })
7127 }
7128}
7129
7130#[cfg_eval::cfg_eval]
7145#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7146#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7147#[cfg_attr(
7148 all(feature = "serde", feature = "alloc"),
7149 serde_with::serde_as,
7150 derive(serde::Serialize, serde::Deserialize),
7151 serde(rename_all = "snake_case")
7152)]
7153#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7154#[allow(clippy::large_enum_variant)]
7155pub enum ScEnvMetaEntry {
7156 ScEnvMetaKindInterfaceVersion(ScEnvMetaEntryInterfaceVersion),
7157}
7158
7159#[cfg(feature = "alloc")]
7160impl Default for ScEnvMetaEntry {
7161 fn default() -> Self {
7162 Self::ScEnvMetaKindInterfaceVersion(ScEnvMetaEntryInterfaceVersion::default())
7163 }
7164}
7165
7166impl ScEnvMetaEntry {
7167 pub const VARIANTS: [ScEnvMetaKind; 1] = [ScEnvMetaKind::ScEnvMetaKindInterfaceVersion];
7168 pub const VARIANTS_STR: [&'static str; 1] = ["ScEnvMetaKindInterfaceVersion"];
7169
7170 #[must_use]
7171 pub const fn name(&self) -> &'static str {
7172 match self {
7173 Self::ScEnvMetaKindInterfaceVersion(_) => "ScEnvMetaKindInterfaceVersion",
7174 }
7175 }
7176
7177 #[must_use]
7178 pub const fn discriminant(&self) -> ScEnvMetaKind {
7179 #[allow(clippy::match_same_arms)]
7180 match self {
7181 Self::ScEnvMetaKindInterfaceVersion(_) => ScEnvMetaKind::ScEnvMetaKindInterfaceVersion,
7182 }
7183 }
7184
7185 #[must_use]
7186 pub const fn variants() -> [ScEnvMetaKind; 1] {
7187 Self::VARIANTS
7188 }
7189}
7190
7191impl Name for ScEnvMetaEntry {
7192 #[must_use]
7193 fn name(&self) -> &'static str {
7194 Self::name(self)
7195 }
7196}
7197
7198impl Discriminant<ScEnvMetaKind> for ScEnvMetaEntry {
7199 #[must_use]
7200 fn discriminant(&self) -> ScEnvMetaKind {
7201 Self::discriminant(self)
7202 }
7203}
7204
7205impl Variants<ScEnvMetaKind> for ScEnvMetaEntry {
7206 fn variants() -> slice::Iter<'static, ScEnvMetaKind> {
7207 Self::VARIANTS.iter()
7208 }
7209}
7210
7211impl Union<ScEnvMetaKind> for ScEnvMetaEntry {}
7212
7213impl ReadXdr for ScEnvMetaEntry {
7214 #[cfg(feature = "std")]
7215 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7216 r.with_limited_depth(|r| {
7217 let dv: ScEnvMetaKind = <ScEnvMetaKind as ReadXdr>::read_xdr(r)?;
7218 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
7219 let v = match dv {
7220 ScEnvMetaKind::ScEnvMetaKindInterfaceVersion => {
7221 Self::ScEnvMetaKindInterfaceVersion(ScEnvMetaEntryInterfaceVersion::read_xdr(
7222 r,
7223 )?)
7224 }
7225 #[allow(unreachable_patterns)]
7226 _ => return Err(Error::Invalid),
7227 };
7228 Ok(v)
7229 })
7230 }
7231}
7232
7233impl WriteXdr for ScEnvMetaEntry {
7234 #[cfg(feature = "std")]
7235 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7236 w.with_limited_depth(|w| {
7237 self.discriminant().write_xdr(w)?;
7238 #[allow(clippy::match_same_arms)]
7239 match self {
7240 Self::ScEnvMetaKindInterfaceVersion(v) => v.write_xdr(w)?,
7241 };
7242 Ok(())
7243 })
7244 }
7245}
7246
7247#[cfg_attr(feature = "alloc", derive(Default))]
7258#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7259#[cfg_eval::cfg_eval]
7260#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7261#[cfg_attr(
7262 all(feature = "serde", feature = "alloc"),
7263 serde_with::serde_as,
7264 derive(serde::Serialize, serde::Deserialize),
7265 serde(rename_all = "snake_case")
7266)]
7267#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7268pub struct ScMetaV0 {
7269 pub key: StringM,
7270 pub val: StringM,
7271}
7272
7273impl ReadXdr for ScMetaV0 {
7274 #[cfg(feature = "std")]
7275 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7276 r.with_limited_depth(|r| {
7277 Ok(Self {
7278 key: StringM::read_xdr(r)?,
7279 val: StringM::read_xdr(r)?,
7280 })
7281 })
7282 }
7283}
7284
7285impl WriteXdr for ScMetaV0 {
7286 #[cfg(feature = "std")]
7287 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7288 w.with_limited_depth(|w| {
7289 self.key.write_xdr(w)?;
7290 self.val.write_xdr(w)?;
7291 Ok(())
7292 })
7293 }
7294}
7295
7296#[cfg_attr(feature = "alloc", derive(Default))]
7307#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7308#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7309#[cfg_attr(
7310 all(feature = "serde", feature = "alloc"),
7311 derive(serde::Serialize, serde::Deserialize),
7312 serde(rename_all = "snake_case")
7313)]
7314#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7315#[repr(i32)]
7316pub enum ScMetaKind {
7317 #[cfg_attr(feature = "alloc", default)]
7318 ScMetaV0 = 0,
7319}
7320
7321impl ScMetaKind {
7322 pub const VARIANTS: [ScMetaKind; 1] = [ScMetaKind::ScMetaV0];
7323 pub const VARIANTS_STR: [&'static str; 1] = ["ScMetaV0"];
7324
7325 #[must_use]
7326 pub const fn name(&self) -> &'static str {
7327 match self {
7328 Self::ScMetaV0 => "ScMetaV0",
7329 }
7330 }
7331
7332 #[must_use]
7333 pub const fn variants() -> [ScMetaKind; 1] {
7334 Self::VARIANTS
7335 }
7336}
7337
7338impl Name for ScMetaKind {
7339 #[must_use]
7340 fn name(&self) -> &'static str {
7341 Self::name(self)
7342 }
7343}
7344
7345impl Variants<ScMetaKind> for ScMetaKind {
7346 fn variants() -> slice::Iter<'static, ScMetaKind> {
7347 Self::VARIANTS.iter()
7348 }
7349}
7350
7351impl Enum for ScMetaKind {}
7352
7353impl fmt::Display for ScMetaKind {
7354 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
7355 f.write_str(self.name())
7356 }
7357}
7358
7359impl TryFrom<i32> for ScMetaKind {
7360 type Error = Error;
7361
7362 fn try_from(i: i32) -> Result<Self, Error> {
7363 let e = match i {
7364 0 => ScMetaKind::ScMetaV0,
7365 #[allow(unreachable_patterns)]
7366 _ => return Err(Error::Invalid),
7367 };
7368 Ok(e)
7369 }
7370}
7371
7372impl From<ScMetaKind> for i32 {
7373 #[must_use]
7374 fn from(e: ScMetaKind) -> Self {
7375 e as Self
7376 }
7377}
7378
7379impl ReadXdr for ScMetaKind {
7380 #[cfg(feature = "std")]
7381 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7382 r.with_limited_depth(|r| {
7383 let e = i32::read_xdr(r)?;
7384 let v: Self = e.try_into()?;
7385 Ok(v)
7386 })
7387 }
7388}
7389
7390impl WriteXdr for ScMetaKind {
7391 #[cfg(feature = "std")]
7392 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7393 w.with_limited_depth(|w| {
7394 let i: i32 = (*self).into();
7395 i.write_xdr(w)
7396 })
7397 }
7398}
7399
7400#[cfg_eval::cfg_eval]
7412#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7413#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7414#[cfg_attr(
7415 all(feature = "serde", feature = "alloc"),
7416 serde_with::serde_as,
7417 derive(serde::Serialize, serde::Deserialize),
7418 serde(rename_all = "snake_case")
7419)]
7420#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7421#[allow(clippy::large_enum_variant)]
7422pub enum ScMetaEntry {
7423 ScMetaV0(ScMetaV0),
7424}
7425
7426#[cfg(feature = "alloc")]
7427impl Default for ScMetaEntry {
7428 fn default() -> Self {
7429 Self::ScMetaV0(ScMetaV0::default())
7430 }
7431}
7432
7433impl ScMetaEntry {
7434 pub const VARIANTS: [ScMetaKind; 1] = [ScMetaKind::ScMetaV0];
7435 pub const VARIANTS_STR: [&'static str; 1] = ["ScMetaV0"];
7436
7437 #[must_use]
7438 pub const fn name(&self) -> &'static str {
7439 match self {
7440 Self::ScMetaV0(_) => "ScMetaV0",
7441 }
7442 }
7443
7444 #[must_use]
7445 pub const fn discriminant(&self) -> ScMetaKind {
7446 #[allow(clippy::match_same_arms)]
7447 match self {
7448 Self::ScMetaV0(_) => ScMetaKind::ScMetaV0,
7449 }
7450 }
7451
7452 #[must_use]
7453 pub const fn variants() -> [ScMetaKind; 1] {
7454 Self::VARIANTS
7455 }
7456}
7457
7458impl Name for ScMetaEntry {
7459 #[must_use]
7460 fn name(&self) -> &'static str {
7461 Self::name(self)
7462 }
7463}
7464
7465impl Discriminant<ScMetaKind> for ScMetaEntry {
7466 #[must_use]
7467 fn discriminant(&self) -> ScMetaKind {
7468 Self::discriminant(self)
7469 }
7470}
7471
7472impl Variants<ScMetaKind> for ScMetaEntry {
7473 fn variants() -> slice::Iter<'static, ScMetaKind> {
7474 Self::VARIANTS.iter()
7475 }
7476}
7477
7478impl Union<ScMetaKind> for ScMetaEntry {}
7479
7480impl ReadXdr for ScMetaEntry {
7481 #[cfg(feature = "std")]
7482 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7483 r.with_limited_depth(|r| {
7484 let dv: ScMetaKind = <ScMetaKind as ReadXdr>::read_xdr(r)?;
7485 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
7486 let v = match dv {
7487 ScMetaKind::ScMetaV0 => Self::ScMetaV0(ScMetaV0::read_xdr(r)?),
7488 #[allow(unreachable_patterns)]
7489 _ => return Err(Error::Invalid),
7490 };
7491 Ok(v)
7492 })
7493 }
7494}
7495
7496impl WriteXdr for ScMetaEntry {
7497 #[cfg(feature = "std")]
7498 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7499 w.with_limited_depth(|w| {
7500 self.discriminant().write_xdr(w)?;
7501 #[allow(clippy::match_same_arms)]
7502 match self {
7503 Self::ScMetaV0(v) => v.write_xdr(w)?,
7504 };
7505 Ok(())
7506 })
7507 }
7508}
7509
7510pub const SC_SPEC_DOC_LIMIT: u64 = 1024;
7517
7518#[cfg_attr(feature = "alloc", derive(Default))]
7560#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7561#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7562#[cfg_attr(
7563 all(feature = "serde", feature = "alloc"),
7564 derive(serde::Serialize, serde::Deserialize),
7565 serde(rename_all = "snake_case")
7566)]
7567#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7568#[repr(i32)]
7569pub enum ScSpecType {
7570 #[cfg_attr(feature = "alloc", default)]
7571 Val = 0,
7572 Bool = 1,
7573 Void = 2,
7574 Error = 3,
7575 U32 = 4,
7576 I32 = 5,
7577 U64 = 6,
7578 I64 = 7,
7579 Timepoint = 8,
7580 Duration = 9,
7581 U128 = 10,
7582 I128 = 11,
7583 U256 = 12,
7584 I256 = 13,
7585 Bytes = 14,
7586 String = 16,
7587 Symbol = 17,
7588 Address = 19,
7589 MuxedAddress = 20,
7590 Option = 1000,
7591 Result = 1001,
7592 Vec = 1002,
7593 Map = 1004,
7594 Tuple = 1005,
7595 BytesN = 1006,
7596 Udt = 2000,
7597}
7598
7599impl ScSpecType {
7600 pub const VARIANTS: [ScSpecType; 26] = [
7601 ScSpecType::Val,
7602 ScSpecType::Bool,
7603 ScSpecType::Void,
7604 ScSpecType::Error,
7605 ScSpecType::U32,
7606 ScSpecType::I32,
7607 ScSpecType::U64,
7608 ScSpecType::I64,
7609 ScSpecType::Timepoint,
7610 ScSpecType::Duration,
7611 ScSpecType::U128,
7612 ScSpecType::I128,
7613 ScSpecType::U256,
7614 ScSpecType::I256,
7615 ScSpecType::Bytes,
7616 ScSpecType::String,
7617 ScSpecType::Symbol,
7618 ScSpecType::Address,
7619 ScSpecType::MuxedAddress,
7620 ScSpecType::Option,
7621 ScSpecType::Result,
7622 ScSpecType::Vec,
7623 ScSpecType::Map,
7624 ScSpecType::Tuple,
7625 ScSpecType::BytesN,
7626 ScSpecType::Udt,
7627 ];
7628 pub const VARIANTS_STR: [&'static str; 26] = [
7629 "Val",
7630 "Bool",
7631 "Void",
7632 "Error",
7633 "U32",
7634 "I32",
7635 "U64",
7636 "I64",
7637 "Timepoint",
7638 "Duration",
7639 "U128",
7640 "I128",
7641 "U256",
7642 "I256",
7643 "Bytes",
7644 "String",
7645 "Symbol",
7646 "Address",
7647 "MuxedAddress",
7648 "Option",
7649 "Result",
7650 "Vec",
7651 "Map",
7652 "Tuple",
7653 "BytesN",
7654 "Udt",
7655 ];
7656
7657 #[must_use]
7658 pub const fn name(&self) -> &'static str {
7659 match self {
7660 Self::Val => "Val",
7661 Self::Bool => "Bool",
7662 Self::Void => "Void",
7663 Self::Error => "Error",
7664 Self::U32 => "U32",
7665 Self::I32 => "I32",
7666 Self::U64 => "U64",
7667 Self::I64 => "I64",
7668 Self::Timepoint => "Timepoint",
7669 Self::Duration => "Duration",
7670 Self::U128 => "U128",
7671 Self::I128 => "I128",
7672 Self::U256 => "U256",
7673 Self::I256 => "I256",
7674 Self::Bytes => "Bytes",
7675 Self::String => "String",
7676 Self::Symbol => "Symbol",
7677 Self::Address => "Address",
7678 Self::MuxedAddress => "MuxedAddress",
7679 Self::Option => "Option",
7680 Self::Result => "Result",
7681 Self::Vec => "Vec",
7682 Self::Map => "Map",
7683 Self::Tuple => "Tuple",
7684 Self::BytesN => "BytesN",
7685 Self::Udt => "Udt",
7686 }
7687 }
7688
7689 #[must_use]
7690 pub const fn variants() -> [ScSpecType; 26] {
7691 Self::VARIANTS
7692 }
7693}
7694
7695impl Name for ScSpecType {
7696 #[must_use]
7697 fn name(&self) -> &'static str {
7698 Self::name(self)
7699 }
7700}
7701
7702impl Variants<ScSpecType> for ScSpecType {
7703 fn variants() -> slice::Iter<'static, ScSpecType> {
7704 Self::VARIANTS.iter()
7705 }
7706}
7707
7708impl Enum for ScSpecType {}
7709
7710impl fmt::Display for ScSpecType {
7711 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
7712 f.write_str(self.name())
7713 }
7714}
7715
7716impl TryFrom<i32> for ScSpecType {
7717 type Error = Error;
7718
7719 fn try_from(i: i32) -> Result<Self, Error> {
7720 let e = match i {
7721 0 => ScSpecType::Val,
7722 1 => ScSpecType::Bool,
7723 2 => ScSpecType::Void,
7724 3 => ScSpecType::Error,
7725 4 => ScSpecType::U32,
7726 5 => ScSpecType::I32,
7727 6 => ScSpecType::U64,
7728 7 => ScSpecType::I64,
7729 8 => ScSpecType::Timepoint,
7730 9 => ScSpecType::Duration,
7731 10 => ScSpecType::U128,
7732 11 => ScSpecType::I128,
7733 12 => ScSpecType::U256,
7734 13 => ScSpecType::I256,
7735 14 => ScSpecType::Bytes,
7736 16 => ScSpecType::String,
7737 17 => ScSpecType::Symbol,
7738 19 => ScSpecType::Address,
7739 20 => ScSpecType::MuxedAddress,
7740 1000 => ScSpecType::Option,
7741 1001 => ScSpecType::Result,
7742 1002 => ScSpecType::Vec,
7743 1004 => ScSpecType::Map,
7744 1005 => ScSpecType::Tuple,
7745 1006 => ScSpecType::BytesN,
7746 2000 => ScSpecType::Udt,
7747 #[allow(unreachable_patterns)]
7748 _ => return Err(Error::Invalid),
7749 };
7750 Ok(e)
7751 }
7752}
7753
7754impl From<ScSpecType> for i32 {
7755 #[must_use]
7756 fn from(e: ScSpecType) -> Self {
7757 e as Self
7758 }
7759}
7760
7761impl ReadXdr for ScSpecType {
7762 #[cfg(feature = "std")]
7763 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7764 r.with_limited_depth(|r| {
7765 let e = i32::read_xdr(r)?;
7766 let v: Self = e.try_into()?;
7767 Ok(v)
7768 })
7769 }
7770}
7771
7772impl WriteXdr for ScSpecType {
7773 #[cfg(feature = "std")]
7774 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7775 w.with_limited_depth(|w| {
7776 let i: i32 = (*self).into();
7777 i.write_xdr(w)
7778 })
7779 }
7780}
7781
7782#[cfg_attr(feature = "alloc", derive(Default))]
7792#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7793#[cfg_eval::cfg_eval]
7794#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7795#[cfg_attr(
7796 all(feature = "serde", feature = "alloc"),
7797 serde_with::serde_as,
7798 derive(serde::Serialize, serde::Deserialize),
7799 serde(rename_all = "snake_case")
7800)]
7801#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7802pub struct ScSpecTypeOption {
7803 pub value_type: Box<ScSpecTypeDef>,
7804}
7805
7806impl ReadXdr for ScSpecTypeOption {
7807 #[cfg(feature = "std")]
7808 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7809 r.with_limited_depth(|r| {
7810 Ok(Self {
7811 value_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7812 })
7813 })
7814 }
7815}
7816
7817impl WriteXdr for ScSpecTypeOption {
7818 #[cfg(feature = "std")]
7819 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7820 w.with_limited_depth(|w| {
7821 self.value_type.write_xdr(w)?;
7822 Ok(())
7823 })
7824 }
7825}
7826
7827#[cfg_attr(feature = "alloc", derive(Default))]
7838#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7839#[cfg_eval::cfg_eval]
7840#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7841#[cfg_attr(
7842 all(feature = "serde", feature = "alloc"),
7843 serde_with::serde_as,
7844 derive(serde::Serialize, serde::Deserialize),
7845 serde(rename_all = "snake_case")
7846)]
7847#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7848pub struct ScSpecTypeResult {
7849 pub ok_type: Box<ScSpecTypeDef>,
7850 pub error_type: Box<ScSpecTypeDef>,
7851}
7852
7853impl ReadXdr for ScSpecTypeResult {
7854 #[cfg(feature = "std")]
7855 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7856 r.with_limited_depth(|r| {
7857 Ok(Self {
7858 ok_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7859 error_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7860 })
7861 })
7862 }
7863}
7864
7865impl WriteXdr for ScSpecTypeResult {
7866 #[cfg(feature = "std")]
7867 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7868 w.with_limited_depth(|w| {
7869 self.ok_type.write_xdr(w)?;
7870 self.error_type.write_xdr(w)?;
7871 Ok(())
7872 })
7873 }
7874}
7875
7876#[cfg_attr(feature = "alloc", derive(Default))]
7886#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7887#[cfg_eval::cfg_eval]
7888#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7889#[cfg_attr(
7890 all(feature = "serde", feature = "alloc"),
7891 serde_with::serde_as,
7892 derive(serde::Serialize, serde::Deserialize),
7893 serde(rename_all = "snake_case")
7894)]
7895#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7896pub struct ScSpecTypeVec {
7897 pub element_type: Box<ScSpecTypeDef>,
7898}
7899
7900impl ReadXdr for ScSpecTypeVec {
7901 #[cfg(feature = "std")]
7902 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7903 r.with_limited_depth(|r| {
7904 Ok(Self {
7905 element_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7906 })
7907 })
7908 }
7909}
7910
7911impl WriteXdr for ScSpecTypeVec {
7912 #[cfg(feature = "std")]
7913 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7914 w.with_limited_depth(|w| {
7915 self.element_type.write_xdr(w)?;
7916 Ok(())
7917 })
7918 }
7919}
7920
7921#[cfg_attr(feature = "alloc", derive(Default))]
7932#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7933#[cfg_eval::cfg_eval]
7934#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7935#[cfg_attr(
7936 all(feature = "serde", feature = "alloc"),
7937 serde_with::serde_as,
7938 derive(serde::Serialize, serde::Deserialize),
7939 serde(rename_all = "snake_case")
7940)]
7941#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7942pub struct ScSpecTypeMap {
7943 pub key_type: Box<ScSpecTypeDef>,
7944 pub value_type: Box<ScSpecTypeDef>,
7945}
7946
7947impl ReadXdr for ScSpecTypeMap {
7948 #[cfg(feature = "std")]
7949 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7950 r.with_limited_depth(|r| {
7951 Ok(Self {
7952 key_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7953 value_type: Box::<ScSpecTypeDef>::read_xdr(r)?,
7954 })
7955 })
7956 }
7957}
7958
7959impl WriteXdr for ScSpecTypeMap {
7960 #[cfg(feature = "std")]
7961 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
7962 w.with_limited_depth(|w| {
7963 self.key_type.write_xdr(w)?;
7964 self.value_type.write_xdr(w)?;
7965 Ok(())
7966 })
7967 }
7968}
7969
7970#[cfg_attr(feature = "alloc", derive(Default))]
7980#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
7981#[cfg_eval::cfg_eval]
7982#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
7983#[cfg_attr(
7984 all(feature = "serde", feature = "alloc"),
7985 serde_with::serde_as,
7986 derive(serde::Serialize, serde::Deserialize),
7987 serde(rename_all = "snake_case")
7988)]
7989#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
7990pub struct ScSpecTypeTuple {
7991 pub value_types: VecM<ScSpecTypeDef, 12>,
7992}
7993
7994impl ReadXdr for ScSpecTypeTuple {
7995 #[cfg(feature = "std")]
7996 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
7997 r.with_limited_depth(|r| {
7998 Ok(Self {
7999 value_types: VecM::<ScSpecTypeDef, 12>::read_xdr(r)?,
8000 })
8001 })
8002 }
8003}
8004
8005impl WriteXdr for ScSpecTypeTuple {
8006 #[cfg(feature = "std")]
8007 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8008 w.with_limited_depth(|w| {
8009 self.value_types.write_xdr(w)?;
8010 Ok(())
8011 })
8012 }
8013}
8014
8015#[cfg_attr(feature = "alloc", derive(Default))]
8025#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8026#[cfg_eval::cfg_eval]
8027#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8028#[cfg_attr(
8029 all(feature = "serde", feature = "alloc"),
8030 serde_with::serde_as,
8031 derive(serde::Serialize, serde::Deserialize),
8032 serde(rename_all = "snake_case")
8033)]
8034#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8035pub struct ScSpecTypeBytesN {
8036 pub n: u32,
8037}
8038
8039impl ReadXdr for ScSpecTypeBytesN {
8040 #[cfg(feature = "std")]
8041 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8042 r.with_limited_depth(|r| {
8043 Ok(Self {
8044 n: u32::read_xdr(r)?,
8045 })
8046 })
8047 }
8048}
8049
8050impl WriteXdr for ScSpecTypeBytesN {
8051 #[cfg(feature = "std")]
8052 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8053 w.with_limited_depth(|w| {
8054 self.n.write_xdr(w)?;
8055 Ok(())
8056 })
8057 }
8058}
8059
8060#[cfg_attr(feature = "alloc", derive(Default))]
8070#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8071#[cfg_eval::cfg_eval]
8072#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8073#[cfg_attr(
8074 all(feature = "serde", feature = "alloc"),
8075 serde_with::serde_as,
8076 derive(serde::Serialize, serde::Deserialize),
8077 serde(rename_all = "snake_case")
8078)]
8079#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8080pub struct ScSpecTypeUdt {
8081 pub name: StringM<60>,
8082}
8083
8084impl ReadXdr for ScSpecTypeUdt {
8085 #[cfg(feature = "std")]
8086 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8087 r.with_limited_depth(|r| {
8088 Ok(Self {
8089 name: StringM::<60>::read_xdr(r)?,
8090 })
8091 })
8092 }
8093}
8094
8095impl WriteXdr for ScSpecTypeUdt {
8096 #[cfg(feature = "std")]
8097 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8098 w.with_limited_depth(|w| {
8099 self.name.write_xdr(w)?;
8100 Ok(())
8101 })
8102 }
8103}
8104
8105#[cfg_eval::cfg_eval]
8149#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8150#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8151#[cfg_attr(
8152 all(feature = "serde", feature = "alloc"),
8153 serde_with::serde_as,
8154 derive(serde::Serialize, serde::Deserialize),
8155 serde(rename_all = "snake_case")
8156)]
8157#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8158#[allow(clippy::large_enum_variant)]
8159pub enum ScSpecTypeDef {
8160 Val,
8161 Bool,
8162 Void,
8163 Error,
8164 U32,
8165 I32,
8166 U64,
8167 I64,
8168 Timepoint,
8169 Duration,
8170 U128,
8171 I128,
8172 U256,
8173 I256,
8174 Bytes,
8175 String,
8176 Symbol,
8177 Address,
8178 MuxedAddress,
8179 Option(Box<ScSpecTypeOption>),
8180 Result(Box<ScSpecTypeResult>),
8181 Vec(Box<ScSpecTypeVec>),
8182 Map(Box<ScSpecTypeMap>),
8183 Tuple(Box<ScSpecTypeTuple>),
8184 BytesN(ScSpecTypeBytesN),
8185 Udt(ScSpecTypeUdt),
8186}
8187
8188#[cfg(feature = "alloc")]
8189impl Default for ScSpecTypeDef {
8190 fn default() -> Self {
8191 Self::Val
8192 }
8193}
8194
8195impl ScSpecTypeDef {
8196 pub const VARIANTS: [ScSpecType; 26] = [
8197 ScSpecType::Val,
8198 ScSpecType::Bool,
8199 ScSpecType::Void,
8200 ScSpecType::Error,
8201 ScSpecType::U32,
8202 ScSpecType::I32,
8203 ScSpecType::U64,
8204 ScSpecType::I64,
8205 ScSpecType::Timepoint,
8206 ScSpecType::Duration,
8207 ScSpecType::U128,
8208 ScSpecType::I128,
8209 ScSpecType::U256,
8210 ScSpecType::I256,
8211 ScSpecType::Bytes,
8212 ScSpecType::String,
8213 ScSpecType::Symbol,
8214 ScSpecType::Address,
8215 ScSpecType::MuxedAddress,
8216 ScSpecType::Option,
8217 ScSpecType::Result,
8218 ScSpecType::Vec,
8219 ScSpecType::Map,
8220 ScSpecType::Tuple,
8221 ScSpecType::BytesN,
8222 ScSpecType::Udt,
8223 ];
8224 pub const VARIANTS_STR: [&'static str; 26] = [
8225 "Val",
8226 "Bool",
8227 "Void",
8228 "Error",
8229 "U32",
8230 "I32",
8231 "U64",
8232 "I64",
8233 "Timepoint",
8234 "Duration",
8235 "U128",
8236 "I128",
8237 "U256",
8238 "I256",
8239 "Bytes",
8240 "String",
8241 "Symbol",
8242 "Address",
8243 "MuxedAddress",
8244 "Option",
8245 "Result",
8246 "Vec",
8247 "Map",
8248 "Tuple",
8249 "BytesN",
8250 "Udt",
8251 ];
8252
8253 #[must_use]
8254 pub const fn name(&self) -> &'static str {
8255 match self {
8256 Self::Val => "Val",
8257 Self::Bool => "Bool",
8258 Self::Void => "Void",
8259 Self::Error => "Error",
8260 Self::U32 => "U32",
8261 Self::I32 => "I32",
8262 Self::U64 => "U64",
8263 Self::I64 => "I64",
8264 Self::Timepoint => "Timepoint",
8265 Self::Duration => "Duration",
8266 Self::U128 => "U128",
8267 Self::I128 => "I128",
8268 Self::U256 => "U256",
8269 Self::I256 => "I256",
8270 Self::Bytes => "Bytes",
8271 Self::String => "String",
8272 Self::Symbol => "Symbol",
8273 Self::Address => "Address",
8274 Self::MuxedAddress => "MuxedAddress",
8275 Self::Option(_) => "Option",
8276 Self::Result(_) => "Result",
8277 Self::Vec(_) => "Vec",
8278 Self::Map(_) => "Map",
8279 Self::Tuple(_) => "Tuple",
8280 Self::BytesN(_) => "BytesN",
8281 Self::Udt(_) => "Udt",
8282 }
8283 }
8284
8285 #[must_use]
8286 pub const fn discriminant(&self) -> ScSpecType {
8287 #[allow(clippy::match_same_arms)]
8288 match self {
8289 Self::Val => ScSpecType::Val,
8290 Self::Bool => ScSpecType::Bool,
8291 Self::Void => ScSpecType::Void,
8292 Self::Error => ScSpecType::Error,
8293 Self::U32 => ScSpecType::U32,
8294 Self::I32 => ScSpecType::I32,
8295 Self::U64 => ScSpecType::U64,
8296 Self::I64 => ScSpecType::I64,
8297 Self::Timepoint => ScSpecType::Timepoint,
8298 Self::Duration => ScSpecType::Duration,
8299 Self::U128 => ScSpecType::U128,
8300 Self::I128 => ScSpecType::I128,
8301 Self::U256 => ScSpecType::U256,
8302 Self::I256 => ScSpecType::I256,
8303 Self::Bytes => ScSpecType::Bytes,
8304 Self::String => ScSpecType::String,
8305 Self::Symbol => ScSpecType::Symbol,
8306 Self::Address => ScSpecType::Address,
8307 Self::MuxedAddress => ScSpecType::MuxedAddress,
8308 Self::Option(_) => ScSpecType::Option,
8309 Self::Result(_) => ScSpecType::Result,
8310 Self::Vec(_) => ScSpecType::Vec,
8311 Self::Map(_) => ScSpecType::Map,
8312 Self::Tuple(_) => ScSpecType::Tuple,
8313 Self::BytesN(_) => ScSpecType::BytesN,
8314 Self::Udt(_) => ScSpecType::Udt,
8315 }
8316 }
8317
8318 #[must_use]
8319 pub const fn variants() -> [ScSpecType; 26] {
8320 Self::VARIANTS
8321 }
8322}
8323
8324impl Name for ScSpecTypeDef {
8325 #[must_use]
8326 fn name(&self) -> &'static str {
8327 Self::name(self)
8328 }
8329}
8330
8331impl Discriminant<ScSpecType> for ScSpecTypeDef {
8332 #[must_use]
8333 fn discriminant(&self) -> ScSpecType {
8334 Self::discriminant(self)
8335 }
8336}
8337
8338impl Variants<ScSpecType> for ScSpecTypeDef {
8339 fn variants() -> slice::Iter<'static, ScSpecType> {
8340 Self::VARIANTS.iter()
8341 }
8342}
8343
8344impl Union<ScSpecType> for ScSpecTypeDef {}
8345
8346impl ReadXdr for ScSpecTypeDef {
8347 #[cfg(feature = "std")]
8348 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8349 r.with_limited_depth(|r| {
8350 let dv: ScSpecType = <ScSpecType as ReadXdr>::read_xdr(r)?;
8351 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
8352 let v = match dv {
8353 ScSpecType::Val => Self::Val,
8354 ScSpecType::Bool => Self::Bool,
8355 ScSpecType::Void => Self::Void,
8356 ScSpecType::Error => Self::Error,
8357 ScSpecType::U32 => Self::U32,
8358 ScSpecType::I32 => Self::I32,
8359 ScSpecType::U64 => Self::U64,
8360 ScSpecType::I64 => Self::I64,
8361 ScSpecType::Timepoint => Self::Timepoint,
8362 ScSpecType::Duration => Self::Duration,
8363 ScSpecType::U128 => Self::U128,
8364 ScSpecType::I128 => Self::I128,
8365 ScSpecType::U256 => Self::U256,
8366 ScSpecType::I256 => Self::I256,
8367 ScSpecType::Bytes => Self::Bytes,
8368 ScSpecType::String => Self::String,
8369 ScSpecType::Symbol => Self::Symbol,
8370 ScSpecType::Address => Self::Address,
8371 ScSpecType::MuxedAddress => Self::MuxedAddress,
8372 ScSpecType::Option => Self::Option(Box::<ScSpecTypeOption>::read_xdr(r)?),
8373 ScSpecType::Result => Self::Result(Box::<ScSpecTypeResult>::read_xdr(r)?),
8374 ScSpecType::Vec => Self::Vec(Box::<ScSpecTypeVec>::read_xdr(r)?),
8375 ScSpecType::Map => Self::Map(Box::<ScSpecTypeMap>::read_xdr(r)?),
8376 ScSpecType::Tuple => Self::Tuple(Box::<ScSpecTypeTuple>::read_xdr(r)?),
8377 ScSpecType::BytesN => Self::BytesN(ScSpecTypeBytesN::read_xdr(r)?),
8378 ScSpecType::Udt => Self::Udt(ScSpecTypeUdt::read_xdr(r)?),
8379 #[allow(unreachable_patterns)]
8380 _ => return Err(Error::Invalid),
8381 };
8382 Ok(v)
8383 })
8384 }
8385}
8386
8387impl WriteXdr for ScSpecTypeDef {
8388 #[cfg(feature = "std")]
8389 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8390 w.with_limited_depth(|w| {
8391 self.discriminant().write_xdr(w)?;
8392 #[allow(clippy::match_same_arms)]
8393 match self {
8394 Self::Val => ().write_xdr(w)?,
8395 Self::Bool => ().write_xdr(w)?,
8396 Self::Void => ().write_xdr(w)?,
8397 Self::Error => ().write_xdr(w)?,
8398 Self::U32 => ().write_xdr(w)?,
8399 Self::I32 => ().write_xdr(w)?,
8400 Self::U64 => ().write_xdr(w)?,
8401 Self::I64 => ().write_xdr(w)?,
8402 Self::Timepoint => ().write_xdr(w)?,
8403 Self::Duration => ().write_xdr(w)?,
8404 Self::U128 => ().write_xdr(w)?,
8405 Self::I128 => ().write_xdr(w)?,
8406 Self::U256 => ().write_xdr(w)?,
8407 Self::I256 => ().write_xdr(w)?,
8408 Self::Bytes => ().write_xdr(w)?,
8409 Self::String => ().write_xdr(w)?,
8410 Self::Symbol => ().write_xdr(w)?,
8411 Self::Address => ().write_xdr(w)?,
8412 Self::MuxedAddress => ().write_xdr(w)?,
8413 Self::Option(v) => v.write_xdr(w)?,
8414 Self::Result(v) => v.write_xdr(w)?,
8415 Self::Vec(v) => v.write_xdr(w)?,
8416 Self::Map(v) => v.write_xdr(w)?,
8417 Self::Tuple(v) => v.write_xdr(w)?,
8418 Self::BytesN(v) => v.write_xdr(w)?,
8419 Self::Udt(v) => v.write_xdr(w)?,
8420 };
8421 Ok(())
8422 })
8423 }
8424}
8425
8426#[cfg_attr(feature = "alloc", derive(Default))]
8438#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8439#[cfg_eval::cfg_eval]
8440#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8441#[cfg_attr(
8442 all(feature = "serde", feature = "alloc"),
8443 serde_with::serde_as,
8444 derive(serde::Serialize, serde::Deserialize),
8445 serde(rename_all = "snake_case")
8446)]
8447#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8448pub struct ScSpecUdtStructFieldV0 {
8449 pub doc: StringM<1024>,
8450 pub name: StringM<30>,
8451 pub type_: ScSpecTypeDef,
8452}
8453
8454impl ReadXdr for ScSpecUdtStructFieldV0 {
8455 #[cfg(feature = "std")]
8456 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8457 r.with_limited_depth(|r| {
8458 Ok(Self {
8459 doc: StringM::<1024>::read_xdr(r)?,
8460 name: StringM::<30>::read_xdr(r)?,
8461 type_: ScSpecTypeDef::read_xdr(r)?,
8462 })
8463 })
8464 }
8465}
8466
8467impl WriteXdr for ScSpecUdtStructFieldV0 {
8468 #[cfg(feature = "std")]
8469 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8470 w.with_limited_depth(|w| {
8471 self.doc.write_xdr(w)?;
8472 self.name.write_xdr(w)?;
8473 self.type_.write_xdr(w)?;
8474 Ok(())
8475 })
8476 }
8477}
8478
8479#[cfg_attr(feature = "alloc", derive(Default))]
8492#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8493#[cfg_eval::cfg_eval]
8494#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8495#[cfg_attr(
8496 all(feature = "serde", feature = "alloc"),
8497 serde_with::serde_as,
8498 derive(serde::Serialize, serde::Deserialize),
8499 serde(rename_all = "snake_case")
8500)]
8501#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8502pub struct ScSpecUdtStructV0 {
8503 pub doc: StringM<1024>,
8504 pub lib: StringM<80>,
8505 pub name: StringM<60>,
8506 pub fields: VecM<ScSpecUdtStructFieldV0, 40>,
8507}
8508
8509impl ReadXdr for ScSpecUdtStructV0 {
8510 #[cfg(feature = "std")]
8511 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8512 r.with_limited_depth(|r| {
8513 Ok(Self {
8514 doc: StringM::<1024>::read_xdr(r)?,
8515 lib: StringM::<80>::read_xdr(r)?,
8516 name: StringM::<60>::read_xdr(r)?,
8517 fields: VecM::<ScSpecUdtStructFieldV0, 40>::read_xdr(r)?,
8518 })
8519 })
8520 }
8521}
8522
8523impl WriteXdr for ScSpecUdtStructV0 {
8524 #[cfg(feature = "std")]
8525 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8526 w.with_limited_depth(|w| {
8527 self.doc.write_xdr(w)?;
8528 self.lib.write_xdr(w)?;
8529 self.name.write_xdr(w)?;
8530 self.fields.write_xdr(w)?;
8531 Ok(())
8532 })
8533 }
8534}
8535
8536#[cfg_attr(feature = "alloc", derive(Default))]
8547#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8548#[cfg_eval::cfg_eval]
8549#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8550#[cfg_attr(
8551 all(feature = "serde", feature = "alloc"),
8552 serde_with::serde_as,
8553 derive(serde::Serialize, serde::Deserialize),
8554 serde(rename_all = "snake_case")
8555)]
8556#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8557pub struct ScSpecUdtUnionCaseVoidV0 {
8558 pub doc: StringM<1024>,
8559 pub name: StringM<60>,
8560}
8561
8562impl ReadXdr for ScSpecUdtUnionCaseVoidV0 {
8563 #[cfg(feature = "std")]
8564 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8565 r.with_limited_depth(|r| {
8566 Ok(Self {
8567 doc: StringM::<1024>::read_xdr(r)?,
8568 name: StringM::<60>::read_xdr(r)?,
8569 })
8570 })
8571 }
8572}
8573
8574impl WriteXdr for ScSpecUdtUnionCaseVoidV0 {
8575 #[cfg(feature = "std")]
8576 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8577 w.with_limited_depth(|w| {
8578 self.doc.write_xdr(w)?;
8579 self.name.write_xdr(w)?;
8580 Ok(())
8581 })
8582 }
8583}
8584
8585#[cfg_attr(feature = "alloc", derive(Default))]
8597#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8598#[cfg_eval::cfg_eval]
8599#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8600#[cfg_attr(
8601 all(feature = "serde", feature = "alloc"),
8602 serde_with::serde_as,
8603 derive(serde::Serialize, serde::Deserialize),
8604 serde(rename_all = "snake_case")
8605)]
8606#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8607pub struct ScSpecUdtUnionCaseTupleV0 {
8608 pub doc: StringM<1024>,
8609 pub name: StringM<60>,
8610 pub type_: VecM<ScSpecTypeDef, 12>,
8611}
8612
8613impl ReadXdr for ScSpecUdtUnionCaseTupleV0 {
8614 #[cfg(feature = "std")]
8615 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8616 r.with_limited_depth(|r| {
8617 Ok(Self {
8618 doc: StringM::<1024>::read_xdr(r)?,
8619 name: StringM::<60>::read_xdr(r)?,
8620 type_: VecM::<ScSpecTypeDef, 12>::read_xdr(r)?,
8621 })
8622 })
8623 }
8624}
8625
8626impl WriteXdr for ScSpecUdtUnionCaseTupleV0 {
8627 #[cfg(feature = "std")]
8628 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8629 w.with_limited_depth(|w| {
8630 self.doc.write_xdr(w)?;
8631 self.name.write_xdr(w)?;
8632 self.type_.write_xdr(w)?;
8633 Ok(())
8634 })
8635 }
8636}
8637
8638#[cfg_attr(feature = "alloc", derive(Default))]
8650#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8651#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8652#[cfg_attr(
8653 all(feature = "serde", feature = "alloc"),
8654 derive(serde::Serialize, serde::Deserialize),
8655 serde(rename_all = "snake_case")
8656)]
8657#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8658#[repr(i32)]
8659pub enum ScSpecUdtUnionCaseV0Kind {
8660 #[cfg_attr(feature = "alloc", default)]
8661 VoidV0 = 0,
8662 TupleV0 = 1,
8663}
8664
8665impl ScSpecUdtUnionCaseV0Kind {
8666 pub const VARIANTS: [ScSpecUdtUnionCaseV0Kind; 2] = [
8667 ScSpecUdtUnionCaseV0Kind::VoidV0,
8668 ScSpecUdtUnionCaseV0Kind::TupleV0,
8669 ];
8670 pub const VARIANTS_STR: [&'static str; 2] = ["VoidV0", "TupleV0"];
8671
8672 #[must_use]
8673 pub const fn name(&self) -> &'static str {
8674 match self {
8675 Self::VoidV0 => "VoidV0",
8676 Self::TupleV0 => "TupleV0",
8677 }
8678 }
8679
8680 #[must_use]
8681 pub const fn variants() -> [ScSpecUdtUnionCaseV0Kind; 2] {
8682 Self::VARIANTS
8683 }
8684}
8685
8686impl Name for ScSpecUdtUnionCaseV0Kind {
8687 #[must_use]
8688 fn name(&self) -> &'static str {
8689 Self::name(self)
8690 }
8691}
8692
8693impl Variants<ScSpecUdtUnionCaseV0Kind> for ScSpecUdtUnionCaseV0Kind {
8694 fn variants() -> slice::Iter<'static, ScSpecUdtUnionCaseV0Kind> {
8695 Self::VARIANTS.iter()
8696 }
8697}
8698
8699impl Enum for ScSpecUdtUnionCaseV0Kind {}
8700
8701impl fmt::Display for ScSpecUdtUnionCaseV0Kind {
8702 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
8703 f.write_str(self.name())
8704 }
8705}
8706
8707impl TryFrom<i32> for ScSpecUdtUnionCaseV0Kind {
8708 type Error = Error;
8709
8710 fn try_from(i: i32) -> Result<Self, Error> {
8711 let e = match i {
8712 0 => ScSpecUdtUnionCaseV0Kind::VoidV0,
8713 1 => ScSpecUdtUnionCaseV0Kind::TupleV0,
8714 #[allow(unreachable_patterns)]
8715 _ => return Err(Error::Invalid),
8716 };
8717 Ok(e)
8718 }
8719}
8720
8721impl From<ScSpecUdtUnionCaseV0Kind> for i32 {
8722 #[must_use]
8723 fn from(e: ScSpecUdtUnionCaseV0Kind) -> Self {
8724 e as Self
8725 }
8726}
8727
8728impl ReadXdr for ScSpecUdtUnionCaseV0Kind {
8729 #[cfg(feature = "std")]
8730 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8731 r.with_limited_depth(|r| {
8732 let e = i32::read_xdr(r)?;
8733 let v: Self = e.try_into()?;
8734 Ok(v)
8735 })
8736 }
8737}
8738
8739impl WriteXdr for ScSpecUdtUnionCaseV0Kind {
8740 #[cfg(feature = "std")]
8741 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8742 w.with_limited_depth(|w| {
8743 let i: i32 = (*self).into();
8744 i.write_xdr(w)
8745 })
8746 }
8747}
8748
8749#[cfg_eval::cfg_eval]
8763#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8764#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8765#[cfg_attr(
8766 all(feature = "serde", feature = "alloc"),
8767 serde_with::serde_as,
8768 derive(serde::Serialize, serde::Deserialize),
8769 serde(rename_all = "snake_case")
8770)]
8771#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8772#[allow(clippy::large_enum_variant)]
8773pub enum ScSpecUdtUnionCaseV0 {
8774 VoidV0(ScSpecUdtUnionCaseVoidV0),
8775 TupleV0(ScSpecUdtUnionCaseTupleV0),
8776}
8777
8778#[cfg(feature = "alloc")]
8779impl Default for ScSpecUdtUnionCaseV0 {
8780 fn default() -> Self {
8781 Self::VoidV0(ScSpecUdtUnionCaseVoidV0::default())
8782 }
8783}
8784
8785impl ScSpecUdtUnionCaseV0 {
8786 pub const VARIANTS: [ScSpecUdtUnionCaseV0Kind; 2] = [
8787 ScSpecUdtUnionCaseV0Kind::VoidV0,
8788 ScSpecUdtUnionCaseV0Kind::TupleV0,
8789 ];
8790 pub const VARIANTS_STR: [&'static str; 2] = ["VoidV0", "TupleV0"];
8791
8792 #[must_use]
8793 pub const fn name(&self) -> &'static str {
8794 match self {
8795 Self::VoidV0(_) => "VoidV0",
8796 Self::TupleV0(_) => "TupleV0",
8797 }
8798 }
8799
8800 #[must_use]
8801 pub const fn discriminant(&self) -> ScSpecUdtUnionCaseV0Kind {
8802 #[allow(clippy::match_same_arms)]
8803 match self {
8804 Self::VoidV0(_) => ScSpecUdtUnionCaseV0Kind::VoidV0,
8805 Self::TupleV0(_) => ScSpecUdtUnionCaseV0Kind::TupleV0,
8806 }
8807 }
8808
8809 #[must_use]
8810 pub const fn variants() -> [ScSpecUdtUnionCaseV0Kind; 2] {
8811 Self::VARIANTS
8812 }
8813}
8814
8815impl Name for ScSpecUdtUnionCaseV0 {
8816 #[must_use]
8817 fn name(&self) -> &'static str {
8818 Self::name(self)
8819 }
8820}
8821
8822impl Discriminant<ScSpecUdtUnionCaseV0Kind> for ScSpecUdtUnionCaseV0 {
8823 #[must_use]
8824 fn discriminant(&self) -> ScSpecUdtUnionCaseV0Kind {
8825 Self::discriminant(self)
8826 }
8827}
8828
8829impl Variants<ScSpecUdtUnionCaseV0Kind> for ScSpecUdtUnionCaseV0 {
8830 fn variants() -> slice::Iter<'static, ScSpecUdtUnionCaseV0Kind> {
8831 Self::VARIANTS.iter()
8832 }
8833}
8834
8835impl Union<ScSpecUdtUnionCaseV0Kind> for ScSpecUdtUnionCaseV0 {}
8836
8837impl ReadXdr for ScSpecUdtUnionCaseV0 {
8838 #[cfg(feature = "std")]
8839 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8840 r.with_limited_depth(|r| {
8841 let dv: ScSpecUdtUnionCaseV0Kind = <ScSpecUdtUnionCaseV0Kind as ReadXdr>::read_xdr(r)?;
8842 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
8843 let v = match dv {
8844 ScSpecUdtUnionCaseV0Kind::VoidV0 => {
8845 Self::VoidV0(ScSpecUdtUnionCaseVoidV0::read_xdr(r)?)
8846 }
8847 ScSpecUdtUnionCaseV0Kind::TupleV0 => {
8848 Self::TupleV0(ScSpecUdtUnionCaseTupleV0::read_xdr(r)?)
8849 }
8850 #[allow(unreachable_patterns)]
8851 _ => return Err(Error::Invalid),
8852 };
8853 Ok(v)
8854 })
8855 }
8856}
8857
8858impl WriteXdr for ScSpecUdtUnionCaseV0 {
8859 #[cfg(feature = "std")]
8860 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8861 w.with_limited_depth(|w| {
8862 self.discriminant().write_xdr(w)?;
8863 #[allow(clippy::match_same_arms)]
8864 match self {
8865 Self::VoidV0(v) => v.write_xdr(w)?,
8866 Self::TupleV0(v) => v.write_xdr(w)?,
8867 };
8868 Ok(())
8869 })
8870 }
8871}
8872
8873#[cfg_attr(feature = "alloc", derive(Default))]
8886#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8887#[cfg_eval::cfg_eval]
8888#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8889#[cfg_attr(
8890 all(feature = "serde", feature = "alloc"),
8891 serde_with::serde_as,
8892 derive(serde::Serialize, serde::Deserialize),
8893 serde(rename_all = "snake_case")
8894)]
8895#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8896pub struct ScSpecUdtUnionV0 {
8897 pub doc: StringM<1024>,
8898 pub lib: StringM<80>,
8899 pub name: StringM<60>,
8900 pub cases: VecM<ScSpecUdtUnionCaseV0, 50>,
8901}
8902
8903impl ReadXdr for ScSpecUdtUnionV0 {
8904 #[cfg(feature = "std")]
8905 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8906 r.with_limited_depth(|r| {
8907 Ok(Self {
8908 doc: StringM::<1024>::read_xdr(r)?,
8909 lib: StringM::<80>::read_xdr(r)?,
8910 name: StringM::<60>::read_xdr(r)?,
8911 cases: VecM::<ScSpecUdtUnionCaseV0, 50>::read_xdr(r)?,
8912 })
8913 })
8914 }
8915}
8916
8917impl WriteXdr for ScSpecUdtUnionV0 {
8918 #[cfg(feature = "std")]
8919 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8920 w.with_limited_depth(|w| {
8921 self.doc.write_xdr(w)?;
8922 self.lib.write_xdr(w)?;
8923 self.name.write_xdr(w)?;
8924 self.cases.write_xdr(w)?;
8925 Ok(())
8926 })
8927 }
8928}
8929
8930#[cfg_attr(feature = "alloc", derive(Default))]
8942#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8943#[cfg_eval::cfg_eval]
8944#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8945#[cfg_attr(
8946 all(feature = "serde", feature = "alloc"),
8947 serde_with::serde_as,
8948 derive(serde::Serialize, serde::Deserialize),
8949 serde(rename_all = "snake_case")
8950)]
8951#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
8952pub struct ScSpecUdtEnumCaseV0 {
8953 pub doc: StringM<1024>,
8954 pub name: StringM<60>,
8955 pub value: u32,
8956}
8957
8958impl ReadXdr for ScSpecUdtEnumCaseV0 {
8959 #[cfg(feature = "std")]
8960 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
8961 r.with_limited_depth(|r| {
8962 Ok(Self {
8963 doc: StringM::<1024>::read_xdr(r)?,
8964 name: StringM::<60>::read_xdr(r)?,
8965 value: u32::read_xdr(r)?,
8966 })
8967 })
8968 }
8969}
8970
8971impl WriteXdr for ScSpecUdtEnumCaseV0 {
8972 #[cfg(feature = "std")]
8973 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
8974 w.with_limited_depth(|w| {
8975 self.doc.write_xdr(w)?;
8976 self.name.write_xdr(w)?;
8977 self.value.write_xdr(w)?;
8978 Ok(())
8979 })
8980 }
8981}
8982
8983#[cfg_attr(feature = "alloc", derive(Default))]
8996#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
8997#[cfg_eval::cfg_eval]
8998#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
8999#[cfg_attr(
9000 all(feature = "serde", feature = "alloc"),
9001 serde_with::serde_as,
9002 derive(serde::Serialize, serde::Deserialize),
9003 serde(rename_all = "snake_case")
9004)]
9005#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9006pub struct ScSpecUdtEnumV0 {
9007 pub doc: StringM<1024>,
9008 pub lib: StringM<80>,
9009 pub name: StringM<60>,
9010 pub cases: VecM<ScSpecUdtEnumCaseV0, 50>,
9011}
9012
9013impl ReadXdr for ScSpecUdtEnumV0 {
9014 #[cfg(feature = "std")]
9015 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9016 r.with_limited_depth(|r| {
9017 Ok(Self {
9018 doc: StringM::<1024>::read_xdr(r)?,
9019 lib: StringM::<80>::read_xdr(r)?,
9020 name: StringM::<60>::read_xdr(r)?,
9021 cases: VecM::<ScSpecUdtEnumCaseV0, 50>::read_xdr(r)?,
9022 })
9023 })
9024 }
9025}
9026
9027impl WriteXdr for ScSpecUdtEnumV0 {
9028 #[cfg(feature = "std")]
9029 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9030 w.with_limited_depth(|w| {
9031 self.doc.write_xdr(w)?;
9032 self.lib.write_xdr(w)?;
9033 self.name.write_xdr(w)?;
9034 self.cases.write_xdr(w)?;
9035 Ok(())
9036 })
9037 }
9038}
9039
9040#[cfg_attr(feature = "alloc", derive(Default))]
9052#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9053#[cfg_eval::cfg_eval]
9054#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9055#[cfg_attr(
9056 all(feature = "serde", feature = "alloc"),
9057 serde_with::serde_as,
9058 derive(serde::Serialize, serde::Deserialize),
9059 serde(rename_all = "snake_case")
9060)]
9061#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9062pub struct ScSpecUdtErrorEnumCaseV0 {
9063 pub doc: StringM<1024>,
9064 pub name: StringM<60>,
9065 pub value: u32,
9066}
9067
9068impl ReadXdr for ScSpecUdtErrorEnumCaseV0 {
9069 #[cfg(feature = "std")]
9070 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9071 r.with_limited_depth(|r| {
9072 Ok(Self {
9073 doc: StringM::<1024>::read_xdr(r)?,
9074 name: StringM::<60>::read_xdr(r)?,
9075 value: u32::read_xdr(r)?,
9076 })
9077 })
9078 }
9079}
9080
9081impl WriteXdr for ScSpecUdtErrorEnumCaseV0 {
9082 #[cfg(feature = "std")]
9083 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9084 w.with_limited_depth(|w| {
9085 self.doc.write_xdr(w)?;
9086 self.name.write_xdr(w)?;
9087 self.value.write_xdr(w)?;
9088 Ok(())
9089 })
9090 }
9091}
9092
9093#[cfg_attr(feature = "alloc", derive(Default))]
9106#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9107#[cfg_eval::cfg_eval]
9108#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9109#[cfg_attr(
9110 all(feature = "serde", feature = "alloc"),
9111 serde_with::serde_as,
9112 derive(serde::Serialize, serde::Deserialize),
9113 serde(rename_all = "snake_case")
9114)]
9115#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9116pub struct ScSpecUdtErrorEnumV0 {
9117 pub doc: StringM<1024>,
9118 pub lib: StringM<80>,
9119 pub name: StringM<60>,
9120 pub cases: VecM<ScSpecUdtErrorEnumCaseV0, 50>,
9121}
9122
9123impl ReadXdr for ScSpecUdtErrorEnumV0 {
9124 #[cfg(feature = "std")]
9125 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9126 r.with_limited_depth(|r| {
9127 Ok(Self {
9128 doc: StringM::<1024>::read_xdr(r)?,
9129 lib: StringM::<80>::read_xdr(r)?,
9130 name: StringM::<60>::read_xdr(r)?,
9131 cases: VecM::<ScSpecUdtErrorEnumCaseV0, 50>::read_xdr(r)?,
9132 })
9133 })
9134 }
9135}
9136
9137impl WriteXdr for ScSpecUdtErrorEnumV0 {
9138 #[cfg(feature = "std")]
9139 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9140 w.with_limited_depth(|w| {
9141 self.doc.write_xdr(w)?;
9142 self.lib.write_xdr(w)?;
9143 self.name.write_xdr(w)?;
9144 self.cases.write_xdr(w)?;
9145 Ok(())
9146 })
9147 }
9148}
9149
9150#[cfg_attr(feature = "alloc", derive(Default))]
9162#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9163#[cfg_eval::cfg_eval]
9164#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9165#[cfg_attr(
9166 all(feature = "serde", feature = "alloc"),
9167 serde_with::serde_as,
9168 derive(serde::Serialize, serde::Deserialize),
9169 serde(rename_all = "snake_case")
9170)]
9171#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9172pub struct ScSpecFunctionInputV0 {
9173 pub doc: StringM<1024>,
9174 pub name: StringM<30>,
9175 pub type_: ScSpecTypeDef,
9176}
9177
9178impl ReadXdr for ScSpecFunctionInputV0 {
9179 #[cfg(feature = "std")]
9180 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9181 r.with_limited_depth(|r| {
9182 Ok(Self {
9183 doc: StringM::<1024>::read_xdr(r)?,
9184 name: StringM::<30>::read_xdr(r)?,
9185 type_: ScSpecTypeDef::read_xdr(r)?,
9186 })
9187 })
9188 }
9189}
9190
9191impl WriteXdr for ScSpecFunctionInputV0 {
9192 #[cfg(feature = "std")]
9193 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9194 w.with_limited_depth(|w| {
9195 self.doc.write_xdr(w)?;
9196 self.name.write_xdr(w)?;
9197 self.type_.write_xdr(w)?;
9198 Ok(())
9199 })
9200 }
9201}
9202
9203#[cfg_attr(feature = "alloc", derive(Default))]
9216#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9217#[cfg_eval::cfg_eval]
9218#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9219#[cfg_attr(
9220 all(feature = "serde", feature = "alloc"),
9221 serde_with::serde_as,
9222 derive(serde::Serialize, serde::Deserialize),
9223 serde(rename_all = "snake_case")
9224)]
9225#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9226pub struct ScSpecFunctionV0 {
9227 pub doc: StringM<1024>,
9228 pub name: ScSymbol,
9229 pub inputs: VecM<ScSpecFunctionInputV0, 10>,
9230 pub outputs: VecM<ScSpecTypeDef, 1>,
9231}
9232
9233impl ReadXdr for ScSpecFunctionV0 {
9234 #[cfg(feature = "std")]
9235 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9236 r.with_limited_depth(|r| {
9237 Ok(Self {
9238 doc: StringM::<1024>::read_xdr(r)?,
9239 name: ScSymbol::read_xdr(r)?,
9240 inputs: VecM::<ScSpecFunctionInputV0, 10>::read_xdr(r)?,
9241 outputs: VecM::<ScSpecTypeDef, 1>::read_xdr(r)?,
9242 })
9243 })
9244 }
9245}
9246
9247impl WriteXdr for ScSpecFunctionV0 {
9248 #[cfg(feature = "std")]
9249 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9250 w.with_limited_depth(|w| {
9251 self.doc.write_xdr(w)?;
9252 self.name.write_xdr(w)?;
9253 self.inputs.write_xdr(w)?;
9254 self.outputs.write_xdr(w)?;
9255 Ok(())
9256 })
9257 }
9258}
9259
9260#[cfg_attr(feature = "alloc", derive(Default))]
9272#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9273#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9274#[cfg_attr(
9275 all(feature = "serde", feature = "alloc"),
9276 derive(serde::Serialize, serde::Deserialize),
9277 serde(rename_all = "snake_case")
9278)]
9279#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9280#[repr(i32)]
9281pub enum ScSpecEventParamLocationV0 {
9282 #[cfg_attr(feature = "alloc", default)]
9283 Data = 0,
9284 TopicList = 1,
9285}
9286
9287impl ScSpecEventParamLocationV0 {
9288 pub const VARIANTS: [ScSpecEventParamLocationV0; 2] = [
9289 ScSpecEventParamLocationV0::Data,
9290 ScSpecEventParamLocationV0::TopicList,
9291 ];
9292 pub const VARIANTS_STR: [&'static str; 2] = ["Data", "TopicList"];
9293
9294 #[must_use]
9295 pub const fn name(&self) -> &'static str {
9296 match self {
9297 Self::Data => "Data",
9298 Self::TopicList => "TopicList",
9299 }
9300 }
9301
9302 #[must_use]
9303 pub const fn variants() -> [ScSpecEventParamLocationV0; 2] {
9304 Self::VARIANTS
9305 }
9306}
9307
9308impl Name for ScSpecEventParamLocationV0 {
9309 #[must_use]
9310 fn name(&self) -> &'static str {
9311 Self::name(self)
9312 }
9313}
9314
9315impl Variants<ScSpecEventParamLocationV0> for ScSpecEventParamLocationV0 {
9316 fn variants() -> slice::Iter<'static, ScSpecEventParamLocationV0> {
9317 Self::VARIANTS.iter()
9318 }
9319}
9320
9321impl Enum for ScSpecEventParamLocationV0 {}
9322
9323impl fmt::Display for ScSpecEventParamLocationV0 {
9324 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9325 f.write_str(self.name())
9326 }
9327}
9328
9329impl TryFrom<i32> for ScSpecEventParamLocationV0 {
9330 type Error = Error;
9331
9332 fn try_from(i: i32) -> Result<Self, Error> {
9333 let e = match i {
9334 0 => ScSpecEventParamLocationV0::Data,
9335 1 => ScSpecEventParamLocationV0::TopicList,
9336 #[allow(unreachable_patterns)]
9337 _ => return Err(Error::Invalid),
9338 };
9339 Ok(e)
9340 }
9341}
9342
9343impl From<ScSpecEventParamLocationV0> for i32 {
9344 #[must_use]
9345 fn from(e: ScSpecEventParamLocationV0) -> Self {
9346 e as Self
9347 }
9348}
9349
9350impl ReadXdr for ScSpecEventParamLocationV0 {
9351 #[cfg(feature = "std")]
9352 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9353 r.with_limited_depth(|r| {
9354 let e = i32::read_xdr(r)?;
9355 let v: Self = e.try_into()?;
9356 Ok(v)
9357 })
9358 }
9359}
9360
9361impl WriteXdr for ScSpecEventParamLocationV0 {
9362 #[cfg(feature = "std")]
9363 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9364 w.with_limited_depth(|w| {
9365 let i: i32 = (*self).into();
9366 i.write_xdr(w)
9367 })
9368 }
9369}
9370
9371#[cfg_attr(feature = "alloc", derive(Default))]
9384#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9385#[cfg_eval::cfg_eval]
9386#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9387#[cfg_attr(
9388 all(feature = "serde", feature = "alloc"),
9389 serde_with::serde_as,
9390 derive(serde::Serialize, serde::Deserialize),
9391 serde(rename_all = "snake_case")
9392)]
9393#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9394pub struct ScSpecEventParamV0 {
9395 pub doc: StringM<1024>,
9396 pub name: StringM<30>,
9397 pub type_: ScSpecTypeDef,
9398 pub location: ScSpecEventParamLocationV0,
9399}
9400
9401impl ReadXdr for ScSpecEventParamV0 {
9402 #[cfg(feature = "std")]
9403 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9404 r.with_limited_depth(|r| {
9405 Ok(Self {
9406 doc: StringM::<1024>::read_xdr(r)?,
9407 name: StringM::<30>::read_xdr(r)?,
9408 type_: ScSpecTypeDef::read_xdr(r)?,
9409 location: ScSpecEventParamLocationV0::read_xdr(r)?,
9410 })
9411 })
9412 }
9413}
9414
9415impl WriteXdr for ScSpecEventParamV0 {
9416 #[cfg(feature = "std")]
9417 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9418 w.with_limited_depth(|w| {
9419 self.doc.write_xdr(w)?;
9420 self.name.write_xdr(w)?;
9421 self.type_.write_xdr(w)?;
9422 self.location.write_xdr(w)?;
9423 Ok(())
9424 })
9425 }
9426}
9427
9428#[cfg_attr(feature = "alloc", derive(Default))]
9441#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9442#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9443#[cfg_attr(
9444 all(feature = "serde", feature = "alloc"),
9445 derive(serde::Serialize, serde::Deserialize),
9446 serde(rename_all = "snake_case")
9447)]
9448#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9449#[repr(i32)]
9450pub enum ScSpecEventDataFormat {
9451 #[cfg_attr(feature = "alloc", default)]
9452 SingleValue = 0,
9453 Vec = 1,
9454 Map = 2,
9455}
9456
9457impl ScSpecEventDataFormat {
9458 pub const VARIANTS: [ScSpecEventDataFormat; 3] = [
9459 ScSpecEventDataFormat::SingleValue,
9460 ScSpecEventDataFormat::Vec,
9461 ScSpecEventDataFormat::Map,
9462 ];
9463 pub const VARIANTS_STR: [&'static str; 3] = ["SingleValue", "Vec", "Map"];
9464
9465 #[must_use]
9466 pub const fn name(&self) -> &'static str {
9467 match self {
9468 Self::SingleValue => "SingleValue",
9469 Self::Vec => "Vec",
9470 Self::Map => "Map",
9471 }
9472 }
9473
9474 #[must_use]
9475 pub const fn variants() -> [ScSpecEventDataFormat; 3] {
9476 Self::VARIANTS
9477 }
9478}
9479
9480impl Name for ScSpecEventDataFormat {
9481 #[must_use]
9482 fn name(&self) -> &'static str {
9483 Self::name(self)
9484 }
9485}
9486
9487impl Variants<ScSpecEventDataFormat> for ScSpecEventDataFormat {
9488 fn variants() -> slice::Iter<'static, ScSpecEventDataFormat> {
9489 Self::VARIANTS.iter()
9490 }
9491}
9492
9493impl Enum for ScSpecEventDataFormat {}
9494
9495impl fmt::Display for ScSpecEventDataFormat {
9496 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9497 f.write_str(self.name())
9498 }
9499}
9500
9501impl TryFrom<i32> for ScSpecEventDataFormat {
9502 type Error = Error;
9503
9504 fn try_from(i: i32) -> Result<Self, Error> {
9505 let e = match i {
9506 0 => ScSpecEventDataFormat::SingleValue,
9507 1 => ScSpecEventDataFormat::Vec,
9508 2 => ScSpecEventDataFormat::Map,
9509 #[allow(unreachable_patterns)]
9510 _ => return Err(Error::Invalid),
9511 };
9512 Ok(e)
9513 }
9514}
9515
9516impl From<ScSpecEventDataFormat> for i32 {
9517 #[must_use]
9518 fn from(e: ScSpecEventDataFormat) -> Self {
9519 e as Self
9520 }
9521}
9522
9523impl ReadXdr for ScSpecEventDataFormat {
9524 #[cfg(feature = "std")]
9525 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9526 r.with_limited_depth(|r| {
9527 let e = i32::read_xdr(r)?;
9528 let v: Self = e.try_into()?;
9529 Ok(v)
9530 })
9531 }
9532}
9533
9534impl WriteXdr for ScSpecEventDataFormat {
9535 #[cfg(feature = "std")]
9536 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9537 w.with_limited_depth(|w| {
9538 let i: i32 = (*self).into();
9539 i.write_xdr(w)
9540 })
9541 }
9542}
9543
9544#[cfg_attr(feature = "alloc", derive(Default))]
9559#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9560#[cfg_eval::cfg_eval]
9561#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9562#[cfg_attr(
9563 all(feature = "serde", feature = "alloc"),
9564 serde_with::serde_as,
9565 derive(serde::Serialize, serde::Deserialize),
9566 serde(rename_all = "snake_case")
9567)]
9568#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9569pub struct ScSpecEventV0 {
9570 pub doc: StringM<1024>,
9571 pub lib: StringM<80>,
9572 pub name: ScSymbol,
9573 pub prefix_topics: VecM<ScSymbol, 2>,
9574 pub params: VecM<ScSpecEventParamV0, 50>,
9575 pub data_format: ScSpecEventDataFormat,
9576}
9577
9578impl ReadXdr for ScSpecEventV0 {
9579 #[cfg(feature = "std")]
9580 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9581 r.with_limited_depth(|r| {
9582 Ok(Self {
9583 doc: StringM::<1024>::read_xdr(r)?,
9584 lib: StringM::<80>::read_xdr(r)?,
9585 name: ScSymbol::read_xdr(r)?,
9586 prefix_topics: VecM::<ScSymbol, 2>::read_xdr(r)?,
9587 params: VecM::<ScSpecEventParamV0, 50>::read_xdr(r)?,
9588 data_format: ScSpecEventDataFormat::read_xdr(r)?,
9589 })
9590 })
9591 }
9592}
9593
9594impl WriteXdr for ScSpecEventV0 {
9595 #[cfg(feature = "std")]
9596 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9597 w.with_limited_depth(|w| {
9598 self.doc.write_xdr(w)?;
9599 self.lib.write_xdr(w)?;
9600 self.name.write_xdr(w)?;
9601 self.prefix_topics.write_xdr(w)?;
9602 self.params.write_xdr(w)?;
9603 self.data_format.write_xdr(w)?;
9604 Ok(())
9605 })
9606 }
9607}
9608
9609#[cfg_attr(feature = "alloc", derive(Default))]
9625#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9626#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9627#[cfg_attr(
9628 all(feature = "serde", feature = "alloc"),
9629 derive(serde::Serialize, serde::Deserialize),
9630 serde(rename_all = "snake_case")
9631)]
9632#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9633#[repr(i32)]
9634pub enum ScSpecEntryKind {
9635 #[cfg_attr(feature = "alloc", default)]
9636 FunctionV0 = 0,
9637 UdtStructV0 = 1,
9638 UdtUnionV0 = 2,
9639 UdtEnumV0 = 3,
9640 UdtErrorEnumV0 = 4,
9641 EventV0 = 5,
9642}
9643
9644impl ScSpecEntryKind {
9645 pub const VARIANTS: [ScSpecEntryKind; 6] = [
9646 ScSpecEntryKind::FunctionV0,
9647 ScSpecEntryKind::UdtStructV0,
9648 ScSpecEntryKind::UdtUnionV0,
9649 ScSpecEntryKind::UdtEnumV0,
9650 ScSpecEntryKind::UdtErrorEnumV0,
9651 ScSpecEntryKind::EventV0,
9652 ];
9653 pub const VARIANTS_STR: [&'static str; 6] = [
9654 "FunctionV0",
9655 "UdtStructV0",
9656 "UdtUnionV0",
9657 "UdtEnumV0",
9658 "UdtErrorEnumV0",
9659 "EventV0",
9660 ];
9661
9662 #[must_use]
9663 pub const fn name(&self) -> &'static str {
9664 match self {
9665 Self::FunctionV0 => "FunctionV0",
9666 Self::UdtStructV0 => "UdtStructV0",
9667 Self::UdtUnionV0 => "UdtUnionV0",
9668 Self::UdtEnumV0 => "UdtEnumV0",
9669 Self::UdtErrorEnumV0 => "UdtErrorEnumV0",
9670 Self::EventV0 => "EventV0",
9671 }
9672 }
9673
9674 #[must_use]
9675 pub const fn variants() -> [ScSpecEntryKind; 6] {
9676 Self::VARIANTS
9677 }
9678}
9679
9680impl Name for ScSpecEntryKind {
9681 #[must_use]
9682 fn name(&self) -> &'static str {
9683 Self::name(self)
9684 }
9685}
9686
9687impl Variants<ScSpecEntryKind> for ScSpecEntryKind {
9688 fn variants() -> slice::Iter<'static, ScSpecEntryKind> {
9689 Self::VARIANTS.iter()
9690 }
9691}
9692
9693impl Enum for ScSpecEntryKind {}
9694
9695impl fmt::Display for ScSpecEntryKind {
9696 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9697 f.write_str(self.name())
9698 }
9699}
9700
9701impl TryFrom<i32> for ScSpecEntryKind {
9702 type Error = Error;
9703
9704 fn try_from(i: i32) -> Result<Self, Error> {
9705 let e = match i {
9706 0 => ScSpecEntryKind::FunctionV0,
9707 1 => ScSpecEntryKind::UdtStructV0,
9708 2 => ScSpecEntryKind::UdtUnionV0,
9709 3 => ScSpecEntryKind::UdtEnumV0,
9710 4 => ScSpecEntryKind::UdtErrorEnumV0,
9711 5 => ScSpecEntryKind::EventV0,
9712 #[allow(unreachable_patterns)]
9713 _ => return Err(Error::Invalid),
9714 };
9715 Ok(e)
9716 }
9717}
9718
9719impl From<ScSpecEntryKind> for i32 {
9720 #[must_use]
9721 fn from(e: ScSpecEntryKind) -> Self {
9722 e as Self
9723 }
9724}
9725
9726impl ReadXdr for ScSpecEntryKind {
9727 #[cfg(feature = "std")]
9728 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9729 r.with_limited_depth(|r| {
9730 let e = i32::read_xdr(r)?;
9731 let v: Self = e.try_into()?;
9732 Ok(v)
9733 })
9734 }
9735}
9736
9737impl WriteXdr for ScSpecEntryKind {
9738 #[cfg(feature = "std")]
9739 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9740 w.with_limited_depth(|w| {
9741 let i: i32 = (*self).into();
9742 i.write_xdr(w)
9743 })
9744 }
9745}
9746
9747#[cfg_eval::cfg_eval]
9769#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9770#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9771#[cfg_attr(
9772 all(feature = "serde", feature = "alloc"),
9773 serde_with::serde_as,
9774 derive(serde::Serialize, serde::Deserialize),
9775 serde(rename_all = "snake_case")
9776)]
9777#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9778#[allow(clippy::large_enum_variant)]
9779pub enum ScSpecEntry {
9780 FunctionV0(ScSpecFunctionV0),
9781 UdtStructV0(ScSpecUdtStructV0),
9782 UdtUnionV0(ScSpecUdtUnionV0),
9783 UdtEnumV0(ScSpecUdtEnumV0),
9784 UdtErrorEnumV0(ScSpecUdtErrorEnumV0),
9785 EventV0(ScSpecEventV0),
9786}
9787
9788#[cfg(feature = "alloc")]
9789impl Default for ScSpecEntry {
9790 fn default() -> Self {
9791 Self::FunctionV0(ScSpecFunctionV0::default())
9792 }
9793}
9794
9795impl ScSpecEntry {
9796 pub const VARIANTS: [ScSpecEntryKind; 6] = [
9797 ScSpecEntryKind::FunctionV0,
9798 ScSpecEntryKind::UdtStructV0,
9799 ScSpecEntryKind::UdtUnionV0,
9800 ScSpecEntryKind::UdtEnumV0,
9801 ScSpecEntryKind::UdtErrorEnumV0,
9802 ScSpecEntryKind::EventV0,
9803 ];
9804 pub const VARIANTS_STR: [&'static str; 6] = [
9805 "FunctionV0",
9806 "UdtStructV0",
9807 "UdtUnionV0",
9808 "UdtEnumV0",
9809 "UdtErrorEnumV0",
9810 "EventV0",
9811 ];
9812
9813 #[must_use]
9814 pub const fn name(&self) -> &'static str {
9815 match self {
9816 Self::FunctionV0(_) => "FunctionV0",
9817 Self::UdtStructV0(_) => "UdtStructV0",
9818 Self::UdtUnionV0(_) => "UdtUnionV0",
9819 Self::UdtEnumV0(_) => "UdtEnumV0",
9820 Self::UdtErrorEnumV0(_) => "UdtErrorEnumV0",
9821 Self::EventV0(_) => "EventV0",
9822 }
9823 }
9824
9825 #[must_use]
9826 pub const fn discriminant(&self) -> ScSpecEntryKind {
9827 #[allow(clippy::match_same_arms)]
9828 match self {
9829 Self::FunctionV0(_) => ScSpecEntryKind::FunctionV0,
9830 Self::UdtStructV0(_) => ScSpecEntryKind::UdtStructV0,
9831 Self::UdtUnionV0(_) => ScSpecEntryKind::UdtUnionV0,
9832 Self::UdtEnumV0(_) => ScSpecEntryKind::UdtEnumV0,
9833 Self::UdtErrorEnumV0(_) => ScSpecEntryKind::UdtErrorEnumV0,
9834 Self::EventV0(_) => ScSpecEntryKind::EventV0,
9835 }
9836 }
9837
9838 #[must_use]
9839 pub const fn variants() -> [ScSpecEntryKind; 6] {
9840 Self::VARIANTS
9841 }
9842}
9843
9844impl Name for ScSpecEntry {
9845 #[must_use]
9846 fn name(&self) -> &'static str {
9847 Self::name(self)
9848 }
9849}
9850
9851impl Discriminant<ScSpecEntryKind> for ScSpecEntry {
9852 #[must_use]
9853 fn discriminant(&self) -> ScSpecEntryKind {
9854 Self::discriminant(self)
9855 }
9856}
9857
9858impl Variants<ScSpecEntryKind> for ScSpecEntry {
9859 fn variants() -> slice::Iter<'static, ScSpecEntryKind> {
9860 Self::VARIANTS.iter()
9861 }
9862}
9863
9864impl Union<ScSpecEntryKind> for ScSpecEntry {}
9865
9866impl ReadXdr for ScSpecEntry {
9867 #[cfg(feature = "std")]
9868 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
9869 r.with_limited_depth(|r| {
9870 let dv: ScSpecEntryKind = <ScSpecEntryKind as ReadXdr>::read_xdr(r)?;
9871 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
9872 let v = match dv {
9873 ScSpecEntryKind::FunctionV0 => Self::FunctionV0(ScSpecFunctionV0::read_xdr(r)?),
9874 ScSpecEntryKind::UdtStructV0 => Self::UdtStructV0(ScSpecUdtStructV0::read_xdr(r)?),
9875 ScSpecEntryKind::UdtUnionV0 => Self::UdtUnionV0(ScSpecUdtUnionV0::read_xdr(r)?),
9876 ScSpecEntryKind::UdtEnumV0 => Self::UdtEnumV0(ScSpecUdtEnumV0::read_xdr(r)?),
9877 ScSpecEntryKind::UdtErrorEnumV0 => {
9878 Self::UdtErrorEnumV0(ScSpecUdtErrorEnumV0::read_xdr(r)?)
9879 }
9880 ScSpecEntryKind::EventV0 => Self::EventV0(ScSpecEventV0::read_xdr(r)?),
9881 #[allow(unreachable_patterns)]
9882 _ => return Err(Error::Invalid),
9883 };
9884 Ok(v)
9885 })
9886 }
9887}
9888
9889impl WriteXdr for ScSpecEntry {
9890 #[cfg(feature = "std")]
9891 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
9892 w.with_limited_depth(|w| {
9893 self.discriminant().write_xdr(w)?;
9894 #[allow(clippy::match_same_arms)]
9895 match self {
9896 Self::FunctionV0(v) => v.write_xdr(w)?,
9897 Self::UdtStructV0(v) => v.write_xdr(w)?,
9898 Self::UdtUnionV0(v) => v.write_xdr(w)?,
9899 Self::UdtEnumV0(v) => v.write_xdr(w)?,
9900 Self::UdtErrorEnumV0(v) => v.write_xdr(w)?,
9901 Self::EventV0(v) => v.write_xdr(w)?,
9902 };
9903 Ok(())
9904 })
9905 }
9906}
9907
9908#[cfg_attr(feature = "alloc", derive(Default))]
9969#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
9970#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
9971#[cfg_attr(
9972 all(feature = "serde", feature = "alloc"),
9973 derive(serde::Serialize, serde::Deserialize),
9974 serde(rename_all = "snake_case")
9975)]
9976#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
9977#[repr(i32)]
9978pub enum ScValType {
9979 #[cfg_attr(feature = "alloc", default)]
9980 Bool = 0,
9981 Void = 1,
9982 Error = 2,
9983 U32 = 3,
9984 I32 = 4,
9985 U64 = 5,
9986 I64 = 6,
9987 Timepoint = 7,
9988 Duration = 8,
9989 U128 = 9,
9990 I128 = 10,
9991 U256 = 11,
9992 I256 = 12,
9993 Bytes = 13,
9994 String = 14,
9995 Symbol = 15,
9996 Vec = 16,
9997 Map = 17,
9998 Address = 18,
9999 ContractInstance = 19,
10000 LedgerKeyContractInstance = 20,
10001 LedgerKeyNonce = 21,
10002}
10003
10004impl ScValType {
10005 pub const VARIANTS: [ScValType; 22] = [
10006 ScValType::Bool,
10007 ScValType::Void,
10008 ScValType::Error,
10009 ScValType::U32,
10010 ScValType::I32,
10011 ScValType::U64,
10012 ScValType::I64,
10013 ScValType::Timepoint,
10014 ScValType::Duration,
10015 ScValType::U128,
10016 ScValType::I128,
10017 ScValType::U256,
10018 ScValType::I256,
10019 ScValType::Bytes,
10020 ScValType::String,
10021 ScValType::Symbol,
10022 ScValType::Vec,
10023 ScValType::Map,
10024 ScValType::Address,
10025 ScValType::ContractInstance,
10026 ScValType::LedgerKeyContractInstance,
10027 ScValType::LedgerKeyNonce,
10028 ];
10029 pub const VARIANTS_STR: [&'static str; 22] = [
10030 "Bool",
10031 "Void",
10032 "Error",
10033 "U32",
10034 "I32",
10035 "U64",
10036 "I64",
10037 "Timepoint",
10038 "Duration",
10039 "U128",
10040 "I128",
10041 "U256",
10042 "I256",
10043 "Bytes",
10044 "String",
10045 "Symbol",
10046 "Vec",
10047 "Map",
10048 "Address",
10049 "ContractInstance",
10050 "LedgerKeyContractInstance",
10051 "LedgerKeyNonce",
10052 ];
10053
10054 #[must_use]
10055 pub const fn name(&self) -> &'static str {
10056 match self {
10057 Self::Bool => "Bool",
10058 Self::Void => "Void",
10059 Self::Error => "Error",
10060 Self::U32 => "U32",
10061 Self::I32 => "I32",
10062 Self::U64 => "U64",
10063 Self::I64 => "I64",
10064 Self::Timepoint => "Timepoint",
10065 Self::Duration => "Duration",
10066 Self::U128 => "U128",
10067 Self::I128 => "I128",
10068 Self::U256 => "U256",
10069 Self::I256 => "I256",
10070 Self::Bytes => "Bytes",
10071 Self::String => "String",
10072 Self::Symbol => "Symbol",
10073 Self::Vec => "Vec",
10074 Self::Map => "Map",
10075 Self::Address => "Address",
10076 Self::ContractInstance => "ContractInstance",
10077 Self::LedgerKeyContractInstance => "LedgerKeyContractInstance",
10078 Self::LedgerKeyNonce => "LedgerKeyNonce",
10079 }
10080 }
10081
10082 #[must_use]
10083 pub const fn variants() -> [ScValType; 22] {
10084 Self::VARIANTS
10085 }
10086}
10087
10088impl Name for ScValType {
10089 #[must_use]
10090 fn name(&self) -> &'static str {
10091 Self::name(self)
10092 }
10093}
10094
10095impl Variants<ScValType> for ScValType {
10096 fn variants() -> slice::Iter<'static, ScValType> {
10097 Self::VARIANTS.iter()
10098 }
10099}
10100
10101impl Enum for ScValType {}
10102
10103impl fmt::Display for ScValType {
10104 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
10105 f.write_str(self.name())
10106 }
10107}
10108
10109impl TryFrom<i32> for ScValType {
10110 type Error = Error;
10111
10112 fn try_from(i: i32) -> Result<Self, Error> {
10113 let e = match i {
10114 0 => ScValType::Bool,
10115 1 => ScValType::Void,
10116 2 => ScValType::Error,
10117 3 => ScValType::U32,
10118 4 => ScValType::I32,
10119 5 => ScValType::U64,
10120 6 => ScValType::I64,
10121 7 => ScValType::Timepoint,
10122 8 => ScValType::Duration,
10123 9 => ScValType::U128,
10124 10 => ScValType::I128,
10125 11 => ScValType::U256,
10126 12 => ScValType::I256,
10127 13 => ScValType::Bytes,
10128 14 => ScValType::String,
10129 15 => ScValType::Symbol,
10130 16 => ScValType::Vec,
10131 17 => ScValType::Map,
10132 18 => ScValType::Address,
10133 19 => ScValType::ContractInstance,
10134 20 => ScValType::LedgerKeyContractInstance,
10135 21 => ScValType::LedgerKeyNonce,
10136 #[allow(unreachable_patterns)]
10137 _ => return Err(Error::Invalid),
10138 };
10139 Ok(e)
10140 }
10141}
10142
10143impl From<ScValType> for i32 {
10144 #[must_use]
10145 fn from(e: ScValType) -> Self {
10146 e as Self
10147 }
10148}
10149
10150impl ReadXdr for ScValType {
10151 #[cfg(feature = "std")]
10152 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10153 r.with_limited_depth(|r| {
10154 let e = i32::read_xdr(r)?;
10155 let v: Self = e.try_into()?;
10156 Ok(v)
10157 })
10158 }
10159}
10160
10161impl WriteXdr for ScValType {
10162 #[cfg(feature = "std")]
10163 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10164 w.with_limited_depth(|w| {
10165 let i: i32 = (*self).into();
10166 i.write_xdr(w)
10167 })
10168 }
10169}
10170
10171#[cfg_attr(feature = "alloc", derive(Default))]
10191#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10192#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10193#[cfg_attr(
10194 all(feature = "serde", feature = "alloc"),
10195 derive(serde::Serialize, serde::Deserialize),
10196 serde(rename_all = "snake_case")
10197)]
10198#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
10199#[repr(i32)]
10200pub enum ScErrorType {
10201 #[cfg_attr(feature = "alloc", default)]
10202 Contract = 0,
10203 WasmVm = 1,
10204 Context = 2,
10205 Storage = 3,
10206 Object = 4,
10207 Crypto = 5,
10208 Events = 6,
10209 Budget = 7,
10210 Value = 8,
10211 Auth = 9,
10212}
10213
10214impl ScErrorType {
10215 pub const VARIANTS: [ScErrorType; 10] = [
10216 ScErrorType::Contract,
10217 ScErrorType::WasmVm,
10218 ScErrorType::Context,
10219 ScErrorType::Storage,
10220 ScErrorType::Object,
10221 ScErrorType::Crypto,
10222 ScErrorType::Events,
10223 ScErrorType::Budget,
10224 ScErrorType::Value,
10225 ScErrorType::Auth,
10226 ];
10227 pub const VARIANTS_STR: [&'static str; 10] = [
10228 "Contract", "WasmVm", "Context", "Storage", "Object", "Crypto", "Events", "Budget",
10229 "Value", "Auth",
10230 ];
10231
10232 #[must_use]
10233 pub const fn name(&self) -> &'static str {
10234 match self {
10235 Self::Contract => "Contract",
10236 Self::WasmVm => "WasmVm",
10237 Self::Context => "Context",
10238 Self::Storage => "Storage",
10239 Self::Object => "Object",
10240 Self::Crypto => "Crypto",
10241 Self::Events => "Events",
10242 Self::Budget => "Budget",
10243 Self::Value => "Value",
10244 Self::Auth => "Auth",
10245 }
10246 }
10247
10248 #[must_use]
10249 pub const fn variants() -> [ScErrorType; 10] {
10250 Self::VARIANTS
10251 }
10252}
10253
10254impl Name for ScErrorType {
10255 #[must_use]
10256 fn name(&self) -> &'static str {
10257 Self::name(self)
10258 }
10259}
10260
10261impl Variants<ScErrorType> for ScErrorType {
10262 fn variants() -> slice::Iter<'static, ScErrorType> {
10263 Self::VARIANTS.iter()
10264 }
10265}
10266
10267impl Enum for ScErrorType {}
10268
10269impl fmt::Display for ScErrorType {
10270 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
10271 f.write_str(self.name())
10272 }
10273}
10274
10275impl TryFrom<i32> for ScErrorType {
10276 type Error = Error;
10277
10278 fn try_from(i: i32) -> Result<Self, Error> {
10279 let e = match i {
10280 0 => ScErrorType::Contract,
10281 1 => ScErrorType::WasmVm,
10282 2 => ScErrorType::Context,
10283 3 => ScErrorType::Storage,
10284 4 => ScErrorType::Object,
10285 5 => ScErrorType::Crypto,
10286 6 => ScErrorType::Events,
10287 7 => ScErrorType::Budget,
10288 8 => ScErrorType::Value,
10289 9 => ScErrorType::Auth,
10290 #[allow(unreachable_patterns)]
10291 _ => return Err(Error::Invalid),
10292 };
10293 Ok(e)
10294 }
10295}
10296
10297impl From<ScErrorType> for i32 {
10298 #[must_use]
10299 fn from(e: ScErrorType) -> Self {
10300 e as Self
10301 }
10302}
10303
10304impl ReadXdr for ScErrorType {
10305 #[cfg(feature = "std")]
10306 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10307 r.with_limited_depth(|r| {
10308 let e = i32::read_xdr(r)?;
10309 let v: Self = e.try_into()?;
10310 Ok(v)
10311 })
10312 }
10313}
10314
10315impl WriteXdr for ScErrorType {
10316 #[cfg(feature = "std")]
10317 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10318 w.with_limited_depth(|w| {
10319 let i: i32 = (*self).into();
10320 i.write_xdr(w)
10321 })
10322 }
10323}
10324
10325#[cfg_attr(feature = "alloc", derive(Default))]
10345#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10346#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10347#[cfg_attr(
10348 all(feature = "serde", feature = "alloc"),
10349 derive(serde::Serialize, serde::Deserialize),
10350 serde(rename_all = "snake_case")
10351)]
10352#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
10353#[repr(i32)]
10354pub enum ScErrorCode {
10355 #[cfg_attr(feature = "alloc", default)]
10356 ArithDomain = 0,
10357 IndexBounds = 1,
10358 InvalidInput = 2,
10359 MissingValue = 3,
10360 ExistingValue = 4,
10361 ExceededLimit = 5,
10362 InvalidAction = 6,
10363 InternalError = 7,
10364 UnexpectedType = 8,
10365 UnexpectedSize = 9,
10366}
10367
10368impl ScErrorCode {
10369 pub const VARIANTS: [ScErrorCode; 10] = [
10370 ScErrorCode::ArithDomain,
10371 ScErrorCode::IndexBounds,
10372 ScErrorCode::InvalidInput,
10373 ScErrorCode::MissingValue,
10374 ScErrorCode::ExistingValue,
10375 ScErrorCode::ExceededLimit,
10376 ScErrorCode::InvalidAction,
10377 ScErrorCode::InternalError,
10378 ScErrorCode::UnexpectedType,
10379 ScErrorCode::UnexpectedSize,
10380 ];
10381 pub const VARIANTS_STR: [&'static str; 10] = [
10382 "ArithDomain",
10383 "IndexBounds",
10384 "InvalidInput",
10385 "MissingValue",
10386 "ExistingValue",
10387 "ExceededLimit",
10388 "InvalidAction",
10389 "InternalError",
10390 "UnexpectedType",
10391 "UnexpectedSize",
10392 ];
10393
10394 #[must_use]
10395 pub const fn name(&self) -> &'static str {
10396 match self {
10397 Self::ArithDomain => "ArithDomain",
10398 Self::IndexBounds => "IndexBounds",
10399 Self::InvalidInput => "InvalidInput",
10400 Self::MissingValue => "MissingValue",
10401 Self::ExistingValue => "ExistingValue",
10402 Self::ExceededLimit => "ExceededLimit",
10403 Self::InvalidAction => "InvalidAction",
10404 Self::InternalError => "InternalError",
10405 Self::UnexpectedType => "UnexpectedType",
10406 Self::UnexpectedSize => "UnexpectedSize",
10407 }
10408 }
10409
10410 #[must_use]
10411 pub const fn variants() -> [ScErrorCode; 10] {
10412 Self::VARIANTS
10413 }
10414}
10415
10416impl Name for ScErrorCode {
10417 #[must_use]
10418 fn name(&self) -> &'static str {
10419 Self::name(self)
10420 }
10421}
10422
10423impl Variants<ScErrorCode> for ScErrorCode {
10424 fn variants() -> slice::Iter<'static, ScErrorCode> {
10425 Self::VARIANTS.iter()
10426 }
10427}
10428
10429impl Enum for ScErrorCode {}
10430
10431impl fmt::Display for ScErrorCode {
10432 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
10433 f.write_str(self.name())
10434 }
10435}
10436
10437impl TryFrom<i32> for ScErrorCode {
10438 type Error = Error;
10439
10440 fn try_from(i: i32) -> Result<Self, Error> {
10441 let e = match i {
10442 0 => ScErrorCode::ArithDomain,
10443 1 => ScErrorCode::IndexBounds,
10444 2 => ScErrorCode::InvalidInput,
10445 3 => ScErrorCode::MissingValue,
10446 4 => ScErrorCode::ExistingValue,
10447 5 => ScErrorCode::ExceededLimit,
10448 6 => ScErrorCode::InvalidAction,
10449 7 => ScErrorCode::InternalError,
10450 8 => ScErrorCode::UnexpectedType,
10451 9 => ScErrorCode::UnexpectedSize,
10452 #[allow(unreachable_patterns)]
10453 _ => return Err(Error::Invalid),
10454 };
10455 Ok(e)
10456 }
10457}
10458
10459impl From<ScErrorCode> for i32 {
10460 #[must_use]
10461 fn from(e: ScErrorCode) -> Self {
10462 e as Self
10463 }
10464}
10465
10466impl ReadXdr for ScErrorCode {
10467 #[cfg(feature = "std")]
10468 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10469 r.with_limited_depth(|r| {
10470 let e = i32::read_xdr(r)?;
10471 let v: Self = e.try_into()?;
10472 Ok(v)
10473 })
10474 }
10475}
10476
10477impl WriteXdr for ScErrorCode {
10478 #[cfg(feature = "std")]
10479 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10480 w.with_limited_depth(|w| {
10481 let i: i32 = (*self).into();
10482 i.write_xdr(w)
10483 })
10484 }
10485}
10486
10487#[cfg_eval::cfg_eval]
10509#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10510#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10511#[cfg_attr(
10512 all(feature = "serde", feature = "alloc"),
10513 serde_with::serde_as,
10514 derive(serde::Serialize, serde::Deserialize),
10515 serde(rename_all = "snake_case")
10516)]
10517#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
10518#[allow(clippy::large_enum_variant)]
10519pub enum ScError {
10520 Contract(u32),
10521 WasmVm(ScErrorCode),
10522 Context(ScErrorCode),
10523 Storage(ScErrorCode),
10524 Object(ScErrorCode),
10525 Crypto(ScErrorCode),
10526 Events(ScErrorCode),
10527 Budget(ScErrorCode),
10528 Value(ScErrorCode),
10529 Auth(ScErrorCode),
10530}
10531
10532#[cfg(feature = "alloc")]
10533impl Default for ScError {
10534 fn default() -> Self {
10535 Self::Contract(u32::default())
10536 }
10537}
10538
10539impl ScError {
10540 pub const VARIANTS: [ScErrorType; 10] = [
10541 ScErrorType::Contract,
10542 ScErrorType::WasmVm,
10543 ScErrorType::Context,
10544 ScErrorType::Storage,
10545 ScErrorType::Object,
10546 ScErrorType::Crypto,
10547 ScErrorType::Events,
10548 ScErrorType::Budget,
10549 ScErrorType::Value,
10550 ScErrorType::Auth,
10551 ];
10552 pub const VARIANTS_STR: [&'static str; 10] = [
10553 "Contract", "WasmVm", "Context", "Storage", "Object", "Crypto", "Events", "Budget",
10554 "Value", "Auth",
10555 ];
10556
10557 #[must_use]
10558 pub const fn name(&self) -> &'static str {
10559 match self {
10560 Self::Contract(_) => "Contract",
10561 Self::WasmVm(_) => "WasmVm",
10562 Self::Context(_) => "Context",
10563 Self::Storage(_) => "Storage",
10564 Self::Object(_) => "Object",
10565 Self::Crypto(_) => "Crypto",
10566 Self::Events(_) => "Events",
10567 Self::Budget(_) => "Budget",
10568 Self::Value(_) => "Value",
10569 Self::Auth(_) => "Auth",
10570 }
10571 }
10572
10573 #[must_use]
10574 pub const fn discriminant(&self) -> ScErrorType {
10575 #[allow(clippy::match_same_arms)]
10576 match self {
10577 Self::Contract(_) => ScErrorType::Contract,
10578 Self::WasmVm(_) => ScErrorType::WasmVm,
10579 Self::Context(_) => ScErrorType::Context,
10580 Self::Storage(_) => ScErrorType::Storage,
10581 Self::Object(_) => ScErrorType::Object,
10582 Self::Crypto(_) => ScErrorType::Crypto,
10583 Self::Events(_) => ScErrorType::Events,
10584 Self::Budget(_) => ScErrorType::Budget,
10585 Self::Value(_) => ScErrorType::Value,
10586 Self::Auth(_) => ScErrorType::Auth,
10587 }
10588 }
10589
10590 #[must_use]
10591 pub const fn variants() -> [ScErrorType; 10] {
10592 Self::VARIANTS
10593 }
10594}
10595
10596impl Name for ScError {
10597 #[must_use]
10598 fn name(&self) -> &'static str {
10599 Self::name(self)
10600 }
10601}
10602
10603impl Discriminant<ScErrorType> for ScError {
10604 #[must_use]
10605 fn discriminant(&self) -> ScErrorType {
10606 Self::discriminant(self)
10607 }
10608}
10609
10610impl Variants<ScErrorType> for ScError {
10611 fn variants() -> slice::Iter<'static, ScErrorType> {
10612 Self::VARIANTS.iter()
10613 }
10614}
10615
10616impl Union<ScErrorType> for ScError {}
10617
10618impl ReadXdr for ScError {
10619 #[cfg(feature = "std")]
10620 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10621 r.with_limited_depth(|r| {
10622 let dv: ScErrorType = <ScErrorType as ReadXdr>::read_xdr(r)?;
10623 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
10624 let v = match dv {
10625 ScErrorType::Contract => Self::Contract(u32::read_xdr(r)?),
10626 ScErrorType::WasmVm => Self::WasmVm(ScErrorCode::read_xdr(r)?),
10627 ScErrorType::Context => Self::Context(ScErrorCode::read_xdr(r)?),
10628 ScErrorType::Storage => Self::Storage(ScErrorCode::read_xdr(r)?),
10629 ScErrorType::Object => Self::Object(ScErrorCode::read_xdr(r)?),
10630 ScErrorType::Crypto => Self::Crypto(ScErrorCode::read_xdr(r)?),
10631 ScErrorType::Events => Self::Events(ScErrorCode::read_xdr(r)?),
10632 ScErrorType::Budget => Self::Budget(ScErrorCode::read_xdr(r)?),
10633 ScErrorType::Value => Self::Value(ScErrorCode::read_xdr(r)?),
10634 ScErrorType::Auth => Self::Auth(ScErrorCode::read_xdr(r)?),
10635 #[allow(unreachable_patterns)]
10636 _ => return Err(Error::Invalid),
10637 };
10638 Ok(v)
10639 })
10640 }
10641}
10642
10643impl WriteXdr for ScError {
10644 #[cfg(feature = "std")]
10645 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10646 w.with_limited_depth(|w| {
10647 self.discriminant().write_xdr(w)?;
10648 #[allow(clippy::match_same_arms)]
10649 match self {
10650 Self::Contract(v) => v.write_xdr(w)?,
10651 Self::WasmVm(v) => v.write_xdr(w)?,
10652 Self::Context(v) => v.write_xdr(w)?,
10653 Self::Storage(v) => v.write_xdr(w)?,
10654 Self::Object(v) => v.write_xdr(w)?,
10655 Self::Crypto(v) => v.write_xdr(w)?,
10656 Self::Events(v) => v.write_xdr(w)?,
10657 Self::Budget(v) => v.write_xdr(w)?,
10658 Self::Value(v) => v.write_xdr(w)?,
10659 Self::Auth(v) => v.write_xdr(w)?,
10660 };
10661 Ok(())
10662 })
10663 }
10664}
10665
10666#[cfg_attr(feature = "alloc", derive(Default))]
10676#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10677#[cfg_eval::cfg_eval]
10678#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10679#[cfg_attr(
10680 all(feature = "serde", feature = "alloc"),
10681 derive(serde_with::SerializeDisplay)
10682)]
10683pub struct UInt128Parts {
10684 pub hi: u64,
10685 pub lo: u64,
10686}
10687
10688impl ReadXdr for UInt128Parts {
10689 #[cfg(feature = "std")]
10690 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10691 r.with_limited_depth(|r| {
10692 Ok(Self {
10693 hi: u64::read_xdr(r)?,
10694 lo: u64::read_xdr(r)?,
10695 })
10696 })
10697 }
10698}
10699
10700impl WriteXdr for UInt128Parts {
10701 #[cfg(feature = "std")]
10702 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10703 w.with_limited_depth(|w| {
10704 self.hi.write_xdr(w)?;
10705 self.lo.write_xdr(w)?;
10706 Ok(())
10707 })
10708 }
10709}
10710#[cfg(all(feature = "serde", feature = "alloc"))]
10711impl<'de> serde::Deserialize<'de> for UInt128Parts {
10712 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
10713 where
10714 D: serde::Deserializer<'de>,
10715 {
10716 use serde::Deserialize;
10717 #[derive(Deserialize)]
10718 struct UInt128Parts {
10719 hi: u64,
10720 lo: u64,
10721 }
10722 #[derive(Deserialize)]
10723 #[serde(untagged)]
10724 enum UInt128PartsOrString<'a> {
10725 Str(&'a str),
10726 String(String),
10727 UInt128Parts(UInt128Parts),
10728 }
10729 match UInt128PartsOrString::deserialize(deserializer)? {
10730 UInt128PartsOrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
10731 UInt128PartsOrString::String(s) => s.parse().map_err(serde::de::Error::custom),
10732 UInt128PartsOrString::UInt128Parts(UInt128Parts { hi, lo }) => {
10733 Ok(self::UInt128Parts { hi, lo })
10734 }
10735 }
10736 }
10737}
10738
10739#[cfg_attr(feature = "alloc", derive(Default))]
10749#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10750#[cfg_eval::cfg_eval]
10751#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10752#[cfg_attr(
10753 all(feature = "serde", feature = "alloc"),
10754 derive(serde_with::SerializeDisplay)
10755)]
10756pub struct Int128Parts {
10757 pub hi: i64,
10758 pub lo: u64,
10759}
10760
10761impl ReadXdr for Int128Parts {
10762 #[cfg(feature = "std")]
10763 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10764 r.with_limited_depth(|r| {
10765 Ok(Self {
10766 hi: i64::read_xdr(r)?,
10767 lo: u64::read_xdr(r)?,
10768 })
10769 })
10770 }
10771}
10772
10773impl WriteXdr for Int128Parts {
10774 #[cfg(feature = "std")]
10775 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10776 w.with_limited_depth(|w| {
10777 self.hi.write_xdr(w)?;
10778 self.lo.write_xdr(w)?;
10779 Ok(())
10780 })
10781 }
10782}
10783#[cfg(all(feature = "serde", feature = "alloc"))]
10784impl<'de> serde::Deserialize<'de> for Int128Parts {
10785 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
10786 where
10787 D: serde::Deserializer<'de>,
10788 {
10789 use serde::Deserialize;
10790 #[derive(Deserialize)]
10791 struct Int128Parts {
10792 hi: i64,
10793 lo: u64,
10794 }
10795 #[derive(Deserialize)]
10796 #[serde(untagged)]
10797 enum Int128PartsOrString<'a> {
10798 Str(&'a str),
10799 String(String),
10800 Int128Parts(Int128Parts),
10801 }
10802 match Int128PartsOrString::deserialize(deserializer)? {
10803 Int128PartsOrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
10804 Int128PartsOrString::String(s) => s.parse().map_err(serde::de::Error::custom),
10805 Int128PartsOrString::Int128Parts(Int128Parts { hi, lo }) => {
10806 Ok(self::Int128Parts { hi, lo })
10807 }
10808 }
10809 }
10810}
10811
10812#[cfg_attr(feature = "alloc", derive(Default))]
10824#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10825#[cfg_eval::cfg_eval]
10826#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10827#[cfg_attr(
10828 all(feature = "serde", feature = "alloc"),
10829 derive(serde_with::SerializeDisplay)
10830)]
10831pub struct UInt256Parts {
10832 pub hi_hi: u64,
10833 pub hi_lo: u64,
10834 pub lo_hi: u64,
10835 pub lo_lo: u64,
10836}
10837
10838impl ReadXdr for UInt256Parts {
10839 #[cfg(feature = "std")]
10840 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10841 r.with_limited_depth(|r| {
10842 Ok(Self {
10843 hi_hi: u64::read_xdr(r)?,
10844 hi_lo: u64::read_xdr(r)?,
10845 lo_hi: u64::read_xdr(r)?,
10846 lo_lo: u64::read_xdr(r)?,
10847 })
10848 })
10849 }
10850}
10851
10852impl WriteXdr for UInt256Parts {
10853 #[cfg(feature = "std")]
10854 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10855 w.with_limited_depth(|w| {
10856 self.hi_hi.write_xdr(w)?;
10857 self.hi_lo.write_xdr(w)?;
10858 self.lo_hi.write_xdr(w)?;
10859 self.lo_lo.write_xdr(w)?;
10860 Ok(())
10861 })
10862 }
10863}
10864#[cfg(all(feature = "serde", feature = "alloc"))]
10865impl<'de> serde::Deserialize<'de> for UInt256Parts {
10866 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
10867 where
10868 D: serde::Deserializer<'de>,
10869 {
10870 use serde::Deserialize;
10871 #[derive(Deserialize)]
10872 struct UInt256Parts {
10873 hi_hi: u64,
10874 hi_lo: u64,
10875 lo_hi: u64,
10876 lo_lo: u64,
10877 }
10878 #[derive(Deserialize)]
10879 #[serde(untagged)]
10880 enum UInt256PartsOrString<'a> {
10881 Str(&'a str),
10882 String(String),
10883 UInt256Parts(UInt256Parts),
10884 }
10885 match UInt256PartsOrString::deserialize(deserializer)? {
10886 UInt256PartsOrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
10887 UInt256PartsOrString::String(s) => s.parse().map_err(serde::de::Error::custom),
10888 UInt256PartsOrString::UInt256Parts(UInt256Parts {
10889 hi_hi,
10890 hi_lo,
10891 lo_hi,
10892 lo_lo,
10893 }) => Ok(self::UInt256Parts {
10894 hi_hi,
10895 hi_lo,
10896 lo_hi,
10897 lo_lo,
10898 }),
10899 }
10900 }
10901}
10902
10903#[cfg_attr(feature = "alloc", derive(Default))]
10915#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
10916#[cfg_eval::cfg_eval]
10917#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
10918#[cfg_attr(
10919 all(feature = "serde", feature = "alloc"),
10920 derive(serde_with::SerializeDisplay)
10921)]
10922pub struct Int256Parts {
10923 pub hi_hi: i64,
10924 pub hi_lo: u64,
10925 pub lo_hi: u64,
10926 pub lo_lo: u64,
10927}
10928
10929impl ReadXdr for Int256Parts {
10930 #[cfg(feature = "std")]
10931 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
10932 r.with_limited_depth(|r| {
10933 Ok(Self {
10934 hi_hi: i64::read_xdr(r)?,
10935 hi_lo: u64::read_xdr(r)?,
10936 lo_hi: u64::read_xdr(r)?,
10937 lo_lo: u64::read_xdr(r)?,
10938 })
10939 })
10940 }
10941}
10942
10943impl WriteXdr for Int256Parts {
10944 #[cfg(feature = "std")]
10945 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
10946 w.with_limited_depth(|w| {
10947 self.hi_hi.write_xdr(w)?;
10948 self.hi_lo.write_xdr(w)?;
10949 self.lo_hi.write_xdr(w)?;
10950 self.lo_lo.write_xdr(w)?;
10951 Ok(())
10952 })
10953 }
10954}
10955#[cfg(all(feature = "serde", feature = "alloc"))]
10956impl<'de> serde::Deserialize<'de> for Int256Parts {
10957 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
10958 where
10959 D: serde::Deserializer<'de>,
10960 {
10961 use serde::Deserialize;
10962 #[derive(Deserialize)]
10963 struct Int256Parts {
10964 hi_hi: i64,
10965 hi_lo: u64,
10966 lo_hi: u64,
10967 lo_lo: u64,
10968 }
10969 #[derive(Deserialize)]
10970 #[serde(untagged)]
10971 enum Int256PartsOrString<'a> {
10972 Str(&'a str),
10973 String(String),
10974 Int256Parts(Int256Parts),
10975 }
10976 match Int256PartsOrString::deserialize(deserializer)? {
10977 Int256PartsOrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
10978 Int256PartsOrString::String(s) => s.parse().map_err(serde::de::Error::custom),
10979 Int256PartsOrString::Int256Parts(Int256Parts {
10980 hi_hi,
10981 hi_lo,
10982 lo_hi,
10983 lo_lo,
10984 }) => Ok(self::Int256Parts {
10985 hi_hi,
10986 hi_lo,
10987 lo_hi,
10988 lo_lo,
10989 }),
10990 }
10991 }
10992}
10993
10994#[cfg_attr(feature = "alloc", derive(Default))]
11006#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
11007#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11008#[cfg_attr(
11009 all(feature = "serde", feature = "alloc"),
11010 derive(serde::Serialize, serde::Deserialize),
11011 serde(rename_all = "snake_case")
11012)]
11013#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11014#[repr(i32)]
11015pub enum ContractExecutableType {
11016 #[cfg_attr(feature = "alloc", default)]
11017 Wasm = 0,
11018 StellarAsset = 1,
11019}
11020
11021impl ContractExecutableType {
11022 pub const VARIANTS: [ContractExecutableType; 2] = [
11023 ContractExecutableType::Wasm,
11024 ContractExecutableType::StellarAsset,
11025 ];
11026 pub const VARIANTS_STR: [&'static str; 2] = ["Wasm", "StellarAsset"];
11027
11028 #[must_use]
11029 pub const fn name(&self) -> &'static str {
11030 match self {
11031 Self::Wasm => "Wasm",
11032 Self::StellarAsset => "StellarAsset",
11033 }
11034 }
11035
11036 #[must_use]
11037 pub const fn variants() -> [ContractExecutableType; 2] {
11038 Self::VARIANTS
11039 }
11040}
11041
11042impl Name for ContractExecutableType {
11043 #[must_use]
11044 fn name(&self) -> &'static str {
11045 Self::name(self)
11046 }
11047}
11048
11049impl Variants<ContractExecutableType> for ContractExecutableType {
11050 fn variants() -> slice::Iter<'static, ContractExecutableType> {
11051 Self::VARIANTS.iter()
11052 }
11053}
11054
11055impl Enum for ContractExecutableType {}
11056
11057impl fmt::Display for ContractExecutableType {
11058 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11059 f.write_str(self.name())
11060 }
11061}
11062
11063impl TryFrom<i32> for ContractExecutableType {
11064 type Error = Error;
11065
11066 fn try_from(i: i32) -> Result<Self, Error> {
11067 let e = match i {
11068 0 => ContractExecutableType::Wasm,
11069 1 => ContractExecutableType::StellarAsset,
11070 #[allow(unreachable_patterns)]
11071 _ => return Err(Error::Invalid),
11072 };
11073 Ok(e)
11074 }
11075}
11076
11077impl From<ContractExecutableType> for i32 {
11078 #[must_use]
11079 fn from(e: ContractExecutableType) -> Self {
11080 e as Self
11081 }
11082}
11083
11084impl ReadXdr for ContractExecutableType {
11085 #[cfg(feature = "std")]
11086 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11087 r.with_limited_depth(|r| {
11088 let e = i32::read_xdr(r)?;
11089 let v: Self = e.try_into()?;
11090 Ok(v)
11091 })
11092 }
11093}
11094
11095impl WriteXdr for ContractExecutableType {
11096 #[cfg(feature = "std")]
11097 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11098 w.with_limited_depth(|w| {
11099 let i: i32 = (*self).into();
11100 i.write_xdr(w)
11101 })
11102 }
11103}
11104
11105#[cfg_eval::cfg_eval]
11119#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
11120#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11121#[cfg_attr(
11122 all(feature = "serde", feature = "alloc"),
11123 serde_with::serde_as,
11124 derive(serde::Serialize, serde::Deserialize),
11125 serde(rename_all = "snake_case")
11126)]
11127#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11128#[allow(clippy::large_enum_variant)]
11129pub enum ContractExecutable {
11130 Wasm(Hash),
11131 StellarAsset,
11132}
11133
11134#[cfg(feature = "alloc")]
11135impl Default for ContractExecutable {
11136 fn default() -> Self {
11137 Self::Wasm(Hash::default())
11138 }
11139}
11140
11141impl ContractExecutable {
11142 pub const VARIANTS: [ContractExecutableType; 2] = [
11143 ContractExecutableType::Wasm,
11144 ContractExecutableType::StellarAsset,
11145 ];
11146 pub const VARIANTS_STR: [&'static str; 2] = ["Wasm", "StellarAsset"];
11147
11148 #[must_use]
11149 pub const fn name(&self) -> &'static str {
11150 match self {
11151 Self::Wasm(_) => "Wasm",
11152 Self::StellarAsset => "StellarAsset",
11153 }
11154 }
11155
11156 #[must_use]
11157 pub const fn discriminant(&self) -> ContractExecutableType {
11158 #[allow(clippy::match_same_arms)]
11159 match self {
11160 Self::Wasm(_) => ContractExecutableType::Wasm,
11161 Self::StellarAsset => ContractExecutableType::StellarAsset,
11162 }
11163 }
11164
11165 #[must_use]
11166 pub const fn variants() -> [ContractExecutableType; 2] {
11167 Self::VARIANTS
11168 }
11169}
11170
11171impl Name for ContractExecutable {
11172 #[must_use]
11173 fn name(&self) -> &'static str {
11174 Self::name(self)
11175 }
11176}
11177
11178impl Discriminant<ContractExecutableType> for ContractExecutable {
11179 #[must_use]
11180 fn discriminant(&self) -> ContractExecutableType {
11181 Self::discriminant(self)
11182 }
11183}
11184
11185impl Variants<ContractExecutableType> for ContractExecutable {
11186 fn variants() -> slice::Iter<'static, ContractExecutableType> {
11187 Self::VARIANTS.iter()
11188 }
11189}
11190
11191impl Union<ContractExecutableType> for ContractExecutable {}
11192
11193impl ReadXdr for ContractExecutable {
11194 #[cfg(feature = "std")]
11195 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11196 r.with_limited_depth(|r| {
11197 let dv: ContractExecutableType = <ContractExecutableType as ReadXdr>::read_xdr(r)?;
11198 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
11199 let v = match dv {
11200 ContractExecutableType::Wasm => Self::Wasm(Hash::read_xdr(r)?),
11201 ContractExecutableType::StellarAsset => Self::StellarAsset,
11202 #[allow(unreachable_patterns)]
11203 _ => return Err(Error::Invalid),
11204 };
11205 Ok(v)
11206 })
11207 }
11208}
11209
11210impl WriteXdr for ContractExecutable {
11211 #[cfg(feature = "std")]
11212 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11213 w.with_limited_depth(|w| {
11214 self.discriminant().write_xdr(w)?;
11215 #[allow(clippy::match_same_arms)]
11216 match self {
11217 Self::Wasm(v) => v.write_xdr(w)?,
11218 Self::StellarAsset => ().write_xdr(w)?,
11219 };
11220 Ok(())
11221 })
11222 }
11223}
11224
11225#[cfg_attr(feature = "alloc", derive(Default))]
11240#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
11241#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11242#[cfg_attr(
11243 all(feature = "serde", feature = "alloc"),
11244 derive(serde::Serialize, serde::Deserialize),
11245 serde(rename_all = "snake_case")
11246)]
11247#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11248#[repr(i32)]
11249pub enum ScAddressType {
11250 #[cfg_attr(feature = "alloc", default)]
11251 Account = 0,
11252 Contract = 1,
11253 MuxedAccount = 2,
11254 ClaimableBalance = 3,
11255 LiquidityPool = 4,
11256}
11257
11258impl ScAddressType {
11259 pub const VARIANTS: [ScAddressType; 5] = [
11260 ScAddressType::Account,
11261 ScAddressType::Contract,
11262 ScAddressType::MuxedAccount,
11263 ScAddressType::ClaimableBalance,
11264 ScAddressType::LiquidityPool,
11265 ];
11266 pub const VARIANTS_STR: [&'static str; 5] = [
11267 "Account",
11268 "Contract",
11269 "MuxedAccount",
11270 "ClaimableBalance",
11271 "LiquidityPool",
11272 ];
11273
11274 #[must_use]
11275 pub const fn name(&self) -> &'static str {
11276 match self {
11277 Self::Account => "Account",
11278 Self::Contract => "Contract",
11279 Self::MuxedAccount => "MuxedAccount",
11280 Self::ClaimableBalance => "ClaimableBalance",
11281 Self::LiquidityPool => "LiquidityPool",
11282 }
11283 }
11284
11285 #[must_use]
11286 pub const fn variants() -> [ScAddressType; 5] {
11287 Self::VARIANTS
11288 }
11289}
11290
11291impl Name for ScAddressType {
11292 #[must_use]
11293 fn name(&self) -> &'static str {
11294 Self::name(self)
11295 }
11296}
11297
11298impl Variants<ScAddressType> for ScAddressType {
11299 fn variants() -> slice::Iter<'static, ScAddressType> {
11300 Self::VARIANTS.iter()
11301 }
11302}
11303
11304impl Enum for ScAddressType {}
11305
11306impl fmt::Display for ScAddressType {
11307 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11308 f.write_str(self.name())
11309 }
11310}
11311
11312impl TryFrom<i32> for ScAddressType {
11313 type Error = Error;
11314
11315 fn try_from(i: i32) -> Result<Self, Error> {
11316 let e = match i {
11317 0 => ScAddressType::Account,
11318 1 => ScAddressType::Contract,
11319 2 => ScAddressType::MuxedAccount,
11320 3 => ScAddressType::ClaimableBalance,
11321 4 => ScAddressType::LiquidityPool,
11322 #[allow(unreachable_patterns)]
11323 _ => return Err(Error::Invalid),
11324 };
11325 Ok(e)
11326 }
11327}
11328
11329impl From<ScAddressType> for i32 {
11330 #[must_use]
11331 fn from(e: ScAddressType) -> Self {
11332 e as Self
11333 }
11334}
11335
11336impl ReadXdr for ScAddressType {
11337 #[cfg(feature = "std")]
11338 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11339 r.with_limited_depth(|r| {
11340 let e = i32::read_xdr(r)?;
11341 let v: Self = e.try_into()?;
11342 Ok(v)
11343 })
11344 }
11345}
11346
11347impl WriteXdr for ScAddressType {
11348 #[cfg(feature = "std")]
11349 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11350 w.with_limited_depth(|w| {
11351 let i: i32 = (*self).into();
11352 i.write_xdr(w)
11353 })
11354 }
11355}
11356
11357#[cfg_attr(feature = "alloc", derive(Default))]
11368#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
11369#[cfg_eval::cfg_eval]
11370#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11371#[cfg_attr(
11372 all(feature = "serde", feature = "alloc"),
11373 derive(serde_with::SerializeDisplay)
11374)]
11375pub struct MuxedEd25519Account {
11376 pub id: u64,
11377 pub ed25519: Uint256,
11378}
11379
11380impl ReadXdr for MuxedEd25519Account {
11381 #[cfg(feature = "std")]
11382 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11383 r.with_limited_depth(|r| {
11384 Ok(Self {
11385 id: u64::read_xdr(r)?,
11386 ed25519: Uint256::read_xdr(r)?,
11387 })
11388 })
11389 }
11390}
11391
11392impl WriteXdr for MuxedEd25519Account {
11393 #[cfg(feature = "std")]
11394 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11395 w.with_limited_depth(|w| {
11396 self.id.write_xdr(w)?;
11397 self.ed25519.write_xdr(w)?;
11398 Ok(())
11399 })
11400 }
11401}
11402#[cfg(all(feature = "serde", feature = "alloc"))]
11403impl<'de> serde::Deserialize<'de> for MuxedEd25519Account {
11404 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
11405 where
11406 D: serde::Deserializer<'de>,
11407 {
11408 use serde::Deserialize;
11409 #[derive(Deserialize)]
11410 struct MuxedEd25519Account {
11411 id: u64,
11412 ed25519: Uint256,
11413 }
11414 #[derive(Deserialize)]
11415 #[serde(untagged)]
11416 enum MuxedEd25519AccountOrString<'a> {
11417 Str(&'a str),
11418 String(String),
11419 MuxedEd25519Account(MuxedEd25519Account),
11420 }
11421 match MuxedEd25519AccountOrString::deserialize(deserializer)? {
11422 MuxedEd25519AccountOrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
11423 MuxedEd25519AccountOrString::String(s) => s.parse().map_err(serde::de::Error::custom),
11424 MuxedEd25519AccountOrString::MuxedEd25519Account(MuxedEd25519Account {
11425 id,
11426 ed25519,
11427 }) => Ok(self::MuxedEd25519Account { id, ed25519 }),
11428 }
11429 }
11430}
11431
11432#[cfg_eval::cfg_eval]
11452#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
11453#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11454#[cfg_attr(
11455 all(feature = "serde", feature = "alloc"),
11456 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
11457)]
11458#[allow(clippy::large_enum_variant)]
11459pub enum ScAddress {
11460 Account(AccountId),
11461 Contract(ContractId),
11462 MuxedAccount(MuxedEd25519Account),
11463 ClaimableBalance(ClaimableBalanceId),
11464 LiquidityPool(PoolId),
11465}
11466
11467#[cfg(feature = "alloc")]
11468impl Default for ScAddress {
11469 fn default() -> Self {
11470 Self::Account(AccountId::default())
11471 }
11472}
11473
11474impl ScAddress {
11475 pub const VARIANTS: [ScAddressType; 5] = [
11476 ScAddressType::Account,
11477 ScAddressType::Contract,
11478 ScAddressType::MuxedAccount,
11479 ScAddressType::ClaimableBalance,
11480 ScAddressType::LiquidityPool,
11481 ];
11482 pub const VARIANTS_STR: [&'static str; 5] = [
11483 "Account",
11484 "Contract",
11485 "MuxedAccount",
11486 "ClaimableBalance",
11487 "LiquidityPool",
11488 ];
11489
11490 #[must_use]
11491 pub const fn name(&self) -> &'static str {
11492 match self {
11493 Self::Account(_) => "Account",
11494 Self::Contract(_) => "Contract",
11495 Self::MuxedAccount(_) => "MuxedAccount",
11496 Self::ClaimableBalance(_) => "ClaimableBalance",
11497 Self::LiquidityPool(_) => "LiquidityPool",
11498 }
11499 }
11500
11501 #[must_use]
11502 pub const fn discriminant(&self) -> ScAddressType {
11503 #[allow(clippy::match_same_arms)]
11504 match self {
11505 Self::Account(_) => ScAddressType::Account,
11506 Self::Contract(_) => ScAddressType::Contract,
11507 Self::MuxedAccount(_) => ScAddressType::MuxedAccount,
11508 Self::ClaimableBalance(_) => ScAddressType::ClaimableBalance,
11509 Self::LiquidityPool(_) => ScAddressType::LiquidityPool,
11510 }
11511 }
11512
11513 #[must_use]
11514 pub const fn variants() -> [ScAddressType; 5] {
11515 Self::VARIANTS
11516 }
11517}
11518
11519impl Name for ScAddress {
11520 #[must_use]
11521 fn name(&self) -> &'static str {
11522 Self::name(self)
11523 }
11524}
11525
11526impl Discriminant<ScAddressType> for ScAddress {
11527 #[must_use]
11528 fn discriminant(&self) -> ScAddressType {
11529 Self::discriminant(self)
11530 }
11531}
11532
11533impl Variants<ScAddressType> for ScAddress {
11534 fn variants() -> slice::Iter<'static, ScAddressType> {
11535 Self::VARIANTS.iter()
11536 }
11537}
11538
11539impl Union<ScAddressType> for ScAddress {}
11540
11541impl ReadXdr for ScAddress {
11542 #[cfg(feature = "std")]
11543 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11544 r.with_limited_depth(|r| {
11545 let dv: ScAddressType = <ScAddressType as ReadXdr>::read_xdr(r)?;
11546 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
11547 let v = match dv {
11548 ScAddressType::Account => Self::Account(AccountId::read_xdr(r)?),
11549 ScAddressType::Contract => Self::Contract(ContractId::read_xdr(r)?),
11550 ScAddressType::MuxedAccount => {
11551 Self::MuxedAccount(MuxedEd25519Account::read_xdr(r)?)
11552 }
11553 ScAddressType::ClaimableBalance => {
11554 Self::ClaimableBalance(ClaimableBalanceId::read_xdr(r)?)
11555 }
11556 ScAddressType::LiquidityPool => Self::LiquidityPool(PoolId::read_xdr(r)?),
11557 #[allow(unreachable_patterns)]
11558 _ => return Err(Error::Invalid),
11559 };
11560 Ok(v)
11561 })
11562 }
11563}
11564
11565impl WriteXdr for ScAddress {
11566 #[cfg(feature = "std")]
11567 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11568 w.with_limited_depth(|w| {
11569 self.discriminant().write_xdr(w)?;
11570 #[allow(clippy::match_same_arms)]
11571 match self {
11572 Self::Account(v) => v.write_xdr(w)?,
11573 Self::Contract(v) => v.write_xdr(w)?,
11574 Self::MuxedAccount(v) => v.write_xdr(w)?,
11575 Self::ClaimableBalance(v) => v.write_xdr(w)?,
11576 Self::LiquidityPool(v) => v.write_xdr(w)?,
11577 };
11578 Ok(())
11579 })
11580 }
11581}
11582
11583pub const SCSYMBOL_LIMIT: u64 = 32;
11590
11591#[cfg_eval::cfg_eval]
11598#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
11599#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11600#[cfg_attr(
11601 all(feature = "serde", feature = "alloc"),
11602 serde_with::serde_as,
11603 derive(serde::Serialize, serde::Deserialize),
11604 serde(rename_all = "snake_case")
11605)]
11606#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11607#[derive(Debug)]
11608pub struct ScVec(pub VecM<ScVal>);
11609
11610impl From<ScVec> for VecM<ScVal> {
11611 #[must_use]
11612 fn from(x: ScVec) -> Self {
11613 x.0
11614 }
11615}
11616
11617impl From<VecM<ScVal>> for ScVec {
11618 #[must_use]
11619 fn from(x: VecM<ScVal>) -> Self {
11620 ScVec(x)
11621 }
11622}
11623
11624impl AsRef<VecM<ScVal>> for ScVec {
11625 #[must_use]
11626 fn as_ref(&self) -> &VecM<ScVal> {
11627 &self.0
11628 }
11629}
11630
11631impl ReadXdr for ScVec {
11632 #[cfg(feature = "std")]
11633 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11634 r.with_limited_depth(|r| {
11635 let i = VecM::<ScVal>::read_xdr(r)?;
11636 let v = ScVec(i);
11637 Ok(v)
11638 })
11639 }
11640}
11641
11642impl WriteXdr for ScVec {
11643 #[cfg(feature = "std")]
11644 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11645 w.with_limited_depth(|w| self.0.write_xdr(w))
11646 }
11647}
11648
11649impl Deref for ScVec {
11650 type Target = VecM<ScVal>;
11651 fn deref(&self) -> &Self::Target {
11652 &self.0
11653 }
11654}
11655
11656impl From<ScVec> for Vec<ScVal> {
11657 #[must_use]
11658 fn from(x: ScVec) -> Self {
11659 x.0 .0
11660 }
11661}
11662
11663impl TryFrom<Vec<ScVal>> for ScVec {
11664 type Error = Error;
11665 fn try_from(x: Vec<ScVal>) -> Result<Self, Error> {
11666 Ok(ScVec(x.try_into()?))
11667 }
11668}
11669
11670#[cfg(feature = "alloc")]
11671impl TryFrom<&Vec<ScVal>> for ScVec {
11672 type Error = Error;
11673 fn try_from(x: &Vec<ScVal>) -> Result<Self, Error> {
11674 Ok(ScVec(x.try_into()?))
11675 }
11676}
11677
11678impl AsRef<Vec<ScVal>> for ScVec {
11679 #[must_use]
11680 fn as_ref(&self) -> &Vec<ScVal> {
11681 &self.0 .0
11682 }
11683}
11684
11685impl AsRef<[ScVal]> for ScVec {
11686 #[cfg(feature = "alloc")]
11687 #[must_use]
11688 fn as_ref(&self) -> &[ScVal] {
11689 &self.0 .0
11690 }
11691 #[cfg(not(feature = "alloc"))]
11692 #[must_use]
11693 fn as_ref(&self) -> &[ScVal] {
11694 self.0 .0
11695 }
11696}
11697
11698#[cfg_eval::cfg_eval]
11705#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
11706#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11707#[cfg_attr(
11708 all(feature = "serde", feature = "alloc"),
11709 serde_with::serde_as,
11710 derive(serde::Serialize, serde::Deserialize),
11711 serde(rename_all = "snake_case")
11712)]
11713#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11714#[derive(Debug)]
11715pub struct ScMap(pub VecM<ScMapEntry>);
11716
11717impl From<ScMap> for VecM<ScMapEntry> {
11718 #[must_use]
11719 fn from(x: ScMap) -> Self {
11720 x.0
11721 }
11722}
11723
11724impl From<VecM<ScMapEntry>> for ScMap {
11725 #[must_use]
11726 fn from(x: VecM<ScMapEntry>) -> Self {
11727 ScMap(x)
11728 }
11729}
11730
11731impl AsRef<VecM<ScMapEntry>> for ScMap {
11732 #[must_use]
11733 fn as_ref(&self) -> &VecM<ScMapEntry> {
11734 &self.0
11735 }
11736}
11737
11738impl ReadXdr for ScMap {
11739 #[cfg(feature = "std")]
11740 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11741 r.with_limited_depth(|r| {
11742 let i = VecM::<ScMapEntry>::read_xdr(r)?;
11743 let v = ScMap(i);
11744 Ok(v)
11745 })
11746 }
11747}
11748
11749impl WriteXdr for ScMap {
11750 #[cfg(feature = "std")]
11751 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11752 w.with_limited_depth(|w| self.0.write_xdr(w))
11753 }
11754}
11755
11756impl Deref for ScMap {
11757 type Target = VecM<ScMapEntry>;
11758 fn deref(&self) -> &Self::Target {
11759 &self.0
11760 }
11761}
11762
11763impl From<ScMap> for Vec<ScMapEntry> {
11764 #[must_use]
11765 fn from(x: ScMap) -> Self {
11766 x.0 .0
11767 }
11768}
11769
11770impl TryFrom<Vec<ScMapEntry>> for ScMap {
11771 type Error = Error;
11772 fn try_from(x: Vec<ScMapEntry>) -> Result<Self, Error> {
11773 Ok(ScMap(x.try_into()?))
11774 }
11775}
11776
11777#[cfg(feature = "alloc")]
11778impl TryFrom<&Vec<ScMapEntry>> for ScMap {
11779 type Error = Error;
11780 fn try_from(x: &Vec<ScMapEntry>) -> Result<Self, Error> {
11781 Ok(ScMap(x.try_into()?))
11782 }
11783}
11784
11785impl AsRef<Vec<ScMapEntry>> for ScMap {
11786 #[must_use]
11787 fn as_ref(&self) -> &Vec<ScMapEntry> {
11788 &self.0 .0
11789 }
11790}
11791
11792impl AsRef<[ScMapEntry]> for ScMap {
11793 #[cfg(feature = "alloc")]
11794 #[must_use]
11795 fn as_ref(&self) -> &[ScMapEntry] {
11796 &self.0 .0
11797 }
11798 #[cfg(not(feature = "alloc"))]
11799 #[must_use]
11800 fn as_ref(&self) -> &[ScMapEntry] {
11801 self.0 .0
11802 }
11803}
11804
11805#[cfg_eval::cfg_eval]
11812#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
11813#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11814#[cfg_attr(
11815 all(feature = "serde", feature = "alloc"),
11816 serde_with::serde_as,
11817 derive(serde::Serialize, serde::Deserialize),
11818 serde(rename_all = "snake_case")
11819)]
11820#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11821#[derive(Debug)]
11822pub struct ScBytes(pub BytesM);
11823
11824impl From<ScBytes> for BytesM {
11825 #[must_use]
11826 fn from(x: ScBytes) -> Self {
11827 x.0
11828 }
11829}
11830
11831impl From<BytesM> for ScBytes {
11832 #[must_use]
11833 fn from(x: BytesM) -> Self {
11834 ScBytes(x)
11835 }
11836}
11837
11838impl AsRef<BytesM> for ScBytes {
11839 #[must_use]
11840 fn as_ref(&self) -> &BytesM {
11841 &self.0
11842 }
11843}
11844
11845impl ReadXdr for ScBytes {
11846 #[cfg(feature = "std")]
11847 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11848 r.with_limited_depth(|r| {
11849 let i = BytesM::read_xdr(r)?;
11850 let v = ScBytes(i);
11851 Ok(v)
11852 })
11853 }
11854}
11855
11856impl WriteXdr for ScBytes {
11857 #[cfg(feature = "std")]
11858 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11859 w.with_limited_depth(|w| self.0.write_xdr(w))
11860 }
11861}
11862
11863impl Deref for ScBytes {
11864 type Target = BytesM;
11865 fn deref(&self) -> &Self::Target {
11866 &self.0
11867 }
11868}
11869
11870impl From<ScBytes> for Vec<u8> {
11871 #[must_use]
11872 fn from(x: ScBytes) -> Self {
11873 x.0 .0
11874 }
11875}
11876
11877impl TryFrom<Vec<u8>> for ScBytes {
11878 type Error = Error;
11879 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
11880 Ok(ScBytes(x.try_into()?))
11881 }
11882}
11883
11884#[cfg(feature = "alloc")]
11885impl TryFrom<&Vec<u8>> for ScBytes {
11886 type Error = Error;
11887 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
11888 Ok(ScBytes(x.try_into()?))
11889 }
11890}
11891
11892impl AsRef<Vec<u8>> for ScBytes {
11893 #[must_use]
11894 fn as_ref(&self) -> &Vec<u8> {
11895 &self.0 .0
11896 }
11897}
11898
11899impl AsRef<[u8]> for ScBytes {
11900 #[cfg(feature = "alloc")]
11901 #[must_use]
11902 fn as_ref(&self) -> &[u8] {
11903 &self.0 .0
11904 }
11905 #[cfg(not(feature = "alloc"))]
11906 #[must_use]
11907 fn as_ref(&self) -> &[u8] {
11908 self.0 .0
11909 }
11910}
11911
11912#[cfg_eval::cfg_eval]
11919#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
11920#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
11921#[cfg_attr(
11922 all(feature = "serde", feature = "alloc"),
11923 serde_with::serde_as,
11924 derive(serde::Serialize, serde::Deserialize),
11925 serde(rename_all = "snake_case")
11926)]
11927#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
11928#[derive(Debug)]
11929pub struct ScString(pub StringM);
11930
11931impl From<ScString> for StringM {
11932 #[must_use]
11933 fn from(x: ScString) -> Self {
11934 x.0
11935 }
11936}
11937
11938impl From<StringM> for ScString {
11939 #[must_use]
11940 fn from(x: StringM) -> Self {
11941 ScString(x)
11942 }
11943}
11944
11945impl AsRef<StringM> for ScString {
11946 #[must_use]
11947 fn as_ref(&self) -> &StringM {
11948 &self.0
11949 }
11950}
11951
11952impl ReadXdr for ScString {
11953 #[cfg(feature = "std")]
11954 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
11955 r.with_limited_depth(|r| {
11956 let i = StringM::read_xdr(r)?;
11957 let v = ScString(i);
11958 Ok(v)
11959 })
11960 }
11961}
11962
11963impl WriteXdr for ScString {
11964 #[cfg(feature = "std")]
11965 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
11966 w.with_limited_depth(|w| self.0.write_xdr(w))
11967 }
11968}
11969
11970impl Deref for ScString {
11971 type Target = StringM;
11972 fn deref(&self) -> &Self::Target {
11973 &self.0
11974 }
11975}
11976
11977impl From<ScString> for Vec<u8> {
11978 #[must_use]
11979 fn from(x: ScString) -> Self {
11980 x.0 .0
11981 }
11982}
11983
11984impl TryFrom<Vec<u8>> for ScString {
11985 type Error = Error;
11986 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
11987 Ok(ScString(x.try_into()?))
11988 }
11989}
11990
11991#[cfg(feature = "alloc")]
11992impl TryFrom<&Vec<u8>> for ScString {
11993 type Error = Error;
11994 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
11995 Ok(ScString(x.try_into()?))
11996 }
11997}
11998
11999impl AsRef<Vec<u8>> for ScString {
12000 #[must_use]
12001 fn as_ref(&self) -> &Vec<u8> {
12002 &self.0 .0
12003 }
12004}
12005
12006impl AsRef<[u8]> for ScString {
12007 #[cfg(feature = "alloc")]
12008 #[must_use]
12009 fn as_ref(&self) -> &[u8] {
12010 &self.0 .0
12011 }
12012 #[cfg(not(feature = "alloc"))]
12013 #[must_use]
12014 fn as_ref(&self) -> &[u8] {
12015 self.0 .0
12016 }
12017}
12018
12019#[cfg_eval::cfg_eval]
12026#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
12027#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12028#[cfg_attr(
12029 all(feature = "serde", feature = "alloc"),
12030 serde_with::serde_as,
12031 derive(serde::Serialize, serde::Deserialize),
12032 serde(rename_all = "snake_case")
12033)]
12034#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12035#[derive(Debug)]
12036pub struct ScSymbol(pub StringM<32>);
12037
12038impl From<ScSymbol> for StringM<32> {
12039 #[must_use]
12040 fn from(x: ScSymbol) -> Self {
12041 x.0
12042 }
12043}
12044
12045impl From<StringM<32>> for ScSymbol {
12046 #[must_use]
12047 fn from(x: StringM<32>) -> Self {
12048 ScSymbol(x)
12049 }
12050}
12051
12052impl AsRef<StringM<32>> for ScSymbol {
12053 #[must_use]
12054 fn as_ref(&self) -> &StringM<32> {
12055 &self.0
12056 }
12057}
12058
12059impl ReadXdr for ScSymbol {
12060 #[cfg(feature = "std")]
12061 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12062 r.with_limited_depth(|r| {
12063 let i = StringM::<32>::read_xdr(r)?;
12064 let v = ScSymbol(i);
12065 Ok(v)
12066 })
12067 }
12068}
12069
12070impl WriteXdr for ScSymbol {
12071 #[cfg(feature = "std")]
12072 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12073 w.with_limited_depth(|w| self.0.write_xdr(w))
12074 }
12075}
12076
12077impl Deref for ScSymbol {
12078 type Target = StringM<32>;
12079 fn deref(&self) -> &Self::Target {
12080 &self.0
12081 }
12082}
12083
12084impl From<ScSymbol> for Vec<u8> {
12085 #[must_use]
12086 fn from(x: ScSymbol) -> Self {
12087 x.0 .0
12088 }
12089}
12090
12091impl TryFrom<Vec<u8>> for ScSymbol {
12092 type Error = Error;
12093 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
12094 Ok(ScSymbol(x.try_into()?))
12095 }
12096}
12097
12098#[cfg(feature = "alloc")]
12099impl TryFrom<&Vec<u8>> for ScSymbol {
12100 type Error = Error;
12101 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
12102 Ok(ScSymbol(x.try_into()?))
12103 }
12104}
12105
12106impl AsRef<Vec<u8>> for ScSymbol {
12107 #[must_use]
12108 fn as_ref(&self) -> &Vec<u8> {
12109 &self.0 .0
12110 }
12111}
12112
12113impl AsRef<[u8]> for ScSymbol {
12114 #[cfg(feature = "alloc")]
12115 #[must_use]
12116 fn as_ref(&self) -> &[u8] {
12117 &self.0 .0
12118 }
12119 #[cfg(not(feature = "alloc"))]
12120 #[must_use]
12121 fn as_ref(&self) -> &[u8] {
12122 self.0 .0
12123 }
12124}
12125
12126#[cfg_attr(feature = "alloc", derive(Default))]
12135#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12136#[cfg_eval::cfg_eval]
12137#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12138#[cfg_attr(
12139 all(feature = "serde", feature = "alloc"),
12140 serde_with::serde_as,
12141 derive(serde::Serialize, serde::Deserialize),
12142 serde(rename_all = "snake_case")
12143)]
12144#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12145pub struct ScNonceKey {
12146 #[cfg_attr(
12147 all(feature = "serde", feature = "alloc"),
12148 serde_as(as = "NumberOrString")
12149 )]
12150 pub nonce: i64,
12151}
12152
12153impl ReadXdr for ScNonceKey {
12154 #[cfg(feature = "std")]
12155 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12156 r.with_limited_depth(|r| {
12157 Ok(Self {
12158 nonce: i64::read_xdr(r)?,
12159 })
12160 })
12161 }
12162}
12163
12164impl WriteXdr for ScNonceKey {
12165 #[cfg(feature = "std")]
12166 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12167 w.with_limited_depth(|w| {
12168 self.nonce.write_xdr(w)?;
12169 Ok(())
12170 })
12171 }
12172}
12173
12174#[cfg_attr(feature = "alloc", derive(Default))]
12184#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12185#[cfg_eval::cfg_eval]
12186#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12187#[cfg_attr(
12188 all(feature = "serde", feature = "alloc"),
12189 serde_with::serde_as,
12190 derive(serde::Serialize, serde::Deserialize),
12191 serde(rename_all = "snake_case")
12192)]
12193#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12194pub struct ScContractInstance {
12195 pub executable: ContractExecutable,
12196 pub storage: Option<ScMap>,
12197}
12198
12199impl ReadXdr for ScContractInstance {
12200 #[cfg(feature = "std")]
12201 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12202 r.with_limited_depth(|r| {
12203 Ok(Self {
12204 executable: ContractExecutable::read_xdr(r)?,
12205 storage: Option::<ScMap>::read_xdr(r)?,
12206 })
12207 })
12208 }
12209}
12210
12211impl WriteXdr for ScContractInstance {
12212 #[cfg(feature = "std")]
12213 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12214 w.with_limited_depth(|w| {
12215 self.executable.write_xdr(w)?;
12216 self.storage.write_xdr(w)?;
12217 Ok(())
12218 })
12219 }
12220}
12221
12222#[cfg_eval::cfg_eval]
12289#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12290#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12291#[cfg_attr(
12292 all(feature = "serde", feature = "alloc"),
12293 serde_with::serde_as,
12294 derive(serde::Serialize, serde::Deserialize),
12295 serde(rename_all = "snake_case")
12296)]
12297#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12298#[allow(clippy::large_enum_variant)]
12299pub enum ScVal {
12300 Bool(bool),
12301 Void,
12302 Error(ScError),
12303 U32(u32),
12304 I32(i32),
12305 U64(
12306 #[cfg_attr(
12307 all(feature = "serde", feature = "alloc"),
12308 serde_as(as = "NumberOrString")
12309 )]
12310 u64,
12311 ),
12312 I64(
12313 #[cfg_attr(
12314 all(feature = "serde", feature = "alloc"),
12315 serde_as(as = "NumberOrString")
12316 )]
12317 i64,
12318 ),
12319 Timepoint(TimePoint),
12320 Duration(Duration),
12321 U128(UInt128Parts),
12322 I128(Int128Parts),
12323 U256(UInt256Parts),
12324 I256(Int256Parts),
12325 Bytes(ScBytes),
12326 String(ScString),
12327 Symbol(ScSymbol),
12328 Vec(Option<ScVec>),
12329 Map(Option<ScMap>),
12330 Address(ScAddress),
12331 ContractInstance(ScContractInstance),
12332 LedgerKeyContractInstance,
12333 LedgerKeyNonce(ScNonceKey),
12334}
12335
12336#[cfg(feature = "alloc")]
12337impl Default for ScVal {
12338 fn default() -> Self {
12339 Self::Bool(bool::default())
12340 }
12341}
12342
12343impl ScVal {
12344 pub const VARIANTS: [ScValType; 22] = [
12345 ScValType::Bool,
12346 ScValType::Void,
12347 ScValType::Error,
12348 ScValType::U32,
12349 ScValType::I32,
12350 ScValType::U64,
12351 ScValType::I64,
12352 ScValType::Timepoint,
12353 ScValType::Duration,
12354 ScValType::U128,
12355 ScValType::I128,
12356 ScValType::U256,
12357 ScValType::I256,
12358 ScValType::Bytes,
12359 ScValType::String,
12360 ScValType::Symbol,
12361 ScValType::Vec,
12362 ScValType::Map,
12363 ScValType::Address,
12364 ScValType::ContractInstance,
12365 ScValType::LedgerKeyContractInstance,
12366 ScValType::LedgerKeyNonce,
12367 ];
12368 pub const VARIANTS_STR: [&'static str; 22] = [
12369 "Bool",
12370 "Void",
12371 "Error",
12372 "U32",
12373 "I32",
12374 "U64",
12375 "I64",
12376 "Timepoint",
12377 "Duration",
12378 "U128",
12379 "I128",
12380 "U256",
12381 "I256",
12382 "Bytes",
12383 "String",
12384 "Symbol",
12385 "Vec",
12386 "Map",
12387 "Address",
12388 "ContractInstance",
12389 "LedgerKeyContractInstance",
12390 "LedgerKeyNonce",
12391 ];
12392
12393 #[must_use]
12394 pub const fn name(&self) -> &'static str {
12395 match self {
12396 Self::Bool(_) => "Bool",
12397 Self::Void => "Void",
12398 Self::Error(_) => "Error",
12399 Self::U32(_) => "U32",
12400 Self::I32(_) => "I32",
12401 Self::U64(_) => "U64",
12402 Self::I64(_) => "I64",
12403 Self::Timepoint(_) => "Timepoint",
12404 Self::Duration(_) => "Duration",
12405 Self::U128(_) => "U128",
12406 Self::I128(_) => "I128",
12407 Self::U256(_) => "U256",
12408 Self::I256(_) => "I256",
12409 Self::Bytes(_) => "Bytes",
12410 Self::String(_) => "String",
12411 Self::Symbol(_) => "Symbol",
12412 Self::Vec(_) => "Vec",
12413 Self::Map(_) => "Map",
12414 Self::Address(_) => "Address",
12415 Self::ContractInstance(_) => "ContractInstance",
12416 Self::LedgerKeyContractInstance => "LedgerKeyContractInstance",
12417 Self::LedgerKeyNonce(_) => "LedgerKeyNonce",
12418 }
12419 }
12420
12421 #[must_use]
12422 pub const fn discriminant(&self) -> ScValType {
12423 #[allow(clippy::match_same_arms)]
12424 match self {
12425 Self::Bool(_) => ScValType::Bool,
12426 Self::Void => ScValType::Void,
12427 Self::Error(_) => ScValType::Error,
12428 Self::U32(_) => ScValType::U32,
12429 Self::I32(_) => ScValType::I32,
12430 Self::U64(_) => ScValType::U64,
12431 Self::I64(_) => ScValType::I64,
12432 Self::Timepoint(_) => ScValType::Timepoint,
12433 Self::Duration(_) => ScValType::Duration,
12434 Self::U128(_) => ScValType::U128,
12435 Self::I128(_) => ScValType::I128,
12436 Self::U256(_) => ScValType::U256,
12437 Self::I256(_) => ScValType::I256,
12438 Self::Bytes(_) => ScValType::Bytes,
12439 Self::String(_) => ScValType::String,
12440 Self::Symbol(_) => ScValType::Symbol,
12441 Self::Vec(_) => ScValType::Vec,
12442 Self::Map(_) => ScValType::Map,
12443 Self::Address(_) => ScValType::Address,
12444 Self::ContractInstance(_) => ScValType::ContractInstance,
12445 Self::LedgerKeyContractInstance => ScValType::LedgerKeyContractInstance,
12446 Self::LedgerKeyNonce(_) => ScValType::LedgerKeyNonce,
12447 }
12448 }
12449
12450 #[must_use]
12451 pub const fn variants() -> [ScValType; 22] {
12452 Self::VARIANTS
12453 }
12454}
12455
12456impl Name for ScVal {
12457 #[must_use]
12458 fn name(&self) -> &'static str {
12459 Self::name(self)
12460 }
12461}
12462
12463impl Discriminant<ScValType> for ScVal {
12464 #[must_use]
12465 fn discriminant(&self) -> ScValType {
12466 Self::discriminant(self)
12467 }
12468}
12469
12470impl Variants<ScValType> for ScVal {
12471 fn variants() -> slice::Iter<'static, ScValType> {
12472 Self::VARIANTS.iter()
12473 }
12474}
12475
12476impl Union<ScValType> for ScVal {}
12477
12478impl ReadXdr for ScVal {
12479 #[cfg(feature = "std")]
12480 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12481 r.with_limited_depth(|r| {
12482 let dv: ScValType = <ScValType as ReadXdr>::read_xdr(r)?;
12483 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
12484 let v = match dv {
12485 ScValType::Bool => Self::Bool(bool::read_xdr(r)?),
12486 ScValType::Void => Self::Void,
12487 ScValType::Error => Self::Error(ScError::read_xdr(r)?),
12488 ScValType::U32 => Self::U32(u32::read_xdr(r)?),
12489 ScValType::I32 => Self::I32(i32::read_xdr(r)?),
12490 ScValType::U64 => Self::U64(u64::read_xdr(r)?),
12491 ScValType::I64 => Self::I64(i64::read_xdr(r)?),
12492 ScValType::Timepoint => Self::Timepoint(TimePoint::read_xdr(r)?),
12493 ScValType::Duration => Self::Duration(Duration::read_xdr(r)?),
12494 ScValType::U128 => Self::U128(UInt128Parts::read_xdr(r)?),
12495 ScValType::I128 => Self::I128(Int128Parts::read_xdr(r)?),
12496 ScValType::U256 => Self::U256(UInt256Parts::read_xdr(r)?),
12497 ScValType::I256 => Self::I256(Int256Parts::read_xdr(r)?),
12498 ScValType::Bytes => Self::Bytes(ScBytes::read_xdr(r)?),
12499 ScValType::String => Self::String(ScString::read_xdr(r)?),
12500 ScValType::Symbol => Self::Symbol(ScSymbol::read_xdr(r)?),
12501 ScValType::Vec => Self::Vec(Option::<ScVec>::read_xdr(r)?),
12502 ScValType::Map => Self::Map(Option::<ScMap>::read_xdr(r)?),
12503 ScValType::Address => Self::Address(ScAddress::read_xdr(r)?),
12504 ScValType::ContractInstance => {
12505 Self::ContractInstance(ScContractInstance::read_xdr(r)?)
12506 }
12507 ScValType::LedgerKeyContractInstance => Self::LedgerKeyContractInstance,
12508 ScValType::LedgerKeyNonce => Self::LedgerKeyNonce(ScNonceKey::read_xdr(r)?),
12509 #[allow(unreachable_patterns)]
12510 _ => return Err(Error::Invalid),
12511 };
12512 Ok(v)
12513 })
12514 }
12515}
12516
12517impl WriteXdr for ScVal {
12518 #[cfg(feature = "std")]
12519 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12520 w.with_limited_depth(|w| {
12521 self.discriminant().write_xdr(w)?;
12522 #[allow(clippy::match_same_arms)]
12523 match self {
12524 Self::Bool(v) => v.write_xdr(w)?,
12525 Self::Void => ().write_xdr(w)?,
12526 Self::Error(v) => v.write_xdr(w)?,
12527 Self::U32(v) => v.write_xdr(w)?,
12528 Self::I32(v) => v.write_xdr(w)?,
12529 Self::U64(v) => v.write_xdr(w)?,
12530 Self::I64(v) => v.write_xdr(w)?,
12531 Self::Timepoint(v) => v.write_xdr(w)?,
12532 Self::Duration(v) => v.write_xdr(w)?,
12533 Self::U128(v) => v.write_xdr(w)?,
12534 Self::I128(v) => v.write_xdr(w)?,
12535 Self::U256(v) => v.write_xdr(w)?,
12536 Self::I256(v) => v.write_xdr(w)?,
12537 Self::Bytes(v) => v.write_xdr(w)?,
12538 Self::String(v) => v.write_xdr(w)?,
12539 Self::Symbol(v) => v.write_xdr(w)?,
12540 Self::Vec(v) => v.write_xdr(w)?,
12541 Self::Map(v) => v.write_xdr(w)?,
12542 Self::Address(v) => v.write_xdr(w)?,
12543 Self::ContractInstance(v) => v.write_xdr(w)?,
12544 Self::LedgerKeyContractInstance => ().write_xdr(w)?,
12545 Self::LedgerKeyNonce(v) => v.write_xdr(w)?,
12546 };
12547 Ok(())
12548 })
12549 }
12550}
12551
12552#[cfg_attr(feature = "alloc", derive(Default))]
12563#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12564#[cfg_eval::cfg_eval]
12565#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12566#[cfg_attr(
12567 all(feature = "serde", feature = "alloc"),
12568 serde_with::serde_as,
12569 derive(serde::Serialize, serde::Deserialize),
12570 serde(rename_all = "snake_case")
12571)]
12572#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12573pub struct ScMapEntry {
12574 pub key: ScVal,
12575 pub val: ScVal,
12576}
12577
12578impl ReadXdr for ScMapEntry {
12579 #[cfg(feature = "std")]
12580 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12581 r.with_limited_depth(|r| {
12582 Ok(Self {
12583 key: ScVal::read_xdr(r)?,
12584 val: ScVal::read_xdr(r)?,
12585 })
12586 })
12587 }
12588}
12589
12590impl WriteXdr for ScMapEntry {
12591 #[cfg(feature = "std")]
12592 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12593 w.with_limited_depth(|w| {
12594 self.key.write_xdr(w)?;
12595 self.val.write_xdr(w)?;
12596 Ok(())
12597 })
12598 }
12599}
12600
12601#[cfg_attr(feature = "alloc", derive(Default))]
12618#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12619#[cfg_eval::cfg_eval]
12620#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12621#[cfg_attr(
12622 all(feature = "serde", feature = "alloc"),
12623 serde_with::serde_as,
12624 derive(serde::Serialize, serde::Deserialize),
12625 serde(rename_all = "snake_case")
12626)]
12627#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12628pub struct LedgerCloseMetaBatch {
12629 pub start_sequence: u32,
12630 pub end_sequence: u32,
12631 pub ledger_close_metas: VecM<LedgerCloseMeta>,
12632}
12633
12634impl ReadXdr for LedgerCloseMetaBatch {
12635 #[cfg(feature = "std")]
12636 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12637 r.with_limited_depth(|r| {
12638 Ok(Self {
12639 start_sequence: u32::read_xdr(r)?,
12640 end_sequence: u32::read_xdr(r)?,
12641 ledger_close_metas: VecM::<LedgerCloseMeta>::read_xdr(r)?,
12642 })
12643 })
12644 }
12645}
12646
12647impl WriteXdr for LedgerCloseMetaBatch {
12648 #[cfg(feature = "std")]
12649 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12650 w.with_limited_depth(|w| {
12651 self.start_sequence.write_xdr(w)?;
12652 self.end_sequence.write_xdr(w)?;
12653 self.ledger_close_metas.write_xdr(w)?;
12654 Ok(())
12655 })
12656 }
12657}
12658
12659#[cfg_eval::cfg_eval]
12673#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12674#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12675#[cfg_attr(
12676 all(feature = "serde", feature = "alloc"),
12677 serde_with::serde_as,
12678 derive(serde::Serialize, serde::Deserialize),
12679 serde(rename_all = "snake_case")
12680)]
12681#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12682#[allow(clippy::large_enum_variant)]
12683pub enum StoredTransactionSet {
12684 V0(TransactionSet),
12685 V1(GeneralizedTransactionSet),
12686}
12687
12688#[cfg(feature = "alloc")]
12689impl Default for StoredTransactionSet {
12690 fn default() -> Self {
12691 Self::V0(TransactionSet::default())
12692 }
12693}
12694
12695impl StoredTransactionSet {
12696 pub const VARIANTS: [i32; 2] = [0, 1];
12697 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
12698
12699 #[must_use]
12700 pub const fn name(&self) -> &'static str {
12701 match self {
12702 Self::V0(_) => "V0",
12703 Self::V1(_) => "V1",
12704 }
12705 }
12706
12707 #[must_use]
12708 pub const fn discriminant(&self) -> i32 {
12709 #[allow(clippy::match_same_arms)]
12710 match self {
12711 Self::V0(_) => 0,
12712 Self::V1(_) => 1,
12713 }
12714 }
12715
12716 #[must_use]
12717 pub const fn variants() -> [i32; 2] {
12718 Self::VARIANTS
12719 }
12720}
12721
12722impl Name for StoredTransactionSet {
12723 #[must_use]
12724 fn name(&self) -> &'static str {
12725 Self::name(self)
12726 }
12727}
12728
12729impl Discriminant<i32> for StoredTransactionSet {
12730 #[must_use]
12731 fn discriminant(&self) -> i32 {
12732 Self::discriminant(self)
12733 }
12734}
12735
12736impl Variants<i32> for StoredTransactionSet {
12737 fn variants() -> slice::Iter<'static, i32> {
12738 Self::VARIANTS.iter()
12739 }
12740}
12741
12742impl Union<i32> for StoredTransactionSet {}
12743
12744impl ReadXdr for StoredTransactionSet {
12745 #[cfg(feature = "std")]
12746 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12747 r.with_limited_depth(|r| {
12748 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
12749 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
12750 let v = match dv {
12751 0 => Self::V0(TransactionSet::read_xdr(r)?),
12752 1 => Self::V1(GeneralizedTransactionSet::read_xdr(r)?),
12753 #[allow(unreachable_patterns)]
12754 _ => return Err(Error::Invalid),
12755 };
12756 Ok(v)
12757 })
12758 }
12759}
12760
12761impl WriteXdr for StoredTransactionSet {
12762 #[cfg(feature = "std")]
12763 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12764 w.with_limited_depth(|w| {
12765 self.discriminant().write_xdr(w)?;
12766 #[allow(clippy::match_same_arms)]
12767 match self {
12768 Self::V0(v) => v.write_xdr(w)?,
12769 Self::V1(v) => v.write_xdr(w)?,
12770 };
12771 Ok(())
12772 })
12773 }
12774}
12775
12776#[cfg_attr(feature = "alloc", derive(Default))]
12788#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12789#[cfg_eval::cfg_eval]
12790#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12791#[cfg_attr(
12792 all(feature = "serde", feature = "alloc"),
12793 serde_with::serde_as,
12794 derive(serde::Serialize, serde::Deserialize),
12795 serde(rename_all = "snake_case")
12796)]
12797#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12798pub struct StoredDebugTransactionSet {
12799 pub tx_set: StoredTransactionSet,
12800 pub ledger_seq: u32,
12801 pub scp_value: StellarValue,
12802}
12803
12804impl ReadXdr for StoredDebugTransactionSet {
12805 #[cfg(feature = "std")]
12806 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12807 r.with_limited_depth(|r| {
12808 Ok(Self {
12809 tx_set: StoredTransactionSet::read_xdr(r)?,
12810 ledger_seq: u32::read_xdr(r)?,
12811 scp_value: StellarValue::read_xdr(r)?,
12812 })
12813 })
12814 }
12815}
12816
12817impl WriteXdr for StoredDebugTransactionSet {
12818 #[cfg(feature = "std")]
12819 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12820 w.with_limited_depth(|w| {
12821 self.tx_set.write_xdr(w)?;
12822 self.ledger_seq.write_xdr(w)?;
12823 self.scp_value.write_xdr(w)?;
12824 Ok(())
12825 })
12826 }
12827}
12828
12829#[cfg_attr(feature = "alloc", derive(Default))]
12841#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12842#[cfg_eval::cfg_eval]
12843#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12844#[cfg_attr(
12845 all(feature = "serde", feature = "alloc"),
12846 serde_with::serde_as,
12847 derive(serde::Serialize, serde::Deserialize),
12848 serde(rename_all = "snake_case")
12849)]
12850#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12851pub struct PersistedScpStateV0 {
12852 pub scp_envelopes: VecM<ScpEnvelope>,
12853 pub quorum_sets: VecM<ScpQuorumSet>,
12854 pub tx_sets: VecM<StoredTransactionSet>,
12855}
12856
12857impl ReadXdr for PersistedScpStateV0 {
12858 #[cfg(feature = "std")]
12859 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12860 r.with_limited_depth(|r| {
12861 Ok(Self {
12862 scp_envelopes: VecM::<ScpEnvelope>::read_xdr(r)?,
12863 quorum_sets: VecM::<ScpQuorumSet>::read_xdr(r)?,
12864 tx_sets: VecM::<StoredTransactionSet>::read_xdr(r)?,
12865 })
12866 })
12867 }
12868}
12869
12870impl WriteXdr for PersistedScpStateV0 {
12871 #[cfg(feature = "std")]
12872 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12873 w.with_limited_depth(|w| {
12874 self.scp_envelopes.write_xdr(w)?;
12875 self.quorum_sets.write_xdr(w)?;
12876 self.tx_sets.write_xdr(w)?;
12877 Ok(())
12878 })
12879 }
12880}
12881
12882#[cfg_attr(feature = "alloc", derive(Default))]
12894#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12895#[cfg_eval::cfg_eval]
12896#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12897#[cfg_attr(
12898 all(feature = "serde", feature = "alloc"),
12899 serde_with::serde_as,
12900 derive(serde::Serialize, serde::Deserialize),
12901 serde(rename_all = "snake_case")
12902)]
12903#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12904pub struct PersistedScpStateV1 {
12905 pub scp_envelopes: VecM<ScpEnvelope>,
12906 pub quorum_sets: VecM<ScpQuorumSet>,
12907}
12908
12909impl ReadXdr for PersistedScpStateV1 {
12910 #[cfg(feature = "std")]
12911 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
12912 r.with_limited_depth(|r| {
12913 Ok(Self {
12914 scp_envelopes: VecM::<ScpEnvelope>::read_xdr(r)?,
12915 quorum_sets: VecM::<ScpQuorumSet>::read_xdr(r)?,
12916 })
12917 })
12918 }
12919}
12920
12921impl WriteXdr for PersistedScpStateV1 {
12922 #[cfg(feature = "std")]
12923 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
12924 w.with_limited_depth(|w| {
12925 self.scp_envelopes.write_xdr(w)?;
12926 self.quorum_sets.write_xdr(w)?;
12927 Ok(())
12928 })
12929 }
12930}
12931
12932#[cfg_eval::cfg_eval]
12946#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
12947#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
12948#[cfg_attr(
12949 all(feature = "serde", feature = "alloc"),
12950 serde_with::serde_as,
12951 derive(serde::Serialize, serde::Deserialize),
12952 serde(rename_all = "snake_case")
12953)]
12954#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12955#[allow(clippy::large_enum_variant)]
12956pub enum PersistedScpState {
12957 V0(PersistedScpStateV0),
12958 V1(PersistedScpStateV1),
12959}
12960
12961#[cfg(feature = "alloc")]
12962impl Default for PersistedScpState {
12963 fn default() -> Self {
12964 Self::V0(PersistedScpStateV0::default())
12965 }
12966}
12967
12968impl PersistedScpState {
12969 pub const VARIANTS: [i32; 2] = [0, 1];
12970 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
12971
12972 #[must_use]
12973 pub const fn name(&self) -> &'static str {
12974 match self {
12975 Self::V0(_) => "V0",
12976 Self::V1(_) => "V1",
12977 }
12978 }
12979
12980 #[must_use]
12981 pub const fn discriminant(&self) -> i32 {
12982 #[allow(clippy::match_same_arms)]
12983 match self {
12984 Self::V0(_) => 0,
12985 Self::V1(_) => 1,
12986 }
12987 }
12988
12989 #[must_use]
12990 pub const fn variants() -> [i32; 2] {
12991 Self::VARIANTS
12992 }
12993}
12994
12995impl Name for PersistedScpState {
12996 #[must_use]
12997 fn name(&self) -> &'static str {
12998 Self::name(self)
12999 }
13000}
13001
13002impl Discriminant<i32> for PersistedScpState {
13003 #[must_use]
13004 fn discriminant(&self) -> i32 {
13005 Self::discriminant(self)
13006 }
13007}
13008
13009impl Variants<i32> for PersistedScpState {
13010 fn variants() -> slice::Iter<'static, i32> {
13011 Self::VARIANTS.iter()
13012 }
13013}
13014
13015impl Union<i32> for PersistedScpState {}
13016
13017impl ReadXdr for PersistedScpState {
13018 #[cfg(feature = "std")]
13019 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13020 r.with_limited_depth(|r| {
13021 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
13022 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
13023 let v = match dv {
13024 0 => Self::V0(PersistedScpStateV0::read_xdr(r)?),
13025 1 => Self::V1(PersistedScpStateV1::read_xdr(r)?),
13026 #[allow(unreachable_patterns)]
13027 _ => return Err(Error::Invalid),
13028 };
13029 Ok(v)
13030 })
13031 }
13032}
13033
13034impl WriteXdr for PersistedScpState {
13035 #[cfg(feature = "std")]
13036 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13037 w.with_limited_depth(|w| {
13038 self.discriminant().write_xdr(w)?;
13039 #[allow(clippy::match_same_arms)]
13040 match self {
13041 Self::V0(v) => v.write_xdr(w)?,
13042 Self::V1(v) => v.write_xdr(w)?,
13043 };
13044 Ok(())
13045 })
13046 }
13047}
13048
13049#[cfg_eval::cfg_eval]
13056#[cfg_attr(feature = "alloc", derive(Default))]
13057#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13058#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13059#[cfg_attr(
13060 all(feature = "serde", feature = "alloc"),
13061 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
13062)]
13063pub struct Thresholds(pub [u8; 4]);
13064
13065impl core::fmt::Debug for Thresholds {
13066 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13067 let v = &self.0;
13068 write!(f, "Thresholds(")?;
13069 for b in v {
13070 write!(f, "{b:02x}")?;
13071 }
13072 write!(f, ")")?;
13073 Ok(())
13074 }
13075}
13076impl core::fmt::Display for Thresholds {
13077 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13078 let v = &self.0;
13079 for b in v {
13080 write!(f, "{b:02x}")?;
13081 }
13082 Ok(())
13083 }
13084}
13085
13086#[cfg(feature = "alloc")]
13087impl core::str::FromStr for Thresholds {
13088 type Err = Error;
13089 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
13090 hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into()
13091 }
13092}
13093#[cfg(feature = "schemars")]
13094impl schemars::JsonSchema for Thresholds {
13095 fn schema_name() -> String {
13096 "Thresholds".to_string()
13097 }
13098
13099 fn is_referenceable() -> bool {
13100 false
13101 }
13102
13103 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
13104 let schema = String::json_schema(gen);
13105 if let schemars::schema::Schema::Object(mut schema) = schema {
13106 schema.extensions.insert(
13107 "contentEncoding".to_owned(),
13108 serde_json::Value::String("hex".to_string()),
13109 );
13110 schema.extensions.insert(
13111 "contentMediaType".to_owned(),
13112 serde_json::Value::String("application/binary".to_string()),
13113 );
13114 let string = *schema.string.unwrap_or_default().clone();
13115 schema.string = Some(Box::new(schemars::schema::StringValidation {
13116 max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(),
13117 min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(),
13118 ..string
13119 }));
13120 schema.into()
13121 } else {
13122 schema
13123 }
13124 }
13125}
13126impl From<Thresholds> for [u8; 4] {
13127 #[must_use]
13128 fn from(x: Thresholds) -> Self {
13129 x.0
13130 }
13131}
13132
13133impl From<[u8; 4]> for Thresholds {
13134 #[must_use]
13135 fn from(x: [u8; 4]) -> Self {
13136 Thresholds(x)
13137 }
13138}
13139
13140impl AsRef<[u8; 4]> for Thresholds {
13141 #[must_use]
13142 fn as_ref(&self) -> &[u8; 4] {
13143 &self.0
13144 }
13145}
13146
13147impl ReadXdr for Thresholds {
13148 #[cfg(feature = "std")]
13149 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13150 r.with_limited_depth(|r| {
13151 let i = <[u8; 4]>::read_xdr(r)?;
13152 let v = Thresholds(i);
13153 Ok(v)
13154 })
13155 }
13156}
13157
13158impl WriteXdr for Thresholds {
13159 #[cfg(feature = "std")]
13160 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13161 w.with_limited_depth(|w| self.0.write_xdr(w))
13162 }
13163}
13164
13165impl Thresholds {
13166 #[must_use]
13167 pub fn as_slice(&self) -> &[u8] {
13168 &self.0
13169 }
13170}
13171
13172#[cfg(feature = "alloc")]
13173impl TryFrom<Vec<u8>> for Thresholds {
13174 type Error = Error;
13175 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13176 x.as_slice().try_into()
13177 }
13178}
13179
13180#[cfg(feature = "alloc")]
13181impl TryFrom<&Vec<u8>> for Thresholds {
13182 type Error = Error;
13183 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13184 x.as_slice().try_into()
13185 }
13186}
13187
13188impl TryFrom<&[u8]> for Thresholds {
13189 type Error = Error;
13190 fn try_from(x: &[u8]) -> Result<Self, Error> {
13191 Ok(Thresholds(x.try_into()?))
13192 }
13193}
13194
13195impl AsRef<[u8]> for Thresholds {
13196 #[must_use]
13197 fn as_ref(&self) -> &[u8] {
13198 &self.0
13199 }
13200}
13201
13202#[cfg_eval::cfg_eval]
13209#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13210#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13211#[cfg_attr(
13212 all(feature = "serde", feature = "alloc"),
13213 serde_with::serde_as,
13214 derive(serde::Serialize, serde::Deserialize),
13215 serde(rename_all = "snake_case")
13216)]
13217#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13218#[derive(Debug)]
13219pub struct String32(pub StringM<32>);
13220
13221impl From<String32> for StringM<32> {
13222 #[must_use]
13223 fn from(x: String32) -> Self {
13224 x.0
13225 }
13226}
13227
13228impl From<StringM<32>> for String32 {
13229 #[must_use]
13230 fn from(x: StringM<32>) -> Self {
13231 String32(x)
13232 }
13233}
13234
13235impl AsRef<StringM<32>> for String32 {
13236 #[must_use]
13237 fn as_ref(&self) -> &StringM<32> {
13238 &self.0
13239 }
13240}
13241
13242impl ReadXdr for String32 {
13243 #[cfg(feature = "std")]
13244 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13245 r.with_limited_depth(|r| {
13246 let i = StringM::<32>::read_xdr(r)?;
13247 let v = String32(i);
13248 Ok(v)
13249 })
13250 }
13251}
13252
13253impl WriteXdr for String32 {
13254 #[cfg(feature = "std")]
13255 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13256 w.with_limited_depth(|w| self.0.write_xdr(w))
13257 }
13258}
13259
13260impl Deref for String32 {
13261 type Target = StringM<32>;
13262 fn deref(&self) -> &Self::Target {
13263 &self.0
13264 }
13265}
13266
13267impl From<String32> for Vec<u8> {
13268 #[must_use]
13269 fn from(x: String32) -> Self {
13270 x.0 .0
13271 }
13272}
13273
13274impl TryFrom<Vec<u8>> for String32 {
13275 type Error = Error;
13276 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13277 Ok(String32(x.try_into()?))
13278 }
13279}
13280
13281#[cfg(feature = "alloc")]
13282impl TryFrom<&Vec<u8>> for String32 {
13283 type Error = Error;
13284 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13285 Ok(String32(x.try_into()?))
13286 }
13287}
13288
13289impl AsRef<Vec<u8>> for String32 {
13290 #[must_use]
13291 fn as_ref(&self) -> &Vec<u8> {
13292 &self.0 .0
13293 }
13294}
13295
13296impl AsRef<[u8]> for String32 {
13297 #[cfg(feature = "alloc")]
13298 #[must_use]
13299 fn as_ref(&self) -> &[u8] {
13300 &self.0 .0
13301 }
13302 #[cfg(not(feature = "alloc"))]
13303 #[must_use]
13304 fn as_ref(&self) -> &[u8] {
13305 self.0 .0
13306 }
13307}
13308
13309#[cfg_eval::cfg_eval]
13316#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13317#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13318#[cfg_attr(
13319 all(feature = "serde", feature = "alloc"),
13320 serde_with::serde_as,
13321 derive(serde::Serialize, serde::Deserialize),
13322 serde(rename_all = "snake_case")
13323)]
13324#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13325#[derive(Debug)]
13326pub struct String64(pub StringM<64>);
13327
13328impl From<String64> for StringM<64> {
13329 #[must_use]
13330 fn from(x: String64) -> Self {
13331 x.0
13332 }
13333}
13334
13335impl From<StringM<64>> for String64 {
13336 #[must_use]
13337 fn from(x: StringM<64>) -> Self {
13338 String64(x)
13339 }
13340}
13341
13342impl AsRef<StringM<64>> for String64 {
13343 #[must_use]
13344 fn as_ref(&self) -> &StringM<64> {
13345 &self.0
13346 }
13347}
13348
13349impl ReadXdr for String64 {
13350 #[cfg(feature = "std")]
13351 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13352 r.with_limited_depth(|r| {
13353 let i = StringM::<64>::read_xdr(r)?;
13354 let v = String64(i);
13355 Ok(v)
13356 })
13357 }
13358}
13359
13360impl WriteXdr for String64 {
13361 #[cfg(feature = "std")]
13362 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13363 w.with_limited_depth(|w| self.0.write_xdr(w))
13364 }
13365}
13366
13367impl Deref for String64 {
13368 type Target = StringM<64>;
13369 fn deref(&self) -> &Self::Target {
13370 &self.0
13371 }
13372}
13373
13374impl From<String64> for Vec<u8> {
13375 #[must_use]
13376 fn from(x: String64) -> Self {
13377 x.0 .0
13378 }
13379}
13380
13381impl TryFrom<Vec<u8>> for String64 {
13382 type Error = Error;
13383 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13384 Ok(String64(x.try_into()?))
13385 }
13386}
13387
13388#[cfg(feature = "alloc")]
13389impl TryFrom<&Vec<u8>> for String64 {
13390 type Error = Error;
13391 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13392 Ok(String64(x.try_into()?))
13393 }
13394}
13395
13396impl AsRef<Vec<u8>> for String64 {
13397 #[must_use]
13398 fn as_ref(&self) -> &Vec<u8> {
13399 &self.0 .0
13400 }
13401}
13402
13403impl AsRef<[u8]> for String64 {
13404 #[cfg(feature = "alloc")]
13405 #[must_use]
13406 fn as_ref(&self) -> &[u8] {
13407 &self.0 .0
13408 }
13409 #[cfg(not(feature = "alloc"))]
13410 #[must_use]
13411 fn as_ref(&self) -> &[u8] {
13412 self.0 .0
13413 }
13414}
13415
13416#[cfg_eval::cfg_eval]
13423#[cfg_attr(feature = "alloc", derive(Default))]
13424#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13425#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13426#[cfg_attr(
13427 all(feature = "serde", feature = "alloc"),
13428 serde_with::serde_as,
13429 derive(serde::Serialize, serde::Deserialize),
13430 serde(rename_all = "snake_case")
13431)]
13432#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13433#[derive(Debug)]
13434pub struct SequenceNumber(
13435 #[cfg_attr(
13436 all(feature = "serde", feature = "alloc"),
13437 serde_as(as = "NumberOrString")
13438 )]
13439 pub i64,
13440);
13441
13442impl From<SequenceNumber> for i64 {
13443 #[must_use]
13444 fn from(x: SequenceNumber) -> Self {
13445 x.0
13446 }
13447}
13448
13449impl From<i64> for SequenceNumber {
13450 #[must_use]
13451 fn from(x: i64) -> Self {
13452 SequenceNumber(x)
13453 }
13454}
13455
13456impl AsRef<i64> for SequenceNumber {
13457 #[must_use]
13458 fn as_ref(&self) -> &i64 {
13459 &self.0
13460 }
13461}
13462
13463impl ReadXdr for SequenceNumber {
13464 #[cfg(feature = "std")]
13465 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13466 r.with_limited_depth(|r| {
13467 let i = i64::read_xdr(r)?;
13468 let v = SequenceNumber(i);
13469 Ok(v)
13470 })
13471 }
13472}
13473
13474impl WriteXdr for SequenceNumber {
13475 #[cfg(feature = "std")]
13476 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13477 w.with_limited_depth(|w| self.0.write_xdr(w))
13478 }
13479}
13480
13481#[cfg_eval::cfg_eval]
13488#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13489#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13490#[cfg_attr(
13491 all(feature = "serde", feature = "alloc"),
13492 serde_with::serde_as,
13493 derive(serde::Serialize, serde::Deserialize),
13494 serde(rename_all = "snake_case")
13495)]
13496#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13497#[derive(Debug)]
13498pub struct DataValue(pub BytesM<64>);
13499
13500impl From<DataValue> for BytesM<64> {
13501 #[must_use]
13502 fn from(x: DataValue) -> Self {
13503 x.0
13504 }
13505}
13506
13507impl From<BytesM<64>> for DataValue {
13508 #[must_use]
13509 fn from(x: BytesM<64>) -> Self {
13510 DataValue(x)
13511 }
13512}
13513
13514impl AsRef<BytesM<64>> for DataValue {
13515 #[must_use]
13516 fn as_ref(&self) -> &BytesM<64> {
13517 &self.0
13518 }
13519}
13520
13521impl ReadXdr for DataValue {
13522 #[cfg(feature = "std")]
13523 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13524 r.with_limited_depth(|r| {
13525 let i = BytesM::<64>::read_xdr(r)?;
13526 let v = DataValue(i);
13527 Ok(v)
13528 })
13529 }
13530}
13531
13532impl WriteXdr for DataValue {
13533 #[cfg(feature = "std")]
13534 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13535 w.with_limited_depth(|w| self.0.write_xdr(w))
13536 }
13537}
13538
13539impl Deref for DataValue {
13540 type Target = BytesM<64>;
13541 fn deref(&self) -> &Self::Target {
13542 &self.0
13543 }
13544}
13545
13546impl From<DataValue> for Vec<u8> {
13547 #[must_use]
13548 fn from(x: DataValue) -> Self {
13549 x.0 .0
13550 }
13551}
13552
13553impl TryFrom<Vec<u8>> for DataValue {
13554 type Error = Error;
13555 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13556 Ok(DataValue(x.try_into()?))
13557 }
13558}
13559
13560#[cfg(feature = "alloc")]
13561impl TryFrom<&Vec<u8>> for DataValue {
13562 type Error = Error;
13563 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13564 Ok(DataValue(x.try_into()?))
13565 }
13566}
13567
13568impl AsRef<Vec<u8>> for DataValue {
13569 #[must_use]
13570 fn as_ref(&self) -> &Vec<u8> {
13571 &self.0 .0
13572 }
13573}
13574
13575impl AsRef<[u8]> for DataValue {
13576 #[cfg(feature = "alloc")]
13577 #[must_use]
13578 fn as_ref(&self) -> &[u8] {
13579 &self.0 .0
13580 }
13581 #[cfg(not(feature = "alloc"))]
13582 #[must_use]
13583 fn as_ref(&self) -> &[u8] {
13584 self.0 .0
13585 }
13586}
13587
13588#[cfg_eval::cfg_eval]
13595#[cfg_attr(feature = "alloc", derive(Default))]
13596#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13597#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13598#[cfg_attr(
13599 all(feature = "serde", feature = "alloc"),
13600 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
13601)]
13602pub struct AssetCode4(pub [u8; 4]);
13603
13604impl core::fmt::Debug for AssetCode4 {
13605 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13606 let v = &self.0;
13607 write!(f, "AssetCode4(")?;
13608 for b in v {
13609 write!(f, "{b:02x}")?;
13610 }
13611 write!(f, ")")?;
13612 Ok(())
13613 }
13614}
13615impl From<AssetCode4> for [u8; 4] {
13616 #[must_use]
13617 fn from(x: AssetCode4) -> Self {
13618 x.0
13619 }
13620}
13621
13622impl From<[u8; 4]> for AssetCode4 {
13623 #[must_use]
13624 fn from(x: [u8; 4]) -> Self {
13625 AssetCode4(x)
13626 }
13627}
13628
13629impl AsRef<[u8; 4]> for AssetCode4 {
13630 #[must_use]
13631 fn as_ref(&self) -> &[u8; 4] {
13632 &self.0
13633 }
13634}
13635
13636impl ReadXdr for AssetCode4 {
13637 #[cfg(feature = "std")]
13638 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13639 r.with_limited_depth(|r| {
13640 let i = <[u8; 4]>::read_xdr(r)?;
13641 let v = AssetCode4(i);
13642 Ok(v)
13643 })
13644 }
13645}
13646
13647impl WriteXdr for AssetCode4 {
13648 #[cfg(feature = "std")]
13649 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13650 w.with_limited_depth(|w| self.0.write_xdr(w))
13651 }
13652}
13653
13654impl AssetCode4 {
13655 #[must_use]
13656 pub fn as_slice(&self) -> &[u8] {
13657 &self.0
13658 }
13659}
13660
13661#[cfg(feature = "alloc")]
13662impl TryFrom<Vec<u8>> for AssetCode4 {
13663 type Error = Error;
13664 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13665 x.as_slice().try_into()
13666 }
13667}
13668
13669#[cfg(feature = "alloc")]
13670impl TryFrom<&Vec<u8>> for AssetCode4 {
13671 type Error = Error;
13672 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13673 x.as_slice().try_into()
13674 }
13675}
13676
13677impl TryFrom<&[u8]> for AssetCode4 {
13678 type Error = Error;
13679 fn try_from(x: &[u8]) -> Result<Self, Error> {
13680 Ok(AssetCode4(x.try_into()?))
13681 }
13682}
13683
13684impl AsRef<[u8]> for AssetCode4 {
13685 #[must_use]
13686 fn as_ref(&self) -> &[u8] {
13687 &self.0
13688 }
13689}
13690
13691#[cfg_eval::cfg_eval]
13698#[cfg_attr(feature = "alloc", derive(Default))]
13699#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
13700#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13701#[cfg_attr(
13702 all(feature = "serde", feature = "alloc"),
13703 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
13704)]
13705pub struct AssetCode12(pub [u8; 12]);
13706
13707impl core::fmt::Debug for AssetCode12 {
13708 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13709 let v = &self.0;
13710 write!(f, "AssetCode12(")?;
13711 for b in v {
13712 write!(f, "{b:02x}")?;
13713 }
13714 write!(f, ")")?;
13715 Ok(())
13716 }
13717}
13718impl From<AssetCode12> for [u8; 12] {
13719 #[must_use]
13720 fn from(x: AssetCode12) -> Self {
13721 x.0
13722 }
13723}
13724
13725impl From<[u8; 12]> for AssetCode12 {
13726 #[must_use]
13727 fn from(x: [u8; 12]) -> Self {
13728 AssetCode12(x)
13729 }
13730}
13731
13732impl AsRef<[u8; 12]> for AssetCode12 {
13733 #[must_use]
13734 fn as_ref(&self) -> &[u8; 12] {
13735 &self.0
13736 }
13737}
13738
13739impl ReadXdr for AssetCode12 {
13740 #[cfg(feature = "std")]
13741 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13742 r.with_limited_depth(|r| {
13743 let i = <[u8; 12]>::read_xdr(r)?;
13744 let v = AssetCode12(i);
13745 Ok(v)
13746 })
13747 }
13748}
13749
13750impl WriteXdr for AssetCode12 {
13751 #[cfg(feature = "std")]
13752 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13753 w.with_limited_depth(|w| self.0.write_xdr(w))
13754 }
13755}
13756
13757impl AssetCode12 {
13758 #[must_use]
13759 pub fn as_slice(&self) -> &[u8] {
13760 &self.0
13761 }
13762}
13763
13764#[cfg(feature = "alloc")]
13765impl TryFrom<Vec<u8>> for AssetCode12 {
13766 type Error = Error;
13767 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
13768 x.as_slice().try_into()
13769 }
13770}
13771
13772#[cfg(feature = "alloc")]
13773impl TryFrom<&Vec<u8>> for AssetCode12 {
13774 type Error = Error;
13775 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
13776 x.as_slice().try_into()
13777 }
13778}
13779
13780impl TryFrom<&[u8]> for AssetCode12 {
13781 type Error = Error;
13782 fn try_from(x: &[u8]) -> Result<Self, Error> {
13783 Ok(AssetCode12(x.try_into()?))
13784 }
13785}
13786
13787impl AsRef<[u8]> for AssetCode12 {
13788 #[must_use]
13789 fn as_ref(&self) -> &[u8] {
13790 &self.0
13791 }
13792}
13793
13794#[cfg_attr(feature = "alloc", derive(Default))]
13808#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
13809#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13810#[cfg_attr(
13811 all(feature = "serde", feature = "alloc"),
13812 derive(serde::Serialize, serde::Deserialize),
13813 serde(rename_all = "snake_case")
13814)]
13815#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13816#[repr(i32)]
13817pub enum AssetType {
13818 #[cfg_attr(feature = "alloc", default)]
13819 Native = 0,
13820 CreditAlphanum4 = 1,
13821 CreditAlphanum12 = 2,
13822 PoolShare = 3,
13823}
13824
13825impl AssetType {
13826 pub const VARIANTS: [AssetType; 4] = [
13827 AssetType::Native,
13828 AssetType::CreditAlphanum4,
13829 AssetType::CreditAlphanum12,
13830 AssetType::PoolShare,
13831 ];
13832 pub const VARIANTS_STR: [&'static str; 4] =
13833 ["Native", "CreditAlphanum4", "CreditAlphanum12", "PoolShare"];
13834
13835 #[must_use]
13836 pub const fn name(&self) -> &'static str {
13837 match self {
13838 Self::Native => "Native",
13839 Self::CreditAlphanum4 => "CreditAlphanum4",
13840 Self::CreditAlphanum12 => "CreditAlphanum12",
13841 Self::PoolShare => "PoolShare",
13842 }
13843 }
13844
13845 #[must_use]
13846 pub const fn variants() -> [AssetType; 4] {
13847 Self::VARIANTS
13848 }
13849}
13850
13851impl Name for AssetType {
13852 #[must_use]
13853 fn name(&self) -> &'static str {
13854 Self::name(self)
13855 }
13856}
13857
13858impl Variants<AssetType> for AssetType {
13859 fn variants() -> slice::Iter<'static, AssetType> {
13860 Self::VARIANTS.iter()
13861 }
13862}
13863
13864impl Enum for AssetType {}
13865
13866impl fmt::Display for AssetType {
13867 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
13868 f.write_str(self.name())
13869 }
13870}
13871
13872impl TryFrom<i32> for AssetType {
13873 type Error = Error;
13874
13875 fn try_from(i: i32) -> Result<Self, Error> {
13876 let e = match i {
13877 0 => AssetType::Native,
13878 1 => AssetType::CreditAlphanum4,
13879 2 => AssetType::CreditAlphanum12,
13880 3 => AssetType::PoolShare,
13881 #[allow(unreachable_patterns)]
13882 _ => return Err(Error::Invalid),
13883 };
13884 Ok(e)
13885 }
13886}
13887
13888impl From<AssetType> for i32 {
13889 #[must_use]
13890 fn from(e: AssetType) -> Self {
13891 e as Self
13892 }
13893}
13894
13895impl ReadXdr for AssetType {
13896 #[cfg(feature = "std")]
13897 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
13898 r.with_limited_depth(|r| {
13899 let e = i32::read_xdr(r)?;
13900 let v: Self = e.try_into()?;
13901 Ok(v)
13902 })
13903 }
13904}
13905
13906impl WriteXdr for AssetType {
13907 #[cfg(feature = "std")]
13908 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
13909 w.with_limited_depth(|w| {
13910 let i: i32 = (*self).into();
13911 i.write_xdr(w)
13912 })
13913 }
13914}
13915
13916#[cfg_eval::cfg_eval]
13933#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
13934#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
13935#[cfg_attr(
13936 all(feature = "serde", feature = "alloc"),
13937 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
13938)]
13939#[allow(clippy::large_enum_variant)]
13940pub enum AssetCode {
13941 CreditAlphanum4(AssetCode4),
13942 CreditAlphanum12(AssetCode12),
13943}
13944
13945#[cfg(feature = "alloc")]
13946impl Default for AssetCode {
13947 fn default() -> Self {
13948 Self::CreditAlphanum4(AssetCode4::default())
13949 }
13950}
13951
13952impl AssetCode {
13953 pub const VARIANTS: [AssetType; 2] = [AssetType::CreditAlphanum4, AssetType::CreditAlphanum12];
13954 pub const VARIANTS_STR: [&'static str; 2] = ["CreditAlphanum4", "CreditAlphanum12"];
13955
13956 #[must_use]
13957 pub const fn name(&self) -> &'static str {
13958 match self {
13959 Self::CreditAlphanum4(_) => "CreditAlphanum4",
13960 Self::CreditAlphanum12(_) => "CreditAlphanum12",
13961 }
13962 }
13963
13964 #[must_use]
13965 pub const fn discriminant(&self) -> AssetType {
13966 #[allow(clippy::match_same_arms)]
13967 match self {
13968 Self::CreditAlphanum4(_) => AssetType::CreditAlphanum4,
13969 Self::CreditAlphanum12(_) => AssetType::CreditAlphanum12,
13970 }
13971 }
13972
13973 #[must_use]
13974 pub const fn variants() -> [AssetType; 2] {
13975 Self::VARIANTS
13976 }
13977}
13978
13979impl Name for AssetCode {
13980 #[must_use]
13981 fn name(&self) -> &'static str {
13982 Self::name(self)
13983 }
13984}
13985
13986impl Discriminant<AssetType> for AssetCode {
13987 #[must_use]
13988 fn discriminant(&self) -> AssetType {
13989 Self::discriminant(self)
13990 }
13991}
13992
13993impl Variants<AssetType> for AssetCode {
13994 fn variants() -> slice::Iter<'static, AssetType> {
13995 Self::VARIANTS.iter()
13996 }
13997}
13998
13999impl Union<AssetType> for AssetCode {}
14000
14001impl ReadXdr for AssetCode {
14002 #[cfg(feature = "std")]
14003 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14004 r.with_limited_depth(|r| {
14005 let dv: AssetType = <AssetType as ReadXdr>::read_xdr(r)?;
14006 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
14007 let v = match dv {
14008 AssetType::CreditAlphanum4 => Self::CreditAlphanum4(AssetCode4::read_xdr(r)?),
14009 AssetType::CreditAlphanum12 => Self::CreditAlphanum12(AssetCode12::read_xdr(r)?),
14010 #[allow(unreachable_patterns)]
14011 _ => return Err(Error::Invalid),
14012 };
14013 Ok(v)
14014 })
14015 }
14016}
14017
14018impl WriteXdr for AssetCode {
14019 #[cfg(feature = "std")]
14020 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14021 w.with_limited_depth(|w| {
14022 self.discriminant().write_xdr(w)?;
14023 #[allow(clippy::match_same_arms)]
14024 match self {
14025 Self::CreditAlphanum4(v) => v.write_xdr(w)?,
14026 Self::CreditAlphanum12(v) => v.write_xdr(w)?,
14027 };
14028 Ok(())
14029 })
14030 }
14031}
14032
14033#[cfg_attr(feature = "alloc", derive(Default))]
14044#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14045#[cfg_eval::cfg_eval]
14046#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14047#[cfg_attr(
14048 all(feature = "serde", feature = "alloc"),
14049 serde_with::serde_as,
14050 derive(serde::Serialize, serde::Deserialize),
14051 serde(rename_all = "snake_case")
14052)]
14053#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14054pub struct AlphaNum4 {
14055 pub asset_code: AssetCode4,
14056 pub issuer: AccountId,
14057}
14058
14059impl ReadXdr for AlphaNum4 {
14060 #[cfg(feature = "std")]
14061 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14062 r.with_limited_depth(|r| {
14063 Ok(Self {
14064 asset_code: AssetCode4::read_xdr(r)?,
14065 issuer: AccountId::read_xdr(r)?,
14066 })
14067 })
14068 }
14069}
14070
14071impl WriteXdr for AlphaNum4 {
14072 #[cfg(feature = "std")]
14073 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14074 w.with_limited_depth(|w| {
14075 self.asset_code.write_xdr(w)?;
14076 self.issuer.write_xdr(w)?;
14077 Ok(())
14078 })
14079 }
14080}
14081
14082#[cfg_attr(feature = "alloc", derive(Default))]
14093#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14094#[cfg_eval::cfg_eval]
14095#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14096#[cfg_attr(
14097 all(feature = "serde", feature = "alloc"),
14098 serde_with::serde_as,
14099 derive(serde::Serialize, serde::Deserialize),
14100 serde(rename_all = "snake_case")
14101)]
14102#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14103pub struct AlphaNum12 {
14104 pub asset_code: AssetCode12,
14105 pub issuer: AccountId,
14106}
14107
14108impl ReadXdr for AlphaNum12 {
14109 #[cfg(feature = "std")]
14110 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14111 r.with_limited_depth(|r| {
14112 Ok(Self {
14113 asset_code: AssetCode12::read_xdr(r)?,
14114 issuer: AccountId::read_xdr(r)?,
14115 })
14116 })
14117 }
14118}
14119
14120impl WriteXdr for AlphaNum12 {
14121 #[cfg(feature = "std")]
14122 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14123 w.with_limited_depth(|w| {
14124 self.asset_code.write_xdr(w)?;
14125 self.issuer.write_xdr(w)?;
14126 Ok(())
14127 })
14128 }
14129}
14130
14131#[cfg_eval::cfg_eval]
14151#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14152#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14153#[cfg_attr(
14154 all(feature = "serde", feature = "alloc"),
14155 serde_with::serde_as,
14156 derive(serde::Serialize, serde::Deserialize),
14157 serde(rename_all = "snake_case")
14158)]
14159#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14160#[allow(clippy::large_enum_variant)]
14161pub enum Asset {
14162 Native,
14163 CreditAlphanum4(AlphaNum4),
14164 CreditAlphanum12(AlphaNum12),
14165}
14166
14167#[cfg(feature = "alloc")]
14168impl Default for Asset {
14169 fn default() -> Self {
14170 Self::Native
14171 }
14172}
14173
14174impl Asset {
14175 pub const VARIANTS: [AssetType; 3] = [
14176 AssetType::Native,
14177 AssetType::CreditAlphanum4,
14178 AssetType::CreditAlphanum12,
14179 ];
14180 pub const VARIANTS_STR: [&'static str; 3] = ["Native", "CreditAlphanum4", "CreditAlphanum12"];
14181
14182 #[must_use]
14183 pub const fn name(&self) -> &'static str {
14184 match self {
14185 Self::Native => "Native",
14186 Self::CreditAlphanum4(_) => "CreditAlphanum4",
14187 Self::CreditAlphanum12(_) => "CreditAlphanum12",
14188 }
14189 }
14190
14191 #[must_use]
14192 pub const fn discriminant(&self) -> AssetType {
14193 #[allow(clippy::match_same_arms)]
14194 match self {
14195 Self::Native => AssetType::Native,
14196 Self::CreditAlphanum4(_) => AssetType::CreditAlphanum4,
14197 Self::CreditAlphanum12(_) => AssetType::CreditAlphanum12,
14198 }
14199 }
14200
14201 #[must_use]
14202 pub const fn variants() -> [AssetType; 3] {
14203 Self::VARIANTS
14204 }
14205}
14206
14207impl Name for Asset {
14208 #[must_use]
14209 fn name(&self) -> &'static str {
14210 Self::name(self)
14211 }
14212}
14213
14214impl Discriminant<AssetType> for Asset {
14215 #[must_use]
14216 fn discriminant(&self) -> AssetType {
14217 Self::discriminant(self)
14218 }
14219}
14220
14221impl Variants<AssetType> for Asset {
14222 fn variants() -> slice::Iter<'static, AssetType> {
14223 Self::VARIANTS.iter()
14224 }
14225}
14226
14227impl Union<AssetType> for Asset {}
14228
14229impl ReadXdr for Asset {
14230 #[cfg(feature = "std")]
14231 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14232 r.with_limited_depth(|r| {
14233 let dv: AssetType = <AssetType as ReadXdr>::read_xdr(r)?;
14234 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
14235 let v = match dv {
14236 AssetType::Native => Self::Native,
14237 AssetType::CreditAlphanum4 => Self::CreditAlphanum4(AlphaNum4::read_xdr(r)?),
14238 AssetType::CreditAlphanum12 => Self::CreditAlphanum12(AlphaNum12::read_xdr(r)?),
14239 #[allow(unreachable_patterns)]
14240 _ => return Err(Error::Invalid),
14241 };
14242 Ok(v)
14243 })
14244 }
14245}
14246
14247impl WriteXdr for Asset {
14248 #[cfg(feature = "std")]
14249 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14250 w.with_limited_depth(|w| {
14251 self.discriminant().write_xdr(w)?;
14252 #[allow(clippy::match_same_arms)]
14253 match self {
14254 Self::Native => ().write_xdr(w)?,
14255 Self::CreditAlphanum4(v) => v.write_xdr(w)?,
14256 Self::CreditAlphanum12(v) => v.write_xdr(w)?,
14257 };
14258 Ok(())
14259 })
14260 }
14261}
14262
14263#[cfg_attr(feature = "alloc", derive(Default))]
14274#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14275#[cfg_eval::cfg_eval]
14276#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14277#[cfg_attr(
14278 all(feature = "serde", feature = "alloc"),
14279 serde_with::serde_as,
14280 derive(serde::Serialize, serde::Deserialize),
14281 serde(rename_all = "snake_case")
14282)]
14283#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14284pub struct Price {
14285 pub n: i32,
14286 pub d: i32,
14287}
14288
14289impl ReadXdr for Price {
14290 #[cfg(feature = "std")]
14291 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14292 r.with_limited_depth(|r| {
14293 Ok(Self {
14294 n: i32::read_xdr(r)?,
14295 d: i32::read_xdr(r)?,
14296 })
14297 })
14298 }
14299}
14300
14301impl WriteXdr for Price {
14302 #[cfg(feature = "std")]
14303 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14304 w.with_limited_depth(|w| {
14305 self.n.write_xdr(w)?;
14306 self.d.write_xdr(w)?;
14307 Ok(())
14308 })
14309 }
14310}
14311
14312#[cfg_attr(feature = "alloc", derive(Default))]
14323#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14324#[cfg_eval::cfg_eval]
14325#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14326#[cfg_attr(
14327 all(feature = "serde", feature = "alloc"),
14328 serde_with::serde_as,
14329 derive(serde::Serialize, serde::Deserialize),
14330 serde(rename_all = "snake_case")
14331)]
14332#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14333pub struct Liabilities {
14334 #[cfg_attr(
14335 all(feature = "serde", feature = "alloc"),
14336 serde_as(as = "NumberOrString")
14337 )]
14338 pub buying: i64,
14339 #[cfg_attr(
14340 all(feature = "serde", feature = "alloc"),
14341 serde_as(as = "NumberOrString")
14342 )]
14343 pub selling: i64,
14344}
14345
14346impl ReadXdr for Liabilities {
14347 #[cfg(feature = "std")]
14348 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14349 r.with_limited_depth(|r| {
14350 Ok(Self {
14351 buying: i64::read_xdr(r)?,
14352 selling: i64::read_xdr(r)?,
14353 })
14354 })
14355 }
14356}
14357
14358impl WriteXdr for Liabilities {
14359 #[cfg(feature = "std")]
14360 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14361 w.with_limited_depth(|w| {
14362 self.buying.write_xdr(w)?;
14363 self.selling.write_xdr(w)?;
14364 Ok(())
14365 })
14366 }
14367}
14368
14369#[cfg_attr(feature = "alloc", derive(Default))]
14383#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14384#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14385#[cfg_attr(
14386 all(feature = "serde", feature = "alloc"),
14387 derive(serde::Serialize, serde::Deserialize),
14388 serde(rename_all = "snake_case")
14389)]
14390#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14391#[repr(i32)]
14392pub enum ThresholdIndexes {
14393 #[cfg_attr(feature = "alloc", default)]
14394 MasterWeight = 0,
14395 Low = 1,
14396 Med = 2,
14397 High = 3,
14398}
14399
14400impl ThresholdIndexes {
14401 pub const VARIANTS: [ThresholdIndexes; 4] = [
14402 ThresholdIndexes::MasterWeight,
14403 ThresholdIndexes::Low,
14404 ThresholdIndexes::Med,
14405 ThresholdIndexes::High,
14406 ];
14407 pub const VARIANTS_STR: [&'static str; 4] = ["MasterWeight", "Low", "Med", "High"];
14408
14409 #[must_use]
14410 pub const fn name(&self) -> &'static str {
14411 match self {
14412 Self::MasterWeight => "MasterWeight",
14413 Self::Low => "Low",
14414 Self::Med => "Med",
14415 Self::High => "High",
14416 }
14417 }
14418
14419 #[must_use]
14420 pub const fn variants() -> [ThresholdIndexes; 4] {
14421 Self::VARIANTS
14422 }
14423}
14424
14425impl Name for ThresholdIndexes {
14426 #[must_use]
14427 fn name(&self) -> &'static str {
14428 Self::name(self)
14429 }
14430}
14431
14432impl Variants<ThresholdIndexes> for ThresholdIndexes {
14433 fn variants() -> slice::Iter<'static, ThresholdIndexes> {
14434 Self::VARIANTS.iter()
14435 }
14436}
14437
14438impl Enum for ThresholdIndexes {}
14439
14440impl fmt::Display for ThresholdIndexes {
14441 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14442 f.write_str(self.name())
14443 }
14444}
14445
14446impl TryFrom<i32> for ThresholdIndexes {
14447 type Error = Error;
14448
14449 fn try_from(i: i32) -> Result<Self, Error> {
14450 let e = match i {
14451 0 => ThresholdIndexes::MasterWeight,
14452 1 => ThresholdIndexes::Low,
14453 2 => ThresholdIndexes::Med,
14454 3 => ThresholdIndexes::High,
14455 #[allow(unreachable_patterns)]
14456 _ => return Err(Error::Invalid),
14457 };
14458 Ok(e)
14459 }
14460}
14461
14462impl From<ThresholdIndexes> for i32 {
14463 #[must_use]
14464 fn from(e: ThresholdIndexes) -> Self {
14465 e as Self
14466 }
14467}
14468
14469impl ReadXdr for ThresholdIndexes {
14470 #[cfg(feature = "std")]
14471 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14472 r.with_limited_depth(|r| {
14473 let e = i32::read_xdr(r)?;
14474 let v: Self = e.try_into()?;
14475 Ok(v)
14476 })
14477 }
14478}
14479
14480impl WriteXdr for ThresholdIndexes {
14481 #[cfg(feature = "std")]
14482 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14483 w.with_limited_depth(|w| {
14484 let i: i32 = (*self).into();
14485 i.write_xdr(w)
14486 })
14487 }
14488}
14489
14490#[cfg_attr(feature = "alloc", derive(Default))]
14510#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14511#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14512#[cfg_attr(
14513 all(feature = "serde", feature = "alloc"),
14514 derive(serde::Serialize, serde::Deserialize),
14515 serde(rename_all = "snake_case")
14516)]
14517#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14518#[repr(i32)]
14519pub enum LedgerEntryType {
14520 #[cfg_attr(feature = "alloc", default)]
14521 Account = 0,
14522 Trustline = 1,
14523 Offer = 2,
14524 Data = 3,
14525 ClaimableBalance = 4,
14526 LiquidityPool = 5,
14527 ContractData = 6,
14528 ContractCode = 7,
14529 ConfigSetting = 8,
14530 Ttl = 9,
14531}
14532
14533impl LedgerEntryType {
14534 pub const VARIANTS: [LedgerEntryType; 10] = [
14535 LedgerEntryType::Account,
14536 LedgerEntryType::Trustline,
14537 LedgerEntryType::Offer,
14538 LedgerEntryType::Data,
14539 LedgerEntryType::ClaimableBalance,
14540 LedgerEntryType::LiquidityPool,
14541 LedgerEntryType::ContractData,
14542 LedgerEntryType::ContractCode,
14543 LedgerEntryType::ConfigSetting,
14544 LedgerEntryType::Ttl,
14545 ];
14546 pub const VARIANTS_STR: [&'static str; 10] = [
14547 "Account",
14548 "Trustline",
14549 "Offer",
14550 "Data",
14551 "ClaimableBalance",
14552 "LiquidityPool",
14553 "ContractData",
14554 "ContractCode",
14555 "ConfigSetting",
14556 "Ttl",
14557 ];
14558
14559 #[must_use]
14560 pub const fn name(&self) -> &'static str {
14561 match self {
14562 Self::Account => "Account",
14563 Self::Trustline => "Trustline",
14564 Self::Offer => "Offer",
14565 Self::Data => "Data",
14566 Self::ClaimableBalance => "ClaimableBalance",
14567 Self::LiquidityPool => "LiquidityPool",
14568 Self::ContractData => "ContractData",
14569 Self::ContractCode => "ContractCode",
14570 Self::ConfigSetting => "ConfigSetting",
14571 Self::Ttl => "Ttl",
14572 }
14573 }
14574
14575 #[must_use]
14576 pub const fn variants() -> [LedgerEntryType; 10] {
14577 Self::VARIANTS
14578 }
14579}
14580
14581impl Name for LedgerEntryType {
14582 #[must_use]
14583 fn name(&self) -> &'static str {
14584 Self::name(self)
14585 }
14586}
14587
14588impl Variants<LedgerEntryType> for LedgerEntryType {
14589 fn variants() -> slice::Iter<'static, LedgerEntryType> {
14590 Self::VARIANTS.iter()
14591 }
14592}
14593
14594impl Enum for LedgerEntryType {}
14595
14596impl fmt::Display for LedgerEntryType {
14597 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14598 f.write_str(self.name())
14599 }
14600}
14601
14602impl TryFrom<i32> for LedgerEntryType {
14603 type Error = Error;
14604
14605 fn try_from(i: i32) -> Result<Self, Error> {
14606 let e = match i {
14607 0 => LedgerEntryType::Account,
14608 1 => LedgerEntryType::Trustline,
14609 2 => LedgerEntryType::Offer,
14610 3 => LedgerEntryType::Data,
14611 4 => LedgerEntryType::ClaimableBalance,
14612 5 => LedgerEntryType::LiquidityPool,
14613 6 => LedgerEntryType::ContractData,
14614 7 => LedgerEntryType::ContractCode,
14615 8 => LedgerEntryType::ConfigSetting,
14616 9 => LedgerEntryType::Ttl,
14617 #[allow(unreachable_patterns)]
14618 _ => return Err(Error::Invalid),
14619 };
14620 Ok(e)
14621 }
14622}
14623
14624impl From<LedgerEntryType> for i32 {
14625 #[must_use]
14626 fn from(e: LedgerEntryType) -> Self {
14627 e as Self
14628 }
14629}
14630
14631impl ReadXdr for LedgerEntryType {
14632 #[cfg(feature = "std")]
14633 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14634 r.with_limited_depth(|r| {
14635 let e = i32::read_xdr(r)?;
14636 let v: Self = e.try_into()?;
14637 Ok(v)
14638 })
14639 }
14640}
14641
14642impl WriteXdr for LedgerEntryType {
14643 #[cfg(feature = "std")]
14644 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14645 w.with_limited_depth(|w| {
14646 let i: i32 = (*self).into();
14647 i.write_xdr(w)
14648 })
14649 }
14650}
14651
14652#[cfg_attr(feature = "alloc", derive(Default))]
14663#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14664#[cfg_eval::cfg_eval]
14665#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14666#[cfg_attr(
14667 all(feature = "serde", feature = "alloc"),
14668 serde_with::serde_as,
14669 derive(serde::Serialize, serde::Deserialize),
14670 serde(rename_all = "snake_case")
14671)]
14672#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14673pub struct Signer {
14674 pub key: SignerKey,
14675 pub weight: u32,
14676}
14677
14678impl ReadXdr for Signer {
14679 #[cfg(feature = "std")]
14680 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14681 r.with_limited_depth(|r| {
14682 Ok(Self {
14683 key: SignerKey::read_xdr(r)?,
14684 weight: u32::read_xdr(r)?,
14685 })
14686 })
14687 }
14688}
14689
14690impl WriteXdr for Signer {
14691 #[cfg(feature = "std")]
14692 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14693 w.with_limited_depth(|w| {
14694 self.key.write_xdr(w)?;
14695 self.weight.write_xdr(w)?;
14696 Ok(())
14697 })
14698 }
14699}
14700
14701#[cfg_attr(feature = "alloc", derive(Default))]
14725#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14726#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14727#[cfg_attr(
14728 all(feature = "serde", feature = "alloc"),
14729 derive(serde::Serialize, serde::Deserialize),
14730 serde(rename_all = "snake_case")
14731)]
14732#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14733#[repr(i32)]
14734pub enum AccountFlags {
14735 #[cfg_attr(feature = "alloc", default)]
14736 RequiredFlag = 1,
14737 RevocableFlag = 2,
14738 ImmutableFlag = 4,
14739 ClawbackEnabledFlag = 8,
14740}
14741
14742impl AccountFlags {
14743 pub const VARIANTS: [AccountFlags; 4] = [
14744 AccountFlags::RequiredFlag,
14745 AccountFlags::RevocableFlag,
14746 AccountFlags::ImmutableFlag,
14747 AccountFlags::ClawbackEnabledFlag,
14748 ];
14749 pub const VARIANTS_STR: [&'static str; 4] = [
14750 "RequiredFlag",
14751 "RevocableFlag",
14752 "ImmutableFlag",
14753 "ClawbackEnabledFlag",
14754 ];
14755
14756 #[must_use]
14757 pub const fn name(&self) -> &'static str {
14758 match self {
14759 Self::RequiredFlag => "RequiredFlag",
14760 Self::RevocableFlag => "RevocableFlag",
14761 Self::ImmutableFlag => "ImmutableFlag",
14762 Self::ClawbackEnabledFlag => "ClawbackEnabledFlag",
14763 }
14764 }
14765
14766 #[must_use]
14767 pub const fn variants() -> [AccountFlags; 4] {
14768 Self::VARIANTS
14769 }
14770}
14771
14772impl Name for AccountFlags {
14773 #[must_use]
14774 fn name(&self) -> &'static str {
14775 Self::name(self)
14776 }
14777}
14778
14779impl Variants<AccountFlags> for AccountFlags {
14780 fn variants() -> slice::Iter<'static, AccountFlags> {
14781 Self::VARIANTS.iter()
14782 }
14783}
14784
14785impl Enum for AccountFlags {}
14786
14787impl fmt::Display for AccountFlags {
14788 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14789 f.write_str(self.name())
14790 }
14791}
14792
14793impl TryFrom<i32> for AccountFlags {
14794 type Error = Error;
14795
14796 fn try_from(i: i32) -> Result<Self, Error> {
14797 let e = match i {
14798 1 => AccountFlags::RequiredFlag,
14799 2 => AccountFlags::RevocableFlag,
14800 4 => AccountFlags::ImmutableFlag,
14801 8 => AccountFlags::ClawbackEnabledFlag,
14802 #[allow(unreachable_patterns)]
14803 _ => return Err(Error::Invalid),
14804 };
14805 Ok(e)
14806 }
14807}
14808
14809impl From<AccountFlags> for i32 {
14810 #[must_use]
14811 fn from(e: AccountFlags) -> Self {
14812 e as Self
14813 }
14814}
14815
14816impl ReadXdr for AccountFlags {
14817 #[cfg(feature = "std")]
14818 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14819 r.with_limited_depth(|r| {
14820 let e = i32::read_xdr(r)?;
14821 let v: Self = e.try_into()?;
14822 Ok(v)
14823 })
14824 }
14825}
14826
14827impl WriteXdr for AccountFlags {
14828 #[cfg(feature = "std")]
14829 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14830 w.with_limited_depth(|w| {
14831 let i: i32 = (*self).into();
14832 i.write_xdr(w)
14833 })
14834 }
14835}
14836
14837pub const MASK_ACCOUNT_FLAGS: u64 = 0x7;
14844
14845pub const MASK_ACCOUNT_FLAGS_V17: u64 = 0xF;
14852
14853pub const MAX_SIGNERS: u64 = 20;
14860
14861#[cfg_eval::cfg_eval]
14868#[cfg_attr(feature = "alloc", derive(Default))]
14869#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
14870#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14871#[cfg_attr(
14872 all(feature = "serde", feature = "alloc"),
14873 serde_with::serde_as,
14874 derive(serde::Serialize, serde::Deserialize),
14875 serde(rename_all = "snake_case")
14876)]
14877#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14878#[derive(Debug)]
14879pub struct SponsorshipDescriptor(pub Option<AccountId>);
14880
14881impl From<SponsorshipDescriptor> for Option<AccountId> {
14882 #[must_use]
14883 fn from(x: SponsorshipDescriptor) -> Self {
14884 x.0
14885 }
14886}
14887
14888impl From<Option<AccountId>> for SponsorshipDescriptor {
14889 #[must_use]
14890 fn from(x: Option<AccountId>) -> Self {
14891 SponsorshipDescriptor(x)
14892 }
14893}
14894
14895impl AsRef<Option<AccountId>> for SponsorshipDescriptor {
14896 #[must_use]
14897 fn as_ref(&self) -> &Option<AccountId> {
14898 &self.0
14899 }
14900}
14901
14902impl ReadXdr for SponsorshipDescriptor {
14903 #[cfg(feature = "std")]
14904 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14905 r.with_limited_depth(|r| {
14906 let i = Option::<AccountId>::read_xdr(r)?;
14907 let v = SponsorshipDescriptor(i);
14908 Ok(v)
14909 })
14910 }
14911}
14912
14913impl WriteXdr for SponsorshipDescriptor {
14914 #[cfg(feature = "std")]
14915 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14916 w.with_limited_depth(|w| self.0.write_xdr(w))
14917 }
14918}
14919
14920#[cfg_attr(feature = "alloc", derive(Default))]
14938#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14939#[cfg_eval::cfg_eval]
14940#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14941#[cfg_attr(
14942 all(feature = "serde", feature = "alloc"),
14943 serde_with::serde_as,
14944 derive(serde::Serialize, serde::Deserialize),
14945 serde(rename_all = "snake_case")
14946)]
14947#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
14948pub struct AccountEntryExtensionV3 {
14949 pub ext: ExtensionPoint,
14950 pub seq_ledger: u32,
14951 pub seq_time: TimePoint,
14952}
14953
14954impl ReadXdr for AccountEntryExtensionV3 {
14955 #[cfg(feature = "std")]
14956 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
14957 r.with_limited_depth(|r| {
14958 Ok(Self {
14959 ext: ExtensionPoint::read_xdr(r)?,
14960 seq_ledger: u32::read_xdr(r)?,
14961 seq_time: TimePoint::read_xdr(r)?,
14962 })
14963 })
14964 }
14965}
14966
14967impl WriteXdr for AccountEntryExtensionV3 {
14968 #[cfg(feature = "std")]
14969 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
14970 w.with_limited_depth(|w| {
14971 self.ext.write_xdr(w)?;
14972 self.seq_ledger.write_xdr(w)?;
14973 self.seq_time.write_xdr(w)?;
14974 Ok(())
14975 })
14976 }
14977}
14978
14979#[cfg_eval::cfg_eval]
14993#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
14994#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
14995#[cfg_attr(
14996 all(feature = "serde", feature = "alloc"),
14997 serde_with::serde_as,
14998 derive(serde::Serialize, serde::Deserialize),
14999 serde(rename_all = "snake_case")
15000)]
15001#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15002#[allow(clippy::large_enum_variant)]
15003pub enum AccountEntryExtensionV2Ext {
15004 V0,
15005 V3(AccountEntryExtensionV3),
15006}
15007
15008#[cfg(feature = "alloc")]
15009impl Default for AccountEntryExtensionV2Ext {
15010 fn default() -> Self {
15011 Self::V0
15012 }
15013}
15014
15015impl AccountEntryExtensionV2Ext {
15016 pub const VARIANTS: [i32; 2] = [0, 3];
15017 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V3"];
15018
15019 #[must_use]
15020 pub const fn name(&self) -> &'static str {
15021 match self {
15022 Self::V0 => "V0",
15023 Self::V3(_) => "V3",
15024 }
15025 }
15026
15027 #[must_use]
15028 pub const fn discriminant(&self) -> i32 {
15029 #[allow(clippy::match_same_arms)]
15030 match self {
15031 Self::V0 => 0,
15032 Self::V3(_) => 3,
15033 }
15034 }
15035
15036 #[must_use]
15037 pub const fn variants() -> [i32; 2] {
15038 Self::VARIANTS
15039 }
15040}
15041
15042impl Name for AccountEntryExtensionV2Ext {
15043 #[must_use]
15044 fn name(&self) -> &'static str {
15045 Self::name(self)
15046 }
15047}
15048
15049impl Discriminant<i32> for AccountEntryExtensionV2Ext {
15050 #[must_use]
15051 fn discriminant(&self) -> i32 {
15052 Self::discriminant(self)
15053 }
15054}
15055
15056impl Variants<i32> for AccountEntryExtensionV2Ext {
15057 fn variants() -> slice::Iter<'static, i32> {
15058 Self::VARIANTS.iter()
15059 }
15060}
15061
15062impl Union<i32> for AccountEntryExtensionV2Ext {}
15063
15064impl ReadXdr for AccountEntryExtensionV2Ext {
15065 #[cfg(feature = "std")]
15066 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15067 r.with_limited_depth(|r| {
15068 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
15069 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
15070 let v = match dv {
15071 0 => Self::V0,
15072 3 => Self::V3(AccountEntryExtensionV3::read_xdr(r)?),
15073 #[allow(unreachable_patterns)]
15074 _ => return Err(Error::Invalid),
15075 };
15076 Ok(v)
15077 })
15078 }
15079}
15080
15081impl WriteXdr for AccountEntryExtensionV2Ext {
15082 #[cfg(feature = "std")]
15083 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15084 w.with_limited_depth(|w| {
15085 self.discriminant().write_xdr(w)?;
15086 #[allow(clippy::match_same_arms)]
15087 match self {
15088 Self::V0 => ().write_xdr(w)?,
15089 Self::V3(v) => v.write_xdr(w)?,
15090 };
15091 Ok(())
15092 })
15093 }
15094}
15095
15096#[cfg_attr(feature = "alloc", derive(Default))]
15117#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15118#[cfg_eval::cfg_eval]
15119#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15120#[cfg_attr(
15121 all(feature = "serde", feature = "alloc"),
15122 serde_with::serde_as,
15123 derive(serde::Serialize, serde::Deserialize),
15124 serde(rename_all = "snake_case")
15125)]
15126#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15127pub struct AccountEntryExtensionV2 {
15128 pub num_sponsored: u32,
15129 pub num_sponsoring: u32,
15130 pub signer_sponsoring_i_ds: VecM<SponsorshipDescriptor, 20>,
15131 pub ext: AccountEntryExtensionV2Ext,
15132}
15133
15134impl ReadXdr for AccountEntryExtensionV2 {
15135 #[cfg(feature = "std")]
15136 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15137 r.with_limited_depth(|r| {
15138 Ok(Self {
15139 num_sponsored: u32::read_xdr(r)?,
15140 num_sponsoring: u32::read_xdr(r)?,
15141 signer_sponsoring_i_ds: VecM::<SponsorshipDescriptor, 20>::read_xdr(r)?,
15142 ext: AccountEntryExtensionV2Ext::read_xdr(r)?,
15143 })
15144 })
15145 }
15146}
15147
15148impl WriteXdr for AccountEntryExtensionV2 {
15149 #[cfg(feature = "std")]
15150 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15151 w.with_limited_depth(|w| {
15152 self.num_sponsored.write_xdr(w)?;
15153 self.num_sponsoring.write_xdr(w)?;
15154 self.signer_sponsoring_i_ds.write_xdr(w)?;
15155 self.ext.write_xdr(w)?;
15156 Ok(())
15157 })
15158 }
15159}
15160
15161#[cfg_eval::cfg_eval]
15175#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15176#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15177#[cfg_attr(
15178 all(feature = "serde", feature = "alloc"),
15179 serde_with::serde_as,
15180 derive(serde::Serialize, serde::Deserialize),
15181 serde(rename_all = "snake_case")
15182)]
15183#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15184#[allow(clippy::large_enum_variant)]
15185pub enum AccountEntryExtensionV1Ext {
15186 V0,
15187 V2(AccountEntryExtensionV2),
15188}
15189
15190#[cfg(feature = "alloc")]
15191impl Default for AccountEntryExtensionV1Ext {
15192 fn default() -> Self {
15193 Self::V0
15194 }
15195}
15196
15197impl AccountEntryExtensionV1Ext {
15198 pub const VARIANTS: [i32; 2] = [0, 2];
15199 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V2"];
15200
15201 #[must_use]
15202 pub const fn name(&self) -> &'static str {
15203 match self {
15204 Self::V0 => "V0",
15205 Self::V2(_) => "V2",
15206 }
15207 }
15208
15209 #[must_use]
15210 pub const fn discriminant(&self) -> i32 {
15211 #[allow(clippy::match_same_arms)]
15212 match self {
15213 Self::V0 => 0,
15214 Self::V2(_) => 2,
15215 }
15216 }
15217
15218 #[must_use]
15219 pub const fn variants() -> [i32; 2] {
15220 Self::VARIANTS
15221 }
15222}
15223
15224impl Name for AccountEntryExtensionV1Ext {
15225 #[must_use]
15226 fn name(&self) -> &'static str {
15227 Self::name(self)
15228 }
15229}
15230
15231impl Discriminant<i32> for AccountEntryExtensionV1Ext {
15232 #[must_use]
15233 fn discriminant(&self) -> i32 {
15234 Self::discriminant(self)
15235 }
15236}
15237
15238impl Variants<i32> for AccountEntryExtensionV1Ext {
15239 fn variants() -> slice::Iter<'static, i32> {
15240 Self::VARIANTS.iter()
15241 }
15242}
15243
15244impl Union<i32> for AccountEntryExtensionV1Ext {}
15245
15246impl ReadXdr for AccountEntryExtensionV1Ext {
15247 #[cfg(feature = "std")]
15248 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15249 r.with_limited_depth(|r| {
15250 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
15251 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
15252 let v = match dv {
15253 0 => Self::V0,
15254 2 => Self::V2(AccountEntryExtensionV2::read_xdr(r)?),
15255 #[allow(unreachable_patterns)]
15256 _ => return Err(Error::Invalid),
15257 };
15258 Ok(v)
15259 })
15260 }
15261}
15262
15263impl WriteXdr for AccountEntryExtensionV1Ext {
15264 #[cfg(feature = "std")]
15265 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15266 w.with_limited_depth(|w| {
15267 self.discriminant().write_xdr(w)?;
15268 #[allow(clippy::match_same_arms)]
15269 match self {
15270 Self::V0 => ().write_xdr(w)?,
15271 Self::V2(v) => v.write_xdr(w)?,
15272 };
15273 Ok(())
15274 })
15275 }
15276}
15277
15278#[cfg_attr(feature = "alloc", derive(Default))]
15297#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15298#[cfg_eval::cfg_eval]
15299#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15300#[cfg_attr(
15301 all(feature = "serde", feature = "alloc"),
15302 serde_with::serde_as,
15303 derive(serde::Serialize, serde::Deserialize),
15304 serde(rename_all = "snake_case")
15305)]
15306#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15307pub struct AccountEntryExtensionV1 {
15308 pub liabilities: Liabilities,
15309 pub ext: AccountEntryExtensionV1Ext,
15310}
15311
15312impl ReadXdr for AccountEntryExtensionV1 {
15313 #[cfg(feature = "std")]
15314 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15315 r.with_limited_depth(|r| {
15316 Ok(Self {
15317 liabilities: Liabilities::read_xdr(r)?,
15318 ext: AccountEntryExtensionV1Ext::read_xdr(r)?,
15319 })
15320 })
15321 }
15322}
15323
15324impl WriteXdr for AccountEntryExtensionV1 {
15325 #[cfg(feature = "std")]
15326 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15327 w.with_limited_depth(|w| {
15328 self.liabilities.write_xdr(w)?;
15329 self.ext.write_xdr(w)?;
15330 Ok(())
15331 })
15332 }
15333}
15334
15335#[cfg_eval::cfg_eval]
15349#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15350#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15351#[cfg_attr(
15352 all(feature = "serde", feature = "alloc"),
15353 serde_with::serde_as,
15354 derive(serde::Serialize, serde::Deserialize),
15355 serde(rename_all = "snake_case")
15356)]
15357#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15358#[allow(clippy::large_enum_variant)]
15359pub enum AccountEntryExt {
15360 V0,
15361 V1(AccountEntryExtensionV1),
15362}
15363
15364#[cfg(feature = "alloc")]
15365impl Default for AccountEntryExt {
15366 fn default() -> Self {
15367 Self::V0
15368 }
15369}
15370
15371impl AccountEntryExt {
15372 pub const VARIANTS: [i32; 2] = [0, 1];
15373 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
15374
15375 #[must_use]
15376 pub const fn name(&self) -> &'static str {
15377 match self {
15378 Self::V0 => "V0",
15379 Self::V1(_) => "V1",
15380 }
15381 }
15382
15383 #[must_use]
15384 pub const fn discriminant(&self) -> i32 {
15385 #[allow(clippy::match_same_arms)]
15386 match self {
15387 Self::V0 => 0,
15388 Self::V1(_) => 1,
15389 }
15390 }
15391
15392 #[must_use]
15393 pub const fn variants() -> [i32; 2] {
15394 Self::VARIANTS
15395 }
15396}
15397
15398impl Name for AccountEntryExt {
15399 #[must_use]
15400 fn name(&self) -> &'static str {
15401 Self::name(self)
15402 }
15403}
15404
15405impl Discriminant<i32> for AccountEntryExt {
15406 #[must_use]
15407 fn discriminant(&self) -> i32 {
15408 Self::discriminant(self)
15409 }
15410}
15411
15412impl Variants<i32> for AccountEntryExt {
15413 fn variants() -> slice::Iter<'static, i32> {
15414 Self::VARIANTS.iter()
15415 }
15416}
15417
15418impl Union<i32> for AccountEntryExt {}
15419
15420impl ReadXdr for AccountEntryExt {
15421 #[cfg(feature = "std")]
15422 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15423 r.with_limited_depth(|r| {
15424 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
15425 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
15426 let v = match dv {
15427 0 => Self::V0,
15428 1 => Self::V1(AccountEntryExtensionV1::read_xdr(r)?),
15429 #[allow(unreachable_patterns)]
15430 _ => return Err(Error::Invalid),
15431 };
15432 Ok(v)
15433 })
15434 }
15435}
15436
15437impl WriteXdr for AccountEntryExt {
15438 #[cfg(feature = "std")]
15439 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15440 w.with_limited_depth(|w| {
15441 self.discriminant().write_xdr(w)?;
15442 #[allow(clippy::match_same_arms)]
15443 match self {
15444 Self::V0 => ().write_xdr(w)?,
15445 Self::V1(v) => v.write_xdr(w)?,
15446 };
15447 Ok(())
15448 })
15449 }
15450}
15451
15452#[cfg_attr(feature = "alloc", derive(Default))]
15486#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15487#[cfg_eval::cfg_eval]
15488#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15489#[cfg_attr(
15490 all(feature = "serde", feature = "alloc"),
15491 serde_with::serde_as,
15492 derive(serde::Serialize, serde::Deserialize),
15493 serde(rename_all = "snake_case")
15494)]
15495#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15496pub struct AccountEntry {
15497 pub account_id: AccountId,
15498 #[cfg_attr(
15499 all(feature = "serde", feature = "alloc"),
15500 serde_as(as = "NumberOrString")
15501 )]
15502 pub balance: i64,
15503 pub seq_num: SequenceNumber,
15504 pub num_sub_entries: u32,
15505 pub inflation_dest: Option<AccountId>,
15506 pub flags: u32,
15507 pub home_domain: String32,
15508 pub thresholds: Thresholds,
15509 pub signers: VecM<Signer, 20>,
15510 pub ext: AccountEntryExt,
15511}
15512
15513impl ReadXdr for AccountEntry {
15514 #[cfg(feature = "std")]
15515 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15516 r.with_limited_depth(|r| {
15517 Ok(Self {
15518 account_id: AccountId::read_xdr(r)?,
15519 balance: i64::read_xdr(r)?,
15520 seq_num: SequenceNumber::read_xdr(r)?,
15521 num_sub_entries: u32::read_xdr(r)?,
15522 inflation_dest: Option::<AccountId>::read_xdr(r)?,
15523 flags: u32::read_xdr(r)?,
15524 home_domain: String32::read_xdr(r)?,
15525 thresholds: Thresholds::read_xdr(r)?,
15526 signers: VecM::<Signer, 20>::read_xdr(r)?,
15527 ext: AccountEntryExt::read_xdr(r)?,
15528 })
15529 })
15530 }
15531}
15532
15533impl WriteXdr for AccountEntry {
15534 #[cfg(feature = "std")]
15535 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15536 w.with_limited_depth(|w| {
15537 self.account_id.write_xdr(w)?;
15538 self.balance.write_xdr(w)?;
15539 self.seq_num.write_xdr(w)?;
15540 self.num_sub_entries.write_xdr(w)?;
15541 self.inflation_dest.write_xdr(w)?;
15542 self.flags.write_xdr(w)?;
15543 self.home_domain.write_xdr(w)?;
15544 self.thresholds.write_xdr(w)?;
15545 self.signers.write_xdr(w)?;
15546 self.ext.write_xdr(w)?;
15547 Ok(())
15548 })
15549 }
15550}
15551
15552#[cfg_attr(feature = "alloc", derive(Default))]
15570#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15571#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15572#[cfg_attr(
15573 all(feature = "serde", feature = "alloc"),
15574 derive(serde::Serialize, serde::Deserialize),
15575 serde(rename_all = "snake_case")
15576)]
15577#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15578#[repr(i32)]
15579pub enum TrustLineFlags {
15580 #[cfg_attr(feature = "alloc", default)]
15581 AuthorizedFlag = 1,
15582 AuthorizedToMaintainLiabilitiesFlag = 2,
15583 TrustlineClawbackEnabledFlag = 4,
15584}
15585
15586impl TrustLineFlags {
15587 pub const VARIANTS: [TrustLineFlags; 3] = [
15588 TrustLineFlags::AuthorizedFlag,
15589 TrustLineFlags::AuthorizedToMaintainLiabilitiesFlag,
15590 TrustLineFlags::TrustlineClawbackEnabledFlag,
15591 ];
15592 pub const VARIANTS_STR: [&'static str; 3] = [
15593 "AuthorizedFlag",
15594 "AuthorizedToMaintainLiabilitiesFlag",
15595 "TrustlineClawbackEnabledFlag",
15596 ];
15597
15598 #[must_use]
15599 pub const fn name(&self) -> &'static str {
15600 match self {
15601 Self::AuthorizedFlag => "AuthorizedFlag",
15602 Self::AuthorizedToMaintainLiabilitiesFlag => "AuthorizedToMaintainLiabilitiesFlag",
15603 Self::TrustlineClawbackEnabledFlag => "TrustlineClawbackEnabledFlag",
15604 }
15605 }
15606
15607 #[must_use]
15608 pub const fn variants() -> [TrustLineFlags; 3] {
15609 Self::VARIANTS
15610 }
15611}
15612
15613impl Name for TrustLineFlags {
15614 #[must_use]
15615 fn name(&self) -> &'static str {
15616 Self::name(self)
15617 }
15618}
15619
15620impl Variants<TrustLineFlags> for TrustLineFlags {
15621 fn variants() -> slice::Iter<'static, TrustLineFlags> {
15622 Self::VARIANTS.iter()
15623 }
15624}
15625
15626impl Enum for TrustLineFlags {}
15627
15628impl fmt::Display for TrustLineFlags {
15629 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15630 f.write_str(self.name())
15631 }
15632}
15633
15634impl TryFrom<i32> for TrustLineFlags {
15635 type Error = Error;
15636
15637 fn try_from(i: i32) -> Result<Self, Error> {
15638 let e = match i {
15639 1 => TrustLineFlags::AuthorizedFlag,
15640 2 => TrustLineFlags::AuthorizedToMaintainLiabilitiesFlag,
15641 4 => TrustLineFlags::TrustlineClawbackEnabledFlag,
15642 #[allow(unreachable_patterns)]
15643 _ => return Err(Error::Invalid),
15644 };
15645 Ok(e)
15646 }
15647}
15648
15649impl From<TrustLineFlags> for i32 {
15650 #[must_use]
15651 fn from(e: TrustLineFlags) -> Self {
15652 e as Self
15653 }
15654}
15655
15656impl ReadXdr for TrustLineFlags {
15657 #[cfg(feature = "std")]
15658 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15659 r.with_limited_depth(|r| {
15660 let e = i32::read_xdr(r)?;
15661 let v: Self = e.try_into()?;
15662 Ok(v)
15663 })
15664 }
15665}
15666
15667impl WriteXdr for TrustLineFlags {
15668 #[cfg(feature = "std")]
15669 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15670 w.with_limited_depth(|w| {
15671 let i: i32 = (*self).into();
15672 i.write_xdr(w)
15673 })
15674 }
15675}
15676
15677pub const MASK_TRUSTLINE_FLAGS: u64 = 1;
15684
15685pub const MASK_TRUSTLINE_FLAGS_V13: u64 = 3;
15692
15693pub const MASK_TRUSTLINE_FLAGS_V17: u64 = 7;
15700
15701#[cfg_attr(feature = "alloc", derive(Default))]
15712#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15713#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15714#[cfg_attr(
15715 all(feature = "serde", feature = "alloc"),
15716 derive(serde::Serialize, serde::Deserialize),
15717 serde(rename_all = "snake_case")
15718)]
15719#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15720#[repr(i32)]
15721pub enum LiquidityPoolType {
15722 #[cfg_attr(feature = "alloc", default)]
15723 LiquidityPoolConstantProduct = 0,
15724}
15725
15726impl LiquidityPoolType {
15727 pub const VARIANTS: [LiquidityPoolType; 1] = [LiquidityPoolType::LiquidityPoolConstantProduct];
15728 pub const VARIANTS_STR: [&'static str; 1] = ["LiquidityPoolConstantProduct"];
15729
15730 #[must_use]
15731 pub const fn name(&self) -> &'static str {
15732 match self {
15733 Self::LiquidityPoolConstantProduct => "LiquidityPoolConstantProduct",
15734 }
15735 }
15736
15737 #[must_use]
15738 pub const fn variants() -> [LiquidityPoolType; 1] {
15739 Self::VARIANTS
15740 }
15741}
15742
15743impl Name for LiquidityPoolType {
15744 #[must_use]
15745 fn name(&self) -> &'static str {
15746 Self::name(self)
15747 }
15748}
15749
15750impl Variants<LiquidityPoolType> for LiquidityPoolType {
15751 fn variants() -> slice::Iter<'static, LiquidityPoolType> {
15752 Self::VARIANTS.iter()
15753 }
15754}
15755
15756impl Enum for LiquidityPoolType {}
15757
15758impl fmt::Display for LiquidityPoolType {
15759 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15760 f.write_str(self.name())
15761 }
15762}
15763
15764impl TryFrom<i32> for LiquidityPoolType {
15765 type Error = Error;
15766
15767 fn try_from(i: i32) -> Result<Self, Error> {
15768 let e = match i {
15769 0 => LiquidityPoolType::LiquidityPoolConstantProduct,
15770 #[allow(unreachable_patterns)]
15771 _ => return Err(Error::Invalid),
15772 };
15773 Ok(e)
15774 }
15775}
15776
15777impl From<LiquidityPoolType> for i32 {
15778 #[must_use]
15779 fn from(e: LiquidityPoolType) -> Self {
15780 e as Self
15781 }
15782}
15783
15784impl ReadXdr for LiquidityPoolType {
15785 #[cfg(feature = "std")]
15786 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15787 r.with_limited_depth(|r| {
15788 let e = i32::read_xdr(r)?;
15789 let v: Self = e.try_into()?;
15790 Ok(v)
15791 })
15792 }
15793}
15794
15795impl WriteXdr for LiquidityPoolType {
15796 #[cfg(feature = "std")]
15797 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15798 w.with_limited_depth(|w| {
15799 let i: i32 = (*self).into();
15800 i.write_xdr(w)
15801 })
15802 }
15803}
15804
15805#[cfg_eval::cfg_eval]
15828#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15829#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15830#[cfg_attr(
15831 all(feature = "serde", feature = "alloc"),
15832 serde_with::serde_as,
15833 derive(serde::Serialize, serde::Deserialize),
15834 serde(rename_all = "snake_case")
15835)]
15836#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15837#[allow(clippy::large_enum_variant)]
15838pub enum TrustLineAsset {
15839 Native,
15840 CreditAlphanum4(AlphaNum4),
15841 CreditAlphanum12(AlphaNum12),
15842 PoolShare(PoolId),
15843}
15844
15845#[cfg(feature = "alloc")]
15846impl Default for TrustLineAsset {
15847 fn default() -> Self {
15848 Self::Native
15849 }
15850}
15851
15852impl TrustLineAsset {
15853 pub const VARIANTS: [AssetType; 4] = [
15854 AssetType::Native,
15855 AssetType::CreditAlphanum4,
15856 AssetType::CreditAlphanum12,
15857 AssetType::PoolShare,
15858 ];
15859 pub const VARIANTS_STR: [&'static str; 4] =
15860 ["Native", "CreditAlphanum4", "CreditAlphanum12", "PoolShare"];
15861
15862 #[must_use]
15863 pub const fn name(&self) -> &'static str {
15864 match self {
15865 Self::Native => "Native",
15866 Self::CreditAlphanum4(_) => "CreditAlphanum4",
15867 Self::CreditAlphanum12(_) => "CreditAlphanum12",
15868 Self::PoolShare(_) => "PoolShare",
15869 }
15870 }
15871
15872 #[must_use]
15873 pub const fn discriminant(&self) -> AssetType {
15874 #[allow(clippy::match_same_arms)]
15875 match self {
15876 Self::Native => AssetType::Native,
15877 Self::CreditAlphanum4(_) => AssetType::CreditAlphanum4,
15878 Self::CreditAlphanum12(_) => AssetType::CreditAlphanum12,
15879 Self::PoolShare(_) => AssetType::PoolShare,
15880 }
15881 }
15882
15883 #[must_use]
15884 pub const fn variants() -> [AssetType; 4] {
15885 Self::VARIANTS
15886 }
15887}
15888
15889impl Name for TrustLineAsset {
15890 #[must_use]
15891 fn name(&self) -> &'static str {
15892 Self::name(self)
15893 }
15894}
15895
15896impl Discriminant<AssetType> for TrustLineAsset {
15897 #[must_use]
15898 fn discriminant(&self) -> AssetType {
15899 Self::discriminant(self)
15900 }
15901}
15902
15903impl Variants<AssetType> for TrustLineAsset {
15904 fn variants() -> slice::Iter<'static, AssetType> {
15905 Self::VARIANTS.iter()
15906 }
15907}
15908
15909impl Union<AssetType> for TrustLineAsset {}
15910
15911impl ReadXdr for TrustLineAsset {
15912 #[cfg(feature = "std")]
15913 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
15914 r.with_limited_depth(|r| {
15915 let dv: AssetType = <AssetType as ReadXdr>::read_xdr(r)?;
15916 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
15917 let v = match dv {
15918 AssetType::Native => Self::Native,
15919 AssetType::CreditAlphanum4 => Self::CreditAlphanum4(AlphaNum4::read_xdr(r)?),
15920 AssetType::CreditAlphanum12 => Self::CreditAlphanum12(AlphaNum12::read_xdr(r)?),
15921 AssetType::PoolShare => Self::PoolShare(PoolId::read_xdr(r)?),
15922 #[allow(unreachable_patterns)]
15923 _ => return Err(Error::Invalid),
15924 };
15925 Ok(v)
15926 })
15927 }
15928}
15929
15930impl WriteXdr for TrustLineAsset {
15931 #[cfg(feature = "std")]
15932 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
15933 w.with_limited_depth(|w| {
15934 self.discriminant().write_xdr(w)?;
15935 #[allow(clippy::match_same_arms)]
15936 match self {
15937 Self::Native => ().write_xdr(w)?,
15938 Self::CreditAlphanum4(v) => v.write_xdr(w)?,
15939 Self::CreditAlphanum12(v) => v.write_xdr(w)?,
15940 Self::PoolShare(v) => v.write_xdr(w)?,
15941 };
15942 Ok(())
15943 })
15944 }
15945}
15946
15947#[cfg_eval::cfg_eval]
15959#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
15960#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
15961#[cfg_attr(
15962 all(feature = "serde", feature = "alloc"),
15963 serde_with::serde_as,
15964 derive(serde::Serialize, serde::Deserialize),
15965 serde(rename_all = "snake_case")
15966)]
15967#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
15968#[allow(clippy::large_enum_variant)]
15969pub enum TrustLineEntryExtensionV2Ext {
15970 V0,
15971}
15972
15973#[cfg(feature = "alloc")]
15974impl Default for TrustLineEntryExtensionV2Ext {
15975 fn default() -> Self {
15976 Self::V0
15977 }
15978}
15979
15980impl TrustLineEntryExtensionV2Ext {
15981 pub const VARIANTS: [i32; 1] = [0];
15982 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
15983
15984 #[must_use]
15985 pub const fn name(&self) -> &'static str {
15986 match self {
15987 Self::V0 => "V0",
15988 }
15989 }
15990
15991 #[must_use]
15992 pub const fn discriminant(&self) -> i32 {
15993 #[allow(clippy::match_same_arms)]
15994 match self {
15995 Self::V0 => 0,
15996 }
15997 }
15998
15999 #[must_use]
16000 pub const fn variants() -> [i32; 1] {
16001 Self::VARIANTS
16002 }
16003}
16004
16005impl Name for TrustLineEntryExtensionV2Ext {
16006 #[must_use]
16007 fn name(&self) -> &'static str {
16008 Self::name(self)
16009 }
16010}
16011
16012impl Discriminant<i32> for TrustLineEntryExtensionV2Ext {
16013 #[must_use]
16014 fn discriminant(&self) -> i32 {
16015 Self::discriminant(self)
16016 }
16017}
16018
16019impl Variants<i32> for TrustLineEntryExtensionV2Ext {
16020 fn variants() -> slice::Iter<'static, i32> {
16021 Self::VARIANTS.iter()
16022 }
16023}
16024
16025impl Union<i32> for TrustLineEntryExtensionV2Ext {}
16026
16027impl ReadXdr for TrustLineEntryExtensionV2Ext {
16028 #[cfg(feature = "std")]
16029 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16030 r.with_limited_depth(|r| {
16031 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
16032 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
16033 let v = match dv {
16034 0 => Self::V0,
16035 #[allow(unreachable_patterns)]
16036 _ => return Err(Error::Invalid),
16037 };
16038 Ok(v)
16039 })
16040 }
16041}
16042
16043impl WriteXdr for TrustLineEntryExtensionV2Ext {
16044 #[cfg(feature = "std")]
16045 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16046 w.with_limited_depth(|w| {
16047 self.discriminant().write_xdr(w)?;
16048 #[allow(clippy::match_same_arms)]
16049 match self {
16050 Self::V0 => ().write_xdr(w)?,
16051 };
16052 Ok(())
16053 })
16054 }
16055}
16056
16057#[cfg_attr(feature = "alloc", derive(Default))]
16074#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16075#[cfg_eval::cfg_eval]
16076#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16077#[cfg_attr(
16078 all(feature = "serde", feature = "alloc"),
16079 serde_with::serde_as,
16080 derive(serde::Serialize, serde::Deserialize),
16081 serde(rename_all = "snake_case")
16082)]
16083#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16084pub struct TrustLineEntryExtensionV2 {
16085 pub liquidity_pool_use_count: i32,
16086 pub ext: TrustLineEntryExtensionV2Ext,
16087}
16088
16089impl ReadXdr for TrustLineEntryExtensionV2 {
16090 #[cfg(feature = "std")]
16091 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16092 r.with_limited_depth(|r| {
16093 Ok(Self {
16094 liquidity_pool_use_count: i32::read_xdr(r)?,
16095 ext: TrustLineEntryExtensionV2Ext::read_xdr(r)?,
16096 })
16097 })
16098 }
16099}
16100
16101impl WriteXdr for TrustLineEntryExtensionV2 {
16102 #[cfg(feature = "std")]
16103 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16104 w.with_limited_depth(|w| {
16105 self.liquidity_pool_use_count.write_xdr(w)?;
16106 self.ext.write_xdr(w)?;
16107 Ok(())
16108 })
16109 }
16110}
16111
16112#[cfg_eval::cfg_eval]
16126#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16127#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16128#[cfg_attr(
16129 all(feature = "serde", feature = "alloc"),
16130 serde_with::serde_as,
16131 derive(serde::Serialize, serde::Deserialize),
16132 serde(rename_all = "snake_case")
16133)]
16134#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16135#[allow(clippy::large_enum_variant)]
16136pub enum TrustLineEntryV1Ext {
16137 V0,
16138 V2(TrustLineEntryExtensionV2),
16139}
16140
16141#[cfg(feature = "alloc")]
16142impl Default for TrustLineEntryV1Ext {
16143 fn default() -> Self {
16144 Self::V0
16145 }
16146}
16147
16148impl TrustLineEntryV1Ext {
16149 pub const VARIANTS: [i32; 2] = [0, 2];
16150 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V2"];
16151
16152 #[must_use]
16153 pub const fn name(&self) -> &'static str {
16154 match self {
16155 Self::V0 => "V0",
16156 Self::V2(_) => "V2",
16157 }
16158 }
16159
16160 #[must_use]
16161 pub const fn discriminant(&self) -> i32 {
16162 #[allow(clippy::match_same_arms)]
16163 match self {
16164 Self::V0 => 0,
16165 Self::V2(_) => 2,
16166 }
16167 }
16168
16169 #[must_use]
16170 pub const fn variants() -> [i32; 2] {
16171 Self::VARIANTS
16172 }
16173}
16174
16175impl Name for TrustLineEntryV1Ext {
16176 #[must_use]
16177 fn name(&self) -> &'static str {
16178 Self::name(self)
16179 }
16180}
16181
16182impl Discriminant<i32> for TrustLineEntryV1Ext {
16183 #[must_use]
16184 fn discriminant(&self) -> i32 {
16185 Self::discriminant(self)
16186 }
16187}
16188
16189impl Variants<i32> for TrustLineEntryV1Ext {
16190 fn variants() -> slice::Iter<'static, i32> {
16191 Self::VARIANTS.iter()
16192 }
16193}
16194
16195impl Union<i32> for TrustLineEntryV1Ext {}
16196
16197impl ReadXdr for TrustLineEntryV1Ext {
16198 #[cfg(feature = "std")]
16199 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16200 r.with_limited_depth(|r| {
16201 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
16202 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
16203 let v = match dv {
16204 0 => Self::V0,
16205 2 => Self::V2(TrustLineEntryExtensionV2::read_xdr(r)?),
16206 #[allow(unreachable_patterns)]
16207 _ => return Err(Error::Invalid),
16208 };
16209 Ok(v)
16210 })
16211 }
16212}
16213
16214impl WriteXdr for TrustLineEntryV1Ext {
16215 #[cfg(feature = "std")]
16216 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16217 w.with_limited_depth(|w| {
16218 self.discriminant().write_xdr(w)?;
16219 #[allow(clippy::match_same_arms)]
16220 match self {
16221 Self::V0 => ().write_xdr(w)?,
16222 Self::V2(v) => v.write_xdr(w)?,
16223 };
16224 Ok(())
16225 })
16226 }
16227}
16228
16229#[cfg_attr(feature = "alloc", derive(Default))]
16248#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16249#[cfg_eval::cfg_eval]
16250#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16251#[cfg_attr(
16252 all(feature = "serde", feature = "alloc"),
16253 serde_with::serde_as,
16254 derive(serde::Serialize, serde::Deserialize),
16255 serde(rename_all = "snake_case")
16256)]
16257#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16258pub struct TrustLineEntryV1 {
16259 pub liabilities: Liabilities,
16260 pub ext: TrustLineEntryV1Ext,
16261}
16262
16263impl ReadXdr for TrustLineEntryV1 {
16264 #[cfg(feature = "std")]
16265 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16266 r.with_limited_depth(|r| {
16267 Ok(Self {
16268 liabilities: Liabilities::read_xdr(r)?,
16269 ext: TrustLineEntryV1Ext::read_xdr(r)?,
16270 })
16271 })
16272 }
16273}
16274
16275impl WriteXdr for TrustLineEntryV1 {
16276 #[cfg(feature = "std")]
16277 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16278 w.with_limited_depth(|w| {
16279 self.liabilities.write_xdr(w)?;
16280 self.ext.write_xdr(w)?;
16281 Ok(())
16282 })
16283 }
16284}
16285
16286#[cfg_eval::cfg_eval]
16312#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16313#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16314#[cfg_attr(
16315 all(feature = "serde", feature = "alloc"),
16316 serde_with::serde_as,
16317 derive(serde::Serialize, serde::Deserialize),
16318 serde(rename_all = "snake_case")
16319)]
16320#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16321#[allow(clippy::large_enum_variant)]
16322pub enum TrustLineEntryExt {
16323 V0,
16324 V1(TrustLineEntryV1),
16325}
16326
16327#[cfg(feature = "alloc")]
16328impl Default for TrustLineEntryExt {
16329 fn default() -> Self {
16330 Self::V0
16331 }
16332}
16333
16334impl TrustLineEntryExt {
16335 pub const VARIANTS: [i32; 2] = [0, 1];
16336 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
16337
16338 #[must_use]
16339 pub const fn name(&self) -> &'static str {
16340 match self {
16341 Self::V0 => "V0",
16342 Self::V1(_) => "V1",
16343 }
16344 }
16345
16346 #[must_use]
16347 pub const fn discriminant(&self) -> i32 {
16348 #[allow(clippy::match_same_arms)]
16349 match self {
16350 Self::V0 => 0,
16351 Self::V1(_) => 1,
16352 }
16353 }
16354
16355 #[must_use]
16356 pub const fn variants() -> [i32; 2] {
16357 Self::VARIANTS
16358 }
16359}
16360
16361impl Name for TrustLineEntryExt {
16362 #[must_use]
16363 fn name(&self) -> &'static str {
16364 Self::name(self)
16365 }
16366}
16367
16368impl Discriminant<i32> for TrustLineEntryExt {
16369 #[must_use]
16370 fn discriminant(&self) -> i32 {
16371 Self::discriminant(self)
16372 }
16373}
16374
16375impl Variants<i32> for TrustLineEntryExt {
16376 fn variants() -> slice::Iter<'static, i32> {
16377 Self::VARIANTS.iter()
16378 }
16379}
16380
16381impl Union<i32> for TrustLineEntryExt {}
16382
16383impl ReadXdr for TrustLineEntryExt {
16384 #[cfg(feature = "std")]
16385 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16386 r.with_limited_depth(|r| {
16387 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
16388 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
16389 let v = match dv {
16390 0 => Self::V0,
16391 1 => Self::V1(TrustLineEntryV1::read_xdr(r)?),
16392 #[allow(unreachable_patterns)]
16393 _ => return Err(Error::Invalid),
16394 };
16395 Ok(v)
16396 })
16397 }
16398}
16399
16400impl WriteXdr for TrustLineEntryExt {
16401 #[cfg(feature = "std")]
16402 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16403 w.with_limited_depth(|w| {
16404 self.discriminant().write_xdr(w)?;
16405 #[allow(clippy::match_same_arms)]
16406 match self {
16407 Self::V0 => ().write_xdr(w)?,
16408 Self::V1(v) => v.write_xdr(w)?,
16409 };
16410 Ok(())
16411 })
16412 }
16413}
16414
16415#[cfg_attr(feature = "alloc", derive(Default))]
16453#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16454#[cfg_eval::cfg_eval]
16455#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16456#[cfg_attr(
16457 all(feature = "serde", feature = "alloc"),
16458 serde_with::serde_as,
16459 derive(serde::Serialize, serde::Deserialize),
16460 serde(rename_all = "snake_case")
16461)]
16462#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16463pub struct TrustLineEntry {
16464 pub account_id: AccountId,
16465 pub asset: TrustLineAsset,
16466 #[cfg_attr(
16467 all(feature = "serde", feature = "alloc"),
16468 serde_as(as = "NumberOrString")
16469 )]
16470 pub balance: i64,
16471 #[cfg_attr(
16472 all(feature = "serde", feature = "alloc"),
16473 serde_as(as = "NumberOrString")
16474 )]
16475 pub limit: i64,
16476 pub flags: u32,
16477 pub ext: TrustLineEntryExt,
16478}
16479
16480impl ReadXdr for TrustLineEntry {
16481 #[cfg(feature = "std")]
16482 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16483 r.with_limited_depth(|r| {
16484 Ok(Self {
16485 account_id: AccountId::read_xdr(r)?,
16486 asset: TrustLineAsset::read_xdr(r)?,
16487 balance: i64::read_xdr(r)?,
16488 limit: i64::read_xdr(r)?,
16489 flags: u32::read_xdr(r)?,
16490 ext: TrustLineEntryExt::read_xdr(r)?,
16491 })
16492 })
16493 }
16494}
16495
16496impl WriteXdr for TrustLineEntry {
16497 #[cfg(feature = "std")]
16498 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16499 w.with_limited_depth(|w| {
16500 self.account_id.write_xdr(w)?;
16501 self.asset.write_xdr(w)?;
16502 self.balance.write_xdr(w)?;
16503 self.limit.write_xdr(w)?;
16504 self.flags.write_xdr(w)?;
16505 self.ext.write_xdr(w)?;
16506 Ok(())
16507 })
16508 }
16509}
16510
16511#[cfg_attr(feature = "alloc", derive(Default))]
16524#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16525#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16526#[cfg_attr(
16527 all(feature = "serde", feature = "alloc"),
16528 derive(serde::Serialize, serde::Deserialize),
16529 serde(rename_all = "snake_case")
16530)]
16531#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16532#[repr(i32)]
16533pub enum OfferEntryFlags {
16534 #[cfg_attr(feature = "alloc", default)]
16535 PassiveFlag = 1,
16536}
16537
16538impl OfferEntryFlags {
16539 pub const VARIANTS: [OfferEntryFlags; 1] = [OfferEntryFlags::PassiveFlag];
16540 pub const VARIANTS_STR: [&'static str; 1] = ["PassiveFlag"];
16541
16542 #[must_use]
16543 pub const fn name(&self) -> &'static str {
16544 match self {
16545 Self::PassiveFlag => "PassiveFlag",
16546 }
16547 }
16548
16549 #[must_use]
16550 pub const fn variants() -> [OfferEntryFlags; 1] {
16551 Self::VARIANTS
16552 }
16553}
16554
16555impl Name for OfferEntryFlags {
16556 #[must_use]
16557 fn name(&self) -> &'static str {
16558 Self::name(self)
16559 }
16560}
16561
16562impl Variants<OfferEntryFlags> for OfferEntryFlags {
16563 fn variants() -> slice::Iter<'static, OfferEntryFlags> {
16564 Self::VARIANTS.iter()
16565 }
16566}
16567
16568impl Enum for OfferEntryFlags {}
16569
16570impl fmt::Display for OfferEntryFlags {
16571 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16572 f.write_str(self.name())
16573 }
16574}
16575
16576impl TryFrom<i32> for OfferEntryFlags {
16577 type Error = Error;
16578
16579 fn try_from(i: i32) -> Result<Self, Error> {
16580 let e = match i {
16581 1 => OfferEntryFlags::PassiveFlag,
16582 #[allow(unreachable_patterns)]
16583 _ => return Err(Error::Invalid),
16584 };
16585 Ok(e)
16586 }
16587}
16588
16589impl From<OfferEntryFlags> for i32 {
16590 #[must_use]
16591 fn from(e: OfferEntryFlags) -> Self {
16592 e as Self
16593 }
16594}
16595
16596impl ReadXdr for OfferEntryFlags {
16597 #[cfg(feature = "std")]
16598 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16599 r.with_limited_depth(|r| {
16600 let e = i32::read_xdr(r)?;
16601 let v: Self = e.try_into()?;
16602 Ok(v)
16603 })
16604 }
16605}
16606
16607impl WriteXdr for OfferEntryFlags {
16608 #[cfg(feature = "std")]
16609 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16610 w.with_limited_depth(|w| {
16611 let i: i32 = (*self).into();
16612 i.write_xdr(w)
16613 })
16614 }
16615}
16616
16617pub const MASK_OFFERENTRY_FLAGS: u64 = 1;
16624
16625#[cfg_eval::cfg_eval]
16637#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16638#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16639#[cfg_attr(
16640 all(feature = "serde", feature = "alloc"),
16641 serde_with::serde_as,
16642 derive(serde::Serialize, serde::Deserialize),
16643 serde(rename_all = "snake_case")
16644)]
16645#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16646#[allow(clippy::large_enum_variant)]
16647pub enum OfferEntryExt {
16648 V0,
16649}
16650
16651#[cfg(feature = "alloc")]
16652impl Default for OfferEntryExt {
16653 fn default() -> Self {
16654 Self::V0
16655 }
16656}
16657
16658impl OfferEntryExt {
16659 pub const VARIANTS: [i32; 1] = [0];
16660 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
16661
16662 #[must_use]
16663 pub const fn name(&self) -> &'static str {
16664 match self {
16665 Self::V0 => "V0",
16666 }
16667 }
16668
16669 #[must_use]
16670 pub const fn discriminant(&self) -> i32 {
16671 #[allow(clippy::match_same_arms)]
16672 match self {
16673 Self::V0 => 0,
16674 }
16675 }
16676
16677 #[must_use]
16678 pub const fn variants() -> [i32; 1] {
16679 Self::VARIANTS
16680 }
16681}
16682
16683impl Name for OfferEntryExt {
16684 #[must_use]
16685 fn name(&self) -> &'static str {
16686 Self::name(self)
16687 }
16688}
16689
16690impl Discriminant<i32> for OfferEntryExt {
16691 #[must_use]
16692 fn discriminant(&self) -> i32 {
16693 Self::discriminant(self)
16694 }
16695}
16696
16697impl Variants<i32> for OfferEntryExt {
16698 fn variants() -> slice::Iter<'static, i32> {
16699 Self::VARIANTS.iter()
16700 }
16701}
16702
16703impl Union<i32> for OfferEntryExt {}
16704
16705impl ReadXdr for OfferEntryExt {
16706 #[cfg(feature = "std")]
16707 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16708 r.with_limited_depth(|r| {
16709 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
16710 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
16711 let v = match dv {
16712 0 => Self::V0,
16713 #[allow(unreachable_patterns)]
16714 _ => return Err(Error::Invalid),
16715 };
16716 Ok(v)
16717 })
16718 }
16719}
16720
16721impl WriteXdr for OfferEntryExt {
16722 #[cfg(feature = "std")]
16723 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16724 w.with_limited_depth(|w| {
16725 self.discriminant().write_xdr(w)?;
16726 #[allow(clippy::match_same_arms)]
16727 match self {
16728 Self::V0 => ().write_xdr(w)?,
16729 };
16730 Ok(())
16731 })
16732 }
16733}
16734
16735#[cfg_attr(feature = "alloc", derive(Default))]
16765#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16766#[cfg_eval::cfg_eval]
16767#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16768#[cfg_attr(
16769 all(feature = "serde", feature = "alloc"),
16770 serde_with::serde_as,
16771 derive(serde::Serialize, serde::Deserialize),
16772 serde(rename_all = "snake_case")
16773)]
16774#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16775pub struct OfferEntry {
16776 pub seller_id: AccountId,
16777 #[cfg_attr(
16778 all(feature = "serde", feature = "alloc"),
16779 serde_as(as = "NumberOrString")
16780 )]
16781 pub offer_id: i64,
16782 pub selling: Asset,
16783 pub buying: Asset,
16784 #[cfg_attr(
16785 all(feature = "serde", feature = "alloc"),
16786 serde_as(as = "NumberOrString")
16787 )]
16788 pub amount: i64,
16789 pub price: Price,
16790 pub flags: u32,
16791 pub ext: OfferEntryExt,
16792}
16793
16794impl ReadXdr for OfferEntry {
16795 #[cfg(feature = "std")]
16796 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16797 r.with_limited_depth(|r| {
16798 Ok(Self {
16799 seller_id: AccountId::read_xdr(r)?,
16800 offer_id: i64::read_xdr(r)?,
16801 selling: Asset::read_xdr(r)?,
16802 buying: Asset::read_xdr(r)?,
16803 amount: i64::read_xdr(r)?,
16804 price: Price::read_xdr(r)?,
16805 flags: u32::read_xdr(r)?,
16806 ext: OfferEntryExt::read_xdr(r)?,
16807 })
16808 })
16809 }
16810}
16811
16812impl WriteXdr for OfferEntry {
16813 #[cfg(feature = "std")]
16814 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16815 w.with_limited_depth(|w| {
16816 self.seller_id.write_xdr(w)?;
16817 self.offer_id.write_xdr(w)?;
16818 self.selling.write_xdr(w)?;
16819 self.buying.write_xdr(w)?;
16820 self.amount.write_xdr(w)?;
16821 self.price.write_xdr(w)?;
16822 self.flags.write_xdr(w)?;
16823 self.ext.write_xdr(w)?;
16824 Ok(())
16825 })
16826 }
16827}
16828
16829#[cfg_eval::cfg_eval]
16841#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16842#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16843#[cfg_attr(
16844 all(feature = "serde", feature = "alloc"),
16845 serde_with::serde_as,
16846 derive(serde::Serialize, serde::Deserialize),
16847 serde(rename_all = "snake_case")
16848)]
16849#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16850#[allow(clippy::large_enum_variant)]
16851pub enum DataEntryExt {
16852 V0,
16853}
16854
16855#[cfg(feature = "alloc")]
16856impl Default for DataEntryExt {
16857 fn default() -> Self {
16858 Self::V0
16859 }
16860}
16861
16862impl DataEntryExt {
16863 pub const VARIANTS: [i32; 1] = [0];
16864 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
16865
16866 #[must_use]
16867 pub const fn name(&self) -> &'static str {
16868 match self {
16869 Self::V0 => "V0",
16870 }
16871 }
16872
16873 #[must_use]
16874 pub const fn discriminant(&self) -> i32 {
16875 #[allow(clippy::match_same_arms)]
16876 match self {
16877 Self::V0 => 0,
16878 }
16879 }
16880
16881 #[must_use]
16882 pub const fn variants() -> [i32; 1] {
16883 Self::VARIANTS
16884 }
16885}
16886
16887impl Name for DataEntryExt {
16888 #[must_use]
16889 fn name(&self) -> &'static str {
16890 Self::name(self)
16891 }
16892}
16893
16894impl Discriminant<i32> for DataEntryExt {
16895 #[must_use]
16896 fn discriminant(&self) -> i32 {
16897 Self::discriminant(self)
16898 }
16899}
16900
16901impl Variants<i32> for DataEntryExt {
16902 fn variants() -> slice::Iter<'static, i32> {
16903 Self::VARIANTS.iter()
16904 }
16905}
16906
16907impl Union<i32> for DataEntryExt {}
16908
16909impl ReadXdr for DataEntryExt {
16910 #[cfg(feature = "std")]
16911 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16912 r.with_limited_depth(|r| {
16913 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
16914 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
16915 let v = match dv {
16916 0 => Self::V0,
16917 #[allow(unreachable_patterns)]
16918 _ => return Err(Error::Invalid),
16919 };
16920 Ok(v)
16921 })
16922 }
16923}
16924
16925impl WriteXdr for DataEntryExt {
16926 #[cfg(feature = "std")]
16927 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16928 w.with_limited_depth(|w| {
16929 self.discriminant().write_xdr(w)?;
16930 #[allow(clippy::match_same_arms)]
16931 match self {
16932 Self::V0 => ().write_xdr(w)?,
16933 };
16934 Ok(())
16935 })
16936 }
16937}
16938
16939#[cfg_attr(feature = "alloc", derive(Default))]
16959#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
16960#[cfg_eval::cfg_eval]
16961#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
16962#[cfg_attr(
16963 all(feature = "serde", feature = "alloc"),
16964 serde_with::serde_as,
16965 derive(serde::Serialize, serde::Deserialize),
16966 serde(rename_all = "snake_case")
16967)]
16968#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
16969pub struct DataEntry {
16970 pub account_id: AccountId,
16971 pub data_name: String64,
16972 pub data_value: DataValue,
16973 pub ext: DataEntryExt,
16974}
16975
16976impl ReadXdr for DataEntry {
16977 #[cfg(feature = "std")]
16978 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
16979 r.with_limited_depth(|r| {
16980 Ok(Self {
16981 account_id: AccountId::read_xdr(r)?,
16982 data_name: String64::read_xdr(r)?,
16983 data_value: DataValue::read_xdr(r)?,
16984 ext: DataEntryExt::read_xdr(r)?,
16985 })
16986 })
16987 }
16988}
16989
16990impl WriteXdr for DataEntry {
16991 #[cfg(feature = "std")]
16992 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
16993 w.with_limited_depth(|w| {
16994 self.account_id.write_xdr(w)?;
16995 self.data_name.write_xdr(w)?;
16996 self.data_value.write_xdr(w)?;
16997 self.ext.write_xdr(w)?;
16998 Ok(())
16999 })
17000 }
17001}
17002
17003#[cfg_attr(feature = "alloc", derive(Default))]
17019#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17020#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17021#[cfg_attr(
17022 all(feature = "serde", feature = "alloc"),
17023 derive(serde::Serialize, serde::Deserialize),
17024 serde(rename_all = "snake_case")
17025)]
17026#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17027#[repr(i32)]
17028pub enum ClaimPredicateType {
17029 #[cfg_attr(feature = "alloc", default)]
17030 Unconditional = 0,
17031 And = 1,
17032 Or = 2,
17033 Not = 3,
17034 BeforeAbsoluteTime = 4,
17035 BeforeRelativeTime = 5,
17036}
17037
17038impl ClaimPredicateType {
17039 pub const VARIANTS: [ClaimPredicateType; 6] = [
17040 ClaimPredicateType::Unconditional,
17041 ClaimPredicateType::And,
17042 ClaimPredicateType::Or,
17043 ClaimPredicateType::Not,
17044 ClaimPredicateType::BeforeAbsoluteTime,
17045 ClaimPredicateType::BeforeRelativeTime,
17046 ];
17047 pub const VARIANTS_STR: [&'static str; 6] = [
17048 "Unconditional",
17049 "And",
17050 "Or",
17051 "Not",
17052 "BeforeAbsoluteTime",
17053 "BeforeRelativeTime",
17054 ];
17055
17056 #[must_use]
17057 pub const fn name(&self) -> &'static str {
17058 match self {
17059 Self::Unconditional => "Unconditional",
17060 Self::And => "And",
17061 Self::Or => "Or",
17062 Self::Not => "Not",
17063 Self::BeforeAbsoluteTime => "BeforeAbsoluteTime",
17064 Self::BeforeRelativeTime => "BeforeRelativeTime",
17065 }
17066 }
17067
17068 #[must_use]
17069 pub const fn variants() -> [ClaimPredicateType; 6] {
17070 Self::VARIANTS
17071 }
17072}
17073
17074impl Name for ClaimPredicateType {
17075 #[must_use]
17076 fn name(&self) -> &'static str {
17077 Self::name(self)
17078 }
17079}
17080
17081impl Variants<ClaimPredicateType> for ClaimPredicateType {
17082 fn variants() -> slice::Iter<'static, ClaimPredicateType> {
17083 Self::VARIANTS.iter()
17084 }
17085}
17086
17087impl Enum for ClaimPredicateType {}
17088
17089impl fmt::Display for ClaimPredicateType {
17090 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17091 f.write_str(self.name())
17092 }
17093}
17094
17095impl TryFrom<i32> for ClaimPredicateType {
17096 type Error = Error;
17097
17098 fn try_from(i: i32) -> Result<Self, Error> {
17099 let e = match i {
17100 0 => ClaimPredicateType::Unconditional,
17101 1 => ClaimPredicateType::And,
17102 2 => ClaimPredicateType::Or,
17103 3 => ClaimPredicateType::Not,
17104 4 => ClaimPredicateType::BeforeAbsoluteTime,
17105 5 => ClaimPredicateType::BeforeRelativeTime,
17106 #[allow(unreachable_patterns)]
17107 _ => return Err(Error::Invalid),
17108 };
17109 Ok(e)
17110 }
17111}
17112
17113impl From<ClaimPredicateType> for i32 {
17114 #[must_use]
17115 fn from(e: ClaimPredicateType) -> Self {
17116 e as Self
17117 }
17118}
17119
17120impl ReadXdr for ClaimPredicateType {
17121 #[cfg(feature = "std")]
17122 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17123 r.with_limited_depth(|r| {
17124 let e = i32::read_xdr(r)?;
17125 let v: Self = e.try_into()?;
17126 Ok(v)
17127 })
17128 }
17129}
17130
17131impl WriteXdr for ClaimPredicateType {
17132 #[cfg(feature = "std")]
17133 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17134 w.with_limited_depth(|w| {
17135 let i: i32 = (*self).into();
17136 i.write_xdr(w)
17137 })
17138 }
17139}
17140
17141#[cfg_eval::cfg_eval]
17164#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17165#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17166#[cfg_attr(
17167 all(feature = "serde", feature = "alloc"),
17168 serde_with::serde_as,
17169 derive(serde::Serialize, serde::Deserialize),
17170 serde(rename_all = "snake_case")
17171)]
17172#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17173#[allow(clippy::large_enum_variant)]
17174pub enum ClaimPredicate {
17175 Unconditional,
17176 And(VecM<ClaimPredicate, 2>),
17177 Or(VecM<ClaimPredicate, 2>),
17178 Not(Option<Box<ClaimPredicate>>),
17179 BeforeAbsoluteTime(
17180 #[cfg_attr(
17181 all(feature = "serde", feature = "alloc"),
17182 serde_as(as = "NumberOrString")
17183 )]
17184 i64,
17185 ),
17186 BeforeRelativeTime(
17187 #[cfg_attr(
17188 all(feature = "serde", feature = "alloc"),
17189 serde_as(as = "NumberOrString")
17190 )]
17191 i64,
17192 ),
17193}
17194
17195#[cfg(feature = "alloc")]
17196impl Default for ClaimPredicate {
17197 fn default() -> Self {
17198 Self::Unconditional
17199 }
17200}
17201
17202impl ClaimPredicate {
17203 pub const VARIANTS: [ClaimPredicateType; 6] = [
17204 ClaimPredicateType::Unconditional,
17205 ClaimPredicateType::And,
17206 ClaimPredicateType::Or,
17207 ClaimPredicateType::Not,
17208 ClaimPredicateType::BeforeAbsoluteTime,
17209 ClaimPredicateType::BeforeRelativeTime,
17210 ];
17211 pub const VARIANTS_STR: [&'static str; 6] = [
17212 "Unconditional",
17213 "And",
17214 "Or",
17215 "Not",
17216 "BeforeAbsoluteTime",
17217 "BeforeRelativeTime",
17218 ];
17219
17220 #[must_use]
17221 pub const fn name(&self) -> &'static str {
17222 match self {
17223 Self::Unconditional => "Unconditional",
17224 Self::And(_) => "And",
17225 Self::Or(_) => "Or",
17226 Self::Not(_) => "Not",
17227 Self::BeforeAbsoluteTime(_) => "BeforeAbsoluteTime",
17228 Self::BeforeRelativeTime(_) => "BeforeRelativeTime",
17229 }
17230 }
17231
17232 #[must_use]
17233 pub const fn discriminant(&self) -> ClaimPredicateType {
17234 #[allow(clippy::match_same_arms)]
17235 match self {
17236 Self::Unconditional => ClaimPredicateType::Unconditional,
17237 Self::And(_) => ClaimPredicateType::And,
17238 Self::Or(_) => ClaimPredicateType::Or,
17239 Self::Not(_) => ClaimPredicateType::Not,
17240 Self::BeforeAbsoluteTime(_) => ClaimPredicateType::BeforeAbsoluteTime,
17241 Self::BeforeRelativeTime(_) => ClaimPredicateType::BeforeRelativeTime,
17242 }
17243 }
17244
17245 #[must_use]
17246 pub const fn variants() -> [ClaimPredicateType; 6] {
17247 Self::VARIANTS
17248 }
17249}
17250
17251impl Name for ClaimPredicate {
17252 #[must_use]
17253 fn name(&self) -> &'static str {
17254 Self::name(self)
17255 }
17256}
17257
17258impl Discriminant<ClaimPredicateType> for ClaimPredicate {
17259 #[must_use]
17260 fn discriminant(&self) -> ClaimPredicateType {
17261 Self::discriminant(self)
17262 }
17263}
17264
17265impl Variants<ClaimPredicateType> for ClaimPredicate {
17266 fn variants() -> slice::Iter<'static, ClaimPredicateType> {
17267 Self::VARIANTS.iter()
17268 }
17269}
17270
17271impl Union<ClaimPredicateType> for ClaimPredicate {}
17272
17273impl ReadXdr for ClaimPredicate {
17274 #[cfg(feature = "std")]
17275 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17276 r.with_limited_depth(|r| {
17277 let dv: ClaimPredicateType = <ClaimPredicateType as ReadXdr>::read_xdr(r)?;
17278 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
17279 let v = match dv {
17280 ClaimPredicateType::Unconditional => Self::Unconditional,
17281 ClaimPredicateType::And => Self::And(VecM::<ClaimPredicate, 2>::read_xdr(r)?),
17282 ClaimPredicateType::Or => Self::Or(VecM::<ClaimPredicate, 2>::read_xdr(r)?),
17283 ClaimPredicateType::Not => Self::Not(Option::<Box<ClaimPredicate>>::read_xdr(r)?),
17284 ClaimPredicateType::BeforeAbsoluteTime => {
17285 Self::BeforeAbsoluteTime(i64::read_xdr(r)?)
17286 }
17287 ClaimPredicateType::BeforeRelativeTime => {
17288 Self::BeforeRelativeTime(i64::read_xdr(r)?)
17289 }
17290 #[allow(unreachable_patterns)]
17291 _ => return Err(Error::Invalid),
17292 };
17293 Ok(v)
17294 })
17295 }
17296}
17297
17298impl WriteXdr for ClaimPredicate {
17299 #[cfg(feature = "std")]
17300 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17301 w.with_limited_depth(|w| {
17302 self.discriminant().write_xdr(w)?;
17303 #[allow(clippy::match_same_arms)]
17304 match self {
17305 Self::Unconditional => ().write_xdr(w)?,
17306 Self::And(v) => v.write_xdr(w)?,
17307 Self::Or(v) => v.write_xdr(w)?,
17308 Self::Not(v) => v.write_xdr(w)?,
17309 Self::BeforeAbsoluteTime(v) => v.write_xdr(w)?,
17310 Self::BeforeRelativeTime(v) => v.write_xdr(w)?,
17311 };
17312 Ok(())
17313 })
17314 }
17315}
17316
17317#[cfg_attr(feature = "alloc", derive(Default))]
17328#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17329#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17330#[cfg_attr(
17331 all(feature = "serde", feature = "alloc"),
17332 derive(serde::Serialize, serde::Deserialize),
17333 serde(rename_all = "snake_case")
17334)]
17335#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17336#[repr(i32)]
17337pub enum ClaimantType {
17338 #[cfg_attr(feature = "alloc", default)]
17339 ClaimantTypeV0 = 0,
17340}
17341
17342impl ClaimantType {
17343 pub const VARIANTS: [ClaimantType; 1] = [ClaimantType::ClaimantTypeV0];
17344 pub const VARIANTS_STR: [&'static str; 1] = ["ClaimantTypeV0"];
17345
17346 #[must_use]
17347 pub const fn name(&self) -> &'static str {
17348 match self {
17349 Self::ClaimantTypeV0 => "ClaimantTypeV0",
17350 }
17351 }
17352
17353 #[must_use]
17354 pub const fn variants() -> [ClaimantType; 1] {
17355 Self::VARIANTS
17356 }
17357}
17358
17359impl Name for ClaimantType {
17360 #[must_use]
17361 fn name(&self) -> &'static str {
17362 Self::name(self)
17363 }
17364}
17365
17366impl Variants<ClaimantType> for ClaimantType {
17367 fn variants() -> slice::Iter<'static, ClaimantType> {
17368 Self::VARIANTS.iter()
17369 }
17370}
17371
17372impl Enum for ClaimantType {}
17373
17374impl fmt::Display for ClaimantType {
17375 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17376 f.write_str(self.name())
17377 }
17378}
17379
17380impl TryFrom<i32> for ClaimantType {
17381 type Error = Error;
17382
17383 fn try_from(i: i32) -> Result<Self, Error> {
17384 let e = match i {
17385 0 => ClaimantType::ClaimantTypeV0,
17386 #[allow(unreachable_patterns)]
17387 _ => return Err(Error::Invalid),
17388 };
17389 Ok(e)
17390 }
17391}
17392
17393impl From<ClaimantType> for i32 {
17394 #[must_use]
17395 fn from(e: ClaimantType) -> Self {
17396 e as Self
17397 }
17398}
17399
17400impl ReadXdr for ClaimantType {
17401 #[cfg(feature = "std")]
17402 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17403 r.with_limited_depth(|r| {
17404 let e = i32::read_xdr(r)?;
17405 let v: Self = e.try_into()?;
17406 Ok(v)
17407 })
17408 }
17409}
17410
17411impl WriteXdr for ClaimantType {
17412 #[cfg(feature = "std")]
17413 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17414 w.with_limited_depth(|w| {
17415 let i: i32 = (*self).into();
17416 i.write_xdr(w)
17417 })
17418 }
17419}
17420
17421#[cfg_attr(feature = "alloc", derive(Default))]
17432#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17433#[cfg_eval::cfg_eval]
17434#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17435#[cfg_attr(
17436 all(feature = "serde", feature = "alloc"),
17437 serde_with::serde_as,
17438 derive(serde::Serialize, serde::Deserialize),
17439 serde(rename_all = "snake_case")
17440)]
17441#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17442pub struct ClaimantV0 {
17443 pub destination: AccountId,
17444 pub predicate: ClaimPredicate,
17445}
17446
17447impl ReadXdr for ClaimantV0 {
17448 #[cfg(feature = "std")]
17449 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17450 r.with_limited_depth(|r| {
17451 Ok(Self {
17452 destination: AccountId::read_xdr(r)?,
17453 predicate: ClaimPredicate::read_xdr(r)?,
17454 })
17455 })
17456 }
17457}
17458
17459impl WriteXdr for ClaimantV0 {
17460 #[cfg(feature = "std")]
17461 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17462 w.with_limited_depth(|w| {
17463 self.destination.write_xdr(w)?;
17464 self.predicate.write_xdr(w)?;
17465 Ok(())
17466 })
17467 }
17468}
17469
17470#[cfg_eval::cfg_eval]
17486#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17487#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17488#[cfg_attr(
17489 all(feature = "serde", feature = "alloc"),
17490 serde_with::serde_as,
17491 derive(serde::Serialize, serde::Deserialize),
17492 serde(rename_all = "snake_case")
17493)]
17494#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17495#[allow(clippy::large_enum_variant)]
17496pub enum Claimant {
17497 ClaimantTypeV0(ClaimantV0),
17498}
17499
17500#[cfg(feature = "alloc")]
17501impl Default for Claimant {
17502 fn default() -> Self {
17503 Self::ClaimantTypeV0(ClaimantV0::default())
17504 }
17505}
17506
17507impl Claimant {
17508 pub const VARIANTS: [ClaimantType; 1] = [ClaimantType::ClaimantTypeV0];
17509 pub const VARIANTS_STR: [&'static str; 1] = ["ClaimantTypeV0"];
17510
17511 #[must_use]
17512 pub const fn name(&self) -> &'static str {
17513 match self {
17514 Self::ClaimantTypeV0(_) => "ClaimantTypeV0",
17515 }
17516 }
17517
17518 #[must_use]
17519 pub const fn discriminant(&self) -> ClaimantType {
17520 #[allow(clippy::match_same_arms)]
17521 match self {
17522 Self::ClaimantTypeV0(_) => ClaimantType::ClaimantTypeV0,
17523 }
17524 }
17525
17526 #[must_use]
17527 pub const fn variants() -> [ClaimantType; 1] {
17528 Self::VARIANTS
17529 }
17530}
17531
17532impl Name for Claimant {
17533 #[must_use]
17534 fn name(&self) -> &'static str {
17535 Self::name(self)
17536 }
17537}
17538
17539impl Discriminant<ClaimantType> for Claimant {
17540 #[must_use]
17541 fn discriminant(&self) -> ClaimantType {
17542 Self::discriminant(self)
17543 }
17544}
17545
17546impl Variants<ClaimantType> for Claimant {
17547 fn variants() -> slice::Iter<'static, ClaimantType> {
17548 Self::VARIANTS.iter()
17549 }
17550}
17551
17552impl Union<ClaimantType> for Claimant {}
17553
17554impl ReadXdr for Claimant {
17555 #[cfg(feature = "std")]
17556 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17557 r.with_limited_depth(|r| {
17558 let dv: ClaimantType = <ClaimantType as ReadXdr>::read_xdr(r)?;
17559 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
17560 let v = match dv {
17561 ClaimantType::ClaimantTypeV0 => Self::ClaimantTypeV0(ClaimantV0::read_xdr(r)?),
17562 #[allow(unreachable_patterns)]
17563 _ => return Err(Error::Invalid),
17564 };
17565 Ok(v)
17566 })
17567 }
17568}
17569
17570impl WriteXdr for Claimant {
17571 #[cfg(feature = "std")]
17572 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17573 w.with_limited_depth(|w| {
17574 self.discriminant().write_xdr(w)?;
17575 #[allow(clippy::match_same_arms)]
17576 match self {
17577 Self::ClaimantTypeV0(v) => v.write_xdr(w)?,
17578 };
17579 Ok(())
17580 })
17581 }
17582}
17583
17584#[cfg_attr(feature = "alloc", derive(Default))]
17597#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17598#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17599#[cfg_attr(
17600 all(feature = "serde", feature = "alloc"),
17601 derive(serde::Serialize, serde::Deserialize),
17602 serde(rename_all = "snake_case")
17603)]
17604#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17605#[repr(i32)]
17606pub enum ClaimableBalanceFlags {
17607 #[cfg_attr(feature = "alloc", default)]
17608 ClaimableBalanceClawbackEnabledFlag = 1,
17609}
17610
17611impl ClaimableBalanceFlags {
17612 pub const VARIANTS: [ClaimableBalanceFlags; 1] =
17613 [ClaimableBalanceFlags::ClaimableBalanceClawbackEnabledFlag];
17614 pub const VARIANTS_STR: [&'static str; 1] = ["ClaimableBalanceClawbackEnabledFlag"];
17615
17616 #[must_use]
17617 pub const fn name(&self) -> &'static str {
17618 match self {
17619 Self::ClaimableBalanceClawbackEnabledFlag => "ClaimableBalanceClawbackEnabledFlag",
17620 }
17621 }
17622
17623 #[must_use]
17624 pub const fn variants() -> [ClaimableBalanceFlags; 1] {
17625 Self::VARIANTS
17626 }
17627}
17628
17629impl Name for ClaimableBalanceFlags {
17630 #[must_use]
17631 fn name(&self) -> &'static str {
17632 Self::name(self)
17633 }
17634}
17635
17636impl Variants<ClaimableBalanceFlags> for ClaimableBalanceFlags {
17637 fn variants() -> slice::Iter<'static, ClaimableBalanceFlags> {
17638 Self::VARIANTS.iter()
17639 }
17640}
17641
17642impl Enum for ClaimableBalanceFlags {}
17643
17644impl fmt::Display for ClaimableBalanceFlags {
17645 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17646 f.write_str(self.name())
17647 }
17648}
17649
17650impl TryFrom<i32> for ClaimableBalanceFlags {
17651 type Error = Error;
17652
17653 fn try_from(i: i32) -> Result<Self, Error> {
17654 let e = match i {
17655 1 => ClaimableBalanceFlags::ClaimableBalanceClawbackEnabledFlag,
17656 #[allow(unreachable_patterns)]
17657 _ => return Err(Error::Invalid),
17658 };
17659 Ok(e)
17660 }
17661}
17662
17663impl From<ClaimableBalanceFlags> for i32 {
17664 #[must_use]
17665 fn from(e: ClaimableBalanceFlags) -> Self {
17666 e as Self
17667 }
17668}
17669
17670impl ReadXdr for ClaimableBalanceFlags {
17671 #[cfg(feature = "std")]
17672 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17673 r.with_limited_depth(|r| {
17674 let e = i32::read_xdr(r)?;
17675 let v: Self = e.try_into()?;
17676 Ok(v)
17677 })
17678 }
17679}
17680
17681impl WriteXdr for ClaimableBalanceFlags {
17682 #[cfg(feature = "std")]
17683 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17684 w.with_limited_depth(|w| {
17685 let i: i32 = (*self).into();
17686 i.write_xdr(w)
17687 })
17688 }
17689}
17690
17691pub const MASK_CLAIMABLE_BALANCE_FLAGS: u64 = 0x1;
17698
17699#[cfg_eval::cfg_eval]
17711#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17712#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17713#[cfg_attr(
17714 all(feature = "serde", feature = "alloc"),
17715 serde_with::serde_as,
17716 derive(serde::Serialize, serde::Deserialize),
17717 serde(rename_all = "snake_case")
17718)]
17719#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17720#[allow(clippy::large_enum_variant)]
17721pub enum ClaimableBalanceEntryExtensionV1Ext {
17722 V0,
17723}
17724
17725#[cfg(feature = "alloc")]
17726impl Default for ClaimableBalanceEntryExtensionV1Ext {
17727 fn default() -> Self {
17728 Self::V0
17729 }
17730}
17731
17732impl ClaimableBalanceEntryExtensionV1Ext {
17733 pub const VARIANTS: [i32; 1] = [0];
17734 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
17735
17736 #[must_use]
17737 pub const fn name(&self) -> &'static str {
17738 match self {
17739 Self::V0 => "V0",
17740 }
17741 }
17742
17743 #[must_use]
17744 pub const fn discriminant(&self) -> i32 {
17745 #[allow(clippy::match_same_arms)]
17746 match self {
17747 Self::V0 => 0,
17748 }
17749 }
17750
17751 #[must_use]
17752 pub const fn variants() -> [i32; 1] {
17753 Self::VARIANTS
17754 }
17755}
17756
17757impl Name for ClaimableBalanceEntryExtensionV1Ext {
17758 #[must_use]
17759 fn name(&self) -> &'static str {
17760 Self::name(self)
17761 }
17762}
17763
17764impl Discriminant<i32> for ClaimableBalanceEntryExtensionV1Ext {
17765 #[must_use]
17766 fn discriminant(&self) -> i32 {
17767 Self::discriminant(self)
17768 }
17769}
17770
17771impl Variants<i32> for ClaimableBalanceEntryExtensionV1Ext {
17772 fn variants() -> slice::Iter<'static, i32> {
17773 Self::VARIANTS.iter()
17774 }
17775}
17776
17777impl Union<i32> for ClaimableBalanceEntryExtensionV1Ext {}
17778
17779impl ReadXdr for ClaimableBalanceEntryExtensionV1Ext {
17780 #[cfg(feature = "std")]
17781 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17782 r.with_limited_depth(|r| {
17783 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
17784 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
17785 let v = match dv {
17786 0 => Self::V0,
17787 #[allow(unreachable_patterns)]
17788 _ => return Err(Error::Invalid),
17789 };
17790 Ok(v)
17791 })
17792 }
17793}
17794
17795impl WriteXdr for ClaimableBalanceEntryExtensionV1Ext {
17796 #[cfg(feature = "std")]
17797 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17798 w.with_limited_depth(|w| {
17799 self.discriminant().write_xdr(w)?;
17800 #[allow(clippy::match_same_arms)]
17801 match self {
17802 Self::V0 => ().write_xdr(w)?,
17803 };
17804 Ok(())
17805 })
17806 }
17807}
17808
17809#[cfg_attr(feature = "alloc", derive(Default))]
17826#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17827#[cfg_eval::cfg_eval]
17828#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17829#[cfg_attr(
17830 all(feature = "serde", feature = "alloc"),
17831 serde_with::serde_as,
17832 derive(serde::Serialize, serde::Deserialize),
17833 serde(rename_all = "snake_case")
17834)]
17835#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17836pub struct ClaimableBalanceEntryExtensionV1 {
17837 pub ext: ClaimableBalanceEntryExtensionV1Ext,
17838 pub flags: u32,
17839}
17840
17841impl ReadXdr for ClaimableBalanceEntryExtensionV1 {
17842 #[cfg(feature = "std")]
17843 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17844 r.with_limited_depth(|r| {
17845 Ok(Self {
17846 ext: ClaimableBalanceEntryExtensionV1Ext::read_xdr(r)?,
17847 flags: u32::read_xdr(r)?,
17848 })
17849 })
17850 }
17851}
17852
17853impl WriteXdr for ClaimableBalanceEntryExtensionV1 {
17854 #[cfg(feature = "std")]
17855 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17856 w.with_limited_depth(|w| {
17857 self.ext.write_xdr(w)?;
17858 self.flags.write_xdr(w)?;
17859 Ok(())
17860 })
17861 }
17862}
17863
17864#[cfg_eval::cfg_eval]
17878#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17879#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
17880#[cfg_attr(
17881 all(feature = "serde", feature = "alloc"),
17882 serde_with::serde_as,
17883 derive(serde::Serialize, serde::Deserialize),
17884 serde(rename_all = "snake_case")
17885)]
17886#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
17887#[allow(clippy::large_enum_variant)]
17888pub enum ClaimableBalanceEntryExt {
17889 V0,
17890 V1(ClaimableBalanceEntryExtensionV1),
17891}
17892
17893#[cfg(feature = "alloc")]
17894impl Default for ClaimableBalanceEntryExt {
17895 fn default() -> Self {
17896 Self::V0
17897 }
17898}
17899
17900impl ClaimableBalanceEntryExt {
17901 pub const VARIANTS: [i32; 2] = [0, 1];
17902 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
17903
17904 #[must_use]
17905 pub const fn name(&self) -> &'static str {
17906 match self {
17907 Self::V0 => "V0",
17908 Self::V1(_) => "V1",
17909 }
17910 }
17911
17912 #[must_use]
17913 pub const fn discriminant(&self) -> i32 {
17914 #[allow(clippy::match_same_arms)]
17915 match self {
17916 Self::V0 => 0,
17917 Self::V1(_) => 1,
17918 }
17919 }
17920
17921 #[must_use]
17922 pub const fn variants() -> [i32; 2] {
17923 Self::VARIANTS
17924 }
17925}
17926
17927impl Name for ClaimableBalanceEntryExt {
17928 #[must_use]
17929 fn name(&self) -> &'static str {
17930 Self::name(self)
17931 }
17932}
17933
17934impl Discriminant<i32> for ClaimableBalanceEntryExt {
17935 #[must_use]
17936 fn discriminant(&self) -> i32 {
17937 Self::discriminant(self)
17938 }
17939}
17940
17941impl Variants<i32> for ClaimableBalanceEntryExt {
17942 fn variants() -> slice::Iter<'static, i32> {
17943 Self::VARIANTS.iter()
17944 }
17945}
17946
17947impl Union<i32> for ClaimableBalanceEntryExt {}
17948
17949impl ReadXdr for ClaimableBalanceEntryExt {
17950 #[cfg(feature = "std")]
17951 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
17952 r.with_limited_depth(|r| {
17953 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
17954 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
17955 let v = match dv {
17956 0 => Self::V0,
17957 1 => Self::V1(ClaimableBalanceEntryExtensionV1::read_xdr(r)?),
17958 #[allow(unreachable_patterns)]
17959 _ => return Err(Error::Invalid),
17960 };
17961 Ok(v)
17962 })
17963 }
17964}
17965
17966impl WriteXdr for ClaimableBalanceEntryExt {
17967 #[cfg(feature = "std")]
17968 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
17969 w.with_limited_depth(|w| {
17970 self.discriminant().write_xdr(w)?;
17971 #[allow(clippy::match_same_arms)]
17972 match self {
17973 Self::V0 => ().write_xdr(w)?,
17974 Self::V1(v) => v.write_xdr(w)?,
17975 };
17976 Ok(())
17977 })
17978 }
17979}
17980
17981#[cfg_attr(feature = "alloc", derive(Default))]
18011#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18012#[cfg_eval::cfg_eval]
18013#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18014#[cfg_attr(
18015 all(feature = "serde", feature = "alloc"),
18016 serde_with::serde_as,
18017 derive(serde::Serialize, serde::Deserialize),
18018 serde(rename_all = "snake_case")
18019)]
18020#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18021pub struct ClaimableBalanceEntry {
18022 pub balance_id: ClaimableBalanceId,
18023 pub claimants: VecM<Claimant, 10>,
18024 pub asset: Asset,
18025 #[cfg_attr(
18026 all(feature = "serde", feature = "alloc"),
18027 serde_as(as = "NumberOrString")
18028 )]
18029 pub amount: i64,
18030 pub ext: ClaimableBalanceEntryExt,
18031}
18032
18033impl ReadXdr for ClaimableBalanceEntry {
18034 #[cfg(feature = "std")]
18035 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18036 r.with_limited_depth(|r| {
18037 Ok(Self {
18038 balance_id: ClaimableBalanceId::read_xdr(r)?,
18039 claimants: VecM::<Claimant, 10>::read_xdr(r)?,
18040 asset: Asset::read_xdr(r)?,
18041 amount: i64::read_xdr(r)?,
18042 ext: ClaimableBalanceEntryExt::read_xdr(r)?,
18043 })
18044 })
18045 }
18046}
18047
18048impl WriteXdr for ClaimableBalanceEntry {
18049 #[cfg(feature = "std")]
18050 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18051 w.with_limited_depth(|w| {
18052 self.balance_id.write_xdr(w)?;
18053 self.claimants.write_xdr(w)?;
18054 self.asset.write_xdr(w)?;
18055 self.amount.write_xdr(w)?;
18056 self.ext.write_xdr(w)?;
18057 Ok(())
18058 })
18059 }
18060}
18061
18062#[cfg_attr(feature = "alloc", derive(Default))]
18074#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18075#[cfg_eval::cfg_eval]
18076#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18077#[cfg_attr(
18078 all(feature = "serde", feature = "alloc"),
18079 serde_with::serde_as,
18080 derive(serde::Serialize, serde::Deserialize),
18081 serde(rename_all = "snake_case")
18082)]
18083#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18084pub struct LiquidityPoolConstantProductParameters {
18085 pub asset_a: Asset,
18086 pub asset_b: Asset,
18087 pub fee: i32,
18088}
18089
18090impl ReadXdr for LiquidityPoolConstantProductParameters {
18091 #[cfg(feature = "std")]
18092 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18093 r.with_limited_depth(|r| {
18094 Ok(Self {
18095 asset_a: Asset::read_xdr(r)?,
18096 asset_b: Asset::read_xdr(r)?,
18097 fee: i32::read_xdr(r)?,
18098 })
18099 })
18100 }
18101}
18102
18103impl WriteXdr for LiquidityPoolConstantProductParameters {
18104 #[cfg(feature = "std")]
18105 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18106 w.with_limited_depth(|w| {
18107 self.asset_a.write_xdr(w)?;
18108 self.asset_b.write_xdr(w)?;
18109 self.fee.write_xdr(w)?;
18110 Ok(())
18111 })
18112 }
18113}
18114
18115#[cfg_attr(feature = "alloc", derive(Default))]
18131#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18132#[cfg_eval::cfg_eval]
18133#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18134#[cfg_attr(
18135 all(feature = "serde", feature = "alloc"),
18136 serde_with::serde_as,
18137 derive(serde::Serialize, serde::Deserialize),
18138 serde(rename_all = "snake_case")
18139)]
18140#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18141pub struct LiquidityPoolEntryConstantProduct {
18142 pub params: LiquidityPoolConstantProductParameters,
18143 #[cfg_attr(
18144 all(feature = "serde", feature = "alloc"),
18145 serde_as(as = "NumberOrString")
18146 )]
18147 pub reserve_a: i64,
18148 #[cfg_attr(
18149 all(feature = "serde", feature = "alloc"),
18150 serde_as(as = "NumberOrString")
18151 )]
18152 pub reserve_b: i64,
18153 #[cfg_attr(
18154 all(feature = "serde", feature = "alloc"),
18155 serde_as(as = "NumberOrString")
18156 )]
18157 pub total_pool_shares: i64,
18158 #[cfg_attr(
18159 all(feature = "serde", feature = "alloc"),
18160 serde_as(as = "NumberOrString")
18161 )]
18162 pub pool_shares_trust_line_count: i64,
18163}
18164
18165impl ReadXdr for LiquidityPoolEntryConstantProduct {
18166 #[cfg(feature = "std")]
18167 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18168 r.with_limited_depth(|r| {
18169 Ok(Self {
18170 params: LiquidityPoolConstantProductParameters::read_xdr(r)?,
18171 reserve_a: i64::read_xdr(r)?,
18172 reserve_b: i64::read_xdr(r)?,
18173 total_pool_shares: i64::read_xdr(r)?,
18174 pool_shares_trust_line_count: i64::read_xdr(r)?,
18175 })
18176 })
18177 }
18178}
18179
18180impl WriteXdr for LiquidityPoolEntryConstantProduct {
18181 #[cfg(feature = "std")]
18182 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18183 w.with_limited_depth(|w| {
18184 self.params.write_xdr(w)?;
18185 self.reserve_a.write_xdr(w)?;
18186 self.reserve_b.write_xdr(w)?;
18187 self.total_pool_shares.write_xdr(w)?;
18188 self.pool_shares_trust_line_count.write_xdr(w)?;
18189 Ok(())
18190 })
18191 }
18192}
18193
18194#[cfg_eval::cfg_eval]
18215#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18216#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18217#[cfg_attr(
18218 all(feature = "serde", feature = "alloc"),
18219 serde_with::serde_as,
18220 derive(serde::Serialize, serde::Deserialize),
18221 serde(rename_all = "snake_case")
18222)]
18223#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18224#[allow(clippy::large_enum_variant)]
18225pub enum LiquidityPoolEntryBody {
18226 LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct),
18227}
18228
18229#[cfg(feature = "alloc")]
18230impl Default for LiquidityPoolEntryBody {
18231 fn default() -> Self {
18232 Self::LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct::default())
18233 }
18234}
18235
18236impl LiquidityPoolEntryBody {
18237 pub const VARIANTS: [LiquidityPoolType; 1] = [LiquidityPoolType::LiquidityPoolConstantProduct];
18238 pub const VARIANTS_STR: [&'static str; 1] = ["LiquidityPoolConstantProduct"];
18239
18240 #[must_use]
18241 pub const fn name(&self) -> &'static str {
18242 match self {
18243 Self::LiquidityPoolConstantProduct(_) => "LiquidityPoolConstantProduct",
18244 }
18245 }
18246
18247 #[must_use]
18248 pub const fn discriminant(&self) -> LiquidityPoolType {
18249 #[allow(clippy::match_same_arms)]
18250 match self {
18251 Self::LiquidityPoolConstantProduct(_) => {
18252 LiquidityPoolType::LiquidityPoolConstantProduct
18253 }
18254 }
18255 }
18256
18257 #[must_use]
18258 pub const fn variants() -> [LiquidityPoolType; 1] {
18259 Self::VARIANTS
18260 }
18261}
18262
18263impl Name for LiquidityPoolEntryBody {
18264 #[must_use]
18265 fn name(&self) -> &'static str {
18266 Self::name(self)
18267 }
18268}
18269
18270impl Discriminant<LiquidityPoolType> for LiquidityPoolEntryBody {
18271 #[must_use]
18272 fn discriminant(&self) -> LiquidityPoolType {
18273 Self::discriminant(self)
18274 }
18275}
18276
18277impl Variants<LiquidityPoolType> for LiquidityPoolEntryBody {
18278 fn variants() -> slice::Iter<'static, LiquidityPoolType> {
18279 Self::VARIANTS.iter()
18280 }
18281}
18282
18283impl Union<LiquidityPoolType> for LiquidityPoolEntryBody {}
18284
18285impl ReadXdr for LiquidityPoolEntryBody {
18286 #[cfg(feature = "std")]
18287 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18288 r.with_limited_depth(|r| {
18289 let dv: LiquidityPoolType = <LiquidityPoolType as ReadXdr>::read_xdr(r)?;
18290 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
18291 let v = match dv {
18292 LiquidityPoolType::LiquidityPoolConstantProduct => {
18293 Self::LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct::read_xdr(
18294 r,
18295 )?)
18296 }
18297 #[allow(unreachable_patterns)]
18298 _ => return Err(Error::Invalid),
18299 };
18300 Ok(v)
18301 })
18302 }
18303}
18304
18305impl WriteXdr for LiquidityPoolEntryBody {
18306 #[cfg(feature = "std")]
18307 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18308 w.with_limited_depth(|w| {
18309 self.discriminant().write_xdr(w)?;
18310 #[allow(clippy::match_same_arms)]
18311 match self {
18312 Self::LiquidityPoolConstantProduct(v) => v.write_xdr(w)?,
18313 };
18314 Ok(())
18315 })
18316 }
18317}
18318
18319#[cfg_attr(feature = "alloc", derive(Default))]
18345#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18346#[cfg_eval::cfg_eval]
18347#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18348#[cfg_attr(
18349 all(feature = "serde", feature = "alloc"),
18350 serde_with::serde_as,
18351 derive(serde::Serialize, serde::Deserialize),
18352 serde(rename_all = "snake_case")
18353)]
18354#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18355pub struct LiquidityPoolEntry {
18356 pub liquidity_pool_id: PoolId,
18357 pub body: LiquidityPoolEntryBody,
18358}
18359
18360impl ReadXdr for LiquidityPoolEntry {
18361 #[cfg(feature = "std")]
18362 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18363 r.with_limited_depth(|r| {
18364 Ok(Self {
18365 liquidity_pool_id: PoolId::read_xdr(r)?,
18366 body: LiquidityPoolEntryBody::read_xdr(r)?,
18367 })
18368 })
18369 }
18370}
18371
18372impl WriteXdr for LiquidityPoolEntry {
18373 #[cfg(feature = "std")]
18374 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18375 w.with_limited_depth(|w| {
18376 self.liquidity_pool_id.write_xdr(w)?;
18377 self.body.write_xdr(w)?;
18378 Ok(())
18379 })
18380 }
18381}
18382
18383#[cfg_attr(feature = "alloc", derive(Default))]
18394#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18395#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18396#[cfg_attr(
18397 all(feature = "serde", feature = "alloc"),
18398 derive(serde::Serialize, serde::Deserialize),
18399 serde(rename_all = "snake_case")
18400)]
18401#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18402#[repr(i32)]
18403pub enum ContractDataDurability {
18404 #[cfg_attr(feature = "alloc", default)]
18405 Temporary = 0,
18406 Persistent = 1,
18407}
18408
18409impl ContractDataDurability {
18410 pub const VARIANTS: [ContractDataDurability; 2] = [
18411 ContractDataDurability::Temporary,
18412 ContractDataDurability::Persistent,
18413 ];
18414 pub const VARIANTS_STR: [&'static str; 2] = ["Temporary", "Persistent"];
18415
18416 #[must_use]
18417 pub const fn name(&self) -> &'static str {
18418 match self {
18419 Self::Temporary => "Temporary",
18420 Self::Persistent => "Persistent",
18421 }
18422 }
18423
18424 #[must_use]
18425 pub const fn variants() -> [ContractDataDurability; 2] {
18426 Self::VARIANTS
18427 }
18428}
18429
18430impl Name for ContractDataDurability {
18431 #[must_use]
18432 fn name(&self) -> &'static str {
18433 Self::name(self)
18434 }
18435}
18436
18437impl Variants<ContractDataDurability> for ContractDataDurability {
18438 fn variants() -> slice::Iter<'static, ContractDataDurability> {
18439 Self::VARIANTS.iter()
18440 }
18441}
18442
18443impl Enum for ContractDataDurability {}
18444
18445impl fmt::Display for ContractDataDurability {
18446 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18447 f.write_str(self.name())
18448 }
18449}
18450
18451impl TryFrom<i32> for ContractDataDurability {
18452 type Error = Error;
18453
18454 fn try_from(i: i32) -> Result<Self, Error> {
18455 let e = match i {
18456 0 => ContractDataDurability::Temporary,
18457 1 => ContractDataDurability::Persistent,
18458 #[allow(unreachable_patterns)]
18459 _ => return Err(Error::Invalid),
18460 };
18461 Ok(e)
18462 }
18463}
18464
18465impl From<ContractDataDurability> for i32 {
18466 #[must_use]
18467 fn from(e: ContractDataDurability) -> Self {
18468 e as Self
18469 }
18470}
18471
18472impl ReadXdr for ContractDataDurability {
18473 #[cfg(feature = "std")]
18474 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18475 r.with_limited_depth(|r| {
18476 let e = i32::read_xdr(r)?;
18477 let v: Self = e.try_into()?;
18478 Ok(v)
18479 })
18480 }
18481}
18482
18483impl WriteXdr for ContractDataDurability {
18484 #[cfg(feature = "std")]
18485 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18486 w.with_limited_depth(|w| {
18487 let i: i32 = (*self).into();
18488 i.write_xdr(w)
18489 })
18490 }
18491}
18492
18493#[cfg_attr(feature = "alloc", derive(Default))]
18507#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18508#[cfg_eval::cfg_eval]
18509#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18510#[cfg_attr(
18511 all(feature = "serde", feature = "alloc"),
18512 serde_with::serde_as,
18513 derive(serde::Serialize, serde::Deserialize),
18514 serde(rename_all = "snake_case")
18515)]
18516#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18517pub struct ContractDataEntry {
18518 pub ext: ExtensionPoint,
18519 pub contract: ScAddress,
18520 pub key: ScVal,
18521 pub durability: ContractDataDurability,
18522 pub val: ScVal,
18523}
18524
18525impl ReadXdr for ContractDataEntry {
18526 #[cfg(feature = "std")]
18527 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18528 r.with_limited_depth(|r| {
18529 Ok(Self {
18530 ext: ExtensionPoint::read_xdr(r)?,
18531 contract: ScAddress::read_xdr(r)?,
18532 key: ScVal::read_xdr(r)?,
18533 durability: ContractDataDurability::read_xdr(r)?,
18534 val: ScVal::read_xdr(r)?,
18535 })
18536 })
18537 }
18538}
18539
18540impl WriteXdr for ContractDataEntry {
18541 #[cfg(feature = "std")]
18542 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18543 w.with_limited_depth(|w| {
18544 self.ext.write_xdr(w)?;
18545 self.contract.write_xdr(w)?;
18546 self.key.write_xdr(w)?;
18547 self.durability.write_xdr(w)?;
18548 self.val.write_xdr(w)?;
18549 Ok(())
18550 })
18551 }
18552}
18553
18554#[cfg_attr(feature = "alloc", derive(Default))]
18573#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18574#[cfg_eval::cfg_eval]
18575#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18576#[cfg_attr(
18577 all(feature = "serde", feature = "alloc"),
18578 serde_with::serde_as,
18579 derive(serde::Serialize, serde::Deserialize),
18580 serde(rename_all = "snake_case")
18581)]
18582#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18583pub struct ContractCodeCostInputs {
18584 pub ext: ExtensionPoint,
18585 pub n_instructions: u32,
18586 pub n_functions: u32,
18587 pub n_globals: u32,
18588 pub n_table_entries: u32,
18589 pub n_types: u32,
18590 pub n_data_segments: u32,
18591 pub n_elem_segments: u32,
18592 pub n_imports: u32,
18593 pub n_exports: u32,
18594 pub n_data_segment_bytes: u32,
18595}
18596
18597impl ReadXdr for ContractCodeCostInputs {
18598 #[cfg(feature = "std")]
18599 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18600 r.with_limited_depth(|r| {
18601 Ok(Self {
18602 ext: ExtensionPoint::read_xdr(r)?,
18603 n_instructions: u32::read_xdr(r)?,
18604 n_functions: u32::read_xdr(r)?,
18605 n_globals: u32::read_xdr(r)?,
18606 n_table_entries: u32::read_xdr(r)?,
18607 n_types: u32::read_xdr(r)?,
18608 n_data_segments: u32::read_xdr(r)?,
18609 n_elem_segments: u32::read_xdr(r)?,
18610 n_imports: u32::read_xdr(r)?,
18611 n_exports: u32::read_xdr(r)?,
18612 n_data_segment_bytes: u32::read_xdr(r)?,
18613 })
18614 })
18615 }
18616}
18617
18618impl WriteXdr for ContractCodeCostInputs {
18619 #[cfg(feature = "std")]
18620 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18621 w.with_limited_depth(|w| {
18622 self.ext.write_xdr(w)?;
18623 self.n_instructions.write_xdr(w)?;
18624 self.n_functions.write_xdr(w)?;
18625 self.n_globals.write_xdr(w)?;
18626 self.n_table_entries.write_xdr(w)?;
18627 self.n_types.write_xdr(w)?;
18628 self.n_data_segments.write_xdr(w)?;
18629 self.n_elem_segments.write_xdr(w)?;
18630 self.n_imports.write_xdr(w)?;
18631 self.n_exports.write_xdr(w)?;
18632 self.n_data_segment_bytes.write_xdr(w)?;
18633 Ok(())
18634 })
18635 }
18636}
18637
18638#[cfg_attr(feature = "alloc", derive(Default))]
18649#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18650#[cfg_eval::cfg_eval]
18651#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18652#[cfg_attr(
18653 all(feature = "serde", feature = "alloc"),
18654 serde_with::serde_as,
18655 derive(serde::Serialize, serde::Deserialize),
18656 serde(rename_all = "snake_case")
18657)]
18658#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18659pub struct ContractCodeEntryV1 {
18660 pub ext: ExtensionPoint,
18661 pub cost_inputs: ContractCodeCostInputs,
18662}
18663
18664impl ReadXdr for ContractCodeEntryV1 {
18665 #[cfg(feature = "std")]
18666 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18667 r.with_limited_depth(|r| {
18668 Ok(Self {
18669 ext: ExtensionPoint::read_xdr(r)?,
18670 cost_inputs: ContractCodeCostInputs::read_xdr(r)?,
18671 })
18672 })
18673 }
18674}
18675
18676impl WriteXdr for ContractCodeEntryV1 {
18677 #[cfg(feature = "std")]
18678 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18679 w.with_limited_depth(|w| {
18680 self.ext.write_xdr(w)?;
18681 self.cost_inputs.write_xdr(w)?;
18682 Ok(())
18683 })
18684 }
18685}
18686
18687#[cfg_eval::cfg_eval]
18705#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18706#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18707#[cfg_attr(
18708 all(feature = "serde", feature = "alloc"),
18709 serde_with::serde_as,
18710 derive(serde::Serialize, serde::Deserialize),
18711 serde(rename_all = "snake_case")
18712)]
18713#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18714#[allow(clippy::large_enum_variant)]
18715pub enum ContractCodeEntryExt {
18716 V0,
18717 V1(ContractCodeEntryV1),
18718}
18719
18720#[cfg(feature = "alloc")]
18721impl Default for ContractCodeEntryExt {
18722 fn default() -> Self {
18723 Self::V0
18724 }
18725}
18726
18727impl ContractCodeEntryExt {
18728 pub const VARIANTS: [i32; 2] = [0, 1];
18729 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
18730
18731 #[must_use]
18732 pub const fn name(&self) -> &'static str {
18733 match self {
18734 Self::V0 => "V0",
18735 Self::V1(_) => "V1",
18736 }
18737 }
18738
18739 #[must_use]
18740 pub const fn discriminant(&self) -> i32 {
18741 #[allow(clippy::match_same_arms)]
18742 match self {
18743 Self::V0 => 0,
18744 Self::V1(_) => 1,
18745 }
18746 }
18747
18748 #[must_use]
18749 pub const fn variants() -> [i32; 2] {
18750 Self::VARIANTS
18751 }
18752}
18753
18754impl Name for ContractCodeEntryExt {
18755 #[must_use]
18756 fn name(&self) -> &'static str {
18757 Self::name(self)
18758 }
18759}
18760
18761impl Discriminant<i32> for ContractCodeEntryExt {
18762 #[must_use]
18763 fn discriminant(&self) -> i32 {
18764 Self::discriminant(self)
18765 }
18766}
18767
18768impl Variants<i32> for ContractCodeEntryExt {
18769 fn variants() -> slice::Iter<'static, i32> {
18770 Self::VARIANTS.iter()
18771 }
18772}
18773
18774impl Union<i32> for ContractCodeEntryExt {}
18775
18776impl ReadXdr for ContractCodeEntryExt {
18777 #[cfg(feature = "std")]
18778 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18779 r.with_limited_depth(|r| {
18780 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
18781 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
18782 let v = match dv {
18783 0 => Self::V0,
18784 1 => Self::V1(ContractCodeEntryV1::read_xdr(r)?),
18785 #[allow(unreachable_patterns)]
18786 _ => return Err(Error::Invalid),
18787 };
18788 Ok(v)
18789 })
18790 }
18791}
18792
18793impl WriteXdr for ContractCodeEntryExt {
18794 #[cfg(feature = "std")]
18795 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18796 w.with_limited_depth(|w| {
18797 self.discriminant().write_xdr(w)?;
18798 #[allow(clippy::match_same_arms)]
18799 match self {
18800 Self::V0 => ().write_xdr(w)?,
18801 Self::V1(v) => v.write_xdr(w)?,
18802 };
18803 Ok(())
18804 })
18805 }
18806}
18807
18808#[cfg_attr(feature = "alloc", derive(Default))]
18830#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18831#[cfg_eval::cfg_eval]
18832#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18833#[cfg_attr(
18834 all(feature = "serde", feature = "alloc"),
18835 serde_with::serde_as,
18836 derive(serde::Serialize, serde::Deserialize),
18837 serde(rename_all = "snake_case")
18838)]
18839#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18840pub struct ContractCodeEntry {
18841 pub ext: ContractCodeEntryExt,
18842 pub hash: Hash,
18843 pub code: BytesM,
18844}
18845
18846impl ReadXdr for ContractCodeEntry {
18847 #[cfg(feature = "std")]
18848 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18849 r.with_limited_depth(|r| {
18850 Ok(Self {
18851 ext: ContractCodeEntryExt::read_xdr(r)?,
18852 hash: Hash::read_xdr(r)?,
18853 code: BytesM::read_xdr(r)?,
18854 })
18855 })
18856 }
18857}
18858
18859impl WriteXdr for ContractCodeEntry {
18860 #[cfg(feature = "std")]
18861 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18862 w.with_limited_depth(|w| {
18863 self.ext.write_xdr(w)?;
18864 self.hash.write_xdr(w)?;
18865 self.code.write_xdr(w)?;
18866 Ok(())
18867 })
18868 }
18869}
18870
18871#[cfg_attr(feature = "alloc", derive(Default))]
18882#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18883#[cfg_eval::cfg_eval]
18884#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18885#[cfg_attr(
18886 all(feature = "serde", feature = "alloc"),
18887 serde_with::serde_as,
18888 derive(serde::Serialize, serde::Deserialize),
18889 serde(rename_all = "snake_case")
18890)]
18891#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18892pub struct TtlEntry {
18893 pub key_hash: Hash,
18894 pub live_until_ledger_seq: u32,
18895}
18896
18897impl ReadXdr for TtlEntry {
18898 #[cfg(feature = "std")]
18899 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
18900 r.with_limited_depth(|r| {
18901 Ok(Self {
18902 key_hash: Hash::read_xdr(r)?,
18903 live_until_ledger_seq: u32::read_xdr(r)?,
18904 })
18905 })
18906 }
18907}
18908
18909impl WriteXdr for TtlEntry {
18910 #[cfg(feature = "std")]
18911 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
18912 w.with_limited_depth(|w| {
18913 self.key_hash.write_xdr(w)?;
18914 self.live_until_ledger_seq.write_xdr(w)?;
18915 Ok(())
18916 })
18917 }
18918}
18919
18920#[cfg_eval::cfg_eval]
18932#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
18933#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
18934#[cfg_attr(
18935 all(feature = "serde", feature = "alloc"),
18936 serde_with::serde_as,
18937 derive(serde::Serialize, serde::Deserialize),
18938 serde(rename_all = "snake_case")
18939)]
18940#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
18941#[allow(clippy::large_enum_variant)]
18942pub enum LedgerEntryExtensionV1Ext {
18943 V0,
18944}
18945
18946#[cfg(feature = "alloc")]
18947impl Default for LedgerEntryExtensionV1Ext {
18948 fn default() -> Self {
18949 Self::V0
18950 }
18951}
18952
18953impl LedgerEntryExtensionV1Ext {
18954 pub const VARIANTS: [i32; 1] = [0];
18955 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
18956
18957 #[must_use]
18958 pub const fn name(&self) -> &'static str {
18959 match self {
18960 Self::V0 => "V0",
18961 }
18962 }
18963
18964 #[must_use]
18965 pub const fn discriminant(&self) -> i32 {
18966 #[allow(clippy::match_same_arms)]
18967 match self {
18968 Self::V0 => 0,
18969 }
18970 }
18971
18972 #[must_use]
18973 pub const fn variants() -> [i32; 1] {
18974 Self::VARIANTS
18975 }
18976}
18977
18978impl Name for LedgerEntryExtensionV1Ext {
18979 #[must_use]
18980 fn name(&self) -> &'static str {
18981 Self::name(self)
18982 }
18983}
18984
18985impl Discriminant<i32> for LedgerEntryExtensionV1Ext {
18986 #[must_use]
18987 fn discriminant(&self) -> i32 {
18988 Self::discriminant(self)
18989 }
18990}
18991
18992impl Variants<i32> for LedgerEntryExtensionV1Ext {
18993 fn variants() -> slice::Iter<'static, i32> {
18994 Self::VARIANTS.iter()
18995 }
18996}
18997
18998impl Union<i32> for LedgerEntryExtensionV1Ext {}
18999
19000impl ReadXdr for LedgerEntryExtensionV1Ext {
19001 #[cfg(feature = "std")]
19002 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19003 r.with_limited_depth(|r| {
19004 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
19005 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
19006 let v = match dv {
19007 0 => Self::V0,
19008 #[allow(unreachable_patterns)]
19009 _ => return Err(Error::Invalid),
19010 };
19011 Ok(v)
19012 })
19013 }
19014}
19015
19016impl WriteXdr for LedgerEntryExtensionV1Ext {
19017 #[cfg(feature = "std")]
19018 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19019 w.with_limited_depth(|w| {
19020 self.discriminant().write_xdr(w)?;
19021 #[allow(clippy::match_same_arms)]
19022 match self {
19023 Self::V0 => ().write_xdr(w)?,
19024 };
19025 Ok(())
19026 })
19027 }
19028}
19029
19030#[cfg_attr(feature = "alloc", derive(Default))]
19047#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19048#[cfg_eval::cfg_eval]
19049#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19050#[cfg_attr(
19051 all(feature = "serde", feature = "alloc"),
19052 serde_with::serde_as,
19053 derive(serde::Serialize, serde::Deserialize),
19054 serde(rename_all = "snake_case")
19055)]
19056#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19057pub struct LedgerEntryExtensionV1 {
19058 pub sponsoring_id: SponsorshipDescriptor,
19059 pub ext: LedgerEntryExtensionV1Ext,
19060}
19061
19062impl ReadXdr for LedgerEntryExtensionV1 {
19063 #[cfg(feature = "std")]
19064 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19065 r.with_limited_depth(|r| {
19066 Ok(Self {
19067 sponsoring_id: SponsorshipDescriptor::read_xdr(r)?,
19068 ext: LedgerEntryExtensionV1Ext::read_xdr(r)?,
19069 })
19070 })
19071 }
19072}
19073
19074impl WriteXdr for LedgerEntryExtensionV1 {
19075 #[cfg(feature = "std")]
19076 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19077 w.with_limited_depth(|w| {
19078 self.sponsoring_id.write_xdr(w)?;
19079 self.ext.write_xdr(w)?;
19080 Ok(())
19081 })
19082 }
19083}
19084
19085#[cfg_eval::cfg_eval]
19115#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19116#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19117#[cfg_attr(
19118 all(feature = "serde", feature = "alloc"),
19119 serde_with::serde_as,
19120 derive(serde::Serialize, serde::Deserialize),
19121 serde(rename_all = "snake_case")
19122)]
19123#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19124#[allow(clippy::large_enum_variant)]
19125pub enum LedgerEntryData {
19126 Account(AccountEntry),
19127 Trustline(TrustLineEntry),
19128 Offer(OfferEntry),
19129 Data(DataEntry),
19130 ClaimableBalance(ClaimableBalanceEntry),
19131 LiquidityPool(LiquidityPoolEntry),
19132 ContractData(ContractDataEntry),
19133 ContractCode(ContractCodeEntry),
19134 ConfigSetting(ConfigSettingEntry),
19135 Ttl(TtlEntry),
19136}
19137
19138#[cfg(feature = "alloc")]
19139impl Default for LedgerEntryData {
19140 fn default() -> Self {
19141 Self::Account(AccountEntry::default())
19142 }
19143}
19144
19145impl LedgerEntryData {
19146 pub const VARIANTS: [LedgerEntryType; 10] = [
19147 LedgerEntryType::Account,
19148 LedgerEntryType::Trustline,
19149 LedgerEntryType::Offer,
19150 LedgerEntryType::Data,
19151 LedgerEntryType::ClaimableBalance,
19152 LedgerEntryType::LiquidityPool,
19153 LedgerEntryType::ContractData,
19154 LedgerEntryType::ContractCode,
19155 LedgerEntryType::ConfigSetting,
19156 LedgerEntryType::Ttl,
19157 ];
19158 pub const VARIANTS_STR: [&'static str; 10] = [
19159 "Account",
19160 "Trustline",
19161 "Offer",
19162 "Data",
19163 "ClaimableBalance",
19164 "LiquidityPool",
19165 "ContractData",
19166 "ContractCode",
19167 "ConfigSetting",
19168 "Ttl",
19169 ];
19170
19171 #[must_use]
19172 pub const fn name(&self) -> &'static str {
19173 match self {
19174 Self::Account(_) => "Account",
19175 Self::Trustline(_) => "Trustline",
19176 Self::Offer(_) => "Offer",
19177 Self::Data(_) => "Data",
19178 Self::ClaimableBalance(_) => "ClaimableBalance",
19179 Self::LiquidityPool(_) => "LiquidityPool",
19180 Self::ContractData(_) => "ContractData",
19181 Self::ContractCode(_) => "ContractCode",
19182 Self::ConfigSetting(_) => "ConfigSetting",
19183 Self::Ttl(_) => "Ttl",
19184 }
19185 }
19186
19187 #[must_use]
19188 pub const fn discriminant(&self) -> LedgerEntryType {
19189 #[allow(clippy::match_same_arms)]
19190 match self {
19191 Self::Account(_) => LedgerEntryType::Account,
19192 Self::Trustline(_) => LedgerEntryType::Trustline,
19193 Self::Offer(_) => LedgerEntryType::Offer,
19194 Self::Data(_) => LedgerEntryType::Data,
19195 Self::ClaimableBalance(_) => LedgerEntryType::ClaimableBalance,
19196 Self::LiquidityPool(_) => LedgerEntryType::LiquidityPool,
19197 Self::ContractData(_) => LedgerEntryType::ContractData,
19198 Self::ContractCode(_) => LedgerEntryType::ContractCode,
19199 Self::ConfigSetting(_) => LedgerEntryType::ConfigSetting,
19200 Self::Ttl(_) => LedgerEntryType::Ttl,
19201 }
19202 }
19203
19204 #[must_use]
19205 pub const fn variants() -> [LedgerEntryType; 10] {
19206 Self::VARIANTS
19207 }
19208}
19209
19210impl Name for LedgerEntryData {
19211 #[must_use]
19212 fn name(&self) -> &'static str {
19213 Self::name(self)
19214 }
19215}
19216
19217impl Discriminant<LedgerEntryType> for LedgerEntryData {
19218 #[must_use]
19219 fn discriminant(&self) -> LedgerEntryType {
19220 Self::discriminant(self)
19221 }
19222}
19223
19224impl Variants<LedgerEntryType> for LedgerEntryData {
19225 fn variants() -> slice::Iter<'static, LedgerEntryType> {
19226 Self::VARIANTS.iter()
19227 }
19228}
19229
19230impl Union<LedgerEntryType> for LedgerEntryData {}
19231
19232impl ReadXdr for LedgerEntryData {
19233 #[cfg(feature = "std")]
19234 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19235 r.with_limited_depth(|r| {
19236 let dv: LedgerEntryType = <LedgerEntryType as ReadXdr>::read_xdr(r)?;
19237 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
19238 let v = match dv {
19239 LedgerEntryType::Account => Self::Account(AccountEntry::read_xdr(r)?),
19240 LedgerEntryType::Trustline => Self::Trustline(TrustLineEntry::read_xdr(r)?),
19241 LedgerEntryType::Offer => Self::Offer(OfferEntry::read_xdr(r)?),
19242 LedgerEntryType::Data => Self::Data(DataEntry::read_xdr(r)?),
19243 LedgerEntryType::ClaimableBalance => {
19244 Self::ClaimableBalance(ClaimableBalanceEntry::read_xdr(r)?)
19245 }
19246 LedgerEntryType::LiquidityPool => {
19247 Self::LiquidityPool(LiquidityPoolEntry::read_xdr(r)?)
19248 }
19249 LedgerEntryType::ContractData => {
19250 Self::ContractData(ContractDataEntry::read_xdr(r)?)
19251 }
19252 LedgerEntryType::ContractCode => {
19253 Self::ContractCode(ContractCodeEntry::read_xdr(r)?)
19254 }
19255 LedgerEntryType::ConfigSetting => {
19256 Self::ConfigSetting(ConfigSettingEntry::read_xdr(r)?)
19257 }
19258 LedgerEntryType::Ttl => Self::Ttl(TtlEntry::read_xdr(r)?),
19259 #[allow(unreachable_patterns)]
19260 _ => return Err(Error::Invalid),
19261 };
19262 Ok(v)
19263 })
19264 }
19265}
19266
19267impl WriteXdr for LedgerEntryData {
19268 #[cfg(feature = "std")]
19269 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19270 w.with_limited_depth(|w| {
19271 self.discriminant().write_xdr(w)?;
19272 #[allow(clippy::match_same_arms)]
19273 match self {
19274 Self::Account(v) => v.write_xdr(w)?,
19275 Self::Trustline(v) => v.write_xdr(w)?,
19276 Self::Offer(v) => v.write_xdr(w)?,
19277 Self::Data(v) => v.write_xdr(w)?,
19278 Self::ClaimableBalance(v) => v.write_xdr(w)?,
19279 Self::LiquidityPool(v) => v.write_xdr(w)?,
19280 Self::ContractData(v) => v.write_xdr(w)?,
19281 Self::ContractCode(v) => v.write_xdr(w)?,
19282 Self::ConfigSetting(v) => v.write_xdr(w)?,
19283 Self::Ttl(v) => v.write_xdr(w)?,
19284 };
19285 Ok(())
19286 })
19287 }
19288}
19289
19290#[cfg_eval::cfg_eval]
19304#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19305#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19306#[cfg_attr(
19307 all(feature = "serde", feature = "alloc"),
19308 serde_with::serde_as,
19309 derive(serde::Serialize, serde::Deserialize),
19310 serde(rename_all = "snake_case")
19311)]
19312#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19313#[allow(clippy::large_enum_variant)]
19314pub enum LedgerEntryExt {
19315 V0,
19316 V1(LedgerEntryExtensionV1),
19317}
19318
19319#[cfg(feature = "alloc")]
19320impl Default for LedgerEntryExt {
19321 fn default() -> Self {
19322 Self::V0
19323 }
19324}
19325
19326impl LedgerEntryExt {
19327 pub const VARIANTS: [i32; 2] = [0, 1];
19328 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
19329
19330 #[must_use]
19331 pub const fn name(&self) -> &'static str {
19332 match self {
19333 Self::V0 => "V0",
19334 Self::V1(_) => "V1",
19335 }
19336 }
19337
19338 #[must_use]
19339 pub const fn discriminant(&self) -> i32 {
19340 #[allow(clippy::match_same_arms)]
19341 match self {
19342 Self::V0 => 0,
19343 Self::V1(_) => 1,
19344 }
19345 }
19346
19347 #[must_use]
19348 pub const fn variants() -> [i32; 2] {
19349 Self::VARIANTS
19350 }
19351}
19352
19353impl Name for LedgerEntryExt {
19354 #[must_use]
19355 fn name(&self) -> &'static str {
19356 Self::name(self)
19357 }
19358}
19359
19360impl Discriminant<i32> for LedgerEntryExt {
19361 #[must_use]
19362 fn discriminant(&self) -> i32 {
19363 Self::discriminant(self)
19364 }
19365}
19366
19367impl Variants<i32> for LedgerEntryExt {
19368 fn variants() -> slice::Iter<'static, i32> {
19369 Self::VARIANTS.iter()
19370 }
19371}
19372
19373impl Union<i32> for LedgerEntryExt {}
19374
19375impl ReadXdr for LedgerEntryExt {
19376 #[cfg(feature = "std")]
19377 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19378 r.with_limited_depth(|r| {
19379 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
19380 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
19381 let v = match dv {
19382 0 => Self::V0,
19383 1 => Self::V1(LedgerEntryExtensionV1::read_xdr(r)?),
19384 #[allow(unreachable_patterns)]
19385 _ => return Err(Error::Invalid),
19386 };
19387 Ok(v)
19388 })
19389 }
19390}
19391
19392impl WriteXdr for LedgerEntryExt {
19393 #[cfg(feature = "std")]
19394 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19395 w.with_limited_depth(|w| {
19396 self.discriminant().write_xdr(w)?;
19397 #[allow(clippy::match_same_arms)]
19398 match self {
19399 Self::V0 => ().write_xdr(w)?,
19400 Self::V1(v) => v.write_xdr(w)?,
19401 };
19402 Ok(())
19403 })
19404 }
19405}
19406
19407#[cfg_attr(feature = "alloc", derive(Default))]
19452#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19453#[cfg_eval::cfg_eval]
19454#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19455#[cfg_attr(
19456 all(feature = "serde", feature = "alloc"),
19457 serde_with::serde_as,
19458 derive(serde::Serialize, serde::Deserialize),
19459 serde(rename_all = "snake_case")
19460)]
19461#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19462pub struct LedgerEntry {
19463 pub last_modified_ledger_seq: u32,
19464 pub data: LedgerEntryData,
19465 pub ext: LedgerEntryExt,
19466}
19467
19468impl ReadXdr for LedgerEntry {
19469 #[cfg(feature = "std")]
19470 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19471 r.with_limited_depth(|r| {
19472 Ok(Self {
19473 last_modified_ledger_seq: u32::read_xdr(r)?,
19474 data: LedgerEntryData::read_xdr(r)?,
19475 ext: LedgerEntryExt::read_xdr(r)?,
19476 })
19477 })
19478 }
19479}
19480
19481impl WriteXdr for LedgerEntry {
19482 #[cfg(feature = "std")]
19483 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19484 w.with_limited_depth(|w| {
19485 self.last_modified_ledger_seq.write_xdr(w)?;
19486 self.data.write_xdr(w)?;
19487 self.ext.write_xdr(w)?;
19488 Ok(())
19489 })
19490 }
19491}
19492
19493#[cfg_attr(feature = "alloc", derive(Default))]
19503#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19504#[cfg_eval::cfg_eval]
19505#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19506#[cfg_attr(
19507 all(feature = "serde", feature = "alloc"),
19508 serde_with::serde_as,
19509 derive(serde::Serialize, serde::Deserialize),
19510 serde(rename_all = "snake_case")
19511)]
19512#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19513pub struct LedgerKeyAccount {
19514 pub account_id: AccountId,
19515}
19516
19517impl ReadXdr for LedgerKeyAccount {
19518 #[cfg(feature = "std")]
19519 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19520 r.with_limited_depth(|r| {
19521 Ok(Self {
19522 account_id: AccountId::read_xdr(r)?,
19523 })
19524 })
19525 }
19526}
19527
19528impl WriteXdr for LedgerKeyAccount {
19529 #[cfg(feature = "std")]
19530 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19531 w.with_limited_depth(|w| {
19532 self.account_id.write_xdr(w)?;
19533 Ok(())
19534 })
19535 }
19536}
19537
19538#[cfg_attr(feature = "alloc", derive(Default))]
19549#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19550#[cfg_eval::cfg_eval]
19551#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19552#[cfg_attr(
19553 all(feature = "serde", feature = "alloc"),
19554 serde_with::serde_as,
19555 derive(serde::Serialize, serde::Deserialize),
19556 serde(rename_all = "snake_case")
19557)]
19558#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19559pub struct LedgerKeyTrustLine {
19560 pub account_id: AccountId,
19561 pub asset: TrustLineAsset,
19562}
19563
19564impl ReadXdr for LedgerKeyTrustLine {
19565 #[cfg(feature = "std")]
19566 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19567 r.with_limited_depth(|r| {
19568 Ok(Self {
19569 account_id: AccountId::read_xdr(r)?,
19570 asset: TrustLineAsset::read_xdr(r)?,
19571 })
19572 })
19573 }
19574}
19575
19576impl WriteXdr for LedgerKeyTrustLine {
19577 #[cfg(feature = "std")]
19578 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19579 w.with_limited_depth(|w| {
19580 self.account_id.write_xdr(w)?;
19581 self.asset.write_xdr(w)?;
19582 Ok(())
19583 })
19584 }
19585}
19586
19587#[cfg_attr(feature = "alloc", derive(Default))]
19598#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19599#[cfg_eval::cfg_eval]
19600#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19601#[cfg_attr(
19602 all(feature = "serde", feature = "alloc"),
19603 serde_with::serde_as,
19604 derive(serde::Serialize, serde::Deserialize),
19605 serde(rename_all = "snake_case")
19606)]
19607#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19608pub struct LedgerKeyOffer {
19609 pub seller_id: AccountId,
19610 #[cfg_attr(
19611 all(feature = "serde", feature = "alloc"),
19612 serde_as(as = "NumberOrString")
19613 )]
19614 pub offer_id: i64,
19615}
19616
19617impl ReadXdr for LedgerKeyOffer {
19618 #[cfg(feature = "std")]
19619 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19620 r.with_limited_depth(|r| {
19621 Ok(Self {
19622 seller_id: AccountId::read_xdr(r)?,
19623 offer_id: i64::read_xdr(r)?,
19624 })
19625 })
19626 }
19627}
19628
19629impl WriteXdr for LedgerKeyOffer {
19630 #[cfg(feature = "std")]
19631 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19632 w.with_limited_depth(|w| {
19633 self.seller_id.write_xdr(w)?;
19634 self.offer_id.write_xdr(w)?;
19635 Ok(())
19636 })
19637 }
19638}
19639
19640#[cfg_attr(feature = "alloc", derive(Default))]
19651#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19652#[cfg_eval::cfg_eval]
19653#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19654#[cfg_attr(
19655 all(feature = "serde", feature = "alloc"),
19656 serde_with::serde_as,
19657 derive(serde::Serialize, serde::Deserialize),
19658 serde(rename_all = "snake_case")
19659)]
19660#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19661pub struct LedgerKeyData {
19662 pub account_id: AccountId,
19663 pub data_name: String64,
19664}
19665
19666impl ReadXdr for LedgerKeyData {
19667 #[cfg(feature = "std")]
19668 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19669 r.with_limited_depth(|r| {
19670 Ok(Self {
19671 account_id: AccountId::read_xdr(r)?,
19672 data_name: String64::read_xdr(r)?,
19673 })
19674 })
19675 }
19676}
19677
19678impl WriteXdr for LedgerKeyData {
19679 #[cfg(feature = "std")]
19680 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19681 w.with_limited_depth(|w| {
19682 self.account_id.write_xdr(w)?;
19683 self.data_name.write_xdr(w)?;
19684 Ok(())
19685 })
19686 }
19687}
19688
19689#[cfg_attr(feature = "alloc", derive(Default))]
19699#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19700#[cfg_eval::cfg_eval]
19701#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19702#[cfg_attr(
19703 all(feature = "serde", feature = "alloc"),
19704 serde_with::serde_as,
19705 derive(serde::Serialize, serde::Deserialize),
19706 serde(rename_all = "snake_case")
19707)]
19708#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19709pub struct LedgerKeyClaimableBalance {
19710 pub balance_id: ClaimableBalanceId,
19711}
19712
19713impl ReadXdr for LedgerKeyClaimableBalance {
19714 #[cfg(feature = "std")]
19715 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19716 r.with_limited_depth(|r| {
19717 Ok(Self {
19718 balance_id: ClaimableBalanceId::read_xdr(r)?,
19719 })
19720 })
19721 }
19722}
19723
19724impl WriteXdr for LedgerKeyClaimableBalance {
19725 #[cfg(feature = "std")]
19726 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19727 w.with_limited_depth(|w| {
19728 self.balance_id.write_xdr(w)?;
19729 Ok(())
19730 })
19731 }
19732}
19733
19734#[cfg_attr(feature = "alloc", derive(Default))]
19744#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19745#[cfg_eval::cfg_eval]
19746#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19747#[cfg_attr(
19748 all(feature = "serde", feature = "alloc"),
19749 serde_with::serde_as,
19750 derive(serde::Serialize, serde::Deserialize),
19751 serde(rename_all = "snake_case")
19752)]
19753#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19754pub struct LedgerKeyLiquidityPool {
19755 pub liquidity_pool_id: PoolId,
19756}
19757
19758impl ReadXdr for LedgerKeyLiquidityPool {
19759 #[cfg(feature = "std")]
19760 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19761 r.with_limited_depth(|r| {
19762 Ok(Self {
19763 liquidity_pool_id: PoolId::read_xdr(r)?,
19764 })
19765 })
19766 }
19767}
19768
19769impl WriteXdr for LedgerKeyLiquidityPool {
19770 #[cfg(feature = "std")]
19771 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19772 w.with_limited_depth(|w| {
19773 self.liquidity_pool_id.write_xdr(w)?;
19774 Ok(())
19775 })
19776 }
19777}
19778
19779#[cfg_attr(feature = "alloc", derive(Default))]
19791#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19792#[cfg_eval::cfg_eval]
19793#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19794#[cfg_attr(
19795 all(feature = "serde", feature = "alloc"),
19796 serde_with::serde_as,
19797 derive(serde::Serialize, serde::Deserialize),
19798 serde(rename_all = "snake_case")
19799)]
19800#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19801pub struct LedgerKeyContractData {
19802 pub contract: ScAddress,
19803 pub key: ScVal,
19804 pub durability: ContractDataDurability,
19805}
19806
19807impl ReadXdr for LedgerKeyContractData {
19808 #[cfg(feature = "std")]
19809 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19810 r.with_limited_depth(|r| {
19811 Ok(Self {
19812 contract: ScAddress::read_xdr(r)?,
19813 key: ScVal::read_xdr(r)?,
19814 durability: ContractDataDurability::read_xdr(r)?,
19815 })
19816 })
19817 }
19818}
19819
19820impl WriteXdr for LedgerKeyContractData {
19821 #[cfg(feature = "std")]
19822 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19823 w.with_limited_depth(|w| {
19824 self.contract.write_xdr(w)?;
19825 self.key.write_xdr(w)?;
19826 self.durability.write_xdr(w)?;
19827 Ok(())
19828 })
19829 }
19830}
19831
19832#[cfg_attr(feature = "alloc", derive(Default))]
19842#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19843#[cfg_eval::cfg_eval]
19844#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19845#[cfg_attr(
19846 all(feature = "serde", feature = "alloc"),
19847 serde_with::serde_as,
19848 derive(serde::Serialize, serde::Deserialize),
19849 serde(rename_all = "snake_case")
19850)]
19851#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19852pub struct LedgerKeyContractCode {
19853 pub hash: Hash,
19854}
19855
19856impl ReadXdr for LedgerKeyContractCode {
19857 #[cfg(feature = "std")]
19858 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19859 r.with_limited_depth(|r| {
19860 Ok(Self {
19861 hash: Hash::read_xdr(r)?,
19862 })
19863 })
19864 }
19865}
19866
19867impl WriteXdr for LedgerKeyContractCode {
19868 #[cfg(feature = "std")]
19869 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19870 w.with_limited_depth(|w| {
19871 self.hash.write_xdr(w)?;
19872 Ok(())
19873 })
19874 }
19875}
19876
19877#[cfg_attr(feature = "alloc", derive(Default))]
19887#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19888#[cfg_eval::cfg_eval]
19889#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19890#[cfg_attr(
19891 all(feature = "serde", feature = "alloc"),
19892 serde_with::serde_as,
19893 derive(serde::Serialize, serde::Deserialize),
19894 serde(rename_all = "snake_case")
19895)]
19896#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19897pub struct LedgerKeyConfigSetting {
19898 pub config_setting_id: ConfigSettingId,
19899}
19900
19901impl ReadXdr for LedgerKeyConfigSetting {
19902 #[cfg(feature = "std")]
19903 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19904 r.with_limited_depth(|r| {
19905 Ok(Self {
19906 config_setting_id: ConfigSettingId::read_xdr(r)?,
19907 })
19908 })
19909 }
19910}
19911
19912impl WriteXdr for LedgerKeyConfigSetting {
19913 #[cfg(feature = "std")]
19914 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19915 w.with_limited_depth(|w| {
19916 self.config_setting_id.write_xdr(w)?;
19917 Ok(())
19918 })
19919 }
19920}
19921
19922#[cfg_attr(feature = "alloc", derive(Default))]
19933#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
19934#[cfg_eval::cfg_eval]
19935#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
19936#[cfg_attr(
19937 all(feature = "serde", feature = "alloc"),
19938 serde_with::serde_as,
19939 derive(serde::Serialize, serde::Deserialize),
19940 serde(rename_all = "snake_case")
19941)]
19942#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19943pub struct LedgerKeyTtl {
19944 pub key_hash: Hash,
19945}
19946
19947impl ReadXdr for LedgerKeyTtl {
19948 #[cfg(feature = "std")]
19949 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
19950 r.with_limited_depth(|r| {
19951 Ok(Self {
19952 key_hash: Hash::read_xdr(r)?,
19953 })
19954 })
19955 }
19956}
19957
19958impl WriteXdr for LedgerKeyTtl {
19959 #[cfg(feature = "std")]
19960 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
19961 w.with_limited_depth(|w| {
19962 self.key_hash.write_xdr(w)?;
19963 Ok(())
19964 })
19965 }
19966}
19967
19968#[cfg_eval::cfg_eval]
20039#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20040#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20041#[cfg_attr(
20042 all(feature = "serde", feature = "alloc"),
20043 serde_with::serde_as,
20044 derive(serde::Serialize, serde::Deserialize),
20045 serde(rename_all = "snake_case")
20046)]
20047#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20048#[allow(clippy::large_enum_variant)]
20049pub enum LedgerKey {
20050 Account(LedgerKeyAccount),
20051 Trustline(LedgerKeyTrustLine),
20052 Offer(LedgerKeyOffer),
20053 Data(LedgerKeyData),
20054 ClaimableBalance(LedgerKeyClaimableBalance),
20055 LiquidityPool(LedgerKeyLiquidityPool),
20056 ContractData(LedgerKeyContractData),
20057 ContractCode(LedgerKeyContractCode),
20058 ConfigSetting(LedgerKeyConfigSetting),
20059 Ttl(LedgerKeyTtl),
20060}
20061
20062#[cfg(feature = "alloc")]
20063impl Default for LedgerKey {
20064 fn default() -> Self {
20065 Self::Account(LedgerKeyAccount::default())
20066 }
20067}
20068
20069impl LedgerKey {
20070 pub const VARIANTS: [LedgerEntryType; 10] = [
20071 LedgerEntryType::Account,
20072 LedgerEntryType::Trustline,
20073 LedgerEntryType::Offer,
20074 LedgerEntryType::Data,
20075 LedgerEntryType::ClaimableBalance,
20076 LedgerEntryType::LiquidityPool,
20077 LedgerEntryType::ContractData,
20078 LedgerEntryType::ContractCode,
20079 LedgerEntryType::ConfigSetting,
20080 LedgerEntryType::Ttl,
20081 ];
20082 pub const VARIANTS_STR: [&'static str; 10] = [
20083 "Account",
20084 "Trustline",
20085 "Offer",
20086 "Data",
20087 "ClaimableBalance",
20088 "LiquidityPool",
20089 "ContractData",
20090 "ContractCode",
20091 "ConfigSetting",
20092 "Ttl",
20093 ];
20094
20095 #[must_use]
20096 pub const fn name(&self) -> &'static str {
20097 match self {
20098 Self::Account(_) => "Account",
20099 Self::Trustline(_) => "Trustline",
20100 Self::Offer(_) => "Offer",
20101 Self::Data(_) => "Data",
20102 Self::ClaimableBalance(_) => "ClaimableBalance",
20103 Self::LiquidityPool(_) => "LiquidityPool",
20104 Self::ContractData(_) => "ContractData",
20105 Self::ContractCode(_) => "ContractCode",
20106 Self::ConfigSetting(_) => "ConfigSetting",
20107 Self::Ttl(_) => "Ttl",
20108 }
20109 }
20110
20111 #[must_use]
20112 pub const fn discriminant(&self) -> LedgerEntryType {
20113 #[allow(clippy::match_same_arms)]
20114 match self {
20115 Self::Account(_) => LedgerEntryType::Account,
20116 Self::Trustline(_) => LedgerEntryType::Trustline,
20117 Self::Offer(_) => LedgerEntryType::Offer,
20118 Self::Data(_) => LedgerEntryType::Data,
20119 Self::ClaimableBalance(_) => LedgerEntryType::ClaimableBalance,
20120 Self::LiquidityPool(_) => LedgerEntryType::LiquidityPool,
20121 Self::ContractData(_) => LedgerEntryType::ContractData,
20122 Self::ContractCode(_) => LedgerEntryType::ContractCode,
20123 Self::ConfigSetting(_) => LedgerEntryType::ConfigSetting,
20124 Self::Ttl(_) => LedgerEntryType::Ttl,
20125 }
20126 }
20127
20128 #[must_use]
20129 pub const fn variants() -> [LedgerEntryType; 10] {
20130 Self::VARIANTS
20131 }
20132}
20133
20134impl Name for LedgerKey {
20135 #[must_use]
20136 fn name(&self) -> &'static str {
20137 Self::name(self)
20138 }
20139}
20140
20141impl Discriminant<LedgerEntryType> for LedgerKey {
20142 #[must_use]
20143 fn discriminant(&self) -> LedgerEntryType {
20144 Self::discriminant(self)
20145 }
20146}
20147
20148impl Variants<LedgerEntryType> for LedgerKey {
20149 fn variants() -> slice::Iter<'static, LedgerEntryType> {
20150 Self::VARIANTS.iter()
20151 }
20152}
20153
20154impl Union<LedgerEntryType> for LedgerKey {}
20155
20156impl ReadXdr for LedgerKey {
20157 #[cfg(feature = "std")]
20158 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20159 r.with_limited_depth(|r| {
20160 let dv: LedgerEntryType = <LedgerEntryType as ReadXdr>::read_xdr(r)?;
20161 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
20162 let v = match dv {
20163 LedgerEntryType::Account => Self::Account(LedgerKeyAccount::read_xdr(r)?),
20164 LedgerEntryType::Trustline => Self::Trustline(LedgerKeyTrustLine::read_xdr(r)?),
20165 LedgerEntryType::Offer => Self::Offer(LedgerKeyOffer::read_xdr(r)?),
20166 LedgerEntryType::Data => Self::Data(LedgerKeyData::read_xdr(r)?),
20167 LedgerEntryType::ClaimableBalance => {
20168 Self::ClaimableBalance(LedgerKeyClaimableBalance::read_xdr(r)?)
20169 }
20170 LedgerEntryType::LiquidityPool => {
20171 Self::LiquidityPool(LedgerKeyLiquidityPool::read_xdr(r)?)
20172 }
20173 LedgerEntryType::ContractData => {
20174 Self::ContractData(LedgerKeyContractData::read_xdr(r)?)
20175 }
20176 LedgerEntryType::ContractCode => {
20177 Self::ContractCode(LedgerKeyContractCode::read_xdr(r)?)
20178 }
20179 LedgerEntryType::ConfigSetting => {
20180 Self::ConfigSetting(LedgerKeyConfigSetting::read_xdr(r)?)
20181 }
20182 LedgerEntryType::Ttl => Self::Ttl(LedgerKeyTtl::read_xdr(r)?),
20183 #[allow(unreachable_patterns)]
20184 _ => return Err(Error::Invalid),
20185 };
20186 Ok(v)
20187 })
20188 }
20189}
20190
20191impl WriteXdr for LedgerKey {
20192 #[cfg(feature = "std")]
20193 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20194 w.with_limited_depth(|w| {
20195 self.discriminant().write_xdr(w)?;
20196 #[allow(clippy::match_same_arms)]
20197 match self {
20198 Self::Account(v) => v.write_xdr(w)?,
20199 Self::Trustline(v) => v.write_xdr(w)?,
20200 Self::Offer(v) => v.write_xdr(w)?,
20201 Self::Data(v) => v.write_xdr(w)?,
20202 Self::ClaimableBalance(v) => v.write_xdr(w)?,
20203 Self::LiquidityPool(v) => v.write_xdr(w)?,
20204 Self::ContractData(v) => v.write_xdr(w)?,
20205 Self::ContractCode(v) => v.write_xdr(w)?,
20206 Self::ConfigSetting(v) => v.write_xdr(w)?,
20207 Self::Ttl(v) => v.write_xdr(w)?,
20208 };
20209 Ok(())
20210 })
20211 }
20212}
20213
20214#[cfg_attr(feature = "alloc", derive(Default))]
20234#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20235#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20236#[cfg_attr(
20237 all(feature = "serde", feature = "alloc"),
20238 derive(serde::Serialize, serde::Deserialize),
20239 serde(rename_all = "snake_case")
20240)]
20241#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20242#[repr(i32)]
20243pub enum EnvelopeType {
20244 #[cfg_attr(feature = "alloc", default)]
20245 TxV0 = 0,
20246 Scp = 1,
20247 Tx = 2,
20248 Auth = 3,
20249 Scpvalue = 4,
20250 TxFeeBump = 5,
20251 OpId = 6,
20252 PoolRevokeOpId = 7,
20253 ContractId = 8,
20254 SorobanAuthorization = 9,
20255}
20256
20257impl EnvelopeType {
20258 pub const VARIANTS: [EnvelopeType; 10] = [
20259 EnvelopeType::TxV0,
20260 EnvelopeType::Scp,
20261 EnvelopeType::Tx,
20262 EnvelopeType::Auth,
20263 EnvelopeType::Scpvalue,
20264 EnvelopeType::TxFeeBump,
20265 EnvelopeType::OpId,
20266 EnvelopeType::PoolRevokeOpId,
20267 EnvelopeType::ContractId,
20268 EnvelopeType::SorobanAuthorization,
20269 ];
20270 pub const VARIANTS_STR: [&'static str; 10] = [
20271 "TxV0",
20272 "Scp",
20273 "Tx",
20274 "Auth",
20275 "Scpvalue",
20276 "TxFeeBump",
20277 "OpId",
20278 "PoolRevokeOpId",
20279 "ContractId",
20280 "SorobanAuthorization",
20281 ];
20282
20283 #[must_use]
20284 pub const fn name(&self) -> &'static str {
20285 match self {
20286 Self::TxV0 => "TxV0",
20287 Self::Scp => "Scp",
20288 Self::Tx => "Tx",
20289 Self::Auth => "Auth",
20290 Self::Scpvalue => "Scpvalue",
20291 Self::TxFeeBump => "TxFeeBump",
20292 Self::OpId => "OpId",
20293 Self::PoolRevokeOpId => "PoolRevokeOpId",
20294 Self::ContractId => "ContractId",
20295 Self::SorobanAuthorization => "SorobanAuthorization",
20296 }
20297 }
20298
20299 #[must_use]
20300 pub const fn variants() -> [EnvelopeType; 10] {
20301 Self::VARIANTS
20302 }
20303}
20304
20305impl Name for EnvelopeType {
20306 #[must_use]
20307 fn name(&self) -> &'static str {
20308 Self::name(self)
20309 }
20310}
20311
20312impl Variants<EnvelopeType> for EnvelopeType {
20313 fn variants() -> slice::Iter<'static, EnvelopeType> {
20314 Self::VARIANTS.iter()
20315 }
20316}
20317
20318impl Enum for EnvelopeType {}
20319
20320impl fmt::Display for EnvelopeType {
20321 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20322 f.write_str(self.name())
20323 }
20324}
20325
20326impl TryFrom<i32> for EnvelopeType {
20327 type Error = Error;
20328
20329 fn try_from(i: i32) -> Result<Self, Error> {
20330 let e = match i {
20331 0 => EnvelopeType::TxV0,
20332 1 => EnvelopeType::Scp,
20333 2 => EnvelopeType::Tx,
20334 3 => EnvelopeType::Auth,
20335 4 => EnvelopeType::Scpvalue,
20336 5 => EnvelopeType::TxFeeBump,
20337 6 => EnvelopeType::OpId,
20338 7 => EnvelopeType::PoolRevokeOpId,
20339 8 => EnvelopeType::ContractId,
20340 9 => EnvelopeType::SorobanAuthorization,
20341 #[allow(unreachable_patterns)]
20342 _ => return Err(Error::Invalid),
20343 };
20344 Ok(e)
20345 }
20346}
20347
20348impl From<EnvelopeType> for i32 {
20349 #[must_use]
20350 fn from(e: EnvelopeType) -> Self {
20351 e as Self
20352 }
20353}
20354
20355impl ReadXdr for EnvelopeType {
20356 #[cfg(feature = "std")]
20357 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20358 r.with_limited_depth(|r| {
20359 let e = i32::read_xdr(r)?;
20360 let v: Self = e.try_into()?;
20361 Ok(v)
20362 })
20363 }
20364}
20365
20366impl WriteXdr for EnvelopeType {
20367 #[cfg(feature = "std")]
20368 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20369 w.with_limited_depth(|w| {
20370 let i: i32 = (*self).into();
20371 i.write_xdr(w)
20372 })
20373 }
20374}
20375
20376#[cfg_attr(feature = "alloc", derive(Default))]
20388#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20389#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20390#[cfg_attr(
20391 all(feature = "serde", feature = "alloc"),
20392 derive(serde::Serialize, serde::Deserialize),
20393 serde(rename_all = "snake_case")
20394)]
20395#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20396#[repr(i32)]
20397pub enum BucketListType {
20398 #[cfg_attr(feature = "alloc", default)]
20399 Live = 0,
20400 HotArchive = 1,
20401}
20402
20403impl BucketListType {
20404 pub const VARIANTS: [BucketListType; 2] = [BucketListType::Live, BucketListType::HotArchive];
20405 pub const VARIANTS_STR: [&'static str; 2] = ["Live", "HotArchive"];
20406
20407 #[must_use]
20408 pub const fn name(&self) -> &'static str {
20409 match self {
20410 Self::Live => "Live",
20411 Self::HotArchive => "HotArchive",
20412 }
20413 }
20414
20415 #[must_use]
20416 pub const fn variants() -> [BucketListType; 2] {
20417 Self::VARIANTS
20418 }
20419}
20420
20421impl Name for BucketListType {
20422 #[must_use]
20423 fn name(&self) -> &'static str {
20424 Self::name(self)
20425 }
20426}
20427
20428impl Variants<BucketListType> for BucketListType {
20429 fn variants() -> slice::Iter<'static, BucketListType> {
20430 Self::VARIANTS.iter()
20431 }
20432}
20433
20434impl Enum for BucketListType {}
20435
20436impl fmt::Display for BucketListType {
20437 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20438 f.write_str(self.name())
20439 }
20440}
20441
20442impl TryFrom<i32> for BucketListType {
20443 type Error = Error;
20444
20445 fn try_from(i: i32) -> Result<Self, Error> {
20446 let e = match i {
20447 0 => BucketListType::Live,
20448 1 => BucketListType::HotArchive,
20449 #[allow(unreachable_patterns)]
20450 _ => return Err(Error::Invalid),
20451 };
20452 Ok(e)
20453 }
20454}
20455
20456impl From<BucketListType> for i32 {
20457 #[must_use]
20458 fn from(e: BucketListType) -> Self {
20459 e as Self
20460 }
20461}
20462
20463impl ReadXdr for BucketListType {
20464 #[cfg(feature = "std")]
20465 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20466 r.with_limited_depth(|r| {
20467 let e = i32::read_xdr(r)?;
20468 let v: Self = e.try_into()?;
20469 Ok(v)
20470 })
20471 }
20472}
20473
20474impl WriteXdr for BucketListType {
20475 #[cfg(feature = "std")]
20476 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20477 w.with_limited_depth(|w| {
20478 let i: i32 = (*self).into();
20479 i.write_xdr(w)
20480 })
20481 }
20482}
20483
20484#[cfg_attr(feature = "alloc", derive(Default))]
20500#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20501#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20502#[cfg_attr(
20503 all(feature = "serde", feature = "alloc"),
20504 derive(serde::Serialize, serde::Deserialize),
20505 serde(rename_all = "snake_case")
20506)]
20507#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20508#[repr(i32)]
20509pub enum BucketEntryType {
20510 #[cfg_attr(feature = "alloc", default)]
20511 Metaentry = -1,
20512 Liveentry = 0,
20513 Deadentry = 1,
20514 Initentry = 2,
20515}
20516
20517impl BucketEntryType {
20518 pub const VARIANTS: [BucketEntryType; 4] = [
20519 BucketEntryType::Metaentry,
20520 BucketEntryType::Liveentry,
20521 BucketEntryType::Deadentry,
20522 BucketEntryType::Initentry,
20523 ];
20524 pub const VARIANTS_STR: [&'static str; 4] =
20525 ["Metaentry", "Liveentry", "Deadentry", "Initentry"];
20526
20527 #[must_use]
20528 pub const fn name(&self) -> &'static str {
20529 match self {
20530 Self::Metaentry => "Metaentry",
20531 Self::Liveentry => "Liveentry",
20532 Self::Deadentry => "Deadentry",
20533 Self::Initentry => "Initentry",
20534 }
20535 }
20536
20537 #[must_use]
20538 pub const fn variants() -> [BucketEntryType; 4] {
20539 Self::VARIANTS
20540 }
20541}
20542
20543impl Name for BucketEntryType {
20544 #[must_use]
20545 fn name(&self) -> &'static str {
20546 Self::name(self)
20547 }
20548}
20549
20550impl Variants<BucketEntryType> for BucketEntryType {
20551 fn variants() -> slice::Iter<'static, BucketEntryType> {
20552 Self::VARIANTS.iter()
20553 }
20554}
20555
20556impl Enum for BucketEntryType {}
20557
20558impl fmt::Display for BucketEntryType {
20559 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20560 f.write_str(self.name())
20561 }
20562}
20563
20564impl TryFrom<i32> for BucketEntryType {
20565 type Error = Error;
20566
20567 fn try_from(i: i32) -> Result<Self, Error> {
20568 let e = match i {
20569 -1 => BucketEntryType::Metaentry,
20570 0 => BucketEntryType::Liveentry,
20571 1 => BucketEntryType::Deadentry,
20572 2 => BucketEntryType::Initentry,
20573 #[allow(unreachable_patterns)]
20574 _ => return Err(Error::Invalid),
20575 };
20576 Ok(e)
20577 }
20578}
20579
20580impl From<BucketEntryType> for i32 {
20581 #[must_use]
20582 fn from(e: BucketEntryType) -> Self {
20583 e as Self
20584 }
20585}
20586
20587impl ReadXdr for BucketEntryType {
20588 #[cfg(feature = "std")]
20589 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20590 r.with_limited_depth(|r| {
20591 let e = i32::read_xdr(r)?;
20592 let v: Self = e.try_into()?;
20593 Ok(v)
20594 })
20595 }
20596}
20597
20598impl WriteXdr for BucketEntryType {
20599 #[cfg(feature = "std")]
20600 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20601 w.with_limited_depth(|w| {
20602 let i: i32 = (*self).into();
20603 i.write_xdr(w)
20604 })
20605 }
20606}
20607
20608#[cfg_attr(feature = "alloc", derive(Default))]
20623#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20624#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20625#[cfg_attr(
20626 all(feature = "serde", feature = "alloc"),
20627 derive(serde::Serialize, serde::Deserialize),
20628 serde(rename_all = "snake_case")
20629)]
20630#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20631#[repr(i32)]
20632pub enum HotArchiveBucketEntryType {
20633 #[cfg_attr(feature = "alloc", default)]
20634 Metaentry = -1,
20635 Archived = 0,
20636 Live = 1,
20637}
20638
20639impl HotArchiveBucketEntryType {
20640 pub const VARIANTS: [HotArchiveBucketEntryType; 3] = [
20641 HotArchiveBucketEntryType::Metaentry,
20642 HotArchiveBucketEntryType::Archived,
20643 HotArchiveBucketEntryType::Live,
20644 ];
20645 pub const VARIANTS_STR: [&'static str; 3] = ["Metaentry", "Archived", "Live"];
20646
20647 #[must_use]
20648 pub const fn name(&self) -> &'static str {
20649 match self {
20650 Self::Metaentry => "Metaentry",
20651 Self::Archived => "Archived",
20652 Self::Live => "Live",
20653 }
20654 }
20655
20656 #[must_use]
20657 pub const fn variants() -> [HotArchiveBucketEntryType; 3] {
20658 Self::VARIANTS
20659 }
20660}
20661
20662impl Name for HotArchiveBucketEntryType {
20663 #[must_use]
20664 fn name(&self) -> &'static str {
20665 Self::name(self)
20666 }
20667}
20668
20669impl Variants<HotArchiveBucketEntryType> for HotArchiveBucketEntryType {
20670 fn variants() -> slice::Iter<'static, HotArchiveBucketEntryType> {
20671 Self::VARIANTS.iter()
20672 }
20673}
20674
20675impl Enum for HotArchiveBucketEntryType {}
20676
20677impl fmt::Display for HotArchiveBucketEntryType {
20678 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20679 f.write_str(self.name())
20680 }
20681}
20682
20683impl TryFrom<i32> for HotArchiveBucketEntryType {
20684 type Error = Error;
20685
20686 fn try_from(i: i32) -> Result<Self, Error> {
20687 let e = match i {
20688 -1 => HotArchiveBucketEntryType::Metaentry,
20689 0 => HotArchiveBucketEntryType::Archived,
20690 1 => HotArchiveBucketEntryType::Live,
20691 #[allow(unreachable_patterns)]
20692 _ => return Err(Error::Invalid),
20693 };
20694 Ok(e)
20695 }
20696}
20697
20698impl From<HotArchiveBucketEntryType> for i32 {
20699 #[must_use]
20700 fn from(e: HotArchiveBucketEntryType) -> Self {
20701 e as Self
20702 }
20703}
20704
20705impl ReadXdr for HotArchiveBucketEntryType {
20706 #[cfg(feature = "std")]
20707 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20708 r.with_limited_depth(|r| {
20709 let e = i32::read_xdr(r)?;
20710 let v: Self = e.try_into()?;
20711 Ok(v)
20712 })
20713 }
20714}
20715
20716impl WriteXdr for HotArchiveBucketEntryType {
20717 #[cfg(feature = "std")]
20718 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20719 w.with_limited_depth(|w| {
20720 let i: i32 = (*self).into();
20721 i.write_xdr(w)
20722 })
20723 }
20724}
20725
20726#[cfg_eval::cfg_eval]
20740#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20741#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20742#[cfg_attr(
20743 all(feature = "serde", feature = "alloc"),
20744 serde_with::serde_as,
20745 derive(serde::Serialize, serde::Deserialize),
20746 serde(rename_all = "snake_case")
20747)]
20748#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20749#[allow(clippy::large_enum_variant)]
20750pub enum BucketMetadataExt {
20751 V0,
20752 V1(BucketListType),
20753}
20754
20755#[cfg(feature = "alloc")]
20756impl Default for BucketMetadataExt {
20757 fn default() -> Self {
20758 Self::V0
20759 }
20760}
20761
20762impl BucketMetadataExt {
20763 pub const VARIANTS: [i32; 2] = [0, 1];
20764 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
20765
20766 #[must_use]
20767 pub const fn name(&self) -> &'static str {
20768 match self {
20769 Self::V0 => "V0",
20770 Self::V1(_) => "V1",
20771 }
20772 }
20773
20774 #[must_use]
20775 pub const fn discriminant(&self) -> i32 {
20776 #[allow(clippy::match_same_arms)]
20777 match self {
20778 Self::V0 => 0,
20779 Self::V1(_) => 1,
20780 }
20781 }
20782
20783 #[must_use]
20784 pub const fn variants() -> [i32; 2] {
20785 Self::VARIANTS
20786 }
20787}
20788
20789impl Name for BucketMetadataExt {
20790 #[must_use]
20791 fn name(&self) -> &'static str {
20792 Self::name(self)
20793 }
20794}
20795
20796impl Discriminant<i32> for BucketMetadataExt {
20797 #[must_use]
20798 fn discriminant(&self) -> i32 {
20799 Self::discriminant(self)
20800 }
20801}
20802
20803impl Variants<i32> for BucketMetadataExt {
20804 fn variants() -> slice::Iter<'static, i32> {
20805 Self::VARIANTS.iter()
20806 }
20807}
20808
20809impl Union<i32> for BucketMetadataExt {}
20810
20811impl ReadXdr for BucketMetadataExt {
20812 #[cfg(feature = "std")]
20813 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20814 r.with_limited_depth(|r| {
20815 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
20816 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
20817 let v = match dv {
20818 0 => Self::V0,
20819 1 => Self::V1(BucketListType::read_xdr(r)?),
20820 #[allow(unreachable_patterns)]
20821 _ => return Err(Error::Invalid),
20822 };
20823 Ok(v)
20824 })
20825 }
20826}
20827
20828impl WriteXdr for BucketMetadataExt {
20829 #[cfg(feature = "std")]
20830 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20831 w.with_limited_depth(|w| {
20832 self.discriminant().write_xdr(w)?;
20833 #[allow(clippy::match_same_arms)]
20834 match self {
20835 Self::V0 => ().write_xdr(w)?,
20836 Self::V1(v) => v.write_xdr(w)?,
20837 };
20838 Ok(())
20839 })
20840 }
20841}
20842
20843#[cfg_attr(feature = "alloc", derive(Default))]
20864#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20865#[cfg_eval::cfg_eval]
20866#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20867#[cfg_attr(
20868 all(feature = "serde", feature = "alloc"),
20869 serde_with::serde_as,
20870 derive(serde::Serialize, serde::Deserialize),
20871 serde(rename_all = "snake_case")
20872)]
20873#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20874pub struct BucketMetadata {
20875 pub ledger_version: u32,
20876 pub ext: BucketMetadataExt,
20877}
20878
20879impl ReadXdr for BucketMetadata {
20880 #[cfg(feature = "std")]
20881 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
20882 r.with_limited_depth(|r| {
20883 Ok(Self {
20884 ledger_version: u32::read_xdr(r)?,
20885 ext: BucketMetadataExt::read_xdr(r)?,
20886 })
20887 })
20888 }
20889}
20890
20891impl WriteXdr for BucketMetadata {
20892 #[cfg(feature = "std")]
20893 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
20894 w.with_limited_depth(|w| {
20895 self.ledger_version.write_xdr(w)?;
20896 self.ext.write_xdr(w)?;
20897 Ok(())
20898 })
20899 }
20900}
20901
20902#[cfg_eval::cfg_eval]
20920#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
20921#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
20922#[cfg_attr(
20923 all(feature = "serde", feature = "alloc"),
20924 serde_with::serde_as,
20925 derive(serde::Serialize, serde::Deserialize),
20926 serde(rename_all = "snake_case")
20927)]
20928#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
20929#[allow(clippy::large_enum_variant)]
20930pub enum BucketEntry {
20931 Liveentry(LedgerEntry),
20932 Initentry(LedgerEntry),
20933 Deadentry(LedgerKey),
20934 Metaentry(BucketMetadata),
20935}
20936
20937#[cfg(feature = "alloc")]
20938impl Default for BucketEntry {
20939 fn default() -> Self {
20940 Self::Liveentry(LedgerEntry::default())
20941 }
20942}
20943
20944impl BucketEntry {
20945 pub const VARIANTS: [BucketEntryType; 4] = [
20946 BucketEntryType::Liveentry,
20947 BucketEntryType::Initentry,
20948 BucketEntryType::Deadentry,
20949 BucketEntryType::Metaentry,
20950 ];
20951 pub const VARIANTS_STR: [&'static str; 4] =
20952 ["Liveentry", "Initentry", "Deadentry", "Metaentry"];
20953
20954 #[must_use]
20955 pub const fn name(&self) -> &'static str {
20956 match self {
20957 Self::Liveentry(_) => "Liveentry",
20958 Self::Initentry(_) => "Initentry",
20959 Self::Deadentry(_) => "Deadentry",
20960 Self::Metaentry(_) => "Metaentry",
20961 }
20962 }
20963
20964 #[must_use]
20965 pub const fn discriminant(&self) -> BucketEntryType {
20966 #[allow(clippy::match_same_arms)]
20967 match self {
20968 Self::Liveentry(_) => BucketEntryType::Liveentry,
20969 Self::Initentry(_) => BucketEntryType::Initentry,
20970 Self::Deadentry(_) => BucketEntryType::Deadentry,
20971 Self::Metaentry(_) => BucketEntryType::Metaentry,
20972 }
20973 }
20974
20975 #[must_use]
20976 pub const fn variants() -> [BucketEntryType; 4] {
20977 Self::VARIANTS
20978 }
20979}
20980
20981impl Name for BucketEntry {
20982 #[must_use]
20983 fn name(&self) -> &'static str {
20984 Self::name(self)
20985 }
20986}
20987
20988impl Discriminant<BucketEntryType> for BucketEntry {
20989 #[must_use]
20990 fn discriminant(&self) -> BucketEntryType {
20991 Self::discriminant(self)
20992 }
20993}
20994
20995impl Variants<BucketEntryType> for BucketEntry {
20996 fn variants() -> slice::Iter<'static, BucketEntryType> {
20997 Self::VARIANTS.iter()
20998 }
20999}
21000
21001impl Union<BucketEntryType> for BucketEntry {}
21002
21003impl ReadXdr for BucketEntry {
21004 #[cfg(feature = "std")]
21005 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21006 r.with_limited_depth(|r| {
21007 let dv: BucketEntryType = <BucketEntryType as ReadXdr>::read_xdr(r)?;
21008 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
21009 let v = match dv {
21010 BucketEntryType::Liveentry => Self::Liveentry(LedgerEntry::read_xdr(r)?),
21011 BucketEntryType::Initentry => Self::Initentry(LedgerEntry::read_xdr(r)?),
21012 BucketEntryType::Deadentry => Self::Deadentry(LedgerKey::read_xdr(r)?),
21013 BucketEntryType::Metaentry => Self::Metaentry(BucketMetadata::read_xdr(r)?),
21014 #[allow(unreachable_patterns)]
21015 _ => return Err(Error::Invalid),
21016 };
21017 Ok(v)
21018 })
21019 }
21020}
21021
21022impl WriteXdr for BucketEntry {
21023 #[cfg(feature = "std")]
21024 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21025 w.with_limited_depth(|w| {
21026 self.discriminant().write_xdr(w)?;
21027 #[allow(clippy::match_same_arms)]
21028 match self {
21029 Self::Liveentry(v) => v.write_xdr(w)?,
21030 Self::Initentry(v) => v.write_xdr(w)?,
21031 Self::Deadentry(v) => v.write_xdr(w)?,
21032 Self::Metaentry(v) => v.write_xdr(w)?,
21033 };
21034 Ok(())
21035 })
21036 }
21037}
21038
21039#[cfg_eval::cfg_eval]
21056#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21057#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21058#[cfg_attr(
21059 all(feature = "serde", feature = "alloc"),
21060 serde_with::serde_as,
21061 derive(serde::Serialize, serde::Deserialize),
21062 serde(rename_all = "snake_case")
21063)]
21064#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21065#[allow(clippy::large_enum_variant)]
21066pub enum HotArchiveBucketEntry {
21067 Archived(LedgerEntry),
21068 Live(LedgerKey),
21069 Metaentry(BucketMetadata),
21070}
21071
21072#[cfg(feature = "alloc")]
21073impl Default for HotArchiveBucketEntry {
21074 fn default() -> Self {
21075 Self::Archived(LedgerEntry::default())
21076 }
21077}
21078
21079impl HotArchiveBucketEntry {
21080 pub const VARIANTS: [HotArchiveBucketEntryType; 3] = [
21081 HotArchiveBucketEntryType::Archived,
21082 HotArchiveBucketEntryType::Live,
21083 HotArchiveBucketEntryType::Metaentry,
21084 ];
21085 pub const VARIANTS_STR: [&'static str; 3] = ["Archived", "Live", "Metaentry"];
21086
21087 #[must_use]
21088 pub const fn name(&self) -> &'static str {
21089 match self {
21090 Self::Archived(_) => "Archived",
21091 Self::Live(_) => "Live",
21092 Self::Metaentry(_) => "Metaentry",
21093 }
21094 }
21095
21096 #[must_use]
21097 pub const fn discriminant(&self) -> HotArchiveBucketEntryType {
21098 #[allow(clippy::match_same_arms)]
21099 match self {
21100 Self::Archived(_) => HotArchiveBucketEntryType::Archived,
21101 Self::Live(_) => HotArchiveBucketEntryType::Live,
21102 Self::Metaentry(_) => HotArchiveBucketEntryType::Metaentry,
21103 }
21104 }
21105
21106 #[must_use]
21107 pub const fn variants() -> [HotArchiveBucketEntryType; 3] {
21108 Self::VARIANTS
21109 }
21110}
21111
21112impl Name for HotArchiveBucketEntry {
21113 #[must_use]
21114 fn name(&self) -> &'static str {
21115 Self::name(self)
21116 }
21117}
21118
21119impl Discriminant<HotArchiveBucketEntryType> for HotArchiveBucketEntry {
21120 #[must_use]
21121 fn discriminant(&self) -> HotArchiveBucketEntryType {
21122 Self::discriminant(self)
21123 }
21124}
21125
21126impl Variants<HotArchiveBucketEntryType> for HotArchiveBucketEntry {
21127 fn variants() -> slice::Iter<'static, HotArchiveBucketEntryType> {
21128 Self::VARIANTS.iter()
21129 }
21130}
21131
21132impl Union<HotArchiveBucketEntryType> for HotArchiveBucketEntry {}
21133
21134impl ReadXdr for HotArchiveBucketEntry {
21135 #[cfg(feature = "std")]
21136 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21137 r.with_limited_depth(|r| {
21138 let dv: HotArchiveBucketEntryType =
21139 <HotArchiveBucketEntryType as ReadXdr>::read_xdr(r)?;
21140 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
21141 let v = match dv {
21142 HotArchiveBucketEntryType::Archived => Self::Archived(LedgerEntry::read_xdr(r)?),
21143 HotArchiveBucketEntryType::Live => Self::Live(LedgerKey::read_xdr(r)?),
21144 HotArchiveBucketEntryType::Metaentry => {
21145 Self::Metaentry(BucketMetadata::read_xdr(r)?)
21146 }
21147 #[allow(unreachable_patterns)]
21148 _ => return Err(Error::Invalid),
21149 };
21150 Ok(v)
21151 })
21152 }
21153}
21154
21155impl WriteXdr for HotArchiveBucketEntry {
21156 #[cfg(feature = "std")]
21157 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21158 w.with_limited_depth(|w| {
21159 self.discriminant().write_xdr(w)?;
21160 #[allow(clippy::match_same_arms)]
21161 match self {
21162 Self::Archived(v) => v.write_xdr(w)?,
21163 Self::Live(v) => v.write_xdr(w)?,
21164 Self::Metaentry(v) => v.write_xdr(w)?,
21165 };
21166 Ok(())
21167 })
21168 }
21169}
21170
21171#[cfg_eval::cfg_eval]
21178#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
21179#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21180#[cfg_attr(
21181 all(feature = "serde", feature = "alloc"),
21182 serde_with::serde_as,
21183 derive(serde::Serialize, serde::Deserialize),
21184 serde(rename_all = "snake_case")
21185)]
21186#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21187#[derive(Debug)]
21188pub struct UpgradeType(pub BytesM<128>);
21189
21190impl From<UpgradeType> for BytesM<128> {
21191 #[must_use]
21192 fn from(x: UpgradeType) -> Self {
21193 x.0
21194 }
21195}
21196
21197impl From<BytesM<128>> for UpgradeType {
21198 #[must_use]
21199 fn from(x: BytesM<128>) -> Self {
21200 UpgradeType(x)
21201 }
21202}
21203
21204impl AsRef<BytesM<128>> for UpgradeType {
21205 #[must_use]
21206 fn as_ref(&self) -> &BytesM<128> {
21207 &self.0
21208 }
21209}
21210
21211impl ReadXdr for UpgradeType {
21212 #[cfg(feature = "std")]
21213 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21214 r.with_limited_depth(|r| {
21215 let i = BytesM::<128>::read_xdr(r)?;
21216 let v = UpgradeType(i);
21217 Ok(v)
21218 })
21219 }
21220}
21221
21222impl WriteXdr for UpgradeType {
21223 #[cfg(feature = "std")]
21224 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21225 w.with_limited_depth(|w| self.0.write_xdr(w))
21226 }
21227}
21228
21229impl Deref for UpgradeType {
21230 type Target = BytesM<128>;
21231 fn deref(&self) -> &Self::Target {
21232 &self.0
21233 }
21234}
21235
21236impl From<UpgradeType> for Vec<u8> {
21237 #[must_use]
21238 fn from(x: UpgradeType) -> Self {
21239 x.0 .0
21240 }
21241}
21242
21243impl TryFrom<Vec<u8>> for UpgradeType {
21244 type Error = Error;
21245 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
21246 Ok(UpgradeType(x.try_into()?))
21247 }
21248}
21249
21250#[cfg(feature = "alloc")]
21251impl TryFrom<&Vec<u8>> for UpgradeType {
21252 type Error = Error;
21253 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
21254 Ok(UpgradeType(x.try_into()?))
21255 }
21256}
21257
21258impl AsRef<Vec<u8>> for UpgradeType {
21259 #[must_use]
21260 fn as_ref(&self) -> &Vec<u8> {
21261 &self.0 .0
21262 }
21263}
21264
21265impl AsRef<[u8]> for UpgradeType {
21266 #[cfg(feature = "alloc")]
21267 #[must_use]
21268 fn as_ref(&self) -> &[u8] {
21269 &self.0 .0
21270 }
21271 #[cfg(not(feature = "alloc"))]
21272 #[must_use]
21273 fn as_ref(&self) -> &[u8] {
21274 self.0 .0
21275 }
21276}
21277
21278#[cfg_attr(feature = "alloc", derive(Default))]
21290#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21291#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21292#[cfg_attr(
21293 all(feature = "serde", feature = "alloc"),
21294 derive(serde::Serialize, serde::Deserialize),
21295 serde(rename_all = "snake_case")
21296)]
21297#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21298#[repr(i32)]
21299pub enum StellarValueType {
21300 #[cfg_attr(feature = "alloc", default)]
21301 Basic = 0,
21302 Signed = 1,
21303}
21304
21305impl StellarValueType {
21306 pub const VARIANTS: [StellarValueType; 2] = [StellarValueType::Basic, StellarValueType::Signed];
21307 pub const VARIANTS_STR: [&'static str; 2] = ["Basic", "Signed"];
21308
21309 #[must_use]
21310 pub const fn name(&self) -> &'static str {
21311 match self {
21312 Self::Basic => "Basic",
21313 Self::Signed => "Signed",
21314 }
21315 }
21316
21317 #[must_use]
21318 pub const fn variants() -> [StellarValueType; 2] {
21319 Self::VARIANTS
21320 }
21321}
21322
21323impl Name for StellarValueType {
21324 #[must_use]
21325 fn name(&self) -> &'static str {
21326 Self::name(self)
21327 }
21328}
21329
21330impl Variants<StellarValueType> for StellarValueType {
21331 fn variants() -> slice::Iter<'static, StellarValueType> {
21332 Self::VARIANTS.iter()
21333 }
21334}
21335
21336impl Enum for StellarValueType {}
21337
21338impl fmt::Display for StellarValueType {
21339 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21340 f.write_str(self.name())
21341 }
21342}
21343
21344impl TryFrom<i32> for StellarValueType {
21345 type Error = Error;
21346
21347 fn try_from(i: i32) -> Result<Self, Error> {
21348 let e = match i {
21349 0 => StellarValueType::Basic,
21350 1 => StellarValueType::Signed,
21351 #[allow(unreachable_patterns)]
21352 _ => return Err(Error::Invalid),
21353 };
21354 Ok(e)
21355 }
21356}
21357
21358impl From<StellarValueType> for i32 {
21359 #[must_use]
21360 fn from(e: StellarValueType) -> Self {
21361 e as Self
21362 }
21363}
21364
21365impl ReadXdr for StellarValueType {
21366 #[cfg(feature = "std")]
21367 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21368 r.with_limited_depth(|r| {
21369 let e = i32::read_xdr(r)?;
21370 let v: Self = e.try_into()?;
21371 Ok(v)
21372 })
21373 }
21374}
21375
21376impl WriteXdr for StellarValueType {
21377 #[cfg(feature = "std")]
21378 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21379 w.with_limited_depth(|w| {
21380 let i: i32 = (*self).into();
21381 i.write_xdr(w)
21382 })
21383 }
21384}
21385
21386#[cfg_attr(feature = "alloc", derive(Default))]
21397#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21398#[cfg_eval::cfg_eval]
21399#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21400#[cfg_attr(
21401 all(feature = "serde", feature = "alloc"),
21402 serde_with::serde_as,
21403 derive(serde::Serialize, serde::Deserialize),
21404 serde(rename_all = "snake_case")
21405)]
21406#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21407pub struct LedgerCloseValueSignature {
21408 pub node_id: NodeId,
21409 pub signature: Signature,
21410}
21411
21412impl ReadXdr for LedgerCloseValueSignature {
21413 #[cfg(feature = "std")]
21414 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21415 r.with_limited_depth(|r| {
21416 Ok(Self {
21417 node_id: NodeId::read_xdr(r)?,
21418 signature: Signature::read_xdr(r)?,
21419 })
21420 })
21421 }
21422}
21423
21424impl WriteXdr for LedgerCloseValueSignature {
21425 #[cfg(feature = "std")]
21426 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21427 w.with_limited_depth(|w| {
21428 self.node_id.write_xdr(w)?;
21429 self.signature.write_xdr(w)?;
21430 Ok(())
21431 })
21432 }
21433}
21434
21435#[cfg_eval::cfg_eval]
21449#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21450#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21451#[cfg_attr(
21452 all(feature = "serde", feature = "alloc"),
21453 serde_with::serde_as,
21454 derive(serde::Serialize, serde::Deserialize),
21455 serde(rename_all = "snake_case")
21456)]
21457#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21458#[allow(clippy::large_enum_variant)]
21459pub enum StellarValueExt {
21460 Basic,
21461 Signed(LedgerCloseValueSignature),
21462}
21463
21464#[cfg(feature = "alloc")]
21465impl Default for StellarValueExt {
21466 fn default() -> Self {
21467 Self::Basic
21468 }
21469}
21470
21471impl StellarValueExt {
21472 pub const VARIANTS: [StellarValueType; 2] = [StellarValueType::Basic, StellarValueType::Signed];
21473 pub const VARIANTS_STR: [&'static str; 2] = ["Basic", "Signed"];
21474
21475 #[must_use]
21476 pub const fn name(&self) -> &'static str {
21477 match self {
21478 Self::Basic => "Basic",
21479 Self::Signed(_) => "Signed",
21480 }
21481 }
21482
21483 #[must_use]
21484 pub const fn discriminant(&self) -> StellarValueType {
21485 #[allow(clippy::match_same_arms)]
21486 match self {
21487 Self::Basic => StellarValueType::Basic,
21488 Self::Signed(_) => StellarValueType::Signed,
21489 }
21490 }
21491
21492 #[must_use]
21493 pub const fn variants() -> [StellarValueType; 2] {
21494 Self::VARIANTS
21495 }
21496}
21497
21498impl Name for StellarValueExt {
21499 #[must_use]
21500 fn name(&self) -> &'static str {
21501 Self::name(self)
21502 }
21503}
21504
21505impl Discriminant<StellarValueType> for StellarValueExt {
21506 #[must_use]
21507 fn discriminant(&self) -> StellarValueType {
21508 Self::discriminant(self)
21509 }
21510}
21511
21512impl Variants<StellarValueType> for StellarValueExt {
21513 fn variants() -> slice::Iter<'static, StellarValueType> {
21514 Self::VARIANTS.iter()
21515 }
21516}
21517
21518impl Union<StellarValueType> for StellarValueExt {}
21519
21520impl ReadXdr for StellarValueExt {
21521 #[cfg(feature = "std")]
21522 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21523 r.with_limited_depth(|r| {
21524 let dv: StellarValueType = <StellarValueType as ReadXdr>::read_xdr(r)?;
21525 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
21526 let v = match dv {
21527 StellarValueType::Basic => Self::Basic,
21528 StellarValueType::Signed => Self::Signed(LedgerCloseValueSignature::read_xdr(r)?),
21529 #[allow(unreachable_patterns)]
21530 _ => return Err(Error::Invalid),
21531 };
21532 Ok(v)
21533 })
21534 }
21535}
21536
21537impl WriteXdr for StellarValueExt {
21538 #[cfg(feature = "std")]
21539 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21540 w.with_limited_depth(|w| {
21541 self.discriminant().write_xdr(w)?;
21542 #[allow(clippy::match_same_arms)]
21543 match self {
21544 Self::Basic => ().write_xdr(w)?,
21545 Self::Signed(v) => v.write_xdr(w)?,
21546 };
21547 Ok(())
21548 })
21549 }
21550}
21551
21552#[cfg_attr(feature = "alloc", derive(Default))]
21580#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21581#[cfg_eval::cfg_eval]
21582#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21583#[cfg_attr(
21584 all(feature = "serde", feature = "alloc"),
21585 serde_with::serde_as,
21586 derive(serde::Serialize, serde::Deserialize),
21587 serde(rename_all = "snake_case")
21588)]
21589#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21590pub struct StellarValue {
21591 pub tx_set_hash: Hash,
21592 pub close_time: TimePoint,
21593 pub upgrades: VecM<UpgradeType, 6>,
21594 pub ext: StellarValueExt,
21595}
21596
21597impl ReadXdr for StellarValue {
21598 #[cfg(feature = "std")]
21599 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21600 r.with_limited_depth(|r| {
21601 Ok(Self {
21602 tx_set_hash: Hash::read_xdr(r)?,
21603 close_time: TimePoint::read_xdr(r)?,
21604 upgrades: VecM::<UpgradeType, 6>::read_xdr(r)?,
21605 ext: StellarValueExt::read_xdr(r)?,
21606 })
21607 })
21608 }
21609}
21610
21611impl WriteXdr for StellarValue {
21612 #[cfg(feature = "std")]
21613 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21614 w.with_limited_depth(|w| {
21615 self.tx_set_hash.write_xdr(w)?;
21616 self.close_time.write_xdr(w)?;
21617 self.upgrades.write_xdr(w)?;
21618 self.ext.write_xdr(w)?;
21619 Ok(())
21620 })
21621 }
21622}
21623
21624pub const MASK_LEDGER_HEADER_FLAGS: u64 = 0x7;
21631
21632#[cfg_attr(feature = "alloc", derive(Default))]
21645#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21646#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21647#[cfg_attr(
21648 all(feature = "serde", feature = "alloc"),
21649 derive(serde::Serialize, serde::Deserialize),
21650 serde(rename_all = "snake_case")
21651)]
21652#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21653#[repr(i32)]
21654pub enum LedgerHeaderFlags {
21655 #[cfg_attr(feature = "alloc", default)]
21656 TradingFlag = 1,
21657 DepositFlag = 2,
21658 WithdrawalFlag = 4,
21659}
21660
21661impl LedgerHeaderFlags {
21662 pub const VARIANTS: [LedgerHeaderFlags; 3] = [
21663 LedgerHeaderFlags::TradingFlag,
21664 LedgerHeaderFlags::DepositFlag,
21665 LedgerHeaderFlags::WithdrawalFlag,
21666 ];
21667 pub const VARIANTS_STR: [&'static str; 3] = ["TradingFlag", "DepositFlag", "WithdrawalFlag"];
21668
21669 #[must_use]
21670 pub const fn name(&self) -> &'static str {
21671 match self {
21672 Self::TradingFlag => "TradingFlag",
21673 Self::DepositFlag => "DepositFlag",
21674 Self::WithdrawalFlag => "WithdrawalFlag",
21675 }
21676 }
21677
21678 #[must_use]
21679 pub const fn variants() -> [LedgerHeaderFlags; 3] {
21680 Self::VARIANTS
21681 }
21682}
21683
21684impl Name for LedgerHeaderFlags {
21685 #[must_use]
21686 fn name(&self) -> &'static str {
21687 Self::name(self)
21688 }
21689}
21690
21691impl Variants<LedgerHeaderFlags> for LedgerHeaderFlags {
21692 fn variants() -> slice::Iter<'static, LedgerHeaderFlags> {
21693 Self::VARIANTS.iter()
21694 }
21695}
21696
21697impl Enum for LedgerHeaderFlags {}
21698
21699impl fmt::Display for LedgerHeaderFlags {
21700 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21701 f.write_str(self.name())
21702 }
21703}
21704
21705impl TryFrom<i32> for LedgerHeaderFlags {
21706 type Error = Error;
21707
21708 fn try_from(i: i32) -> Result<Self, Error> {
21709 let e = match i {
21710 1 => LedgerHeaderFlags::TradingFlag,
21711 2 => LedgerHeaderFlags::DepositFlag,
21712 4 => LedgerHeaderFlags::WithdrawalFlag,
21713 #[allow(unreachable_patterns)]
21714 _ => return Err(Error::Invalid),
21715 };
21716 Ok(e)
21717 }
21718}
21719
21720impl From<LedgerHeaderFlags> for i32 {
21721 #[must_use]
21722 fn from(e: LedgerHeaderFlags) -> Self {
21723 e as Self
21724 }
21725}
21726
21727impl ReadXdr for LedgerHeaderFlags {
21728 #[cfg(feature = "std")]
21729 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21730 r.with_limited_depth(|r| {
21731 let e = i32::read_xdr(r)?;
21732 let v: Self = e.try_into()?;
21733 Ok(v)
21734 })
21735 }
21736}
21737
21738impl WriteXdr for LedgerHeaderFlags {
21739 #[cfg(feature = "std")]
21740 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21741 w.with_limited_depth(|w| {
21742 let i: i32 = (*self).into();
21743 i.write_xdr(w)
21744 })
21745 }
21746}
21747
21748#[cfg_eval::cfg_eval]
21760#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21761#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21762#[cfg_attr(
21763 all(feature = "serde", feature = "alloc"),
21764 serde_with::serde_as,
21765 derive(serde::Serialize, serde::Deserialize),
21766 serde(rename_all = "snake_case")
21767)]
21768#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21769#[allow(clippy::large_enum_variant)]
21770pub enum LedgerHeaderExtensionV1Ext {
21771 V0,
21772}
21773
21774#[cfg(feature = "alloc")]
21775impl Default for LedgerHeaderExtensionV1Ext {
21776 fn default() -> Self {
21777 Self::V0
21778 }
21779}
21780
21781impl LedgerHeaderExtensionV1Ext {
21782 pub const VARIANTS: [i32; 1] = [0];
21783 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
21784
21785 #[must_use]
21786 pub const fn name(&self) -> &'static str {
21787 match self {
21788 Self::V0 => "V0",
21789 }
21790 }
21791
21792 #[must_use]
21793 pub const fn discriminant(&self) -> i32 {
21794 #[allow(clippy::match_same_arms)]
21795 match self {
21796 Self::V0 => 0,
21797 }
21798 }
21799
21800 #[must_use]
21801 pub const fn variants() -> [i32; 1] {
21802 Self::VARIANTS
21803 }
21804}
21805
21806impl Name for LedgerHeaderExtensionV1Ext {
21807 #[must_use]
21808 fn name(&self) -> &'static str {
21809 Self::name(self)
21810 }
21811}
21812
21813impl Discriminant<i32> for LedgerHeaderExtensionV1Ext {
21814 #[must_use]
21815 fn discriminant(&self) -> i32 {
21816 Self::discriminant(self)
21817 }
21818}
21819
21820impl Variants<i32> for LedgerHeaderExtensionV1Ext {
21821 fn variants() -> slice::Iter<'static, i32> {
21822 Self::VARIANTS.iter()
21823 }
21824}
21825
21826impl Union<i32> for LedgerHeaderExtensionV1Ext {}
21827
21828impl ReadXdr for LedgerHeaderExtensionV1Ext {
21829 #[cfg(feature = "std")]
21830 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21831 r.with_limited_depth(|r| {
21832 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
21833 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
21834 let v = match dv {
21835 0 => Self::V0,
21836 #[allow(unreachable_patterns)]
21837 _ => return Err(Error::Invalid),
21838 };
21839 Ok(v)
21840 })
21841 }
21842}
21843
21844impl WriteXdr for LedgerHeaderExtensionV1Ext {
21845 #[cfg(feature = "std")]
21846 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21847 w.with_limited_depth(|w| {
21848 self.discriminant().write_xdr(w)?;
21849 #[allow(clippy::match_same_arms)]
21850 match self {
21851 Self::V0 => ().write_xdr(w)?,
21852 };
21853 Ok(())
21854 })
21855 }
21856}
21857
21858#[cfg_attr(feature = "alloc", derive(Default))]
21875#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21876#[cfg_eval::cfg_eval]
21877#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21878#[cfg_attr(
21879 all(feature = "serde", feature = "alloc"),
21880 serde_with::serde_as,
21881 derive(serde::Serialize, serde::Deserialize),
21882 serde(rename_all = "snake_case")
21883)]
21884#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21885pub struct LedgerHeaderExtensionV1 {
21886 pub flags: u32,
21887 pub ext: LedgerHeaderExtensionV1Ext,
21888}
21889
21890impl ReadXdr for LedgerHeaderExtensionV1 {
21891 #[cfg(feature = "std")]
21892 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
21893 r.with_limited_depth(|r| {
21894 Ok(Self {
21895 flags: u32::read_xdr(r)?,
21896 ext: LedgerHeaderExtensionV1Ext::read_xdr(r)?,
21897 })
21898 })
21899 }
21900}
21901
21902impl WriteXdr for LedgerHeaderExtensionV1 {
21903 #[cfg(feature = "std")]
21904 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
21905 w.with_limited_depth(|w| {
21906 self.flags.write_xdr(w)?;
21907 self.ext.write_xdr(w)?;
21908 Ok(())
21909 })
21910 }
21911}
21912
21913#[cfg_eval::cfg_eval]
21927#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
21928#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
21929#[cfg_attr(
21930 all(feature = "serde", feature = "alloc"),
21931 serde_with::serde_as,
21932 derive(serde::Serialize, serde::Deserialize),
21933 serde(rename_all = "snake_case")
21934)]
21935#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
21936#[allow(clippy::large_enum_variant)]
21937pub enum LedgerHeaderExt {
21938 V0,
21939 V1(LedgerHeaderExtensionV1),
21940}
21941
21942#[cfg(feature = "alloc")]
21943impl Default for LedgerHeaderExt {
21944 fn default() -> Self {
21945 Self::V0
21946 }
21947}
21948
21949impl LedgerHeaderExt {
21950 pub const VARIANTS: [i32; 2] = [0, 1];
21951 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
21952
21953 #[must_use]
21954 pub const fn name(&self) -> &'static str {
21955 match self {
21956 Self::V0 => "V0",
21957 Self::V1(_) => "V1",
21958 }
21959 }
21960
21961 #[must_use]
21962 pub const fn discriminant(&self) -> i32 {
21963 #[allow(clippy::match_same_arms)]
21964 match self {
21965 Self::V0 => 0,
21966 Self::V1(_) => 1,
21967 }
21968 }
21969
21970 #[must_use]
21971 pub const fn variants() -> [i32; 2] {
21972 Self::VARIANTS
21973 }
21974}
21975
21976impl Name for LedgerHeaderExt {
21977 #[must_use]
21978 fn name(&self) -> &'static str {
21979 Self::name(self)
21980 }
21981}
21982
21983impl Discriminant<i32> for LedgerHeaderExt {
21984 #[must_use]
21985 fn discriminant(&self) -> i32 {
21986 Self::discriminant(self)
21987 }
21988}
21989
21990impl Variants<i32> for LedgerHeaderExt {
21991 fn variants() -> slice::Iter<'static, i32> {
21992 Self::VARIANTS.iter()
21993 }
21994}
21995
21996impl Union<i32> for LedgerHeaderExt {}
21997
21998impl ReadXdr for LedgerHeaderExt {
21999 #[cfg(feature = "std")]
22000 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22001 r.with_limited_depth(|r| {
22002 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
22003 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
22004 let v = match dv {
22005 0 => Self::V0,
22006 1 => Self::V1(LedgerHeaderExtensionV1::read_xdr(r)?),
22007 #[allow(unreachable_patterns)]
22008 _ => return Err(Error::Invalid),
22009 };
22010 Ok(v)
22011 })
22012 }
22013}
22014
22015impl WriteXdr for LedgerHeaderExt {
22016 #[cfg(feature = "std")]
22017 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22018 w.with_limited_depth(|w| {
22019 self.discriminant().write_xdr(w)?;
22020 #[allow(clippy::match_same_arms)]
22021 match self {
22022 Self::V0 => ().write_xdr(w)?,
22023 Self::V1(v) => v.write_xdr(w)?,
22024 };
22025 Ok(())
22026 })
22027 }
22028}
22029
22030#[cfg_attr(feature = "alloc", derive(Default))]
22075#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22076#[cfg_eval::cfg_eval]
22077#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22078#[cfg_attr(
22079 all(feature = "serde", feature = "alloc"),
22080 serde_with::serde_as,
22081 derive(serde::Serialize, serde::Deserialize),
22082 serde(rename_all = "snake_case")
22083)]
22084#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22085pub struct LedgerHeader {
22086 pub ledger_version: u32,
22087 pub previous_ledger_hash: Hash,
22088 pub scp_value: StellarValue,
22089 pub tx_set_result_hash: Hash,
22090 pub bucket_list_hash: Hash,
22091 pub ledger_seq: u32,
22092 #[cfg_attr(
22093 all(feature = "serde", feature = "alloc"),
22094 serde_as(as = "NumberOrString")
22095 )]
22096 pub total_coins: i64,
22097 #[cfg_attr(
22098 all(feature = "serde", feature = "alloc"),
22099 serde_as(as = "NumberOrString")
22100 )]
22101 pub fee_pool: i64,
22102 pub inflation_seq: u32,
22103 #[cfg_attr(
22104 all(feature = "serde", feature = "alloc"),
22105 serde_as(as = "NumberOrString")
22106 )]
22107 pub id_pool: u64,
22108 pub base_fee: u32,
22109 pub base_reserve: u32,
22110 pub max_tx_set_size: u32,
22111 pub skip_list: [Hash; 4],
22112 pub ext: LedgerHeaderExt,
22113}
22114
22115impl ReadXdr for LedgerHeader {
22116 #[cfg(feature = "std")]
22117 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22118 r.with_limited_depth(|r| {
22119 Ok(Self {
22120 ledger_version: u32::read_xdr(r)?,
22121 previous_ledger_hash: Hash::read_xdr(r)?,
22122 scp_value: StellarValue::read_xdr(r)?,
22123 tx_set_result_hash: Hash::read_xdr(r)?,
22124 bucket_list_hash: Hash::read_xdr(r)?,
22125 ledger_seq: u32::read_xdr(r)?,
22126 total_coins: i64::read_xdr(r)?,
22127 fee_pool: i64::read_xdr(r)?,
22128 inflation_seq: u32::read_xdr(r)?,
22129 id_pool: u64::read_xdr(r)?,
22130 base_fee: u32::read_xdr(r)?,
22131 base_reserve: u32::read_xdr(r)?,
22132 max_tx_set_size: u32::read_xdr(r)?,
22133 skip_list: <[Hash; 4]>::read_xdr(r)?,
22134 ext: LedgerHeaderExt::read_xdr(r)?,
22135 })
22136 })
22137 }
22138}
22139
22140impl WriteXdr for LedgerHeader {
22141 #[cfg(feature = "std")]
22142 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22143 w.with_limited_depth(|w| {
22144 self.ledger_version.write_xdr(w)?;
22145 self.previous_ledger_hash.write_xdr(w)?;
22146 self.scp_value.write_xdr(w)?;
22147 self.tx_set_result_hash.write_xdr(w)?;
22148 self.bucket_list_hash.write_xdr(w)?;
22149 self.ledger_seq.write_xdr(w)?;
22150 self.total_coins.write_xdr(w)?;
22151 self.fee_pool.write_xdr(w)?;
22152 self.inflation_seq.write_xdr(w)?;
22153 self.id_pool.write_xdr(w)?;
22154 self.base_fee.write_xdr(w)?;
22155 self.base_reserve.write_xdr(w)?;
22156 self.max_tx_set_size.write_xdr(w)?;
22157 self.skip_list.write_xdr(w)?;
22158 self.ext.write_xdr(w)?;
22159 Ok(())
22160 })
22161 }
22162}
22163
22164#[cfg_attr(feature = "alloc", derive(Default))]
22181#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22182#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22183#[cfg_attr(
22184 all(feature = "serde", feature = "alloc"),
22185 derive(serde::Serialize, serde::Deserialize),
22186 serde(rename_all = "snake_case")
22187)]
22188#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22189#[repr(i32)]
22190pub enum LedgerUpgradeType {
22191 #[cfg_attr(feature = "alloc", default)]
22192 Version = 1,
22193 BaseFee = 2,
22194 MaxTxSetSize = 3,
22195 BaseReserve = 4,
22196 Flags = 5,
22197 Config = 6,
22198 MaxSorobanTxSetSize = 7,
22199}
22200
22201impl LedgerUpgradeType {
22202 pub const VARIANTS: [LedgerUpgradeType; 7] = [
22203 LedgerUpgradeType::Version,
22204 LedgerUpgradeType::BaseFee,
22205 LedgerUpgradeType::MaxTxSetSize,
22206 LedgerUpgradeType::BaseReserve,
22207 LedgerUpgradeType::Flags,
22208 LedgerUpgradeType::Config,
22209 LedgerUpgradeType::MaxSorobanTxSetSize,
22210 ];
22211 pub const VARIANTS_STR: [&'static str; 7] = [
22212 "Version",
22213 "BaseFee",
22214 "MaxTxSetSize",
22215 "BaseReserve",
22216 "Flags",
22217 "Config",
22218 "MaxSorobanTxSetSize",
22219 ];
22220
22221 #[must_use]
22222 pub const fn name(&self) -> &'static str {
22223 match self {
22224 Self::Version => "Version",
22225 Self::BaseFee => "BaseFee",
22226 Self::MaxTxSetSize => "MaxTxSetSize",
22227 Self::BaseReserve => "BaseReserve",
22228 Self::Flags => "Flags",
22229 Self::Config => "Config",
22230 Self::MaxSorobanTxSetSize => "MaxSorobanTxSetSize",
22231 }
22232 }
22233
22234 #[must_use]
22235 pub const fn variants() -> [LedgerUpgradeType; 7] {
22236 Self::VARIANTS
22237 }
22238}
22239
22240impl Name for LedgerUpgradeType {
22241 #[must_use]
22242 fn name(&self) -> &'static str {
22243 Self::name(self)
22244 }
22245}
22246
22247impl Variants<LedgerUpgradeType> for LedgerUpgradeType {
22248 fn variants() -> slice::Iter<'static, LedgerUpgradeType> {
22249 Self::VARIANTS.iter()
22250 }
22251}
22252
22253impl Enum for LedgerUpgradeType {}
22254
22255impl fmt::Display for LedgerUpgradeType {
22256 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22257 f.write_str(self.name())
22258 }
22259}
22260
22261impl TryFrom<i32> for LedgerUpgradeType {
22262 type Error = Error;
22263
22264 fn try_from(i: i32) -> Result<Self, Error> {
22265 let e = match i {
22266 1 => LedgerUpgradeType::Version,
22267 2 => LedgerUpgradeType::BaseFee,
22268 3 => LedgerUpgradeType::MaxTxSetSize,
22269 4 => LedgerUpgradeType::BaseReserve,
22270 5 => LedgerUpgradeType::Flags,
22271 6 => LedgerUpgradeType::Config,
22272 7 => LedgerUpgradeType::MaxSorobanTxSetSize,
22273 #[allow(unreachable_patterns)]
22274 _ => return Err(Error::Invalid),
22275 };
22276 Ok(e)
22277 }
22278}
22279
22280impl From<LedgerUpgradeType> for i32 {
22281 #[must_use]
22282 fn from(e: LedgerUpgradeType) -> Self {
22283 e as Self
22284 }
22285}
22286
22287impl ReadXdr for LedgerUpgradeType {
22288 #[cfg(feature = "std")]
22289 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22290 r.with_limited_depth(|r| {
22291 let e = i32::read_xdr(r)?;
22292 let v: Self = e.try_into()?;
22293 Ok(v)
22294 })
22295 }
22296}
22297
22298impl WriteXdr for LedgerUpgradeType {
22299 #[cfg(feature = "std")]
22300 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22301 w.with_limited_depth(|w| {
22302 let i: i32 = (*self).into();
22303 i.write_xdr(w)
22304 })
22305 }
22306}
22307
22308#[cfg_attr(feature = "alloc", derive(Default))]
22318#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22319#[cfg_eval::cfg_eval]
22320#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22321#[cfg_attr(
22322 all(feature = "serde", feature = "alloc"),
22323 serde_with::serde_as,
22324 derive(serde::Serialize, serde::Deserialize),
22325 serde(rename_all = "snake_case")
22326)]
22327#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22328pub struct ConfigUpgradeSetKey {
22329 pub contract_id: ContractId,
22330 pub content_hash: Hash,
22331}
22332
22333impl ReadXdr for ConfigUpgradeSetKey {
22334 #[cfg(feature = "std")]
22335 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22336 r.with_limited_depth(|r| {
22337 Ok(Self {
22338 contract_id: ContractId::read_xdr(r)?,
22339 content_hash: Hash::read_xdr(r)?,
22340 })
22341 })
22342 }
22343}
22344
22345impl WriteXdr for ConfigUpgradeSetKey {
22346 #[cfg(feature = "std")]
22347 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22348 w.with_limited_depth(|w| {
22349 self.contract_id.write_xdr(w)?;
22350 self.content_hash.write_xdr(w)?;
22351 Ok(())
22352 })
22353 }
22354}
22355
22356#[cfg_eval::cfg_eval]
22383#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22384#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22385#[cfg_attr(
22386 all(feature = "serde", feature = "alloc"),
22387 serde_with::serde_as,
22388 derive(serde::Serialize, serde::Deserialize),
22389 serde(rename_all = "snake_case")
22390)]
22391#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22392#[allow(clippy::large_enum_variant)]
22393pub enum LedgerUpgrade {
22394 Version(u32),
22395 BaseFee(u32),
22396 MaxTxSetSize(u32),
22397 BaseReserve(u32),
22398 Flags(u32),
22399 Config(ConfigUpgradeSetKey),
22400 MaxSorobanTxSetSize(u32),
22401}
22402
22403#[cfg(feature = "alloc")]
22404impl Default for LedgerUpgrade {
22405 fn default() -> Self {
22406 Self::Version(u32::default())
22407 }
22408}
22409
22410impl LedgerUpgrade {
22411 pub const VARIANTS: [LedgerUpgradeType; 7] = [
22412 LedgerUpgradeType::Version,
22413 LedgerUpgradeType::BaseFee,
22414 LedgerUpgradeType::MaxTxSetSize,
22415 LedgerUpgradeType::BaseReserve,
22416 LedgerUpgradeType::Flags,
22417 LedgerUpgradeType::Config,
22418 LedgerUpgradeType::MaxSorobanTxSetSize,
22419 ];
22420 pub const VARIANTS_STR: [&'static str; 7] = [
22421 "Version",
22422 "BaseFee",
22423 "MaxTxSetSize",
22424 "BaseReserve",
22425 "Flags",
22426 "Config",
22427 "MaxSorobanTxSetSize",
22428 ];
22429
22430 #[must_use]
22431 pub const fn name(&self) -> &'static str {
22432 match self {
22433 Self::Version(_) => "Version",
22434 Self::BaseFee(_) => "BaseFee",
22435 Self::MaxTxSetSize(_) => "MaxTxSetSize",
22436 Self::BaseReserve(_) => "BaseReserve",
22437 Self::Flags(_) => "Flags",
22438 Self::Config(_) => "Config",
22439 Self::MaxSorobanTxSetSize(_) => "MaxSorobanTxSetSize",
22440 }
22441 }
22442
22443 #[must_use]
22444 pub const fn discriminant(&self) -> LedgerUpgradeType {
22445 #[allow(clippy::match_same_arms)]
22446 match self {
22447 Self::Version(_) => LedgerUpgradeType::Version,
22448 Self::BaseFee(_) => LedgerUpgradeType::BaseFee,
22449 Self::MaxTxSetSize(_) => LedgerUpgradeType::MaxTxSetSize,
22450 Self::BaseReserve(_) => LedgerUpgradeType::BaseReserve,
22451 Self::Flags(_) => LedgerUpgradeType::Flags,
22452 Self::Config(_) => LedgerUpgradeType::Config,
22453 Self::MaxSorobanTxSetSize(_) => LedgerUpgradeType::MaxSorobanTxSetSize,
22454 }
22455 }
22456
22457 #[must_use]
22458 pub const fn variants() -> [LedgerUpgradeType; 7] {
22459 Self::VARIANTS
22460 }
22461}
22462
22463impl Name for LedgerUpgrade {
22464 #[must_use]
22465 fn name(&self) -> &'static str {
22466 Self::name(self)
22467 }
22468}
22469
22470impl Discriminant<LedgerUpgradeType> for LedgerUpgrade {
22471 #[must_use]
22472 fn discriminant(&self) -> LedgerUpgradeType {
22473 Self::discriminant(self)
22474 }
22475}
22476
22477impl Variants<LedgerUpgradeType> for LedgerUpgrade {
22478 fn variants() -> slice::Iter<'static, LedgerUpgradeType> {
22479 Self::VARIANTS.iter()
22480 }
22481}
22482
22483impl Union<LedgerUpgradeType> for LedgerUpgrade {}
22484
22485impl ReadXdr for LedgerUpgrade {
22486 #[cfg(feature = "std")]
22487 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22488 r.with_limited_depth(|r| {
22489 let dv: LedgerUpgradeType = <LedgerUpgradeType as ReadXdr>::read_xdr(r)?;
22490 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
22491 let v = match dv {
22492 LedgerUpgradeType::Version => Self::Version(u32::read_xdr(r)?),
22493 LedgerUpgradeType::BaseFee => Self::BaseFee(u32::read_xdr(r)?),
22494 LedgerUpgradeType::MaxTxSetSize => Self::MaxTxSetSize(u32::read_xdr(r)?),
22495 LedgerUpgradeType::BaseReserve => Self::BaseReserve(u32::read_xdr(r)?),
22496 LedgerUpgradeType::Flags => Self::Flags(u32::read_xdr(r)?),
22497 LedgerUpgradeType::Config => Self::Config(ConfigUpgradeSetKey::read_xdr(r)?),
22498 LedgerUpgradeType::MaxSorobanTxSetSize => {
22499 Self::MaxSorobanTxSetSize(u32::read_xdr(r)?)
22500 }
22501 #[allow(unreachable_patterns)]
22502 _ => return Err(Error::Invalid),
22503 };
22504 Ok(v)
22505 })
22506 }
22507}
22508
22509impl WriteXdr for LedgerUpgrade {
22510 #[cfg(feature = "std")]
22511 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22512 w.with_limited_depth(|w| {
22513 self.discriminant().write_xdr(w)?;
22514 #[allow(clippy::match_same_arms)]
22515 match self {
22516 Self::Version(v) => v.write_xdr(w)?,
22517 Self::BaseFee(v) => v.write_xdr(w)?,
22518 Self::MaxTxSetSize(v) => v.write_xdr(w)?,
22519 Self::BaseReserve(v) => v.write_xdr(w)?,
22520 Self::Flags(v) => v.write_xdr(w)?,
22521 Self::Config(v) => v.write_xdr(w)?,
22522 Self::MaxSorobanTxSetSize(v) => v.write_xdr(w)?,
22523 };
22524 Ok(())
22525 })
22526 }
22527}
22528
22529#[cfg_attr(feature = "alloc", derive(Default))]
22538#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22539#[cfg_eval::cfg_eval]
22540#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22541#[cfg_attr(
22542 all(feature = "serde", feature = "alloc"),
22543 serde_with::serde_as,
22544 derive(serde::Serialize, serde::Deserialize),
22545 serde(rename_all = "snake_case")
22546)]
22547#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22548pub struct ConfigUpgradeSet {
22549 pub updated_entry: VecM<ConfigSettingEntry>,
22550}
22551
22552impl ReadXdr for ConfigUpgradeSet {
22553 #[cfg(feature = "std")]
22554 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22555 r.with_limited_depth(|r| {
22556 Ok(Self {
22557 updated_entry: VecM::<ConfigSettingEntry>::read_xdr(r)?,
22558 })
22559 })
22560 }
22561}
22562
22563impl WriteXdr for ConfigUpgradeSet {
22564 #[cfg(feature = "std")]
22565 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22566 w.with_limited_depth(|w| {
22567 self.updated_entry.write_xdr(w)?;
22568 Ok(())
22569 })
22570 }
22571}
22572
22573#[cfg_attr(feature = "alloc", derive(Default))]
22586#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22587#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22588#[cfg_attr(
22589 all(feature = "serde", feature = "alloc"),
22590 derive(serde::Serialize, serde::Deserialize),
22591 serde(rename_all = "snake_case")
22592)]
22593#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22594#[repr(i32)]
22595pub enum TxSetComponentType {
22596 #[cfg_attr(feature = "alloc", default)]
22597 TxsetCompTxsMaybeDiscountedFee = 0,
22598}
22599
22600impl TxSetComponentType {
22601 pub const VARIANTS: [TxSetComponentType; 1] =
22602 [TxSetComponentType::TxsetCompTxsMaybeDiscountedFee];
22603 pub const VARIANTS_STR: [&'static str; 1] = ["TxsetCompTxsMaybeDiscountedFee"];
22604
22605 #[must_use]
22606 pub const fn name(&self) -> &'static str {
22607 match self {
22608 Self::TxsetCompTxsMaybeDiscountedFee => "TxsetCompTxsMaybeDiscountedFee",
22609 }
22610 }
22611
22612 #[must_use]
22613 pub const fn variants() -> [TxSetComponentType; 1] {
22614 Self::VARIANTS
22615 }
22616}
22617
22618impl Name for TxSetComponentType {
22619 #[must_use]
22620 fn name(&self) -> &'static str {
22621 Self::name(self)
22622 }
22623}
22624
22625impl Variants<TxSetComponentType> for TxSetComponentType {
22626 fn variants() -> slice::Iter<'static, TxSetComponentType> {
22627 Self::VARIANTS.iter()
22628 }
22629}
22630
22631impl Enum for TxSetComponentType {}
22632
22633impl fmt::Display for TxSetComponentType {
22634 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22635 f.write_str(self.name())
22636 }
22637}
22638
22639impl TryFrom<i32> for TxSetComponentType {
22640 type Error = Error;
22641
22642 fn try_from(i: i32) -> Result<Self, Error> {
22643 let e = match i {
22644 0 => TxSetComponentType::TxsetCompTxsMaybeDiscountedFee,
22645 #[allow(unreachable_patterns)]
22646 _ => return Err(Error::Invalid),
22647 };
22648 Ok(e)
22649 }
22650}
22651
22652impl From<TxSetComponentType> for i32 {
22653 #[must_use]
22654 fn from(e: TxSetComponentType) -> Self {
22655 e as Self
22656 }
22657}
22658
22659impl ReadXdr for TxSetComponentType {
22660 #[cfg(feature = "std")]
22661 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22662 r.with_limited_depth(|r| {
22663 let e = i32::read_xdr(r)?;
22664 let v: Self = e.try_into()?;
22665 Ok(v)
22666 })
22667 }
22668}
22669
22670impl WriteXdr for TxSetComponentType {
22671 #[cfg(feature = "std")]
22672 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22673 w.with_limited_depth(|w| {
22674 let i: i32 = (*self).into();
22675 i.write_xdr(w)
22676 })
22677 }
22678}
22679
22680#[cfg_eval::cfg_eval]
22687#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
22688#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22689#[cfg_attr(
22690 all(feature = "serde", feature = "alloc"),
22691 serde_with::serde_as,
22692 derive(serde::Serialize, serde::Deserialize),
22693 serde(rename_all = "snake_case")
22694)]
22695#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22696#[derive(Debug)]
22697pub struct DependentTxCluster(pub VecM<TransactionEnvelope>);
22698
22699impl From<DependentTxCluster> for VecM<TransactionEnvelope> {
22700 #[must_use]
22701 fn from(x: DependentTxCluster) -> Self {
22702 x.0
22703 }
22704}
22705
22706impl From<VecM<TransactionEnvelope>> for DependentTxCluster {
22707 #[must_use]
22708 fn from(x: VecM<TransactionEnvelope>) -> Self {
22709 DependentTxCluster(x)
22710 }
22711}
22712
22713impl AsRef<VecM<TransactionEnvelope>> for DependentTxCluster {
22714 #[must_use]
22715 fn as_ref(&self) -> &VecM<TransactionEnvelope> {
22716 &self.0
22717 }
22718}
22719
22720impl ReadXdr for DependentTxCluster {
22721 #[cfg(feature = "std")]
22722 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22723 r.with_limited_depth(|r| {
22724 let i = VecM::<TransactionEnvelope>::read_xdr(r)?;
22725 let v = DependentTxCluster(i);
22726 Ok(v)
22727 })
22728 }
22729}
22730
22731impl WriteXdr for DependentTxCluster {
22732 #[cfg(feature = "std")]
22733 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22734 w.with_limited_depth(|w| self.0.write_xdr(w))
22735 }
22736}
22737
22738impl Deref for DependentTxCluster {
22739 type Target = VecM<TransactionEnvelope>;
22740 fn deref(&self) -> &Self::Target {
22741 &self.0
22742 }
22743}
22744
22745impl From<DependentTxCluster> for Vec<TransactionEnvelope> {
22746 #[must_use]
22747 fn from(x: DependentTxCluster) -> Self {
22748 x.0 .0
22749 }
22750}
22751
22752impl TryFrom<Vec<TransactionEnvelope>> for DependentTxCluster {
22753 type Error = Error;
22754 fn try_from(x: Vec<TransactionEnvelope>) -> Result<Self, Error> {
22755 Ok(DependentTxCluster(x.try_into()?))
22756 }
22757}
22758
22759#[cfg(feature = "alloc")]
22760impl TryFrom<&Vec<TransactionEnvelope>> for DependentTxCluster {
22761 type Error = Error;
22762 fn try_from(x: &Vec<TransactionEnvelope>) -> Result<Self, Error> {
22763 Ok(DependentTxCluster(x.try_into()?))
22764 }
22765}
22766
22767impl AsRef<Vec<TransactionEnvelope>> for DependentTxCluster {
22768 #[must_use]
22769 fn as_ref(&self) -> &Vec<TransactionEnvelope> {
22770 &self.0 .0
22771 }
22772}
22773
22774impl AsRef<[TransactionEnvelope]> for DependentTxCluster {
22775 #[cfg(feature = "alloc")]
22776 #[must_use]
22777 fn as_ref(&self) -> &[TransactionEnvelope] {
22778 &self.0 .0
22779 }
22780 #[cfg(not(feature = "alloc"))]
22781 #[must_use]
22782 fn as_ref(&self) -> &[TransactionEnvelope] {
22783 self.0 .0
22784 }
22785}
22786
22787#[cfg_eval::cfg_eval]
22794#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
22795#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22796#[cfg_attr(
22797 all(feature = "serde", feature = "alloc"),
22798 serde_with::serde_as,
22799 derive(serde::Serialize, serde::Deserialize),
22800 serde(rename_all = "snake_case")
22801)]
22802#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22803#[derive(Debug)]
22804pub struct ParallelTxExecutionStage(pub VecM<DependentTxCluster>);
22805
22806impl From<ParallelTxExecutionStage> for VecM<DependentTxCluster> {
22807 #[must_use]
22808 fn from(x: ParallelTxExecutionStage) -> Self {
22809 x.0
22810 }
22811}
22812
22813impl From<VecM<DependentTxCluster>> for ParallelTxExecutionStage {
22814 #[must_use]
22815 fn from(x: VecM<DependentTxCluster>) -> Self {
22816 ParallelTxExecutionStage(x)
22817 }
22818}
22819
22820impl AsRef<VecM<DependentTxCluster>> for ParallelTxExecutionStage {
22821 #[must_use]
22822 fn as_ref(&self) -> &VecM<DependentTxCluster> {
22823 &self.0
22824 }
22825}
22826
22827impl ReadXdr for ParallelTxExecutionStage {
22828 #[cfg(feature = "std")]
22829 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22830 r.with_limited_depth(|r| {
22831 let i = VecM::<DependentTxCluster>::read_xdr(r)?;
22832 let v = ParallelTxExecutionStage(i);
22833 Ok(v)
22834 })
22835 }
22836}
22837
22838impl WriteXdr for ParallelTxExecutionStage {
22839 #[cfg(feature = "std")]
22840 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22841 w.with_limited_depth(|w| self.0.write_xdr(w))
22842 }
22843}
22844
22845impl Deref for ParallelTxExecutionStage {
22846 type Target = VecM<DependentTxCluster>;
22847 fn deref(&self) -> &Self::Target {
22848 &self.0
22849 }
22850}
22851
22852impl From<ParallelTxExecutionStage> for Vec<DependentTxCluster> {
22853 #[must_use]
22854 fn from(x: ParallelTxExecutionStage) -> Self {
22855 x.0 .0
22856 }
22857}
22858
22859impl TryFrom<Vec<DependentTxCluster>> for ParallelTxExecutionStage {
22860 type Error = Error;
22861 fn try_from(x: Vec<DependentTxCluster>) -> Result<Self, Error> {
22862 Ok(ParallelTxExecutionStage(x.try_into()?))
22863 }
22864}
22865
22866#[cfg(feature = "alloc")]
22867impl TryFrom<&Vec<DependentTxCluster>> for ParallelTxExecutionStage {
22868 type Error = Error;
22869 fn try_from(x: &Vec<DependentTxCluster>) -> Result<Self, Error> {
22870 Ok(ParallelTxExecutionStage(x.try_into()?))
22871 }
22872}
22873
22874impl AsRef<Vec<DependentTxCluster>> for ParallelTxExecutionStage {
22875 #[must_use]
22876 fn as_ref(&self) -> &Vec<DependentTxCluster> {
22877 &self.0 .0
22878 }
22879}
22880
22881impl AsRef<[DependentTxCluster]> for ParallelTxExecutionStage {
22882 #[cfg(feature = "alloc")]
22883 #[must_use]
22884 fn as_ref(&self) -> &[DependentTxCluster] {
22885 &self.0 .0
22886 }
22887 #[cfg(not(feature = "alloc"))]
22888 #[must_use]
22889 fn as_ref(&self) -> &[DependentTxCluster] {
22890 self.0 .0
22891 }
22892}
22893
22894#[cfg_attr(feature = "alloc", derive(Default))]
22908#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22909#[cfg_eval::cfg_eval]
22910#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22911#[cfg_attr(
22912 all(feature = "serde", feature = "alloc"),
22913 serde_with::serde_as,
22914 derive(serde::Serialize, serde::Deserialize),
22915 serde(rename_all = "snake_case")
22916)]
22917#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22918pub struct ParallelTxsComponent {
22919 #[cfg_attr(
22920 all(feature = "serde", feature = "alloc"),
22921 serde_as(as = "Option<NumberOrString>")
22922 )]
22923 pub base_fee: Option<i64>,
22924 pub execution_stages: VecM<ParallelTxExecutionStage>,
22925}
22926
22927impl ReadXdr for ParallelTxsComponent {
22928 #[cfg(feature = "std")]
22929 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22930 r.with_limited_depth(|r| {
22931 Ok(Self {
22932 base_fee: Option::<i64>::read_xdr(r)?,
22933 execution_stages: VecM::<ParallelTxExecutionStage>::read_xdr(r)?,
22934 })
22935 })
22936 }
22937}
22938
22939impl WriteXdr for ParallelTxsComponent {
22940 #[cfg(feature = "std")]
22941 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22942 w.with_limited_depth(|w| {
22943 self.base_fee.write_xdr(w)?;
22944 self.execution_stages.write_xdr(w)?;
22945 Ok(())
22946 })
22947 }
22948}
22949
22950#[cfg_attr(feature = "alloc", derive(Default))]
22961#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
22962#[cfg_eval::cfg_eval]
22963#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
22964#[cfg_attr(
22965 all(feature = "serde", feature = "alloc"),
22966 serde_with::serde_as,
22967 derive(serde::Serialize, serde::Deserialize),
22968 serde(rename_all = "snake_case")
22969)]
22970#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
22971pub struct TxSetComponentTxsMaybeDiscountedFee {
22972 #[cfg_attr(
22973 all(feature = "serde", feature = "alloc"),
22974 serde_as(as = "Option<NumberOrString>")
22975 )]
22976 pub base_fee: Option<i64>,
22977 pub txs: VecM<TransactionEnvelope>,
22978}
22979
22980impl ReadXdr for TxSetComponentTxsMaybeDiscountedFee {
22981 #[cfg(feature = "std")]
22982 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
22983 r.with_limited_depth(|r| {
22984 Ok(Self {
22985 base_fee: Option::<i64>::read_xdr(r)?,
22986 txs: VecM::<TransactionEnvelope>::read_xdr(r)?,
22987 })
22988 })
22989 }
22990}
22991
22992impl WriteXdr for TxSetComponentTxsMaybeDiscountedFee {
22993 #[cfg(feature = "std")]
22994 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
22995 w.with_limited_depth(|w| {
22996 self.base_fee.write_xdr(w)?;
22997 self.txs.write_xdr(w)?;
22998 Ok(())
22999 })
23000 }
23001}
23002
23003#[cfg_eval::cfg_eval]
23019#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23020#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23021#[cfg_attr(
23022 all(feature = "serde", feature = "alloc"),
23023 serde_with::serde_as,
23024 derive(serde::Serialize, serde::Deserialize),
23025 serde(rename_all = "snake_case")
23026)]
23027#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23028#[allow(clippy::large_enum_variant)]
23029pub enum TxSetComponent {
23030 TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee),
23031}
23032
23033#[cfg(feature = "alloc")]
23034impl Default for TxSetComponent {
23035 fn default() -> Self {
23036 Self::TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee::default())
23037 }
23038}
23039
23040impl TxSetComponent {
23041 pub const VARIANTS: [TxSetComponentType; 1] =
23042 [TxSetComponentType::TxsetCompTxsMaybeDiscountedFee];
23043 pub const VARIANTS_STR: [&'static str; 1] = ["TxsetCompTxsMaybeDiscountedFee"];
23044
23045 #[must_use]
23046 pub const fn name(&self) -> &'static str {
23047 match self {
23048 Self::TxsetCompTxsMaybeDiscountedFee(_) => "TxsetCompTxsMaybeDiscountedFee",
23049 }
23050 }
23051
23052 #[must_use]
23053 pub const fn discriminant(&self) -> TxSetComponentType {
23054 #[allow(clippy::match_same_arms)]
23055 match self {
23056 Self::TxsetCompTxsMaybeDiscountedFee(_) => {
23057 TxSetComponentType::TxsetCompTxsMaybeDiscountedFee
23058 }
23059 }
23060 }
23061
23062 #[must_use]
23063 pub const fn variants() -> [TxSetComponentType; 1] {
23064 Self::VARIANTS
23065 }
23066}
23067
23068impl Name for TxSetComponent {
23069 #[must_use]
23070 fn name(&self) -> &'static str {
23071 Self::name(self)
23072 }
23073}
23074
23075impl Discriminant<TxSetComponentType> for TxSetComponent {
23076 #[must_use]
23077 fn discriminant(&self) -> TxSetComponentType {
23078 Self::discriminant(self)
23079 }
23080}
23081
23082impl Variants<TxSetComponentType> for TxSetComponent {
23083 fn variants() -> slice::Iter<'static, TxSetComponentType> {
23084 Self::VARIANTS.iter()
23085 }
23086}
23087
23088impl Union<TxSetComponentType> for TxSetComponent {}
23089
23090impl ReadXdr for TxSetComponent {
23091 #[cfg(feature = "std")]
23092 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23093 r.with_limited_depth(|r| {
23094 let dv: TxSetComponentType = <TxSetComponentType as ReadXdr>::read_xdr(r)?;
23095 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23096 let v = match dv {
23097 TxSetComponentType::TxsetCompTxsMaybeDiscountedFee => {
23098 Self::TxsetCompTxsMaybeDiscountedFee(
23099 TxSetComponentTxsMaybeDiscountedFee::read_xdr(r)?,
23100 )
23101 }
23102 #[allow(unreachable_patterns)]
23103 _ => return Err(Error::Invalid),
23104 };
23105 Ok(v)
23106 })
23107 }
23108}
23109
23110impl WriteXdr for TxSetComponent {
23111 #[cfg(feature = "std")]
23112 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23113 w.with_limited_depth(|w| {
23114 self.discriminant().write_xdr(w)?;
23115 #[allow(clippy::match_same_arms)]
23116 match self {
23117 Self::TxsetCompTxsMaybeDiscountedFee(v) => v.write_xdr(w)?,
23118 };
23119 Ok(())
23120 })
23121 }
23122}
23123
23124#[cfg_eval::cfg_eval]
23138#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23139#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23140#[cfg_attr(
23141 all(feature = "serde", feature = "alloc"),
23142 serde_with::serde_as,
23143 derive(serde::Serialize, serde::Deserialize),
23144 serde(rename_all = "snake_case")
23145)]
23146#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23147#[allow(clippy::large_enum_variant)]
23148pub enum TransactionPhase {
23149 V0(VecM<TxSetComponent>),
23150 V1(ParallelTxsComponent),
23151}
23152
23153#[cfg(feature = "alloc")]
23154impl Default for TransactionPhase {
23155 fn default() -> Self {
23156 Self::V0(VecM::<TxSetComponent>::default())
23157 }
23158}
23159
23160impl TransactionPhase {
23161 pub const VARIANTS: [i32; 2] = [0, 1];
23162 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
23163
23164 #[must_use]
23165 pub const fn name(&self) -> &'static str {
23166 match self {
23167 Self::V0(_) => "V0",
23168 Self::V1(_) => "V1",
23169 }
23170 }
23171
23172 #[must_use]
23173 pub const fn discriminant(&self) -> i32 {
23174 #[allow(clippy::match_same_arms)]
23175 match self {
23176 Self::V0(_) => 0,
23177 Self::V1(_) => 1,
23178 }
23179 }
23180
23181 #[must_use]
23182 pub const fn variants() -> [i32; 2] {
23183 Self::VARIANTS
23184 }
23185}
23186
23187impl Name for TransactionPhase {
23188 #[must_use]
23189 fn name(&self) -> &'static str {
23190 Self::name(self)
23191 }
23192}
23193
23194impl Discriminant<i32> for TransactionPhase {
23195 #[must_use]
23196 fn discriminant(&self) -> i32 {
23197 Self::discriminant(self)
23198 }
23199}
23200
23201impl Variants<i32> for TransactionPhase {
23202 fn variants() -> slice::Iter<'static, i32> {
23203 Self::VARIANTS.iter()
23204 }
23205}
23206
23207impl Union<i32> for TransactionPhase {}
23208
23209impl ReadXdr for TransactionPhase {
23210 #[cfg(feature = "std")]
23211 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23212 r.with_limited_depth(|r| {
23213 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
23214 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23215 let v = match dv {
23216 0 => Self::V0(VecM::<TxSetComponent>::read_xdr(r)?),
23217 1 => Self::V1(ParallelTxsComponent::read_xdr(r)?),
23218 #[allow(unreachable_patterns)]
23219 _ => return Err(Error::Invalid),
23220 };
23221 Ok(v)
23222 })
23223 }
23224}
23225
23226impl WriteXdr for TransactionPhase {
23227 #[cfg(feature = "std")]
23228 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23229 w.with_limited_depth(|w| {
23230 self.discriminant().write_xdr(w)?;
23231 #[allow(clippy::match_same_arms)]
23232 match self {
23233 Self::V0(v) => v.write_xdr(w)?,
23234 Self::V1(v) => v.write_xdr(w)?,
23235 };
23236 Ok(())
23237 })
23238 }
23239}
23240
23241#[cfg_attr(feature = "alloc", derive(Default))]
23252#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23253#[cfg_eval::cfg_eval]
23254#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23255#[cfg_attr(
23256 all(feature = "serde", feature = "alloc"),
23257 serde_with::serde_as,
23258 derive(serde::Serialize, serde::Deserialize),
23259 serde(rename_all = "snake_case")
23260)]
23261#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23262pub struct TransactionSet {
23263 pub previous_ledger_hash: Hash,
23264 pub txs: VecM<TransactionEnvelope>,
23265}
23266
23267impl ReadXdr for TransactionSet {
23268 #[cfg(feature = "std")]
23269 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23270 r.with_limited_depth(|r| {
23271 Ok(Self {
23272 previous_ledger_hash: Hash::read_xdr(r)?,
23273 txs: VecM::<TransactionEnvelope>::read_xdr(r)?,
23274 })
23275 })
23276 }
23277}
23278
23279impl WriteXdr for TransactionSet {
23280 #[cfg(feature = "std")]
23281 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23282 w.with_limited_depth(|w| {
23283 self.previous_ledger_hash.write_xdr(w)?;
23284 self.txs.write_xdr(w)?;
23285 Ok(())
23286 })
23287 }
23288}
23289
23290#[cfg_attr(feature = "alloc", derive(Default))]
23301#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23302#[cfg_eval::cfg_eval]
23303#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23304#[cfg_attr(
23305 all(feature = "serde", feature = "alloc"),
23306 serde_with::serde_as,
23307 derive(serde::Serialize, serde::Deserialize),
23308 serde(rename_all = "snake_case")
23309)]
23310#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23311pub struct TransactionSetV1 {
23312 pub previous_ledger_hash: Hash,
23313 pub phases: VecM<TransactionPhase>,
23314}
23315
23316impl ReadXdr for TransactionSetV1 {
23317 #[cfg(feature = "std")]
23318 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23319 r.with_limited_depth(|r| {
23320 Ok(Self {
23321 previous_ledger_hash: Hash::read_xdr(r)?,
23322 phases: VecM::<TransactionPhase>::read_xdr(r)?,
23323 })
23324 })
23325 }
23326}
23327
23328impl WriteXdr for TransactionSetV1 {
23329 #[cfg(feature = "std")]
23330 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23331 w.with_limited_depth(|w| {
23332 self.previous_ledger_hash.write_xdr(w)?;
23333 self.phases.write_xdr(w)?;
23334 Ok(())
23335 })
23336 }
23337}
23338
23339#[cfg_eval::cfg_eval]
23352#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23353#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23354#[cfg_attr(
23355 all(feature = "serde", feature = "alloc"),
23356 serde_with::serde_as,
23357 derive(serde::Serialize, serde::Deserialize),
23358 serde(rename_all = "snake_case")
23359)]
23360#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23361#[allow(clippy::large_enum_variant)]
23362pub enum GeneralizedTransactionSet {
23363 V1(TransactionSetV1),
23364}
23365
23366#[cfg(feature = "alloc")]
23367impl Default for GeneralizedTransactionSet {
23368 fn default() -> Self {
23369 Self::V1(TransactionSetV1::default())
23370 }
23371}
23372
23373impl GeneralizedTransactionSet {
23374 pub const VARIANTS: [i32; 1] = [1];
23375 pub const VARIANTS_STR: [&'static str; 1] = ["V1"];
23376
23377 #[must_use]
23378 pub const fn name(&self) -> &'static str {
23379 match self {
23380 Self::V1(_) => "V1",
23381 }
23382 }
23383
23384 #[must_use]
23385 pub const fn discriminant(&self) -> i32 {
23386 #[allow(clippy::match_same_arms)]
23387 match self {
23388 Self::V1(_) => 1,
23389 }
23390 }
23391
23392 #[must_use]
23393 pub const fn variants() -> [i32; 1] {
23394 Self::VARIANTS
23395 }
23396}
23397
23398impl Name for GeneralizedTransactionSet {
23399 #[must_use]
23400 fn name(&self) -> &'static str {
23401 Self::name(self)
23402 }
23403}
23404
23405impl Discriminant<i32> for GeneralizedTransactionSet {
23406 #[must_use]
23407 fn discriminant(&self) -> i32 {
23408 Self::discriminant(self)
23409 }
23410}
23411
23412impl Variants<i32> for GeneralizedTransactionSet {
23413 fn variants() -> slice::Iter<'static, i32> {
23414 Self::VARIANTS.iter()
23415 }
23416}
23417
23418impl Union<i32> for GeneralizedTransactionSet {}
23419
23420impl ReadXdr for GeneralizedTransactionSet {
23421 #[cfg(feature = "std")]
23422 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23423 r.with_limited_depth(|r| {
23424 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
23425 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23426 let v = match dv {
23427 1 => Self::V1(TransactionSetV1::read_xdr(r)?),
23428 #[allow(unreachable_patterns)]
23429 _ => return Err(Error::Invalid),
23430 };
23431 Ok(v)
23432 })
23433 }
23434}
23435
23436impl WriteXdr for GeneralizedTransactionSet {
23437 #[cfg(feature = "std")]
23438 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23439 w.with_limited_depth(|w| {
23440 self.discriminant().write_xdr(w)?;
23441 #[allow(clippy::match_same_arms)]
23442 match self {
23443 Self::V1(v) => v.write_xdr(w)?,
23444 };
23445 Ok(())
23446 })
23447 }
23448}
23449
23450#[cfg_attr(feature = "alloc", derive(Default))]
23461#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23462#[cfg_eval::cfg_eval]
23463#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23464#[cfg_attr(
23465 all(feature = "serde", feature = "alloc"),
23466 serde_with::serde_as,
23467 derive(serde::Serialize, serde::Deserialize),
23468 serde(rename_all = "snake_case")
23469)]
23470#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23471pub struct TransactionResultPair {
23472 pub transaction_hash: Hash,
23473 pub result: TransactionResult,
23474}
23475
23476impl ReadXdr for TransactionResultPair {
23477 #[cfg(feature = "std")]
23478 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23479 r.with_limited_depth(|r| {
23480 Ok(Self {
23481 transaction_hash: Hash::read_xdr(r)?,
23482 result: TransactionResult::read_xdr(r)?,
23483 })
23484 })
23485 }
23486}
23487
23488impl WriteXdr for TransactionResultPair {
23489 #[cfg(feature = "std")]
23490 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23491 w.with_limited_depth(|w| {
23492 self.transaction_hash.write_xdr(w)?;
23493 self.result.write_xdr(w)?;
23494 Ok(())
23495 })
23496 }
23497}
23498
23499#[cfg_attr(feature = "alloc", derive(Default))]
23509#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23510#[cfg_eval::cfg_eval]
23511#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23512#[cfg_attr(
23513 all(feature = "serde", feature = "alloc"),
23514 serde_with::serde_as,
23515 derive(serde::Serialize, serde::Deserialize),
23516 serde(rename_all = "snake_case")
23517)]
23518#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23519pub struct TransactionResultSet {
23520 pub results: VecM<TransactionResultPair>,
23521}
23522
23523impl ReadXdr for TransactionResultSet {
23524 #[cfg(feature = "std")]
23525 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23526 r.with_limited_depth(|r| {
23527 Ok(Self {
23528 results: VecM::<TransactionResultPair>::read_xdr(r)?,
23529 })
23530 })
23531 }
23532}
23533
23534impl WriteXdr for TransactionResultSet {
23535 #[cfg(feature = "std")]
23536 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23537 w.with_limited_depth(|w| {
23538 self.results.write_xdr(w)?;
23539 Ok(())
23540 })
23541 }
23542}
23543
23544#[cfg_eval::cfg_eval]
23558#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23559#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23560#[cfg_attr(
23561 all(feature = "serde", feature = "alloc"),
23562 serde_with::serde_as,
23563 derive(serde::Serialize, serde::Deserialize),
23564 serde(rename_all = "snake_case")
23565)]
23566#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23567#[allow(clippy::large_enum_variant)]
23568pub enum TransactionHistoryEntryExt {
23569 V0,
23570 V1(GeneralizedTransactionSet),
23571}
23572
23573#[cfg(feature = "alloc")]
23574impl Default for TransactionHistoryEntryExt {
23575 fn default() -> Self {
23576 Self::V0
23577 }
23578}
23579
23580impl TransactionHistoryEntryExt {
23581 pub const VARIANTS: [i32; 2] = [0, 1];
23582 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
23583
23584 #[must_use]
23585 pub const fn name(&self) -> &'static str {
23586 match self {
23587 Self::V0 => "V0",
23588 Self::V1(_) => "V1",
23589 }
23590 }
23591
23592 #[must_use]
23593 pub const fn discriminant(&self) -> i32 {
23594 #[allow(clippy::match_same_arms)]
23595 match self {
23596 Self::V0 => 0,
23597 Self::V1(_) => 1,
23598 }
23599 }
23600
23601 #[must_use]
23602 pub const fn variants() -> [i32; 2] {
23603 Self::VARIANTS
23604 }
23605}
23606
23607impl Name for TransactionHistoryEntryExt {
23608 #[must_use]
23609 fn name(&self) -> &'static str {
23610 Self::name(self)
23611 }
23612}
23613
23614impl Discriminant<i32> for TransactionHistoryEntryExt {
23615 #[must_use]
23616 fn discriminant(&self) -> i32 {
23617 Self::discriminant(self)
23618 }
23619}
23620
23621impl Variants<i32> for TransactionHistoryEntryExt {
23622 fn variants() -> slice::Iter<'static, i32> {
23623 Self::VARIANTS.iter()
23624 }
23625}
23626
23627impl Union<i32> for TransactionHistoryEntryExt {}
23628
23629impl ReadXdr for TransactionHistoryEntryExt {
23630 #[cfg(feature = "std")]
23631 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23632 r.with_limited_depth(|r| {
23633 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
23634 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23635 let v = match dv {
23636 0 => Self::V0,
23637 1 => Self::V1(GeneralizedTransactionSet::read_xdr(r)?),
23638 #[allow(unreachable_patterns)]
23639 _ => return Err(Error::Invalid),
23640 };
23641 Ok(v)
23642 })
23643 }
23644}
23645
23646impl WriteXdr for TransactionHistoryEntryExt {
23647 #[cfg(feature = "std")]
23648 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23649 w.with_limited_depth(|w| {
23650 self.discriminant().write_xdr(w)?;
23651 #[allow(clippy::match_same_arms)]
23652 match self {
23653 Self::V0 => ().write_xdr(w)?,
23654 Self::V1(v) => v.write_xdr(w)?,
23655 };
23656 Ok(())
23657 })
23658 }
23659}
23660
23661#[cfg_attr(feature = "alloc", derive(Default))]
23682#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23683#[cfg_eval::cfg_eval]
23684#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23685#[cfg_attr(
23686 all(feature = "serde", feature = "alloc"),
23687 serde_with::serde_as,
23688 derive(serde::Serialize, serde::Deserialize),
23689 serde(rename_all = "snake_case")
23690)]
23691#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23692pub struct TransactionHistoryEntry {
23693 pub ledger_seq: u32,
23694 pub tx_set: TransactionSet,
23695 pub ext: TransactionHistoryEntryExt,
23696}
23697
23698impl ReadXdr for TransactionHistoryEntry {
23699 #[cfg(feature = "std")]
23700 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23701 r.with_limited_depth(|r| {
23702 Ok(Self {
23703 ledger_seq: u32::read_xdr(r)?,
23704 tx_set: TransactionSet::read_xdr(r)?,
23705 ext: TransactionHistoryEntryExt::read_xdr(r)?,
23706 })
23707 })
23708 }
23709}
23710
23711impl WriteXdr for TransactionHistoryEntry {
23712 #[cfg(feature = "std")]
23713 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23714 w.with_limited_depth(|w| {
23715 self.ledger_seq.write_xdr(w)?;
23716 self.tx_set.write_xdr(w)?;
23717 self.ext.write_xdr(w)?;
23718 Ok(())
23719 })
23720 }
23721}
23722
23723#[cfg_eval::cfg_eval]
23735#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23736#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23737#[cfg_attr(
23738 all(feature = "serde", feature = "alloc"),
23739 serde_with::serde_as,
23740 derive(serde::Serialize, serde::Deserialize),
23741 serde(rename_all = "snake_case")
23742)]
23743#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23744#[allow(clippy::large_enum_variant)]
23745pub enum TransactionHistoryResultEntryExt {
23746 V0,
23747}
23748
23749#[cfg(feature = "alloc")]
23750impl Default for TransactionHistoryResultEntryExt {
23751 fn default() -> Self {
23752 Self::V0
23753 }
23754}
23755
23756impl TransactionHistoryResultEntryExt {
23757 pub const VARIANTS: [i32; 1] = [0];
23758 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
23759
23760 #[must_use]
23761 pub const fn name(&self) -> &'static str {
23762 match self {
23763 Self::V0 => "V0",
23764 }
23765 }
23766
23767 #[must_use]
23768 pub const fn discriminant(&self) -> i32 {
23769 #[allow(clippy::match_same_arms)]
23770 match self {
23771 Self::V0 => 0,
23772 }
23773 }
23774
23775 #[must_use]
23776 pub const fn variants() -> [i32; 1] {
23777 Self::VARIANTS
23778 }
23779}
23780
23781impl Name for TransactionHistoryResultEntryExt {
23782 #[must_use]
23783 fn name(&self) -> &'static str {
23784 Self::name(self)
23785 }
23786}
23787
23788impl Discriminant<i32> for TransactionHistoryResultEntryExt {
23789 #[must_use]
23790 fn discriminant(&self) -> i32 {
23791 Self::discriminant(self)
23792 }
23793}
23794
23795impl Variants<i32> for TransactionHistoryResultEntryExt {
23796 fn variants() -> slice::Iter<'static, i32> {
23797 Self::VARIANTS.iter()
23798 }
23799}
23800
23801impl Union<i32> for TransactionHistoryResultEntryExt {}
23802
23803impl ReadXdr for TransactionHistoryResultEntryExt {
23804 #[cfg(feature = "std")]
23805 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23806 r.with_limited_depth(|r| {
23807 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
23808 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23809 let v = match dv {
23810 0 => Self::V0,
23811 #[allow(unreachable_patterns)]
23812 _ => return Err(Error::Invalid),
23813 };
23814 Ok(v)
23815 })
23816 }
23817}
23818
23819impl WriteXdr for TransactionHistoryResultEntryExt {
23820 #[cfg(feature = "std")]
23821 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23822 w.with_limited_depth(|w| {
23823 self.discriminant().write_xdr(w)?;
23824 #[allow(clippy::match_same_arms)]
23825 match self {
23826 Self::V0 => ().write_xdr(w)?,
23827 };
23828 Ok(())
23829 })
23830 }
23831}
23832
23833#[cfg_attr(feature = "alloc", derive(Default))]
23852#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23853#[cfg_eval::cfg_eval]
23854#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23855#[cfg_attr(
23856 all(feature = "serde", feature = "alloc"),
23857 serde_with::serde_as,
23858 derive(serde::Serialize, serde::Deserialize),
23859 serde(rename_all = "snake_case")
23860)]
23861#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23862pub struct TransactionHistoryResultEntry {
23863 pub ledger_seq: u32,
23864 pub tx_result_set: TransactionResultSet,
23865 pub ext: TransactionHistoryResultEntryExt,
23866}
23867
23868impl ReadXdr for TransactionHistoryResultEntry {
23869 #[cfg(feature = "std")]
23870 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23871 r.with_limited_depth(|r| {
23872 Ok(Self {
23873 ledger_seq: u32::read_xdr(r)?,
23874 tx_result_set: TransactionResultSet::read_xdr(r)?,
23875 ext: TransactionHistoryResultEntryExt::read_xdr(r)?,
23876 })
23877 })
23878 }
23879}
23880
23881impl WriteXdr for TransactionHistoryResultEntry {
23882 #[cfg(feature = "std")]
23883 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23884 w.with_limited_depth(|w| {
23885 self.ledger_seq.write_xdr(w)?;
23886 self.tx_result_set.write_xdr(w)?;
23887 self.ext.write_xdr(w)?;
23888 Ok(())
23889 })
23890 }
23891}
23892
23893#[cfg_eval::cfg_eval]
23905#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
23906#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
23907#[cfg_attr(
23908 all(feature = "serde", feature = "alloc"),
23909 serde_with::serde_as,
23910 derive(serde::Serialize, serde::Deserialize),
23911 serde(rename_all = "snake_case")
23912)]
23913#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
23914#[allow(clippy::large_enum_variant)]
23915pub enum LedgerHeaderHistoryEntryExt {
23916 V0,
23917}
23918
23919#[cfg(feature = "alloc")]
23920impl Default for LedgerHeaderHistoryEntryExt {
23921 fn default() -> Self {
23922 Self::V0
23923 }
23924}
23925
23926impl LedgerHeaderHistoryEntryExt {
23927 pub const VARIANTS: [i32; 1] = [0];
23928 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
23929
23930 #[must_use]
23931 pub const fn name(&self) -> &'static str {
23932 match self {
23933 Self::V0 => "V0",
23934 }
23935 }
23936
23937 #[must_use]
23938 pub const fn discriminant(&self) -> i32 {
23939 #[allow(clippy::match_same_arms)]
23940 match self {
23941 Self::V0 => 0,
23942 }
23943 }
23944
23945 #[must_use]
23946 pub const fn variants() -> [i32; 1] {
23947 Self::VARIANTS
23948 }
23949}
23950
23951impl Name for LedgerHeaderHistoryEntryExt {
23952 #[must_use]
23953 fn name(&self) -> &'static str {
23954 Self::name(self)
23955 }
23956}
23957
23958impl Discriminant<i32> for LedgerHeaderHistoryEntryExt {
23959 #[must_use]
23960 fn discriminant(&self) -> i32 {
23961 Self::discriminant(self)
23962 }
23963}
23964
23965impl Variants<i32> for LedgerHeaderHistoryEntryExt {
23966 fn variants() -> slice::Iter<'static, i32> {
23967 Self::VARIANTS.iter()
23968 }
23969}
23970
23971impl Union<i32> for LedgerHeaderHistoryEntryExt {}
23972
23973impl ReadXdr for LedgerHeaderHistoryEntryExt {
23974 #[cfg(feature = "std")]
23975 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
23976 r.with_limited_depth(|r| {
23977 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
23978 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
23979 let v = match dv {
23980 0 => Self::V0,
23981 #[allow(unreachable_patterns)]
23982 _ => return Err(Error::Invalid),
23983 };
23984 Ok(v)
23985 })
23986 }
23987}
23988
23989impl WriteXdr for LedgerHeaderHistoryEntryExt {
23990 #[cfg(feature = "std")]
23991 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
23992 w.with_limited_depth(|w| {
23993 self.discriminant().write_xdr(w)?;
23994 #[allow(clippy::match_same_arms)]
23995 match self {
23996 Self::V0 => ().write_xdr(w)?,
23997 };
23998 Ok(())
23999 })
24000 }
24001}
24002
24003#[cfg_attr(feature = "alloc", derive(Default))]
24022#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24023#[cfg_eval::cfg_eval]
24024#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24025#[cfg_attr(
24026 all(feature = "serde", feature = "alloc"),
24027 serde_with::serde_as,
24028 derive(serde::Serialize, serde::Deserialize),
24029 serde(rename_all = "snake_case")
24030)]
24031#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24032pub struct LedgerHeaderHistoryEntry {
24033 pub hash: Hash,
24034 pub header: LedgerHeader,
24035 pub ext: LedgerHeaderHistoryEntryExt,
24036}
24037
24038impl ReadXdr for LedgerHeaderHistoryEntry {
24039 #[cfg(feature = "std")]
24040 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24041 r.with_limited_depth(|r| {
24042 Ok(Self {
24043 hash: Hash::read_xdr(r)?,
24044 header: LedgerHeader::read_xdr(r)?,
24045 ext: LedgerHeaderHistoryEntryExt::read_xdr(r)?,
24046 })
24047 })
24048 }
24049}
24050
24051impl WriteXdr for LedgerHeaderHistoryEntry {
24052 #[cfg(feature = "std")]
24053 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24054 w.with_limited_depth(|w| {
24055 self.hash.write_xdr(w)?;
24056 self.header.write_xdr(w)?;
24057 self.ext.write_xdr(w)?;
24058 Ok(())
24059 })
24060 }
24061}
24062
24063#[cfg_attr(feature = "alloc", derive(Default))]
24074#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24075#[cfg_eval::cfg_eval]
24076#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24077#[cfg_attr(
24078 all(feature = "serde", feature = "alloc"),
24079 serde_with::serde_as,
24080 derive(serde::Serialize, serde::Deserialize),
24081 serde(rename_all = "snake_case")
24082)]
24083#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24084pub struct LedgerScpMessages {
24085 pub ledger_seq: u32,
24086 pub messages: VecM<ScpEnvelope>,
24087}
24088
24089impl ReadXdr for LedgerScpMessages {
24090 #[cfg(feature = "std")]
24091 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24092 r.with_limited_depth(|r| {
24093 Ok(Self {
24094 ledger_seq: u32::read_xdr(r)?,
24095 messages: VecM::<ScpEnvelope>::read_xdr(r)?,
24096 })
24097 })
24098 }
24099}
24100
24101impl WriteXdr for LedgerScpMessages {
24102 #[cfg(feature = "std")]
24103 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24104 w.with_limited_depth(|w| {
24105 self.ledger_seq.write_xdr(w)?;
24106 self.messages.write_xdr(w)?;
24107 Ok(())
24108 })
24109 }
24110}
24111
24112#[cfg_attr(feature = "alloc", derive(Default))]
24123#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24124#[cfg_eval::cfg_eval]
24125#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24126#[cfg_attr(
24127 all(feature = "serde", feature = "alloc"),
24128 serde_with::serde_as,
24129 derive(serde::Serialize, serde::Deserialize),
24130 serde(rename_all = "snake_case")
24131)]
24132#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24133pub struct ScpHistoryEntryV0 {
24134 pub quorum_sets: VecM<ScpQuorumSet>,
24135 pub ledger_messages: LedgerScpMessages,
24136}
24137
24138impl ReadXdr for ScpHistoryEntryV0 {
24139 #[cfg(feature = "std")]
24140 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24141 r.with_limited_depth(|r| {
24142 Ok(Self {
24143 quorum_sets: VecM::<ScpQuorumSet>::read_xdr(r)?,
24144 ledger_messages: LedgerScpMessages::read_xdr(r)?,
24145 })
24146 })
24147 }
24148}
24149
24150impl WriteXdr for ScpHistoryEntryV0 {
24151 #[cfg(feature = "std")]
24152 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24153 w.with_limited_depth(|w| {
24154 self.quorum_sets.write_xdr(w)?;
24155 self.ledger_messages.write_xdr(w)?;
24156 Ok(())
24157 })
24158 }
24159}
24160
24161#[cfg_eval::cfg_eval]
24173#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24174#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24175#[cfg_attr(
24176 all(feature = "serde", feature = "alloc"),
24177 serde_with::serde_as,
24178 derive(serde::Serialize, serde::Deserialize),
24179 serde(rename_all = "snake_case")
24180)]
24181#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24182#[allow(clippy::large_enum_variant)]
24183pub enum ScpHistoryEntry {
24184 V0(ScpHistoryEntryV0),
24185}
24186
24187#[cfg(feature = "alloc")]
24188impl Default for ScpHistoryEntry {
24189 fn default() -> Self {
24190 Self::V0(ScpHistoryEntryV0::default())
24191 }
24192}
24193
24194impl ScpHistoryEntry {
24195 pub const VARIANTS: [i32; 1] = [0];
24196 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
24197
24198 #[must_use]
24199 pub const fn name(&self) -> &'static str {
24200 match self {
24201 Self::V0(_) => "V0",
24202 }
24203 }
24204
24205 #[must_use]
24206 pub const fn discriminant(&self) -> i32 {
24207 #[allow(clippy::match_same_arms)]
24208 match self {
24209 Self::V0(_) => 0,
24210 }
24211 }
24212
24213 #[must_use]
24214 pub const fn variants() -> [i32; 1] {
24215 Self::VARIANTS
24216 }
24217}
24218
24219impl Name for ScpHistoryEntry {
24220 #[must_use]
24221 fn name(&self) -> &'static str {
24222 Self::name(self)
24223 }
24224}
24225
24226impl Discriminant<i32> for ScpHistoryEntry {
24227 #[must_use]
24228 fn discriminant(&self) -> i32 {
24229 Self::discriminant(self)
24230 }
24231}
24232
24233impl Variants<i32> for ScpHistoryEntry {
24234 fn variants() -> slice::Iter<'static, i32> {
24235 Self::VARIANTS.iter()
24236 }
24237}
24238
24239impl Union<i32> for ScpHistoryEntry {}
24240
24241impl ReadXdr for ScpHistoryEntry {
24242 #[cfg(feature = "std")]
24243 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24244 r.with_limited_depth(|r| {
24245 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
24246 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
24247 let v = match dv {
24248 0 => Self::V0(ScpHistoryEntryV0::read_xdr(r)?),
24249 #[allow(unreachable_patterns)]
24250 _ => return Err(Error::Invalid),
24251 };
24252 Ok(v)
24253 })
24254 }
24255}
24256
24257impl WriteXdr for ScpHistoryEntry {
24258 #[cfg(feature = "std")]
24259 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24260 w.with_limited_depth(|w| {
24261 self.discriminant().write_xdr(w)?;
24262 #[allow(clippy::match_same_arms)]
24263 match self {
24264 Self::V0(v) => v.write_xdr(w)?,
24265 };
24266 Ok(())
24267 })
24268 }
24269}
24270
24271#[cfg_attr(feature = "alloc", derive(Default))]
24286#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24287#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24288#[cfg_attr(
24289 all(feature = "serde", feature = "alloc"),
24290 derive(serde::Serialize, serde::Deserialize),
24291 serde(rename_all = "snake_case")
24292)]
24293#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24294#[repr(i32)]
24295pub enum LedgerEntryChangeType {
24296 #[cfg_attr(feature = "alloc", default)]
24297 Created = 0,
24298 Updated = 1,
24299 Removed = 2,
24300 State = 3,
24301 Restored = 4,
24302}
24303
24304impl LedgerEntryChangeType {
24305 pub const VARIANTS: [LedgerEntryChangeType; 5] = [
24306 LedgerEntryChangeType::Created,
24307 LedgerEntryChangeType::Updated,
24308 LedgerEntryChangeType::Removed,
24309 LedgerEntryChangeType::State,
24310 LedgerEntryChangeType::Restored,
24311 ];
24312 pub const VARIANTS_STR: [&'static str; 5] =
24313 ["Created", "Updated", "Removed", "State", "Restored"];
24314
24315 #[must_use]
24316 pub const fn name(&self) -> &'static str {
24317 match self {
24318 Self::Created => "Created",
24319 Self::Updated => "Updated",
24320 Self::Removed => "Removed",
24321 Self::State => "State",
24322 Self::Restored => "Restored",
24323 }
24324 }
24325
24326 #[must_use]
24327 pub const fn variants() -> [LedgerEntryChangeType; 5] {
24328 Self::VARIANTS
24329 }
24330}
24331
24332impl Name for LedgerEntryChangeType {
24333 #[must_use]
24334 fn name(&self) -> &'static str {
24335 Self::name(self)
24336 }
24337}
24338
24339impl Variants<LedgerEntryChangeType> for LedgerEntryChangeType {
24340 fn variants() -> slice::Iter<'static, LedgerEntryChangeType> {
24341 Self::VARIANTS.iter()
24342 }
24343}
24344
24345impl Enum for LedgerEntryChangeType {}
24346
24347impl fmt::Display for LedgerEntryChangeType {
24348 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24349 f.write_str(self.name())
24350 }
24351}
24352
24353impl TryFrom<i32> for LedgerEntryChangeType {
24354 type Error = Error;
24355
24356 fn try_from(i: i32) -> Result<Self, Error> {
24357 let e = match i {
24358 0 => LedgerEntryChangeType::Created,
24359 1 => LedgerEntryChangeType::Updated,
24360 2 => LedgerEntryChangeType::Removed,
24361 3 => LedgerEntryChangeType::State,
24362 4 => LedgerEntryChangeType::Restored,
24363 #[allow(unreachable_patterns)]
24364 _ => return Err(Error::Invalid),
24365 };
24366 Ok(e)
24367 }
24368}
24369
24370impl From<LedgerEntryChangeType> for i32 {
24371 #[must_use]
24372 fn from(e: LedgerEntryChangeType) -> Self {
24373 e as Self
24374 }
24375}
24376
24377impl ReadXdr for LedgerEntryChangeType {
24378 #[cfg(feature = "std")]
24379 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24380 r.with_limited_depth(|r| {
24381 let e = i32::read_xdr(r)?;
24382 let v: Self = e.try_into()?;
24383 Ok(v)
24384 })
24385 }
24386}
24387
24388impl WriteXdr for LedgerEntryChangeType {
24389 #[cfg(feature = "std")]
24390 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24391 w.with_limited_depth(|w| {
24392 let i: i32 = (*self).into();
24393 i.write_xdr(w)
24394 })
24395 }
24396}
24397
24398#[cfg_eval::cfg_eval]
24418#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24419#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24420#[cfg_attr(
24421 all(feature = "serde", feature = "alloc"),
24422 serde_with::serde_as,
24423 derive(serde::Serialize, serde::Deserialize),
24424 serde(rename_all = "snake_case")
24425)]
24426#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24427#[allow(clippy::large_enum_variant)]
24428pub enum LedgerEntryChange {
24429 Created(LedgerEntry),
24430 Updated(LedgerEntry),
24431 Removed(LedgerKey),
24432 State(LedgerEntry),
24433 Restored(LedgerEntry),
24434}
24435
24436#[cfg(feature = "alloc")]
24437impl Default for LedgerEntryChange {
24438 fn default() -> Self {
24439 Self::Created(LedgerEntry::default())
24440 }
24441}
24442
24443impl LedgerEntryChange {
24444 pub const VARIANTS: [LedgerEntryChangeType; 5] = [
24445 LedgerEntryChangeType::Created,
24446 LedgerEntryChangeType::Updated,
24447 LedgerEntryChangeType::Removed,
24448 LedgerEntryChangeType::State,
24449 LedgerEntryChangeType::Restored,
24450 ];
24451 pub const VARIANTS_STR: [&'static str; 5] =
24452 ["Created", "Updated", "Removed", "State", "Restored"];
24453
24454 #[must_use]
24455 pub const fn name(&self) -> &'static str {
24456 match self {
24457 Self::Created(_) => "Created",
24458 Self::Updated(_) => "Updated",
24459 Self::Removed(_) => "Removed",
24460 Self::State(_) => "State",
24461 Self::Restored(_) => "Restored",
24462 }
24463 }
24464
24465 #[must_use]
24466 pub const fn discriminant(&self) -> LedgerEntryChangeType {
24467 #[allow(clippy::match_same_arms)]
24468 match self {
24469 Self::Created(_) => LedgerEntryChangeType::Created,
24470 Self::Updated(_) => LedgerEntryChangeType::Updated,
24471 Self::Removed(_) => LedgerEntryChangeType::Removed,
24472 Self::State(_) => LedgerEntryChangeType::State,
24473 Self::Restored(_) => LedgerEntryChangeType::Restored,
24474 }
24475 }
24476
24477 #[must_use]
24478 pub const fn variants() -> [LedgerEntryChangeType; 5] {
24479 Self::VARIANTS
24480 }
24481}
24482
24483impl Name for LedgerEntryChange {
24484 #[must_use]
24485 fn name(&self) -> &'static str {
24486 Self::name(self)
24487 }
24488}
24489
24490impl Discriminant<LedgerEntryChangeType> for LedgerEntryChange {
24491 #[must_use]
24492 fn discriminant(&self) -> LedgerEntryChangeType {
24493 Self::discriminant(self)
24494 }
24495}
24496
24497impl Variants<LedgerEntryChangeType> for LedgerEntryChange {
24498 fn variants() -> slice::Iter<'static, LedgerEntryChangeType> {
24499 Self::VARIANTS.iter()
24500 }
24501}
24502
24503impl Union<LedgerEntryChangeType> for LedgerEntryChange {}
24504
24505impl ReadXdr for LedgerEntryChange {
24506 #[cfg(feature = "std")]
24507 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24508 r.with_limited_depth(|r| {
24509 let dv: LedgerEntryChangeType = <LedgerEntryChangeType as ReadXdr>::read_xdr(r)?;
24510 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
24511 let v = match dv {
24512 LedgerEntryChangeType::Created => Self::Created(LedgerEntry::read_xdr(r)?),
24513 LedgerEntryChangeType::Updated => Self::Updated(LedgerEntry::read_xdr(r)?),
24514 LedgerEntryChangeType::Removed => Self::Removed(LedgerKey::read_xdr(r)?),
24515 LedgerEntryChangeType::State => Self::State(LedgerEntry::read_xdr(r)?),
24516 LedgerEntryChangeType::Restored => Self::Restored(LedgerEntry::read_xdr(r)?),
24517 #[allow(unreachable_patterns)]
24518 _ => return Err(Error::Invalid),
24519 };
24520 Ok(v)
24521 })
24522 }
24523}
24524
24525impl WriteXdr for LedgerEntryChange {
24526 #[cfg(feature = "std")]
24527 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24528 w.with_limited_depth(|w| {
24529 self.discriminant().write_xdr(w)?;
24530 #[allow(clippy::match_same_arms)]
24531 match self {
24532 Self::Created(v) => v.write_xdr(w)?,
24533 Self::Updated(v) => v.write_xdr(w)?,
24534 Self::Removed(v) => v.write_xdr(w)?,
24535 Self::State(v) => v.write_xdr(w)?,
24536 Self::Restored(v) => v.write_xdr(w)?,
24537 };
24538 Ok(())
24539 })
24540 }
24541}
24542
24543#[cfg_eval::cfg_eval]
24550#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
24551#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24552#[cfg_attr(
24553 all(feature = "serde", feature = "alloc"),
24554 serde_with::serde_as,
24555 derive(serde::Serialize, serde::Deserialize),
24556 serde(rename_all = "snake_case")
24557)]
24558#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24559#[derive(Debug)]
24560pub struct LedgerEntryChanges(pub VecM<LedgerEntryChange>);
24561
24562impl From<LedgerEntryChanges> for VecM<LedgerEntryChange> {
24563 #[must_use]
24564 fn from(x: LedgerEntryChanges) -> Self {
24565 x.0
24566 }
24567}
24568
24569impl From<VecM<LedgerEntryChange>> for LedgerEntryChanges {
24570 #[must_use]
24571 fn from(x: VecM<LedgerEntryChange>) -> Self {
24572 LedgerEntryChanges(x)
24573 }
24574}
24575
24576impl AsRef<VecM<LedgerEntryChange>> for LedgerEntryChanges {
24577 #[must_use]
24578 fn as_ref(&self) -> &VecM<LedgerEntryChange> {
24579 &self.0
24580 }
24581}
24582
24583impl ReadXdr for LedgerEntryChanges {
24584 #[cfg(feature = "std")]
24585 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24586 r.with_limited_depth(|r| {
24587 let i = VecM::<LedgerEntryChange>::read_xdr(r)?;
24588 let v = LedgerEntryChanges(i);
24589 Ok(v)
24590 })
24591 }
24592}
24593
24594impl WriteXdr for LedgerEntryChanges {
24595 #[cfg(feature = "std")]
24596 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24597 w.with_limited_depth(|w| self.0.write_xdr(w))
24598 }
24599}
24600
24601impl Deref for LedgerEntryChanges {
24602 type Target = VecM<LedgerEntryChange>;
24603 fn deref(&self) -> &Self::Target {
24604 &self.0
24605 }
24606}
24607
24608impl From<LedgerEntryChanges> for Vec<LedgerEntryChange> {
24609 #[must_use]
24610 fn from(x: LedgerEntryChanges) -> Self {
24611 x.0 .0
24612 }
24613}
24614
24615impl TryFrom<Vec<LedgerEntryChange>> for LedgerEntryChanges {
24616 type Error = Error;
24617 fn try_from(x: Vec<LedgerEntryChange>) -> Result<Self, Error> {
24618 Ok(LedgerEntryChanges(x.try_into()?))
24619 }
24620}
24621
24622#[cfg(feature = "alloc")]
24623impl TryFrom<&Vec<LedgerEntryChange>> for LedgerEntryChanges {
24624 type Error = Error;
24625 fn try_from(x: &Vec<LedgerEntryChange>) -> Result<Self, Error> {
24626 Ok(LedgerEntryChanges(x.try_into()?))
24627 }
24628}
24629
24630impl AsRef<Vec<LedgerEntryChange>> for LedgerEntryChanges {
24631 #[must_use]
24632 fn as_ref(&self) -> &Vec<LedgerEntryChange> {
24633 &self.0 .0
24634 }
24635}
24636
24637impl AsRef<[LedgerEntryChange]> for LedgerEntryChanges {
24638 #[cfg(feature = "alloc")]
24639 #[must_use]
24640 fn as_ref(&self) -> &[LedgerEntryChange] {
24641 &self.0 .0
24642 }
24643 #[cfg(not(feature = "alloc"))]
24644 #[must_use]
24645 fn as_ref(&self) -> &[LedgerEntryChange] {
24646 self.0 .0
24647 }
24648}
24649
24650#[cfg_attr(feature = "alloc", derive(Default))]
24660#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24661#[cfg_eval::cfg_eval]
24662#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24663#[cfg_attr(
24664 all(feature = "serde", feature = "alloc"),
24665 serde_with::serde_as,
24666 derive(serde::Serialize, serde::Deserialize),
24667 serde(rename_all = "snake_case")
24668)]
24669#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24670pub struct OperationMeta {
24671 pub changes: LedgerEntryChanges,
24672}
24673
24674impl ReadXdr for OperationMeta {
24675 #[cfg(feature = "std")]
24676 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24677 r.with_limited_depth(|r| {
24678 Ok(Self {
24679 changes: LedgerEntryChanges::read_xdr(r)?,
24680 })
24681 })
24682 }
24683}
24684
24685impl WriteXdr for OperationMeta {
24686 #[cfg(feature = "std")]
24687 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24688 w.with_limited_depth(|w| {
24689 self.changes.write_xdr(w)?;
24690 Ok(())
24691 })
24692 }
24693}
24694
24695#[cfg_attr(feature = "alloc", derive(Default))]
24706#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24707#[cfg_eval::cfg_eval]
24708#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24709#[cfg_attr(
24710 all(feature = "serde", feature = "alloc"),
24711 serde_with::serde_as,
24712 derive(serde::Serialize, serde::Deserialize),
24713 serde(rename_all = "snake_case")
24714)]
24715#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24716pub struct TransactionMetaV1 {
24717 pub tx_changes: LedgerEntryChanges,
24718 pub operations: VecM<OperationMeta>,
24719}
24720
24721impl ReadXdr for TransactionMetaV1 {
24722 #[cfg(feature = "std")]
24723 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24724 r.with_limited_depth(|r| {
24725 Ok(Self {
24726 tx_changes: LedgerEntryChanges::read_xdr(r)?,
24727 operations: VecM::<OperationMeta>::read_xdr(r)?,
24728 })
24729 })
24730 }
24731}
24732
24733impl WriteXdr for TransactionMetaV1 {
24734 #[cfg(feature = "std")]
24735 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24736 w.with_limited_depth(|w| {
24737 self.tx_changes.write_xdr(w)?;
24738 self.operations.write_xdr(w)?;
24739 Ok(())
24740 })
24741 }
24742}
24743
24744#[cfg_attr(feature = "alloc", derive(Default))]
24758#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24759#[cfg_eval::cfg_eval]
24760#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24761#[cfg_attr(
24762 all(feature = "serde", feature = "alloc"),
24763 serde_with::serde_as,
24764 derive(serde::Serialize, serde::Deserialize),
24765 serde(rename_all = "snake_case")
24766)]
24767#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24768pub struct TransactionMetaV2 {
24769 pub tx_changes_before: LedgerEntryChanges,
24770 pub operations: VecM<OperationMeta>,
24771 pub tx_changes_after: LedgerEntryChanges,
24772}
24773
24774impl ReadXdr for TransactionMetaV2 {
24775 #[cfg(feature = "std")]
24776 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24777 r.with_limited_depth(|r| {
24778 Ok(Self {
24779 tx_changes_before: LedgerEntryChanges::read_xdr(r)?,
24780 operations: VecM::<OperationMeta>::read_xdr(r)?,
24781 tx_changes_after: LedgerEntryChanges::read_xdr(r)?,
24782 })
24783 })
24784 }
24785}
24786
24787impl WriteXdr for TransactionMetaV2 {
24788 #[cfg(feature = "std")]
24789 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24790 w.with_limited_depth(|w| {
24791 self.tx_changes_before.write_xdr(w)?;
24792 self.operations.write_xdr(w)?;
24793 self.tx_changes_after.write_xdr(w)?;
24794 Ok(())
24795 })
24796 }
24797}
24798
24799#[cfg_attr(feature = "alloc", derive(Default))]
24812#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24813#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24814#[cfg_attr(
24815 all(feature = "serde", feature = "alloc"),
24816 derive(serde::Serialize, serde::Deserialize),
24817 serde(rename_all = "snake_case")
24818)]
24819#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24820#[repr(i32)]
24821pub enum ContractEventType {
24822 #[cfg_attr(feature = "alloc", default)]
24823 System = 0,
24824 Contract = 1,
24825 Diagnostic = 2,
24826}
24827
24828impl ContractEventType {
24829 pub const VARIANTS: [ContractEventType; 3] = [
24830 ContractEventType::System,
24831 ContractEventType::Contract,
24832 ContractEventType::Diagnostic,
24833 ];
24834 pub const VARIANTS_STR: [&'static str; 3] = ["System", "Contract", "Diagnostic"];
24835
24836 #[must_use]
24837 pub const fn name(&self) -> &'static str {
24838 match self {
24839 Self::System => "System",
24840 Self::Contract => "Contract",
24841 Self::Diagnostic => "Diagnostic",
24842 }
24843 }
24844
24845 #[must_use]
24846 pub const fn variants() -> [ContractEventType; 3] {
24847 Self::VARIANTS
24848 }
24849}
24850
24851impl Name for ContractEventType {
24852 #[must_use]
24853 fn name(&self) -> &'static str {
24854 Self::name(self)
24855 }
24856}
24857
24858impl Variants<ContractEventType> for ContractEventType {
24859 fn variants() -> slice::Iter<'static, ContractEventType> {
24860 Self::VARIANTS.iter()
24861 }
24862}
24863
24864impl Enum for ContractEventType {}
24865
24866impl fmt::Display for ContractEventType {
24867 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24868 f.write_str(self.name())
24869 }
24870}
24871
24872impl TryFrom<i32> for ContractEventType {
24873 type Error = Error;
24874
24875 fn try_from(i: i32) -> Result<Self, Error> {
24876 let e = match i {
24877 0 => ContractEventType::System,
24878 1 => ContractEventType::Contract,
24879 2 => ContractEventType::Diagnostic,
24880 #[allow(unreachable_patterns)]
24881 _ => return Err(Error::Invalid),
24882 };
24883 Ok(e)
24884 }
24885}
24886
24887impl From<ContractEventType> for i32 {
24888 #[must_use]
24889 fn from(e: ContractEventType) -> Self {
24890 e as Self
24891 }
24892}
24893
24894impl ReadXdr for ContractEventType {
24895 #[cfg(feature = "std")]
24896 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24897 r.with_limited_depth(|r| {
24898 let e = i32::read_xdr(r)?;
24899 let v: Self = e.try_into()?;
24900 Ok(v)
24901 })
24902 }
24903}
24904
24905impl WriteXdr for ContractEventType {
24906 #[cfg(feature = "std")]
24907 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24908 w.with_limited_depth(|w| {
24909 let i: i32 = (*self).into();
24910 i.write_xdr(w)
24911 })
24912 }
24913}
24914
24915#[cfg_attr(feature = "alloc", derive(Default))]
24926#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24927#[cfg_eval::cfg_eval]
24928#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24929#[cfg_attr(
24930 all(feature = "serde", feature = "alloc"),
24931 serde_with::serde_as,
24932 derive(serde::Serialize, serde::Deserialize),
24933 serde(rename_all = "snake_case")
24934)]
24935#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24936pub struct ContractEventV0 {
24937 pub topics: VecM<ScVal>,
24938 pub data: ScVal,
24939}
24940
24941impl ReadXdr for ContractEventV0 {
24942 #[cfg(feature = "std")]
24943 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
24944 r.with_limited_depth(|r| {
24945 Ok(Self {
24946 topics: VecM::<ScVal>::read_xdr(r)?,
24947 data: ScVal::read_xdr(r)?,
24948 })
24949 })
24950 }
24951}
24952
24953impl WriteXdr for ContractEventV0 {
24954 #[cfg(feature = "std")]
24955 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
24956 w.with_limited_depth(|w| {
24957 self.topics.write_xdr(w)?;
24958 self.data.write_xdr(w)?;
24959 Ok(())
24960 })
24961 }
24962}
24963
24964#[cfg_eval::cfg_eval]
24980#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
24981#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
24982#[cfg_attr(
24983 all(feature = "serde", feature = "alloc"),
24984 serde_with::serde_as,
24985 derive(serde::Serialize, serde::Deserialize),
24986 serde(rename_all = "snake_case")
24987)]
24988#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
24989#[allow(clippy::large_enum_variant)]
24990pub enum ContractEventBody {
24991 V0(ContractEventV0),
24992}
24993
24994#[cfg(feature = "alloc")]
24995impl Default for ContractEventBody {
24996 fn default() -> Self {
24997 Self::V0(ContractEventV0::default())
24998 }
24999}
25000
25001impl ContractEventBody {
25002 pub const VARIANTS: [i32; 1] = [0];
25003 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
25004
25005 #[must_use]
25006 pub const fn name(&self) -> &'static str {
25007 match self {
25008 Self::V0(_) => "V0",
25009 }
25010 }
25011
25012 #[must_use]
25013 pub const fn discriminant(&self) -> i32 {
25014 #[allow(clippy::match_same_arms)]
25015 match self {
25016 Self::V0(_) => 0,
25017 }
25018 }
25019
25020 #[must_use]
25021 pub const fn variants() -> [i32; 1] {
25022 Self::VARIANTS
25023 }
25024}
25025
25026impl Name for ContractEventBody {
25027 #[must_use]
25028 fn name(&self) -> &'static str {
25029 Self::name(self)
25030 }
25031}
25032
25033impl Discriminant<i32> for ContractEventBody {
25034 #[must_use]
25035 fn discriminant(&self) -> i32 {
25036 Self::discriminant(self)
25037 }
25038}
25039
25040impl Variants<i32> for ContractEventBody {
25041 fn variants() -> slice::Iter<'static, i32> {
25042 Self::VARIANTS.iter()
25043 }
25044}
25045
25046impl Union<i32> for ContractEventBody {}
25047
25048impl ReadXdr for ContractEventBody {
25049 #[cfg(feature = "std")]
25050 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25051 r.with_limited_depth(|r| {
25052 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
25053 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
25054 let v = match dv {
25055 0 => Self::V0(ContractEventV0::read_xdr(r)?),
25056 #[allow(unreachable_patterns)]
25057 _ => return Err(Error::Invalid),
25058 };
25059 Ok(v)
25060 })
25061 }
25062}
25063
25064impl WriteXdr for ContractEventBody {
25065 #[cfg(feature = "std")]
25066 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25067 w.with_limited_depth(|w| {
25068 self.discriminant().write_xdr(w)?;
25069 #[allow(clippy::match_same_arms)]
25070 match self {
25071 Self::V0(v) => v.write_xdr(w)?,
25072 };
25073 Ok(())
25074 })
25075 }
25076}
25077
25078#[cfg_attr(feature = "alloc", derive(Default))]
25104#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25105#[cfg_eval::cfg_eval]
25106#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25107#[cfg_attr(
25108 all(feature = "serde", feature = "alloc"),
25109 serde_with::serde_as,
25110 derive(serde::Serialize, serde::Deserialize),
25111 serde(rename_all = "snake_case")
25112)]
25113#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25114pub struct ContractEvent {
25115 pub ext: ExtensionPoint,
25116 pub contract_id: Option<ContractId>,
25117 pub type_: ContractEventType,
25118 pub body: ContractEventBody,
25119}
25120
25121impl ReadXdr for ContractEvent {
25122 #[cfg(feature = "std")]
25123 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25124 r.with_limited_depth(|r| {
25125 Ok(Self {
25126 ext: ExtensionPoint::read_xdr(r)?,
25127 contract_id: Option::<ContractId>::read_xdr(r)?,
25128 type_: ContractEventType::read_xdr(r)?,
25129 body: ContractEventBody::read_xdr(r)?,
25130 })
25131 })
25132 }
25133}
25134
25135impl WriteXdr for ContractEvent {
25136 #[cfg(feature = "std")]
25137 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25138 w.with_limited_depth(|w| {
25139 self.ext.write_xdr(w)?;
25140 self.contract_id.write_xdr(w)?;
25141 self.type_.write_xdr(w)?;
25142 self.body.write_xdr(w)?;
25143 Ok(())
25144 })
25145 }
25146}
25147
25148#[cfg_attr(feature = "alloc", derive(Default))]
25159#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25160#[cfg_eval::cfg_eval]
25161#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25162#[cfg_attr(
25163 all(feature = "serde", feature = "alloc"),
25164 serde_with::serde_as,
25165 derive(serde::Serialize, serde::Deserialize),
25166 serde(rename_all = "snake_case")
25167)]
25168#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25169pub struct DiagnosticEvent {
25170 pub in_successful_contract_call: bool,
25171 pub event: ContractEvent,
25172}
25173
25174impl ReadXdr for DiagnosticEvent {
25175 #[cfg(feature = "std")]
25176 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25177 r.with_limited_depth(|r| {
25178 Ok(Self {
25179 in_successful_contract_call: bool::read_xdr(r)?,
25180 event: ContractEvent::read_xdr(r)?,
25181 })
25182 })
25183 }
25184}
25185
25186impl WriteXdr for DiagnosticEvent {
25187 #[cfg(feature = "std")]
25188 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25189 w.with_limited_depth(|w| {
25190 self.in_successful_contract_call.write_xdr(w)?;
25191 self.event.write_xdr(w)?;
25192 Ok(())
25193 })
25194 }
25195}
25196
25197#[cfg_attr(feature = "alloc", derive(Default))]
25236#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25237#[cfg_eval::cfg_eval]
25238#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25239#[cfg_attr(
25240 all(feature = "serde", feature = "alloc"),
25241 serde_with::serde_as,
25242 derive(serde::Serialize, serde::Deserialize),
25243 serde(rename_all = "snake_case")
25244)]
25245#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25246pub struct SorobanTransactionMetaExtV1 {
25247 pub ext: ExtensionPoint,
25248 #[cfg_attr(
25249 all(feature = "serde", feature = "alloc"),
25250 serde_as(as = "NumberOrString")
25251 )]
25252 pub total_non_refundable_resource_fee_charged: i64,
25253 #[cfg_attr(
25254 all(feature = "serde", feature = "alloc"),
25255 serde_as(as = "NumberOrString")
25256 )]
25257 pub total_refundable_resource_fee_charged: i64,
25258 #[cfg_attr(
25259 all(feature = "serde", feature = "alloc"),
25260 serde_as(as = "NumberOrString")
25261 )]
25262 pub rent_fee_charged: i64,
25263}
25264
25265impl ReadXdr for SorobanTransactionMetaExtV1 {
25266 #[cfg(feature = "std")]
25267 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25268 r.with_limited_depth(|r| {
25269 Ok(Self {
25270 ext: ExtensionPoint::read_xdr(r)?,
25271 total_non_refundable_resource_fee_charged: i64::read_xdr(r)?,
25272 total_refundable_resource_fee_charged: i64::read_xdr(r)?,
25273 rent_fee_charged: i64::read_xdr(r)?,
25274 })
25275 })
25276 }
25277}
25278
25279impl WriteXdr for SorobanTransactionMetaExtV1 {
25280 #[cfg(feature = "std")]
25281 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25282 w.with_limited_depth(|w| {
25283 self.ext.write_xdr(w)?;
25284 self.total_non_refundable_resource_fee_charged
25285 .write_xdr(w)?;
25286 self.total_refundable_resource_fee_charged.write_xdr(w)?;
25287 self.rent_fee_charged.write_xdr(w)?;
25288 Ok(())
25289 })
25290 }
25291}
25292
25293#[cfg_eval::cfg_eval]
25307#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25308#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25309#[cfg_attr(
25310 all(feature = "serde", feature = "alloc"),
25311 serde_with::serde_as,
25312 derive(serde::Serialize, serde::Deserialize),
25313 serde(rename_all = "snake_case")
25314)]
25315#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25316#[allow(clippy::large_enum_variant)]
25317pub enum SorobanTransactionMetaExt {
25318 V0,
25319 V1(SorobanTransactionMetaExtV1),
25320}
25321
25322#[cfg(feature = "alloc")]
25323impl Default for SorobanTransactionMetaExt {
25324 fn default() -> Self {
25325 Self::V0
25326 }
25327}
25328
25329impl SorobanTransactionMetaExt {
25330 pub const VARIANTS: [i32; 2] = [0, 1];
25331 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
25332
25333 #[must_use]
25334 pub const fn name(&self) -> &'static str {
25335 match self {
25336 Self::V0 => "V0",
25337 Self::V1(_) => "V1",
25338 }
25339 }
25340
25341 #[must_use]
25342 pub const fn discriminant(&self) -> i32 {
25343 #[allow(clippy::match_same_arms)]
25344 match self {
25345 Self::V0 => 0,
25346 Self::V1(_) => 1,
25347 }
25348 }
25349
25350 #[must_use]
25351 pub const fn variants() -> [i32; 2] {
25352 Self::VARIANTS
25353 }
25354}
25355
25356impl Name for SorobanTransactionMetaExt {
25357 #[must_use]
25358 fn name(&self) -> &'static str {
25359 Self::name(self)
25360 }
25361}
25362
25363impl Discriminant<i32> for SorobanTransactionMetaExt {
25364 #[must_use]
25365 fn discriminant(&self) -> i32 {
25366 Self::discriminant(self)
25367 }
25368}
25369
25370impl Variants<i32> for SorobanTransactionMetaExt {
25371 fn variants() -> slice::Iter<'static, i32> {
25372 Self::VARIANTS.iter()
25373 }
25374}
25375
25376impl Union<i32> for SorobanTransactionMetaExt {}
25377
25378impl ReadXdr for SorobanTransactionMetaExt {
25379 #[cfg(feature = "std")]
25380 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25381 r.with_limited_depth(|r| {
25382 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
25383 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
25384 let v = match dv {
25385 0 => Self::V0,
25386 1 => Self::V1(SorobanTransactionMetaExtV1::read_xdr(r)?),
25387 #[allow(unreachable_patterns)]
25388 _ => return Err(Error::Invalid),
25389 };
25390 Ok(v)
25391 })
25392 }
25393}
25394
25395impl WriteXdr for SorobanTransactionMetaExt {
25396 #[cfg(feature = "std")]
25397 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25398 w.with_limited_depth(|w| {
25399 self.discriminant().write_xdr(w)?;
25400 #[allow(clippy::match_same_arms)]
25401 match self {
25402 Self::V0 => ().write_xdr(w)?,
25403 Self::V1(v) => v.write_xdr(w)?,
25404 };
25405 Ok(())
25406 })
25407 }
25408}
25409
25410#[cfg_attr(feature = "alloc", derive(Default))]
25429#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25430#[cfg_eval::cfg_eval]
25431#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25432#[cfg_attr(
25433 all(feature = "serde", feature = "alloc"),
25434 serde_with::serde_as,
25435 derive(serde::Serialize, serde::Deserialize),
25436 serde(rename_all = "snake_case")
25437)]
25438#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25439pub struct SorobanTransactionMeta {
25440 pub ext: SorobanTransactionMetaExt,
25441 pub events: VecM<ContractEvent>,
25442 pub return_value: ScVal,
25443 pub diagnostic_events: VecM<DiagnosticEvent>,
25444}
25445
25446impl ReadXdr for SorobanTransactionMeta {
25447 #[cfg(feature = "std")]
25448 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25449 r.with_limited_depth(|r| {
25450 Ok(Self {
25451 ext: SorobanTransactionMetaExt::read_xdr(r)?,
25452 events: VecM::<ContractEvent>::read_xdr(r)?,
25453 return_value: ScVal::read_xdr(r)?,
25454 diagnostic_events: VecM::<DiagnosticEvent>::read_xdr(r)?,
25455 })
25456 })
25457 }
25458}
25459
25460impl WriteXdr for SorobanTransactionMeta {
25461 #[cfg(feature = "std")]
25462 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25463 w.with_limited_depth(|w| {
25464 self.ext.write_xdr(w)?;
25465 self.events.write_xdr(w)?;
25466 self.return_value.write_xdr(w)?;
25467 self.diagnostic_events.write_xdr(w)?;
25468 Ok(())
25469 })
25470 }
25471}
25472
25473#[cfg_attr(feature = "alloc", derive(Default))]
25491#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25492#[cfg_eval::cfg_eval]
25493#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25494#[cfg_attr(
25495 all(feature = "serde", feature = "alloc"),
25496 serde_with::serde_as,
25497 derive(serde::Serialize, serde::Deserialize),
25498 serde(rename_all = "snake_case")
25499)]
25500#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25501pub struct TransactionMetaV3 {
25502 pub ext: ExtensionPoint,
25503 pub tx_changes_before: LedgerEntryChanges,
25504 pub operations: VecM<OperationMeta>,
25505 pub tx_changes_after: LedgerEntryChanges,
25506 pub soroban_meta: Option<SorobanTransactionMeta>,
25507}
25508
25509impl ReadXdr for TransactionMetaV3 {
25510 #[cfg(feature = "std")]
25511 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25512 r.with_limited_depth(|r| {
25513 Ok(Self {
25514 ext: ExtensionPoint::read_xdr(r)?,
25515 tx_changes_before: LedgerEntryChanges::read_xdr(r)?,
25516 operations: VecM::<OperationMeta>::read_xdr(r)?,
25517 tx_changes_after: LedgerEntryChanges::read_xdr(r)?,
25518 soroban_meta: Option::<SorobanTransactionMeta>::read_xdr(r)?,
25519 })
25520 })
25521 }
25522}
25523
25524impl WriteXdr for TransactionMetaV3 {
25525 #[cfg(feature = "std")]
25526 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25527 w.with_limited_depth(|w| {
25528 self.ext.write_xdr(w)?;
25529 self.tx_changes_before.write_xdr(w)?;
25530 self.operations.write_xdr(w)?;
25531 self.tx_changes_after.write_xdr(w)?;
25532 self.soroban_meta.write_xdr(w)?;
25533 Ok(())
25534 })
25535 }
25536}
25537
25538#[cfg_attr(feature = "alloc", derive(Default))]
25552#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25553#[cfg_eval::cfg_eval]
25554#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25555#[cfg_attr(
25556 all(feature = "serde", feature = "alloc"),
25557 serde_with::serde_as,
25558 derive(serde::Serialize, serde::Deserialize),
25559 serde(rename_all = "snake_case")
25560)]
25561#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25562pub struct OperationMetaV2 {
25563 pub ext: ExtensionPoint,
25564 pub changes: LedgerEntryChanges,
25565 pub events: VecM<ContractEvent>,
25566}
25567
25568impl ReadXdr for OperationMetaV2 {
25569 #[cfg(feature = "std")]
25570 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25571 r.with_limited_depth(|r| {
25572 Ok(Self {
25573 ext: ExtensionPoint::read_xdr(r)?,
25574 changes: LedgerEntryChanges::read_xdr(r)?,
25575 events: VecM::<ContractEvent>::read_xdr(r)?,
25576 })
25577 })
25578 }
25579}
25580
25581impl WriteXdr for OperationMetaV2 {
25582 #[cfg(feature = "std")]
25583 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25584 w.with_limited_depth(|w| {
25585 self.ext.write_xdr(w)?;
25586 self.changes.write_xdr(w)?;
25587 self.events.write_xdr(w)?;
25588 Ok(())
25589 })
25590 }
25591}
25592
25593#[cfg_attr(feature = "alloc", derive(Default))]
25605#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25606#[cfg_eval::cfg_eval]
25607#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25608#[cfg_attr(
25609 all(feature = "serde", feature = "alloc"),
25610 serde_with::serde_as,
25611 derive(serde::Serialize, serde::Deserialize),
25612 serde(rename_all = "snake_case")
25613)]
25614#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25615pub struct SorobanTransactionMetaV2 {
25616 pub ext: SorobanTransactionMetaExt,
25617 pub return_value: Option<ScVal>,
25618}
25619
25620impl ReadXdr for SorobanTransactionMetaV2 {
25621 #[cfg(feature = "std")]
25622 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25623 r.with_limited_depth(|r| {
25624 Ok(Self {
25625 ext: SorobanTransactionMetaExt::read_xdr(r)?,
25626 return_value: Option::<ScVal>::read_xdr(r)?,
25627 })
25628 })
25629 }
25630}
25631
25632impl WriteXdr for SorobanTransactionMetaV2 {
25633 #[cfg(feature = "std")]
25634 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25635 w.with_limited_depth(|w| {
25636 self.ext.write_xdr(w)?;
25637 self.return_value.write_xdr(w)?;
25638 Ok(())
25639 })
25640 }
25641}
25642
25643#[cfg_attr(feature = "alloc", derive(Default))]
25661#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25662#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25663#[cfg_attr(
25664 all(feature = "serde", feature = "alloc"),
25665 derive(serde::Serialize, serde::Deserialize),
25666 serde(rename_all = "snake_case")
25667)]
25668#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25669#[repr(i32)]
25670pub enum TransactionEventStage {
25671 #[cfg_attr(feature = "alloc", default)]
25672 BeforeAllTxs = 0,
25673 AfterTx = 1,
25674 AfterAllTxs = 2,
25675}
25676
25677impl TransactionEventStage {
25678 pub const VARIANTS: [TransactionEventStage; 3] = [
25679 TransactionEventStage::BeforeAllTxs,
25680 TransactionEventStage::AfterTx,
25681 TransactionEventStage::AfterAllTxs,
25682 ];
25683 pub const VARIANTS_STR: [&'static str; 3] = ["BeforeAllTxs", "AfterTx", "AfterAllTxs"];
25684
25685 #[must_use]
25686 pub const fn name(&self) -> &'static str {
25687 match self {
25688 Self::BeforeAllTxs => "BeforeAllTxs",
25689 Self::AfterTx => "AfterTx",
25690 Self::AfterAllTxs => "AfterAllTxs",
25691 }
25692 }
25693
25694 #[must_use]
25695 pub const fn variants() -> [TransactionEventStage; 3] {
25696 Self::VARIANTS
25697 }
25698}
25699
25700impl Name for TransactionEventStage {
25701 #[must_use]
25702 fn name(&self) -> &'static str {
25703 Self::name(self)
25704 }
25705}
25706
25707impl Variants<TransactionEventStage> for TransactionEventStage {
25708 fn variants() -> slice::Iter<'static, TransactionEventStage> {
25709 Self::VARIANTS.iter()
25710 }
25711}
25712
25713impl Enum for TransactionEventStage {}
25714
25715impl fmt::Display for TransactionEventStage {
25716 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
25717 f.write_str(self.name())
25718 }
25719}
25720
25721impl TryFrom<i32> for TransactionEventStage {
25722 type Error = Error;
25723
25724 fn try_from(i: i32) -> Result<Self, Error> {
25725 let e = match i {
25726 0 => TransactionEventStage::BeforeAllTxs,
25727 1 => TransactionEventStage::AfterTx,
25728 2 => TransactionEventStage::AfterAllTxs,
25729 #[allow(unreachable_patterns)]
25730 _ => return Err(Error::Invalid),
25731 };
25732 Ok(e)
25733 }
25734}
25735
25736impl From<TransactionEventStage> for i32 {
25737 #[must_use]
25738 fn from(e: TransactionEventStage) -> Self {
25739 e as Self
25740 }
25741}
25742
25743impl ReadXdr for TransactionEventStage {
25744 #[cfg(feature = "std")]
25745 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25746 r.with_limited_depth(|r| {
25747 let e = i32::read_xdr(r)?;
25748 let v: Self = e.try_into()?;
25749 Ok(v)
25750 })
25751 }
25752}
25753
25754impl WriteXdr for TransactionEventStage {
25755 #[cfg(feature = "std")]
25756 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25757 w.with_limited_depth(|w| {
25758 let i: i32 = (*self).into();
25759 i.write_xdr(w)
25760 })
25761 }
25762}
25763
25764#[cfg_attr(feature = "alloc", derive(Default))]
25774#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25775#[cfg_eval::cfg_eval]
25776#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25777#[cfg_attr(
25778 all(feature = "serde", feature = "alloc"),
25779 serde_with::serde_as,
25780 derive(serde::Serialize, serde::Deserialize),
25781 serde(rename_all = "snake_case")
25782)]
25783#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25784pub struct TransactionEvent {
25785 pub stage: TransactionEventStage,
25786 pub event: ContractEvent,
25787}
25788
25789impl ReadXdr for TransactionEvent {
25790 #[cfg(feature = "std")]
25791 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25792 r.with_limited_depth(|r| {
25793 Ok(Self {
25794 stage: TransactionEventStage::read_xdr(r)?,
25795 event: ContractEvent::read_xdr(r)?,
25796 })
25797 })
25798 }
25799}
25800
25801impl WriteXdr for TransactionEvent {
25802 #[cfg(feature = "std")]
25803 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25804 w.with_limited_depth(|w| {
25805 self.stage.write_xdr(w)?;
25806 self.event.write_xdr(w)?;
25807 Ok(())
25808 })
25809 }
25810}
25811
25812#[cfg_attr(feature = "alloc", derive(Default))]
25833#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25834#[cfg_eval::cfg_eval]
25835#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25836#[cfg_attr(
25837 all(feature = "serde", feature = "alloc"),
25838 serde_with::serde_as,
25839 derive(serde::Serialize, serde::Deserialize),
25840 serde(rename_all = "snake_case")
25841)]
25842#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25843pub struct TransactionMetaV4 {
25844 pub ext: ExtensionPoint,
25845 pub tx_changes_before: LedgerEntryChanges,
25846 pub operations: VecM<OperationMetaV2>,
25847 pub tx_changes_after: LedgerEntryChanges,
25848 pub soroban_meta: Option<SorobanTransactionMetaV2>,
25849 pub events: VecM<TransactionEvent>,
25850 pub diagnostic_events: VecM<DiagnosticEvent>,
25851}
25852
25853impl ReadXdr for TransactionMetaV4 {
25854 #[cfg(feature = "std")]
25855 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25856 r.with_limited_depth(|r| {
25857 Ok(Self {
25858 ext: ExtensionPoint::read_xdr(r)?,
25859 tx_changes_before: LedgerEntryChanges::read_xdr(r)?,
25860 operations: VecM::<OperationMetaV2>::read_xdr(r)?,
25861 tx_changes_after: LedgerEntryChanges::read_xdr(r)?,
25862 soroban_meta: Option::<SorobanTransactionMetaV2>::read_xdr(r)?,
25863 events: VecM::<TransactionEvent>::read_xdr(r)?,
25864 diagnostic_events: VecM::<DiagnosticEvent>::read_xdr(r)?,
25865 })
25866 })
25867 }
25868}
25869
25870impl WriteXdr for TransactionMetaV4 {
25871 #[cfg(feature = "std")]
25872 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25873 w.with_limited_depth(|w| {
25874 self.ext.write_xdr(w)?;
25875 self.tx_changes_before.write_xdr(w)?;
25876 self.operations.write_xdr(w)?;
25877 self.tx_changes_after.write_xdr(w)?;
25878 self.soroban_meta.write_xdr(w)?;
25879 self.events.write_xdr(w)?;
25880 self.diagnostic_events.write_xdr(w)?;
25881 Ok(())
25882 })
25883 }
25884}
25885
25886#[cfg_attr(feature = "alloc", derive(Default))]
25897#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25898#[cfg_eval::cfg_eval]
25899#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25900#[cfg_attr(
25901 all(feature = "serde", feature = "alloc"),
25902 serde_with::serde_as,
25903 derive(serde::Serialize, serde::Deserialize),
25904 serde(rename_all = "snake_case")
25905)]
25906#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25907pub struct InvokeHostFunctionSuccessPreImage {
25908 pub return_value: ScVal,
25909 pub events: VecM<ContractEvent>,
25910}
25911
25912impl ReadXdr for InvokeHostFunctionSuccessPreImage {
25913 #[cfg(feature = "std")]
25914 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
25915 r.with_limited_depth(|r| {
25916 Ok(Self {
25917 return_value: ScVal::read_xdr(r)?,
25918 events: VecM::<ContractEvent>::read_xdr(r)?,
25919 })
25920 })
25921 }
25922}
25923
25924impl WriteXdr for InvokeHostFunctionSuccessPreImage {
25925 #[cfg(feature = "std")]
25926 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
25927 w.with_limited_depth(|w| {
25928 self.return_value.write_xdr(w)?;
25929 self.events.write_xdr(w)?;
25930 Ok(())
25931 })
25932 }
25933}
25934
25935#[cfg_eval::cfg_eval]
25955#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
25956#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
25957#[cfg_attr(
25958 all(feature = "serde", feature = "alloc"),
25959 serde_with::serde_as,
25960 derive(serde::Serialize, serde::Deserialize),
25961 serde(rename_all = "snake_case")
25962)]
25963#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
25964#[allow(clippy::large_enum_variant)]
25965pub enum TransactionMeta {
25966 V0(VecM<OperationMeta>),
25967 V1(TransactionMetaV1),
25968 V2(TransactionMetaV2),
25969 V3(TransactionMetaV3),
25970 V4(TransactionMetaV4),
25971}
25972
25973#[cfg(feature = "alloc")]
25974impl Default for TransactionMeta {
25975 fn default() -> Self {
25976 Self::V0(VecM::<OperationMeta>::default())
25977 }
25978}
25979
25980impl TransactionMeta {
25981 pub const VARIANTS: [i32; 5] = [0, 1, 2, 3, 4];
25982 pub const VARIANTS_STR: [&'static str; 5] = ["V0", "V1", "V2", "V3", "V4"];
25983
25984 #[must_use]
25985 pub const fn name(&self) -> &'static str {
25986 match self {
25987 Self::V0(_) => "V0",
25988 Self::V1(_) => "V1",
25989 Self::V2(_) => "V2",
25990 Self::V3(_) => "V3",
25991 Self::V4(_) => "V4",
25992 }
25993 }
25994
25995 #[must_use]
25996 pub const fn discriminant(&self) -> i32 {
25997 #[allow(clippy::match_same_arms)]
25998 match self {
25999 Self::V0(_) => 0,
26000 Self::V1(_) => 1,
26001 Self::V2(_) => 2,
26002 Self::V3(_) => 3,
26003 Self::V4(_) => 4,
26004 }
26005 }
26006
26007 #[must_use]
26008 pub const fn variants() -> [i32; 5] {
26009 Self::VARIANTS
26010 }
26011}
26012
26013impl Name for TransactionMeta {
26014 #[must_use]
26015 fn name(&self) -> &'static str {
26016 Self::name(self)
26017 }
26018}
26019
26020impl Discriminant<i32> for TransactionMeta {
26021 #[must_use]
26022 fn discriminant(&self) -> i32 {
26023 Self::discriminant(self)
26024 }
26025}
26026
26027impl Variants<i32> for TransactionMeta {
26028 fn variants() -> slice::Iter<'static, i32> {
26029 Self::VARIANTS.iter()
26030 }
26031}
26032
26033impl Union<i32> for TransactionMeta {}
26034
26035impl ReadXdr for TransactionMeta {
26036 #[cfg(feature = "std")]
26037 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26038 r.with_limited_depth(|r| {
26039 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
26040 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
26041 let v = match dv {
26042 0 => Self::V0(VecM::<OperationMeta>::read_xdr(r)?),
26043 1 => Self::V1(TransactionMetaV1::read_xdr(r)?),
26044 2 => Self::V2(TransactionMetaV2::read_xdr(r)?),
26045 3 => Self::V3(TransactionMetaV3::read_xdr(r)?),
26046 4 => Self::V4(TransactionMetaV4::read_xdr(r)?),
26047 #[allow(unreachable_patterns)]
26048 _ => return Err(Error::Invalid),
26049 };
26050 Ok(v)
26051 })
26052 }
26053}
26054
26055impl WriteXdr for TransactionMeta {
26056 #[cfg(feature = "std")]
26057 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26058 w.with_limited_depth(|w| {
26059 self.discriminant().write_xdr(w)?;
26060 #[allow(clippy::match_same_arms)]
26061 match self {
26062 Self::V0(v) => v.write_xdr(w)?,
26063 Self::V1(v) => v.write_xdr(w)?,
26064 Self::V2(v) => v.write_xdr(w)?,
26065 Self::V3(v) => v.write_xdr(w)?,
26066 Self::V4(v) => v.write_xdr(w)?,
26067 };
26068 Ok(())
26069 })
26070 }
26071}
26072
26073#[cfg_attr(feature = "alloc", derive(Default))]
26085#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26086#[cfg_eval::cfg_eval]
26087#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26088#[cfg_attr(
26089 all(feature = "serde", feature = "alloc"),
26090 serde_with::serde_as,
26091 derive(serde::Serialize, serde::Deserialize),
26092 serde(rename_all = "snake_case")
26093)]
26094#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26095pub struct TransactionResultMeta {
26096 pub result: TransactionResultPair,
26097 pub fee_processing: LedgerEntryChanges,
26098 pub tx_apply_processing: TransactionMeta,
26099}
26100
26101impl ReadXdr for TransactionResultMeta {
26102 #[cfg(feature = "std")]
26103 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26104 r.with_limited_depth(|r| {
26105 Ok(Self {
26106 result: TransactionResultPair::read_xdr(r)?,
26107 fee_processing: LedgerEntryChanges::read_xdr(r)?,
26108 tx_apply_processing: TransactionMeta::read_xdr(r)?,
26109 })
26110 })
26111 }
26112}
26113
26114impl WriteXdr for TransactionResultMeta {
26115 #[cfg(feature = "std")]
26116 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26117 w.with_limited_depth(|w| {
26118 self.result.write_xdr(w)?;
26119 self.fee_processing.write_xdr(w)?;
26120 self.tx_apply_processing.write_xdr(w)?;
26121 Ok(())
26122 })
26123 }
26124}
26125
26126#[cfg_attr(feature = "alloc", derive(Default))]
26142#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26143#[cfg_eval::cfg_eval]
26144#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26145#[cfg_attr(
26146 all(feature = "serde", feature = "alloc"),
26147 serde_with::serde_as,
26148 derive(serde::Serialize, serde::Deserialize),
26149 serde(rename_all = "snake_case")
26150)]
26151#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26152pub struct TransactionResultMetaV1 {
26153 pub ext: ExtensionPoint,
26154 pub result: TransactionResultPair,
26155 pub fee_processing: LedgerEntryChanges,
26156 pub tx_apply_processing: TransactionMeta,
26157 pub post_tx_apply_fee_processing: LedgerEntryChanges,
26158}
26159
26160impl ReadXdr for TransactionResultMetaV1 {
26161 #[cfg(feature = "std")]
26162 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26163 r.with_limited_depth(|r| {
26164 Ok(Self {
26165 ext: ExtensionPoint::read_xdr(r)?,
26166 result: TransactionResultPair::read_xdr(r)?,
26167 fee_processing: LedgerEntryChanges::read_xdr(r)?,
26168 tx_apply_processing: TransactionMeta::read_xdr(r)?,
26169 post_tx_apply_fee_processing: LedgerEntryChanges::read_xdr(r)?,
26170 })
26171 })
26172 }
26173}
26174
26175impl WriteXdr for TransactionResultMetaV1 {
26176 #[cfg(feature = "std")]
26177 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26178 w.with_limited_depth(|w| {
26179 self.ext.write_xdr(w)?;
26180 self.result.write_xdr(w)?;
26181 self.fee_processing.write_xdr(w)?;
26182 self.tx_apply_processing.write_xdr(w)?;
26183 self.post_tx_apply_fee_processing.write_xdr(w)?;
26184 Ok(())
26185 })
26186 }
26187}
26188
26189#[cfg_attr(feature = "alloc", derive(Default))]
26200#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26201#[cfg_eval::cfg_eval]
26202#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26203#[cfg_attr(
26204 all(feature = "serde", feature = "alloc"),
26205 serde_with::serde_as,
26206 derive(serde::Serialize, serde::Deserialize),
26207 serde(rename_all = "snake_case")
26208)]
26209#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26210pub struct UpgradeEntryMeta {
26211 pub upgrade: LedgerUpgrade,
26212 pub changes: LedgerEntryChanges,
26213}
26214
26215impl ReadXdr for UpgradeEntryMeta {
26216 #[cfg(feature = "std")]
26217 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26218 r.with_limited_depth(|r| {
26219 Ok(Self {
26220 upgrade: LedgerUpgrade::read_xdr(r)?,
26221 changes: LedgerEntryChanges::read_xdr(r)?,
26222 })
26223 })
26224 }
26225}
26226
26227impl WriteXdr for UpgradeEntryMeta {
26228 #[cfg(feature = "std")]
26229 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26230 w.with_limited_depth(|w| {
26231 self.upgrade.write_xdr(w)?;
26232 self.changes.write_xdr(w)?;
26233 Ok(())
26234 })
26235 }
26236}
26237
26238#[cfg_attr(feature = "alloc", derive(Default))]
26261#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26262#[cfg_eval::cfg_eval]
26263#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26264#[cfg_attr(
26265 all(feature = "serde", feature = "alloc"),
26266 serde_with::serde_as,
26267 derive(serde::Serialize, serde::Deserialize),
26268 serde(rename_all = "snake_case")
26269)]
26270#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26271pub struct LedgerCloseMetaV0 {
26272 pub ledger_header: LedgerHeaderHistoryEntry,
26273 pub tx_set: TransactionSet,
26274 pub tx_processing: VecM<TransactionResultMeta>,
26275 pub upgrades_processing: VecM<UpgradeEntryMeta>,
26276 pub scp_info: VecM<ScpHistoryEntry>,
26277}
26278
26279impl ReadXdr for LedgerCloseMetaV0 {
26280 #[cfg(feature = "std")]
26281 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26282 r.with_limited_depth(|r| {
26283 Ok(Self {
26284 ledger_header: LedgerHeaderHistoryEntry::read_xdr(r)?,
26285 tx_set: TransactionSet::read_xdr(r)?,
26286 tx_processing: VecM::<TransactionResultMeta>::read_xdr(r)?,
26287 upgrades_processing: VecM::<UpgradeEntryMeta>::read_xdr(r)?,
26288 scp_info: VecM::<ScpHistoryEntry>::read_xdr(r)?,
26289 })
26290 })
26291 }
26292}
26293
26294impl WriteXdr for LedgerCloseMetaV0 {
26295 #[cfg(feature = "std")]
26296 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26297 w.with_limited_depth(|w| {
26298 self.ledger_header.write_xdr(w)?;
26299 self.tx_set.write_xdr(w)?;
26300 self.tx_processing.write_xdr(w)?;
26301 self.upgrades_processing.write_xdr(w)?;
26302 self.scp_info.write_xdr(w)?;
26303 Ok(())
26304 })
26305 }
26306}
26307
26308#[cfg_attr(feature = "alloc", derive(Default))]
26319#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26320#[cfg_eval::cfg_eval]
26321#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26322#[cfg_attr(
26323 all(feature = "serde", feature = "alloc"),
26324 serde_with::serde_as,
26325 derive(serde::Serialize, serde::Deserialize),
26326 serde(rename_all = "snake_case")
26327)]
26328#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26329pub struct LedgerCloseMetaExtV1 {
26330 pub ext: ExtensionPoint,
26331 #[cfg_attr(
26332 all(feature = "serde", feature = "alloc"),
26333 serde_as(as = "NumberOrString")
26334 )]
26335 pub soroban_fee_write1_kb: i64,
26336}
26337
26338impl ReadXdr for LedgerCloseMetaExtV1 {
26339 #[cfg(feature = "std")]
26340 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26341 r.with_limited_depth(|r| {
26342 Ok(Self {
26343 ext: ExtensionPoint::read_xdr(r)?,
26344 soroban_fee_write1_kb: i64::read_xdr(r)?,
26345 })
26346 })
26347 }
26348}
26349
26350impl WriteXdr for LedgerCloseMetaExtV1 {
26351 #[cfg(feature = "std")]
26352 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26353 w.with_limited_depth(|w| {
26354 self.ext.write_xdr(w)?;
26355 self.soroban_fee_write1_kb.write_xdr(w)?;
26356 Ok(())
26357 })
26358 }
26359}
26360
26361#[cfg_eval::cfg_eval]
26375#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26376#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26377#[cfg_attr(
26378 all(feature = "serde", feature = "alloc"),
26379 serde_with::serde_as,
26380 derive(serde::Serialize, serde::Deserialize),
26381 serde(rename_all = "snake_case")
26382)]
26383#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26384#[allow(clippy::large_enum_variant)]
26385pub enum LedgerCloseMetaExt {
26386 V0,
26387 V1(LedgerCloseMetaExtV1),
26388}
26389
26390#[cfg(feature = "alloc")]
26391impl Default for LedgerCloseMetaExt {
26392 fn default() -> Self {
26393 Self::V0
26394 }
26395}
26396
26397impl LedgerCloseMetaExt {
26398 pub const VARIANTS: [i32; 2] = [0, 1];
26399 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
26400
26401 #[must_use]
26402 pub const fn name(&self) -> &'static str {
26403 match self {
26404 Self::V0 => "V0",
26405 Self::V1(_) => "V1",
26406 }
26407 }
26408
26409 #[must_use]
26410 pub const fn discriminant(&self) -> i32 {
26411 #[allow(clippy::match_same_arms)]
26412 match self {
26413 Self::V0 => 0,
26414 Self::V1(_) => 1,
26415 }
26416 }
26417
26418 #[must_use]
26419 pub const fn variants() -> [i32; 2] {
26420 Self::VARIANTS
26421 }
26422}
26423
26424impl Name for LedgerCloseMetaExt {
26425 #[must_use]
26426 fn name(&self) -> &'static str {
26427 Self::name(self)
26428 }
26429}
26430
26431impl Discriminant<i32> for LedgerCloseMetaExt {
26432 #[must_use]
26433 fn discriminant(&self) -> i32 {
26434 Self::discriminant(self)
26435 }
26436}
26437
26438impl Variants<i32> for LedgerCloseMetaExt {
26439 fn variants() -> slice::Iter<'static, i32> {
26440 Self::VARIANTS.iter()
26441 }
26442}
26443
26444impl Union<i32> for LedgerCloseMetaExt {}
26445
26446impl ReadXdr for LedgerCloseMetaExt {
26447 #[cfg(feature = "std")]
26448 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26449 r.with_limited_depth(|r| {
26450 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
26451 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
26452 let v = match dv {
26453 0 => Self::V0,
26454 1 => Self::V1(LedgerCloseMetaExtV1::read_xdr(r)?),
26455 #[allow(unreachable_patterns)]
26456 _ => return Err(Error::Invalid),
26457 };
26458 Ok(v)
26459 })
26460 }
26461}
26462
26463impl WriteXdr for LedgerCloseMetaExt {
26464 #[cfg(feature = "std")]
26465 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26466 w.with_limited_depth(|w| {
26467 self.discriminant().write_xdr(w)?;
26468 #[allow(clippy::match_same_arms)]
26469 match self {
26470 Self::V0 => ().write_xdr(w)?,
26471 Self::V1(v) => v.write_xdr(w)?,
26472 };
26473 Ok(())
26474 })
26475 }
26476}
26477
26478#[cfg_attr(feature = "alloc", derive(Default))]
26513#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26514#[cfg_eval::cfg_eval]
26515#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26516#[cfg_attr(
26517 all(feature = "serde", feature = "alloc"),
26518 serde_with::serde_as,
26519 derive(serde::Serialize, serde::Deserialize),
26520 serde(rename_all = "snake_case")
26521)]
26522#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26523pub struct LedgerCloseMetaV1 {
26524 pub ext: LedgerCloseMetaExt,
26525 pub ledger_header: LedgerHeaderHistoryEntry,
26526 pub tx_set: GeneralizedTransactionSet,
26527 pub tx_processing: VecM<TransactionResultMeta>,
26528 pub upgrades_processing: VecM<UpgradeEntryMeta>,
26529 pub scp_info: VecM<ScpHistoryEntry>,
26530 #[cfg_attr(
26531 all(feature = "serde", feature = "alloc"),
26532 serde_as(as = "NumberOrString")
26533 )]
26534 pub total_byte_size_of_live_soroban_state: u64,
26535 pub evicted_keys: VecM<LedgerKey>,
26536 pub unused: VecM<LedgerEntry>,
26537}
26538
26539impl ReadXdr for LedgerCloseMetaV1 {
26540 #[cfg(feature = "std")]
26541 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26542 r.with_limited_depth(|r| {
26543 Ok(Self {
26544 ext: LedgerCloseMetaExt::read_xdr(r)?,
26545 ledger_header: LedgerHeaderHistoryEntry::read_xdr(r)?,
26546 tx_set: GeneralizedTransactionSet::read_xdr(r)?,
26547 tx_processing: VecM::<TransactionResultMeta>::read_xdr(r)?,
26548 upgrades_processing: VecM::<UpgradeEntryMeta>::read_xdr(r)?,
26549 scp_info: VecM::<ScpHistoryEntry>::read_xdr(r)?,
26550 total_byte_size_of_live_soroban_state: u64::read_xdr(r)?,
26551 evicted_keys: VecM::<LedgerKey>::read_xdr(r)?,
26552 unused: VecM::<LedgerEntry>::read_xdr(r)?,
26553 })
26554 })
26555 }
26556}
26557
26558impl WriteXdr for LedgerCloseMetaV1 {
26559 #[cfg(feature = "std")]
26560 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26561 w.with_limited_depth(|w| {
26562 self.ext.write_xdr(w)?;
26563 self.ledger_header.write_xdr(w)?;
26564 self.tx_set.write_xdr(w)?;
26565 self.tx_processing.write_xdr(w)?;
26566 self.upgrades_processing.write_xdr(w)?;
26567 self.scp_info.write_xdr(w)?;
26568 self.total_byte_size_of_live_soroban_state.write_xdr(w)?;
26569 self.evicted_keys.write_xdr(w)?;
26570 self.unused.write_xdr(w)?;
26571 Ok(())
26572 })
26573 }
26574}
26575
26576#[cfg_attr(feature = "alloc", derive(Default))]
26608#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26609#[cfg_eval::cfg_eval]
26610#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26611#[cfg_attr(
26612 all(feature = "serde", feature = "alloc"),
26613 serde_with::serde_as,
26614 derive(serde::Serialize, serde::Deserialize),
26615 serde(rename_all = "snake_case")
26616)]
26617#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26618pub struct LedgerCloseMetaV2 {
26619 pub ext: LedgerCloseMetaExt,
26620 pub ledger_header: LedgerHeaderHistoryEntry,
26621 pub tx_set: GeneralizedTransactionSet,
26622 pub tx_processing: VecM<TransactionResultMetaV1>,
26623 pub upgrades_processing: VecM<UpgradeEntryMeta>,
26624 pub scp_info: VecM<ScpHistoryEntry>,
26625 #[cfg_attr(
26626 all(feature = "serde", feature = "alloc"),
26627 serde_as(as = "NumberOrString")
26628 )]
26629 pub total_byte_size_of_live_soroban_state: u64,
26630 pub evicted_keys: VecM<LedgerKey>,
26631}
26632
26633impl ReadXdr for LedgerCloseMetaV2 {
26634 #[cfg(feature = "std")]
26635 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26636 r.with_limited_depth(|r| {
26637 Ok(Self {
26638 ext: LedgerCloseMetaExt::read_xdr(r)?,
26639 ledger_header: LedgerHeaderHistoryEntry::read_xdr(r)?,
26640 tx_set: GeneralizedTransactionSet::read_xdr(r)?,
26641 tx_processing: VecM::<TransactionResultMetaV1>::read_xdr(r)?,
26642 upgrades_processing: VecM::<UpgradeEntryMeta>::read_xdr(r)?,
26643 scp_info: VecM::<ScpHistoryEntry>::read_xdr(r)?,
26644 total_byte_size_of_live_soroban_state: u64::read_xdr(r)?,
26645 evicted_keys: VecM::<LedgerKey>::read_xdr(r)?,
26646 })
26647 })
26648 }
26649}
26650
26651impl WriteXdr for LedgerCloseMetaV2 {
26652 #[cfg(feature = "std")]
26653 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26654 w.with_limited_depth(|w| {
26655 self.ext.write_xdr(w)?;
26656 self.ledger_header.write_xdr(w)?;
26657 self.tx_set.write_xdr(w)?;
26658 self.tx_processing.write_xdr(w)?;
26659 self.upgrades_processing.write_xdr(w)?;
26660 self.scp_info.write_xdr(w)?;
26661 self.total_byte_size_of_live_soroban_state.write_xdr(w)?;
26662 self.evicted_keys.write_xdr(w)?;
26663 Ok(())
26664 })
26665 }
26666}
26667
26668#[cfg_eval::cfg_eval]
26684#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26685#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26686#[cfg_attr(
26687 all(feature = "serde", feature = "alloc"),
26688 serde_with::serde_as,
26689 derive(serde::Serialize, serde::Deserialize),
26690 serde(rename_all = "snake_case")
26691)]
26692#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26693#[allow(clippy::large_enum_variant)]
26694pub enum LedgerCloseMeta {
26695 V0(LedgerCloseMetaV0),
26696 V1(LedgerCloseMetaV1),
26697 V2(LedgerCloseMetaV2),
26698}
26699
26700#[cfg(feature = "alloc")]
26701impl Default for LedgerCloseMeta {
26702 fn default() -> Self {
26703 Self::V0(LedgerCloseMetaV0::default())
26704 }
26705}
26706
26707impl LedgerCloseMeta {
26708 pub const VARIANTS: [i32; 3] = [0, 1, 2];
26709 pub const VARIANTS_STR: [&'static str; 3] = ["V0", "V1", "V2"];
26710
26711 #[must_use]
26712 pub const fn name(&self) -> &'static str {
26713 match self {
26714 Self::V0(_) => "V0",
26715 Self::V1(_) => "V1",
26716 Self::V2(_) => "V2",
26717 }
26718 }
26719
26720 #[must_use]
26721 pub const fn discriminant(&self) -> i32 {
26722 #[allow(clippy::match_same_arms)]
26723 match self {
26724 Self::V0(_) => 0,
26725 Self::V1(_) => 1,
26726 Self::V2(_) => 2,
26727 }
26728 }
26729
26730 #[must_use]
26731 pub const fn variants() -> [i32; 3] {
26732 Self::VARIANTS
26733 }
26734}
26735
26736impl Name for LedgerCloseMeta {
26737 #[must_use]
26738 fn name(&self) -> &'static str {
26739 Self::name(self)
26740 }
26741}
26742
26743impl Discriminant<i32> for LedgerCloseMeta {
26744 #[must_use]
26745 fn discriminant(&self) -> i32 {
26746 Self::discriminant(self)
26747 }
26748}
26749
26750impl Variants<i32> for LedgerCloseMeta {
26751 fn variants() -> slice::Iter<'static, i32> {
26752 Self::VARIANTS.iter()
26753 }
26754}
26755
26756impl Union<i32> for LedgerCloseMeta {}
26757
26758impl ReadXdr for LedgerCloseMeta {
26759 #[cfg(feature = "std")]
26760 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26761 r.with_limited_depth(|r| {
26762 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
26763 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
26764 let v = match dv {
26765 0 => Self::V0(LedgerCloseMetaV0::read_xdr(r)?),
26766 1 => Self::V1(LedgerCloseMetaV1::read_xdr(r)?),
26767 2 => Self::V2(LedgerCloseMetaV2::read_xdr(r)?),
26768 #[allow(unreachable_patterns)]
26769 _ => return Err(Error::Invalid),
26770 };
26771 Ok(v)
26772 })
26773 }
26774}
26775
26776impl WriteXdr for LedgerCloseMeta {
26777 #[cfg(feature = "std")]
26778 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26779 w.with_limited_depth(|w| {
26780 self.discriminant().write_xdr(w)?;
26781 #[allow(clippy::match_same_arms)]
26782 match self {
26783 Self::V0(v) => v.write_xdr(w)?,
26784 Self::V1(v) => v.write_xdr(w)?,
26785 Self::V2(v) => v.write_xdr(w)?,
26786 };
26787 Ok(())
26788 })
26789 }
26790}
26791
26792#[cfg_attr(feature = "alloc", derive(Default))]
26807#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26808#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26809#[cfg_attr(
26810 all(feature = "serde", feature = "alloc"),
26811 derive(serde::Serialize, serde::Deserialize),
26812 serde(rename_all = "snake_case")
26813)]
26814#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26815#[repr(i32)]
26816pub enum ErrorCode {
26817 #[cfg_attr(feature = "alloc", default)]
26818 Misc = 0,
26819 Data = 1,
26820 Conf = 2,
26821 Auth = 3,
26822 Load = 4,
26823}
26824
26825impl ErrorCode {
26826 pub const VARIANTS: [ErrorCode; 5] = [
26827 ErrorCode::Misc,
26828 ErrorCode::Data,
26829 ErrorCode::Conf,
26830 ErrorCode::Auth,
26831 ErrorCode::Load,
26832 ];
26833 pub const VARIANTS_STR: [&'static str; 5] = ["Misc", "Data", "Conf", "Auth", "Load"];
26834
26835 #[must_use]
26836 pub const fn name(&self) -> &'static str {
26837 match self {
26838 Self::Misc => "Misc",
26839 Self::Data => "Data",
26840 Self::Conf => "Conf",
26841 Self::Auth => "Auth",
26842 Self::Load => "Load",
26843 }
26844 }
26845
26846 #[must_use]
26847 pub const fn variants() -> [ErrorCode; 5] {
26848 Self::VARIANTS
26849 }
26850}
26851
26852impl Name for ErrorCode {
26853 #[must_use]
26854 fn name(&self) -> &'static str {
26855 Self::name(self)
26856 }
26857}
26858
26859impl Variants<ErrorCode> for ErrorCode {
26860 fn variants() -> slice::Iter<'static, ErrorCode> {
26861 Self::VARIANTS.iter()
26862 }
26863}
26864
26865impl Enum for ErrorCode {}
26866
26867impl fmt::Display for ErrorCode {
26868 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26869 f.write_str(self.name())
26870 }
26871}
26872
26873impl TryFrom<i32> for ErrorCode {
26874 type Error = Error;
26875
26876 fn try_from(i: i32) -> Result<Self, Error> {
26877 let e = match i {
26878 0 => ErrorCode::Misc,
26879 1 => ErrorCode::Data,
26880 2 => ErrorCode::Conf,
26881 3 => ErrorCode::Auth,
26882 4 => ErrorCode::Load,
26883 #[allow(unreachable_patterns)]
26884 _ => return Err(Error::Invalid),
26885 };
26886 Ok(e)
26887 }
26888}
26889
26890impl From<ErrorCode> for i32 {
26891 #[must_use]
26892 fn from(e: ErrorCode) -> Self {
26893 e as Self
26894 }
26895}
26896
26897impl ReadXdr for ErrorCode {
26898 #[cfg(feature = "std")]
26899 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26900 r.with_limited_depth(|r| {
26901 let e = i32::read_xdr(r)?;
26902 let v: Self = e.try_into()?;
26903 Ok(v)
26904 })
26905 }
26906}
26907
26908impl WriteXdr for ErrorCode {
26909 #[cfg(feature = "std")]
26910 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26911 w.with_limited_depth(|w| {
26912 let i: i32 = (*self).into();
26913 i.write_xdr(w)
26914 })
26915 }
26916}
26917
26918#[cfg_attr(feature = "alloc", derive(Default))]
26929#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26930#[cfg_eval::cfg_eval]
26931#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26932#[cfg_attr(
26933 all(feature = "serde", feature = "alloc"),
26934 serde_with::serde_as,
26935 derive(serde::Serialize, serde::Deserialize),
26936 serde(rename_all = "snake_case")
26937)]
26938#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26939pub struct SError {
26940 pub code: ErrorCode,
26941 pub msg: StringM<100>,
26942}
26943
26944impl ReadXdr for SError {
26945 #[cfg(feature = "std")]
26946 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26947 r.with_limited_depth(|r| {
26948 Ok(Self {
26949 code: ErrorCode::read_xdr(r)?,
26950 msg: StringM::<100>::read_xdr(r)?,
26951 })
26952 })
26953 }
26954}
26955
26956impl WriteXdr for SError {
26957 #[cfg(feature = "std")]
26958 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
26959 w.with_limited_depth(|w| {
26960 self.code.write_xdr(w)?;
26961 self.msg.write_xdr(w)?;
26962 Ok(())
26963 })
26964 }
26965}
26966
26967#[cfg_attr(feature = "alloc", derive(Default))]
26977#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
26978#[cfg_eval::cfg_eval]
26979#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
26980#[cfg_attr(
26981 all(feature = "serde", feature = "alloc"),
26982 serde_with::serde_as,
26983 derive(serde::Serialize, serde::Deserialize),
26984 serde(rename_all = "snake_case")
26985)]
26986#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
26987pub struct SendMore {
26988 pub num_messages: u32,
26989}
26990
26991impl ReadXdr for SendMore {
26992 #[cfg(feature = "std")]
26993 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
26994 r.with_limited_depth(|r| {
26995 Ok(Self {
26996 num_messages: u32::read_xdr(r)?,
26997 })
26998 })
26999 }
27000}
27001
27002impl WriteXdr for SendMore {
27003 #[cfg(feature = "std")]
27004 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27005 w.with_limited_depth(|w| {
27006 self.num_messages.write_xdr(w)?;
27007 Ok(())
27008 })
27009 }
27010}
27011
27012#[cfg_attr(feature = "alloc", derive(Default))]
27023#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27024#[cfg_eval::cfg_eval]
27025#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27026#[cfg_attr(
27027 all(feature = "serde", feature = "alloc"),
27028 serde_with::serde_as,
27029 derive(serde::Serialize, serde::Deserialize),
27030 serde(rename_all = "snake_case")
27031)]
27032#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27033pub struct SendMoreExtended {
27034 pub num_messages: u32,
27035 pub num_bytes: u32,
27036}
27037
27038impl ReadXdr for SendMoreExtended {
27039 #[cfg(feature = "std")]
27040 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27041 r.with_limited_depth(|r| {
27042 Ok(Self {
27043 num_messages: u32::read_xdr(r)?,
27044 num_bytes: u32::read_xdr(r)?,
27045 })
27046 })
27047 }
27048}
27049
27050impl WriteXdr for SendMoreExtended {
27051 #[cfg(feature = "std")]
27052 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27053 w.with_limited_depth(|w| {
27054 self.num_messages.write_xdr(w)?;
27055 self.num_bytes.write_xdr(w)?;
27056 Ok(())
27057 })
27058 }
27059}
27060
27061#[cfg_attr(feature = "alloc", derive(Default))]
27073#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27074#[cfg_eval::cfg_eval]
27075#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27076#[cfg_attr(
27077 all(feature = "serde", feature = "alloc"),
27078 serde_with::serde_as,
27079 derive(serde::Serialize, serde::Deserialize),
27080 serde(rename_all = "snake_case")
27081)]
27082#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27083pub struct AuthCert {
27084 pub pubkey: Curve25519Public,
27085 #[cfg_attr(
27086 all(feature = "serde", feature = "alloc"),
27087 serde_as(as = "NumberOrString")
27088 )]
27089 pub expiration: u64,
27090 pub sig: Signature,
27091}
27092
27093impl ReadXdr for AuthCert {
27094 #[cfg(feature = "std")]
27095 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27096 r.with_limited_depth(|r| {
27097 Ok(Self {
27098 pubkey: Curve25519Public::read_xdr(r)?,
27099 expiration: u64::read_xdr(r)?,
27100 sig: Signature::read_xdr(r)?,
27101 })
27102 })
27103 }
27104}
27105
27106impl WriteXdr for AuthCert {
27107 #[cfg(feature = "std")]
27108 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27109 w.with_limited_depth(|w| {
27110 self.pubkey.write_xdr(w)?;
27111 self.expiration.write_xdr(w)?;
27112 self.sig.write_xdr(w)?;
27113 Ok(())
27114 })
27115 }
27116}
27117
27118#[cfg_attr(feature = "alloc", derive(Default))]
27136#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27137#[cfg_eval::cfg_eval]
27138#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27139#[cfg_attr(
27140 all(feature = "serde", feature = "alloc"),
27141 serde_with::serde_as,
27142 derive(serde::Serialize, serde::Deserialize),
27143 serde(rename_all = "snake_case")
27144)]
27145#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27146pub struct Hello {
27147 pub ledger_version: u32,
27148 pub overlay_version: u32,
27149 pub overlay_min_version: u32,
27150 pub network_id: Hash,
27151 pub version_str: StringM<100>,
27152 pub listening_port: i32,
27153 pub peer_id: NodeId,
27154 pub cert: AuthCert,
27155 pub nonce: Uint256,
27156}
27157
27158impl ReadXdr for Hello {
27159 #[cfg(feature = "std")]
27160 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27161 r.with_limited_depth(|r| {
27162 Ok(Self {
27163 ledger_version: u32::read_xdr(r)?,
27164 overlay_version: u32::read_xdr(r)?,
27165 overlay_min_version: u32::read_xdr(r)?,
27166 network_id: Hash::read_xdr(r)?,
27167 version_str: StringM::<100>::read_xdr(r)?,
27168 listening_port: i32::read_xdr(r)?,
27169 peer_id: NodeId::read_xdr(r)?,
27170 cert: AuthCert::read_xdr(r)?,
27171 nonce: Uint256::read_xdr(r)?,
27172 })
27173 })
27174 }
27175}
27176
27177impl WriteXdr for Hello {
27178 #[cfg(feature = "std")]
27179 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27180 w.with_limited_depth(|w| {
27181 self.ledger_version.write_xdr(w)?;
27182 self.overlay_version.write_xdr(w)?;
27183 self.overlay_min_version.write_xdr(w)?;
27184 self.network_id.write_xdr(w)?;
27185 self.version_str.write_xdr(w)?;
27186 self.listening_port.write_xdr(w)?;
27187 self.peer_id.write_xdr(w)?;
27188 self.cert.write_xdr(w)?;
27189 self.nonce.write_xdr(w)?;
27190 Ok(())
27191 })
27192 }
27193}
27194
27195pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: u64 = 200;
27202
27203#[cfg_attr(feature = "alloc", derive(Default))]
27213#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27214#[cfg_eval::cfg_eval]
27215#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27216#[cfg_attr(
27217 all(feature = "serde", feature = "alloc"),
27218 serde_with::serde_as,
27219 derive(serde::Serialize, serde::Deserialize),
27220 serde(rename_all = "snake_case")
27221)]
27222#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27223pub struct Auth {
27224 pub flags: i32,
27225}
27226
27227impl ReadXdr for Auth {
27228 #[cfg(feature = "std")]
27229 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27230 r.with_limited_depth(|r| {
27231 Ok(Self {
27232 flags: i32::read_xdr(r)?,
27233 })
27234 })
27235 }
27236}
27237
27238impl WriteXdr for Auth {
27239 #[cfg(feature = "std")]
27240 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27241 w.with_limited_depth(|w| {
27242 self.flags.write_xdr(w)?;
27243 Ok(())
27244 })
27245 }
27246}
27247
27248#[cfg_attr(feature = "alloc", derive(Default))]
27260#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27261#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27262#[cfg_attr(
27263 all(feature = "serde", feature = "alloc"),
27264 derive(serde::Serialize, serde::Deserialize),
27265 serde(rename_all = "snake_case")
27266)]
27267#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27268#[repr(i32)]
27269pub enum IpAddrType {
27270 #[cfg_attr(feature = "alloc", default)]
27271 IPv4 = 0,
27272 IPv6 = 1,
27273}
27274
27275impl IpAddrType {
27276 pub const VARIANTS: [IpAddrType; 2] = [IpAddrType::IPv4, IpAddrType::IPv6];
27277 pub const VARIANTS_STR: [&'static str; 2] = ["IPv4", "IPv6"];
27278
27279 #[must_use]
27280 pub const fn name(&self) -> &'static str {
27281 match self {
27282 Self::IPv4 => "IPv4",
27283 Self::IPv6 => "IPv6",
27284 }
27285 }
27286
27287 #[must_use]
27288 pub const fn variants() -> [IpAddrType; 2] {
27289 Self::VARIANTS
27290 }
27291}
27292
27293impl Name for IpAddrType {
27294 #[must_use]
27295 fn name(&self) -> &'static str {
27296 Self::name(self)
27297 }
27298}
27299
27300impl Variants<IpAddrType> for IpAddrType {
27301 fn variants() -> slice::Iter<'static, IpAddrType> {
27302 Self::VARIANTS.iter()
27303 }
27304}
27305
27306impl Enum for IpAddrType {}
27307
27308impl fmt::Display for IpAddrType {
27309 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27310 f.write_str(self.name())
27311 }
27312}
27313
27314impl TryFrom<i32> for IpAddrType {
27315 type Error = Error;
27316
27317 fn try_from(i: i32) -> Result<Self, Error> {
27318 let e = match i {
27319 0 => IpAddrType::IPv4,
27320 1 => IpAddrType::IPv6,
27321 #[allow(unreachable_patterns)]
27322 _ => return Err(Error::Invalid),
27323 };
27324 Ok(e)
27325 }
27326}
27327
27328impl From<IpAddrType> for i32 {
27329 #[must_use]
27330 fn from(e: IpAddrType) -> Self {
27331 e as Self
27332 }
27333}
27334
27335impl ReadXdr for IpAddrType {
27336 #[cfg(feature = "std")]
27337 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27338 r.with_limited_depth(|r| {
27339 let e = i32::read_xdr(r)?;
27340 let v: Self = e.try_into()?;
27341 Ok(v)
27342 })
27343 }
27344}
27345
27346impl WriteXdr for IpAddrType {
27347 #[cfg(feature = "std")]
27348 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27349 w.with_limited_depth(|w| {
27350 let i: i32 = (*self).into();
27351 i.write_xdr(w)
27352 })
27353 }
27354}
27355
27356#[cfg_eval::cfg_eval]
27370#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27371#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27372#[cfg_attr(
27373 all(feature = "serde", feature = "alloc"),
27374 serde_with::serde_as,
27375 derive(serde::Serialize, serde::Deserialize),
27376 serde(rename_all = "snake_case")
27377)]
27378#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27379#[allow(clippy::large_enum_variant)]
27380pub enum PeerAddressIp {
27381 IPv4([u8; 4]),
27382 IPv6([u8; 16]),
27383}
27384
27385#[cfg(feature = "alloc")]
27386impl Default for PeerAddressIp {
27387 fn default() -> Self {
27388 Self::IPv4(<[u8; 4]>::default())
27389 }
27390}
27391
27392impl PeerAddressIp {
27393 pub const VARIANTS: [IpAddrType; 2] = [IpAddrType::IPv4, IpAddrType::IPv6];
27394 pub const VARIANTS_STR: [&'static str; 2] = ["IPv4", "IPv6"];
27395
27396 #[must_use]
27397 pub const fn name(&self) -> &'static str {
27398 match self {
27399 Self::IPv4(_) => "IPv4",
27400 Self::IPv6(_) => "IPv6",
27401 }
27402 }
27403
27404 #[must_use]
27405 pub const fn discriminant(&self) -> IpAddrType {
27406 #[allow(clippy::match_same_arms)]
27407 match self {
27408 Self::IPv4(_) => IpAddrType::IPv4,
27409 Self::IPv6(_) => IpAddrType::IPv6,
27410 }
27411 }
27412
27413 #[must_use]
27414 pub const fn variants() -> [IpAddrType; 2] {
27415 Self::VARIANTS
27416 }
27417}
27418
27419impl Name for PeerAddressIp {
27420 #[must_use]
27421 fn name(&self) -> &'static str {
27422 Self::name(self)
27423 }
27424}
27425
27426impl Discriminant<IpAddrType> for PeerAddressIp {
27427 #[must_use]
27428 fn discriminant(&self) -> IpAddrType {
27429 Self::discriminant(self)
27430 }
27431}
27432
27433impl Variants<IpAddrType> for PeerAddressIp {
27434 fn variants() -> slice::Iter<'static, IpAddrType> {
27435 Self::VARIANTS.iter()
27436 }
27437}
27438
27439impl Union<IpAddrType> for PeerAddressIp {}
27440
27441impl ReadXdr for PeerAddressIp {
27442 #[cfg(feature = "std")]
27443 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27444 r.with_limited_depth(|r| {
27445 let dv: IpAddrType = <IpAddrType as ReadXdr>::read_xdr(r)?;
27446 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
27447 let v = match dv {
27448 IpAddrType::IPv4 => Self::IPv4(<[u8; 4]>::read_xdr(r)?),
27449 IpAddrType::IPv6 => Self::IPv6(<[u8; 16]>::read_xdr(r)?),
27450 #[allow(unreachable_patterns)]
27451 _ => return Err(Error::Invalid),
27452 };
27453 Ok(v)
27454 })
27455 }
27456}
27457
27458impl WriteXdr for PeerAddressIp {
27459 #[cfg(feature = "std")]
27460 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27461 w.with_limited_depth(|w| {
27462 self.discriminant().write_xdr(w)?;
27463 #[allow(clippy::match_same_arms)]
27464 match self {
27465 Self::IPv4(v) => v.write_xdr(w)?,
27466 Self::IPv6(v) => v.write_xdr(w)?,
27467 };
27468 Ok(())
27469 })
27470 }
27471}
27472
27473#[cfg_attr(feature = "alloc", derive(Default))]
27492#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27493#[cfg_eval::cfg_eval]
27494#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27495#[cfg_attr(
27496 all(feature = "serde", feature = "alloc"),
27497 serde_with::serde_as,
27498 derive(serde::Serialize, serde::Deserialize),
27499 serde(rename_all = "snake_case")
27500)]
27501#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27502pub struct PeerAddress {
27503 pub ip: PeerAddressIp,
27504 pub port: u32,
27505 pub num_failures: u32,
27506}
27507
27508impl ReadXdr for PeerAddress {
27509 #[cfg(feature = "std")]
27510 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27511 r.with_limited_depth(|r| {
27512 Ok(Self {
27513 ip: PeerAddressIp::read_xdr(r)?,
27514 port: u32::read_xdr(r)?,
27515 num_failures: u32::read_xdr(r)?,
27516 })
27517 })
27518 }
27519}
27520
27521impl WriteXdr for PeerAddress {
27522 #[cfg(feature = "std")]
27523 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27524 w.with_limited_depth(|w| {
27525 self.ip.write_xdr(w)?;
27526 self.port.write_xdr(w)?;
27527 self.num_failures.write_xdr(w)?;
27528 Ok(())
27529 })
27530 }
27531}
27532
27533#[cfg_attr(feature = "alloc", derive(Default))]
27578#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27579#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27580#[cfg_attr(
27581 all(feature = "serde", feature = "alloc"),
27582 derive(serde::Serialize, serde::Deserialize),
27583 serde(rename_all = "snake_case")
27584)]
27585#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27586#[repr(i32)]
27587pub enum MessageType {
27588 #[cfg_attr(feature = "alloc", default)]
27589 ErrorMsg = 0,
27590 Auth = 2,
27591 DontHave = 3,
27592 Peers = 5,
27593 GetTxSet = 6,
27594 TxSet = 7,
27595 GeneralizedTxSet = 17,
27596 Transaction = 8,
27597 GetScpQuorumset = 9,
27598 ScpQuorumset = 10,
27599 ScpMessage = 11,
27600 GetScpState = 12,
27601 Hello = 13,
27602 SendMore = 16,
27603 SendMoreExtended = 20,
27604 FloodAdvert = 18,
27605 FloodDemand = 19,
27606 TimeSlicedSurveyRequest = 21,
27607 TimeSlicedSurveyResponse = 22,
27608 TimeSlicedSurveyStartCollecting = 23,
27609 TimeSlicedSurveyStopCollecting = 24,
27610}
27611
27612impl MessageType {
27613 pub const VARIANTS: [MessageType; 21] = [
27614 MessageType::ErrorMsg,
27615 MessageType::Auth,
27616 MessageType::DontHave,
27617 MessageType::Peers,
27618 MessageType::GetTxSet,
27619 MessageType::TxSet,
27620 MessageType::GeneralizedTxSet,
27621 MessageType::Transaction,
27622 MessageType::GetScpQuorumset,
27623 MessageType::ScpQuorumset,
27624 MessageType::ScpMessage,
27625 MessageType::GetScpState,
27626 MessageType::Hello,
27627 MessageType::SendMore,
27628 MessageType::SendMoreExtended,
27629 MessageType::FloodAdvert,
27630 MessageType::FloodDemand,
27631 MessageType::TimeSlicedSurveyRequest,
27632 MessageType::TimeSlicedSurveyResponse,
27633 MessageType::TimeSlicedSurveyStartCollecting,
27634 MessageType::TimeSlicedSurveyStopCollecting,
27635 ];
27636 pub const VARIANTS_STR: [&'static str; 21] = [
27637 "ErrorMsg",
27638 "Auth",
27639 "DontHave",
27640 "Peers",
27641 "GetTxSet",
27642 "TxSet",
27643 "GeneralizedTxSet",
27644 "Transaction",
27645 "GetScpQuorumset",
27646 "ScpQuorumset",
27647 "ScpMessage",
27648 "GetScpState",
27649 "Hello",
27650 "SendMore",
27651 "SendMoreExtended",
27652 "FloodAdvert",
27653 "FloodDemand",
27654 "TimeSlicedSurveyRequest",
27655 "TimeSlicedSurveyResponse",
27656 "TimeSlicedSurveyStartCollecting",
27657 "TimeSlicedSurveyStopCollecting",
27658 ];
27659
27660 #[must_use]
27661 pub const fn name(&self) -> &'static str {
27662 match self {
27663 Self::ErrorMsg => "ErrorMsg",
27664 Self::Auth => "Auth",
27665 Self::DontHave => "DontHave",
27666 Self::Peers => "Peers",
27667 Self::GetTxSet => "GetTxSet",
27668 Self::TxSet => "TxSet",
27669 Self::GeneralizedTxSet => "GeneralizedTxSet",
27670 Self::Transaction => "Transaction",
27671 Self::GetScpQuorumset => "GetScpQuorumset",
27672 Self::ScpQuorumset => "ScpQuorumset",
27673 Self::ScpMessage => "ScpMessage",
27674 Self::GetScpState => "GetScpState",
27675 Self::Hello => "Hello",
27676 Self::SendMore => "SendMore",
27677 Self::SendMoreExtended => "SendMoreExtended",
27678 Self::FloodAdvert => "FloodAdvert",
27679 Self::FloodDemand => "FloodDemand",
27680 Self::TimeSlicedSurveyRequest => "TimeSlicedSurveyRequest",
27681 Self::TimeSlicedSurveyResponse => "TimeSlicedSurveyResponse",
27682 Self::TimeSlicedSurveyStartCollecting => "TimeSlicedSurveyStartCollecting",
27683 Self::TimeSlicedSurveyStopCollecting => "TimeSlicedSurveyStopCollecting",
27684 }
27685 }
27686
27687 #[must_use]
27688 pub const fn variants() -> [MessageType; 21] {
27689 Self::VARIANTS
27690 }
27691}
27692
27693impl Name for MessageType {
27694 #[must_use]
27695 fn name(&self) -> &'static str {
27696 Self::name(self)
27697 }
27698}
27699
27700impl Variants<MessageType> for MessageType {
27701 fn variants() -> slice::Iter<'static, MessageType> {
27702 Self::VARIANTS.iter()
27703 }
27704}
27705
27706impl Enum for MessageType {}
27707
27708impl fmt::Display for MessageType {
27709 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27710 f.write_str(self.name())
27711 }
27712}
27713
27714impl TryFrom<i32> for MessageType {
27715 type Error = Error;
27716
27717 fn try_from(i: i32) -> Result<Self, Error> {
27718 let e = match i {
27719 0 => MessageType::ErrorMsg,
27720 2 => MessageType::Auth,
27721 3 => MessageType::DontHave,
27722 5 => MessageType::Peers,
27723 6 => MessageType::GetTxSet,
27724 7 => MessageType::TxSet,
27725 17 => MessageType::GeneralizedTxSet,
27726 8 => MessageType::Transaction,
27727 9 => MessageType::GetScpQuorumset,
27728 10 => MessageType::ScpQuorumset,
27729 11 => MessageType::ScpMessage,
27730 12 => MessageType::GetScpState,
27731 13 => MessageType::Hello,
27732 16 => MessageType::SendMore,
27733 20 => MessageType::SendMoreExtended,
27734 18 => MessageType::FloodAdvert,
27735 19 => MessageType::FloodDemand,
27736 21 => MessageType::TimeSlicedSurveyRequest,
27737 22 => MessageType::TimeSlicedSurveyResponse,
27738 23 => MessageType::TimeSlicedSurveyStartCollecting,
27739 24 => MessageType::TimeSlicedSurveyStopCollecting,
27740 #[allow(unreachable_patterns)]
27741 _ => return Err(Error::Invalid),
27742 };
27743 Ok(e)
27744 }
27745}
27746
27747impl From<MessageType> for i32 {
27748 #[must_use]
27749 fn from(e: MessageType) -> Self {
27750 e as Self
27751 }
27752}
27753
27754impl ReadXdr for MessageType {
27755 #[cfg(feature = "std")]
27756 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27757 r.with_limited_depth(|r| {
27758 let e = i32::read_xdr(r)?;
27759 let v: Self = e.try_into()?;
27760 Ok(v)
27761 })
27762 }
27763}
27764
27765impl WriteXdr for MessageType {
27766 #[cfg(feature = "std")]
27767 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27768 w.with_limited_depth(|w| {
27769 let i: i32 = (*self).into();
27770 i.write_xdr(w)
27771 })
27772 }
27773}
27774
27775#[cfg_attr(feature = "alloc", derive(Default))]
27786#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27787#[cfg_eval::cfg_eval]
27788#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27789#[cfg_attr(
27790 all(feature = "serde", feature = "alloc"),
27791 serde_with::serde_as,
27792 derive(serde::Serialize, serde::Deserialize),
27793 serde(rename_all = "snake_case")
27794)]
27795#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27796pub struct DontHave {
27797 pub type_: MessageType,
27798 pub req_hash: Uint256,
27799}
27800
27801impl ReadXdr for DontHave {
27802 #[cfg(feature = "std")]
27803 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27804 r.with_limited_depth(|r| {
27805 Ok(Self {
27806 type_: MessageType::read_xdr(r)?,
27807 req_hash: Uint256::read_xdr(r)?,
27808 })
27809 })
27810 }
27811}
27812
27813impl WriteXdr for DontHave {
27814 #[cfg(feature = "std")]
27815 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27816 w.with_limited_depth(|w| {
27817 self.type_.write_xdr(w)?;
27818 self.req_hash.write_xdr(w)?;
27819 Ok(())
27820 })
27821 }
27822}
27823
27824#[cfg_attr(feature = "alloc", derive(Default))]
27835#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27836#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27837#[cfg_attr(
27838 all(feature = "serde", feature = "alloc"),
27839 derive(serde::Serialize, serde::Deserialize),
27840 serde(rename_all = "snake_case")
27841)]
27842#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27843#[repr(i32)]
27844pub enum SurveyMessageCommandType {
27845 #[cfg_attr(feature = "alloc", default)]
27846 TimeSlicedSurveyTopology = 1,
27847}
27848
27849impl SurveyMessageCommandType {
27850 pub const VARIANTS: [SurveyMessageCommandType; 1] =
27851 [SurveyMessageCommandType::TimeSlicedSurveyTopology];
27852 pub const VARIANTS_STR: [&'static str; 1] = ["TimeSlicedSurveyTopology"];
27853
27854 #[must_use]
27855 pub const fn name(&self) -> &'static str {
27856 match self {
27857 Self::TimeSlicedSurveyTopology => "TimeSlicedSurveyTopology",
27858 }
27859 }
27860
27861 #[must_use]
27862 pub const fn variants() -> [SurveyMessageCommandType; 1] {
27863 Self::VARIANTS
27864 }
27865}
27866
27867impl Name for SurveyMessageCommandType {
27868 #[must_use]
27869 fn name(&self) -> &'static str {
27870 Self::name(self)
27871 }
27872}
27873
27874impl Variants<SurveyMessageCommandType> for SurveyMessageCommandType {
27875 fn variants() -> slice::Iter<'static, SurveyMessageCommandType> {
27876 Self::VARIANTS.iter()
27877 }
27878}
27879
27880impl Enum for SurveyMessageCommandType {}
27881
27882impl fmt::Display for SurveyMessageCommandType {
27883 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27884 f.write_str(self.name())
27885 }
27886}
27887
27888impl TryFrom<i32> for SurveyMessageCommandType {
27889 type Error = Error;
27890
27891 fn try_from(i: i32) -> Result<Self, Error> {
27892 let e = match i {
27893 1 => SurveyMessageCommandType::TimeSlicedSurveyTopology,
27894 #[allow(unreachable_patterns)]
27895 _ => return Err(Error::Invalid),
27896 };
27897 Ok(e)
27898 }
27899}
27900
27901impl From<SurveyMessageCommandType> for i32 {
27902 #[must_use]
27903 fn from(e: SurveyMessageCommandType) -> Self {
27904 e as Self
27905 }
27906}
27907
27908impl ReadXdr for SurveyMessageCommandType {
27909 #[cfg(feature = "std")]
27910 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
27911 r.with_limited_depth(|r| {
27912 let e = i32::read_xdr(r)?;
27913 let v: Self = e.try_into()?;
27914 Ok(v)
27915 })
27916 }
27917}
27918
27919impl WriteXdr for SurveyMessageCommandType {
27920 #[cfg(feature = "std")]
27921 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
27922 w.with_limited_depth(|w| {
27923 let i: i32 = (*self).into();
27924 i.write_xdr(w)
27925 })
27926 }
27927}
27928
27929#[cfg_attr(feature = "alloc", derive(Default))]
27940#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
27941#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
27942#[cfg_attr(
27943 all(feature = "serde", feature = "alloc"),
27944 derive(serde::Serialize, serde::Deserialize),
27945 serde(rename_all = "snake_case")
27946)]
27947#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
27948#[repr(i32)]
27949pub enum SurveyMessageResponseType {
27950 #[cfg_attr(feature = "alloc", default)]
27951 SurveyTopologyResponseV2 = 2,
27952}
27953
27954impl SurveyMessageResponseType {
27955 pub const VARIANTS: [SurveyMessageResponseType; 1] =
27956 [SurveyMessageResponseType::SurveyTopologyResponseV2];
27957 pub const VARIANTS_STR: [&'static str; 1] = ["SurveyTopologyResponseV2"];
27958
27959 #[must_use]
27960 pub const fn name(&self) -> &'static str {
27961 match self {
27962 Self::SurveyTopologyResponseV2 => "SurveyTopologyResponseV2",
27963 }
27964 }
27965
27966 #[must_use]
27967 pub const fn variants() -> [SurveyMessageResponseType; 1] {
27968 Self::VARIANTS
27969 }
27970}
27971
27972impl Name for SurveyMessageResponseType {
27973 #[must_use]
27974 fn name(&self) -> &'static str {
27975 Self::name(self)
27976 }
27977}
27978
27979impl Variants<SurveyMessageResponseType> for SurveyMessageResponseType {
27980 fn variants() -> slice::Iter<'static, SurveyMessageResponseType> {
27981 Self::VARIANTS.iter()
27982 }
27983}
27984
27985impl Enum for SurveyMessageResponseType {}
27986
27987impl fmt::Display for SurveyMessageResponseType {
27988 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
27989 f.write_str(self.name())
27990 }
27991}
27992
27993impl TryFrom<i32> for SurveyMessageResponseType {
27994 type Error = Error;
27995
27996 fn try_from(i: i32) -> Result<Self, Error> {
27997 let e = match i {
27998 2 => SurveyMessageResponseType::SurveyTopologyResponseV2,
27999 #[allow(unreachable_patterns)]
28000 _ => return Err(Error::Invalid),
28001 };
28002 Ok(e)
28003 }
28004}
28005
28006impl From<SurveyMessageResponseType> for i32 {
28007 #[must_use]
28008 fn from(e: SurveyMessageResponseType) -> Self {
28009 e as Self
28010 }
28011}
28012
28013impl ReadXdr for SurveyMessageResponseType {
28014 #[cfg(feature = "std")]
28015 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28016 r.with_limited_depth(|r| {
28017 let e = i32::read_xdr(r)?;
28018 let v: Self = e.try_into()?;
28019 Ok(v)
28020 })
28021 }
28022}
28023
28024impl WriteXdr for SurveyMessageResponseType {
28025 #[cfg(feature = "std")]
28026 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28027 w.with_limited_depth(|w| {
28028 let i: i32 = (*self).into();
28029 i.write_xdr(w)
28030 })
28031 }
28032}
28033
28034#[cfg_attr(feature = "alloc", derive(Default))]
28046#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28047#[cfg_eval::cfg_eval]
28048#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28049#[cfg_attr(
28050 all(feature = "serde", feature = "alloc"),
28051 serde_with::serde_as,
28052 derive(serde::Serialize, serde::Deserialize),
28053 serde(rename_all = "snake_case")
28054)]
28055#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28056pub struct TimeSlicedSurveyStartCollectingMessage {
28057 pub surveyor_id: NodeId,
28058 pub nonce: u32,
28059 pub ledger_num: u32,
28060}
28061
28062impl ReadXdr for TimeSlicedSurveyStartCollectingMessage {
28063 #[cfg(feature = "std")]
28064 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28065 r.with_limited_depth(|r| {
28066 Ok(Self {
28067 surveyor_id: NodeId::read_xdr(r)?,
28068 nonce: u32::read_xdr(r)?,
28069 ledger_num: u32::read_xdr(r)?,
28070 })
28071 })
28072 }
28073}
28074
28075impl WriteXdr for TimeSlicedSurveyStartCollectingMessage {
28076 #[cfg(feature = "std")]
28077 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28078 w.with_limited_depth(|w| {
28079 self.surveyor_id.write_xdr(w)?;
28080 self.nonce.write_xdr(w)?;
28081 self.ledger_num.write_xdr(w)?;
28082 Ok(())
28083 })
28084 }
28085}
28086
28087#[cfg_attr(feature = "alloc", derive(Default))]
28098#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28099#[cfg_eval::cfg_eval]
28100#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28101#[cfg_attr(
28102 all(feature = "serde", feature = "alloc"),
28103 serde_with::serde_as,
28104 derive(serde::Serialize, serde::Deserialize),
28105 serde(rename_all = "snake_case")
28106)]
28107#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28108pub struct SignedTimeSlicedSurveyStartCollectingMessage {
28109 pub signature: Signature,
28110 pub start_collecting: TimeSlicedSurveyStartCollectingMessage,
28111}
28112
28113impl ReadXdr for SignedTimeSlicedSurveyStartCollectingMessage {
28114 #[cfg(feature = "std")]
28115 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28116 r.with_limited_depth(|r| {
28117 Ok(Self {
28118 signature: Signature::read_xdr(r)?,
28119 start_collecting: TimeSlicedSurveyStartCollectingMessage::read_xdr(r)?,
28120 })
28121 })
28122 }
28123}
28124
28125impl WriteXdr for SignedTimeSlicedSurveyStartCollectingMessage {
28126 #[cfg(feature = "std")]
28127 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28128 w.with_limited_depth(|w| {
28129 self.signature.write_xdr(w)?;
28130 self.start_collecting.write_xdr(w)?;
28131 Ok(())
28132 })
28133 }
28134}
28135
28136#[cfg_attr(feature = "alloc", derive(Default))]
28148#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28149#[cfg_eval::cfg_eval]
28150#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28151#[cfg_attr(
28152 all(feature = "serde", feature = "alloc"),
28153 serde_with::serde_as,
28154 derive(serde::Serialize, serde::Deserialize),
28155 serde(rename_all = "snake_case")
28156)]
28157#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28158pub struct TimeSlicedSurveyStopCollectingMessage {
28159 pub surveyor_id: NodeId,
28160 pub nonce: u32,
28161 pub ledger_num: u32,
28162}
28163
28164impl ReadXdr for TimeSlicedSurveyStopCollectingMessage {
28165 #[cfg(feature = "std")]
28166 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28167 r.with_limited_depth(|r| {
28168 Ok(Self {
28169 surveyor_id: NodeId::read_xdr(r)?,
28170 nonce: u32::read_xdr(r)?,
28171 ledger_num: u32::read_xdr(r)?,
28172 })
28173 })
28174 }
28175}
28176
28177impl WriteXdr for TimeSlicedSurveyStopCollectingMessage {
28178 #[cfg(feature = "std")]
28179 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28180 w.with_limited_depth(|w| {
28181 self.surveyor_id.write_xdr(w)?;
28182 self.nonce.write_xdr(w)?;
28183 self.ledger_num.write_xdr(w)?;
28184 Ok(())
28185 })
28186 }
28187}
28188
28189#[cfg_attr(feature = "alloc", derive(Default))]
28200#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28201#[cfg_eval::cfg_eval]
28202#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28203#[cfg_attr(
28204 all(feature = "serde", feature = "alloc"),
28205 serde_with::serde_as,
28206 derive(serde::Serialize, serde::Deserialize),
28207 serde(rename_all = "snake_case")
28208)]
28209#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28210pub struct SignedTimeSlicedSurveyStopCollectingMessage {
28211 pub signature: Signature,
28212 pub stop_collecting: TimeSlicedSurveyStopCollectingMessage,
28213}
28214
28215impl ReadXdr for SignedTimeSlicedSurveyStopCollectingMessage {
28216 #[cfg(feature = "std")]
28217 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28218 r.with_limited_depth(|r| {
28219 Ok(Self {
28220 signature: Signature::read_xdr(r)?,
28221 stop_collecting: TimeSlicedSurveyStopCollectingMessage::read_xdr(r)?,
28222 })
28223 })
28224 }
28225}
28226
28227impl WriteXdr for SignedTimeSlicedSurveyStopCollectingMessage {
28228 #[cfg(feature = "std")]
28229 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28230 w.with_limited_depth(|w| {
28231 self.signature.write_xdr(w)?;
28232 self.stop_collecting.write_xdr(w)?;
28233 Ok(())
28234 })
28235 }
28236}
28237
28238#[cfg_attr(feature = "alloc", derive(Default))]
28252#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28253#[cfg_eval::cfg_eval]
28254#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28255#[cfg_attr(
28256 all(feature = "serde", feature = "alloc"),
28257 serde_with::serde_as,
28258 derive(serde::Serialize, serde::Deserialize),
28259 serde(rename_all = "snake_case")
28260)]
28261#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28262pub struct SurveyRequestMessage {
28263 pub surveyor_peer_id: NodeId,
28264 pub surveyed_peer_id: NodeId,
28265 pub ledger_num: u32,
28266 pub encryption_key: Curve25519Public,
28267 pub command_type: SurveyMessageCommandType,
28268}
28269
28270impl ReadXdr for SurveyRequestMessage {
28271 #[cfg(feature = "std")]
28272 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28273 r.with_limited_depth(|r| {
28274 Ok(Self {
28275 surveyor_peer_id: NodeId::read_xdr(r)?,
28276 surveyed_peer_id: NodeId::read_xdr(r)?,
28277 ledger_num: u32::read_xdr(r)?,
28278 encryption_key: Curve25519Public::read_xdr(r)?,
28279 command_type: SurveyMessageCommandType::read_xdr(r)?,
28280 })
28281 })
28282 }
28283}
28284
28285impl WriteXdr for SurveyRequestMessage {
28286 #[cfg(feature = "std")]
28287 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28288 w.with_limited_depth(|w| {
28289 self.surveyor_peer_id.write_xdr(w)?;
28290 self.surveyed_peer_id.write_xdr(w)?;
28291 self.ledger_num.write_xdr(w)?;
28292 self.encryption_key.write_xdr(w)?;
28293 self.command_type.write_xdr(w)?;
28294 Ok(())
28295 })
28296 }
28297}
28298
28299#[cfg_attr(feature = "alloc", derive(Default))]
28312#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28313#[cfg_eval::cfg_eval]
28314#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28315#[cfg_attr(
28316 all(feature = "serde", feature = "alloc"),
28317 serde_with::serde_as,
28318 derive(serde::Serialize, serde::Deserialize),
28319 serde(rename_all = "snake_case")
28320)]
28321#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28322pub struct TimeSlicedSurveyRequestMessage {
28323 pub request: SurveyRequestMessage,
28324 pub nonce: u32,
28325 pub inbound_peers_index: u32,
28326 pub outbound_peers_index: u32,
28327}
28328
28329impl ReadXdr for TimeSlicedSurveyRequestMessage {
28330 #[cfg(feature = "std")]
28331 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28332 r.with_limited_depth(|r| {
28333 Ok(Self {
28334 request: SurveyRequestMessage::read_xdr(r)?,
28335 nonce: u32::read_xdr(r)?,
28336 inbound_peers_index: u32::read_xdr(r)?,
28337 outbound_peers_index: u32::read_xdr(r)?,
28338 })
28339 })
28340 }
28341}
28342
28343impl WriteXdr for TimeSlicedSurveyRequestMessage {
28344 #[cfg(feature = "std")]
28345 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28346 w.with_limited_depth(|w| {
28347 self.request.write_xdr(w)?;
28348 self.nonce.write_xdr(w)?;
28349 self.inbound_peers_index.write_xdr(w)?;
28350 self.outbound_peers_index.write_xdr(w)?;
28351 Ok(())
28352 })
28353 }
28354}
28355
28356#[cfg_attr(feature = "alloc", derive(Default))]
28367#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28368#[cfg_eval::cfg_eval]
28369#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28370#[cfg_attr(
28371 all(feature = "serde", feature = "alloc"),
28372 serde_with::serde_as,
28373 derive(serde::Serialize, serde::Deserialize),
28374 serde(rename_all = "snake_case")
28375)]
28376#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28377pub struct SignedTimeSlicedSurveyRequestMessage {
28378 pub request_signature: Signature,
28379 pub request: TimeSlicedSurveyRequestMessage,
28380}
28381
28382impl ReadXdr for SignedTimeSlicedSurveyRequestMessage {
28383 #[cfg(feature = "std")]
28384 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28385 r.with_limited_depth(|r| {
28386 Ok(Self {
28387 request_signature: Signature::read_xdr(r)?,
28388 request: TimeSlicedSurveyRequestMessage::read_xdr(r)?,
28389 })
28390 })
28391 }
28392}
28393
28394impl WriteXdr for SignedTimeSlicedSurveyRequestMessage {
28395 #[cfg(feature = "std")]
28396 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28397 w.with_limited_depth(|w| {
28398 self.request_signature.write_xdr(w)?;
28399 self.request.write_xdr(w)?;
28400 Ok(())
28401 })
28402 }
28403}
28404
28405#[cfg_eval::cfg_eval]
28412#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
28413#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28414#[cfg_attr(
28415 all(feature = "serde", feature = "alloc"),
28416 serde_with::serde_as,
28417 derive(serde::Serialize, serde::Deserialize),
28418 serde(rename_all = "snake_case")
28419)]
28420#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28421#[derive(Debug)]
28422pub struct EncryptedBody(pub BytesM<64000>);
28423
28424impl From<EncryptedBody> for BytesM<64000> {
28425 #[must_use]
28426 fn from(x: EncryptedBody) -> Self {
28427 x.0
28428 }
28429}
28430
28431impl From<BytesM<64000>> for EncryptedBody {
28432 #[must_use]
28433 fn from(x: BytesM<64000>) -> Self {
28434 EncryptedBody(x)
28435 }
28436}
28437
28438impl AsRef<BytesM<64000>> for EncryptedBody {
28439 #[must_use]
28440 fn as_ref(&self) -> &BytesM<64000> {
28441 &self.0
28442 }
28443}
28444
28445impl ReadXdr for EncryptedBody {
28446 #[cfg(feature = "std")]
28447 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28448 r.with_limited_depth(|r| {
28449 let i = BytesM::<64000>::read_xdr(r)?;
28450 let v = EncryptedBody(i);
28451 Ok(v)
28452 })
28453 }
28454}
28455
28456impl WriteXdr for EncryptedBody {
28457 #[cfg(feature = "std")]
28458 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28459 w.with_limited_depth(|w| self.0.write_xdr(w))
28460 }
28461}
28462
28463impl Deref for EncryptedBody {
28464 type Target = BytesM<64000>;
28465 fn deref(&self) -> &Self::Target {
28466 &self.0
28467 }
28468}
28469
28470impl From<EncryptedBody> for Vec<u8> {
28471 #[must_use]
28472 fn from(x: EncryptedBody) -> Self {
28473 x.0 .0
28474 }
28475}
28476
28477impl TryFrom<Vec<u8>> for EncryptedBody {
28478 type Error = Error;
28479 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
28480 Ok(EncryptedBody(x.try_into()?))
28481 }
28482}
28483
28484#[cfg(feature = "alloc")]
28485impl TryFrom<&Vec<u8>> for EncryptedBody {
28486 type Error = Error;
28487 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
28488 Ok(EncryptedBody(x.try_into()?))
28489 }
28490}
28491
28492impl AsRef<Vec<u8>> for EncryptedBody {
28493 #[must_use]
28494 fn as_ref(&self) -> &Vec<u8> {
28495 &self.0 .0
28496 }
28497}
28498
28499impl AsRef<[u8]> for EncryptedBody {
28500 #[cfg(feature = "alloc")]
28501 #[must_use]
28502 fn as_ref(&self) -> &[u8] {
28503 &self.0 .0
28504 }
28505 #[cfg(not(feature = "alloc"))]
28506 #[must_use]
28507 fn as_ref(&self) -> &[u8] {
28508 self.0 .0
28509 }
28510}
28511
28512#[cfg_attr(feature = "alloc", derive(Default))]
28526#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28527#[cfg_eval::cfg_eval]
28528#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28529#[cfg_attr(
28530 all(feature = "serde", feature = "alloc"),
28531 serde_with::serde_as,
28532 derive(serde::Serialize, serde::Deserialize),
28533 serde(rename_all = "snake_case")
28534)]
28535#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28536pub struct SurveyResponseMessage {
28537 pub surveyor_peer_id: NodeId,
28538 pub surveyed_peer_id: NodeId,
28539 pub ledger_num: u32,
28540 pub command_type: SurveyMessageCommandType,
28541 pub encrypted_body: EncryptedBody,
28542}
28543
28544impl ReadXdr for SurveyResponseMessage {
28545 #[cfg(feature = "std")]
28546 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28547 r.with_limited_depth(|r| {
28548 Ok(Self {
28549 surveyor_peer_id: NodeId::read_xdr(r)?,
28550 surveyed_peer_id: NodeId::read_xdr(r)?,
28551 ledger_num: u32::read_xdr(r)?,
28552 command_type: SurveyMessageCommandType::read_xdr(r)?,
28553 encrypted_body: EncryptedBody::read_xdr(r)?,
28554 })
28555 })
28556 }
28557}
28558
28559impl WriteXdr for SurveyResponseMessage {
28560 #[cfg(feature = "std")]
28561 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28562 w.with_limited_depth(|w| {
28563 self.surveyor_peer_id.write_xdr(w)?;
28564 self.surveyed_peer_id.write_xdr(w)?;
28565 self.ledger_num.write_xdr(w)?;
28566 self.command_type.write_xdr(w)?;
28567 self.encrypted_body.write_xdr(w)?;
28568 Ok(())
28569 })
28570 }
28571}
28572
28573#[cfg_attr(feature = "alloc", derive(Default))]
28584#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28585#[cfg_eval::cfg_eval]
28586#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28587#[cfg_attr(
28588 all(feature = "serde", feature = "alloc"),
28589 serde_with::serde_as,
28590 derive(serde::Serialize, serde::Deserialize),
28591 serde(rename_all = "snake_case")
28592)]
28593#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28594pub struct TimeSlicedSurveyResponseMessage {
28595 pub response: SurveyResponseMessage,
28596 pub nonce: u32,
28597}
28598
28599impl ReadXdr for TimeSlicedSurveyResponseMessage {
28600 #[cfg(feature = "std")]
28601 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28602 r.with_limited_depth(|r| {
28603 Ok(Self {
28604 response: SurveyResponseMessage::read_xdr(r)?,
28605 nonce: u32::read_xdr(r)?,
28606 })
28607 })
28608 }
28609}
28610
28611impl WriteXdr for TimeSlicedSurveyResponseMessage {
28612 #[cfg(feature = "std")]
28613 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28614 w.with_limited_depth(|w| {
28615 self.response.write_xdr(w)?;
28616 self.nonce.write_xdr(w)?;
28617 Ok(())
28618 })
28619 }
28620}
28621
28622#[cfg_attr(feature = "alloc", derive(Default))]
28633#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28634#[cfg_eval::cfg_eval]
28635#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28636#[cfg_attr(
28637 all(feature = "serde", feature = "alloc"),
28638 serde_with::serde_as,
28639 derive(serde::Serialize, serde::Deserialize),
28640 serde(rename_all = "snake_case")
28641)]
28642#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28643pub struct SignedTimeSlicedSurveyResponseMessage {
28644 pub response_signature: Signature,
28645 pub response: TimeSlicedSurveyResponseMessage,
28646}
28647
28648impl ReadXdr for SignedTimeSlicedSurveyResponseMessage {
28649 #[cfg(feature = "std")]
28650 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28651 r.with_limited_depth(|r| {
28652 Ok(Self {
28653 response_signature: Signature::read_xdr(r)?,
28654 response: TimeSlicedSurveyResponseMessage::read_xdr(r)?,
28655 })
28656 })
28657 }
28658}
28659
28660impl WriteXdr for SignedTimeSlicedSurveyResponseMessage {
28661 #[cfg(feature = "std")]
28662 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28663 w.with_limited_depth(|w| {
28664 self.response_signature.write_xdr(w)?;
28665 self.response.write_xdr(w)?;
28666 Ok(())
28667 })
28668 }
28669}
28670
28671#[cfg_attr(feature = "alloc", derive(Default))]
28697#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28698#[cfg_eval::cfg_eval]
28699#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28700#[cfg_attr(
28701 all(feature = "serde", feature = "alloc"),
28702 serde_with::serde_as,
28703 derive(serde::Serialize, serde::Deserialize),
28704 serde(rename_all = "snake_case")
28705)]
28706#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28707pub struct PeerStats {
28708 pub id: NodeId,
28709 pub version_str: StringM<100>,
28710 #[cfg_attr(
28711 all(feature = "serde", feature = "alloc"),
28712 serde_as(as = "NumberOrString")
28713 )]
28714 pub messages_read: u64,
28715 #[cfg_attr(
28716 all(feature = "serde", feature = "alloc"),
28717 serde_as(as = "NumberOrString")
28718 )]
28719 pub messages_written: u64,
28720 #[cfg_attr(
28721 all(feature = "serde", feature = "alloc"),
28722 serde_as(as = "NumberOrString")
28723 )]
28724 pub bytes_read: u64,
28725 #[cfg_attr(
28726 all(feature = "serde", feature = "alloc"),
28727 serde_as(as = "NumberOrString")
28728 )]
28729 pub bytes_written: u64,
28730 #[cfg_attr(
28731 all(feature = "serde", feature = "alloc"),
28732 serde_as(as = "NumberOrString")
28733 )]
28734 pub seconds_connected: u64,
28735 #[cfg_attr(
28736 all(feature = "serde", feature = "alloc"),
28737 serde_as(as = "NumberOrString")
28738 )]
28739 pub unique_flood_bytes_recv: u64,
28740 #[cfg_attr(
28741 all(feature = "serde", feature = "alloc"),
28742 serde_as(as = "NumberOrString")
28743 )]
28744 pub duplicate_flood_bytes_recv: u64,
28745 #[cfg_attr(
28746 all(feature = "serde", feature = "alloc"),
28747 serde_as(as = "NumberOrString")
28748 )]
28749 pub unique_fetch_bytes_recv: u64,
28750 #[cfg_attr(
28751 all(feature = "serde", feature = "alloc"),
28752 serde_as(as = "NumberOrString")
28753 )]
28754 pub duplicate_fetch_bytes_recv: u64,
28755 #[cfg_attr(
28756 all(feature = "serde", feature = "alloc"),
28757 serde_as(as = "NumberOrString")
28758 )]
28759 pub unique_flood_message_recv: u64,
28760 #[cfg_attr(
28761 all(feature = "serde", feature = "alloc"),
28762 serde_as(as = "NumberOrString")
28763 )]
28764 pub duplicate_flood_message_recv: u64,
28765 #[cfg_attr(
28766 all(feature = "serde", feature = "alloc"),
28767 serde_as(as = "NumberOrString")
28768 )]
28769 pub unique_fetch_message_recv: u64,
28770 #[cfg_attr(
28771 all(feature = "serde", feature = "alloc"),
28772 serde_as(as = "NumberOrString")
28773 )]
28774 pub duplicate_fetch_message_recv: u64,
28775}
28776
28777impl ReadXdr for PeerStats {
28778 #[cfg(feature = "std")]
28779 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28780 r.with_limited_depth(|r| {
28781 Ok(Self {
28782 id: NodeId::read_xdr(r)?,
28783 version_str: StringM::<100>::read_xdr(r)?,
28784 messages_read: u64::read_xdr(r)?,
28785 messages_written: u64::read_xdr(r)?,
28786 bytes_read: u64::read_xdr(r)?,
28787 bytes_written: u64::read_xdr(r)?,
28788 seconds_connected: u64::read_xdr(r)?,
28789 unique_flood_bytes_recv: u64::read_xdr(r)?,
28790 duplicate_flood_bytes_recv: u64::read_xdr(r)?,
28791 unique_fetch_bytes_recv: u64::read_xdr(r)?,
28792 duplicate_fetch_bytes_recv: u64::read_xdr(r)?,
28793 unique_flood_message_recv: u64::read_xdr(r)?,
28794 duplicate_flood_message_recv: u64::read_xdr(r)?,
28795 unique_fetch_message_recv: u64::read_xdr(r)?,
28796 duplicate_fetch_message_recv: u64::read_xdr(r)?,
28797 })
28798 })
28799 }
28800}
28801
28802impl WriteXdr for PeerStats {
28803 #[cfg(feature = "std")]
28804 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28805 w.with_limited_depth(|w| {
28806 self.id.write_xdr(w)?;
28807 self.version_str.write_xdr(w)?;
28808 self.messages_read.write_xdr(w)?;
28809 self.messages_written.write_xdr(w)?;
28810 self.bytes_read.write_xdr(w)?;
28811 self.bytes_written.write_xdr(w)?;
28812 self.seconds_connected.write_xdr(w)?;
28813 self.unique_flood_bytes_recv.write_xdr(w)?;
28814 self.duplicate_flood_bytes_recv.write_xdr(w)?;
28815 self.unique_fetch_bytes_recv.write_xdr(w)?;
28816 self.duplicate_fetch_bytes_recv.write_xdr(w)?;
28817 self.unique_flood_message_recv.write_xdr(w)?;
28818 self.duplicate_flood_message_recv.write_xdr(w)?;
28819 self.unique_fetch_message_recv.write_xdr(w)?;
28820 self.duplicate_fetch_message_recv.write_xdr(w)?;
28821 Ok(())
28822 })
28823 }
28824}
28825
28826#[cfg_attr(feature = "alloc", derive(Default))]
28851#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28852#[cfg_eval::cfg_eval]
28853#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28854#[cfg_attr(
28855 all(feature = "serde", feature = "alloc"),
28856 serde_with::serde_as,
28857 derive(serde::Serialize, serde::Deserialize),
28858 serde(rename_all = "snake_case")
28859)]
28860#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28861pub struct TimeSlicedNodeData {
28862 pub added_authenticated_peers: u32,
28863 pub dropped_authenticated_peers: u32,
28864 pub total_inbound_peer_count: u32,
28865 pub total_outbound_peer_count: u32,
28866 pub p75_scp_first_to_self_latency_ms: u32,
28867 pub p75_scp_self_to_other_latency_ms: u32,
28868 pub lost_sync_count: u32,
28869 pub is_validator: bool,
28870 pub max_inbound_peer_count: u32,
28871 pub max_outbound_peer_count: u32,
28872}
28873
28874impl ReadXdr for TimeSlicedNodeData {
28875 #[cfg(feature = "std")]
28876 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28877 r.with_limited_depth(|r| {
28878 Ok(Self {
28879 added_authenticated_peers: u32::read_xdr(r)?,
28880 dropped_authenticated_peers: u32::read_xdr(r)?,
28881 total_inbound_peer_count: u32::read_xdr(r)?,
28882 total_outbound_peer_count: u32::read_xdr(r)?,
28883 p75_scp_first_to_self_latency_ms: u32::read_xdr(r)?,
28884 p75_scp_self_to_other_latency_ms: u32::read_xdr(r)?,
28885 lost_sync_count: u32::read_xdr(r)?,
28886 is_validator: bool::read_xdr(r)?,
28887 max_inbound_peer_count: u32::read_xdr(r)?,
28888 max_outbound_peer_count: u32::read_xdr(r)?,
28889 })
28890 })
28891 }
28892}
28893
28894impl WriteXdr for TimeSlicedNodeData {
28895 #[cfg(feature = "std")]
28896 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28897 w.with_limited_depth(|w| {
28898 self.added_authenticated_peers.write_xdr(w)?;
28899 self.dropped_authenticated_peers.write_xdr(w)?;
28900 self.total_inbound_peer_count.write_xdr(w)?;
28901 self.total_outbound_peer_count.write_xdr(w)?;
28902 self.p75_scp_first_to_self_latency_ms.write_xdr(w)?;
28903 self.p75_scp_self_to_other_latency_ms.write_xdr(w)?;
28904 self.lost_sync_count.write_xdr(w)?;
28905 self.is_validator.write_xdr(w)?;
28906 self.max_inbound_peer_count.write_xdr(w)?;
28907 self.max_outbound_peer_count.write_xdr(w)?;
28908 Ok(())
28909 })
28910 }
28911}
28912
28913#[cfg_attr(feature = "alloc", derive(Default))]
28924#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
28925#[cfg_eval::cfg_eval]
28926#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28927#[cfg_attr(
28928 all(feature = "serde", feature = "alloc"),
28929 serde_with::serde_as,
28930 derive(serde::Serialize, serde::Deserialize),
28931 serde(rename_all = "snake_case")
28932)]
28933#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28934pub struct TimeSlicedPeerData {
28935 pub peer_stats: PeerStats,
28936 pub average_latency_ms: u32,
28937}
28938
28939impl ReadXdr for TimeSlicedPeerData {
28940 #[cfg(feature = "std")]
28941 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
28942 r.with_limited_depth(|r| {
28943 Ok(Self {
28944 peer_stats: PeerStats::read_xdr(r)?,
28945 average_latency_ms: u32::read_xdr(r)?,
28946 })
28947 })
28948 }
28949}
28950
28951impl WriteXdr for TimeSlicedPeerData {
28952 #[cfg(feature = "std")]
28953 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
28954 w.with_limited_depth(|w| {
28955 self.peer_stats.write_xdr(w)?;
28956 self.average_latency_ms.write_xdr(w)?;
28957 Ok(())
28958 })
28959 }
28960}
28961
28962#[cfg_eval::cfg_eval]
28969#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
28970#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
28971#[cfg_attr(
28972 all(feature = "serde", feature = "alloc"),
28973 serde_with::serde_as,
28974 derive(serde::Serialize, serde::Deserialize),
28975 serde(rename_all = "snake_case")
28976)]
28977#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
28978#[derive(Debug)]
28979pub struct TimeSlicedPeerDataList(pub VecM<TimeSlicedPeerData, 25>);
28980
28981impl From<TimeSlicedPeerDataList> for VecM<TimeSlicedPeerData, 25> {
28982 #[must_use]
28983 fn from(x: TimeSlicedPeerDataList) -> Self {
28984 x.0
28985 }
28986}
28987
28988impl From<VecM<TimeSlicedPeerData, 25>> for TimeSlicedPeerDataList {
28989 #[must_use]
28990 fn from(x: VecM<TimeSlicedPeerData, 25>) -> Self {
28991 TimeSlicedPeerDataList(x)
28992 }
28993}
28994
28995impl AsRef<VecM<TimeSlicedPeerData, 25>> for TimeSlicedPeerDataList {
28996 #[must_use]
28997 fn as_ref(&self) -> &VecM<TimeSlicedPeerData, 25> {
28998 &self.0
28999 }
29000}
29001
29002impl ReadXdr for TimeSlicedPeerDataList {
29003 #[cfg(feature = "std")]
29004 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29005 r.with_limited_depth(|r| {
29006 let i = VecM::<TimeSlicedPeerData, 25>::read_xdr(r)?;
29007 let v = TimeSlicedPeerDataList(i);
29008 Ok(v)
29009 })
29010 }
29011}
29012
29013impl WriteXdr for TimeSlicedPeerDataList {
29014 #[cfg(feature = "std")]
29015 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29016 w.with_limited_depth(|w| self.0.write_xdr(w))
29017 }
29018}
29019
29020impl Deref for TimeSlicedPeerDataList {
29021 type Target = VecM<TimeSlicedPeerData, 25>;
29022 fn deref(&self) -> &Self::Target {
29023 &self.0
29024 }
29025}
29026
29027impl From<TimeSlicedPeerDataList> for Vec<TimeSlicedPeerData> {
29028 #[must_use]
29029 fn from(x: TimeSlicedPeerDataList) -> Self {
29030 x.0 .0
29031 }
29032}
29033
29034impl TryFrom<Vec<TimeSlicedPeerData>> for TimeSlicedPeerDataList {
29035 type Error = Error;
29036 fn try_from(x: Vec<TimeSlicedPeerData>) -> Result<Self, Error> {
29037 Ok(TimeSlicedPeerDataList(x.try_into()?))
29038 }
29039}
29040
29041#[cfg(feature = "alloc")]
29042impl TryFrom<&Vec<TimeSlicedPeerData>> for TimeSlicedPeerDataList {
29043 type Error = Error;
29044 fn try_from(x: &Vec<TimeSlicedPeerData>) -> Result<Self, Error> {
29045 Ok(TimeSlicedPeerDataList(x.try_into()?))
29046 }
29047}
29048
29049impl AsRef<Vec<TimeSlicedPeerData>> for TimeSlicedPeerDataList {
29050 #[must_use]
29051 fn as_ref(&self) -> &Vec<TimeSlicedPeerData> {
29052 &self.0 .0
29053 }
29054}
29055
29056impl AsRef<[TimeSlicedPeerData]> for TimeSlicedPeerDataList {
29057 #[cfg(feature = "alloc")]
29058 #[must_use]
29059 fn as_ref(&self) -> &[TimeSlicedPeerData] {
29060 &self.0 .0
29061 }
29062 #[cfg(not(feature = "alloc"))]
29063 #[must_use]
29064 fn as_ref(&self) -> &[TimeSlicedPeerData] {
29065 self.0 .0
29066 }
29067}
29068
29069#[cfg_attr(feature = "alloc", derive(Default))]
29081#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29082#[cfg_eval::cfg_eval]
29083#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29084#[cfg_attr(
29085 all(feature = "serde", feature = "alloc"),
29086 serde_with::serde_as,
29087 derive(serde::Serialize, serde::Deserialize),
29088 serde(rename_all = "snake_case")
29089)]
29090#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29091pub struct TopologyResponseBodyV2 {
29092 pub inbound_peers: TimeSlicedPeerDataList,
29093 pub outbound_peers: TimeSlicedPeerDataList,
29094 pub node_data: TimeSlicedNodeData,
29095}
29096
29097impl ReadXdr for TopologyResponseBodyV2 {
29098 #[cfg(feature = "std")]
29099 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29100 r.with_limited_depth(|r| {
29101 Ok(Self {
29102 inbound_peers: TimeSlicedPeerDataList::read_xdr(r)?,
29103 outbound_peers: TimeSlicedPeerDataList::read_xdr(r)?,
29104 node_data: TimeSlicedNodeData::read_xdr(r)?,
29105 })
29106 })
29107 }
29108}
29109
29110impl WriteXdr for TopologyResponseBodyV2 {
29111 #[cfg(feature = "std")]
29112 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29113 w.with_limited_depth(|w| {
29114 self.inbound_peers.write_xdr(w)?;
29115 self.outbound_peers.write_xdr(w)?;
29116 self.node_data.write_xdr(w)?;
29117 Ok(())
29118 })
29119 }
29120}
29121
29122#[cfg_eval::cfg_eval]
29134#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29135#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29136#[cfg_attr(
29137 all(feature = "serde", feature = "alloc"),
29138 serde_with::serde_as,
29139 derive(serde::Serialize, serde::Deserialize),
29140 serde(rename_all = "snake_case")
29141)]
29142#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29143#[allow(clippy::large_enum_variant)]
29144pub enum SurveyResponseBody {
29145 SurveyTopologyResponseV2(TopologyResponseBodyV2),
29146}
29147
29148#[cfg(feature = "alloc")]
29149impl Default for SurveyResponseBody {
29150 fn default() -> Self {
29151 Self::SurveyTopologyResponseV2(TopologyResponseBodyV2::default())
29152 }
29153}
29154
29155impl SurveyResponseBody {
29156 pub const VARIANTS: [SurveyMessageResponseType; 1] =
29157 [SurveyMessageResponseType::SurveyTopologyResponseV2];
29158 pub const VARIANTS_STR: [&'static str; 1] = ["SurveyTopologyResponseV2"];
29159
29160 #[must_use]
29161 pub const fn name(&self) -> &'static str {
29162 match self {
29163 Self::SurveyTopologyResponseV2(_) => "SurveyTopologyResponseV2",
29164 }
29165 }
29166
29167 #[must_use]
29168 pub const fn discriminant(&self) -> SurveyMessageResponseType {
29169 #[allow(clippy::match_same_arms)]
29170 match self {
29171 Self::SurveyTopologyResponseV2(_) => {
29172 SurveyMessageResponseType::SurveyTopologyResponseV2
29173 }
29174 }
29175 }
29176
29177 #[must_use]
29178 pub const fn variants() -> [SurveyMessageResponseType; 1] {
29179 Self::VARIANTS
29180 }
29181}
29182
29183impl Name for SurveyResponseBody {
29184 #[must_use]
29185 fn name(&self) -> &'static str {
29186 Self::name(self)
29187 }
29188}
29189
29190impl Discriminant<SurveyMessageResponseType> for SurveyResponseBody {
29191 #[must_use]
29192 fn discriminant(&self) -> SurveyMessageResponseType {
29193 Self::discriminant(self)
29194 }
29195}
29196
29197impl Variants<SurveyMessageResponseType> for SurveyResponseBody {
29198 fn variants() -> slice::Iter<'static, SurveyMessageResponseType> {
29199 Self::VARIANTS.iter()
29200 }
29201}
29202
29203impl Union<SurveyMessageResponseType> for SurveyResponseBody {}
29204
29205impl ReadXdr for SurveyResponseBody {
29206 #[cfg(feature = "std")]
29207 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29208 r.with_limited_depth(|r| {
29209 let dv: SurveyMessageResponseType =
29210 <SurveyMessageResponseType as ReadXdr>::read_xdr(r)?;
29211 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
29212 let v = match dv {
29213 SurveyMessageResponseType::SurveyTopologyResponseV2 => {
29214 Self::SurveyTopologyResponseV2(TopologyResponseBodyV2::read_xdr(r)?)
29215 }
29216 #[allow(unreachable_patterns)]
29217 _ => return Err(Error::Invalid),
29218 };
29219 Ok(v)
29220 })
29221 }
29222}
29223
29224impl WriteXdr for SurveyResponseBody {
29225 #[cfg(feature = "std")]
29226 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29227 w.with_limited_depth(|w| {
29228 self.discriminant().write_xdr(w)?;
29229 #[allow(clippy::match_same_arms)]
29230 match self {
29231 Self::SurveyTopologyResponseV2(v) => v.write_xdr(w)?,
29232 };
29233 Ok(())
29234 })
29235 }
29236}
29237
29238pub const TX_ADVERT_VECTOR_MAX_SIZE: u64 = 1000;
29245
29246#[cfg_eval::cfg_eval]
29253#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
29254#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29255#[cfg_attr(
29256 all(feature = "serde", feature = "alloc"),
29257 serde_with::serde_as,
29258 derive(serde::Serialize, serde::Deserialize),
29259 serde(rename_all = "snake_case")
29260)]
29261#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29262#[derive(Debug)]
29263pub struct TxAdvertVector(pub VecM<Hash, 1000>);
29264
29265impl From<TxAdvertVector> for VecM<Hash, 1000> {
29266 #[must_use]
29267 fn from(x: TxAdvertVector) -> Self {
29268 x.0
29269 }
29270}
29271
29272impl From<VecM<Hash, 1000>> for TxAdvertVector {
29273 #[must_use]
29274 fn from(x: VecM<Hash, 1000>) -> Self {
29275 TxAdvertVector(x)
29276 }
29277}
29278
29279impl AsRef<VecM<Hash, 1000>> for TxAdvertVector {
29280 #[must_use]
29281 fn as_ref(&self) -> &VecM<Hash, 1000> {
29282 &self.0
29283 }
29284}
29285
29286impl ReadXdr for TxAdvertVector {
29287 #[cfg(feature = "std")]
29288 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29289 r.with_limited_depth(|r| {
29290 let i = VecM::<Hash, 1000>::read_xdr(r)?;
29291 let v = TxAdvertVector(i);
29292 Ok(v)
29293 })
29294 }
29295}
29296
29297impl WriteXdr for TxAdvertVector {
29298 #[cfg(feature = "std")]
29299 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29300 w.with_limited_depth(|w| self.0.write_xdr(w))
29301 }
29302}
29303
29304impl Deref for TxAdvertVector {
29305 type Target = VecM<Hash, 1000>;
29306 fn deref(&self) -> &Self::Target {
29307 &self.0
29308 }
29309}
29310
29311impl From<TxAdvertVector> for Vec<Hash> {
29312 #[must_use]
29313 fn from(x: TxAdvertVector) -> Self {
29314 x.0 .0
29315 }
29316}
29317
29318impl TryFrom<Vec<Hash>> for TxAdvertVector {
29319 type Error = Error;
29320 fn try_from(x: Vec<Hash>) -> Result<Self, Error> {
29321 Ok(TxAdvertVector(x.try_into()?))
29322 }
29323}
29324
29325#[cfg(feature = "alloc")]
29326impl TryFrom<&Vec<Hash>> for TxAdvertVector {
29327 type Error = Error;
29328 fn try_from(x: &Vec<Hash>) -> Result<Self, Error> {
29329 Ok(TxAdvertVector(x.try_into()?))
29330 }
29331}
29332
29333impl AsRef<Vec<Hash>> for TxAdvertVector {
29334 #[must_use]
29335 fn as_ref(&self) -> &Vec<Hash> {
29336 &self.0 .0
29337 }
29338}
29339
29340impl AsRef<[Hash]> for TxAdvertVector {
29341 #[cfg(feature = "alloc")]
29342 #[must_use]
29343 fn as_ref(&self) -> &[Hash] {
29344 &self.0 .0
29345 }
29346 #[cfg(not(feature = "alloc"))]
29347 #[must_use]
29348 fn as_ref(&self) -> &[Hash] {
29349 self.0 .0
29350 }
29351}
29352
29353#[cfg_attr(feature = "alloc", derive(Default))]
29363#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29364#[cfg_eval::cfg_eval]
29365#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29366#[cfg_attr(
29367 all(feature = "serde", feature = "alloc"),
29368 serde_with::serde_as,
29369 derive(serde::Serialize, serde::Deserialize),
29370 serde(rename_all = "snake_case")
29371)]
29372#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29373pub struct FloodAdvert {
29374 pub tx_hashes: TxAdvertVector,
29375}
29376
29377impl ReadXdr for FloodAdvert {
29378 #[cfg(feature = "std")]
29379 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29380 r.with_limited_depth(|r| {
29381 Ok(Self {
29382 tx_hashes: TxAdvertVector::read_xdr(r)?,
29383 })
29384 })
29385 }
29386}
29387
29388impl WriteXdr for FloodAdvert {
29389 #[cfg(feature = "std")]
29390 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29391 w.with_limited_depth(|w| {
29392 self.tx_hashes.write_xdr(w)?;
29393 Ok(())
29394 })
29395 }
29396}
29397
29398pub const TX_DEMAND_VECTOR_MAX_SIZE: u64 = 1000;
29405
29406#[cfg_eval::cfg_eval]
29413#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
29414#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29415#[cfg_attr(
29416 all(feature = "serde", feature = "alloc"),
29417 serde_with::serde_as,
29418 derive(serde::Serialize, serde::Deserialize),
29419 serde(rename_all = "snake_case")
29420)]
29421#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29422#[derive(Debug)]
29423pub struct TxDemandVector(pub VecM<Hash, 1000>);
29424
29425impl From<TxDemandVector> for VecM<Hash, 1000> {
29426 #[must_use]
29427 fn from(x: TxDemandVector) -> Self {
29428 x.0
29429 }
29430}
29431
29432impl From<VecM<Hash, 1000>> for TxDemandVector {
29433 #[must_use]
29434 fn from(x: VecM<Hash, 1000>) -> Self {
29435 TxDemandVector(x)
29436 }
29437}
29438
29439impl AsRef<VecM<Hash, 1000>> for TxDemandVector {
29440 #[must_use]
29441 fn as_ref(&self) -> &VecM<Hash, 1000> {
29442 &self.0
29443 }
29444}
29445
29446impl ReadXdr for TxDemandVector {
29447 #[cfg(feature = "std")]
29448 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29449 r.with_limited_depth(|r| {
29450 let i = VecM::<Hash, 1000>::read_xdr(r)?;
29451 let v = TxDemandVector(i);
29452 Ok(v)
29453 })
29454 }
29455}
29456
29457impl WriteXdr for TxDemandVector {
29458 #[cfg(feature = "std")]
29459 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29460 w.with_limited_depth(|w| self.0.write_xdr(w))
29461 }
29462}
29463
29464impl Deref for TxDemandVector {
29465 type Target = VecM<Hash, 1000>;
29466 fn deref(&self) -> &Self::Target {
29467 &self.0
29468 }
29469}
29470
29471impl From<TxDemandVector> for Vec<Hash> {
29472 #[must_use]
29473 fn from(x: TxDemandVector) -> Self {
29474 x.0 .0
29475 }
29476}
29477
29478impl TryFrom<Vec<Hash>> for TxDemandVector {
29479 type Error = Error;
29480 fn try_from(x: Vec<Hash>) -> Result<Self, Error> {
29481 Ok(TxDemandVector(x.try_into()?))
29482 }
29483}
29484
29485#[cfg(feature = "alloc")]
29486impl TryFrom<&Vec<Hash>> for TxDemandVector {
29487 type Error = Error;
29488 fn try_from(x: &Vec<Hash>) -> Result<Self, Error> {
29489 Ok(TxDemandVector(x.try_into()?))
29490 }
29491}
29492
29493impl AsRef<Vec<Hash>> for TxDemandVector {
29494 #[must_use]
29495 fn as_ref(&self) -> &Vec<Hash> {
29496 &self.0 .0
29497 }
29498}
29499
29500impl AsRef<[Hash]> for TxDemandVector {
29501 #[cfg(feature = "alloc")]
29502 #[must_use]
29503 fn as_ref(&self) -> &[Hash] {
29504 &self.0 .0
29505 }
29506 #[cfg(not(feature = "alloc"))]
29507 #[must_use]
29508 fn as_ref(&self) -> &[Hash] {
29509 self.0 .0
29510 }
29511}
29512
29513#[cfg_attr(feature = "alloc", derive(Default))]
29523#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29524#[cfg_eval::cfg_eval]
29525#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29526#[cfg_attr(
29527 all(feature = "serde", feature = "alloc"),
29528 serde_with::serde_as,
29529 derive(serde::Serialize, serde::Deserialize),
29530 serde(rename_all = "snake_case")
29531)]
29532#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29533pub struct FloodDemand {
29534 pub tx_hashes: TxDemandVector,
29535}
29536
29537impl ReadXdr for FloodDemand {
29538 #[cfg(feature = "std")]
29539 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29540 r.with_limited_depth(|r| {
29541 Ok(Self {
29542 tx_hashes: TxDemandVector::read_xdr(r)?,
29543 })
29544 })
29545 }
29546}
29547
29548impl WriteXdr for FloodDemand {
29549 #[cfg(feature = "std")]
29550 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29551 w.with_limited_depth(|w| {
29552 self.tx_hashes.write_xdr(w)?;
29553 Ok(())
29554 })
29555 }
29556}
29557
29558#[cfg_eval::cfg_eval]
29621#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29622#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29623#[cfg_attr(
29624 all(feature = "serde", feature = "alloc"),
29625 serde_with::serde_as,
29626 derive(serde::Serialize, serde::Deserialize),
29627 serde(rename_all = "snake_case")
29628)]
29629#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29630#[allow(clippy::large_enum_variant)]
29631pub enum StellarMessage {
29632 ErrorMsg(SError),
29633 Hello(Hello),
29634 Auth(Auth),
29635 DontHave(DontHave),
29636 Peers(VecM<PeerAddress, 100>),
29637 GetTxSet(Uint256),
29638 TxSet(TransactionSet),
29639 GeneralizedTxSet(GeneralizedTransactionSet),
29640 Transaction(TransactionEnvelope),
29641 TimeSlicedSurveyRequest(SignedTimeSlicedSurveyRequestMessage),
29642 TimeSlicedSurveyResponse(SignedTimeSlicedSurveyResponseMessage),
29643 TimeSlicedSurveyStartCollecting(SignedTimeSlicedSurveyStartCollectingMessage),
29644 TimeSlicedSurveyStopCollecting(SignedTimeSlicedSurveyStopCollectingMessage),
29645 GetScpQuorumset(Uint256),
29646 ScpQuorumset(ScpQuorumSet),
29647 ScpMessage(ScpEnvelope),
29648 GetScpState(u32),
29649 SendMore(SendMore),
29650 SendMoreExtended(SendMoreExtended),
29651 FloodAdvert(FloodAdvert),
29652 FloodDemand(FloodDemand),
29653}
29654
29655#[cfg(feature = "alloc")]
29656impl Default for StellarMessage {
29657 fn default() -> Self {
29658 Self::ErrorMsg(SError::default())
29659 }
29660}
29661
29662impl StellarMessage {
29663 pub const VARIANTS: [MessageType; 21] = [
29664 MessageType::ErrorMsg,
29665 MessageType::Hello,
29666 MessageType::Auth,
29667 MessageType::DontHave,
29668 MessageType::Peers,
29669 MessageType::GetTxSet,
29670 MessageType::TxSet,
29671 MessageType::GeneralizedTxSet,
29672 MessageType::Transaction,
29673 MessageType::TimeSlicedSurveyRequest,
29674 MessageType::TimeSlicedSurveyResponse,
29675 MessageType::TimeSlicedSurveyStartCollecting,
29676 MessageType::TimeSlicedSurveyStopCollecting,
29677 MessageType::GetScpQuorumset,
29678 MessageType::ScpQuorumset,
29679 MessageType::ScpMessage,
29680 MessageType::GetScpState,
29681 MessageType::SendMore,
29682 MessageType::SendMoreExtended,
29683 MessageType::FloodAdvert,
29684 MessageType::FloodDemand,
29685 ];
29686 pub const VARIANTS_STR: [&'static str; 21] = [
29687 "ErrorMsg",
29688 "Hello",
29689 "Auth",
29690 "DontHave",
29691 "Peers",
29692 "GetTxSet",
29693 "TxSet",
29694 "GeneralizedTxSet",
29695 "Transaction",
29696 "TimeSlicedSurveyRequest",
29697 "TimeSlicedSurveyResponse",
29698 "TimeSlicedSurveyStartCollecting",
29699 "TimeSlicedSurveyStopCollecting",
29700 "GetScpQuorumset",
29701 "ScpQuorumset",
29702 "ScpMessage",
29703 "GetScpState",
29704 "SendMore",
29705 "SendMoreExtended",
29706 "FloodAdvert",
29707 "FloodDemand",
29708 ];
29709
29710 #[must_use]
29711 pub const fn name(&self) -> &'static str {
29712 match self {
29713 Self::ErrorMsg(_) => "ErrorMsg",
29714 Self::Hello(_) => "Hello",
29715 Self::Auth(_) => "Auth",
29716 Self::DontHave(_) => "DontHave",
29717 Self::Peers(_) => "Peers",
29718 Self::GetTxSet(_) => "GetTxSet",
29719 Self::TxSet(_) => "TxSet",
29720 Self::GeneralizedTxSet(_) => "GeneralizedTxSet",
29721 Self::Transaction(_) => "Transaction",
29722 Self::TimeSlicedSurveyRequest(_) => "TimeSlicedSurveyRequest",
29723 Self::TimeSlicedSurveyResponse(_) => "TimeSlicedSurveyResponse",
29724 Self::TimeSlicedSurveyStartCollecting(_) => "TimeSlicedSurveyStartCollecting",
29725 Self::TimeSlicedSurveyStopCollecting(_) => "TimeSlicedSurveyStopCollecting",
29726 Self::GetScpQuorumset(_) => "GetScpQuorumset",
29727 Self::ScpQuorumset(_) => "ScpQuorumset",
29728 Self::ScpMessage(_) => "ScpMessage",
29729 Self::GetScpState(_) => "GetScpState",
29730 Self::SendMore(_) => "SendMore",
29731 Self::SendMoreExtended(_) => "SendMoreExtended",
29732 Self::FloodAdvert(_) => "FloodAdvert",
29733 Self::FloodDemand(_) => "FloodDemand",
29734 }
29735 }
29736
29737 #[must_use]
29738 pub const fn discriminant(&self) -> MessageType {
29739 #[allow(clippy::match_same_arms)]
29740 match self {
29741 Self::ErrorMsg(_) => MessageType::ErrorMsg,
29742 Self::Hello(_) => MessageType::Hello,
29743 Self::Auth(_) => MessageType::Auth,
29744 Self::DontHave(_) => MessageType::DontHave,
29745 Self::Peers(_) => MessageType::Peers,
29746 Self::GetTxSet(_) => MessageType::GetTxSet,
29747 Self::TxSet(_) => MessageType::TxSet,
29748 Self::GeneralizedTxSet(_) => MessageType::GeneralizedTxSet,
29749 Self::Transaction(_) => MessageType::Transaction,
29750 Self::TimeSlicedSurveyRequest(_) => MessageType::TimeSlicedSurveyRequest,
29751 Self::TimeSlicedSurveyResponse(_) => MessageType::TimeSlicedSurveyResponse,
29752 Self::TimeSlicedSurveyStartCollecting(_) => {
29753 MessageType::TimeSlicedSurveyStartCollecting
29754 }
29755 Self::TimeSlicedSurveyStopCollecting(_) => MessageType::TimeSlicedSurveyStopCollecting,
29756 Self::GetScpQuorumset(_) => MessageType::GetScpQuorumset,
29757 Self::ScpQuorumset(_) => MessageType::ScpQuorumset,
29758 Self::ScpMessage(_) => MessageType::ScpMessage,
29759 Self::GetScpState(_) => MessageType::GetScpState,
29760 Self::SendMore(_) => MessageType::SendMore,
29761 Self::SendMoreExtended(_) => MessageType::SendMoreExtended,
29762 Self::FloodAdvert(_) => MessageType::FloodAdvert,
29763 Self::FloodDemand(_) => MessageType::FloodDemand,
29764 }
29765 }
29766
29767 #[must_use]
29768 pub const fn variants() -> [MessageType; 21] {
29769 Self::VARIANTS
29770 }
29771}
29772
29773impl Name for StellarMessage {
29774 #[must_use]
29775 fn name(&self) -> &'static str {
29776 Self::name(self)
29777 }
29778}
29779
29780impl Discriminant<MessageType> for StellarMessage {
29781 #[must_use]
29782 fn discriminant(&self) -> MessageType {
29783 Self::discriminant(self)
29784 }
29785}
29786
29787impl Variants<MessageType> for StellarMessage {
29788 fn variants() -> slice::Iter<'static, MessageType> {
29789 Self::VARIANTS.iter()
29790 }
29791}
29792
29793impl Union<MessageType> for StellarMessage {}
29794
29795impl ReadXdr for StellarMessage {
29796 #[cfg(feature = "std")]
29797 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29798 r.with_limited_depth(|r| {
29799 let dv: MessageType = <MessageType as ReadXdr>::read_xdr(r)?;
29800 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
29801 let v = match dv {
29802 MessageType::ErrorMsg => Self::ErrorMsg(SError::read_xdr(r)?),
29803 MessageType::Hello => Self::Hello(Hello::read_xdr(r)?),
29804 MessageType::Auth => Self::Auth(Auth::read_xdr(r)?),
29805 MessageType::DontHave => Self::DontHave(DontHave::read_xdr(r)?),
29806 MessageType::Peers => Self::Peers(VecM::<PeerAddress, 100>::read_xdr(r)?),
29807 MessageType::GetTxSet => Self::GetTxSet(Uint256::read_xdr(r)?),
29808 MessageType::TxSet => Self::TxSet(TransactionSet::read_xdr(r)?),
29809 MessageType::GeneralizedTxSet => {
29810 Self::GeneralizedTxSet(GeneralizedTransactionSet::read_xdr(r)?)
29811 }
29812 MessageType::Transaction => Self::Transaction(TransactionEnvelope::read_xdr(r)?),
29813 MessageType::TimeSlicedSurveyRequest => Self::TimeSlicedSurveyRequest(
29814 SignedTimeSlicedSurveyRequestMessage::read_xdr(r)?,
29815 ),
29816 MessageType::TimeSlicedSurveyResponse => Self::TimeSlicedSurveyResponse(
29817 SignedTimeSlicedSurveyResponseMessage::read_xdr(r)?,
29818 ),
29819 MessageType::TimeSlicedSurveyStartCollecting => {
29820 Self::TimeSlicedSurveyStartCollecting(
29821 SignedTimeSlicedSurveyStartCollectingMessage::read_xdr(r)?,
29822 )
29823 }
29824 MessageType::TimeSlicedSurveyStopCollecting => {
29825 Self::TimeSlicedSurveyStopCollecting(
29826 SignedTimeSlicedSurveyStopCollectingMessage::read_xdr(r)?,
29827 )
29828 }
29829 MessageType::GetScpQuorumset => Self::GetScpQuorumset(Uint256::read_xdr(r)?),
29830 MessageType::ScpQuorumset => Self::ScpQuorumset(ScpQuorumSet::read_xdr(r)?),
29831 MessageType::ScpMessage => Self::ScpMessage(ScpEnvelope::read_xdr(r)?),
29832 MessageType::GetScpState => Self::GetScpState(u32::read_xdr(r)?),
29833 MessageType::SendMore => Self::SendMore(SendMore::read_xdr(r)?),
29834 MessageType::SendMoreExtended => {
29835 Self::SendMoreExtended(SendMoreExtended::read_xdr(r)?)
29836 }
29837 MessageType::FloodAdvert => Self::FloodAdvert(FloodAdvert::read_xdr(r)?),
29838 MessageType::FloodDemand => Self::FloodDemand(FloodDemand::read_xdr(r)?),
29839 #[allow(unreachable_patterns)]
29840 _ => return Err(Error::Invalid),
29841 };
29842 Ok(v)
29843 })
29844 }
29845}
29846
29847impl WriteXdr for StellarMessage {
29848 #[cfg(feature = "std")]
29849 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29850 w.with_limited_depth(|w| {
29851 self.discriminant().write_xdr(w)?;
29852 #[allow(clippy::match_same_arms)]
29853 match self {
29854 Self::ErrorMsg(v) => v.write_xdr(w)?,
29855 Self::Hello(v) => v.write_xdr(w)?,
29856 Self::Auth(v) => v.write_xdr(w)?,
29857 Self::DontHave(v) => v.write_xdr(w)?,
29858 Self::Peers(v) => v.write_xdr(w)?,
29859 Self::GetTxSet(v) => v.write_xdr(w)?,
29860 Self::TxSet(v) => v.write_xdr(w)?,
29861 Self::GeneralizedTxSet(v) => v.write_xdr(w)?,
29862 Self::Transaction(v) => v.write_xdr(w)?,
29863 Self::TimeSlicedSurveyRequest(v) => v.write_xdr(w)?,
29864 Self::TimeSlicedSurveyResponse(v) => v.write_xdr(w)?,
29865 Self::TimeSlicedSurveyStartCollecting(v) => v.write_xdr(w)?,
29866 Self::TimeSlicedSurveyStopCollecting(v) => v.write_xdr(w)?,
29867 Self::GetScpQuorumset(v) => v.write_xdr(w)?,
29868 Self::ScpQuorumset(v) => v.write_xdr(w)?,
29869 Self::ScpMessage(v) => v.write_xdr(w)?,
29870 Self::GetScpState(v) => v.write_xdr(w)?,
29871 Self::SendMore(v) => v.write_xdr(w)?,
29872 Self::SendMoreExtended(v) => v.write_xdr(w)?,
29873 Self::FloodAdvert(v) => v.write_xdr(w)?,
29874 Self::FloodDemand(v) => v.write_xdr(w)?,
29875 };
29876 Ok(())
29877 })
29878 }
29879}
29880
29881#[cfg_attr(feature = "alloc", derive(Default))]
29893#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29894#[cfg_eval::cfg_eval]
29895#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29896#[cfg_attr(
29897 all(feature = "serde", feature = "alloc"),
29898 serde_with::serde_as,
29899 derive(serde::Serialize, serde::Deserialize),
29900 serde(rename_all = "snake_case")
29901)]
29902#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29903pub struct AuthenticatedMessageV0 {
29904 #[cfg_attr(
29905 all(feature = "serde", feature = "alloc"),
29906 serde_as(as = "NumberOrString")
29907 )]
29908 pub sequence: u64,
29909 pub message: StellarMessage,
29910 pub mac: HmacSha256Mac,
29911}
29912
29913impl ReadXdr for AuthenticatedMessageV0 {
29914 #[cfg(feature = "std")]
29915 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
29916 r.with_limited_depth(|r| {
29917 Ok(Self {
29918 sequence: u64::read_xdr(r)?,
29919 message: StellarMessage::read_xdr(r)?,
29920 mac: HmacSha256Mac::read_xdr(r)?,
29921 })
29922 })
29923 }
29924}
29925
29926impl WriteXdr for AuthenticatedMessageV0 {
29927 #[cfg(feature = "std")]
29928 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
29929 w.with_limited_depth(|w| {
29930 self.sequence.write_xdr(w)?;
29931 self.message.write_xdr(w)?;
29932 self.mac.write_xdr(w)?;
29933 Ok(())
29934 })
29935 }
29936}
29937
29938#[cfg_eval::cfg_eval]
29955#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
29956#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
29957#[cfg_attr(
29958 all(feature = "serde", feature = "alloc"),
29959 serde_with::serde_as,
29960 derive(serde::Serialize, serde::Deserialize),
29961 serde(rename_all = "snake_case")
29962)]
29963#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
29964#[allow(clippy::large_enum_variant)]
29965pub enum AuthenticatedMessage {
29966 V0(AuthenticatedMessageV0),
29967}
29968
29969#[cfg(feature = "alloc")]
29970impl Default for AuthenticatedMessage {
29971 fn default() -> Self {
29972 Self::V0(AuthenticatedMessageV0::default())
29973 }
29974}
29975
29976impl AuthenticatedMessage {
29977 pub const VARIANTS: [u32; 1] = [0];
29978 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
29979
29980 #[must_use]
29981 pub const fn name(&self) -> &'static str {
29982 match self {
29983 Self::V0(_) => "V0",
29984 }
29985 }
29986
29987 #[must_use]
29988 pub const fn discriminant(&self) -> u32 {
29989 #[allow(clippy::match_same_arms)]
29990 match self {
29991 Self::V0(_) => 0,
29992 }
29993 }
29994
29995 #[must_use]
29996 pub const fn variants() -> [u32; 1] {
29997 Self::VARIANTS
29998 }
29999}
30000
30001impl Name for AuthenticatedMessage {
30002 #[must_use]
30003 fn name(&self) -> &'static str {
30004 Self::name(self)
30005 }
30006}
30007
30008impl Discriminant<u32> for AuthenticatedMessage {
30009 #[must_use]
30010 fn discriminant(&self) -> u32 {
30011 Self::discriminant(self)
30012 }
30013}
30014
30015impl Variants<u32> for AuthenticatedMessage {
30016 fn variants() -> slice::Iter<'static, u32> {
30017 Self::VARIANTS.iter()
30018 }
30019}
30020
30021impl Union<u32> for AuthenticatedMessage {}
30022
30023impl ReadXdr for AuthenticatedMessage {
30024 #[cfg(feature = "std")]
30025 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30026 r.with_limited_depth(|r| {
30027 let dv: u32 = <u32 as ReadXdr>::read_xdr(r)?;
30028 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
30029 let v = match dv {
30030 0 => Self::V0(AuthenticatedMessageV0::read_xdr(r)?),
30031 #[allow(unreachable_patterns)]
30032 _ => return Err(Error::Invalid),
30033 };
30034 Ok(v)
30035 })
30036 }
30037}
30038
30039impl WriteXdr for AuthenticatedMessage {
30040 #[cfg(feature = "std")]
30041 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30042 w.with_limited_depth(|w| {
30043 self.discriminant().write_xdr(w)?;
30044 #[allow(clippy::match_same_arms)]
30045 match self {
30046 Self::V0(v) => v.write_xdr(w)?,
30047 };
30048 Ok(())
30049 })
30050 }
30051}
30052
30053pub const MAX_OPS_PER_TX: u64 = 100;
30060
30061#[cfg_eval::cfg_eval]
30073#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30074#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30075#[cfg_attr(
30076 all(feature = "serde", feature = "alloc"),
30077 serde_with::serde_as,
30078 derive(serde::Serialize, serde::Deserialize),
30079 serde(rename_all = "snake_case")
30080)]
30081#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30082#[allow(clippy::large_enum_variant)]
30083pub enum LiquidityPoolParameters {
30084 LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters),
30085}
30086
30087#[cfg(feature = "alloc")]
30088impl Default for LiquidityPoolParameters {
30089 fn default() -> Self {
30090 Self::LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters::default())
30091 }
30092}
30093
30094impl LiquidityPoolParameters {
30095 pub const VARIANTS: [LiquidityPoolType; 1] = [LiquidityPoolType::LiquidityPoolConstantProduct];
30096 pub const VARIANTS_STR: [&'static str; 1] = ["LiquidityPoolConstantProduct"];
30097
30098 #[must_use]
30099 pub const fn name(&self) -> &'static str {
30100 match self {
30101 Self::LiquidityPoolConstantProduct(_) => "LiquidityPoolConstantProduct",
30102 }
30103 }
30104
30105 #[must_use]
30106 pub const fn discriminant(&self) -> LiquidityPoolType {
30107 #[allow(clippy::match_same_arms)]
30108 match self {
30109 Self::LiquidityPoolConstantProduct(_) => {
30110 LiquidityPoolType::LiquidityPoolConstantProduct
30111 }
30112 }
30113 }
30114
30115 #[must_use]
30116 pub const fn variants() -> [LiquidityPoolType; 1] {
30117 Self::VARIANTS
30118 }
30119}
30120
30121impl Name for LiquidityPoolParameters {
30122 #[must_use]
30123 fn name(&self) -> &'static str {
30124 Self::name(self)
30125 }
30126}
30127
30128impl Discriminant<LiquidityPoolType> for LiquidityPoolParameters {
30129 #[must_use]
30130 fn discriminant(&self) -> LiquidityPoolType {
30131 Self::discriminant(self)
30132 }
30133}
30134
30135impl Variants<LiquidityPoolType> for LiquidityPoolParameters {
30136 fn variants() -> slice::Iter<'static, LiquidityPoolType> {
30137 Self::VARIANTS.iter()
30138 }
30139}
30140
30141impl Union<LiquidityPoolType> for LiquidityPoolParameters {}
30142
30143impl ReadXdr for LiquidityPoolParameters {
30144 #[cfg(feature = "std")]
30145 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30146 r.with_limited_depth(|r| {
30147 let dv: LiquidityPoolType = <LiquidityPoolType as ReadXdr>::read_xdr(r)?;
30148 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
30149 let v = match dv {
30150 LiquidityPoolType::LiquidityPoolConstantProduct => {
30151 Self::LiquidityPoolConstantProduct(
30152 LiquidityPoolConstantProductParameters::read_xdr(r)?,
30153 )
30154 }
30155 #[allow(unreachable_patterns)]
30156 _ => return Err(Error::Invalid),
30157 };
30158 Ok(v)
30159 })
30160 }
30161}
30162
30163impl WriteXdr for LiquidityPoolParameters {
30164 #[cfg(feature = "std")]
30165 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30166 w.with_limited_depth(|w| {
30167 self.discriminant().write_xdr(w)?;
30168 #[allow(clippy::match_same_arms)]
30169 match self {
30170 Self::LiquidityPoolConstantProduct(v) => v.write_xdr(w)?,
30171 };
30172 Ok(())
30173 })
30174 }
30175}
30176
30177#[cfg_attr(feature = "alloc", derive(Default))]
30188#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30189#[cfg_eval::cfg_eval]
30190#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30191#[cfg_attr(
30192 all(feature = "serde", feature = "alloc"),
30193 derive(serde_with::SerializeDisplay)
30194)]
30195pub struct MuxedAccountMed25519 {
30196 pub id: u64,
30197 pub ed25519: Uint256,
30198}
30199
30200impl ReadXdr for MuxedAccountMed25519 {
30201 #[cfg(feature = "std")]
30202 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30203 r.with_limited_depth(|r| {
30204 Ok(Self {
30205 id: u64::read_xdr(r)?,
30206 ed25519: Uint256::read_xdr(r)?,
30207 })
30208 })
30209 }
30210}
30211
30212impl WriteXdr for MuxedAccountMed25519 {
30213 #[cfg(feature = "std")]
30214 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30215 w.with_limited_depth(|w| {
30216 self.id.write_xdr(w)?;
30217 self.ed25519.write_xdr(w)?;
30218 Ok(())
30219 })
30220 }
30221}
30222#[cfg(all(feature = "serde", feature = "alloc"))]
30223impl<'de> serde::Deserialize<'de> for MuxedAccountMed25519 {
30224 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
30225 where
30226 D: serde::Deserializer<'de>,
30227 {
30228 use serde::Deserialize;
30229 #[derive(Deserialize)]
30230 struct MuxedAccountMed25519 {
30231 id: u64,
30232 ed25519: Uint256,
30233 }
30234 #[derive(Deserialize)]
30235 #[serde(untagged)]
30236 enum MuxedAccountMed25519OrString<'a> {
30237 Str(&'a str),
30238 String(String),
30239 MuxedAccountMed25519(MuxedAccountMed25519),
30240 }
30241 match MuxedAccountMed25519OrString::deserialize(deserializer)? {
30242 MuxedAccountMed25519OrString::Str(s) => s.parse().map_err(serde::de::Error::custom),
30243 MuxedAccountMed25519OrString::String(s) => s.parse().map_err(serde::de::Error::custom),
30244 MuxedAccountMed25519OrString::MuxedAccountMed25519(MuxedAccountMed25519 {
30245 id,
30246 ed25519,
30247 }) => Ok(self::MuxedAccountMed25519 { id, ed25519 }),
30248 }
30249 }
30250}
30251
30252#[cfg_eval::cfg_eval]
30270#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30271#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30272#[cfg_attr(
30273 all(feature = "serde", feature = "alloc"),
30274 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
30275)]
30276#[allow(clippy::large_enum_variant)]
30277pub enum MuxedAccount {
30278 Ed25519(Uint256),
30279 MuxedEd25519(MuxedAccountMed25519),
30280}
30281
30282#[cfg(feature = "alloc")]
30283impl Default for MuxedAccount {
30284 fn default() -> Self {
30285 Self::Ed25519(Uint256::default())
30286 }
30287}
30288
30289impl MuxedAccount {
30290 pub const VARIANTS: [CryptoKeyType; 2] = [CryptoKeyType::Ed25519, CryptoKeyType::MuxedEd25519];
30291 pub const VARIANTS_STR: [&'static str; 2] = ["Ed25519", "MuxedEd25519"];
30292
30293 #[must_use]
30294 pub const fn name(&self) -> &'static str {
30295 match self {
30296 Self::Ed25519(_) => "Ed25519",
30297 Self::MuxedEd25519(_) => "MuxedEd25519",
30298 }
30299 }
30300
30301 #[must_use]
30302 pub const fn discriminant(&self) -> CryptoKeyType {
30303 #[allow(clippy::match_same_arms)]
30304 match self {
30305 Self::Ed25519(_) => CryptoKeyType::Ed25519,
30306 Self::MuxedEd25519(_) => CryptoKeyType::MuxedEd25519,
30307 }
30308 }
30309
30310 #[must_use]
30311 pub const fn variants() -> [CryptoKeyType; 2] {
30312 Self::VARIANTS
30313 }
30314}
30315
30316impl Name for MuxedAccount {
30317 #[must_use]
30318 fn name(&self) -> &'static str {
30319 Self::name(self)
30320 }
30321}
30322
30323impl Discriminant<CryptoKeyType> for MuxedAccount {
30324 #[must_use]
30325 fn discriminant(&self) -> CryptoKeyType {
30326 Self::discriminant(self)
30327 }
30328}
30329
30330impl Variants<CryptoKeyType> for MuxedAccount {
30331 fn variants() -> slice::Iter<'static, CryptoKeyType> {
30332 Self::VARIANTS.iter()
30333 }
30334}
30335
30336impl Union<CryptoKeyType> for MuxedAccount {}
30337
30338impl ReadXdr for MuxedAccount {
30339 #[cfg(feature = "std")]
30340 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30341 r.with_limited_depth(|r| {
30342 let dv: CryptoKeyType = <CryptoKeyType as ReadXdr>::read_xdr(r)?;
30343 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
30344 let v = match dv {
30345 CryptoKeyType::Ed25519 => Self::Ed25519(Uint256::read_xdr(r)?),
30346 CryptoKeyType::MuxedEd25519 => {
30347 Self::MuxedEd25519(MuxedAccountMed25519::read_xdr(r)?)
30348 }
30349 #[allow(unreachable_patterns)]
30350 _ => return Err(Error::Invalid),
30351 };
30352 Ok(v)
30353 })
30354 }
30355}
30356
30357impl WriteXdr for MuxedAccount {
30358 #[cfg(feature = "std")]
30359 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30360 w.with_limited_depth(|w| {
30361 self.discriminant().write_xdr(w)?;
30362 #[allow(clippy::match_same_arms)]
30363 match self {
30364 Self::Ed25519(v) => v.write_xdr(w)?,
30365 Self::MuxedEd25519(v) => v.write_xdr(w)?,
30366 };
30367 Ok(())
30368 })
30369 }
30370}
30371
30372#[cfg_attr(feature = "alloc", derive(Default))]
30383#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30384#[cfg_eval::cfg_eval]
30385#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30386#[cfg_attr(
30387 all(feature = "serde", feature = "alloc"),
30388 serde_with::serde_as,
30389 derive(serde::Serialize, serde::Deserialize),
30390 serde(rename_all = "snake_case")
30391)]
30392#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30393pub struct DecoratedSignature {
30394 pub hint: SignatureHint,
30395 pub signature: Signature,
30396}
30397
30398impl ReadXdr for DecoratedSignature {
30399 #[cfg(feature = "std")]
30400 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30401 r.with_limited_depth(|r| {
30402 Ok(Self {
30403 hint: SignatureHint::read_xdr(r)?,
30404 signature: Signature::read_xdr(r)?,
30405 })
30406 })
30407 }
30408}
30409
30410impl WriteXdr for DecoratedSignature {
30411 #[cfg(feature = "std")]
30412 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30413 w.with_limited_depth(|w| {
30414 self.hint.write_xdr(w)?;
30415 self.signature.write_xdr(w)?;
30416 Ok(())
30417 })
30418 }
30419}
30420
30421#[cfg_attr(feature = "alloc", derive(Default))]
30458#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30459#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30460#[cfg_attr(
30461 all(feature = "serde", feature = "alloc"),
30462 derive(serde::Serialize, serde::Deserialize),
30463 serde(rename_all = "snake_case")
30464)]
30465#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30466#[repr(i32)]
30467pub enum OperationType {
30468 #[cfg_attr(feature = "alloc", default)]
30469 CreateAccount = 0,
30470 Payment = 1,
30471 PathPaymentStrictReceive = 2,
30472 ManageSellOffer = 3,
30473 CreatePassiveSellOffer = 4,
30474 SetOptions = 5,
30475 ChangeTrust = 6,
30476 AllowTrust = 7,
30477 AccountMerge = 8,
30478 Inflation = 9,
30479 ManageData = 10,
30480 BumpSequence = 11,
30481 ManageBuyOffer = 12,
30482 PathPaymentStrictSend = 13,
30483 CreateClaimableBalance = 14,
30484 ClaimClaimableBalance = 15,
30485 BeginSponsoringFutureReserves = 16,
30486 EndSponsoringFutureReserves = 17,
30487 RevokeSponsorship = 18,
30488 Clawback = 19,
30489 ClawbackClaimableBalance = 20,
30490 SetTrustLineFlags = 21,
30491 LiquidityPoolDeposit = 22,
30492 LiquidityPoolWithdraw = 23,
30493 InvokeHostFunction = 24,
30494 ExtendFootprintTtl = 25,
30495 RestoreFootprint = 26,
30496}
30497
30498impl OperationType {
30499 pub const VARIANTS: [OperationType; 27] = [
30500 OperationType::CreateAccount,
30501 OperationType::Payment,
30502 OperationType::PathPaymentStrictReceive,
30503 OperationType::ManageSellOffer,
30504 OperationType::CreatePassiveSellOffer,
30505 OperationType::SetOptions,
30506 OperationType::ChangeTrust,
30507 OperationType::AllowTrust,
30508 OperationType::AccountMerge,
30509 OperationType::Inflation,
30510 OperationType::ManageData,
30511 OperationType::BumpSequence,
30512 OperationType::ManageBuyOffer,
30513 OperationType::PathPaymentStrictSend,
30514 OperationType::CreateClaimableBalance,
30515 OperationType::ClaimClaimableBalance,
30516 OperationType::BeginSponsoringFutureReserves,
30517 OperationType::EndSponsoringFutureReserves,
30518 OperationType::RevokeSponsorship,
30519 OperationType::Clawback,
30520 OperationType::ClawbackClaimableBalance,
30521 OperationType::SetTrustLineFlags,
30522 OperationType::LiquidityPoolDeposit,
30523 OperationType::LiquidityPoolWithdraw,
30524 OperationType::InvokeHostFunction,
30525 OperationType::ExtendFootprintTtl,
30526 OperationType::RestoreFootprint,
30527 ];
30528 pub const VARIANTS_STR: [&'static str; 27] = [
30529 "CreateAccount",
30530 "Payment",
30531 "PathPaymentStrictReceive",
30532 "ManageSellOffer",
30533 "CreatePassiveSellOffer",
30534 "SetOptions",
30535 "ChangeTrust",
30536 "AllowTrust",
30537 "AccountMerge",
30538 "Inflation",
30539 "ManageData",
30540 "BumpSequence",
30541 "ManageBuyOffer",
30542 "PathPaymentStrictSend",
30543 "CreateClaimableBalance",
30544 "ClaimClaimableBalance",
30545 "BeginSponsoringFutureReserves",
30546 "EndSponsoringFutureReserves",
30547 "RevokeSponsorship",
30548 "Clawback",
30549 "ClawbackClaimableBalance",
30550 "SetTrustLineFlags",
30551 "LiquidityPoolDeposit",
30552 "LiquidityPoolWithdraw",
30553 "InvokeHostFunction",
30554 "ExtendFootprintTtl",
30555 "RestoreFootprint",
30556 ];
30557
30558 #[must_use]
30559 pub const fn name(&self) -> &'static str {
30560 match self {
30561 Self::CreateAccount => "CreateAccount",
30562 Self::Payment => "Payment",
30563 Self::PathPaymentStrictReceive => "PathPaymentStrictReceive",
30564 Self::ManageSellOffer => "ManageSellOffer",
30565 Self::CreatePassiveSellOffer => "CreatePassiveSellOffer",
30566 Self::SetOptions => "SetOptions",
30567 Self::ChangeTrust => "ChangeTrust",
30568 Self::AllowTrust => "AllowTrust",
30569 Self::AccountMerge => "AccountMerge",
30570 Self::Inflation => "Inflation",
30571 Self::ManageData => "ManageData",
30572 Self::BumpSequence => "BumpSequence",
30573 Self::ManageBuyOffer => "ManageBuyOffer",
30574 Self::PathPaymentStrictSend => "PathPaymentStrictSend",
30575 Self::CreateClaimableBalance => "CreateClaimableBalance",
30576 Self::ClaimClaimableBalance => "ClaimClaimableBalance",
30577 Self::BeginSponsoringFutureReserves => "BeginSponsoringFutureReserves",
30578 Self::EndSponsoringFutureReserves => "EndSponsoringFutureReserves",
30579 Self::RevokeSponsorship => "RevokeSponsorship",
30580 Self::Clawback => "Clawback",
30581 Self::ClawbackClaimableBalance => "ClawbackClaimableBalance",
30582 Self::SetTrustLineFlags => "SetTrustLineFlags",
30583 Self::LiquidityPoolDeposit => "LiquidityPoolDeposit",
30584 Self::LiquidityPoolWithdraw => "LiquidityPoolWithdraw",
30585 Self::InvokeHostFunction => "InvokeHostFunction",
30586 Self::ExtendFootprintTtl => "ExtendFootprintTtl",
30587 Self::RestoreFootprint => "RestoreFootprint",
30588 }
30589 }
30590
30591 #[must_use]
30592 pub const fn variants() -> [OperationType; 27] {
30593 Self::VARIANTS
30594 }
30595}
30596
30597impl Name for OperationType {
30598 #[must_use]
30599 fn name(&self) -> &'static str {
30600 Self::name(self)
30601 }
30602}
30603
30604impl Variants<OperationType> for OperationType {
30605 fn variants() -> slice::Iter<'static, OperationType> {
30606 Self::VARIANTS.iter()
30607 }
30608}
30609
30610impl Enum for OperationType {}
30611
30612impl fmt::Display for OperationType {
30613 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
30614 f.write_str(self.name())
30615 }
30616}
30617
30618impl TryFrom<i32> for OperationType {
30619 type Error = Error;
30620
30621 fn try_from(i: i32) -> Result<Self, Error> {
30622 let e = match i {
30623 0 => OperationType::CreateAccount,
30624 1 => OperationType::Payment,
30625 2 => OperationType::PathPaymentStrictReceive,
30626 3 => OperationType::ManageSellOffer,
30627 4 => OperationType::CreatePassiveSellOffer,
30628 5 => OperationType::SetOptions,
30629 6 => OperationType::ChangeTrust,
30630 7 => OperationType::AllowTrust,
30631 8 => OperationType::AccountMerge,
30632 9 => OperationType::Inflation,
30633 10 => OperationType::ManageData,
30634 11 => OperationType::BumpSequence,
30635 12 => OperationType::ManageBuyOffer,
30636 13 => OperationType::PathPaymentStrictSend,
30637 14 => OperationType::CreateClaimableBalance,
30638 15 => OperationType::ClaimClaimableBalance,
30639 16 => OperationType::BeginSponsoringFutureReserves,
30640 17 => OperationType::EndSponsoringFutureReserves,
30641 18 => OperationType::RevokeSponsorship,
30642 19 => OperationType::Clawback,
30643 20 => OperationType::ClawbackClaimableBalance,
30644 21 => OperationType::SetTrustLineFlags,
30645 22 => OperationType::LiquidityPoolDeposit,
30646 23 => OperationType::LiquidityPoolWithdraw,
30647 24 => OperationType::InvokeHostFunction,
30648 25 => OperationType::ExtendFootprintTtl,
30649 26 => OperationType::RestoreFootprint,
30650 #[allow(unreachable_patterns)]
30651 _ => return Err(Error::Invalid),
30652 };
30653 Ok(e)
30654 }
30655}
30656
30657impl From<OperationType> for i32 {
30658 #[must_use]
30659 fn from(e: OperationType) -> Self {
30660 e as Self
30661 }
30662}
30663
30664impl ReadXdr for OperationType {
30665 #[cfg(feature = "std")]
30666 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30667 r.with_limited_depth(|r| {
30668 let e = i32::read_xdr(r)?;
30669 let v: Self = e.try_into()?;
30670 Ok(v)
30671 })
30672 }
30673}
30674
30675impl WriteXdr for OperationType {
30676 #[cfg(feature = "std")]
30677 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30678 w.with_limited_depth(|w| {
30679 let i: i32 = (*self).into();
30680 i.write_xdr(w)
30681 })
30682 }
30683}
30684
30685#[cfg_attr(feature = "alloc", derive(Default))]
30696#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30697#[cfg_eval::cfg_eval]
30698#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30699#[cfg_attr(
30700 all(feature = "serde", feature = "alloc"),
30701 serde_with::serde_as,
30702 derive(serde::Serialize, serde::Deserialize),
30703 serde(rename_all = "snake_case")
30704)]
30705#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30706pub struct CreateAccountOp {
30707 pub destination: AccountId,
30708 #[cfg_attr(
30709 all(feature = "serde", feature = "alloc"),
30710 serde_as(as = "NumberOrString")
30711 )]
30712 pub starting_balance: i64,
30713}
30714
30715impl ReadXdr for CreateAccountOp {
30716 #[cfg(feature = "std")]
30717 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30718 r.with_limited_depth(|r| {
30719 Ok(Self {
30720 destination: AccountId::read_xdr(r)?,
30721 starting_balance: i64::read_xdr(r)?,
30722 })
30723 })
30724 }
30725}
30726
30727impl WriteXdr for CreateAccountOp {
30728 #[cfg(feature = "std")]
30729 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30730 w.with_limited_depth(|w| {
30731 self.destination.write_xdr(w)?;
30732 self.starting_balance.write_xdr(w)?;
30733 Ok(())
30734 })
30735 }
30736}
30737
30738#[cfg_attr(feature = "alloc", derive(Default))]
30750#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30751#[cfg_eval::cfg_eval]
30752#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30753#[cfg_attr(
30754 all(feature = "serde", feature = "alloc"),
30755 serde_with::serde_as,
30756 derive(serde::Serialize, serde::Deserialize),
30757 serde(rename_all = "snake_case")
30758)]
30759#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30760pub struct PaymentOp {
30761 pub destination: MuxedAccount,
30762 pub asset: Asset,
30763 #[cfg_attr(
30764 all(feature = "serde", feature = "alloc"),
30765 serde_as(as = "NumberOrString")
30766 )]
30767 pub amount: i64,
30768}
30769
30770impl ReadXdr for PaymentOp {
30771 #[cfg(feature = "std")]
30772 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30773 r.with_limited_depth(|r| {
30774 Ok(Self {
30775 destination: MuxedAccount::read_xdr(r)?,
30776 asset: Asset::read_xdr(r)?,
30777 amount: i64::read_xdr(r)?,
30778 })
30779 })
30780 }
30781}
30782
30783impl WriteXdr for PaymentOp {
30784 #[cfg(feature = "std")]
30785 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30786 w.with_limited_depth(|w| {
30787 self.destination.write_xdr(w)?;
30788 self.asset.write_xdr(w)?;
30789 self.amount.write_xdr(w)?;
30790 Ok(())
30791 })
30792 }
30793}
30794
30795#[cfg_attr(feature = "alloc", derive(Default))]
30814#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30815#[cfg_eval::cfg_eval]
30816#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30817#[cfg_attr(
30818 all(feature = "serde", feature = "alloc"),
30819 serde_with::serde_as,
30820 derive(serde::Serialize, serde::Deserialize),
30821 serde(rename_all = "snake_case")
30822)]
30823#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30824pub struct PathPaymentStrictReceiveOp {
30825 pub send_asset: Asset,
30826 #[cfg_attr(
30827 all(feature = "serde", feature = "alloc"),
30828 serde_as(as = "NumberOrString")
30829 )]
30830 pub send_max: i64,
30831 pub destination: MuxedAccount,
30832 pub dest_asset: Asset,
30833 #[cfg_attr(
30834 all(feature = "serde", feature = "alloc"),
30835 serde_as(as = "NumberOrString")
30836 )]
30837 pub dest_amount: i64,
30838 pub path: VecM<Asset, 5>,
30839}
30840
30841impl ReadXdr for PathPaymentStrictReceiveOp {
30842 #[cfg(feature = "std")]
30843 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30844 r.with_limited_depth(|r| {
30845 Ok(Self {
30846 send_asset: Asset::read_xdr(r)?,
30847 send_max: i64::read_xdr(r)?,
30848 destination: MuxedAccount::read_xdr(r)?,
30849 dest_asset: Asset::read_xdr(r)?,
30850 dest_amount: i64::read_xdr(r)?,
30851 path: VecM::<Asset, 5>::read_xdr(r)?,
30852 })
30853 })
30854 }
30855}
30856
30857impl WriteXdr for PathPaymentStrictReceiveOp {
30858 #[cfg(feature = "std")]
30859 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30860 w.with_limited_depth(|w| {
30861 self.send_asset.write_xdr(w)?;
30862 self.send_max.write_xdr(w)?;
30863 self.destination.write_xdr(w)?;
30864 self.dest_asset.write_xdr(w)?;
30865 self.dest_amount.write_xdr(w)?;
30866 self.path.write_xdr(w)?;
30867 Ok(())
30868 })
30869 }
30870}
30871
30872#[cfg_attr(feature = "alloc", derive(Default))]
30891#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30892#[cfg_eval::cfg_eval]
30893#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30894#[cfg_attr(
30895 all(feature = "serde", feature = "alloc"),
30896 serde_with::serde_as,
30897 derive(serde::Serialize, serde::Deserialize),
30898 serde(rename_all = "snake_case")
30899)]
30900#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30901pub struct PathPaymentStrictSendOp {
30902 pub send_asset: Asset,
30903 #[cfg_attr(
30904 all(feature = "serde", feature = "alloc"),
30905 serde_as(as = "NumberOrString")
30906 )]
30907 pub send_amount: i64,
30908 pub destination: MuxedAccount,
30909 pub dest_asset: Asset,
30910 #[cfg_attr(
30911 all(feature = "serde", feature = "alloc"),
30912 serde_as(as = "NumberOrString")
30913 )]
30914 pub dest_min: i64,
30915 pub path: VecM<Asset, 5>,
30916}
30917
30918impl ReadXdr for PathPaymentStrictSendOp {
30919 #[cfg(feature = "std")]
30920 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30921 r.with_limited_depth(|r| {
30922 Ok(Self {
30923 send_asset: Asset::read_xdr(r)?,
30924 send_amount: i64::read_xdr(r)?,
30925 destination: MuxedAccount::read_xdr(r)?,
30926 dest_asset: Asset::read_xdr(r)?,
30927 dest_min: i64::read_xdr(r)?,
30928 path: VecM::<Asset, 5>::read_xdr(r)?,
30929 })
30930 })
30931 }
30932}
30933
30934impl WriteXdr for PathPaymentStrictSendOp {
30935 #[cfg(feature = "std")]
30936 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
30937 w.with_limited_depth(|w| {
30938 self.send_asset.write_xdr(w)?;
30939 self.send_amount.write_xdr(w)?;
30940 self.destination.write_xdr(w)?;
30941 self.dest_asset.write_xdr(w)?;
30942 self.dest_min.write_xdr(w)?;
30943 self.path.write_xdr(w)?;
30944 Ok(())
30945 })
30946 }
30947}
30948
30949#[cfg_attr(feature = "alloc", derive(Default))]
30965#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
30966#[cfg_eval::cfg_eval]
30967#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
30968#[cfg_attr(
30969 all(feature = "serde", feature = "alloc"),
30970 serde_with::serde_as,
30971 derive(serde::Serialize, serde::Deserialize),
30972 serde(rename_all = "snake_case")
30973)]
30974#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
30975pub struct ManageSellOfferOp {
30976 pub selling: Asset,
30977 pub buying: Asset,
30978 #[cfg_attr(
30979 all(feature = "serde", feature = "alloc"),
30980 serde_as(as = "NumberOrString")
30981 )]
30982 pub amount: i64,
30983 pub price: Price,
30984 #[cfg_attr(
30985 all(feature = "serde", feature = "alloc"),
30986 serde_as(as = "NumberOrString")
30987 )]
30988 pub offer_id: i64,
30989}
30990
30991impl ReadXdr for ManageSellOfferOp {
30992 #[cfg(feature = "std")]
30993 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
30994 r.with_limited_depth(|r| {
30995 Ok(Self {
30996 selling: Asset::read_xdr(r)?,
30997 buying: Asset::read_xdr(r)?,
30998 amount: i64::read_xdr(r)?,
30999 price: Price::read_xdr(r)?,
31000 offer_id: i64::read_xdr(r)?,
31001 })
31002 })
31003 }
31004}
31005
31006impl WriteXdr for ManageSellOfferOp {
31007 #[cfg(feature = "std")]
31008 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31009 w.with_limited_depth(|w| {
31010 self.selling.write_xdr(w)?;
31011 self.buying.write_xdr(w)?;
31012 self.amount.write_xdr(w)?;
31013 self.price.write_xdr(w)?;
31014 self.offer_id.write_xdr(w)?;
31015 Ok(())
31016 })
31017 }
31018}
31019
31020#[cfg_attr(feature = "alloc", derive(Default))]
31037#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31038#[cfg_eval::cfg_eval]
31039#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31040#[cfg_attr(
31041 all(feature = "serde", feature = "alloc"),
31042 serde_with::serde_as,
31043 derive(serde::Serialize, serde::Deserialize),
31044 serde(rename_all = "snake_case")
31045)]
31046#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31047pub struct ManageBuyOfferOp {
31048 pub selling: Asset,
31049 pub buying: Asset,
31050 #[cfg_attr(
31051 all(feature = "serde", feature = "alloc"),
31052 serde_as(as = "NumberOrString")
31053 )]
31054 pub buy_amount: i64,
31055 pub price: Price,
31056 #[cfg_attr(
31057 all(feature = "serde", feature = "alloc"),
31058 serde_as(as = "NumberOrString")
31059 )]
31060 pub offer_id: i64,
31061}
31062
31063impl ReadXdr for ManageBuyOfferOp {
31064 #[cfg(feature = "std")]
31065 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31066 r.with_limited_depth(|r| {
31067 Ok(Self {
31068 selling: Asset::read_xdr(r)?,
31069 buying: Asset::read_xdr(r)?,
31070 buy_amount: i64::read_xdr(r)?,
31071 price: Price::read_xdr(r)?,
31072 offer_id: i64::read_xdr(r)?,
31073 })
31074 })
31075 }
31076}
31077
31078impl WriteXdr for ManageBuyOfferOp {
31079 #[cfg(feature = "std")]
31080 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31081 w.with_limited_depth(|w| {
31082 self.selling.write_xdr(w)?;
31083 self.buying.write_xdr(w)?;
31084 self.buy_amount.write_xdr(w)?;
31085 self.price.write_xdr(w)?;
31086 self.offer_id.write_xdr(w)?;
31087 Ok(())
31088 })
31089 }
31090}
31091
31092#[cfg_attr(feature = "alloc", derive(Default))]
31105#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31106#[cfg_eval::cfg_eval]
31107#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31108#[cfg_attr(
31109 all(feature = "serde", feature = "alloc"),
31110 serde_with::serde_as,
31111 derive(serde::Serialize, serde::Deserialize),
31112 serde(rename_all = "snake_case")
31113)]
31114#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31115pub struct CreatePassiveSellOfferOp {
31116 pub selling: Asset,
31117 pub buying: Asset,
31118 #[cfg_attr(
31119 all(feature = "serde", feature = "alloc"),
31120 serde_as(as = "NumberOrString")
31121 )]
31122 pub amount: i64,
31123 pub price: Price,
31124}
31125
31126impl ReadXdr for CreatePassiveSellOfferOp {
31127 #[cfg(feature = "std")]
31128 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31129 r.with_limited_depth(|r| {
31130 Ok(Self {
31131 selling: Asset::read_xdr(r)?,
31132 buying: Asset::read_xdr(r)?,
31133 amount: i64::read_xdr(r)?,
31134 price: Price::read_xdr(r)?,
31135 })
31136 })
31137 }
31138}
31139
31140impl WriteXdr for CreatePassiveSellOfferOp {
31141 #[cfg(feature = "std")]
31142 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31143 w.with_limited_depth(|w| {
31144 self.selling.write_xdr(w)?;
31145 self.buying.write_xdr(w)?;
31146 self.amount.write_xdr(w)?;
31147 self.price.write_xdr(w)?;
31148 Ok(())
31149 })
31150 }
31151}
31152
31153#[cfg_attr(feature = "alloc", derive(Default))]
31178#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31179#[cfg_eval::cfg_eval]
31180#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31181#[cfg_attr(
31182 all(feature = "serde", feature = "alloc"),
31183 serde_with::serde_as,
31184 derive(serde::Serialize, serde::Deserialize),
31185 serde(rename_all = "snake_case")
31186)]
31187#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31188pub struct SetOptionsOp {
31189 pub inflation_dest: Option<AccountId>,
31190 pub clear_flags: Option<u32>,
31191 pub set_flags: Option<u32>,
31192 pub master_weight: Option<u32>,
31193 pub low_threshold: Option<u32>,
31194 pub med_threshold: Option<u32>,
31195 pub high_threshold: Option<u32>,
31196 pub home_domain: Option<String32>,
31197 pub signer: Option<Signer>,
31198}
31199
31200impl ReadXdr for SetOptionsOp {
31201 #[cfg(feature = "std")]
31202 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31203 r.with_limited_depth(|r| {
31204 Ok(Self {
31205 inflation_dest: Option::<AccountId>::read_xdr(r)?,
31206 clear_flags: Option::<u32>::read_xdr(r)?,
31207 set_flags: Option::<u32>::read_xdr(r)?,
31208 master_weight: Option::<u32>::read_xdr(r)?,
31209 low_threshold: Option::<u32>::read_xdr(r)?,
31210 med_threshold: Option::<u32>::read_xdr(r)?,
31211 high_threshold: Option::<u32>::read_xdr(r)?,
31212 home_domain: Option::<String32>::read_xdr(r)?,
31213 signer: Option::<Signer>::read_xdr(r)?,
31214 })
31215 })
31216 }
31217}
31218
31219impl WriteXdr for SetOptionsOp {
31220 #[cfg(feature = "std")]
31221 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31222 w.with_limited_depth(|w| {
31223 self.inflation_dest.write_xdr(w)?;
31224 self.clear_flags.write_xdr(w)?;
31225 self.set_flags.write_xdr(w)?;
31226 self.master_weight.write_xdr(w)?;
31227 self.low_threshold.write_xdr(w)?;
31228 self.med_threshold.write_xdr(w)?;
31229 self.high_threshold.write_xdr(w)?;
31230 self.home_domain.write_xdr(w)?;
31231 self.signer.write_xdr(w)?;
31232 Ok(())
31233 })
31234 }
31235}
31236
31237#[cfg_eval::cfg_eval]
31260#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31261#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31262#[cfg_attr(
31263 all(feature = "serde", feature = "alloc"),
31264 serde_with::serde_as,
31265 derive(serde::Serialize, serde::Deserialize),
31266 serde(rename_all = "snake_case")
31267)]
31268#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31269#[allow(clippy::large_enum_variant)]
31270pub enum ChangeTrustAsset {
31271 Native,
31272 CreditAlphanum4(AlphaNum4),
31273 CreditAlphanum12(AlphaNum12),
31274 PoolShare(LiquidityPoolParameters),
31275}
31276
31277#[cfg(feature = "alloc")]
31278impl Default for ChangeTrustAsset {
31279 fn default() -> Self {
31280 Self::Native
31281 }
31282}
31283
31284impl ChangeTrustAsset {
31285 pub const VARIANTS: [AssetType; 4] = [
31286 AssetType::Native,
31287 AssetType::CreditAlphanum4,
31288 AssetType::CreditAlphanum12,
31289 AssetType::PoolShare,
31290 ];
31291 pub const VARIANTS_STR: [&'static str; 4] =
31292 ["Native", "CreditAlphanum4", "CreditAlphanum12", "PoolShare"];
31293
31294 #[must_use]
31295 pub const fn name(&self) -> &'static str {
31296 match self {
31297 Self::Native => "Native",
31298 Self::CreditAlphanum4(_) => "CreditAlphanum4",
31299 Self::CreditAlphanum12(_) => "CreditAlphanum12",
31300 Self::PoolShare(_) => "PoolShare",
31301 }
31302 }
31303
31304 #[must_use]
31305 pub const fn discriminant(&self) -> AssetType {
31306 #[allow(clippy::match_same_arms)]
31307 match self {
31308 Self::Native => AssetType::Native,
31309 Self::CreditAlphanum4(_) => AssetType::CreditAlphanum4,
31310 Self::CreditAlphanum12(_) => AssetType::CreditAlphanum12,
31311 Self::PoolShare(_) => AssetType::PoolShare,
31312 }
31313 }
31314
31315 #[must_use]
31316 pub const fn variants() -> [AssetType; 4] {
31317 Self::VARIANTS
31318 }
31319}
31320
31321impl Name for ChangeTrustAsset {
31322 #[must_use]
31323 fn name(&self) -> &'static str {
31324 Self::name(self)
31325 }
31326}
31327
31328impl Discriminant<AssetType> for ChangeTrustAsset {
31329 #[must_use]
31330 fn discriminant(&self) -> AssetType {
31331 Self::discriminant(self)
31332 }
31333}
31334
31335impl Variants<AssetType> for ChangeTrustAsset {
31336 fn variants() -> slice::Iter<'static, AssetType> {
31337 Self::VARIANTS.iter()
31338 }
31339}
31340
31341impl Union<AssetType> for ChangeTrustAsset {}
31342
31343impl ReadXdr for ChangeTrustAsset {
31344 #[cfg(feature = "std")]
31345 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31346 r.with_limited_depth(|r| {
31347 let dv: AssetType = <AssetType as ReadXdr>::read_xdr(r)?;
31348 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
31349 let v = match dv {
31350 AssetType::Native => Self::Native,
31351 AssetType::CreditAlphanum4 => Self::CreditAlphanum4(AlphaNum4::read_xdr(r)?),
31352 AssetType::CreditAlphanum12 => Self::CreditAlphanum12(AlphaNum12::read_xdr(r)?),
31353 AssetType::PoolShare => Self::PoolShare(LiquidityPoolParameters::read_xdr(r)?),
31354 #[allow(unreachable_patterns)]
31355 _ => return Err(Error::Invalid),
31356 };
31357 Ok(v)
31358 })
31359 }
31360}
31361
31362impl WriteXdr for ChangeTrustAsset {
31363 #[cfg(feature = "std")]
31364 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31365 w.with_limited_depth(|w| {
31366 self.discriminant().write_xdr(w)?;
31367 #[allow(clippy::match_same_arms)]
31368 match self {
31369 Self::Native => ().write_xdr(w)?,
31370 Self::CreditAlphanum4(v) => v.write_xdr(w)?,
31371 Self::CreditAlphanum12(v) => v.write_xdr(w)?,
31372 Self::PoolShare(v) => v.write_xdr(w)?,
31373 };
31374 Ok(())
31375 })
31376 }
31377}
31378
31379#[cfg_attr(feature = "alloc", derive(Default))]
31392#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31393#[cfg_eval::cfg_eval]
31394#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31395#[cfg_attr(
31396 all(feature = "serde", feature = "alloc"),
31397 serde_with::serde_as,
31398 derive(serde::Serialize, serde::Deserialize),
31399 serde(rename_all = "snake_case")
31400)]
31401#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31402pub struct ChangeTrustOp {
31403 pub line: ChangeTrustAsset,
31404 #[cfg_attr(
31405 all(feature = "serde", feature = "alloc"),
31406 serde_as(as = "NumberOrString")
31407 )]
31408 pub limit: i64,
31409}
31410
31411impl ReadXdr for ChangeTrustOp {
31412 #[cfg(feature = "std")]
31413 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31414 r.with_limited_depth(|r| {
31415 Ok(Self {
31416 line: ChangeTrustAsset::read_xdr(r)?,
31417 limit: i64::read_xdr(r)?,
31418 })
31419 })
31420 }
31421}
31422
31423impl WriteXdr for ChangeTrustOp {
31424 #[cfg(feature = "std")]
31425 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31426 w.with_limited_depth(|w| {
31427 self.line.write_xdr(w)?;
31428 self.limit.write_xdr(w)?;
31429 Ok(())
31430 })
31431 }
31432}
31433
31434#[cfg_attr(feature = "alloc", derive(Default))]
31448#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31449#[cfg_eval::cfg_eval]
31450#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31451#[cfg_attr(
31452 all(feature = "serde", feature = "alloc"),
31453 serde_with::serde_as,
31454 derive(serde::Serialize, serde::Deserialize),
31455 serde(rename_all = "snake_case")
31456)]
31457#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31458pub struct AllowTrustOp {
31459 pub trustor: AccountId,
31460 pub asset: AssetCode,
31461 pub authorize: u32,
31462}
31463
31464impl ReadXdr for AllowTrustOp {
31465 #[cfg(feature = "std")]
31466 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31467 r.with_limited_depth(|r| {
31468 Ok(Self {
31469 trustor: AccountId::read_xdr(r)?,
31470 asset: AssetCode::read_xdr(r)?,
31471 authorize: u32::read_xdr(r)?,
31472 })
31473 })
31474 }
31475}
31476
31477impl WriteXdr for AllowTrustOp {
31478 #[cfg(feature = "std")]
31479 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31480 w.with_limited_depth(|w| {
31481 self.trustor.write_xdr(w)?;
31482 self.asset.write_xdr(w)?;
31483 self.authorize.write_xdr(w)?;
31484 Ok(())
31485 })
31486 }
31487}
31488
31489#[cfg_attr(feature = "alloc", derive(Default))]
31500#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31501#[cfg_eval::cfg_eval]
31502#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31503#[cfg_attr(
31504 all(feature = "serde", feature = "alloc"),
31505 serde_with::serde_as,
31506 derive(serde::Serialize, serde::Deserialize),
31507 serde(rename_all = "snake_case")
31508)]
31509#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31510pub struct ManageDataOp {
31511 pub data_name: String64,
31512 pub data_value: Option<DataValue>,
31513}
31514
31515impl ReadXdr for ManageDataOp {
31516 #[cfg(feature = "std")]
31517 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31518 r.with_limited_depth(|r| {
31519 Ok(Self {
31520 data_name: String64::read_xdr(r)?,
31521 data_value: Option::<DataValue>::read_xdr(r)?,
31522 })
31523 })
31524 }
31525}
31526
31527impl WriteXdr for ManageDataOp {
31528 #[cfg(feature = "std")]
31529 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31530 w.with_limited_depth(|w| {
31531 self.data_name.write_xdr(w)?;
31532 self.data_value.write_xdr(w)?;
31533 Ok(())
31534 })
31535 }
31536}
31537
31538#[cfg_attr(feature = "alloc", derive(Default))]
31548#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31549#[cfg_eval::cfg_eval]
31550#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31551#[cfg_attr(
31552 all(feature = "serde", feature = "alloc"),
31553 serde_with::serde_as,
31554 derive(serde::Serialize, serde::Deserialize),
31555 serde(rename_all = "snake_case")
31556)]
31557#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31558pub struct BumpSequenceOp {
31559 pub bump_to: SequenceNumber,
31560}
31561
31562impl ReadXdr for BumpSequenceOp {
31563 #[cfg(feature = "std")]
31564 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31565 r.with_limited_depth(|r| {
31566 Ok(Self {
31567 bump_to: SequenceNumber::read_xdr(r)?,
31568 })
31569 })
31570 }
31571}
31572
31573impl WriteXdr for BumpSequenceOp {
31574 #[cfg(feature = "std")]
31575 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31576 w.with_limited_depth(|w| {
31577 self.bump_to.write_xdr(w)?;
31578 Ok(())
31579 })
31580 }
31581}
31582
31583#[cfg_attr(feature = "alloc", derive(Default))]
31595#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31596#[cfg_eval::cfg_eval]
31597#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31598#[cfg_attr(
31599 all(feature = "serde", feature = "alloc"),
31600 serde_with::serde_as,
31601 derive(serde::Serialize, serde::Deserialize),
31602 serde(rename_all = "snake_case")
31603)]
31604#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31605pub struct CreateClaimableBalanceOp {
31606 pub asset: Asset,
31607 #[cfg_attr(
31608 all(feature = "serde", feature = "alloc"),
31609 serde_as(as = "NumberOrString")
31610 )]
31611 pub amount: i64,
31612 pub claimants: VecM<Claimant, 10>,
31613}
31614
31615impl ReadXdr for CreateClaimableBalanceOp {
31616 #[cfg(feature = "std")]
31617 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31618 r.with_limited_depth(|r| {
31619 Ok(Self {
31620 asset: Asset::read_xdr(r)?,
31621 amount: i64::read_xdr(r)?,
31622 claimants: VecM::<Claimant, 10>::read_xdr(r)?,
31623 })
31624 })
31625 }
31626}
31627
31628impl WriteXdr for CreateClaimableBalanceOp {
31629 #[cfg(feature = "std")]
31630 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31631 w.with_limited_depth(|w| {
31632 self.asset.write_xdr(w)?;
31633 self.amount.write_xdr(w)?;
31634 self.claimants.write_xdr(w)?;
31635 Ok(())
31636 })
31637 }
31638}
31639
31640#[cfg_attr(feature = "alloc", derive(Default))]
31650#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31651#[cfg_eval::cfg_eval]
31652#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31653#[cfg_attr(
31654 all(feature = "serde", feature = "alloc"),
31655 serde_with::serde_as,
31656 derive(serde::Serialize, serde::Deserialize),
31657 serde(rename_all = "snake_case")
31658)]
31659#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31660pub struct ClaimClaimableBalanceOp {
31661 pub balance_id: ClaimableBalanceId,
31662}
31663
31664impl ReadXdr for ClaimClaimableBalanceOp {
31665 #[cfg(feature = "std")]
31666 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31667 r.with_limited_depth(|r| {
31668 Ok(Self {
31669 balance_id: ClaimableBalanceId::read_xdr(r)?,
31670 })
31671 })
31672 }
31673}
31674
31675impl WriteXdr for ClaimClaimableBalanceOp {
31676 #[cfg(feature = "std")]
31677 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31678 w.with_limited_depth(|w| {
31679 self.balance_id.write_xdr(w)?;
31680 Ok(())
31681 })
31682 }
31683}
31684
31685#[cfg_attr(feature = "alloc", derive(Default))]
31695#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31696#[cfg_eval::cfg_eval]
31697#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31698#[cfg_attr(
31699 all(feature = "serde", feature = "alloc"),
31700 serde_with::serde_as,
31701 derive(serde::Serialize, serde::Deserialize),
31702 serde(rename_all = "snake_case")
31703)]
31704#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31705pub struct BeginSponsoringFutureReservesOp {
31706 pub sponsored_id: AccountId,
31707}
31708
31709impl ReadXdr for BeginSponsoringFutureReservesOp {
31710 #[cfg(feature = "std")]
31711 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31712 r.with_limited_depth(|r| {
31713 Ok(Self {
31714 sponsored_id: AccountId::read_xdr(r)?,
31715 })
31716 })
31717 }
31718}
31719
31720impl WriteXdr for BeginSponsoringFutureReservesOp {
31721 #[cfg(feature = "std")]
31722 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31723 w.with_limited_depth(|w| {
31724 self.sponsored_id.write_xdr(w)?;
31725 Ok(())
31726 })
31727 }
31728}
31729
31730#[cfg_attr(feature = "alloc", derive(Default))]
31742#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31743#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31744#[cfg_attr(
31745 all(feature = "serde", feature = "alloc"),
31746 derive(serde::Serialize, serde::Deserialize),
31747 serde(rename_all = "snake_case")
31748)]
31749#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31750#[repr(i32)]
31751pub enum RevokeSponsorshipType {
31752 #[cfg_attr(feature = "alloc", default)]
31753 LedgerEntry = 0,
31754 Signer = 1,
31755}
31756
31757impl RevokeSponsorshipType {
31758 pub const VARIANTS: [RevokeSponsorshipType; 2] = [
31759 RevokeSponsorshipType::LedgerEntry,
31760 RevokeSponsorshipType::Signer,
31761 ];
31762 pub const VARIANTS_STR: [&'static str; 2] = ["LedgerEntry", "Signer"];
31763
31764 #[must_use]
31765 pub const fn name(&self) -> &'static str {
31766 match self {
31767 Self::LedgerEntry => "LedgerEntry",
31768 Self::Signer => "Signer",
31769 }
31770 }
31771
31772 #[must_use]
31773 pub const fn variants() -> [RevokeSponsorshipType; 2] {
31774 Self::VARIANTS
31775 }
31776}
31777
31778impl Name for RevokeSponsorshipType {
31779 #[must_use]
31780 fn name(&self) -> &'static str {
31781 Self::name(self)
31782 }
31783}
31784
31785impl Variants<RevokeSponsorshipType> for RevokeSponsorshipType {
31786 fn variants() -> slice::Iter<'static, RevokeSponsorshipType> {
31787 Self::VARIANTS.iter()
31788 }
31789}
31790
31791impl Enum for RevokeSponsorshipType {}
31792
31793impl fmt::Display for RevokeSponsorshipType {
31794 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31795 f.write_str(self.name())
31796 }
31797}
31798
31799impl TryFrom<i32> for RevokeSponsorshipType {
31800 type Error = Error;
31801
31802 fn try_from(i: i32) -> Result<Self, Error> {
31803 let e = match i {
31804 0 => RevokeSponsorshipType::LedgerEntry,
31805 1 => RevokeSponsorshipType::Signer,
31806 #[allow(unreachable_patterns)]
31807 _ => return Err(Error::Invalid),
31808 };
31809 Ok(e)
31810 }
31811}
31812
31813impl From<RevokeSponsorshipType> for i32 {
31814 #[must_use]
31815 fn from(e: RevokeSponsorshipType) -> Self {
31816 e as Self
31817 }
31818}
31819
31820impl ReadXdr for RevokeSponsorshipType {
31821 #[cfg(feature = "std")]
31822 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31823 r.with_limited_depth(|r| {
31824 let e = i32::read_xdr(r)?;
31825 let v: Self = e.try_into()?;
31826 Ok(v)
31827 })
31828 }
31829}
31830
31831impl WriteXdr for RevokeSponsorshipType {
31832 #[cfg(feature = "std")]
31833 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31834 w.with_limited_depth(|w| {
31835 let i: i32 = (*self).into();
31836 i.write_xdr(w)
31837 })
31838 }
31839}
31840
31841#[cfg_attr(feature = "alloc", derive(Default))]
31852#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31853#[cfg_eval::cfg_eval]
31854#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31855#[cfg_attr(
31856 all(feature = "serde", feature = "alloc"),
31857 serde_with::serde_as,
31858 derive(serde::Serialize, serde::Deserialize),
31859 serde(rename_all = "snake_case")
31860)]
31861#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31862pub struct RevokeSponsorshipOpSigner {
31863 pub account_id: AccountId,
31864 pub signer_key: SignerKey,
31865}
31866
31867impl ReadXdr for RevokeSponsorshipOpSigner {
31868 #[cfg(feature = "std")]
31869 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31870 r.with_limited_depth(|r| {
31871 Ok(Self {
31872 account_id: AccountId::read_xdr(r)?,
31873 signer_key: SignerKey::read_xdr(r)?,
31874 })
31875 })
31876 }
31877}
31878
31879impl WriteXdr for RevokeSponsorshipOpSigner {
31880 #[cfg(feature = "std")]
31881 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
31882 w.with_limited_depth(|w| {
31883 self.account_id.write_xdr(w)?;
31884 self.signer_key.write_xdr(w)?;
31885 Ok(())
31886 })
31887 }
31888}
31889
31890#[cfg_eval::cfg_eval]
31908#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
31909#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
31910#[cfg_attr(
31911 all(feature = "serde", feature = "alloc"),
31912 serde_with::serde_as,
31913 derive(serde::Serialize, serde::Deserialize),
31914 serde(rename_all = "snake_case")
31915)]
31916#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
31917#[allow(clippy::large_enum_variant)]
31918pub enum RevokeSponsorshipOp {
31919 LedgerEntry(LedgerKey),
31920 Signer(RevokeSponsorshipOpSigner),
31921}
31922
31923#[cfg(feature = "alloc")]
31924impl Default for RevokeSponsorshipOp {
31925 fn default() -> Self {
31926 Self::LedgerEntry(LedgerKey::default())
31927 }
31928}
31929
31930impl RevokeSponsorshipOp {
31931 pub const VARIANTS: [RevokeSponsorshipType; 2] = [
31932 RevokeSponsorshipType::LedgerEntry,
31933 RevokeSponsorshipType::Signer,
31934 ];
31935 pub const VARIANTS_STR: [&'static str; 2] = ["LedgerEntry", "Signer"];
31936
31937 #[must_use]
31938 pub const fn name(&self) -> &'static str {
31939 match self {
31940 Self::LedgerEntry(_) => "LedgerEntry",
31941 Self::Signer(_) => "Signer",
31942 }
31943 }
31944
31945 #[must_use]
31946 pub const fn discriminant(&self) -> RevokeSponsorshipType {
31947 #[allow(clippy::match_same_arms)]
31948 match self {
31949 Self::LedgerEntry(_) => RevokeSponsorshipType::LedgerEntry,
31950 Self::Signer(_) => RevokeSponsorshipType::Signer,
31951 }
31952 }
31953
31954 #[must_use]
31955 pub const fn variants() -> [RevokeSponsorshipType; 2] {
31956 Self::VARIANTS
31957 }
31958}
31959
31960impl Name for RevokeSponsorshipOp {
31961 #[must_use]
31962 fn name(&self) -> &'static str {
31963 Self::name(self)
31964 }
31965}
31966
31967impl Discriminant<RevokeSponsorshipType> for RevokeSponsorshipOp {
31968 #[must_use]
31969 fn discriminant(&self) -> RevokeSponsorshipType {
31970 Self::discriminant(self)
31971 }
31972}
31973
31974impl Variants<RevokeSponsorshipType> for RevokeSponsorshipOp {
31975 fn variants() -> slice::Iter<'static, RevokeSponsorshipType> {
31976 Self::VARIANTS.iter()
31977 }
31978}
31979
31980impl Union<RevokeSponsorshipType> for RevokeSponsorshipOp {}
31981
31982impl ReadXdr for RevokeSponsorshipOp {
31983 #[cfg(feature = "std")]
31984 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
31985 r.with_limited_depth(|r| {
31986 let dv: RevokeSponsorshipType = <RevokeSponsorshipType as ReadXdr>::read_xdr(r)?;
31987 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
31988 let v = match dv {
31989 RevokeSponsorshipType::LedgerEntry => Self::LedgerEntry(LedgerKey::read_xdr(r)?),
31990 RevokeSponsorshipType::Signer => {
31991 Self::Signer(RevokeSponsorshipOpSigner::read_xdr(r)?)
31992 }
31993 #[allow(unreachable_patterns)]
31994 _ => return Err(Error::Invalid),
31995 };
31996 Ok(v)
31997 })
31998 }
31999}
32000
32001impl WriteXdr for RevokeSponsorshipOp {
32002 #[cfg(feature = "std")]
32003 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32004 w.with_limited_depth(|w| {
32005 self.discriminant().write_xdr(w)?;
32006 #[allow(clippy::match_same_arms)]
32007 match self {
32008 Self::LedgerEntry(v) => v.write_xdr(w)?,
32009 Self::Signer(v) => v.write_xdr(w)?,
32010 };
32011 Ok(())
32012 })
32013 }
32014}
32015
32016#[cfg_attr(feature = "alloc", derive(Default))]
32028#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32029#[cfg_eval::cfg_eval]
32030#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32031#[cfg_attr(
32032 all(feature = "serde", feature = "alloc"),
32033 serde_with::serde_as,
32034 derive(serde::Serialize, serde::Deserialize),
32035 serde(rename_all = "snake_case")
32036)]
32037#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32038pub struct ClawbackOp {
32039 pub asset: Asset,
32040 pub from: MuxedAccount,
32041 #[cfg_attr(
32042 all(feature = "serde", feature = "alloc"),
32043 serde_as(as = "NumberOrString")
32044 )]
32045 pub amount: i64,
32046}
32047
32048impl ReadXdr for ClawbackOp {
32049 #[cfg(feature = "std")]
32050 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32051 r.with_limited_depth(|r| {
32052 Ok(Self {
32053 asset: Asset::read_xdr(r)?,
32054 from: MuxedAccount::read_xdr(r)?,
32055 amount: i64::read_xdr(r)?,
32056 })
32057 })
32058 }
32059}
32060
32061impl WriteXdr for ClawbackOp {
32062 #[cfg(feature = "std")]
32063 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32064 w.with_limited_depth(|w| {
32065 self.asset.write_xdr(w)?;
32066 self.from.write_xdr(w)?;
32067 self.amount.write_xdr(w)?;
32068 Ok(())
32069 })
32070 }
32071}
32072
32073#[cfg_attr(feature = "alloc", derive(Default))]
32083#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32084#[cfg_eval::cfg_eval]
32085#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32086#[cfg_attr(
32087 all(feature = "serde", feature = "alloc"),
32088 serde_with::serde_as,
32089 derive(serde::Serialize, serde::Deserialize),
32090 serde(rename_all = "snake_case")
32091)]
32092#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32093pub struct ClawbackClaimableBalanceOp {
32094 pub balance_id: ClaimableBalanceId,
32095}
32096
32097impl ReadXdr for ClawbackClaimableBalanceOp {
32098 #[cfg(feature = "std")]
32099 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32100 r.with_limited_depth(|r| {
32101 Ok(Self {
32102 balance_id: ClaimableBalanceId::read_xdr(r)?,
32103 })
32104 })
32105 }
32106}
32107
32108impl WriteXdr for ClawbackClaimableBalanceOp {
32109 #[cfg(feature = "std")]
32110 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32111 w.with_limited_depth(|w| {
32112 self.balance_id.write_xdr(w)?;
32113 Ok(())
32114 })
32115 }
32116}
32117
32118#[cfg_attr(feature = "alloc", derive(Default))]
32132#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32133#[cfg_eval::cfg_eval]
32134#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32135#[cfg_attr(
32136 all(feature = "serde", feature = "alloc"),
32137 serde_with::serde_as,
32138 derive(serde::Serialize, serde::Deserialize),
32139 serde(rename_all = "snake_case")
32140)]
32141#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32142pub struct SetTrustLineFlagsOp {
32143 pub trustor: AccountId,
32144 pub asset: Asset,
32145 pub clear_flags: u32,
32146 pub set_flags: u32,
32147}
32148
32149impl ReadXdr for SetTrustLineFlagsOp {
32150 #[cfg(feature = "std")]
32151 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32152 r.with_limited_depth(|r| {
32153 Ok(Self {
32154 trustor: AccountId::read_xdr(r)?,
32155 asset: Asset::read_xdr(r)?,
32156 clear_flags: u32::read_xdr(r)?,
32157 set_flags: u32::read_xdr(r)?,
32158 })
32159 })
32160 }
32161}
32162
32163impl WriteXdr for SetTrustLineFlagsOp {
32164 #[cfg(feature = "std")]
32165 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32166 w.with_limited_depth(|w| {
32167 self.trustor.write_xdr(w)?;
32168 self.asset.write_xdr(w)?;
32169 self.clear_flags.write_xdr(w)?;
32170 self.set_flags.write_xdr(w)?;
32171 Ok(())
32172 })
32173 }
32174}
32175
32176pub const LIQUIDITY_POOL_FEE_V18: u64 = 30;
32183
32184#[cfg_attr(feature = "alloc", derive(Default))]
32198#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32199#[cfg_eval::cfg_eval]
32200#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32201#[cfg_attr(
32202 all(feature = "serde", feature = "alloc"),
32203 serde_with::serde_as,
32204 derive(serde::Serialize, serde::Deserialize),
32205 serde(rename_all = "snake_case")
32206)]
32207#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32208pub struct LiquidityPoolDepositOp {
32209 pub liquidity_pool_id: PoolId,
32210 #[cfg_attr(
32211 all(feature = "serde", feature = "alloc"),
32212 serde_as(as = "NumberOrString")
32213 )]
32214 pub max_amount_a: i64,
32215 #[cfg_attr(
32216 all(feature = "serde", feature = "alloc"),
32217 serde_as(as = "NumberOrString")
32218 )]
32219 pub max_amount_b: i64,
32220 pub min_price: Price,
32221 pub max_price: Price,
32222}
32223
32224impl ReadXdr for LiquidityPoolDepositOp {
32225 #[cfg(feature = "std")]
32226 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32227 r.with_limited_depth(|r| {
32228 Ok(Self {
32229 liquidity_pool_id: PoolId::read_xdr(r)?,
32230 max_amount_a: i64::read_xdr(r)?,
32231 max_amount_b: i64::read_xdr(r)?,
32232 min_price: Price::read_xdr(r)?,
32233 max_price: Price::read_xdr(r)?,
32234 })
32235 })
32236 }
32237}
32238
32239impl WriteXdr for LiquidityPoolDepositOp {
32240 #[cfg(feature = "std")]
32241 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32242 w.with_limited_depth(|w| {
32243 self.liquidity_pool_id.write_xdr(w)?;
32244 self.max_amount_a.write_xdr(w)?;
32245 self.max_amount_b.write_xdr(w)?;
32246 self.min_price.write_xdr(w)?;
32247 self.max_price.write_xdr(w)?;
32248 Ok(())
32249 })
32250 }
32251}
32252
32253#[cfg_attr(feature = "alloc", derive(Default))]
32266#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32267#[cfg_eval::cfg_eval]
32268#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32269#[cfg_attr(
32270 all(feature = "serde", feature = "alloc"),
32271 serde_with::serde_as,
32272 derive(serde::Serialize, serde::Deserialize),
32273 serde(rename_all = "snake_case")
32274)]
32275#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32276pub struct LiquidityPoolWithdrawOp {
32277 pub liquidity_pool_id: PoolId,
32278 #[cfg_attr(
32279 all(feature = "serde", feature = "alloc"),
32280 serde_as(as = "NumberOrString")
32281 )]
32282 pub amount: i64,
32283 #[cfg_attr(
32284 all(feature = "serde", feature = "alloc"),
32285 serde_as(as = "NumberOrString")
32286 )]
32287 pub min_amount_a: i64,
32288 #[cfg_attr(
32289 all(feature = "serde", feature = "alloc"),
32290 serde_as(as = "NumberOrString")
32291 )]
32292 pub min_amount_b: i64,
32293}
32294
32295impl ReadXdr for LiquidityPoolWithdrawOp {
32296 #[cfg(feature = "std")]
32297 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32298 r.with_limited_depth(|r| {
32299 Ok(Self {
32300 liquidity_pool_id: PoolId::read_xdr(r)?,
32301 amount: i64::read_xdr(r)?,
32302 min_amount_a: i64::read_xdr(r)?,
32303 min_amount_b: i64::read_xdr(r)?,
32304 })
32305 })
32306 }
32307}
32308
32309impl WriteXdr for LiquidityPoolWithdrawOp {
32310 #[cfg(feature = "std")]
32311 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32312 w.with_limited_depth(|w| {
32313 self.liquidity_pool_id.write_xdr(w)?;
32314 self.amount.write_xdr(w)?;
32315 self.min_amount_a.write_xdr(w)?;
32316 self.min_amount_b.write_xdr(w)?;
32317 Ok(())
32318 })
32319 }
32320}
32321
32322#[cfg_attr(feature = "alloc", derive(Default))]
32336#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32337#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32338#[cfg_attr(
32339 all(feature = "serde", feature = "alloc"),
32340 derive(serde::Serialize, serde::Deserialize),
32341 serde(rename_all = "snake_case")
32342)]
32343#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32344#[repr(i32)]
32345pub enum HostFunctionType {
32346 #[cfg_attr(feature = "alloc", default)]
32347 InvokeContract = 0,
32348 CreateContract = 1,
32349 UploadContractWasm = 2,
32350 CreateContractV2 = 3,
32351}
32352
32353impl HostFunctionType {
32354 pub const VARIANTS: [HostFunctionType; 4] = [
32355 HostFunctionType::InvokeContract,
32356 HostFunctionType::CreateContract,
32357 HostFunctionType::UploadContractWasm,
32358 HostFunctionType::CreateContractV2,
32359 ];
32360 pub const VARIANTS_STR: [&'static str; 4] = [
32361 "InvokeContract",
32362 "CreateContract",
32363 "UploadContractWasm",
32364 "CreateContractV2",
32365 ];
32366
32367 #[must_use]
32368 pub const fn name(&self) -> &'static str {
32369 match self {
32370 Self::InvokeContract => "InvokeContract",
32371 Self::CreateContract => "CreateContract",
32372 Self::UploadContractWasm => "UploadContractWasm",
32373 Self::CreateContractV2 => "CreateContractV2",
32374 }
32375 }
32376
32377 #[must_use]
32378 pub const fn variants() -> [HostFunctionType; 4] {
32379 Self::VARIANTS
32380 }
32381}
32382
32383impl Name for HostFunctionType {
32384 #[must_use]
32385 fn name(&self) -> &'static str {
32386 Self::name(self)
32387 }
32388}
32389
32390impl Variants<HostFunctionType> for HostFunctionType {
32391 fn variants() -> slice::Iter<'static, HostFunctionType> {
32392 Self::VARIANTS.iter()
32393 }
32394}
32395
32396impl Enum for HostFunctionType {}
32397
32398impl fmt::Display for HostFunctionType {
32399 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32400 f.write_str(self.name())
32401 }
32402}
32403
32404impl TryFrom<i32> for HostFunctionType {
32405 type Error = Error;
32406
32407 fn try_from(i: i32) -> Result<Self, Error> {
32408 let e = match i {
32409 0 => HostFunctionType::InvokeContract,
32410 1 => HostFunctionType::CreateContract,
32411 2 => HostFunctionType::UploadContractWasm,
32412 3 => HostFunctionType::CreateContractV2,
32413 #[allow(unreachable_patterns)]
32414 _ => return Err(Error::Invalid),
32415 };
32416 Ok(e)
32417 }
32418}
32419
32420impl From<HostFunctionType> for i32 {
32421 #[must_use]
32422 fn from(e: HostFunctionType) -> Self {
32423 e as Self
32424 }
32425}
32426
32427impl ReadXdr for HostFunctionType {
32428 #[cfg(feature = "std")]
32429 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32430 r.with_limited_depth(|r| {
32431 let e = i32::read_xdr(r)?;
32432 let v: Self = e.try_into()?;
32433 Ok(v)
32434 })
32435 }
32436}
32437
32438impl WriteXdr for HostFunctionType {
32439 #[cfg(feature = "std")]
32440 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32441 w.with_limited_depth(|w| {
32442 let i: i32 = (*self).into();
32443 i.write_xdr(w)
32444 })
32445 }
32446}
32447
32448#[cfg_attr(feature = "alloc", derive(Default))]
32460#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32461#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32462#[cfg_attr(
32463 all(feature = "serde", feature = "alloc"),
32464 derive(serde::Serialize, serde::Deserialize),
32465 serde(rename_all = "snake_case")
32466)]
32467#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32468#[repr(i32)]
32469pub enum ContractIdPreimageType {
32470 #[cfg_attr(feature = "alloc", default)]
32471 Address = 0,
32472 Asset = 1,
32473}
32474
32475impl ContractIdPreimageType {
32476 pub const VARIANTS: [ContractIdPreimageType; 2] = [
32477 ContractIdPreimageType::Address,
32478 ContractIdPreimageType::Asset,
32479 ];
32480 pub const VARIANTS_STR: [&'static str; 2] = ["Address", "Asset"];
32481
32482 #[must_use]
32483 pub const fn name(&self) -> &'static str {
32484 match self {
32485 Self::Address => "Address",
32486 Self::Asset => "Asset",
32487 }
32488 }
32489
32490 #[must_use]
32491 pub const fn variants() -> [ContractIdPreimageType; 2] {
32492 Self::VARIANTS
32493 }
32494}
32495
32496impl Name for ContractIdPreimageType {
32497 #[must_use]
32498 fn name(&self) -> &'static str {
32499 Self::name(self)
32500 }
32501}
32502
32503impl Variants<ContractIdPreimageType> for ContractIdPreimageType {
32504 fn variants() -> slice::Iter<'static, ContractIdPreimageType> {
32505 Self::VARIANTS.iter()
32506 }
32507}
32508
32509impl Enum for ContractIdPreimageType {}
32510
32511impl fmt::Display for ContractIdPreimageType {
32512 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32513 f.write_str(self.name())
32514 }
32515}
32516
32517impl TryFrom<i32> for ContractIdPreimageType {
32518 type Error = Error;
32519
32520 fn try_from(i: i32) -> Result<Self, Error> {
32521 let e = match i {
32522 0 => ContractIdPreimageType::Address,
32523 1 => ContractIdPreimageType::Asset,
32524 #[allow(unreachable_patterns)]
32525 _ => return Err(Error::Invalid),
32526 };
32527 Ok(e)
32528 }
32529}
32530
32531impl From<ContractIdPreimageType> for i32 {
32532 #[must_use]
32533 fn from(e: ContractIdPreimageType) -> Self {
32534 e as Self
32535 }
32536}
32537
32538impl ReadXdr for ContractIdPreimageType {
32539 #[cfg(feature = "std")]
32540 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32541 r.with_limited_depth(|r| {
32542 let e = i32::read_xdr(r)?;
32543 let v: Self = e.try_into()?;
32544 Ok(v)
32545 })
32546 }
32547}
32548
32549impl WriteXdr for ContractIdPreimageType {
32550 #[cfg(feature = "std")]
32551 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32552 w.with_limited_depth(|w| {
32553 let i: i32 = (*self).into();
32554 i.write_xdr(w)
32555 })
32556 }
32557}
32558
32559#[cfg_attr(feature = "alloc", derive(Default))]
32570#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32571#[cfg_eval::cfg_eval]
32572#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32573#[cfg_attr(
32574 all(feature = "serde", feature = "alloc"),
32575 serde_with::serde_as,
32576 derive(serde::Serialize, serde::Deserialize),
32577 serde(rename_all = "snake_case")
32578)]
32579#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32580pub struct ContractIdPreimageFromAddress {
32581 pub address: ScAddress,
32582 pub salt: Uint256,
32583}
32584
32585impl ReadXdr for ContractIdPreimageFromAddress {
32586 #[cfg(feature = "std")]
32587 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32588 r.with_limited_depth(|r| {
32589 Ok(Self {
32590 address: ScAddress::read_xdr(r)?,
32591 salt: Uint256::read_xdr(r)?,
32592 })
32593 })
32594 }
32595}
32596
32597impl WriteXdr for ContractIdPreimageFromAddress {
32598 #[cfg(feature = "std")]
32599 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32600 w.with_limited_depth(|w| {
32601 self.address.write_xdr(w)?;
32602 self.salt.write_xdr(w)?;
32603 Ok(())
32604 })
32605 }
32606}
32607
32608#[cfg_eval::cfg_eval]
32626#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32627#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32628#[cfg_attr(
32629 all(feature = "serde", feature = "alloc"),
32630 serde_with::serde_as,
32631 derive(serde::Serialize, serde::Deserialize),
32632 serde(rename_all = "snake_case")
32633)]
32634#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32635#[allow(clippy::large_enum_variant)]
32636pub enum ContractIdPreimage {
32637 Address(ContractIdPreimageFromAddress),
32638 Asset(Asset),
32639}
32640
32641#[cfg(feature = "alloc")]
32642impl Default for ContractIdPreimage {
32643 fn default() -> Self {
32644 Self::Address(ContractIdPreimageFromAddress::default())
32645 }
32646}
32647
32648impl ContractIdPreimage {
32649 pub const VARIANTS: [ContractIdPreimageType; 2] = [
32650 ContractIdPreimageType::Address,
32651 ContractIdPreimageType::Asset,
32652 ];
32653 pub const VARIANTS_STR: [&'static str; 2] = ["Address", "Asset"];
32654
32655 #[must_use]
32656 pub const fn name(&self) -> &'static str {
32657 match self {
32658 Self::Address(_) => "Address",
32659 Self::Asset(_) => "Asset",
32660 }
32661 }
32662
32663 #[must_use]
32664 pub const fn discriminant(&self) -> ContractIdPreimageType {
32665 #[allow(clippy::match_same_arms)]
32666 match self {
32667 Self::Address(_) => ContractIdPreimageType::Address,
32668 Self::Asset(_) => ContractIdPreimageType::Asset,
32669 }
32670 }
32671
32672 #[must_use]
32673 pub const fn variants() -> [ContractIdPreimageType; 2] {
32674 Self::VARIANTS
32675 }
32676}
32677
32678impl Name for ContractIdPreimage {
32679 #[must_use]
32680 fn name(&self) -> &'static str {
32681 Self::name(self)
32682 }
32683}
32684
32685impl Discriminant<ContractIdPreimageType> for ContractIdPreimage {
32686 #[must_use]
32687 fn discriminant(&self) -> ContractIdPreimageType {
32688 Self::discriminant(self)
32689 }
32690}
32691
32692impl Variants<ContractIdPreimageType> for ContractIdPreimage {
32693 fn variants() -> slice::Iter<'static, ContractIdPreimageType> {
32694 Self::VARIANTS.iter()
32695 }
32696}
32697
32698impl Union<ContractIdPreimageType> for ContractIdPreimage {}
32699
32700impl ReadXdr for ContractIdPreimage {
32701 #[cfg(feature = "std")]
32702 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32703 r.with_limited_depth(|r| {
32704 let dv: ContractIdPreimageType = <ContractIdPreimageType as ReadXdr>::read_xdr(r)?;
32705 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
32706 let v = match dv {
32707 ContractIdPreimageType::Address => {
32708 Self::Address(ContractIdPreimageFromAddress::read_xdr(r)?)
32709 }
32710 ContractIdPreimageType::Asset => Self::Asset(Asset::read_xdr(r)?),
32711 #[allow(unreachable_patterns)]
32712 _ => return Err(Error::Invalid),
32713 };
32714 Ok(v)
32715 })
32716 }
32717}
32718
32719impl WriteXdr for ContractIdPreimage {
32720 #[cfg(feature = "std")]
32721 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32722 w.with_limited_depth(|w| {
32723 self.discriminant().write_xdr(w)?;
32724 #[allow(clippy::match_same_arms)]
32725 match self {
32726 Self::Address(v) => v.write_xdr(w)?,
32727 Self::Asset(v) => v.write_xdr(w)?,
32728 };
32729 Ok(())
32730 })
32731 }
32732}
32733
32734#[cfg_attr(feature = "alloc", derive(Default))]
32745#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32746#[cfg_eval::cfg_eval]
32747#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32748#[cfg_attr(
32749 all(feature = "serde", feature = "alloc"),
32750 serde_with::serde_as,
32751 derive(serde::Serialize, serde::Deserialize),
32752 serde(rename_all = "snake_case")
32753)]
32754#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32755pub struct CreateContractArgs {
32756 pub contract_id_preimage: ContractIdPreimage,
32757 pub executable: ContractExecutable,
32758}
32759
32760impl ReadXdr for CreateContractArgs {
32761 #[cfg(feature = "std")]
32762 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32763 r.with_limited_depth(|r| {
32764 Ok(Self {
32765 contract_id_preimage: ContractIdPreimage::read_xdr(r)?,
32766 executable: ContractExecutable::read_xdr(r)?,
32767 })
32768 })
32769 }
32770}
32771
32772impl WriteXdr for CreateContractArgs {
32773 #[cfg(feature = "std")]
32774 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32775 w.with_limited_depth(|w| {
32776 self.contract_id_preimage.write_xdr(w)?;
32777 self.executable.write_xdr(w)?;
32778 Ok(())
32779 })
32780 }
32781}
32782
32783#[cfg_attr(feature = "alloc", derive(Default))]
32796#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32797#[cfg_eval::cfg_eval]
32798#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32799#[cfg_attr(
32800 all(feature = "serde", feature = "alloc"),
32801 serde_with::serde_as,
32802 derive(serde::Serialize, serde::Deserialize),
32803 serde(rename_all = "snake_case")
32804)]
32805#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32806pub struct CreateContractArgsV2 {
32807 pub contract_id_preimage: ContractIdPreimage,
32808 pub executable: ContractExecutable,
32809 pub constructor_args: VecM<ScVal>,
32810}
32811
32812impl ReadXdr for CreateContractArgsV2 {
32813 #[cfg(feature = "std")]
32814 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32815 r.with_limited_depth(|r| {
32816 Ok(Self {
32817 contract_id_preimage: ContractIdPreimage::read_xdr(r)?,
32818 executable: ContractExecutable::read_xdr(r)?,
32819 constructor_args: VecM::<ScVal>::read_xdr(r)?,
32820 })
32821 })
32822 }
32823}
32824
32825impl WriteXdr for CreateContractArgsV2 {
32826 #[cfg(feature = "std")]
32827 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32828 w.with_limited_depth(|w| {
32829 self.contract_id_preimage.write_xdr(w)?;
32830 self.executable.write_xdr(w)?;
32831 self.constructor_args.write_xdr(w)?;
32832 Ok(())
32833 })
32834 }
32835}
32836
32837#[cfg_attr(feature = "alloc", derive(Default))]
32848#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32849#[cfg_eval::cfg_eval]
32850#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32851#[cfg_attr(
32852 all(feature = "serde", feature = "alloc"),
32853 serde_with::serde_as,
32854 derive(serde::Serialize, serde::Deserialize),
32855 serde(rename_all = "snake_case")
32856)]
32857#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32858pub struct InvokeContractArgs {
32859 pub contract_address: ScAddress,
32860 pub function_name: ScSymbol,
32861 pub args: VecM<ScVal>,
32862}
32863
32864impl ReadXdr for InvokeContractArgs {
32865 #[cfg(feature = "std")]
32866 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32867 r.with_limited_depth(|r| {
32868 Ok(Self {
32869 contract_address: ScAddress::read_xdr(r)?,
32870 function_name: ScSymbol::read_xdr(r)?,
32871 args: VecM::<ScVal>::read_xdr(r)?,
32872 })
32873 })
32874 }
32875}
32876
32877impl WriteXdr for InvokeContractArgs {
32878 #[cfg(feature = "std")]
32879 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
32880 w.with_limited_depth(|w| {
32881 self.contract_address.write_xdr(w)?;
32882 self.function_name.write_xdr(w)?;
32883 self.args.write_xdr(w)?;
32884 Ok(())
32885 })
32886 }
32887}
32888
32889#[cfg_eval::cfg_eval]
32907#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
32908#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
32909#[cfg_attr(
32910 all(feature = "serde", feature = "alloc"),
32911 serde_with::serde_as,
32912 derive(serde::Serialize, serde::Deserialize),
32913 serde(rename_all = "snake_case")
32914)]
32915#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
32916#[allow(clippy::large_enum_variant)]
32917pub enum HostFunction {
32918 InvokeContract(InvokeContractArgs),
32919 CreateContract(CreateContractArgs),
32920 UploadContractWasm(BytesM),
32921 CreateContractV2(CreateContractArgsV2),
32922}
32923
32924#[cfg(feature = "alloc")]
32925impl Default for HostFunction {
32926 fn default() -> Self {
32927 Self::InvokeContract(InvokeContractArgs::default())
32928 }
32929}
32930
32931impl HostFunction {
32932 pub const VARIANTS: [HostFunctionType; 4] = [
32933 HostFunctionType::InvokeContract,
32934 HostFunctionType::CreateContract,
32935 HostFunctionType::UploadContractWasm,
32936 HostFunctionType::CreateContractV2,
32937 ];
32938 pub const VARIANTS_STR: [&'static str; 4] = [
32939 "InvokeContract",
32940 "CreateContract",
32941 "UploadContractWasm",
32942 "CreateContractV2",
32943 ];
32944
32945 #[must_use]
32946 pub const fn name(&self) -> &'static str {
32947 match self {
32948 Self::InvokeContract(_) => "InvokeContract",
32949 Self::CreateContract(_) => "CreateContract",
32950 Self::UploadContractWasm(_) => "UploadContractWasm",
32951 Self::CreateContractV2(_) => "CreateContractV2",
32952 }
32953 }
32954
32955 #[must_use]
32956 pub const fn discriminant(&self) -> HostFunctionType {
32957 #[allow(clippy::match_same_arms)]
32958 match self {
32959 Self::InvokeContract(_) => HostFunctionType::InvokeContract,
32960 Self::CreateContract(_) => HostFunctionType::CreateContract,
32961 Self::UploadContractWasm(_) => HostFunctionType::UploadContractWasm,
32962 Self::CreateContractV2(_) => HostFunctionType::CreateContractV2,
32963 }
32964 }
32965
32966 #[must_use]
32967 pub const fn variants() -> [HostFunctionType; 4] {
32968 Self::VARIANTS
32969 }
32970}
32971
32972impl Name for HostFunction {
32973 #[must_use]
32974 fn name(&self) -> &'static str {
32975 Self::name(self)
32976 }
32977}
32978
32979impl Discriminant<HostFunctionType> for HostFunction {
32980 #[must_use]
32981 fn discriminant(&self) -> HostFunctionType {
32982 Self::discriminant(self)
32983 }
32984}
32985
32986impl Variants<HostFunctionType> for HostFunction {
32987 fn variants() -> slice::Iter<'static, HostFunctionType> {
32988 Self::VARIANTS.iter()
32989 }
32990}
32991
32992impl Union<HostFunctionType> for HostFunction {}
32993
32994impl ReadXdr for HostFunction {
32995 #[cfg(feature = "std")]
32996 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
32997 r.with_limited_depth(|r| {
32998 let dv: HostFunctionType = <HostFunctionType as ReadXdr>::read_xdr(r)?;
32999 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
33000 let v = match dv {
33001 HostFunctionType::InvokeContract => {
33002 Self::InvokeContract(InvokeContractArgs::read_xdr(r)?)
33003 }
33004 HostFunctionType::CreateContract => {
33005 Self::CreateContract(CreateContractArgs::read_xdr(r)?)
33006 }
33007 HostFunctionType::UploadContractWasm => {
33008 Self::UploadContractWasm(BytesM::read_xdr(r)?)
33009 }
33010 HostFunctionType::CreateContractV2 => {
33011 Self::CreateContractV2(CreateContractArgsV2::read_xdr(r)?)
33012 }
33013 #[allow(unreachable_patterns)]
33014 _ => return Err(Error::Invalid),
33015 };
33016 Ok(v)
33017 })
33018 }
33019}
33020
33021impl WriteXdr for HostFunction {
33022 #[cfg(feature = "std")]
33023 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33024 w.with_limited_depth(|w| {
33025 self.discriminant().write_xdr(w)?;
33026 #[allow(clippy::match_same_arms)]
33027 match self {
33028 Self::InvokeContract(v) => v.write_xdr(w)?,
33029 Self::CreateContract(v) => v.write_xdr(w)?,
33030 Self::UploadContractWasm(v) => v.write_xdr(w)?,
33031 Self::CreateContractV2(v) => v.write_xdr(w)?,
33032 };
33033 Ok(())
33034 })
33035 }
33036}
33037
33038#[cfg_attr(feature = "alloc", derive(Default))]
33051#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33052#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33053#[cfg_attr(
33054 all(feature = "serde", feature = "alloc"),
33055 derive(serde::Serialize, serde::Deserialize),
33056 serde(rename_all = "snake_case")
33057)]
33058#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33059#[repr(i32)]
33060pub enum SorobanAuthorizedFunctionType {
33061 #[cfg_attr(feature = "alloc", default)]
33062 ContractFn = 0,
33063 CreateContractHostFn = 1,
33064 CreateContractV2HostFn = 2,
33065}
33066
33067impl SorobanAuthorizedFunctionType {
33068 pub const VARIANTS: [SorobanAuthorizedFunctionType; 3] = [
33069 SorobanAuthorizedFunctionType::ContractFn,
33070 SorobanAuthorizedFunctionType::CreateContractHostFn,
33071 SorobanAuthorizedFunctionType::CreateContractV2HostFn,
33072 ];
33073 pub const VARIANTS_STR: [&'static str; 3] = [
33074 "ContractFn",
33075 "CreateContractHostFn",
33076 "CreateContractV2HostFn",
33077 ];
33078
33079 #[must_use]
33080 pub const fn name(&self) -> &'static str {
33081 match self {
33082 Self::ContractFn => "ContractFn",
33083 Self::CreateContractHostFn => "CreateContractHostFn",
33084 Self::CreateContractV2HostFn => "CreateContractV2HostFn",
33085 }
33086 }
33087
33088 #[must_use]
33089 pub const fn variants() -> [SorobanAuthorizedFunctionType; 3] {
33090 Self::VARIANTS
33091 }
33092}
33093
33094impl Name for SorobanAuthorizedFunctionType {
33095 #[must_use]
33096 fn name(&self) -> &'static str {
33097 Self::name(self)
33098 }
33099}
33100
33101impl Variants<SorobanAuthorizedFunctionType> for SorobanAuthorizedFunctionType {
33102 fn variants() -> slice::Iter<'static, SorobanAuthorizedFunctionType> {
33103 Self::VARIANTS.iter()
33104 }
33105}
33106
33107impl Enum for SorobanAuthorizedFunctionType {}
33108
33109impl fmt::Display for SorobanAuthorizedFunctionType {
33110 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33111 f.write_str(self.name())
33112 }
33113}
33114
33115impl TryFrom<i32> for SorobanAuthorizedFunctionType {
33116 type Error = Error;
33117
33118 fn try_from(i: i32) -> Result<Self, Error> {
33119 let e = match i {
33120 0 => SorobanAuthorizedFunctionType::ContractFn,
33121 1 => SorobanAuthorizedFunctionType::CreateContractHostFn,
33122 2 => SorobanAuthorizedFunctionType::CreateContractV2HostFn,
33123 #[allow(unreachable_patterns)]
33124 _ => return Err(Error::Invalid),
33125 };
33126 Ok(e)
33127 }
33128}
33129
33130impl From<SorobanAuthorizedFunctionType> for i32 {
33131 #[must_use]
33132 fn from(e: SorobanAuthorizedFunctionType) -> Self {
33133 e as Self
33134 }
33135}
33136
33137impl ReadXdr for SorobanAuthorizedFunctionType {
33138 #[cfg(feature = "std")]
33139 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33140 r.with_limited_depth(|r| {
33141 let e = i32::read_xdr(r)?;
33142 let v: Self = e.try_into()?;
33143 Ok(v)
33144 })
33145 }
33146}
33147
33148impl WriteXdr for SorobanAuthorizedFunctionType {
33149 #[cfg(feature = "std")]
33150 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33151 w.with_limited_depth(|w| {
33152 let i: i32 = (*self).into();
33153 i.write_xdr(w)
33154 })
33155 }
33156}
33157
33158#[cfg_eval::cfg_eval]
33182#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33183#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33184#[cfg_attr(
33185 all(feature = "serde", feature = "alloc"),
33186 serde_with::serde_as,
33187 derive(serde::Serialize, serde::Deserialize),
33188 serde(rename_all = "snake_case")
33189)]
33190#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33191#[allow(clippy::large_enum_variant)]
33192pub enum SorobanAuthorizedFunction {
33193 ContractFn(InvokeContractArgs),
33194 CreateContractHostFn(CreateContractArgs),
33195 CreateContractV2HostFn(CreateContractArgsV2),
33196}
33197
33198#[cfg(feature = "alloc")]
33199impl Default for SorobanAuthorizedFunction {
33200 fn default() -> Self {
33201 Self::ContractFn(InvokeContractArgs::default())
33202 }
33203}
33204
33205impl SorobanAuthorizedFunction {
33206 pub const VARIANTS: [SorobanAuthorizedFunctionType; 3] = [
33207 SorobanAuthorizedFunctionType::ContractFn,
33208 SorobanAuthorizedFunctionType::CreateContractHostFn,
33209 SorobanAuthorizedFunctionType::CreateContractV2HostFn,
33210 ];
33211 pub const VARIANTS_STR: [&'static str; 3] = [
33212 "ContractFn",
33213 "CreateContractHostFn",
33214 "CreateContractV2HostFn",
33215 ];
33216
33217 #[must_use]
33218 pub const fn name(&self) -> &'static str {
33219 match self {
33220 Self::ContractFn(_) => "ContractFn",
33221 Self::CreateContractHostFn(_) => "CreateContractHostFn",
33222 Self::CreateContractV2HostFn(_) => "CreateContractV2HostFn",
33223 }
33224 }
33225
33226 #[must_use]
33227 pub const fn discriminant(&self) -> SorobanAuthorizedFunctionType {
33228 #[allow(clippy::match_same_arms)]
33229 match self {
33230 Self::ContractFn(_) => SorobanAuthorizedFunctionType::ContractFn,
33231 Self::CreateContractHostFn(_) => SorobanAuthorizedFunctionType::CreateContractHostFn,
33232 Self::CreateContractV2HostFn(_) => {
33233 SorobanAuthorizedFunctionType::CreateContractV2HostFn
33234 }
33235 }
33236 }
33237
33238 #[must_use]
33239 pub const fn variants() -> [SorobanAuthorizedFunctionType; 3] {
33240 Self::VARIANTS
33241 }
33242}
33243
33244impl Name for SorobanAuthorizedFunction {
33245 #[must_use]
33246 fn name(&self) -> &'static str {
33247 Self::name(self)
33248 }
33249}
33250
33251impl Discriminant<SorobanAuthorizedFunctionType> for SorobanAuthorizedFunction {
33252 #[must_use]
33253 fn discriminant(&self) -> SorobanAuthorizedFunctionType {
33254 Self::discriminant(self)
33255 }
33256}
33257
33258impl Variants<SorobanAuthorizedFunctionType> for SorobanAuthorizedFunction {
33259 fn variants() -> slice::Iter<'static, SorobanAuthorizedFunctionType> {
33260 Self::VARIANTS.iter()
33261 }
33262}
33263
33264impl Union<SorobanAuthorizedFunctionType> for SorobanAuthorizedFunction {}
33265
33266impl ReadXdr for SorobanAuthorizedFunction {
33267 #[cfg(feature = "std")]
33268 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33269 r.with_limited_depth(|r| {
33270 let dv: SorobanAuthorizedFunctionType =
33271 <SorobanAuthorizedFunctionType as ReadXdr>::read_xdr(r)?;
33272 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
33273 let v = match dv {
33274 SorobanAuthorizedFunctionType::ContractFn => {
33275 Self::ContractFn(InvokeContractArgs::read_xdr(r)?)
33276 }
33277 SorobanAuthorizedFunctionType::CreateContractHostFn => {
33278 Self::CreateContractHostFn(CreateContractArgs::read_xdr(r)?)
33279 }
33280 SorobanAuthorizedFunctionType::CreateContractV2HostFn => {
33281 Self::CreateContractV2HostFn(CreateContractArgsV2::read_xdr(r)?)
33282 }
33283 #[allow(unreachable_patterns)]
33284 _ => return Err(Error::Invalid),
33285 };
33286 Ok(v)
33287 })
33288 }
33289}
33290
33291impl WriteXdr for SorobanAuthorizedFunction {
33292 #[cfg(feature = "std")]
33293 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33294 w.with_limited_depth(|w| {
33295 self.discriminant().write_xdr(w)?;
33296 #[allow(clippy::match_same_arms)]
33297 match self {
33298 Self::ContractFn(v) => v.write_xdr(w)?,
33299 Self::CreateContractHostFn(v) => v.write_xdr(w)?,
33300 Self::CreateContractV2HostFn(v) => v.write_xdr(w)?,
33301 };
33302 Ok(())
33303 })
33304 }
33305}
33306
33307#[cfg_attr(feature = "alloc", derive(Default))]
33318#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33319#[cfg_eval::cfg_eval]
33320#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33321#[cfg_attr(
33322 all(feature = "serde", feature = "alloc"),
33323 serde_with::serde_as,
33324 derive(serde::Serialize, serde::Deserialize),
33325 serde(rename_all = "snake_case")
33326)]
33327#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33328pub struct SorobanAuthorizedInvocation {
33329 pub function: SorobanAuthorizedFunction,
33330 pub sub_invocations: VecM<SorobanAuthorizedInvocation>,
33331}
33332
33333impl ReadXdr for SorobanAuthorizedInvocation {
33334 #[cfg(feature = "std")]
33335 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33336 r.with_limited_depth(|r| {
33337 Ok(Self {
33338 function: SorobanAuthorizedFunction::read_xdr(r)?,
33339 sub_invocations: VecM::<SorobanAuthorizedInvocation>::read_xdr(r)?,
33340 })
33341 })
33342 }
33343}
33344
33345impl WriteXdr for SorobanAuthorizedInvocation {
33346 #[cfg(feature = "std")]
33347 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33348 w.with_limited_depth(|w| {
33349 self.function.write_xdr(w)?;
33350 self.sub_invocations.write_xdr(w)?;
33351 Ok(())
33352 })
33353 }
33354}
33355
33356#[cfg_attr(feature = "alloc", derive(Default))]
33369#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33370#[cfg_eval::cfg_eval]
33371#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33372#[cfg_attr(
33373 all(feature = "serde", feature = "alloc"),
33374 serde_with::serde_as,
33375 derive(serde::Serialize, serde::Deserialize),
33376 serde(rename_all = "snake_case")
33377)]
33378#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33379pub struct SorobanAddressCredentials {
33380 pub address: ScAddress,
33381 #[cfg_attr(
33382 all(feature = "serde", feature = "alloc"),
33383 serde_as(as = "NumberOrString")
33384 )]
33385 pub nonce: i64,
33386 pub signature_expiration_ledger: u32,
33387 pub signature: ScVal,
33388}
33389
33390impl ReadXdr for SorobanAddressCredentials {
33391 #[cfg(feature = "std")]
33392 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33393 r.with_limited_depth(|r| {
33394 Ok(Self {
33395 address: ScAddress::read_xdr(r)?,
33396 nonce: i64::read_xdr(r)?,
33397 signature_expiration_ledger: u32::read_xdr(r)?,
33398 signature: ScVal::read_xdr(r)?,
33399 })
33400 })
33401 }
33402}
33403
33404impl WriteXdr for SorobanAddressCredentials {
33405 #[cfg(feature = "std")]
33406 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33407 w.with_limited_depth(|w| {
33408 self.address.write_xdr(w)?;
33409 self.nonce.write_xdr(w)?;
33410 self.signature_expiration_ledger.write_xdr(w)?;
33411 self.signature.write_xdr(w)?;
33412 Ok(())
33413 })
33414 }
33415}
33416
33417#[cfg_attr(feature = "alloc", derive(Default))]
33429#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33430#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33431#[cfg_attr(
33432 all(feature = "serde", feature = "alloc"),
33433 derive(serde::Serialize, serde::Deserialize),
33434 serde(rename_all = "snake_case")
33435)]
33436#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33437#[repr(i32)]
33438pub enum SorobanCredentialsType {
33439 #[cfg_attr(feature = "alloc", default)]
33440 SourceAccount = 0,
33441 Address = 1,
33442}
33443
33444impl SorobanCredentialsType {
33445 pub const VARIANTS: [SorobanCredentialsType; 2] = [
33446 SorobanCredentialsType::SourceAccount,
33447 SorobanCredentialsType::Address,
33448 ];
33449 pub const VARIANTS_STR: [&'static str; 2] = ["SourceAccount", "Address"];
33450
33451 #[must_use]
33452 pub const fn name(&self) -> &'static str {
33453 match self {
33454 Self::SourceAccount => "SourceAccount",
33455 Self::Address => "Address",
33456 }
33457 }
33458
33459 #[must_use]
33460 pub const fn variants() -> [SorobanCredentialsType; 2] {
33461 Self::VARIANTS
33462 }
33463}
33464
33465impl Name for SorobanCredentialsType {
33466 #[must_use]
33467 fn name(&self) -> &'static str {
33468 Self::name(self)
33469 }
33470}
33471
33472impl Variants<SorobanCredentialsType> for SorobanCredentialsType {
33473 fn variants() -> slice::Iter<'static, SorobanCredentialsType> {
33474 Self::VARIANTS.iter()
33475 }
33476}
33477
33478impl Enum for SorobanCredentialsType {}
33479
33480impl fmt::Display for SorobanCredentialsType {
33481 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33482 f.write_str(self.name())
33483 }
33484}
33485
33486impl TryFrom<i32> for SorobanCredentialsType {
33487 type Error = Error;
33488
33489 fn try_from(i: i32) -> Result<Self, Error> {
33490 let e = match i {
33491 0 => SorobanCredentialsType::SourceAccount,
33492 1 => SorobanCredentialsType::Address,
33493 #[allow(unreachable_patterns)]
33494 _ => return Err(Error::Invalid),
33495 };
33496 Ok(e)
33497 }
33498}
33499
33500impl From<SorobanCredentialsType> for i32 {
33501 #[must_use]
33502 fn from(e: SorobanCredentialsType) -> Self {
33503 e as Self
33504 }
33505}
33506
33507impl ReadXdr for SorobanCredentialsType {
33508 #[cfg(feature = "std")]
33509 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33510 r.with_limited_depth(|r| {
33511 let e = i32::read_xdr(r)?;
33512 let v: Self = e.try_into()?;
33513 Ok(v)
33514 })
33515 }
33516}
33517
33518impl WriteXdr for SorobanCredentialsType {
33519 #[cfg(feature = "std")]
33520 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33521 w.with_limited_depth(|w| {
33522 let i: i32 = (*self).into();
33523 i.write_xdr(w)
33524 })
33525 }
33526}
33527
33528#[cfg_eval::cfg_eval]
33542#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33543#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33544#[cfg_attr(
33545 all(feature = "serde", feature = "alloc"),
33546 serde_with::serde_as,
33547 derive(serde::Serialize, serde::Deserialize),
33548 serde(rename_all = "snake_case")
33549)]
33550#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33551#[allow(clippy::large_enum_variant)]
33552pub enum SorobanCredentials {
33553 SourceAccount,
33554 Address(SorobanAddressCredentials),
33555}
33556
33557#[cfg(feature = "alloc")]
33558impl Default for SorobanCredentials {
33559 fn default() -> Self {
33560 Self::SourceAccount
33561 }
33562}
33563
33564impl SorobanCredentials {
33565 pub const VARIANTS: [SorobanCredentialsType; 2] = [
33566 SorobanCredentialsType::SourceAccount,
33567 SorobanCredentialsType::Address,
33568 ];
33569 pub const VARIANTS_STR: [&'static str; 2] = ["SourceAccount", "Address"];
33570
33571 #[must_use]
33572 pub const fn name(&self) -> &'static str {
33573 match self {
33574 Self::SourceAccount => "SourceAccount",
33575 Self::Address(_) => "Address",
33576 }
33577 }
33578
33579 #[must_use]
33580 pub const fn discriminant(&self) -> SorobanCredentialsType {
33581 #[allow(clippy::match_same_arms)]
33582 match self {
33583 Self::SourceAccount => SorobanCredentialsType::SourceAccount,
33584 Self::Address(_) => SorobanCredentialsType::Address,
33585 }
33586 }
33587
33588 #[must_use]
33589 pub const fn variants() -> [SorobanCredentialsType; 2] {
33590 Self::VARIANTS
33591 }
33592}
33593
33594impl Name for SorobanCredentials {
33595 #[must_use]
33596 fn name(&self) -> &'static str {
33597 Self::name(self)
33598 }
33599}
33600
33601impl Discriminant<SorobanCredentialsType> for SorobanCredentials {
33602 #[must_use]
33603 fn discriminant(&self) -> SorobanCredentialsType {
33604 Self::discriminant(self)
33605 }
33606}
33607
33608impl Variants<SorobanCredentialsType> for SorobanCredentials {
33609 fn variants() -> slice::Iter<'static, SorobanCredentialsType> {
33610 Self::VARIANTS.iter()
33611 }
33612}
33613
33614impl Union<SorobanCredentialsType> for SorobanCredentials {}
33615
33616impl ReadXdr for SorobanCredentials {
33617 #[cfg(feature = "std")]
33618 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33619 r.with_limited_depth(|r| {
33620 let dv: SorobanCredentialsType = <SorobanCredentialsType as ReadXdr>::read_xdr(r)?;
33621 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
33622 let v = match dv {
33623 SorobanCredentialsType::SourceAccount => Self::SourceAccount,
33624 SorobanCredentialsType::Address => {
33625 Self::Address(SorobanAddressCredentials::read_xdr(r)?)
33626 }
33627 #[allow(unreachable_patterns)]
33628 _ => return Err(Error::Invalid),
33629 };
33630 Ok(v)
33631 })
33632 }
33633}
33634
33635impl WriteXdr for SorobanCredentials {
33636 #[cfg(feature = "std")]
33637 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33638 w.with_limited_depth(|w| {
33639 self.discriminant().write_xdr(w)?;
33640 #[allow(clippy::match_same_arms)]
33641 match self {
33642 Self::SourceAccount => ().write_xdr(w)?,
33643 Self::Address(v) => v.write_xdr(w)?,
33644 };
33645 Ok(())
33646 })
33647 }
33648}
33649
33650#[cfg_attr(feature = "alloc", derive(Default))]
33661#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33662#[cfg_eval::cfg_eval]
33663#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33664#[cfg_attr(
33665 all(feature = "serde", feature = "alloc"),
33666 serde_with::serde_as,
33667 derive(serde::Serialize, serde::Deserialize),
33668 serde(rename_all = "snake_case")
33669)]
33670#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33671pub struct SorobanAuthorizationEntry {
33672 pub credentials: SorobanCredentials,
33673 pub root_invocation: SorobanAuthorizedInvocation,
33674}
33675
33676impl ReadXdr for SorobanAuthorizationEntry {
33677 #[cfg(feature = "std")]
33678 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33679 r.with_limited_depth(|r| {
33680 Ok(Self {
33681 credentials: SorobanCredentials::read_xdr(r)?,
33682 root_invocation: SorobanAuthorizedInvocation::read_xdr(r)?,
33683 })
33684 })
33685 }
33686}
33687
33688impl WriteXdr for SorobanAuthorizationEntry {
33689 #[cfg(feature = "std")]
33690 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33691 w.with_limited_depth(|w| {
33692 self.credentials.write_xdr(w)?;
33693 self.root_invocation.write_xdr(w)?;
33694 Ok(())
33695 })
33696 }
33697}
33698
33699#[cfg_eval::cfg_eval]
33706#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
33707#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33708#[cfg_attr(
33709 all(feature = "serde", feature = "alloc"),
33710 serde_with::serde_as,
33711 derive(serde::Serialize, serde::Deserialize),
33712 serde(rename_all = "snake_case")
33713)]
33714#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33715#[derive(Debug)]
33716pub struct SorobanAuthorizationEntries(pub VecM<SorobanAuthorizationEntry>);
33717
33718impl From<SorobanAuthorizationEntries> for VecM<SorobanAuthorizationEntry> {
33719 #[must_use]
33720 fn from(x: SorobanAuthorizationEntries) -> Self {
33721 x.0
33722 }
33723}
33724
33725impl From<VecM<SorobanAuthorizationEntry>> for SorobanAuthorizationEntries {
33726 #[must_use]
33727 fn from(x: VecM<SorobanAuthorizationEntry>) -> Self {
33728 SorobanAuthorizationEntries(x)
33729 }
33730}
33731
33732impl AsRef<VecM<SorobanAuthorizationEntry>> for SorobanAuthorizationEntries {
33733 #[must_use]
33734 fn as_ref(&self) -> &VecM<SorobanAuthorizationEntry> {
33735 &self.0
33736 }
33737}
33738
33739impl ReadXdr for SorobanAuthorizationEntries {
33740 #[cfg(feature = "std")]
33741 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33742 r.with_limited_depth(|r| {
33743 let i = VecM::<SorobanAuthorizationEntry>::read_xdr(r)?;
33744 let v = SorobanAuthorizationEntries(i);
33745 Ok(v)
33746 })
33747 }
33748}
33749
33750impl WriteXdr for SorobanAuthorizationEntries {
33751 #[cfg(feature = "std")]
33752 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33753 w.with_limited_depth(|w| self.0.write_xdr(w))
33754 }
33755}
33756
33757impl Deref for SorobanAuthorizationEntries {
33758 type Target = VecM<SorobanAuthorizationEntry>;
33759 fn deref(&self) -> &Self::Target {
33760 &self.0
33761 }
33762}
33763
33764impl From<SorobanAuthorizationEntries> for Vec<SorobanAuthorizationEntry> {
33765 #[must_use]
33766 fn from(x: SorobanAuthorizationEntries) -> Self {
33767 x.0 .0
33768 }
33769}
33770
33771impl TryFrom<Vec<SorobanAuthorizationEntry>> for SorobanAuthorizationEntries {
33772 type Error = Error;
33773 fn try_from(x: Vec<SorobanAuthorizationEntry>) -> Result<Self, Error> {
33774 Ok(SorobanAuthorizationEntries(x.try_into()?))
33775 }
33776}
33777
33778#[cfg(feature = "alloc")]
33779impl TryFrom<&Vec<SorobanAuthorizationEntry>> for SorobanAuthorizationEntries {
33780 type Error = Error;
33781 fn try_from(x: &Vec<SorobanAuthorizationEntry>) -> Result<Self, Error> {
33782 Ok(SorobanAuthorizationEntries(x.try_into()?))
33783 }
33784}
33785
33786impl AsRef<Vec<SorobanAuthorizationEntry>> for SorobanAuthorizationEntries {
33787 #[must_use]
33788 fn as_ref(&self) -> &Vec<SorobanAuthorizationEntry> {
33789 &self.0 .0
33790 }
33791}
33792
33793impl AsRef<[SorobanAuthorizationEntry]> for SorobanAuthorizationEntries {
33794 #[cfg(feature = "alloc")]
33795 #[must_use]
33796 fn as_ref(&self) -> &[SorobanAuthorizationEntry] {
33797 &self.0 .0
33798 }
33799 #[cfg(not(feature = "alloc"))]
33800 #[must_use]
33801 fn as_ref(&self) -> &[SorobanAuthorizationEntry] {
33802 self.0 .0
33803 }
33804}
33805
33806#[cfg_attr(feature = "alloc", derive(Default))]
33819#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33820#[cfg_eval::cfg_eval]
33821#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33822#[cfg_attr(
33823 all(feature = "serde", feature = "alloc"),
33824 serde_with::serde_as,
33825 derive(serde::Serialize, serde::Deserialize),
33826 serde(rename_all = "snake_case")
33827)]
33828#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33829pub struct InvokeHostFunctionOp {
33830 pub host_function: HostFunction,
33831 pub auth: VecM<SorobanAuthorizationEntry>,
33832}
33833
33834impl ReadXdr for InvokeHostFunctionOp {
33835 #[cfg(feature = "std")]
33836 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33837 r.with_limited_depth(|r| {
33838 Ok(Self {
33839 host_function: HostFunction::read_xdr(r)?,
33840 auth: VecM::<SorobanAuthorizationEntry>::read_xdr(r)?,
33841 })
33842 })
33843 }
33844}
33845
33846impl WriteXdr for InvokeHostFunctionOp {
33847 #[cfg(feature = "std")]
33848 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33849 w.with_limited_depth(|w| {
33850 self.host_function.write_xdr(w)?;
33851 self.auth.write_xdr(w)?;
33852 Ok(())
33853 })
33854 }
33855}
33856
33857#[cfg_attr(feature = "alloc", derive(Default))]
33868#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33869#[cfg_eval::cfg_eval]
33870#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33871#[cfg_attr(
33872 all(feature = "serde", feature = "alloc"),
33873 serde_with::serde_as,
33874 derive(serde::Serialize, serde::Deserialize),
33875 serde(rename_all = "snake_case")
33876)]
33877#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33878pub struct ExtendFootprintTtlOp {
33879 pub ext: ExtensionPoint,
33880 pub extend_to: u32,
33881}
33882
33883impl ReadXdr for ExtendFootprintTtlOp {
33884 #[cfg(feature = "std")]
33885 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33886 r.with_limited_depth(|r| {
33887 Ok(Self {
33888 ext: ExtensionPoint::read_xdr(r)?,
33889 extend_to: u32::read_xdr(r)?,
33890 })
33891 })
33892 }
33893}
33894
33895impl WriteXdr for ExtendFootprintTtlOp {
33896 #[cfg(feature = "std")]
33897 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33898 w.with_limited_depth(|w| {
33899 self.ext.write_xdr(w)?;
33900 self.extend_to.write_xdr(w)?;
33901 Ok(())
33902 })
33903 }
33904}
33905
33906#[cfg_attr(feature = "alloc", derive(Default))]
33916#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
33917#[cfg_eval::cfg_eval]
33918#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
33919#[cfg_attr(
33920 all(feature = "serde", feature = "alloc"),
33921 serde_with::serde_as,
33922 derive(serde::Serialize, serde::Deserialize),
33923 serde(rename_all = "snake_case")
33924)]
33925#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
33926pub struct RestoreFootprintOp {
33927 pub ext: ExtensionPoint,
33928}
33929
33930impl ReadXdr for RestoreFootprintOp {
33931 #[cfg(feature = "std")]
33932 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
33933 r.with_limited_depth(|r| {
33934 Ok(Self {
33935 ext: ExtensionPoint::read_xdr(r)?,
33936 })
33937 })
33938 }
33939}
33940
33941impl WriteXdr for RestoreFootprintOp {
33942 #[cfg(feature = "std")]
33943 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
33944 w.with_limited_depth(|w| {
33945 self.ext.write_xdr(w)?;
33946 Ok(())
33947 })
33948 }
33949}
33950
33951#[cfg_eval::cfg_eval]
34015#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34016#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34017#[cfg_attr(
34018 all(feature = "serde", feature = "alloc"),
34019 serde_with::serde_as,
34020 derive(serde::Serialize, serde::Deserialize),
34021 serde(rename_all = "snake_case")
34022)]
34023#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34024#[allow(clippy::large_enum_variant)]
34025pub enum OperationBody {
34026 CreateAccount(CreateAccountOp),
34027 Payment(PaymentOp),
34028 PathPaymentStrictReceive(PathPaymentStrictReceiveOp),
34029 ManageSellOffer(ManageSellOfferOp),
34030 CreatePassiveSellOffer(CreatePassiveSellOfferOp),
34031 SetOptions(SetOptionsOp),
34032 ChangeTrust(ChangeTrustOp),
34033 AllowTrust(AllowTrustOp),
34034 AccountMerge(MuxedAccount),
34035 Inflation,
34036 ManageData(ManageDataOp),
34037 BumpSequence(BumpSequenceOp),
34038 ManageBuyOffer(ManageBuyOfferOp),
34039 PathPaymentStrictSend(PathPaymentStrictSendOp),
34040 CreateClaimableBalance(CreateClaimableBalanceOp),
34041 ClaimClaimableBalance(ClaimClaimableBalanceOp),
34042 BeginSponsoringFutureReserves(BeginSponsoringFutureReservesOp),
34043 EndSponsoringFutureReserves,
34044 RevokeSponsorship(RevokeSponsorshipOp),
34045 Clawback(ClawbackOp),
34046 ClawbackClaimableBalance(ClawbackClaimableBalanceOp),
34047 SetTrustLineFlags(SetTrustLineFlagsOp),
34048 LiquidityPoolDeposit(LiquidityPoolDepositOp),
34049 LiquidityPoolWithdraw(LiquidityPoolWithdrawOp),
34050 InvokeHostFunction(InvokeHostFunctionOp),
34051 ExtendFootprintTtl(ExtendFootprintTtlOp),
34052 RestoreFootprint(RestoreFootprintOp),
34053}
34054
34055#[cfg(feature = "alloc")]
34056impl Default for OperationBody {
34057 fn default() -> Self {
34058 Self::CreateAccount(CreateAccountOp::default())
34059 }
34060}
34061
34062impl OperationBody {
34063 pub const VARIANTS: [OperationType; 27] = [
34064 OperationType::CreateAccount,
34065 OperationType::Payment,
34066 OperationType::PathPaymentStrictReceive,
34067 OperationType::ManageSellOffer,
34068 OperationType::CreatePassiveSellOffer,
34069 OperationType::SetOptions,
34070 OperationType::ChangeTrust,
34071 OperationType::AllowTrust,
34072 OperationType::AccountMerge,
34073 OperationType::Inflation,
34074 OperationType::ManageData,
34075 OperationType::BumpSequence,
34076 OperationType::ManageBuyOffer,
34077 OperationType::PathPaymentStrictSend,
34078 OperationType::CreateClaimableBalance,
34079 OperationType::ClaimClaimableBalance,
34080 OperationType::BeginSponsoringFutureReserves,
34081 OperationType::EndSponsoringFutureReserves,
34082 OperationType::RevokeSponsorship,
34083 OperationType::Clawback,
34084 OperationType::ClawbackClaimableBalance,
34085 OperationType::SetTrustLineFlags,
34086 OperationType::LiquidityPoolDeposit,
34087 OperationType::LiquidityPoolWithdraw,
34088 OperationType::InvokeHostFunction,
34089 OperationType::ExtendFootprintTtl,
34090 OperationType::RestoreFootprint,
34091 ];
34092 pub const VARIANTS_STR: [&'static str; 27] = [
34093 "CreateAccount",
34094 "Payment",
34095 "PathPaymentStrictReceive",
34096 "ManageSellOffer",
34097 "CreatePassiveSellOffer",
34098 "SetOptions",
34099 "ChangeTrust",
34100 "AllowTrust",
34101 "AccountMerge",
34102 "Inflation",
34103 "ManageData",
34104 "BumpSequence",
34105 "ManageBuyOffer",
34106 "PathPaymentStrictSend",
34107 "CreateClaimableBalance",
34108 "ClaimClaimableBalance",
34109 "BeginSponsoringFutureReserves",
34110 "EndSponsoringFutureReserves",
34111 "RevokeSponsorship",
34112 "Clawback",
34113 "ClawbackClaimableBalance",
34114 "SetTrustLineFlags",
34115 "LiquidityPoolDeposit",
34116 "LiquidityPoolWithdraw",
34117 "InvokeHostFunction",
34118 "ExtendFootprintTtl",
34119 "RestoreFootprint",
34120 ];
34121
34122 #[must_use]
34123 pub const fn name(&self) -> &'static str {
34124 match self {
34125 Self::CreateAccount(_) => "CreateAccount",
34126 Self::Payment(_) => "Payment",
34127 Self::PathPaymentStrictReceive(_) => "PathPaymentStrictReceive",
34128 Self::ManageSellOffer(_) => "ManageSellOffer",
34129 Self::CreatePassiveSellOffer(_) => "CreatePassiveSellOffer",
34130 Self::SetOptions(_) => "SetOptions",
34131 Self::ChangeTrust(_) => "ChangeTrust",
34132 Self::AllowTrust(_) => "AllowTrust",
34133 Self::AccountMerge(_) => "AccountMerge",
34134 Self::Inflation => "Inflation",
34135 Self::ManageData(_) => "ManageData",
34136 Self::BumpSequence(_) => "BumpSequence",
34137 Self::ManageBuyOffer(_) => "ManageBuyOffer",
34138 Self::PathPaymentStrictSend(_) => "PathPaymentStrictSend",
34139 Self::CreateClaimableBalance(_) => "CreateClaimableBalance",
34140 Self::ClaimClaimableBalance(_) => "ClaimClaimableBalance",
34141 Self::BeginSponsoringFutureReserves(_) => "BeginSponsoringFutureReserves",
34142 Self::EndSponsoringFutureReserves => "EndSponsoringFutureReserves",
34143 Self::RevokeSponsorship(_) => "RevokeSponsorship",
34144 Self::Clawback(_) => "Clawback",
34145 Self::ClawbackClaimableBalance(_) => "ClawbackClaimableBalance",
34146 Self::SetTrustLineFlags(_) => "SetTrustLineFlags",
34147 Self::LiquidityPoolDeposit(_) => "LiquidityPoolDeposit",
34148 Self::LiquidityPoolWithdraw(_) => "LiquidityPoolWithdraw",
34149 Self::InvokeHostFunction(_) => "InvokeHostFunction",
34150 Self::ExtendFootprintTtl(_) => "ExtendFootprintTtl",
34151 Self::RestoreFootprint(_) => "RestoreFootprint",
34152 }
34153 }
34154
34155 #[must_use]
34156 pub const fn discriminant(&self) -> OperationType {
34157 #[allow(clippy::match_same_arms)]
34158 match self {
34159 Self::CreateAccount(_) => OperationType::CreateAccount,
34160 Self::Payment(_) => OperationType::Payment,
34161 Self::PathPaymentStrictReceive(_) => OperationType::PathPaymentStrictReceive,
34162 Self::ManageSellOffer(_) => OperationType::ManageSellOffer,
34163 Self::CreatePassiveSellOffer(_) => OperationType::CreatePassiveSellOffer,
34164 Self::SetOptions(_) => OperationType::SetOptions,
34165 Self::ChangeTrust(_) => OperationType::ChangeTrust,
34166 Self::AllowTrust(_) => OperationType::AllowTrust,
34167 Self::AccountMerge(_) => OperationType::AccountMerge,
34168 Self::Inflation => OperationType::Inflation,
34169 Self::ManageData(_) => OperationType::ManageData,
34170 Self::BumpSequence(_) => OperationType::BumpSequence,
34171 Self::ManageBuyOffer(_) => OperationType::ManageBuyOffer,
34172 Self::PathPaymentStrictSend(_) => OperationType::PathPaymentStrictSend,
34173 Self::CreateClaimableBalance(_) => OperationType::CreateClaimableBalance,
34174 Self::ClaimClaimableBalance(_) => OperationType::ClaimClaimableBalance,
34175 Self::BeginSponsoringFutureReserves(_) => OperationType::BeginSponsoringFutureReserves,
34176 Self::EndSponsoringFutureReserves => OperationType::EndSponsoringFutureReserves,
34177 Self::RevokeSponsorship(_) => OperationType::RevokeSponsorship,
34178 Self::Clawback(_) => OperationType::Clawback,
34179 Self::ClawbackClaimableBalance(_) => OperationType::ClawbackClaimableBalance,
34180 Self::SetTrustLineFlags(_) => OperationType::SetTrustLineFlags,
34181 Self::LiquidityPoolDeposit(_) => OperationType::LiquidityPoolDeposit,
34182 Self::LiquidityPoolWithdraw(_) => OperationType::LiquidityPoolWithdraw,
34183 Self::InvokeHostFunction(_) => OperationType::InvokeHostFunction,
34184 Self::ExtendFootprintTtl(_) => OperationType::ExtendFootprintTtl,
34185 Self::RestoreFootprint(_) => OperationType::RestoreFootprint,
34186 }
34187 }
34188
34189 #[must_use]
34190 pub const fn variants() -> [OperationType; 27] {
34191 Self::VARIANTS
34192 }
34193}
34194
34195impl Name for OperationBody {
34196 #[must_use]
34197 fn name(&self) -> &'static str {
34198 Self::name(self)
34199 }
34200}
34201
34202impl Discriminant<OperationType> for OperationBody {
34203 #[must_use]
34204 fn discriminant(&self) -> OperationType {
34205 Self::discriminant(self)
34206 }
34207}
34208
34209impl Variants<OperationType> for OperationBody {
34210 fn variants() -> slice::Iter<'static, OperationType> {
34211 Self::VARIANTS.iter()
34212 }
34213}
34214
34215impl Union<OperationType> for OperationBody {}
34216
34217impl ReadXdr for OperationBody {
34218 #[cfg(feature = "std")]
34219 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34220 r.with_limited_depth(|r| {
34221 let dv: OperationType = <OperationType as ReadXdr>::read_xdr(r)?;
34222 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
34223 let v = match dv {
34224 OperationType::CreateAccount => Self::CreateAccount(CreateAccountOp::read_xdr(r)?),
34225 OperationType::Payment => Self::Payment(PaymentOp::read_xdr(r)?),
34226 OperationType::PathPaymentStrictReceive => {
34227 Self::PathPaymentStrictReceive(PathPaymentStrictReceiveOp::read_xdr(r)?)
34228 }
34229 OperationType::ManageSellOffer => {
34230 Self::ManageSellOffer(ManageSellOfferOp::read_xdr(r)?)
34231 }
34232 OperationType::CreatePassiveSellOffer => {
34233 Self::CreatePassiveSellOffer(CreatePassiveSellOfferOp::read_xdr(r)?)
34234 }
34235 OperationType::SetOptions => Self::SetOptions(SetOptionsOp::read_xdr(r)?),
34236 OperationType::ChangeTrust => Self::ChangeTrust(ChangeTrustOp::read_xdr(r)?),
34237 OperationType::AllowTrust => Self::AllowTrust(AllowTrustOp::read_xdr(r)?),
34238 OperationType::AccountMerge => Self::AccountMerge(MuxedAccount::read_xdr(r)?),
34239 OperationType::Inflation => Self::Inflation,
34240 OperationType::ManageData => Self::ManageData(ManageDataOp::read_xdr(r)?),
34241 OperationType::BumpSequence => Self::BumpSequence(BumpSequenceOp::read_xdr(r)?),
34242 OperationType::ManageBuyOffer => {
34243 Self::ManageBuyOffer(ManageBuyOfferOp::read_xdr(r)?)
34244 }
34245 OperationType::PathPaymentStrictSend => {
34246 Self::PathPaymentStrictSend(PathPaymentStrictSendOp::read_xdr(r)?)
34247 }
34248 OperationType::CreateClaimableBalance => {
34249 Self::CreateClaimableBalance(CreateClaimableBalanceOp::read_xdr(r)?)
34250 }
34251 OperationType::ClaimClaimableBalance => {
34252 Self::ClaimClaimableBalance(ClaimClaimableBalanceOp::read_xdr(r)?)
34253 }
34254 OperationType::BeginSponsoringFutureReserves => {
34255 Self::BeginSponsoringFutureReserves(BeginSponsoringFutureReservesOp::read_xdr(
34256 r,
34257 )?)
34258 }
34259 OperationType::EndSponsoringFutureReserves => Self::EndSponsoringFutureReserves,
34260 OperationType::RevokeSponsorship => {
34261 Self::RevokeSponsorship(RevokeSponsorshipOp::read_xdr(r)?)
34262 }
34263 OperationType::Clawback => Self::Clawback(ClawbackOp::read_xdr(r)?),
34264 OperationType::ClawbackClaimableBalance => {
34265 Self::ClawbackClaimableBalance(ClawbackClaimableBalanceOp::read_xdr(r)?)
34266 }
34267 OperationType::SetTrustLineFlags => {
34268 Self::SetTrustLineFlags(SetTrustLineFlagsOp::read_xdr(r)?)
34269 }
34270 OperationType::LiquidityPoolDeposit => {
34271 Self::LiquidityPoolDeposit(LiquidityPoolDepositOp::read_xdr(r)?)
34272 }
34273 OperationType::LiquidityPoolWithdraw => {
34274 Self::LiquidityPoolWithdraw(LiquidityPoolWithdrawOp::read_xdr(r)?)
34275 }
34276 OperationType::InvokeHostFunction => {
34277 Self::InvokeHostFunction(InvokeHostFunctionOp::read_xdr(r)?)
34278 }
34279 OperationType::ExtendFootprintTtl => {
34280 Self::ExtendFootprintTtl(ExtendFootprintTtlOp::read_xdr(r)?)
34281 }
34282 OperationType::RestoreFootprint => {
34283 Self::RestoreFootprint(RestoreFootprintOp::read_xdr(r)?)
34284 }
34285 #[allow(unreachable_patterns)]
34286 _ => return Err(Error::Invalid),
34287 };
34288 Ok(v)
34289 })
34290 }
34291}
34292
34293impl WriteXdr for OperationBody {
34294 #[cfg(feature = "std")]
34295 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34296 w.with_limited_depth(|w| {
34297 self.discriminant().write_xdr(w)?;
34298 #[allow(clippy::match_same_arms)]
34299 match self {
34300 Self::CreateAccount(v) => v.write_xdr(w)?,
34301 Self::Payment(v) => v.write_xdr(w)?,
34302 Self::PathPaymentStrictReceive(v) => v.write_xdr(w)?,
34303 Self::ManageSellOffer(v) => v.write_xdr(w)?,
34304 Self::CreatePassiveSellOffer(v) => v.write_xdr(w)?,
34305 Self::SetOptions(v) => v.write_xdr(w)?,
34306 Self::ChangeTrust(v) => v.write_xdr(w)?,
34307 Self::AllowTrust(v) => v.write_xdr(w)?,
34308 Self::AccountMerge(v) => v.write_xdr(w)?,
34309 Self::Inflation => ().write_xdr(w)?,
34310 Self::ManageData(v) => v.write_xdr(w)?,
34311 Self::BumpSequence(v) => v.write_xdr(w)?,
34312 Self::ManageBuyOffer(v) => v.write_xdr(w)?,
34313 Self::PathPaymentStrictSend(v) => v.write_xdr(w)?,
34314 Self::CreateClaimableBalance(v) => v.write_xdr(w)?,
34315 Self::ClaimClaimableBalance(v) => v.write_xdr(w)?,
34316 Self::BeginSponsoringFutureReserves(v) => v.write_xdr(w)?,
34317 Self::EndSponsoringFutureReserves => ().write_xdr(w)?,
34318 Self::RevokeSponsorship(v) => v.write_xdr(w)?,
34319 Self::Clawback(v) => v.write_xdr(w)?,
34320 Self::ClawbackClaimableBalance(v) => v.write_xdr(w)?,
34321 Self::SetTrustLineFlags(v) => v.write_xdr(w)?,
34322 Self::LiquidityPoolDeposit(v) => v.write_xdr(w)?,
34323 Self::LiquidityPoolWithdraw(v) => v.write_xdr(w)?,
34324 Self::InvokeHostFunction(v) => v.write_xdr(w)?,
34325 Self::ExtendFootprintTtl(v) => v.write_xdr(w)?,
34326 Self::RestoreFootprint(v) => v.write_xdr(w)?,
34327 };
34328 Ok(())
34329 })
34330 }
34331}
34332
34333#[cfg_attr(feature = "alloc", derive(Default))]
34405#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34406#[cfg_eval::cfg_eval]
34407#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34408#[cfg_attr(
34409 all(feature = "serde", feature = "alloc"),
34410 serde_with::serde_as,
34411 derive(serde::Serialize, serde::Deserialize),
34412 serde(rename_all = "snake_case")
34413)]
34414#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34415pub struct Operation {
34416 pub source_account: Option<MuxedAccount>,
34417 pub body: OperationBody,
34418}
34419
34420impl ReadXdr for Operation {
34421 #[cfg(feature = "std")]
34422 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34423 r.with_limited_depth(|r| {
34424 Ok(Self {
34425 source_account: Option::<MuxedAccount>::read_xdr(r)?,
34426 body: OperationBody::read_xdr(r)?,
34427 })
34428 })
34429 }
34430}
34431
34432impl WriteXdr for Operation {
34433 #[cfg(feature = "std")]
34434 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34435 w.with_limited_depth(|w| {
34436 self.source_account.write_xdr(w)?;
34437 self.body.write_xdr(w)?;
34438 Ok(())
34439 })
34440 }
34441}
34442
34443#[cfg_attr(feature = "alloc", derive(Default))]
34455#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34456#[cfg_eval::cfg_eval]
34457#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34458#[cfg_attr(
34459 all(feature = "serde", feature = "alloc"),
34460 serde_with::serde_as,
34461 derive(serde::Serialize, serde::Deserialize),
34462 serde(rename_all = "snake_case")
34463)]
34464#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34465pub struct HashIdPreimageOperationId {
34466 pub source_account: AccountId,
34467 pub seq_num: SequenceNumber,
34468 pub op_num: u32,
34469}
34470
34471impl ReadXdr for HashIdPreimageOperationId {
34472 #[cfg(feature = "std")]
34473 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34474 r.with_limited_depth(|r| {
34475 Ok(Self {
34476 source_account: AccountId::read_xdr(r)?,
34477 seq_num: SequenceNumber::read_xdr(r)?,
34478 op_num: u32::read_xdr(r)?,
34479 })
34480 })
34481 }
34482}
34483
34484impl WriteXdr for HashIdPreimageOperationId {
34485 #[cfg(feature = "std")]
34486 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34487 w.with_limited_depth(|w| {
34488 self.source_account.write_xdr(w)?;
34489 self.seq_num.write_xdr(w)?;
34490 self.op_num.write_xdr(w)?;
34491 Ok(())
34492 })
34493 }
34494}
34495
34496#[cfg_attr(feature = "alloc", derive(Default))]
34510#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34511#[cfg_eval::cfg_eval]
34512#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34513#[cfg_attr(
34514 all(feature = "serde", feature = "alloc"),
34515 serde_with::serde_as,
34516 derive(serde::Serialize, serde::Deserialize),
34517 serde(rename_all = "snake_case")
34518)]
34519#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34520pub struct HashIdPreimageRevokeId {
34521 pub source_account: AccountId,
34522 pub seq_num: SequenceNumber,
34523 pub op_num: u32,
34524 pub liquidity_pool_id: PoolId,
34525 pub asset: Asset,
34526}
34527
34528impl ReadXdr for HashIdPreimageRevokeId {
34529 #[cfg(feature = "std")]
34530 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34531 r.with_limited_depth(|r| {
34532 Ok(Self {
34533 source_account: AccountId::read_xdr(r)?,
34534 seq_num: SequenceNumber::read_xdr(r)?,
34535 op_num: u32::read_xdr(r)?,
34536 liquidity_pool_id: PoolId::read_xdr(r)?,
34537 asset: Asset::read_xdr(r)?,
34538 })
34539 })
34540 }
34541}
34542
34543impl WriteXdr for HashIdPreimageRevokeId {
34544 #[cfg(feature = "std")]
34545 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34546 w.with_limited_depth(|w| {
34547 self.source_account.write_xdr(w)?;
34548 self.seq_num.write_xdr(w)?;
34549 self.op_num.write_xdr(w)?;
34550 self.liquidity_pool_id.write_xdr(w)?;
34551 self.asset.write_xdr(w)?;
34552 Ok(())
34553 })
34554 }
34555}
34556
34557#[cfg_attr(feature = "alloc", derive(Default))]
34568#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34569#[cfg_eval::cfg_eval]
34570#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34571#[cfg_attr(
34572 all(feature = "serde", feature = "alloc"),
34573 serde_with::serde_as,
34574 derive(serde::Serialize, serde::Deserialize),
34575 serde(rename_all = "snake_case")
34576)]
34577#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34578pub struct HashIdPreimageContractId {
34579 pub network_id: Hash,
34580 pub contract_id_preimage: ContractIdPreimage,
34581}
34582
34583impl ReadXdr for HashIdPreimageContractId {
34584 #[cfg(feature = "std")]
34585 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34586 r.with_limited_depth(|r| {
34587 Ok(Self {
34588 network_id: Hash::read_xdr(r)?,
34589 contract_id_preimage: ContractIdPreimage::read_xdr(r)?,
34590 })
34591 })
34592 }
34593}
34594
34595impl WriteXdr for HashIdPreimageContractId {
34596 #[cfg(feature = "std")]
34597 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34598 w.with_limited_depth(|w| {
34599 self.network_id.write_xdr(w)?;
34600 self.contract_id_preimage.write_xdr(w)?;
34601 Ok(())
34602 })
34603 }
34604}
34605
34606#[cfg_attr(feature = "alloc", derive(Default))]
34619#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34620#[cfg_eval::cfg_eval]
34621#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34622#[cfg_attr(
34623 all(feature = "serde", feature = "alloc"),
34624 serde_with::serde_as,
34625 derive(serde::Serialize, serde::Deserialize),
34626 serde(rename_all = "snake_case")
34627)]
34628#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34629pub struct HashIdPreimageSorobanAuthorization {
34630 pub network_id: Hash,
34631 #[cfg_attr(
34632 all(feature = "serde", feature = "alloc"),
34633 serde_as(as = "NumberOrString")
34634 )]
34635 pub nonce: i64,
34636 pub signature_expiration_ledger: u32,
34637 pub invocation: SorobanAuthorizedInvocation,
34638}
34639
34640impl ReadXdr for HashIdPreimageSorobanAuthorization {
34641 #[cfg(feature = "std")]
34642 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34643 r.with_limited_depth(|r| {
34644 Ok(Self {
34645 network_id: Hash::read_xdr(r)?,
34646 nonce: i64::read_xdr(r)?,
34647 signature_expiration_ledger: u32::read_xdr(r)?,
34648 invocation: SorobanAuthorizedInvocation::read_xdr(r)?,
34649 })
34650 })
34651 }
34652}
34653
34654impl WriteXdr for HashIdPreimageSorobanAuthorization {
34655 #[cfg(feature = "std")]
34656 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34657 w.with_limited_depth(|w| {
34658 self.network_id.write_xdr(w)?;
34659 self.nonce.write_xdr(w)?;
34660 self.signature_expiration_ledger.write_xdr(w)?;
34661 self.invocation.write_xdr(w)?;
34662 Ok(())
34663 })
34664 }
34665}
34666
34667#[cfg_eval::cfg_eval]
34707#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34708#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34709#[cfg_attr(
34710 all(feature = "serde", feature = "alloc"),
34711 serde_with::serde_as,
34712 derive(serde::Serialize, serde::Deserialize),
34713 serde(rename_all = "snake_case")
34714)]
34715#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34716#[allow(clippy::large_enum_variant)]
34717pub enum HashIdPreimage {
34718 OpId(HashIdPreimageOperationId),
34719 PoolRevokeOpId(HashIdPreimageRevokeId),
34720 ContractId(HashIdPreimageContractId),
34721 SorobanAuthorization(HashIdPreimageSorobanAuthorization),
34722}
34723
34724#[cfg(feature = "alloc")]
34725impl Default for HashIdPreimage {
34726 fn default() -> Self {
34727 Self::OpId(HashIdPreimageOperationId::default())
34728 }
34729}
34730
34731impl HashIdPreimage {
34732 pub const VARIANTS: [EnvelopeType; 4] = [
34733 EnvelopeType::OpId,
34734 EnvelopeType::PoolRevokeOpId,
34735 EnvelopeType::ContractId,
34736 EnvelopeType::SorobanAuthorization,
34737 ];
34738 pub const VARIANTS_STR: [&'static str; 4] = [
34739 "OpId",
34740 "PoolRevokeOpId",
34741 "ContractId",
34742 "SorobanAuthorization",
34743 ];
34744
34745 #[must_use]
34746 pub const fn name(&self) -> &'static str {
34747 match self {
34748 Self::OpId(_) => "OpId",
34749 Self::PoolRevokeOpId(_) => "PoolRevokeOpId",
34750 Self::ContractId(_) => "ContractId",
34751 Self::SorobanAuthorization(_) => "SorobanAuthorization",
34752 }
34753 }
34754
34755 #[must_use]
34756 pub const fn discriminant(&self) -> EnvelopeType {
34757 #[allow(clippy::match_same_arms)]
34758 match self {
34759 Self::OpId(_) => EnvelopeType::OpId,
34760 Self::PoolRevokeOpId(_) => EnvelopeType::PoolRevokeOpId,
34761 Self::ContractId(_) => EnvelopeType::ContractId,
34762 Self::SorobanAuthorization(_) => EnvelopeType::SorobanAuthorization,
34763 }
34764 }
34765
34766 #[must_use]
34767 pub const fn variants() -> [EnvelopeType; 4] {
34768 Self::VARIANTS
34769 }
34770}
34771
34772impl Name for HashIdPreimage {
34773 #[must_use]
34774 fn name(&self) -> &'static str {
34775 Self::name(self)
34776 }
34777}
34778
34779impl Discriminant<EnvelopeType> for HashIdPreimage {
34780 #[must_use]
34781 fn discriminant(&self) -> EnvelopeType {
34782 Self::discriminant(self)
34783 }
34784}
34785
34786impl Variants<EnvelopeType> for HashIdPreimage {
34787 fn variants() -> slice::Iter<'static, EnvelopeType> {
34788 Self::VARIANTS.iter()
34789 }
34790}
34791
34792impl Union<EnvelopeType> for HashIdPreimage {}
34793
34794impl ReadXdr for HashIdPreimage {
34795 #[cfg(feature = "std")]
34796 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34797 r.with_limited_depth(|r| {
34798 let dv: EnvelopeType = <EnvelopeType as ReadXdr>::read_xdr(r)?;
34799 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
34800 let v = match dv {
34801 EnvelopeType::OpId => Self::OpId(HashIdPreimageOperationId::read_xdr(r)?),
34802 EnvelopeType::PoolRevokeOpId => {
34803 Self::PoolRevokeOpId(HashIdPreimageRevokeId::read_xdr(r)?)
34804 }
34805 EnvelopeType::ContractId => {
34806 Self::ContractId(HashIdPreimageContractId::read_xdr(r)?)
34807 }
34808 EnvelopeType::SorobanAuthorization => {
34809 Self::SorobanAuthorization(HashIdPreimageSorobanAuthorization::read_xdr(r)?)
34810 }
34811 #[allow(unreachable_patterns)]
34812 _ => return Err(Error::Invalid),
34813 };
34814 Ok(v)
34815 })
34816 }
34817}
34818
34819impl WriteXdr for HashIdPreimage {
34820 #[cfg(feature = "std")]
34821 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34822 w.with_limited_depth(|w| {
34823 self.discriminant().write_xdr(w)?;
34824 #[allow(clippy::match_same_arms)]
34825 match self {
34826 Self::OpId(v) => v.write_xdr(w)?,
34827 Self::PoolRevokeOpId(v) => v.write_xdr(w)?,
34828 Self::ContractId(v) => v.write_xdr(w)?,
34829 Self::SorobanAuthorization(v) => v.write_xdr(w)?,
34830 };
34831 Ok(())
34832 })
34833 }
34834}
34835
34836#[cfg_attr(feature = "alloc", derive(Default))]
34851#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34852#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34853#[cfg_attr(
34854 all(feature = "serde", feature = "alloc"),
34855 derive(serde::Serialize, serde::Deserialize),
34856 serde(rename_all = "snake_case")
34857)]
34858#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34859#[repr(i32)]
34860pub enum MemoType {
34861 #[cfg_attr(feature = "alloc", default)]
34862 None = 0,
34863 Text = 1,
34864 Id = 2,
34865 Hash = 3,
34866 Return = 4,
34867}
34868
34869impl MemoType {
34870 pub const VARIANTS: [MemoType; 5] = [
34871 MemoType::None,
34872 MemoType::Text,
34873 MemoType::Id,
34874 MemoType::Hash,
34875 MemoType::Return,
34876 ];
34877 pub const VARIANTS_STR: [&'static str; 5] = ["None", "Text", "Id", "Hash", "Return"];
34878
34879 #[must_use]
34880 pub const fn name(&self) -> &'static str {
34881 match self {
34882 Self::None => "None",
34883 Self::Text => "Text",
34884 Self::Id => "Id",
34885 Self::Hash => "Hash",
34886 Self::Return => "Return",
34887 }
34888 }
34889
34890 #[must_use]
34891 pub const fn variants() -> [MemoType; 5] {
34892 Self::VARIANTS
34893 }
34894}
34895
34896impl Name for MemoType {
34897 #[must_use]
34898 fn name(&self) -> &'static str {
34899 Self::name(self)
34900 }
34901}
34902
34903impl Variants<MemoType> for MemoType {
34904 fn variants() -> slice::Iter<'static, MemoType> {
34905 Self::VARIANTS.iter()
34906 }
34907}
34908
34909impl Enum for MemoType {}
34910
34911impl fmt::Display for MemoType {
34912 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34913 f.write_str(self.name())
34914 }
34915}
34916
34917impl TryFrom<i32> for MemoType {
34918 type Error = Error;
34919
34920 fn try_from(i: i32) -> Result<Self, Error> {
34921 let e = match i {
34922 0 => MemoType::None,
34923 1 => MemoType::Text,
34924 2 => MemoType::Id,
34925 3 => MemoType::Hash,
34926 4 => MemoType::Return,
34927 #[allow(unreachable_patterns)]
34928 _ => return Err(Error::Invalid),
34929 };
34930 Ok(e)
34931 }
34932}
34933
34934impl From<MemoType> for i32 {
34935 #[must_use]
34936 fn from(e: MemoType) -> Self {
34937 e as Self
34938 }
34939}
34940
34941impl ReadXdr for MemoType {
34942 #[cfg(feature = "std")]
34943 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
34944 r.with_limited_depth(|r| {
34945 let e = i32::read_xdr(r)?;
34946 let v: Self = e.try_into()?;
34947 Ok(v)
34948 })
34949 }
34950}
34951
34952impl WriteXdr for MemoType {
34953 #[cfg(feature = "std")]
34954 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
34955 w.with_limited_depth(|w| {
34956 let i: i32 = (*self).into();
34957 i.write_xdr(w)
34958 })
34959 }
34960}
34961
34962#[cfg_eval::cfg_eval]
34982#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
34983#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
34984#[cfg_attr(
34985 all(feature = "serde", feature = "alloc"),
34986 serde_with::serde_as,
34987 derive(serde::Serialize, serde::Deserialize),
34988 serde(rename_all = "snake_case")
34989)]
34990#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
34991#[allow(clippy::large_enum_variant)]
34992pub enum Memo {
34993 None,
34994 Text(StringM<28>),
34995 Id(
34996 #[cfg_attr(
34997 all(feature = "serde", feature = "alloc"),
34998 serde_as(as = "NumberOrString")
34999 )]
35000 u64,
35001 ),
35002 Hash(Hash),
35003 Return(Hash),
35004}
35005
35006#[cfg(feature = "alloc")]
35007impl Default for Memo {
35008 fn default() -> Self {
35009 Self::None
35010 }
35011}
35012
35013impl Memo {
35014 pub const VARIANTS: [MemoType; 5] = [
35015 MemoType::None,
35016 MemoType::Text,
35017 MemoType::Id,
35018 MemoType::Hash,
35019 MemoType::Return,
35020 ];
35021 pub const VARIANTS_STR: [&'static str; 5] = ["None", "Text", "Id", "Hash", "Return"];
35022
35023 #[must_use]
35024 pub const fn name(&self) -> &'static str {
35025 match self {
35026 Self::None => "None",
35027 Self::Text(_) => "Text",
35028 Self::Id(_) => "Id",
35029 Self::Hash(_) => "Hash",
35030 Self::Return(_) => "Return",
35031 }
35032 }
35033
35034 #[must_use]
35035 pub const fn discriminant(&self) -> MemoType {
35036 #[allow(clippy::match_same_arms)]
35037 match self {
35038 Self::None => MemoType::None,
35039 Self::Text(_) => MemoType::Text,
35040 Self::Id(_) => MemoType::Id,
35041 Self::Hash(_) => MemoType::Hash,
35042 Self::Return(_) => MemoType::Return,
35043 }
35044 }
35045
35046 #[must_use]
35047 pub const fn variants() -> [MemoType; 5] {
35048 Self::VARIANTS
35049 }
35050}
35051
35052impl Name for Memo {
35053 #[must_use]
35054 fn name(&self) -> &'static str {
35055 Self::name(self)
35056 }
35057}
35058
35059impl Discriminant<MemoType> for Memo {
35060 #[must_use]
35061 fn discriminant(&self) -> MemoType {
35062 Self::discriminant(self)
35063 }
35064}
35065
35066impl Variants<MemoType> for Memo {
35067 fn variants() -> slice::Iter<'static, MemoType> {
35068 Self::VARIANTS.iter()
35069 }
35070}
35071
35072impl Union<MemoType> for Memo {}
35073
35074impl ReadXdr for Memo {
35075 #[cfg(feature = "std")]
35076 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35077 r.with_limited_depth(|r| {
35078 let dv: MemoType = <MemoType as ReadXdr>::read_xdr(r)?;
35079 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
35080 let v = match dv {
35081 MemoType::None => Self::None,
35082 MemoType::Text => Self::Text(StringM::<28>::read_xdr(r)?),
35083 MemoType::Id => Self::Id(u64::read_xdr(r)?),
35084 MemoType::Hash => Self::Hash(Hash::read_xdr(r)?),
35085 MemoType::Return => Self::Return(Hash::read_xdr(r)?),
35086 #[allow(unreachable_patterns)]
35087 _ => return Err(Error::Invalid),
35088 };
35089 Ok(v)
35090 })
35091 }
35092}
35093
35094impl WriteXdr for Memo {
35095 #[cfg(feature = "std")]
35096 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35097 w.with_limited_depth(|w| {
35098 self.discriminant().write_xdr(w)?;
35099 #[allow(clippy::match_same_arms)]
35100 match self {
35101 Self::None => ().write_xdr(w)?,
35102 Self::Text(v) => v.write_xdr(w)?,
35103 Self::Id(v) => v.write_xdr(w)?,
35104 Self::Hash(v) => v.write_xdr(w)?,
35105 Self::Return(v) => v.write_xdr(w)?,
35106 };
35107 Ok(())
35108 })
35109 }
35110}
35111
35112#[cfg_attr(feature = "alloc", derive(Default))]
35123#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35124#[cfg_eval::cfg_eval]
35125#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35126#[cfg_attr(
35127 all(feature = "serde", feature = "alloc"),
35128 serde_with::serde_as,
35129 derive(serde::Serialize, serde::Deserialize),
35130 serde(rename_all = "snake_case")
35131)]
35132#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35133pub struct TimeBounds {
35134 pub min_time: TimePoint,
35135 pub max_time: TimePoint,
35136}
35137
35138impl ReadXdr for TimeBounds {
35139 #[cfg(feature = "std")]
35140 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35141 r.with_limited_depth(|r| {
35142 Ok(Self {
35143 min_time: TimePoint::read_xdr(r)?,
35144 max_time: TimePoint::read_xdr(r)?,
35145 })
35146 })
35147 }
35148}
35149
35150impl WriteXdr for TimeBounds {
35151 #[cfg(feature = "std")]
35152 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35153 w.with_limited_depth(|w| {
35154 self.min_time.write_xdr(w)?;
35155 self.max_time.write_xdr(w)?;
35156 Ok(())
35157 })
35158 }
35159}
35160
35161#[cfg_attr(feature = "alloc", derive(Default))]
35172#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35173#[cfg_eval::cfg_eval]
35174#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35175#[cfg_attr(
35176 all(feature = "serde", feature = "alloc"),
35177 serde_with::serde_as,
35178 derive(serde::Serialize, serde::Deserialize),
35179 serde(rename_all = "snake_case")
35180)]
35181#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35182pub struct LedgerBounds {
35183 pub min_ledger: u32,
35184 pub max_ledger: u32,
35185}
35186
35187impl ReadXdr for LedgerBounds {
35188 #[cfg(feature = "std")]
35189 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35190 r.with_limited_depth(|r| {
35191 Ok(Self {
35192 min_ledger: u32::read_xdr(r)?,
35193 max_ledger: u32::read_xdr(r)?,
35194 })
35195 })
35196 }
35197}
35198
35199impl WriteXdr for LedgerBounds {
35200 #[cfg(feature = "std")]
35201 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35202 w.with_limited_depth(|w| {
35203 self.min_ledger.write_xdr(w)?;
35204 self.max_ledger.write_xdr(w)?;
35205 Ok(())
35206 })
35207 }
35208}
35209
35210#[cfg_attr(feature = "alloc", derive(Default))]
35248#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35249#[cfg_eval::cfg_eval]
35250#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35251#[cfg_attr(
35252 all(feature = "serde", feature = "alloc"),
35253 serde_with::serde_as,
35254 derive(serde::Serialize, serde::Deserialize),
35255 serde(rename_all = "snake_case")
35256)]
35257#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35258pub struct PreconditionsV2 {
35259 pub time_bounds: Option<TimeBounds>,
35260 pub ledger_bounds: Option<LedgerBounds>,
35261 pub min_seq_num: Option<SequenceNumber>,
35262 pub min_seq_age: Duration,
35263 pub min_seq_ledger_gap: u32,
35264 pub extra_signers: VecM<SignerKey, 2>,
35265}
35266
35267impl ReadXdr for PreconditionsV2 {
35268 #[cfg(feature = "std")]
35269 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35270 r.with_limited_depth(|r| {
35271 Ok(Self {
35272 time_bounds: Option::<TimeBounds>::read_xdr(r)?,
35273 ledger_bounds: Option::<LedgerBounds>::read_xdr(r)?,
35274 min_seq_num: Option::<SequenceNumber>::read_xdr(r)?,
35275 min_seq_age: Duration::read_xdr(r)?,
35276 min_seq_ledger_gap: u32::read_xdr(r)?,
35277 extra_signers: VecM::<SignerKey, 2>::read_xdr(r)?,
35278 })
35279 })
35280 }
35281}
35282
35283impl WriteXdr for PreconditionsV2 {
35284 #[cfg(feature = "std")]
35285 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35286 w.with_limited_depth(|w| {
35287 self.time_bounds.write_xdr(w)?;
35288 self.ledger_bounds.write_xdr(w)?;
35289 self.min_seq_num.write_xdr(w)?;
35290 self.min_seq_age.write_xdr(w)?;
35291 self.min_seq_ledger_gap.write_xdr(w)?;
35292 self.extra_signers.write_xdr(w)?;
35293 Ok(())
35294 })
35295 }
35296}
35297
35298#[cfg_attr(feature = "alloc", derive(Default))]
35311#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35312#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35313#[cfg_attr(
35314 all(feature = "serde", feature = "alloc"),
35315 derive(serde::Serialize, serde::Deserialize),
35316 serde(rename_all = "snake_case")
35317)]
35318#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35319#[repr(i32)]
35320pub enum PreconditionType {
35321 #[cfg_attr(feature = "alloc", default)]
35322 None = 0,
35323 Time = 1,
35324 V2 = 2,
35325}
35326
35327impl PreconditionType {
35328 pub const VARIANTS: [PreconditionType; 3] = [
35329 PreconditionType::None,
35330 PreconditionType::Time,
35331 PreconditionType::V2,
35332 ];
35333 pub const VARIANTS_STR: [&'static str; 3] = ["None", "Time", "V2"];
35334
35335 #[must_use]
35336 pub const fn name(&self) -> &'static str {
35337 match self {
35338 Self::None => "None",
35339 Self::Time => "Time",
35340 Self::V2 => "V2",
35341 }
35342 }
35343
35344 #[must_use]
35345 pub const fn variants() -> [PreconditionType; 3] {
35346 Self::VARIANTS
35347 }
35348}
35349
35350impl Name for PreconditionType {
35351 #[must_use]
35352 fn name(&self) -> &'static str {
35353 Self::name(self)
35354 }
35355}
35356
35357impl Variants<PreconditionType> for PreconditionType {
35358 fn variants() -> slice::Iter<'static, PreconditionType> {
35359 Self::VARIANTS.iter()
35360 }
35361}
35362
35363impl Enum for PreconditionType {}
35364
35365impl fmt::Display for PreconditionType {
35366 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35367 f.write_str(self.name())
35368 }
35369}
35370
35371impl TryFrom<i32> for PreconditionType {
35372 type Error = Error;
35373
35374 fn try_from(i: i32) -> Result<Self, Error> {
35375 let e = match i {
35376 0 => PreconditionType::None,
35377 1 => PreconditionType::Time,
35378 2 => PreconditionType::V2,
35379 #[allow(unreachable_patterns)]
35380 _ => return Err(Error::Invalid),
35381 };
35382 Ok(e)
35383 }
35384}
35385
35386impl From<PreconditionType> for i32 {
35387 #[must_use]
35388 fn from(e: PreconditionType) -> Self {
35389 e as Self
35390 }
35391}
35392
35393impl ReadXdr for PreconditionType {
35394 #[cfg(feature = "std")]
35395 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35396 r.with_limited_depth(|r| {
35397 let e = i32::read_xdr(r)?;
35398 let v: Self = e.try_into()?;
35399 Ok(v)
35400 })
35401 }
35402}
35403
35404impl WriteXdr for PreconditionType {
35405 #[cfg(feature = "std")]
35406 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35407 w.with_limited_depth(|w| {
35408 let i: i32 = (*self).into();
35409 i.write_xdr(w)
35410 })
35411 }
35412}
35413
35414#[cfg_eval::cfg_eval]
35430#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35431#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35432#[cfg_attr(
35433 all(feature = "serde", feature = "alloc"),
35434 serde_with::serde_as,
35435 derive(serde::Serialize, serde::Deserialize),
35436 serde(rename_all = "snake_case")
35437)]
35438#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35439#[allow(clippy::large_enum_variant)]
35440pub enum Preconditions {
35441 None,
35442 Time(TimeBounds),
35443 V2(PreconditionsV2),
35444}
35445
35446#[cfg(feature = "alloc")]
35447impl Default for Preconditions {
35448 fn default() -> Self {
35449 Self::None
35450 }
35451}
35452
35453impl Preconditions {
35454 pub const VARIANTS: [PreconditionType; 3] = [
35455 PreconditionType::None,
35456 PreconditionType::Time,
35457 PreconditionType::V2,
35458 ];
35459 pub const VARIANTS_STR: [&'static str; 3] = ["None", "Time", "V2"];
35460
35461 #[must_use]
35462 pub const fn name(&self) -> &'static str {
35463 match self {
35464 Self::None => "None",
35465 Self::Time(_) => "Time",
35466 Self::V2(_) => "V2",
35467 }
35468 }
35469
35470 #[must_use]
35471 pub const fn discriminant(&self) -> PreconditionType {
35472 #[allow(clippy::match_same_arms)]
35473 match self {
35474 Self::None => PreconditionType::None,
35475 Self::Time(_) => PreconditionType::Time,
35476 Self::V2(_) => PreconditionType::V2,
35477 }
35478 }
35479
35480 #[must_use]
35481 pub const fn variants() -> [PreconditionType; 3] {
35482 Self::VARIANTS
35483 }
35484}
35485
35486impl Name for Preconditions {
35487 #[must_use]
35488 fn name(&self) -> &'static str {
35489 Self::name(self)
35490 }
35491}
35492
35493impl Discriminant<PreconditionType> for Preconditions {
35494 #[must_use]
35495 fn discriminant(&self) -> PreconditionType {
35496 Self::discriminant(self)
35497 }
35498}
35499
35500impl Variants<PreconditionType> for Preconditions {
35501 fn variants() -> slice::Iter<'static, PreconditionType> {
35502 Self::VARIANTS.iter()
35503 }
35504}
35505
35506impl Union<PreconditionType> for Preconditions {}
35507
35508impl ReadXdr for Preconditions {
35509 #[cfg(feature = "std")]
35510 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35511 r.with_limited_depth(|r| {
35512 let dv: PreconditionType = <PreconditionType as ReadXdr>::read_xdr(r)?;
35513 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
35514 let v = match dv {
35515 PreconditionType::None => Self::None,
35516 PreconditionType::Time => Self::Time(TimeBounds::read_xdr(r)?),
35517 PreconditionType::V2 => Self::V2(PreconditionsV2::read_xdr(r)?),
35518 #[allow(unreachable_patterns)]
35519 _ => return Err(Error::Invalid),
35520 };
35521 Ok(v)
35522 })
35523 }
35524}
35525
35526impl WriteXdr for Preconditions {
35527 #[cfg(feature = "std")]
35528 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35529 w.with_limited_depth(|w| {
35530 self.discriminant().write_xdr(w)?;
35531 #[allow(clippy::match_same_arms)]
35532 match self {
35533 Self::None => ().write_xdr(w)?,
35534 Self::Time(v) => v.write_xdr(w)?,
35535 Self::V2(v) => v.write_xdr(w)?,
35536 };
35537 Ok(())
35538 })
35539 }
35540}
35541
35542#[cfg_attr(feature = "alloc", derive(Default))]
35553#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35554#[cfg_eval::cfg_eval]
35555#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35556#[cfg_attr(
35557 all(feature = "serde", feature = "alloc"),
35558 serde_with::serde_as,
35559 derive(serde::Serialize, serde::Deserialize),
35560 serde(rename_all = "snake_case")
35561)]
35562#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35563pub struct LedgerFootprint {
35564 pub read_only: VecM<LedgerKey>,
35565 pub read_write: VecM<LedgerKey>,
35566}
35567
35568impl ReadXdr for LedgerFootprint {
35569 #[cfg(feature = "std")]
35570 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35571 r.with_limited_depth(|r| {
35572 Ok(Self {
35573 read_only: VecM::<LedgerKey>::read_xdr(r)?,
35574 read_write: VecM::<LedgerKey>::read_xdr(r)?,
35575 })
35576 })
35577 }
35578}
35579
35580impl WriteXdr for LedgerFootprint {
35581 #[cfg(feature = "std")]
35582 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35583 w.with_limited_depth(|w| {
35584 self.read_only.write_xdr(w)?;
35585 self.read_write.write_xdr(w)?;
35586 Ok(())
35587 })
35588 }
35589}
35590
35591#[cfg_attr(feature = "alloc", derive(Default))]
35609#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35610#[cfg_eval::cfg_eval]
35611#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35612#[cfg_attr(
35613 all(feature = "serde", feature = "alloc"),
35614 serde_with::serde_as,
35615 derive(serde::Serialize, serde::Deserialize),
35616 serde(rename_all = "snake_case")
35617)]
35618#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35619pub struct SorobanResources {
35620 pub footprint: LedgerFootprint,
35621 pub instructions: u32,
35622 pub disk_read_bytes: u32,
35623 pub write_bytes: u32,
35624}
35625
35626impl ReadXdr for SorobanResources {
35627 #[cfg(feature = "std")]
35628 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35629 r.with_limited_depth(|r| {
35630 Ok(Self {
35631 footprint: LedgerFootprint::read_xdr(r)?,
35632 instructions: u32::read_xdr(r)?,
35633 disk_read_bytes: u32::read_xdr(r)?,
35634 write_bytes: u32::read_xdr(r)?,
35635 })
35636 })
35637 }
35638}
35639
35640impl WriteXdr for SorobanResources {
35641 #[cfg(feature = "std")]
35642 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35643 w.with_limited_depth(|w| {
35644 self.footprint.write_xdr(w)?;
35645 self.instructions.write_xdr(w)?;
35646 self.disk_read_bytes.write_xdr(w)?;
35647 self.write_bytes.write_xdr(w)?;
35648 Ok(())
35649 })
35650 }
35651}
35652
35653#[cfg_attr(feature = "alloc", derive(Default))]
35666#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35667#[cfg_eval::cfg_eval]
35668#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35669#[cfg_attr(
35670 all(feature = "serde", feature = "alloc"),
35671 serde_with::serde_as,
35672 derive(serde::Serialize, serde::Deserialize),
35673 serde(rename_all = "snake_case")
35674)]
35675#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35676pub struct SorobanResourcesExtV0 {
35677 pub archived_soroban_entries: VecM<u32>,
35678}
35679
35680impl ReadXdr for SorobanResourcesExtV0 {
35681 #[cfg(feature = "std")]
35682 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35683 r.with_limited_depth(|r| {
35684 Ok(Self {
35685 archived_soroban_entries: VecM::<u32>::read_xdr(r)?,
35686 })
35687 })
35688 }
35689}
35690
35691impl WriteXdr for SorobanResourcesExtV0 {
35692 #[cfg(feature = "std")]
35693 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35694 w.with_limited_depth(|w| {
35695 self.archived_soroban_entries.write_xdr(w)?;
35696 Ok(())
35697 })
35698 }
35699}
35700
35701#[cfg_eval::cfg_eval]
35715#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35716#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35717#[cfg_attr(
35718 all(feature = "serde", feature = "alloc"),
35719 serde_with::serde_as,
35720 derive(serde::Serialize, serde::Deserialize),
35721 serde(rename_all = "snake_case")
35722)]
35723#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35724#[allow(clippy::large_enum_variant)]
35725pub enum SorobanTransactionDataExt {
35726 V0,
35727 V1(SorobanResourcesExtV0),
35728}
35729
35730#[cfg(feature = "alloc")]
35731impl Default for SorobanTransactionDataExt {
35732 fn default() -> Self {
35733 Self::V0
35734 }
35735}
35736
35737impl SorobanTransactionDataExt {
35738 pub const VARIANTS: [i32; 2] = [0, 1];
35739 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
35740
35741 #[must_use]
35742 pub const fn name(&self) -> &'static str {
35743 match self {
35744 Self::V0 => "V0",
35745 Self::V1(_) => "V1",
35746 }
35747 }
35748
35749 #[must_use]
35750 pub const fn discriminant(&self) -> i32 {
35751 #[allow(clippy::match_same_arms)]
35752 match self {
35753 Self::V0 => 0,
35754 Self::V1(_) => 1,
35755 }
35756 }
35757
35758 #[must_use]
35759 pub const fn variants() -> [i32; 2] {
35760 Self::VARIANTS
35761 }
35762}
35763
35764impl Name for SorobanTransactionDataExt {
35765 #[must_use]
35766 fn name(&self) -> &'static str {
35767 Self::name(self)
35768 }
35769}
35770
35771impl Discriminant<i32> for SorobanTransactionDataExt {
35772 #[must_use]
35773 fn discriminant(&self) -> i32 {
35774 Self::discriminant(self)
35775 }
35776}
35777
35778impl Variants<i32> for SorobanTransactionDataExt {
35779 fn variants() -> slice::Iter<'static, i32> {
35780 Self::VARIANTS.iter()
35781 }
35782}
35783
35784impl Union<i32> for SorobanTransactionDataExt {}
35785
35786impl ReadXdr for SorobanTransactionDataExt {
35787 #[cfg(feature = "std")]
35788 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35789 r.with_limited_depth(|r| {
35790 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
35791 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
35792 let v = match dv {
35793 0 => Self::V0,
35794 1 => Self::V1(SorobanResourcesExtV0::read_xdr(r)?),
35795 #[allow(unreachable_patterns)]
35796 _ => return Err(Error::Invalid),
35797 };
35798 Ok(v)
35799 })
35800 }
35801}
35802
35803impl WriteXdr for SorobanTransactionDataExt {
35804 #[cfg(feature = "std")]
35805 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35806 w.with_limited_depth(|w| {
35807 self.discriminant().write_xdr(w)?;
35808 #[allow(clippy::match_same_arms)]
35809 match self {
35810 Self::V0 => ().write_xdr(w)?,
35811 Self::V1(v) => v.write_xdr(w)?,
35812 };
35813 Ok(())
35814 })
35815 }
35816}
35817
35818#[cfg_attr(feature = "alloc", derive(Default))]
35845#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35846#[cfg_eval::cfg_eval]
35847#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35848#[cfg_attr(
35849 all(feature = "serde", feature = "alloc"),
35850 serde_with::serde_as,
35851 derive(serde::Serialize, serde::Deserialize),
35852 serde(rename_all = "snake_case")
35853)]
35854#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35855pub struct SorobanTransactionData {
35856 pub ext: SorobanTransactionDataExt,
35857 pub resources: SorobanResources,
35858 #[cfg_attr(
35859 all(feature = "serde", feature = "alloc"),
35860 serde_as(as = "NumberOrString")
35861 )]
35862 pub resource_fee: i64,
35863}
35864
35865impl ReadXdr for SorobanTransactionData {
35866 #[cfg(feature = "std")]
35867 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35868 r.with_limited_depth(|r| {
35869 Ok(Self {
35870 ext: SorobanTransactionDataExt::read_xdr(r)?,
35871 resources: SorobanResources::read_xdr(r)?,
35872 resource_fee: i64::read_xdr(r)?,
35873 })
35874 })
35875 }
35876}
35877
35878impl WriteXdr for SorobanTransactionData {
35879 #[cfg(feature = "std")]
35880 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35881 w.with_limited_depth(|w| {
35882 self.ext.write_xdr(w)?;
35883 self.resources.write_xdr(w)?;
35884 self.resource_fee.write_xdr(w)?;
35885 Ok(())
35886 })
35887 }
35888}
35889
35890#[cfg_eval::cfg_eval]
35902#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
35903#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
35904#[cfg_attr(
35905 all(feature = "serde", feature = "alloc"),
35906 serde_with::serde_as,
35907 derive(serde::Serialize, serde::Deserialize),
35908 serde(rename_all = "snake_case")
35909)]
35910#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
35911#[allow(clippy::large_enum_variant)]
35912pub enum TransactionV0Ext {
35913 V0,
35914}
35915
35916#[cfg(feature = "alloc")]
35917impl Default for TransactionV0Ext {
35918 fn default() -> Self {
35919 Self::V0
35920 }
35921}
35922
35923impl TransactionV0Ext {
35924 pub const VARIANTS: [i32; 1] = [0];
35925 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
35926
35927 #[must_use]
35928 pub const fn name(&self) -> &'static str {
35929 match self {
35930 Self::V0 => "V0",
35931 }
35932 }
35933
35934 #[must_use]
35935 pub const fn discriminant(&self) -> i32 {
35936 #[allow(clippy::match_same_arms)]
35937 match self {
35938 Self::V0 => 0,
35939 }
35940 }
35941
35942 #[must_use]
35943 pub const fn variants() -> [i32; 1] {
35944 Self::VARIANTS
35945 }
35946}
35947
35948impl Name for TransactionV0Ext {
35949 #[must_use]
35950 fn name(&self) -> &'static str {
35951 Self::name(self)
35952 }
35953}
35954
35955impl Discriminant<i32> for TransactionV0Ext {
35956 #[must_use]
35957 fn discriminant(&self) -> i32 {
35958 Self::discriminant(self)
35959 }
35960}
35961
35962impl Variants<i32> for TransactionV0Ext {
35963 fn variants() -> slice::Iter<'static, i32> {
35964 Self::VARIANTS.iter()
35965 }
35966}
35967
35968impl Union<i32> for TransactionV0Ext {}
35969
35970impl ReadXdr for TransactionV0Ext {
35971 #[cfg(feature = "std")]
35972 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
35973 r.with_limited_depth(|r| {
35974 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
35975 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
35976 let v = match dv {
35977 0 => Self::V0,
35978 #[allow(unreachable_patterns)]
35979 _ => return Err(Error::Invalid),
35980 };
35981 Ok(v)
35982 })
35983 }
35984}
35985
35986impl WriteXdr for TransactionV0Ext {
35987 #[cfg(feature = "std")]
35988 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
35989 w.with_limited_depth(|w| {
35990 self.discriminant().write_xdr(w)?;
35991 #[allow(clippy::match_same_arms)]
35992 match self {
35993 Self::V0 => ().write_xdr(w)?,
35994 };
35995 Ok(())
35996 })
35997 }
35998}
35999
36000#[cfg_attr(feature = "alloc", derive(Default))]
36021#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36022#[cfg_eval::cfg_eval]
36023#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36024#[cfg_attr(
36025 all(feature = "serde", feature = "alloc"),
36026 serde_with::serde_as,
36027 derive(serde::Serialize, serde::Deserialize),
36028 serde(rename_all = "snake_case")
36029)]
36030#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36031pub struct TransactionV0 {
36032 pub source_account_ed25519: Uint256,
36033 pub fee: u32,
36034 pub seq_num: SequenceNumber,
36035 pub time_bounds: Option<TimeBounds>,
36036 pub memo: Memo,
36037 pub operations: VecM<Operation, 100>,
36038 pub ext: TransactionV0Ext,
36039}
36040
36041impl ReadXdr for TransactionV0 {
36042 #[cfg(feature = "std")]
36043 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36044 r.with_limited_depth(|r| {
36045 Ok(Self {
36046 source_account_ed25519: Uint256::read_xdr(r)?,
36047 fee: u32::read_xdr(r)?,
36048 seq_num: SequenceNumber::read_xdr(r)?,
36049 time_bounds: Option::<TimeBounds>::read_xdr(r)?,
36050 memo: Memo::read_xdr(r)?,
36051 operations: VecM::<Operation, 100>::read_xdr(r)?,
36052 ext: TransactionV0Ext::read_xdr(r)?,
36053 })
36054 })
36055 }
36056}
36057
36058impl WriteXdr for TransactionV0 {
36059 #[cfg(feature = "std")]
36060 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36061 w.with_limited_depth(|w| {
36062 self.source_account_ed25519.write_xdr(w)?;
36063 self.fee.write_xdr(w)?;
36064 self.seq_num.write_xdr(w)?;
36065 self.time_bounds.write_xdr(w)?;
36066 self.memo.write_xdr(w)?;
36067 self.operations.write_xdr(w)?;
36068 self.ext.write_xdr(w)?;
36069 Ok(())
36070 })
36071 }
36072}
36073
36074#[cfg_attr(feature = "alloc", derive(Default))]
36087#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36088#[cfg_eval::cfg_eval]
36089#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36090#[cfg_attr(
36091 all(feature = "serde", feature = "alloc"),
36092 serde_with::serde_as,
36093 derive(serde::Serialize, serde::Deserialize),
36094 serde(rename_all = "snake_case")
36095)]
36096#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36097pub struct TransactionV0Envelope {
36098 pub tx: TransactionV0,
36099 pub signatures: VecM<DecoratedSignature, 20>,
36100}
36101
36102impl ReadXdr for TransactionV0Envelope {
36103 #[cfg(feature = "std")]
36104 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36105 r.with_limited_depth(|r| {
36106 Ok(Self {
36107 tx: TransactionV0::read_xdr(r)?,
36108 signatures: VecM::<DecoratedSignature, 20>::read_xdr(r)?,
36109 })
36110 })
36111 }
36112}
36113
36114impl WriteXdr for TransactionV0Envelope {
36115 #[cfg(feature = "std")]
36116 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36117 w.with_limited_depth(|w| {
36118 self.tx.write_xdr(w)?;
36119 self.signatures.write_xdr(w)?;
36120 Ok(())
36121 })
36122 }
36123}
36124
36125#[cfg_eval::cfg_eval]
36139#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36140#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36141#[cfg_attr(
36142 all(feature = "serde", feature = "alloc"),
36143 serde_with::serde_as,
36144 derive(serde::Serialize, serde::Deserialize),
36145 serde(rename_all = "snake_case")
36146)]
36147#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36148#[allow(clippy::large_enum_variant)]
36149pub enum TransactionExt {
36150 V0,
36151 V1(SorobanTransactionData),
36152}
36153
36154#[cfg(feature = "alloc")]
36155impl Default for TransactionExt {
36156 fn default() -> Self {
36157 Self::V0
36158 }
36159}
36160
36161impl TransactionExt {
36162 pub const VARIANTS: [i32; 2] = [0, 1];
36163 pub const VARIANTS_STR: [&'static str; 2] = ["V0", "V1"];
36164
36165 #[must_use]
36166 pub const fn name(&self) -> &'static str {
36167 match self {
36168 Self::V0 => "V0",
36169 Self::V1(_) => "V1",
36170 }
36171 }
36172
36173 #[must_use]
36174 pub const fn discriminant(&self) -> i32 {
36175 #[allow(clippy::match_same_arms)]
36176 match self {
36177 Self::V0 => 0,
36178 Self::V1(_) => 1,
36179 }
36180 }
36181
36182 #[must_use]
36183 pub const fn variants() -> [i32; 2] {
36184 Self::VARIANTS
36185 }
36186}
36187
36188impl Name for TransactionExt {
36189 #[must_use]
36190 fn name(&self) -> &'static str {
36191 Self::name(self)
36192 }
36193}
36194
36195impl Discriminant<i32> for TransactionExt {
36196 #[must_use]
36197 fn discriminant(&self) -> i32 {
36198 Self::discriminant(self)
36199 }
36200}
36201
36202impl Variants<i32> for TransactionExt {
36203 fn variants() -> slice::Iter<'static, i32> {
36204 Self::VARIANTS.iter()
36205 }
36206}
36207
36208impl Union<i32> for TransactionExt {}
36209
36210impl ReadXdr for TransactionExt {
36211 #[cfg(feature = "std")]
36212 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36213 r.with_limited_depth(|r| {
36214 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
36215 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
36216 let v = match dv {
36217 0 => Self::V0,
36218 1 => Self::V1(SorobanTransactionData::read_xdr(r)?),
36219 #[allow(unreachable_patterns)]
36220 _ => return Err(Error::Invalid),
36221 };
36222 Ok(v)
36223 })
36224 }
36225}
36226
36227impl WriteXdr for TransactionExt {
36228 #[cfg(feature = "std")]
36229 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36230 w.with_limited_depth(|w| {
36231 self.discriminant().write_xdr(w)?;
36232 #[allow(clippy::match_same_arms)]
36233 match self {
36234 Self::V0 => ().write_xdr(w)?,
36235 Self::V1(v) => v.write_xdr(w)?,
36236 };
36237 Ok(())
36238 })
36239 }
36240}
36241
36242#[cfg_attr(feature = "alloc", derive(Default))]
36275#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36276#[cfg_eval::cfg_eval]
36277#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36278#[cfg_attr(
36279 all(feature = "serde", feature = "alloc"),
36280 serde_with::serde_as,
36281 derive(serde::Serialize, serde::Deserialize),
36282 serde(rename_all = "snake_case")
36283)]
36284#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36285pub struct Transaction {
36286 pub source_account: MuxedAccount,
36287 pub fee: u32,
36288 pub seq_num: SequenceNumber,
36289 pub cond: Preconditions,
36290 pub memo: Memo,
36291 pub operations: VecM<Operation, 100>,
36292 pub ext: TransactionExt,
36293}
36294
36295impl ReadXdr for Transaction {
36296 #[cfg(feature = "std")]
36297 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36298 r.with_limited_depth(|r| {
36299 Ok(Self {
36300 source_account: MuxedAccount::read_xdr(r)?,
36301 fee: u32::read_xdr(r)?,
36302 seq_num: SequenceNumber::read_xdr(r)?,
36303 cond: Preconditions::read_xdr(r)?,
36304 memo: Memo::read_xdr(r)?,
36305 operations: VecM::<Operation, 100>::read_xdr(r)?,
36306 ext: TransactionExt::read_xdr(r)?,
36307 })
36308 })
36309 }
36310}
36311
36312impl WriteXdr for Transaction {
36313 #[cfg(feature = "std")]
36314 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36315 w.with_limited_depth(|w| {
36316 self.source_account.write_xdr(w)?;
36317 self.fee.write_xdr(w)?;
36318 self.seq_num.write_xdr(w)?;
36319 self.cond.write_xdr(w)?;
36320 self.memo.write_xdr(w)?;
36321 self.operations.write_xdr(w)?;
36322 self.ext.write_xdr(w)?;
36323 Ok(())
36324 })
36325 }
36326}
36327
36328#[cfg_attr(feature = "alloc", derive(Default))]
36341#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36342#[cfg_eval::cfg_eval]
36343#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36344#[cfg_attr(
36345 all(feature = "serde", feature = "alloc"),
36346 serde_with::serde_as,
36347 derive(serde::Serialize, serde::Deserialize),
36348 serde(rename_all = "snake_case")
36349)]
36350#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36351pub struct TransactionV1Envelope {
36352 pub tx: Transaction,
36353 pub signatures: VecM<DecoratedSignature, 20>,
36354}
36355
36356impl ReadXdr for TransactionV1Envelope {
36357 #[cfg(feature = "std")]
36358 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36359 r.with_limited_depth(|r| {
36360 Ok(Self {
36361 tx: Transaction::read_xdr(r)?,
36362 signatures: VecM::<DecoratedSignature, 20>::read_xdr(r)?,
36363 })
36364 })
36365 }
36366}
36367
36368impl WriteXdr for TransactionV1Envelope {
36369 #[cfg(feature = "std")]
36370 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36371 w.with_limited_depth(|w| {
36372 self.tx.write_xdr(w)?;
36373 self.signatures.write_xdr(w)?;
36374 Ok(())
36375 })
36376 }
36377}
36378
36379#[cfg_eval::cfg_eval]
36391#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36392#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36393#[cfg_attr(
36394 all(feature = "serde", feature = "alloc"),
36395 serde_with::serde_as,
36396 derive(serde::Serialize, serde::Deserialize),
36397 serde(rename_all = "snake_case")
36398)]
36399#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36400#[allow(clippy::large_enum_variant)]
36401pub enum FeeBumpTransactionInnerTx {
36402 Tx(TransactionV1Envelope),
36403}
36404
36405#[cfg(feature = "alloc")]
36406impl Default for FeeBumpTransactionInnerTx {
36407 fn default() -> Self {
36408 Self::Tx(TransactionV1Envelope::default())
36409 }
36410}
36411
36412impl FeeBumpTransactionInnerTx {
36413 pub const VARIANTS: [EnvelopeType; 1] = [EnvelopeType::Tx];
36414 pub const VARIANTS_STR: [&'static str; 1] = ["Tx"];
36415
36416 #[must_use]
36417 pub const fn name(&self) -> &'static str {
36418 match self {
36419 Self::Tx(_) => "Tx",
36420 }
36421 }
36422
36423 #[must_use]
36424 pub const fn discriminant(&self) -> EnvelopeType {
36425 #[allow(clippy::match_same_arms)]
36426 match self {
36427 Self::Tx(_) => EnvelopeType::Tx,
36428 }
36429 }
36430
36431 #[must_use]
36432 pub const fn variants() -> [EnvelopeType; 1] {
36433 Self::VARIANTS
36434 }
36435}
36436
36437impl Name for FeeBumpTransactionInnerTx {
36438 #[must_use]
36439 fn name(&self) -> &'static str {
36440 Self::name(self)
36441 }
36442}
36443
36444impl Discriminant<EnvelopeType> for FeeBumpTransactionInnerTx {
36445 #[must_use]
36446 fn discriminant(&self) -> EnvelopeType {
36447 Self::discriminant(self)
36448 }
36449}
36450
36451impl Variants<EnvelopeType> for FeeBumpTransactionInnerTx {
36452 fn variants() -> slice::Iter<'static, EnvelopeType> {
36453 Self::VARIANTS.iter()
36454 }
36455}
36456
36457impl Union<EnvelopeType> for FeeBumpTransactionInnerTx {}
36458
36459impl ReadXdr for FeeBumpTransactionInnerTx {
36460 #[cfg(feature = "std")]
36461 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36462 r.with_limited_depth(|r| {
36463 let dv: EnvelopeType = <EnvelopeType as ReadXdr>::read_xdr(r)?;
36464 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
36465 let v = match dv {
36466 EnvelopeType::Tx => Self::Tx(TransactionV1Envelope::read_xdr(r)?),
36467 #[allow(unreachable_patterns)]
36468 _ => return Err(Error::Invalid),
36469 };
36470 Ok(v)
36471 })
36472 }
36473}
36474
36475impl WriteXdr for FeeBumpTransactionInnerTx {
36476 #[cfg(feature = "std")]
36477 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36478 w.with_limited_depth(|w| {
36479 self.discriminant().write_xdr(w)?;
36480 #[allow(clippy::match_same_arms)]
36481 match self {
36482 Self::Tx(v) => v.write_xdr(w)?,
36483 };
36484 Ok(())
36485 })
36486 }
36487}
36488
36489#[cfg_eval::cfg_eval]
36501#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36502#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36503#[cfg_attr(
36504 all(feature = "serde", feature = "alloc"),
36505 serde_with::serde_as,
36506 derive(serde::Serialize, serde::Deserialize),
36507 serde(rename_all = "snake_case")
36508)]
36509#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36510#[allow(clippy::large_enum_variant)]
36511pub enum FeeBumpTransactionExt {
36512 V0,
36513}
36514
36515#[cfg(feature = "alloc")]
36516impl Default for FeeBumpTransactionExt {
36517 fn default() -> Self {
36518 Self::V0
36519 }
36520}
36521
36522impl FeeBumpTransactionExt {
36523 pub const VARIANTS: [i32; 1] = [0];
36524 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
36525
36526 #[must_use]
36527 pub const fn name(&self) -> &'static str {
36528 match self {
36529 Self::V0 => "V0",
36530 }
36531 }
36532
36533 #[must_use]
36534 pub const fn discriminant(&self) -> i32 {
36535 #[allow(clippy::match_same_arms)]
36536 match self {
36537 Self::V0 => 0,
36538 }
36539 }
36540
36541 #[must_use]
36542 pub const fn variants() -> [i32; 1] {
36543 Self::VARIANTS
36544 }
36545}
36546
36547impl Name for FeeBumpTransactionExt {
36548 #[must_use]
36549 fn name(&self) -> &'static str {
36550 Self::name(self)
36551 }
36552}
36553
36554impl Discriminant<i32> for FeeBumpTransactionExt {
36555 #[must_use]
36556 fn discriminant(&self) -> i32 {
36557 Self::discriminant(self)
36558 }
36559}
36560
36561impl Variants<i32> for FeeBumpTransactionExt {
36562 fn variants() -> slice::Iter<'static, i32> {
36563 Self::VARIANTS.iter()
36564 }
36565}
36566
36567impl Union<i32> for FeeBumpTransactionExt {}
36568
36569impl ReadXdr for FeeBumpTransactionExt {
36570 #[cfg(feature = "std")]
36571 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36572 r.with_limited_depth(|r| {
36573 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
36574 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
36575 let v = match dv {
36576 0 => Self::V0,
36577 #[allow(unreachable_patterns)]
36578 _ => return Err(Error::Invalid),
36579 };
36580 Ok(v)
36581 })
36582 }
36583}
36584
36585impl WriteXdr for FeeBumpTransactionExt {
36586 #[cfg(feature = "std")]
36587 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36588 w.with_limited_depth(|w| {
36589 self.discriminant().write_xdr(w)?;
36590 #[allow(clippy::match_same_arms)]
36591 match self {
36592 Self::V0 => ().write_xdr(w)?,
36593 };
36594 Ok(())
36595 })
36596 }
36597}
36598
36599#[cfg_attr(feature = "alloc", derive(Default))]
36622#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36623#[cfg_eval::cfg_eval]
36624#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36625#[cfg_attr(
36626 all(feature = "serde", feature = "alloc"),
36627 serde_with::serde_as,
36628 derive(serde::Serialize, serde::Deserialize),
36629 serde(rename_all = "snake_case")
36630)]
36631#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36632pub struct FeeBumpTransaction {
36633 pub fee_source: MuxedAccount,
36634 #[cfg_attr(
36635 all(feature = "serde", feature = "alloc"),
36636 serde_as(as = "NumberOrString")
36637 )]
36638 pub fee: i64,
36639 pub inner_tx: FeeBumpTransactionInnerTx,
36640 pub ext: FeeBumpTransactionExt,
36641}
36642
36643impl ReadXdr for FeeBumpTransaction {
36644 #[cfg(feature = "std")]
36645 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36646 r.with_limited_depth(|r| {
36647 Ok(Self {
36648 fee_source: MuxedAccount::read_xdr(r)?,
36649 fee: i64::read_xdr(r)?,
36650 inner_tx: FeeBumpTransactionInnerTx::read_xdr(r)?,
36651 ext: FeeBumpTransactionExt::read_xdr(r)?,
36652 })
36653 })
36654 }
36655}
36656
36657impl WriteXdr for FeeBumpTransaction {
36658 #[cfg(feature = "std")]
36659 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36660 w.with_limited_depth(|w| {
36661 self.fee_source.write_xdr(w)?;
36662 self.fee.write_xdr(w)?;
36663 self.inner_tx.write_xdr(w)?;
36664 self.ext.write_xdr(w)?;
36665 Ok(())
36666 })
36667 }
36668}
36669
36670#[cfg_attr(feature = "alloc", derive(Default))]
36683#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36684#[cfg_eval::cfg_eval]
36685#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36686#[cfg_attr(
36687 all(feature = "serde", feature = "alloc"),
36688 serde_with::serde_as,
36689 derive(serde::Serialize, serde::Deserialize),
36690 serde(rename_all = "snake_case")
36691)]
36692#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36693pub struct FeeBumpTransactionEnvelope {
36694 pub tx: FeeBumpTransaction,
36695 pub signatures: VecM<DecoratedSignature, 20>,
36696}
36697
36698impl ReadXdr for FeeBumpTransactionEnvelope {
36699 #[cfg(feature = "std")]
36700 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36701 r.with_limited_depth(|r| {
36702 Ok(Self {
36703 tx: FeeBumpTransaction::read_xdr(r)?,
36704 signatures: VecM::<DecoratedSignature, 20>::read_xdr(r)?,
36705 })
36706 })
36707 }
36708}
36709
36710impl WriteXdr for FeeBumpTransactionEnvelope {
36711 #[cfg(feature = "std")]
36712 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36713 w.with_limited_depth(|w| {
36714 self.tx.write_xdr(w)?;
36715 self.signatures.write_xdr(w)?;
36716 Ok(())
36717 })
36718 }
36719}
36720
36721#[cfg_eval::cfg_eval]
36737#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36738#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36739#[cfg_attr(
36740 all(feature = "serde", feature = "alloc"),
36741 serde_with::serde_as,
36742 derive(serde::Serialize, serde::Deserialize),
36743 serde(rename_all = "snake_case")
36744)]
36745#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36746#[allow(clippy::large_enum_variant)]
36747pub enum TransactionEnvelope {
36748 TxV0(TransactionV0Envelope),
36749 Tx(TransactionV1Envelope),
36750 TxFeeBump(FeeBumpTransactionEnvelope),
36751}
36752
36753impl TransactionEnvelope {
36754 pub const VARIANTS: [EnvelopeType; 3] = [
36755 EnvelopeType::TxV0,
36756 EnvelopeType::Tx,
36757 EnvelopeType::TxFeeBump,
36758 ];
36759 pub const VARIANTS_STR: [&'static str; 3] = ["TxV0", "Tx", "TxFeeBump"];
36760
36761 #[must_use]
36762 pub const fn name(&self) -> &'static str {
36763 match self {
36764 Self::TxV0(_) => "TxV0",
36765 Self::Tx(_) => "Tx",
36766 Self::TxFeeBump(_) => "TxFeeBump",
36767 }
36768 }
36769
36770 #[must_use]
36771 pub const fn discriminant(&self) -> EnvelopeType {
36772 #[allow(clippy::match_same_arms)]
36773 match self {
36774 Self::TxV0(_) => EnvelopeType::TxV0,
36775 Self::Tx(_) => EnvelopeType::Tx,
36776 Self::TxFeeBump(_) => EnvelopeType::TxFeeBump,
36777 }
36778 }
36779
36780 #[must_use]
36781 pub const fn variants() -> [EnvelopeType; 3] {
36782 Self::VARIANTS
36783 }
36784}
36785
36786impl Name for TransactionEnvelope {
36787 #[must_use]
36788 fn name(&self) -> &'static str {
36789 Self::name(self)
36790 }
36791}
36792
36793impl Discriminant<EnvelopeType> for TransactionEnvelope {
36794 #[must_use]
36795 fn discriminant(&self) -> EnvelopeType {
36796 Self::discriminant(self)
36797 }
36798}
36799
36800impl Variants<EnvelopeType> for TransactionEnvelope {
36801 fn variants() -> slice::Iter<'static, EnvelopeType> {
36802 Self::VARIANTS.iter()
36803 }
36804}
36805
36806impl Union<EnvelopeType> for TransactionEnvelope {}
36807
36808impl ReadXdr for TransactionEnvelope {
36809 #[cfg(feature = "std")]
36810 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36811 r.with_limited_depth(|r| {
36812 let dv: EnvelopeType = <EnvelopeType as ReadXdr>::read_xdr(r)?;
36813 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
36814 let v = match dv {
36815 EnvelopeType::TxV0 => Self::TxV0(TransactionV0Envelope::read_xdr(r)?),
36816 EnvelopeType::Tx => Self::Tx(TransactionV1Envelope::read_xdr(r)?),
36817 EnvelopeType::TxFeeBump => {
36818 Self::TxFeeBump(FeeBumpTransactionEnvelope::read_xdr(r)?)
36819 }
36820 #[allow(unreachable_patterns)]
36821 _ => return Err(Error::Invalid),
36822 };
36823 Ok(v)
36824 })
36825 }
36826}
36827
36828impl WriteXdr for TransactionEnvelope {
36829 #[cfg(feature = "std")]
36830 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36831 w.with_limited_depth(|w| {
36832 self.discriminant().write_xdr(w)?;
36833 #[allow(clippy::match_same_arms)]
36834 match self {
36835 Self::TxV0(v) => v.write_xdr(w)?,
36836 Self::Tx(v) => v.write_xdr(w)?,
36837 Self::TxFeeBump(v) => v.write_xdr(w)?,
36838 };
36839 Ok(())
36840 })
36841 }
36842}
36843
36844#[cfg_eval::cfg_eval]
36859#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36860#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36861#[cfg_attr(
36862 all(feature = "serde", feature = "alloc"),
36863 serde_with::serde_as,
36864 derive(serde::Serialize, serde::Deserialize),
36865 serde(rename_all = "snake_case")
36866)]
36867#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36868#[allow(clippy::large_enum_variant)]
36869pub enum TransactionSignaturePayloadTaggedTransaction {
36870 Tx(Transaction),
36871 TxFeeBump(FeeBumpTransaction),
36872}
36873
36874#[cfg(feature = "alloc")]
36875impl Default for TransactionSignaturePayloadTaggedTransaction {
36876 fn default() -> Self {
36877 Self::Tx(Transaction::default())
36878 }
36879}
36880
36881impl TransactionSignaturePayloadTaggedTransaction {
36882 pub const VARIANTS: [EnvelopeType; 2] = [EnvelopeType::Tx, EnvelopeType::TxFeeBump];
36883 pub const VARIANTS_STR: [&'static str; 2] = ["Tx", "TxFeeBump"];
36884
36885 #[must_use]
36886 pub const fn name(&self) -> &'static str {
36887 match self {
36888 Self::Tx(_) => "Tx",
36889 Self::TxFeeBump(_) => "TxFeeBump",
36890 }
36891 }
36892
36893 #[must_use]
36894 pub const fn discriminant(&self) -> EnvelopeType {
36895 #[allow(clippy::match_same_arms)]
36896 match self {
36897 Self::Tx(_) => EnvelopeType::Tx,
36898 Self::TxFeeBump(_) => EnvelopeType::TxFeeBump,
36899 }
36900 }
36901
36902 #[must_use]
36903 pub const fn variants() -> [EnvelopeType; 2] {
36904 Self::VARIANTS
36905 }
36906}
36907
36908impl Name for TransactionSignaturePayloadTaggedTransaction {
36909 #[must_use]
36910 fn name(&self) -> &'static str {
36911 Self::name(self)
36912 }
36913}
36914
36915impl Discriminant<EnvelopeType> for TransactionSignaturePayloadTaggedTransaction {
36916 #[must_use]
36917 fn discriminant(&self) -> EnvelopeType {
36918 Self::discriminant(self)
36919 }
36920}
36921
36922impl Variants<EnvelopeType> for TransactionSignaturePayloadTaggedTransaction {
36923 fn variants() -> slice::Iter<'static, EnvelopeType> {
36924 Self::VARIANTS.iter()
36925 }
36926}
36927
36928impl Union<EnvelopeType> for TransactionSignaturePayloadTaggedTransaction {}
36929
36930impl ReadXdr for TransactionSignaturePayloadTaggedTransaction {
36931 #[cfg(feature = "std")]
36932 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36933 r.with_limited_depth(|r| {
36934 let dv: EnvelopeType = <EnvelopeType as ReadXdr>::read_xdr(r)?;
36935 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
36936 let v = match dv {
36937 EnvelopeType::Tx => Self::Tx(Transaction::read_xdr(r)?),
36938 EnvelopeType::TxFeeBump => Self::TxFeeBump(FeeBumpTransaction::read_xdr(r)?),
36939 #[allow(unreachable_patterns)]
36940 _ => return Err(Error::Invalid),
36941 };
36942 Ok(v)
36943 })
36944 }
36945}
36946
36947impl WriteXdr for TransactionSignaturePayloadTaggedTransaction {
36948 #[cfg(feature = "std")]
36949 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
36950 w.with_limited_depth(|w| {
36951 self.discriminant().write_xdr(w)?;
36952 #[allow(clippy::match_same_arms)]
36953 match self {
36954 Self::Tx(v) => v.write_xdr(w)?,
36955 Self::TxFeeBump(v) => v.write_xdr(w)?,
36956 };
36957 Ok(())
36958 })
36959 }
36960}
36961
36962#[cfg_attr(feature = "alloc", derive(Default))]
36981#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
36982#[cfg_eval::cfg_eval]
36983#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
36984#[cfg_attr(
36985 all(feature = "serde", feature = "alloc"),
36986 serde_with::serde_as,
36987 derive(serde::Serialize, serde::Deserialize),
36988 serde(rename_all = "snake_case")
36989)]
36990#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
36991pub struct TransactionSignaturePayload {
36992 pub network_id: Hash,
36993 pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction,
36994}
36995
36996impl ReadXdr for TransactionSignaturePayload {
36997 #[cfg(feature = "std")]
36998 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
36999 r.with_limited_depth(|r| {
37000 Ok(Self {
37001 network_id: Hash::read_xdr(r)?,
37002 tagged_transaction: TransactionSignaturePayloadTaggedTransaction::read_xdr(r)?,
37003 })
37004 })
37005 }
37006}
37007
37008impl WriteXdr for TransactionSignaturePayload {
37009 #[cfg(feature = "std")]
37010 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37011 w.with_limited_depth(|w| {
37012 self.network_id.write_xdr(w)?;
37013 self.tagged_transaction.write_xdr(w)?;
37014 Ok(())
37015 })
37016 }
37017}
37018
37019#[cfg_attr(feature = "alloc", derive(Default))]
37032#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37033#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37034#[cfg_attr(
37035 all(feature = "serde", feature = "alloc"),
37036 derive(serde::Serialize, serde::Deserialize),
37037 serde(rename_all = "snake_case")
37038)]
37039#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37040#[repr(i32)]
37041pub enum ClaimAtomType {
37042 #[cfg_attr(feature = "alloc", default)]
37043 V0 = 0,
37044 OrderBook = 1,
37045 LiquidityPool = 2,
37046}
37047
37048impl ClaimAtomType {
37049 pub const VARIANTS: [ClaimAtomType; 3] = [
37050 ClaimAtomType::V0,
37051 ClaimAtomType::OrderBook,
37052 ClaimAtomType::LiquidityPool,
37053 ];
37054 pub const VARIANTS_STR: [&'static str; 3] = ["V0", "OrderBook", "LiquidityPool"];
37055
37056 #[must_use]
37057 pub const fn name(&self) -> &'static str {
37058 match self {
37059 Self::V0 => "V0",
37060 Self::OrderBook => "OrderBook",
37061 Self::LiquidityPool => "LiquidityPool",
37062 }
37063 }
37064
37065 #[must_use]
37066 pub const fn variants() -> [ClaimAtomType; 3] {
37067 Self::VARIANTS
37068 }
37069}
37070
37071impl Name for ClaimAtomType {
37072 #[must_use]
37073 fn name(&self) -> &'static str {
37074 Self::name(self)
37075 }
37076}
37077
37078impl Variants<ClaimAtomType> for ClaimAtomType {
37079 fn variants() -> slice::Iter<'static, ClaimAtomType> {
37080 Self::VARIANTS.iter()
37081 }
37082}
37083
37084impl Enum for ClaimAtomType {}
37085
37086impl fmt::Display for ClaimAtomType {
37087 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
37088 f.write_str(self.name())
37089 }
37090}
37091
37092impl TryFrom<i32> for ClaimAtomType {
37093 type Error = Error;
37094
37095 fn try_from(i: i32) -> Result<Self, Error> {
37096 let e = match i {
37097 0 => ClaimAtomType::V0,
37098 1 => ClaimAtomType::OrderBook,
37099 2 => ClaimAtomType::LiquidityPool,
37100 #[allow(unreachable_patterns)]
37101 _ => return Err(Error::Invalid),
37102 };
37103 Ok(e)
37104 }
37105}
37106
37107impl From<ClaimAtomType> for i32 {
37108 #[must_use]
37109 fn from(e: ClaimAtomType) -> Self {
37110 e as Self
37111 }
37112}
37113
37114impl ReadXdr for ClaimAtomType {
37115 #[cfg(feature = "std")]
37116 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37117 r.with_limited_depth(|r| {
37118 let e = i32::read_xdr(r)?;
37119 let v: Self = e.try_into()?;
37120 Ok(v)
37121 })
37122 }
37123}
37124
37125impl WriteXdr for ClaimAtomType {
37126 #[cfg(feature = "std")]
37127 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37128 w.with_limited_depth(|w| {
37129 let i: i32 = (*self).into();
37130 i.write_xdr(w)
37131 })
37132 }
37133}
37134
37135#[cfg_attr(feature = "alloc", derive(Default))]
37155#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37156#[cfg_eval::cfg_eval]
37157#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37158#[cfg_attr(
37159 all(feature = "serde", feature = "alloc"),
37160 serde_with::serde_as,
37161 derive(serde::Serialize, serde::Deserialize),
37162 serde(rename_all = "snake_case")
37163)]
37164#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37165pub struct ClaimOfferAtomV0 {
37166 pub seller_ed25519: Uint256,
37167 #[cfg_attr(
37168 all(feature = "serde", feature = "alloc"),
37169 serde_as(as = "NumberOrString")
37170 )]
37171 pub offer_id: i64,
37172 pub asset_sold: Asset,
37173 #[cfg_attr(
37174 all(feature = "serde", feature = "alloc"),
37175 serde_as(as = "NumberOrString")
37176 )]
37177 pub amount_sold: i64,
37178 pub asset_bought: Asset,
37179 #[cfg_attr(
37180 all(feature = "serde", feature = "alloc"),
37181 serde_as(as = "NumberOrString")
37182 )]
37183 pub amount_bought: i64,
37184}
37185
37186impl ReadXdr for ClaimOfferAtomV0 {
37187 #[cfg(feature = "std")]
37188 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37189 r.with_limited_depth(|r| {
37190 Ok(Self {
37191 seller_ed25519: Uint256::read_xdr(r)?,
37192 offer_id: i64::read_xdr(r)?,
37193 asset_sold: Asset::read_xdr(r)?,
37194 amount_sold: i64::read_xdr(r)?,
37195 asset_bought: Asset::read_xdr(r)?,
37196 amount_bought: i64::read_xdr(r)?,
37197 })
37198 })
37199 }
37200}
37201
37202impl WriteXdr for ClaimOfferAtomV0 {
37203 #[cfg(feature = "std")]
37204 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37205 w.with_limited_depth(|w| {
37206 self.seller_ed25519.write_xdr(w)?;
37207 self.offer_id.write_xdr(w)?;
37208 self.asset_sold.write_xdr(w)?;
37209 self.amount_sold.write_xdr(w)?;
37210 self.asset_bought.write_xdr(w)?;
37211 self.amount_bought.write_xdr(w)?;
37212 Ok(())
37213 })
37214 }
37215}
37216
37217#[cfg_attr(feature = "alloc", derive(Default))]
37237#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37238#[cfg_eval::cfg_eval]
37239#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37240#[cfg_attr(
37241 all(feature = "serde", feature = "alloc"),
37242 serde_with::serde_as,
37243 derive(serde::Serialize, serde::Deserialize),
37244 serde(rename_all = "snake_case")
37245)]
37246#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37247pub struct ClaimOfferAtom {
37248 pub seller_id: AccountId,
37249 #[cfg_attr(
37250 all(feature = "serde", feature = "alloc"),
37251 serde_as(as = "NumberOrString")
37252 )]
37253 pub offer_id: i64,
37254 pub asset_sold: Asset,
37255 #[cfg_attr(
37256 all(feature = "serde", feature = "alloc"),
37257 serde_as(as = "NumberOrString")
37258 )]
37259 pub amount_sold: i64,
37260 pub asset_bought: Asset,
37261 #[cfg_attr(
37262 all(feature = "serde", feature = "alloc"),
37263 serde_as(as = "NumberOrString")
37264 )]
37265 pub amount_bought: i64,
37266}
37267
37268impl ReadXdr for ClaimOfferAtom {
37269 #[cfg(feature = "std")]
37270 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37271 r.with_limited_depth(|r| {
37272 Ok(Self {
37273 seller_id: AccountId::read_xdr(r)?,
37274 offer_id: i64::read_xdr(r)?,
37275 asset_sold: Asset::read_xdr(r)?,
37276 amount_sold: i64::read_xdr(r)?,
37277 asset_bought: Asset::read_xdr(r)?,
37278 amount_bought: i64::read_xdr(r)?,
37279 })
37280 })
37281 }
37282}
37283
37284impl WriteXdr for ClaimOfferAtom {
37285 #[cfg(feature = "std")]
37286 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37287 w.with_limited_depth(|w| {
37288 self.seller_id.write_xdr(w)?;
37289 self.offer_id.write_xdr(w)?;
37290 self.asset_sold.write_xdr(w)?;
37291 self.amount_sold.write_xdr(w)?;
37292 self.asset_bought.write_xdr(w)?;
37293 self.amount_bought.write_xdr(w)?;
37294 Ok(())
37295 })
37296 }
37297}
37298
37299#[cfg_attr(feature = "alloc", derive(Default))]
37317#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37318#[cfg_eval::cfg_eval]
37319#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37320#[cfg_attr(
37321 all(feature = "serde", feature = "alloc"),
37322 serde_with::serde_as,
37323 derive(serde::Serialize, serde::Deserialize),
37324 serde(rename_all = "snake_case")
37325)]
37326#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37327pub struct ClaimLiquidityAtom {
37328 pub liquidity_pool_id: PoolId,
37329 pub asset_sold: Asset,
37330 #[cfg_attr(
37331 all(feature = "serde", feature = "alloc"),
37332 serde_as(as = "NumberOrString")
37333 )]
37334 pub amount_sold: i64,
37335 pub asset_bought: Asset,
37336 #[cfg_attr(
37337 all(feature = "serde", feature = "alloc"),
37338 serde_as(as = "NumberOrString")
37339 )]
37340 pub amount_bought: i64,
37341}
37342
37343impl ReadXdr for ClaimLiquidityAtom {
37344 #[cfg(feature = "std")]
37345 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37346 r.with_limited_depth(|r| {
37347 Ok(Self {
37348 liquidity_pool_id: PoolId::read_xdr(r)?,
37349 asset_sold: Asset::read_xdr(r)?,
37350 amount_sold: i64::read_xdr(r)?,
37351 asset_bought: Asset::read_xdr(r)?,
37352 amount_bought: i64::read_xdr(r)?,
37353 })
37354 })
37355 }
37356}
37357
37358impl WriteXdr for ClaimLiquidityAtom {
37359 #[cfg(feature = "std")]
37360 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37361 w.with_limited_depth(|w| {
37362 self.liquidity_pool_id.write_xdr(w)?;
37363 self.asset_sold.write_xdr(w)?;
37364 self.amount_sold.write_xdr(w)?;
37365 self.asset_bought.write_xdr(w)?;
37366 self.amount_bought.write_xdr(w)?;
37367 Ok(())
37368 })
37369 }
37370}
37371
37372#[cfg_eval::cfg_eval]
37388#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37389#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37390#[cfg_attr(
37391 all(feature = "serde", feature = "alloc"),
37392 serde_with::serde_as,
37393 derive(serde::Serialize, serde::Deserialize),
37394 serde(rename_all = "snake_case")
37395)]
37396#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37397#[allow(clippy::large_enum_variant)]
37398pub enum ClaimAtom {
37399 V0(ClaimOfferAtomV0),
37400 OrderBook(ClaimOfferAtom),
37401 LiquidityPool(ClaimLiquidityAtom),
37402}
37403
37404#[cfg(feature = "alloc")]
37405impl Default for ClaimAtom {
37406 fn default() -> Self {
37407 Self::V0(ClaimOfferAtomV0::default())
37408 }
37409}
37410
37411impl ClaimAtom {
37412 pub const VARIANTS: [ClaimAtomType; 3] = [
37413 ClaimAtomType::V0,
37414 ClaimAtomType::OrderBook,
37415 ClaimAtomType::LiquidityPool,
37416 ];
37417 pub const VARIANTS_STR: [&'static str; 3] = ["V0", "OrderBook", "LiquidityPool"];
37418
37419 #[must_use]
37420 pub const fn name(&self) -> &'static str {
37421 match self {
37422 Self::V0(_) => "V0",
37423 Self::OrderBook(_) => "OrderBook",
37424 Self::LiquidityPool(_) => "LiquidityPool",
37425 }
37426 }
37427
37428 #[must_use]
37429 pub const fn discriminant(&self) -> ClaimAtomType {
37430 #[allow(clippy::match_same_arms)]
37431 match self {
37432 Self::V0(_) => ClaimAtomType::V0,
37433 Self::OrderBook(_) => ClaimAtomType::OrderBook,
37434 Self::LiquidityPool(_) => ClaimAtomType::LiquidityPool,
37435 }
37436 }
37437
37438 #[must_use]
37439 pub const fn variants() -> [ClaimAtomType; 3] {
37440 Self::VARIANTS
37441 }
37442}
37443
37444impl Name for ClaimAtom {
37445 #[must_use]
37446 fn name(&self) -> &'static str {
37447 Self::name(self)
37448 }
37449}
37450
37451impl Discriminant<ClaimAtomType> for ClaimAtom {
37452 #[must_use]
37453 fn discriminant(&self) -> ClaimAtomType {
37454 Self::discriminant(self)
37455 }
37456}
37457
37458impl Variants<ClaimAtomType> for ClaimAtom {
37459 fn variants() -> slice::Iter<'static, ClaimAtomType> {
37460 Self::VARIANTS.iter()
37461 }
37462}
37463
37464impl Union<ClaimAtomType> for ClaimAtom {}
37465
37466impl ReadXdr for ClaimAtom {
37467 #[cfg(feature = "std")]
37468 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37469 r.with_limited_depth(|r| {
37470 let dv: ClaimAtomType = <ClaimAtomType as ReadXdr>::read_xdr(r)?;
37471 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
37472 let v = match dv {
37473 ClaimAtomType::V0 => Self::V0(ClaimOfferAtomV0::read_xdr(r)?),
37474 ClaimAtomType::OrderBook => Self::OrderBook(ClaimOfferAtom::read_xdr(r)?),
37475 ClaimAtomType::LiquidityPool => {
37476 Self::LiquidityPool(ClaimLiquidityAtom::read_xdr(r)?)
37477 }
37478 #[allow(unreachable_patterns)]
37479 _ => return Err(Error::Invalid),
37480 };
37481 Ok(v)
37482 })
37483 }
37484}
37485
37486impl WriteXdr for ClaimAtom {
37487 #[cfg(feature = "std")]
37488 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37489 w.with_limited_depth(|w| {
37490 self.discriminant().write_xdr(w)?;
37491 #[allow(clippy::match_same_arms)]
37492 match self {
37493 Self::V0(v) => v.write_xdr(w)?,
37494 Self::OrderBook(v) => v.write_xdr(w)?,
37495 Self::LiquidityPool(v) => v.write_xdr(w)?,
37496 };
37497 Ok(())
37498 })
37499 }
37500}
37501
37502#[cfg_attr(feature = "alloc", derive(Default))]
37521#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37522#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37523#[cfg_attr(
37524 all(feature = "serde", feature = "alloc"),
37525 derive(serde::Serialize, serde::Deserialize),
37526 serde(rename_all = "snake_case")
37527)]
37528#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37529#[repr(i32)]
37530pub enum CreateAccountResultCode {
37531 #[cfg_attr(feature = "alloc", default)]
37532 Success = 0,
37533 Malformed = -1,
37534 Underfunded = -2,
37535 LowReserve = -3,
37536 AlreadyExist = -4,
37537}
37538
37539impl CreateAccountResultCode {
37540 pub const VARIANTS: [CreateAccountResultCode; 5] = [
37541 CreateAccountResultCode::Success,
37542 CreateAccountResultCode::Malformed,
37543 CreateAccountResultCode::Underfunded,
37544 CreateAccountResultCode::LowReserve,
37545 CreateAccountResultCode::AlreadyExist,
37546 ];
37547 pub const VARIANTS_STR: [&'static str; 5] = [
37548 "Success",
37549 "Malformed",
37550 "Underfunded",
37551 "LowReserve",
37552 "AlreadyExist",
37553 ];
37554
37555 #[must_use]
37556 pub const fn name(&self) -> &'static str {
37557 match self {
37558 Self::Success => "Success",
37559 Self::Malformed => "Malformed",
37560 Self::Underfunded => "Underfunded",
37561 Self::LowReserve => "LowReserve",
37562 Self::AlreadyExist => "AlreadyExist",
37563 }
37564 }
37565
37566 #[must_use]
37567 pub const fn variants() -> [CreateAccountResultCode; 5] {
37568 Self::VARIANTS
37569 }
37570}
37571
37572impl Name for CreateAccountResultCode {
37573 #[must_use]
37574 fn name(&self) -> &'static str {
37575 Self::name(self)
37576 }
37577}
37578
37579impl Variants<CreateAccountResultCode> for CreateAccountResultCode {
37580 fn variants() -> slice::Iter<'static, CreateAccountResultCode> {
37581 Self::VARIANTS.iter()
37582 }
37583}
37584
37585impl Enum for CreateAccountResultCode {}
37586
37587impl fmt::Display for CreateAccountResultCode {
37588 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
37589 f.write_str(self.name())
37590 }
37591}
37592
37593impl TryFrom<i32> for CreateAccountResultCode {
37594 type Error = Error;
37595
37596 fn try_from(i: i32) -> Result<Self, Error> {
37597 let e = match i {
37598 0 => CreateAccountResultCode::Success,
37599 -1 => CreateAccountResultCode::Malformed,
37600 -2 => CreateAccountResultCode::Underfunded,
37601 -3 => CreateAccountResultCode::LowReserve,
37602 -4 => CreateAccountResultCode::AlreadyExist,
37603 #[allow(unreachable_patterns)]
37604 _ => return Err(Error::Invalid),
37605 };
37606 Ok(e)
37607 }
37608}
37609
37610impl From<CreateAccountResultCode> for i32 {
37611 #[must_use]
37612 fn from(e: CreateAccountResultCode) -> Self {
37613 e as Self
37614 }
37615}
37616
37617impl ReadXdr for CreateAccountResultCode {
37618 #[cfg(feature = "std")]
37619 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37620 r.with_limited_depth(|r| {
37621 let e = i32::read_xdr(r)?;
37622 let v: Self = e.try_into()?;
37623 Ok(v)
37624 })
37625 }
37626}
37627
37628impl WriteXdr for CreateAccountResultCode {
37629 #[cfg(feature = "std")]
37630 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37631 w.with_limited_depth(|w| {
37632 let i: i32 = (*self).into();
37633 i.write_xdr(w)
37634 })
37635 }
37636}
37637
37638#[cfg_eval::cfg_eval]
37655#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37656#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37657#[cfg_attr(
37658 all(feature = "serde", feature = "alloc"),
37659 serde_with::serde_as,
37660 derive(serde::Serialize, serde::Deserialize),
37661 serde(rename_all = "snake_case")
37662)]
37663#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37664#[allow(clippy::large_enum_variant)]
37665pub enum CreateAccountResult {
37666 Success,
37667 Malformed,
37668 Underfunded,
37669 LowReserve,
37670 AlreadyExist,
37671}
37672
37673#[cfg(feature = "alloc")]
37674impl Default for CreateAccountResult {
37675 fn default() -> Self {
37676 Self::Success
37677 }
37678}
37679
37680impl CreateAccountResult {
37681 pub const VARIANTS: [CreateAccountResultCode; 5] = [
37682 CreateAccountResultCode::Success,
37683 CreateAccountResultCode::Malformed,
37684 CreateAccountResultCode::Underfunded,
37685 CreateAccountResultCode::LowReserve,
37686 CreateAccountResultCode::AlreadyExist,
37687 ];
37688 pub const VARIANTS_STR: [&'static str; 5] = [
37689 "Success",
37690 "Malformed",
37691 "Underfunded",
37692 "LowReserve",
37693 "AlreadyExist",
37694 ];
37695
37696 #[must_use]
37697 pub const fn name(&self) -> &'static str {
37698 match self {
37699 Self::Success => "Success",
37700 Self::Malformed => "Malformed",
37701 Self::Underfunded => "Underfunded",
37702 Self::LowReserve => "LowReserve",
37703 Self::AlreadyExist => "AlreadyExist",
37704 }
37705 }
37706
37707 #[must_use]
37708 pub const fn discriminant(&self) -> CreateAccountResultCode {
37709 #[allow(clippy::match_same_arms)]
37710 match self {
37711 Self::Success => CreateAccountResultCode::Success,
37712 Self::Malformed => CreateAccountResultCode::Malformed,
37713 Self::Underfunded => CreateAccountResultCode::Underfunded,
37714 Self::LowReserve => CreateAccountResultCode::LowReserve,
37715 Self::AlreadyExist => CreateAccountResultCode::AlreadyExist,
37716 }
37717 }
37718
37719 #[must_use]
37720 pub const fn variants() -> [CreateAccountResultCode; 5] {
37721 Self::VARIANTS
37722 }
37723}
37724
37725impl Name for CreateAccountResult {
37726 #[must_use]
37727 fn name(&self) -> &'static str {
37728 Self::name(self)
37729 }
37730}
37731
37732impl Discriminant<CreateAccountResultCode> for CreateAccountResult {
37733 #[must_use]
37734 fn discriminant(&self) -> CreateAccountResultCode {
37735 Self::discriminant(self)
37736 }
37737}
37738
37739impl Variants<CreateAccountResultCode> for CreateAccountResult {
37740 fn variants() -> slice::Iter<'static, CreateAccountResultCode> {
37741 Self::VARIANTS.iter()
37742 }
37743}
37744
37745impl Union<CreateAccountResultCode> for CreateAccountResult {}
37746
37747impl ReadXdr for CreateAccountResult {
37748 #[cfg(feature = "std")]
37749 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37750 r.with_limited_depth(|r| {
37751 let dv: CreateAccountResultCode = <CreateAccountResultCode as ReadXdr>::read_xdr(r)?;
37752 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
37753 let v = match dv {
37754 CreateAccountResultCode::Success => Self::Success,
37755 CreateAccountResultCode::Malformed => Self::Malformed,
37756 CreateAccountResultCode::Underfunded => Self::Underfunded,
37757 CreateAccountResultCode::LowReserve => Self::LowReserve,
37758 CreateAccountResultCode::AlreadyExist => Self::AlreadyExist,
37759 #[allow(unreachable_patterns)]
37760 _ => return Err(Error::Invalid),
37761 };
37762 Ok(v)
37763 })
37764 }
37765}
37766
37767impl WriteXdr for CreateAccountResult {
37768 #[cfg(feature = "std")]
37769 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37770 w.with_limited_depth(|w| {
37771 self.discriminant().write_xdr(w)?;
37772 #[allow(clippy::match_same_arms)]
37773 match self {
37774 Self::Success => ().write_xdr(w)?,
37775 Self::Malformed => ().write_xdr(w)?,
37776 Self::Underfunded => ().write_xdr(w)?,
37777 Self::LowReserve => ().write_xdr(w)?,
37778 Self::AlreadyExist => ().write_xdr(w)?,
37779 };
37780 Ok(())
37781 })
37782 }
37783}
37784
37785#[cfg_attr(feature = "alloc", derive(Default))]
37808#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37809#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37810#[cfg_attr(
37811 all(feature = "serde", feature = "alloc"),
37812 derive(serde::Serialize, serde::Deserialize),
37813 serde(rename_all = "snake_case")
37814)]
37815#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37816#[repr(i32)]
37817pub enum PaymentResultCode {
37818 #[cfg_attr(feature = "alloc", default)]
37819 Success = 0,
37820 Malformed = -1,
37821 Underfunded = -2,
37822 SrcNoTrust = -3,
37823 SrcNotAuthorized = -4,
37824 NoDestination = -5,
37825 NoTrust = -6,
37826 NotAuthorized = -7,
37827 LineFull = -8,
37828 NoIssuer = -9,
37829}
37830
37831impl PaymentResultCode {
37832 pub const VARIANTS: [PaymentResultCode; 10] = [
37833 PaymentResultCode::Success,
37834 PaymentResultCode::Malformed,
37835 PaymentResultCode::Underfunded,
37836 PaymentResultCode::SrcNoTrust,
37837 PaymentResultCode::SrcNotAuthorized,
37838 PaymentResultCode::NoDestination,
37839 PaymentResultCode::NoTrust,
37840 PaymentResultCode::NotAuthorized,
37841 PaymentResultCode::LineFull,
37842 PaymentResultCode::NoIssuer,
37843 ];
37844 pub const VARIANTS_STR: [&'static str; 10] = [
37845 "Success",
37846 "Malformed",
37847 "Underfunded",
37848 "SrcNoTrust",
37849 "SrcNotAuthorized",
37850 "NoDestination",
37851 "NoTrust",
37852 "NotAuthorized",
37853 "LineFull",
37854 "NoIssuer",
37855 ];
37856
37857 #[must_use]
37858 pub const fn name(&self) -> &'static str {
37859 match self {
37860 Self::Success => "Success",
37861 Self::Malformed => "Malformed",
37862 Self::Underfunded => "Underfunded",
37863 Self::SrcNoTrust => "SrcNoTrust",
37864 Self::SrcNotAuthorized => "SrcNotAuthorized",
37865 Self::NoDestination => "NoDestination",
37866 Self::NoTrust => "NoTrust",
37867 Self::NotAuthorized => "NotAuthorized",
37868 Self::LineFull => "LineFull",
37869 Self::NoIssuer => "NoIssuer",
37870 }
37871 }
37872
37873 #[must_use]
37874 pub const fn variants() -> [PaymentResultCode; 10] {
37875 Self::VARIANTS
37876 }
37877}
37878
37879impl Name for PaymentResultCode {
37880 #[must_use]
37881 fn name(&self) -> &'static str {
37882 Self::name(self)
37883 }
37884}
37885
37886impl Variants<PaymentResultCode> for PaymentResultCode {
37887 fn variants() -> slice::Iter<'static, PaymentResultCode> {
37888 Self::VARIANTS.iter()
37889 }
37890}
37891
37892impl Enum for PaymentResultCode {}
37893
37894impl fmt::Display for PaymentResultCode {
37895 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
37896 f.write_str(self.name())
37897 }
37898}
37899
37900impl TryFrom<i32> for PaymentResultCode {
37901 type Error = Error;
37902
37903 fn try_from(i: i32) -> Result<Self, Error> {
37904 let e = match i {
37905 0 => PaymentResultCode::Success,
37906 -1 => PaymentResultCode::Malformed,
37907 -2 => PaymentResultCode::Underfunded,
37908 -3 => PaymentResultCode::SrcNoTrust,
37909 -4 => PaymentResultCode::SrcNotAuthorized,
37910 -5 => PaymentResultCode::NoDestination,
37911 -6 => PaymentResultCode::NoTrust,
37912 -7 => PaymentResultCode::NotAuthorized,
37913 -8 => PaymentResultCode::LineFull,
37914 -9 => PaymentResultCode::NoIssuer,
37915 #[allow(unreachable_patterns)]
37916 _ => return Err(Error::Invalid),
37917 };
37918 Ok(e)
37919 }
37920}
37921
37922impl From<PaymentResultCode> for i32 {
37923 #[must_use]
37924 fn from(e: PaymentResultCode) -> Self {
37925 e as Self
37926 }
37927}
37928
37929impl ReadXdr for PaymentResultCode {
37930 #[cfg(feature = "std")]
37931 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
37932 r.with_limited_depth(|r| {
37933 let e = i32::read_xdr(r)?;
37934 let v: Self = e.try_into()?;
37935 Ok(v)
37936 })
37937 }
37938}
37939
37940impl WriteXdr for PaymentResultCode {
37941 #[cfg(feature = "std")]
37942 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
37943 w.with_limited_depth(|w| {
37944 let i: i32 = (*self).into();
37945 i.write_xdr(w)
37946 })
37947 }
37948}
37949
37950#[cfg_eval::cfg_eval]
37972#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
37973#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
37974#[cfg_attr(
37975 all(feature = "serde", feature = "alloc"),
37976 serde_with::serde_as,
37977 derive(serde::Serialize, serde::Deserialize),
37978 serde(rename_all = "snake_case")
37979)]
37980#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
37981#[allow(clippy::large_enum_variant)]
37982pub enum PaymentResult {
37983 Success,
37984 Malformed,
37985 Underfunded,
37986 SrcNoTrust,
37987 SrcNotAuthorized,
37988 NoDestination,
37989 NoTrust,
37990 NotAuthorized,
37991 LineFull,
37992 NoIssuer,
37993}
37994
37995#[cfg(feature = "alloc")]
37996impl Default for PaymentResult {
37997 fn default() -> Self {
37998 Self::Success
37999 }
38000}
38001
38002impl PaymentResult {
38003 pub const VARIANTS: [PaymentResultCode; 10] = [
38004 PaymentResultCode::Success,
38005 PaymentResultCode::Malformed,
38006 PaymentResultCode::Underfunded,
38007 PaymentResultCode::SrcNoTrust,
38008 PaymentResultCode::SrcNotAuthorized,
38009 PaymentResultCode::NoDestination,
38010 PaymentResultCode::NoTrust,
38011 PaymentResultCode::NotAuthorized,
38012 PaymentResultCode::LineFull,
38013 PaymentResultCode::NoIssuer,
38014 ];
38015 pub const VARIANTS_STR: [&'static str; 10] = [
38016 "Success",
38017 "Malformed",
38018 "Underfunded",
38019 "SrcNoTrust",
38020 "SrcNotAuthorized",
38021 "NoDestination",
38022 "NoTrust",
38023 "NotAuthorized",
38024 "LineFull",
38025 "NoIssuer",
38026 ];
38027
38028 #[must_use]
38029 pub const fn name(&self) -> &'static str {
38030 match self {
38031 Self::Success => "Success",
38032 Self::Malformed => "Malformed",
38033 Self::Underfunded => "Underfunded",
38034 Self::SrcNoTrust => "SrcNoTrust",
38035 Self::SrcNotAuthorized => "SrcNotAuthorized",
38036 Self::NoDestination => "NoDestination",
38037 Self::NoTrust => "NoTrust",
38038 Self::NotAuthorized => "NotAuthorized",
38039 Self::LineFull => "LineFull",
38040 Self::NoIssuer => "NoIssuer",
38041 }
38042 }
38043
38044 #[must_use]
38045 pub const fn discriminant(&self) -> PaymentResultCode {
38046 #[allow(clippy::match_same_arms)]
38047 match self {
38048 Self::Success => PaymentResultCode::Success,
38049 Self::Malformed => PaymentResultCode::Malformed,
38050 Self::Underfunded => PaymentResultCode::Underfunded,
38051 Self::SrcNoTrust => PaymentResultCode::SrcNoTrust,
38052 Self::SrcNotAuthorized => PaymentResultCode::SrcNotAuthorized,
38053 Self::NoDestination => PaymentResultCode::NoDestination,
38054 Self::NoTrust => PaymentResultCode::NoTrust,
38055 Self::NotAuthorized => PaymentResultCode::NotAuthorized,
38056 Self::LineFull => PaymentResultCode::LineFull,
38057 Self::NoIssuer => PaymentResultCode::NoIssuer,
38058 }
38059 }
38060
38061 #[must_use]
38062 pub const fn variants() -> [PaymentResultCode; 10] {
38063 Self::VARIANTS
38064 }
38065}
38066
38067impl Name for PaymentResult {
38068 #[must_use]
38069 fn name(&self) -> &'static str {
38070 Self::name(self)
38071 }
38072}
38073
38074impl Discriminant<PaymentResultCode> for PaymentResult {
38075 #[must_use]
38076 fn discriminant(&self) -> PaymentResultCode {
38077 Self::discriminant(self)
38078 }
38079}
38080
38081impl Variants<PaymentResultCode> for PaymentResult {
38082 fn variants() -> slice::Iter<'static, PaymentResultCode> {
38083 Self::VARIANTS.iter()
38084 }
38085}
38086
38087impl Union<PaymentResultCode> for PaymentResult {}
38088
38089impl ReadXdr for PaymentResult {
38090 #[cfg(feature = "std")]
38091 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38092 r.with_limited_depth(|r| {
38093 let dv: PaymentResultCode = <PaymentResultCode as ReadXdr>::read_xdr(r)?;
38094 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
38095 let v = match dv {
38096 PaymentResultCode::Success => Self::Success,
38097 PaymentResultCode::Malformed => Self::Malformed,
38098 PaymentResultCode::Underfunded => Self::Underfunded,
38099 PaymentResultCode::SrcNoTrust => Self::SrcNoTrust,
38100 PaymentResultCode::SrcNotAuthorized => Self::SrcNotAuthorized,
38101 PaymentResultCode::NoDestination => Self::NoDestination,
38102 PaymentResultCode::NoTrust => Self::NoTrust,
38103 PaymentResultCode::NotAuthorized => Self::NotAuthorized,
38104 PaymentResultCode::LineFull => Self::LineFull,
38105 PaymentResultCode::NoIssuer => Self::NoIssuer,
38106 #[allow(unreachable_patterns)]
38107 _ => return Err(Error::Invalid),
38108 };
38109 Ok(v)
38110 })
38111 }
38112}
38113
38114impl WriteXdr for PaymentResult {
38115 #[cfg(feature = "std")]
38116 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38117 w.with_limited_depth(|w| {
38118 self.discriminant().write_xdr(w)?;
38119 #[allow(clippy::match_same_arms)]
38120 match self {
38121 Self::Success => ().write_xdr(w)?,
38122 Self::Malformed => ().write_xdr(w)?,
38123 Self::Underfunded => ().write_xdr(w)?,
38124 Self::SrcNoTrust => ().write_xdr(w)?,
38125 Self::SrcNotAuthorized => ().write_xdr(w)?,
38126 Self::NoDestination => ().write_xdr(w)?,
38127 Self::NoTrust => ().write_xdr(w)?,
38128 Self::NotAuthorized => ().write_xdr(w)?,
38129 Self::LineFull => ().write_xdr(w)?,
38130 Self::NoIssuer => ().write_xdr(w)?,
38131 };
38132 Ok(())
38133 })
38134 }
38135}
38136
38137#[cfg_attr(feature = "alloc", derive(Default))]
38172#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38173#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38174#[cfg_attr(
38175 all(feature = "serde", feature = "alloc"),
38176 derive(serde::Serialize, serde::Deserialize),
38177 serde(rename_all = "snake_case")
38178)]
38179#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38180#[repr(i32)]
38181pub enum PathPaymentStrictReceiveResultCode {
38182 #[cfg_attr(feature = "alloc", default)]
38183 Success = 0,
38184 Malformed = -1,
38185 Underfunded = -2,
38186 SrcNoTrust = -3,
38187 SrcNotAuthorized = -4,
38188 NoDestination = -5,
38189 NoTrust = -6,
38190 NotAuthorized = -7,
38191 LineFull = -8,
38192 NoIssuer = -9,
38193 TooFewOffers = -10,
38194 OfferCrossSelf = -11,
38195 OverSendmax = -12,
38196}
38197
38198impl PathPaymentStrictReceiveResultCode {
38199 pub const VARIANTS: [PathPaymentStrictReceiveResultCode; 13] = [
38200 PathPaymentStrictReceiveResultCode::Success,
38201 PathPaymentStrictReceiveResultCode::Malformed,
38202 PathPaymentStrictReceiveResultCode::Underfunded,
38203 PathPaymentStrictReceiveResultCode::SrcNoTrust,
38204 PathPaymentStrictReceiveResultCode::SrcNotAuthorized,
38205 PathPaymentStrictReceiveResultCode::NoDestination,
38206 PathPaymentStrictReceiveResultCode::NoTrust,
38207 PathPaymentStrictReceiveResultCode::NotAuthorized,
38208 PathPaymentStrictReceiveResultCode::LineFull,
38209 PathPaymentStrictReceiveResultCode::NoIssuer,
38210 PathPaymentStrictReceiveResultCode::TooFewOffers,
38211 PathPaymentStrictReceiveResultCode::OfferCrossSelf,
38212 PathPaymentStrictReceiveResultCode::OverSendmax,
38213 ];
38214 pub const VARIANTS_STR: [&'static str; 13] = [
38215 "Success",
38216 "Malformed",
38217 "Underfunded",
38218 "SrcNoTrust",
38219 "SrcNotAuthorized",
38220 "NoDestination",
38221 "NoTrust",
38222 "NotAuthorized",
38223 "LineFull",
38224 "NoIssuer",
38225 "TooFewOffers",
38226 "OfferCrossSelf",
38227 "OverSendmax",
38228 ];
38229
38230 #[must_use]
38231 pub const fn name(&self) -> &'static str {
38232 match self {
38233 Self::Success => "Success",
38234 Self::Malformed => "Malformed",
38235 Self::Underfunded => "Underfunded",
38236 Self::SrcNoTrust => "SrcNoTrust",
38237 Self::SrcNotAuthorized => "SrcNotAuthorized",
38238 Self::NoDestination => "NoDestination",
38239 Self::NoTrust => "NoTrust",
38240 Self::NotAuthorized => "NotAuthorized",
38241 Self::LineFull => "LineFull",
38242 Self::NoIssuer => "NoIssuer",
38243 Self::TooFewOffers => "TooFewOffers",
38244 Self::OfferCrossSelf => "OfferCrossSelf",
38245 Self::OverSendmax => "OverSendmax",
38246 }
38247 }
38248
38249 #[must_use]
38250 pub const fn variants() -> [PathPaymentStrictReceiveResultCode; 13] {
38251 Self::VARIANTS
38252 }
38253}
38254
38255impl Name for PathPaymentStrictReceiveResultCode {
38256 #[must_use]
38257 fn name(&self) -> &'static str {
38258 Self::name(self)
38259 }
38260}
38261
38262impl Variants<PathPaymentStrictReceiveResultCode> for PathPaymentStrictReceiveResultCode {
38263 fn variants() -> slice::Iter<'static, PathPaymentStrictReceiveResultCode> {
38264 Self::VARIANTS.iter()
38265 }
38266}
38267
38268impl Enum for PathPaymentStrictReceiveResultCode {}
38269
38270impl fmt::Display for PathPaymentStrictReceiveResultCode {
38271 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38272 f.write_str(self.name())
38273 }
38274}
38275
38276impl TryFrom<i32> for PathPaymentStrictReceiveResultCode {
38277 type Error = Error;
38278
38279 fn try_from(i: i32) -> Result<Self, Error> {
38280 let e = match i {
38281 0 => PathPaymentStrictReceiveResultCode::Success,
38282 -1 => PathPaymentStrictReceiveResultCode::Malformed,
38283 -2 => PathPaymentStrictReceiveResultCode::Underfunded,
38284 -3 => PathPaymentStrictReceiveResultCode::SrcNoTrust,
38285 -4 => PathPaymentStrictReceiveResultCode::SrcNotAuthorized,
38286 -5 => PathPaymentStrictReceiveResultCode::NoDestination,
38287 -6 => PathPaymentStrictReceiveResultCode::NoTrust,
38288 -7 => PathPaymentStrictReceiveResultCode::NotAuthorized,
38289 -8 => PathPaymentStrictReceiveResultCode::LineFull,
38290 -9 => PathPaymentStrictReceiveResultCode::NoIssuer,
38291 -10 => PathPaymentStrictReceiveResultCode::TooFewOffers,
38292 -11 => PathPaymentStrictReceiveResultCode::OfferCrossSelf,
38293 -12 => PathPaymentStrictReceiveResultCode::OverSendmax,
38294 #[allow(unreachable_patterns)]
38295 _ => return Err(Error::Invalid),
38296 };
38297 Ok(e)
38298 }
38299}
38300
38301impl From<PathPaymentStrictReceiveResultCode> for i32 {
38302 #[must_use]
38303 fn from(e: PathPaymentStrictReceiveResultCode) -> Self {
38304 e as Self
38305 }
38306}
38307
38308impl ReadXdr for PathPaymentStrictReceiveResultCode {
38309 #[cfg(feature = "std")]
38310 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38311 r.with_limited_depth(|r| {
38312 let e = i32::read_xdr(r)?;
38313 let v: Self = e.try_into()?;
38314 Ok(v)
38315 })
38316 }
38317}
38318
38319impl WriteXdr for PathPaymentStrictReceiveResultCode {
38320 #[cfg(feature = "std")]
38321 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38322 w.with_limited_depth(|w| {
38323 let i: i32 = (*self).into();
38324 i.write_xdr(w)
38325 })
38326 }
38327}
38328
38329#[cfg_attr(feature = "alloc", derive(Default))]
38341#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38342#[cfg_eval::cfg_eval]
38343#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38344#[cfg_attr(
38345 all(feature = "serde", feature = "alloc"),
38346 serde_with::serde_as,
38347 derive(serde::Serialize, serde::Deserialize),
38348 serde(rename_all = "snake_case")
38349)]
38350#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38351pub struct SimplePaymentResult {
38352 pub destination: AccountId,
38353 pub asset: Asset,
38354 #[cfg_attr(
38355 all(feature = "serde", feature = "alloc"),
38356 serde_as(as = "NumberOrString")
38357 )]
38358 pub amount: i64,
38359}
38360
38361impl ReadXdr for SimplePaymentResult {
38362 #[cfg(feature = "std")]
38363 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38364 r.with_limited_depth(|r| {
38365 Ok(Self {
38366 destination: AccountId::read_xdr(r)?,
38367 asset: Asset::read_xdr(r)?,
38368 amount: i64::read_xdr(r)?,
38369 })
38370 })
38371 }
38372}
38373
38374impl WriteXdr for SimplePaymentResult {
38375 #[cfg(feature = "std")]
38376 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38377 w.with_limited_depth(|w| {
38378 self.destination.write_xdr(w)?;
38379 self.asset.write_xdr(w)?;
38380 self.amount.write_xdr(w)?;
38381 Ok(())
38382 })
38383 }
38384}
38385
38386#[cfg_attr(feature = "alloc", derive(Default))]
38397#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38398#[cfg_eval::cfg_eval]
38399#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38400#[cfg_attr(
38401 all(feature = "serde", feature = "alloc"),
38402 serde_with::serde_as,
38403 derive(serde::Serialize, serde::Deserialize),
38404 serde(rename_all = "snake_case")
38405)]
38406#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38407pub struct PathPaymentStrictReceiveResultSuccess {
38408 pub offers: VecM<ClaimAtom>,
38409 pub last: SimplePaymentResult,
38410}
38411
38412impl ReadXdr for PathPaymentStrictReceiveResultSuccess {
38413 #[cfg(feature = "std")]
38414 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38415 r.with_limited_depth(|r| {
38416 Ok(Self {
38417 offers: VecM::<ClaimAtom>::read_xdr(r)?,
38418 last: SimplePaymentResult::read_xdr(r)?,
38419 })
38420 })
38421 }
38422}
38423
38424impl WriteXdr for PathPaymentStrictReceiveResultSuccess {
38425 #[cfg(feature = "std")]
38426 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38427 w.with_limited_depth(|w| {
38428 self.offers.write_xdr(w)?;
38429 self.last.write_xdr(w)?;
38430 Ok(())
38431 })
38432 }
38433}
38434
38435#[cfg_eval::cfg_eval]
38467#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38468#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38469#[cfg_attr(
38470 all(feature = "serde", feature = "alloc"),
38471 serde_with::serde_as,
38472 derive(serde::Serialize, serde::Deserialize),
38473 serde(rename_all = "snake_case")
38474)]
38475#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38476#[allow(clippy::large_enum_variant)]
38477pub enum PathPaymentStrictReceiveResult {
38478 Success(PathPaymentStrictReceiveResultSuccess),
38479 Malformed,
38480 Underfunded,
38481 SrcNoTrust,
38482 SrcNotAuthorized,
38483 NoDestination,
38484 NoTrust,
38485 NotAuthorized,
38486 LineFull,
38487 NoIssuer(Asset),
38488 TooFewOffers,
38489 OfferCrossSelf,
38490 OverSendmax,
38491}
38492
38493#[cfg(feature = "alloc")]
38494impl Default for PathPaymentStrictReceiveResult {
38495 fn default() -> Self {
38496 Self::Success(PathPaymentStrictReceiveResultSuccess::default())
38497 }
38498}
38499
38500impl PathPaymentStrictReceiveResult {
38501 pub const VARIANTS: [PathPaymentStrictReceiveResultCode; 13] = [
38502 PathPaymentStrictReceiveResultCode::Success,
38503 PathPaymentStrictReceiveResultCode::Malformed,
38504 PathPaymentStrictReceiveResultCode::Underfunded,
38505 PathPaymentStrictReceiveResultCode::SrcNoTrust,
38506 PathPaymentStrictReceiveResultCode::SrcNotAuthorized,
38507 PathPaymentStrictReceiveResultCode::NoDestination,
38508 PathPaymentStrictReceiveResultCode::NoTrust,
38509 PathPaymentStrictReceiveResultCode::NotAuthorized,
38510 PathPaymentStrictReceiveResultCode::LineFull,
38511 PathPaymentStrictReceiveResultCode::NoIssuer,
38512 PathPaymentStrictReceiveResultCode::TooFewOffers,
38513 PathPaymentStrictReceiveResultCode::OfferCrossSelf,
38514 PathPaymentStrictReceiveResultCode::OverSendmax,
38515 ];
38516 pub const VARIANTS_STR: [&'static str; 13] = [
38517 "Success",
38518 "Malformed",
38519 "Underfunded",
38520 "SrcNoTrust",
38521 "SrcNotAuthorized",
38522 "NoDestination",
38523 "NoTrust",
38524 "NotAuthorized",
38525 "LineFull",
38526 "NoIssuer",
38527 "TooFewOffers",
38528 "OfferCrossSelf",
38529 "OverSendmax",
38530 ];
38531
38532 #[must_use]
38533 pub const fn name(&self) -> &'static str {
38534 match self {
38535 Self::Success(_) => "Success",
38536 Self::Malformed => "Malformed",
38537 Self::Underfunded => "Underfunded",
38538 Self::SrcNoTrust => "SrcNoTrust",
38539 Self::SrcNotAuthorized => "SrcNotAuthorized",
38540 Self::NoDestination => "NoDestination",
38541 Self::NoTrust => "NoTrust",
38542 Self::NotAuthorized => "NotAuthorized",
38543 Self::LineFull => "LineFull",
38544 Self::NoIssuer(_) => "NoIssuer",
38545 Self::TooFewOffers => "TooFewOffers",
38546 Self::OfferCrossSelf => "OfferCrossSelf",
38547 Self::OverSendmax => "OverSendmax",
38548 }
38549 }
38550
38551 #[must_use]
38552 pub const fn discriminant(&self) -> PathPaymentStrictReceiveResultCode {
38553 #[allow(clippy::match_same_arms)]
38554 match self {
38555 Self::Success(_) => PathPaymentStrictReceiveResultCode::Success,
38556 Self::Malformed => PathPaymentStrictReceiveResultCode::Malformed,
38557 Self::Underfunded => PathPaymentStrictReceiveResultCode::Underfunded,
38558 Self::SrcNoTrust => PathPaymentStrictReceiveResultCode::SrcNoTrust,
38559 Self::SrcNotAuthorized => PathPaymentStrictReceiveResultCode::SrcNotAuthorized,
38560 Self::NoDestination => PathPaymentStrictReceiveResultCode::NoDestination,
38561 Self::NoTrust => PathPaymentStrictReceiveResultCode::NoTrust,
38562 Self::NotAuthorized => PathPaymentStrictReceiveResultCode::NotAuthorized,
38563 Self::LineFull => PathPaymentStrictReceiveResultCode::LineFull,
38564 Self::NoIssuer(_) => PathPaymentStrictReceiveResultCode::NoIssuer,
38565 Self::TooFewOffers => PathPaymentStrictReceiveResultCode::TooFewOffers,
38566 Self::OfferCrossSelf => PathPaymentStrictReceiveResultCode::OfferCrossSelf,
38567 Self::OverSendmax => PathPaymentStrictReceiveResultCode::OverSendmax,
38568 }
38569 }
38570
38571 #[must_use]
38572 pub const fn variants() -> [PathPaymentStrictReceiveResultCode; 13] {
38573 Self::VARIANTS
38574 }
38575}
38576
38577impl Name for PathPaymentStrictReceiveResult {
38578 #[must_use]
38579 fn name(&self) -> &'static str {
38580 Self::name(self)
38581 }
38582}
38583
38584impl Discriminant<PathPaymentStrictReceiveResultCode> for PathPaymentStrictReceiveResult {
38585 #[must_use]
38586 fn discriminant(&self) -> PathPaymentStrictReceiveResultCode {
38587 Self::discriminant(self)
38588 }
38589}
38590
38591impl Variants<PathPaymentStrictReceiveResultCode> for PathPaymentStrictReceiveResult {
38592 fn variants() -> slice::Iter<'static, PathPaymentStrictReceiveResultCode> {
38593 Self::VARIANTS.iter()
38594 }
38595}
38596
38597impl Union<PathPaymentStrictReceiveResultCode> for PathPaymentStrictReceiveResult {}
38598
38599impl ReadXdr for PathPaymentStrictReceiveResult {
38600 #[cfg(feature = "std")]
38601 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38602 r.with_limited_depth(|r| {
38603 let dv: PathPaymentStrictReceiveResultCode =
38604 <PathPaymentStrictReceiveResultCode as ReadXdr>::read_xdr(r)?;
38605 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
38606 let v = match dv {
38607 PathPaymentStrictReceiveResultCode::Success => {
38608 Self::Success(PathPaymentStrictReceiveResultSuccess::read_xdr(r)?)
38609 }
38610 PathPaymentStrictReceiveResultCode::Malformed => Self::Malformed,
38611 PathPaymentStrictReceiveResultCode::Underfunded => Self::Underfunded,
38612 PathPaymentStrictReceiveResultCode::SrcNoTrust => Self::SrcNoTrust,
38613 PathPaymentStrictReceiveResultCode::SrcNotAuthorized => Self::SrcNotAuthorized,
38614 PathPaymentStrictReceiveResultCode::NoDestination => Self::NoDestination,
38615 PathPaymentStrictReceiveResultCode::NoTrust => Self::NoTrust,
38616 PathPaymentStrictReceiveResultCode::NotAuthorized => Self::NotAuthorized,
38617 PathPaymentStrictReceiveResultCode::LineFull => Self::LineFull,
38618 PathPaymentStrictReceiveResultCode::NoIssuer => Self::NoIssuer(Asset::read_xdr(r)?),
38619 PathPaymentStrictReceiveResultCode::TooFewOffers => Self::TooFewOffers,
38620 PathPaymentStrictReceiveResultCode::OfferCrossSelf => Self::OfferCrossSelf,
38621 PathPaymentStrictReceiveResultCode::OverSendmax => Self::OverSendmax,
38622 #[allow(unreachable_patterns)]
38623 _ => return Err(Error::Invalid),
38624 };
38625 Ok(v)
38626 })
38627 }
38628}
38629
38630impl WriteXdr for PathPaymentStrictReceiveResult {
38631 #[cfg(feature = "std")]
38632 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38633 w.with_limited_depth(|w| {
38634 self.discriminant().write_xdr(w)?;
38635 #[allow(clippy::match_same_arms)]
38636 match self {
38637 Self::Success(v) => v.write_xdr(w)?,
38638 Self::Malformed => ().write_xdr(w)?,
38639 Self::Underfunded => ().write_xdr(w)?,
38640 Self::SrcNoTrust => ().write_xdr(w)?,
38641 Self::SrcNotAuthorized => ().write_xdr(w)?,
38642 Self::NoDestination => ().write_xdr(w)?,
38643 Self::NoTrust => ().write_xdr(w)?,
38644 Self::NotAuthorized => ().write_xdr(w)?,
38645 Self::LineFull => ().write_xdr(w)?,
38646 Self::NoIssuer(v) => v.write_xdr(w)?,
38647 Self::TooFewOffers => ().write_xdr(w)?,
38648 Self::OfferCrossSelf => ().write_xdr(w)?,
38649 Self::OverSendmax => ().write_xdr(w)?,
38650 };
38651 Ok(())
38652 })
38653 }
38654}
38655
38656#[cfg_attr(feature = "alloc", derive(Default))]
38690#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38691#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38692#[cfg_attr(
38693 all(feature = "serde", feature = "alloc"),
38694 derive(serde::Serialize, serde::Deserialize),
38695 serde(rename_all = "snake_case")
38696)]
38697#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38698#[repr(i32)]
38699pub enum PathPaymentStrictSendResultCode {
38700 #[cfg_attr(feature = "alloc", default)]
38701 Success = 0,
38702 Malformed = -1,
38703 Underfunded = -2,
38704 SrcNoTrust = -3,
38705 SrcNotAuthorized = -4,
38706 NoDestination = -5,
38707 NoTrust = -6,
38708 NotAuthorized = -7,
38709 LineFull = -8,
38710 NoIssuer = -9,
38711 TooFewOffers = -10,
38712 OfferCrossSelf = -11,
38713 UnderDestmin = -12,
38714}
38715
38716impl PathPaymentStrictSendResultCode {
38717 pub const VARIANTS: [PathPaymentStrictSendResultCode; 13] = [
38718 PathPaymentStrictSendResultCode::Success,
38719 PathPaymentStrictSendResultCode::Malformed,
38720 PathPaymentStrictSendResultCode::Underfunded,
38721 PathPaymentStrictSendResultCode::SrcNoTrust,
38722 PathPaymentStrictSendResultCode::SrcNotAuthorized,
38723 PathPaymentStrictSendResultCode::NoDestination,
38724 PathPaymentStrictSendResultCode::NoTrust,
38725 PathPaymentStrictSendResultCode::NotAuthorized,
38726 PathPaymentStrictSendResultCode::LineFull,
38727 PathPaymentStrictSendResultCode::NoIssuer,
38728 PathPaymentStrictSendResultCode::TooFewOffers,
38729 PathPaymentStrictSendResultCode::OfferCrossSelf,
38730 PathPaymentStrictSendResultCode::UnderDestmin,
38731 ];
38732 pub const VARIANTS_STR: [&'static str; 13] = [
38733 "Success",
38734 "Malformed",
38735 "Underfunded",
38736 "SrcNoTrust",
38737 "SrcNotAuthorized",
38738 "NoDestination",
38739 "NoTrust",
38740 "NotAuthorized",
38741 "LineFull",
38742 "NoIssuer",
38743 "TooFewOffers",
38744 "OfferCrossSelf",
38745 "UnderDestmin",
38746 ];
38747
38748 #[must_use]
38749 pub const fn name(&self) -> &'static str {
38750 match self {
38751 Self::Success => "Success",
38752 Self::Malformed => "Malformed",
38753 Self::Underfunded => "Underfunded",
38754 Self::SrcNoTrust => "SrcNoTrust",
38755 Self::SrcNotAuthorized => "SrcNotAuthorized",
38756 Self::NoDestination => "NoDestination",
38757 Self::NoTrust => "NoTrust",
38758 Self::NotAuthorized => "NotAuthorized",
38759 Self::LineFull => "LineFull",
38760 Self::NoIssuer => "NoIssuer",
38761 Self::TooFewOffers => "TooFewOffers",
38762 Self::OfferCrossSelf => "OfferCrossSelf",
38763 Self::UnderDestmin => "UnderDestmin",
38764 }
38765 }
38766
38767 #[must_use]
38768 pub const fn variants() -> [PathPaymentStrictSendResultCode; 13] {
38769 Self::VARIANTS
38770 }
38771}
38772
38773impl Name for PathPaymentStrictSendResultCode {
38774 #[must_use]
38775 fn name(&self) -> &'static str {
38776 Self::name(self)
38777 }
38778}
38779
38780impl Variants<PathPaymentStrictSendResultCode> for PathPaymentStrictSendResultCode {
38781 fn variants() -> slice::Iter<'static, PathPaymentStrictSendResultCode> {
38782 Self::VARIANTS.iter()
38783 }
38784}
38785
38786impl Enum for PathPaymentStrictSendResultCode {}
38787
38788impl fmt::Display for PathPaymentStrictSendResultCode {
38789 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
38790 f.write_str(self.name())
38791 }
38792}
38793
38794impl TryFrom<i32> for PathPaymentStrictSendResultCode {
38795 type Error = Error;
38796
38797 fn try_from(i: i32) -> Result<Self, Error> {
38798 let e = match i {
38799 0 => PathPaymentStrictSendResultCode::Success,
38800 -1 => PathPaymentStrictSendResultCode::Malformed,
38801 -2 => PathPaymentStrictSendResultCode::Underfunded,
38802 -3 => PathPaymentStrictSendResultCode::SrcNoTrust,
38803 -4 => PathPaymentStrictSendResultCode::SrcNotAuthorized,
38804 -5 => PathPaymentStrictSendResultCode::NoDestination,
38805 -6 => PathPaymentStrictSendResultCode::NoTrust,
38806 -7 => PathPaymentStrictSendResultCode::NotAuthorized,
38807 -8 => PathPaymentStrictSendResultCode::LineFull,
38808 -9 => PathPaymentStrictSendResultCode::NoIssuer,
38809 -10 => PathPaymentStrictSendResultCode::TooFewOffers,
38810 -11 => PathPaymentStrictSendResultCode::OfferCrossSelf,
38811 -12 => PathPaymentStrictSendResultCode::UnderDestmin,
38812 #[allow(unreachable_patterns)]
38813 _ => return Err(Error::Invalid),
38814 };
38815 Ok(e)
38816 }
38817}
38818
38819impl From<PathPaymentStrictSendResultCode> for i32 {
38820 #[must_use]
38821 fn from(e: PathPaymentStrictSendResultCode) -> Self {
38822 e as Self
38823 }
38824}
38825
38826impl ReadXdr for PathPaymentStrictSendResultCode {
38827 #[cfg(feature = "std")]
38828 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38829 r.with_limited_depth(|r| {
38830 let e = i32::read_xdr(r)?;
38831 let v: Self = e.try_into()?;
38832 Ok(v)
38833 })
38834 }
38835}
38836
38837impl WriteXdr for PathPaymentStrictSendResultCode {
38838 #[cfg(feature = "std")]
38839 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38840 w.with_limited_depth(|w| {
38841 let i: i32 = (*self).into();
38842 i.write_xdr(w)
38843 })
38844 }
38845}
38846
38847#[cfg_attr(feature = "alloc", derive(Default))]
38858#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38859#[cfg_eval::cfg_eval]
38860#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38861#[cfg_attr(
38862 all(feature = "serde", feature = "alloc"),
38863 serde_with::serde_as,
38864 derive(serde::Serialize, serde::Deserialize),
38865 serde(rename_all = "snake_case")
38866)]
38867#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38868pub struct PathPaymentStrictSendResultSuccess {
38869 pub offers: VecM<ClaimAtom>,
38870 pub last: SimplePaymentResult,
38871}
38872
38873impl ReadXdr for PathPaymentStrictSendResultSuccess {
38874 #[cfg(feature = "std")]
38875 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
38876 r.with_limited_depth(|r| {
38877 Ok(Self {
38878 offers: VecM::<ClaimAtom>::read_xdr(r)?,
38879 last: SimplePaymentResult::read_xdr(r)?,
38880 })
38881 })
38882 }
38883}
38884
38885impl WriteXdr for PathPaymentStrictSendResultSuccess {
38886 #[cfg(feature = "std")]
38887 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
38888 w.with_limited_depth(|w| {
38889 self.offers.write_xdr(w)?;
38890 self.last.write_xdr(w)?;
38891 Ok(())
38892 })
38893 }
38894}
38895
38896#[cfg_eval::cfg_eval]
38927#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
38928#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
38929#[cfg_attr(
38930 all(feature = "serde", feature = "alloc"),
38931 serde_with::serde_as,
38932 derive(serde::Serialize, serde::Deserialize),
38933 serde(rename_all = "snake_case")
38934)]
38935#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
38936#[allow(clippy::large_enum_variant)]
38937pub enum PathPaymentStrictSendResult {
38938 Success(PathPaymentStrictSendResultSuccess),
38939 Malformed,
38940 Underfunded,
38941 SrcNoTrust,
38942 SrcNotAuthorized,
38943 NoDestination,
38944 NoTrust,
38945 NotAuthorized,
38946 LineFull,
38947 NoIssuer(Asset),
38948 TooFewOffers,
38949 OfferCrossSelf,
38950 UnderDestmin,
38951}
38952
38953#[cfg(feature = "alloc")]
38954impl Default for PathPaymentStrictSendResult {
38955 fn default() -> Self {
38956 Self::Success(PathPaymentStrictSendResultSuccess::default())
38957 }
38958}
38959
38960impl PathPaymentStrictSendResult {
38961 pub const VARIANTS: [PathPaymentStrictSendResultCode; 13] = [
38962 PathPaymentStrictSendResultCode::Success,
38963 PathPaymentStrictSendResultCode::Malformed,
38964 PathPaymentStrictSendResultCode::Underfunded,
38965 PathPaymentStrictSendResultCode::SrcNoTrust,
38966 PathPaymentStrictSendResultCode::SrcNotAuthorized,
38967 PathPaymentStrictSendResultCode::NoDestination,
38968 PathPaymentStrictSendResultCode::NoTrust,
38969 PathPaymentStrictSendResultCode::NotAuthorized,
38970 PathPaymentStrictSendResultCode::LineFull,
38971 PathPaymentStrictSendResultCode::NoIssuer,
38972 PathPaymentStrictSendResultCode::TooFewOffers,
38973 PathPaymentStrictSendResultCode::OfferCrossSelf,
38974 PathPaymentStrictSendResultCode::UnderDestmin,
38975 ];
38976 pub const VARIANTS_STR: [&'static str; 13] = [
38977 "Success",
38978 "Malformed",
38979 "Underfunded",
38980 "SrcNoTrust",
38981 "SrcNotAuthorized",
38982 "NoDestination",
38983 "NoTrust",
38984 "NotAuthorized",
38985 "LineFull",
38986 "NoIssuer",
38987 "TooFewOffers",
38988 "OfferCrossSelf",
38989 "UnderDestmin",
38990 ];
38991
38992 #[must_use]
38993 pub const fn name(&self) -> &'static str {
38994 match self {
38995 Self::Success(_) => "Success",
38996 Self::Malformed => "Malformed",
38997 Self::Underfunded => "Underfunded",
38998 Self::SrcNoTrust => "SrcNoTrust",
38999 Self::SrcNotAuthorized => "SrcNotAuthorized",
39000 Self::NoDestination => "NoDestination",
39001 Self::NoTrust => "NoTrust",
39002 Self::NotAuthorized => "NotAuthorized",
39003 Self::LineFull => "LineFull",
39004 Self::NoIssuer(_) => "NoIssuer",
39005 Self::TooFewOffers => "TooFewOffers",
39006 Self::OfferCrossSelf => "OfferCrossSelf",
39007 Self::UnderDestmin => "UnderDestmin",
39008 }
39009 }
39010
39011 #[must_use]
39012 pub const fn discriminant(&self) -> PathPaymentStrictSendResultCode {
39013 #[allow(clippy::match_same_arms)]
39014 match self {
39015 Self::Success(_) => PathPaymentStrictSendResultCode::Success,
39016 Self::Malformed => PathPaymentStrictSendResultCode::Malformed,
39017 Self::Underfunded => PathPaymentStrictSendResultCode::Underfunded,
39018 Self::SrcNoTrust => PathPaymentStrictSendResultCode::SrcNoTrust,
39019 Self::SrcNotAuthorized => PathPaymentStrictSendResultCode::SrcNotAuthorized,
39020 Self::NoDestination => PathPaymentStrictSendResultCode::NoDestination,
39021 Self::NoTrust => PathPaymentStrictSendResultCode::NoTrust,
39022 Self::NotAuthorized => PathPaymentStrictSendResultCode::NotAuthorized,
39023 Self::LineFull => PathPaymentStrictSendResultCode::LineFull,
39024 Self::NoIssuer(_) => PathPaymentStrictSendResultCode::NoIssuer,
39025 Self::TooFewOffers => PathPaymentStrictSendResultCode::TooFewOffers,
39026 Self::OfferCrossSelf => PathPaymentStrictSendResultCode::OfferCrossSelf,
39027 Self::UnderDestmin => PathPaymentStrictSendResultCode::UnderDestmin,
39028 }
39029 }
39030
39031 #[must_use]
39032 pub const fn variants() -> [PathPaymentStrictSendResultCode; 13] {
39033 Self::VARIANTS
39034 }
39035}
39036
39037impl Name for PathPaymentStrictSendResult {
39038 #[must_use]
39039 fn name(&self) -> &'static str {
39040 Self::name(self)
39041 }
39042}
39043
39044impl Discriminant<PathPaymentStrictSendResultCode> for PathPaymentStrictSendResult {
39045 #[must_use]
39046 fn discriminant(&self) -> PathPaymentStrictSendResultCode {
39047 Self::discriminant(self)
39048 }
39049}
39050
39051impl Variants<PathPaymentStrictSendResultCode> for PathPaymentStrictSendResult {
39052 fn variants() -> slice::Iter<'static, PathPaymentStrictSendResultCode> {
39053 Self::VARIANTS.iter()
39054 }
39055}
39056
39057impl Union<PathPaymentStrictSendResultCode> for PathPaymentStrictSendResult {}
39058
39059impl ReadXdr for PathPaymentStrictSendResult {
39060 #[cfg(feature = "std")]
39061 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39062 r.with_limited_depth(|r| {
39063 let dv: PathPaymentStrictSendResultCode =
39064 <PathPaymentStrictSendResultCode as ReadXdr>::read_xdr(r)?;
39065 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
39066 let v = match dv {
39067 PathPaymentStrictSendResultCode::Success => {
39068 Self::Success(PathPaymentStrictSendResultSuccess::read_xdr(r)?)
39069 }
39070 PathPaymentStrictSendResultCode::Malformed => Self::Malformed,
39071 PathPaymentStrictSendResultCode::Underfunded => Self::Underfunded,
39072 PathPaymentStrictSendResultCode::SrcNoTrust => Self::SrcNoTrust,
39073 PathPaymentStrictSendResultCode::SrcNotAuthorized => Self::SrcNotAuthorized,
39074 PathPaymentStrictSendResultCode::NoDestination => Self::NoDestination,
39075 PathPaymentStrictSendResultCode::NoTrust => Self::NoTrust,
39076 PathPaymentStrictSendResultCode::NotAuthorized => Self::NotAuthorized,
39077 PathPaymentStrictSendResultCode::LineFull => Self::LineFull,
39078 PathPaymentStrictSendResultCode::NoIssuer => Self::NoIssuer(Asset::read_xdr(r)?),
39079 PathPaymentStrictSendResultCode::TooFewOffers => Self::TooFewOffers,
39080 PathPaymentStrictSendResultCode::OfferCrossSelf => Self::OfferCrossSelf,
39081 PathPaymentStrictSendResultCode::UnderDestmin => Self::UnderDestmin,
39082 #[allow(unreachable_patterns)]
39083 _ => return Err(Error::Invalid),
39084 };
39085 Ok(v)
39086 })
39087 }
39088}
39089
39090impl WriteXdr for PathPaymentStrictSendResult {
39091 #[cfg(feature = "std")]
39092 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39093 w.with_limited_depth(|w| {
39094 self.discriminant().write_xdr(w)?;
39095 #[allow(clippy::match_same_arms)]
39096 match self {
39097 Self::Success(v) => v.write_xdr(w)?,
39098 Self::Malformed => ().write_xdr(w)?,
39099 Self::Underfunded => ().write_xdr(w)?,
39100 Self::SrcNoTrust => ().write_xdr(w)?,
39101 Self::SrcNotAuthorized => ().write_xdr(w)?,
39102 Self::NoDestination => ().write_xdr(w)?,
39103 Self::NoTrust => ().write_xdr(w)?,
39104 Self::NotAuthorized => ().write_xdr(w)?,
39105 Self::LineFull => ().write_xdr(w)?,
39106 Self::NoIssuer(v) => v.write_xdr(w)?,
39107 Self::TooFewOffers => ().write_xdr(w)?,
39108 Self::OfferCrossSelf => ().write_xdr(w)?,
39109 Self::UnderDestmin => ().write_xdr(w)?,
39110 };
39111 Ok(())
39112 })
39113 }
39114}
39115
39116#[cfg_attr(feature = "alloc", derive(Default))]
39149#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39150#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39151#[cfg_attr(
39152 all(feature = "serde", feature = "alloc"),
39153 derive(serde::Serialize, serde::Deserialize),
39154 serde(rename_all = "snake_case")
39155)]
39156#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39157#[repr(i32)]
39158pub enum ManageSellOfferResultCode {
39159 #[cfg_attr(feature = "alloc", default)]
39160 Success = 0,
39161 Malformed = -1,
39162 SellNoTrust = -2,
39163 BuyNoTrust = -3,
39164 SellNotAuthorized = -4,
39165 BuyNotAuthorized = -5,
39166 LineFull = -6,
39167 Underfunded = -7,
39168 CrossSelf = -8,
39169 SellNoIssuer = -9,
39170 BuyNoIssuer = -10,
39171 NotFound = -11,
39172 LowReserve = -12,
39173}
39174
39175impl ManageSellOfferResultCode {
39176 pub const VARIANTS: [ManageSellOfferResultCode; 13] = [
39177 ManageSellOfferResultCode::Success,
39178 ManageSellOfferResultCode::Malformed,
39179 ManageSellOfferResultCode::SellNoTrust,
39180 ManageSellOfferResultCode::BuyNoTrust,
39181 ManageSellOfferResultCode::SellNotAuthorized,
39182 ManageSellOfferResultCode::BuyNotAuthorized,
39183 ManageSellOfferResultCode::LineFull,
39184 ManageSellOfferResultCode::Underfunded,
39185 ManageSellOfferResultCode::CrossSelf,
39186 ManageSellOfferResultCode::SellNoIssuer,
39187 ManageSellOfferResultCode::BuyNoIssuer,
39188 ManageSellOfferResultCode::NotFound,
39189 ManageSellOfferResultCode::LowReserve,
39190 ];
39191 pub const VARIANTS_STR: [&'static str; 13] = [
39192 "Success",
39193 "Malformed",
39194 "SellNoTrust",
39195 "BuyNoTrust",
39196 "SellNotAuthorized",
39197 "BuyNotAuthorized",
39198 "LineFull",
39199 "Underfunded",
39200 "CrossSelf",
39201 "SellNoIssuer",
39202 "BuyNoIssuer",
39203 "NotFound",
39204 "LowReserve",
39205 ];
39206
39207 #[must_use]
39208 pub const fn name(&self) -> &'static str {
39209 match self {
39210 Self::Success => "Success",
39211 Self::Malformed => "Malformed",
39212 Self::SellNoTrust => "SellNoTrust",
39213 Self::BuyNoTrust => "BuyNoTrust",
39214 Self::SellNotAuthorized => "SellNotAuthorized",
39215 Self::BuyNotAuthorized => "BuyNotAuthorized",
39216 Self::LineFull => "LineFull",
39217 Self::Underfunded => "Underfunded",
39218 Self::CrossSelf => "CrossSelf",
39219 Self::SellNoIssuer => "SellNoIssuer",
39220 Self::BuyNoIssuer => "BuyNoIssuer",
39221 Self::NotFound => "NotFound",
39222 Self::LowReserve => "LowReserve",
39223 }
39224 }
39225
39226 #[must_use]
39227 pub const fn variants() -> [ManageSellOfferResultCode; 13] {
39228 Self::VARIANTS
39229 }
39230}
39231
39232impl Name for ManageSellOfferResultCode {
39233 #[must_use]
39234 fn name(&self) -> &'static str {
39235 Self::name(self)
39236 }
39237}
39238
39239impl Variants<ManageSellOfferResultCode> for ManageSellOfferResultCode {
39240 fn variants() -> slice::Iter<'static, ManageSellOfferResultCode> {
39241 Self::VARIANTS.iter()
39242 }
39243}
39244
39245impl Enum for ManageSellOfferResultCode {}
39246
39247impl fmt::Display for ManageSellOfferResultCode {
39248 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39249 f.write_str(self.name())
39250 }
39251}
39252
39253impl TryFrom<i32> for ManageSellOfferResultCode {
39254 type Error = Error;
39255
39256 fn try_from(i: i32) -> Result<Self, Error> {
39257 let e = match i {
39258 0 => ManageSellOfferResultCode::Success,
39259 -1 => ManageSellOfferResultCode::Malformed,
39260 -2 => ManageSellOfferResultCode::SellNoTrust,
39261 -3 => ManageSellOfferResultCode::BuyNoTrust,
39262 -4 => ManageSellOfferResultCode::SellNotAuthorized,
39263 -5 => ManageSellOfferResultCode::BuyNotAuthorized,
39264 -6 => ManageSellOfferResultCode::LineFull,
39265 -7 => ManageSellOfferResultCode::Underfunded,
39266 -8 => ManageSellOfferResultCode::CrossSelf,
39267 -9 => ManageSellOfferResultCode::SellNoIssuer,
39268 -10 => ManageSellOfferResultCode::BuyNoIssuer,
39269 -11 => ManageSellOfferResultCode::NotFound,
39270 -12 => ManageSellOfferResultCode::LowReserve,
39271 #[allow(unreachable_patterns)]
39272 _ => return Err(Error::Invalid),
39273 };
39274 Ok(e)
39275 }
39276}
39277
39278impl From<ManageSellOfferResultCode> for i32 {
39279 #[must_use]
39280 fn from(e: ManageSellOfferResultCode) -> Self {
39281 e as Self
39282 }
39283}
39284
39285impl ReadXdr for ManageSellOfferResultCode {
39286 #[cfg(feature = "std")]
39287 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39288 r.with_limited_depth(|r| {
39289 let e = i32::read_xdr(r)?;
39290 let v: Self = e.try_into()?;
39291 Ok(v)
39292 })
39293 }
39294}
39295
39296impl WriteXdr for ManageSellOfferResultCode {
39297 #[cfg(feature = "std")]
39298 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39299 w.with_limited_depth(|w| {
39300 let i: i32 = (*self).into();
39301 i.write_xdr(w)
39302 })
39303 }
39304}
39305
39306#[cfg_attr(feature = "alloc", derive(Default))]
39319#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39320#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39321#[cfg_attr(
39322 all(feature = "serde", feature = "alloc"),
39323 derive(serde::Serialize, serde::Deserialize),
39324 serde(rename_all = "snake_case")
39325)]
39326#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39327#[repr(i32)]
39328pub enum ManageOfferEffect {
39329 #[cfg_attr(feature = "alloc", default)]
39330 Created = 0,
39331 Updated = 1,
39332 Deleted = 2,
39333}
39334
39335impl ManageOfferEffect {
39336 pub const VARIANTS: [ManageOfferEffect; 3] = [
39337 ManageOfferEffect::Created,
39338 ManageOfferEffect::Updated,
39339 ManageOfferEffect::Deleted,
39340 ];
39341 pub const VARIANTS_STR: [&'static str; 3] = ["Created", "Updated", "Deleted"];
39342
39343 #[must_use]
39344 pub const fn name(&self) -> &'static str {
39345 match self {
39346 Self::Created => "Created",
39347 Self::Updated => "Updated",
39348 Self::Deleted => "Deleted",
39349 }
39350 }
39351
39352 #[must_use]
39353 pub const fn variants() -> [ManageOfferEffect; 3] {
39354 Self::VARIANTS
39355 }
39356}
39357
39358impl Name for ManageOfferEffect {
39359 #[must_use]
39360 fn name(&self) -> &'static str {
39361 Self::name(self)
39362 }
39363}
39364
39365impl Variants<ManageOfferEffect> for ManageOfferEffect {
39366 fn variants() -> slice::Iter<'static, ManageOfferEffect> {
39367 Self::VARIANTS.iter()
39368 }
39369}
39370
39371impl Enum for ManageOfferEffect {}
39372
39373impl fmt::Display for ManageOfferEffect {
39374 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39375 f.write_str(self.name())
39376 }
39377}
39378
39379impl TryFrom<i32> for ManageOfferEffect {
39380 type Error = Error;
39381
39382 fn try_from(i: i32) -> Result<Self, Error> {
39383 let e = match i {
39384 0 => ManageOfferEffect::Created,
39385 1 => ManageOfferEffect::Updated,
39386 2 => ManageOfferEffect::Deleted,
39387 #[allow(unreachable_patterns)]
39388 _ => return Err(Error::Invalid),
39389 };
39390 Ok(e)
39391 }
39392}
39393
39394impl From<ManageOfferEffect> for i32 {
39395 #[must_use]
39396 fn from(e: ManageOfferEffect) -> Self {
39397 e as Self
39398 }
39399}
39400
39401impl ReadXdr for ManageOfferEffect {
39402 #[cfg(feature = "std")]
39403 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39404 r.with_limited_depth(|r| {
39405 let e = i32::read_xdr(r)?;
39406 let v: Self = e.try_into()?;
39407 Ok(v)
39408 })
39409 }
39410}
39411
39412impl WriteXdr for ManageOfferEffect {
39413 #[cfg(feature = "std")]
39414 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39415 w.with_limited_depth(|w| {
39416 let i: i32 = (*self).into();
39417 i.write_xdr(w)
39418 })
39419 }
39420}
39421
39422#[cfg_eval::cfg_eval]
39437#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39438#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39439#[cfg_attr(
39440 all(feature = "serde", feature = "alloc"),
39441 serde_with::serde_as,
39442 derive(serde::Serialize, serde::Deserialize),
39443 serde(rename_all = "snake_case")
39444)]
39445#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39446#[allow(clippy::large_enum_variant)]
39447pub enum ManageOfferSuccessResultOffer {
39448 Created(OfferEntry),
39449 Updated(OfferEntry),
39450 Deleted,
39451}
39452
39453#[cfg(feature = "alloc")]
39454impl Default for ManageOfferSuccessResultOffer {
39455 fn default() -> Self {
39456 Self::Created(OfferEntry::default())
39457 }
39458}
39459
39460impl ManageOfferSuccessResultOffer {
39461 pub const VARIANTS: [ManageOfferEffect; 3] = [
39462 ManageOfferEffect::Created,
39463 ManageOfferEffect::Updated,
39464 ManageOfferEffect::Deleted,
39465 ];
39466 pub const VARIANTS_STR: [&'static str; 3] = ["Created", "Updated", "Deleted"];
39467
39468 #[must_use]
39469 pub const fn name(&self) -> &'static str {
39470 match self {
39471 Self::Created(_) => "Created",
39472 Self::Updated(_) => "Updated",
39473 Self::Deleted => "Deleted",
39474 }
39475 }
39476
39477 #[must_use]
39478 pub const fn discriminant(&self) -> ManageOfferEffect {
39479 #[allow(clippy::match_same_arms)]
39480 match self {
39481 Self::Created(_) => ManageOfferEffect::Created,
39482 Self::Updated(_) => ManageOfferEffect::Updated,
39483 Self::Deleted => ManageOfferEffect::Deleted,
39484 }
39485 }
39486
39487 #[must_use]
39488 pub const fn variants() -> [ManageOfferEffect; 3] {
39489 Self::VARIANTS
39490 }
39491}
39492
39493impl Name for ManageOfferSuccessResultOffer {
39494 #[must_use]
39495 fn name(&self) -> &'static str {
39496 Self::name(self)
39497 }
39498}
39499
39500impl Discriminant<ManageOfferEffect> for ManageOfferSuccessResultOffer {
39501 #[must_use]
39502 fn discriminant(&self) -> ManageOfferEffect {
39503 Self::discriminant(self)
39504 }
39505}
39506
39507impl Variants<ManageOfferEffect> for ManageOfferSuccessResultOffer {
39508 fn variants() -> slice::Iter<'static, ManageOfferEffect> {
39509 Self::VARIANTS.iter()
39510 }
39511}
39512
39513impl Union<ManageOfferEffect> for ManageOfferSuccessResultOffer {}
39514
39515impl ReadXdr for ManageOfferSuccessResultOffer {
39516 #[cfg(feature = "std")]
39517 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39518 r.with_limited_depth(|r| {
39519 let dv: ManageOfferEffect = <ManageOfferEffect as ReadXdr>::read_xdr(r)?;
39520 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
39521 let v = match dv {
39522 ManageOfferEffect::Created => Self::Created(OfferEntry::read_xdr(r)?),
39523 ManageOfferEffect::Updated => Self::Updated(OfferEntry::read_xdr(r)?),
39524 ManageOfferEffect::Deleted => Self::Deleted,
39525 #[allow(unreachable_patterns)]
39526 _ => return Err(Error::Invalid),
39527 };
39528 Ok(v)
39529 })
39530 }
39531}
39532
39533impl WriteXdr for ManageOfferSuccessResultOffer {
39534 #[cfg(feature = "std")]
39535 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39536 w.with_limited_depth(|w| {
39537 self.discriminant().write_xdr(w)?;
39538 #[allow(clippy::match_same_arms)]
39539 match self {
39540 Self::Created(v) => v.write_xdr(w)?,
39541 Self::Updated(v) => v.write_xdr(w)?,
39542 Self::Deleted => ().write_xdr(w)?,
39543 };
39544 Ok(())
39545 })
39546 }
39547}
39548
39549#[cfg_attr(feature = "alloc", derive(Default))]
39570#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39571#[cfg_eval::cfg_eval]
39572#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39573#[cfg_attr(
39574 all(feature = "serde", feature = "alloc"),
39575 serde_with::serde_as,
39576 derive(serde::Serialize, serde::Deserialize),
39577 serde(rename_all = "snake_case")
39578)]
39579#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39580pub struct ManageOfferSuccessResult {
39581 pub offers_claimed: VecM<ClaimAtom>,
39582 pub offer: ManageOfferSuccessResultOffer,
39583}
39584
39585impl ReadXdr for ManageOfferSuccessResult {
39586 #[cfg(feature = "std")]
39587 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39588 r.with_limited_depth(|r| {
39589 Ok(Self {
39590 offers_claimed: VecM::<ClaimAtom>::read_xdr(r)?,
39591 offer: ManageOfferSuccessResultOffer::read_xdr(r)?,
39592 })
39593 })
39594 }
39595}
39596
39597impl WriteXdr for ManageOfferSuccessResult {
39598 #[cfg(feature = "std")]
39599 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39600 w.with_limited_depth(|w| {
39601 self.offers_claimed.write_xdr(w)?;
39602 self.offer.write_xdr(w)?;
39603 Ok(())
39604 })
39605 }
39606}
39607
39608#[cfg_eval::cfg_eval]
39633#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39634#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39635#[cfg_attr(
39636 all(feature = "serde", feature = "alloc"),
39637 serde_with::serde_as,
39638 derive(serde::Serialize, serde::Deserialize),
39639 serde(rename_all = "snake_case")
39640)]
39641#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39642#[allow(clippy::large_enum_variant)]
39643pub enum ManageSellOfferResult {
39644 Success(ManageOfferSuccessResult),
39645 Malformed,
39646 SellNoTrust,
39647 BuyNoTrust,
39648 SellNotAuthorized,
39649 BuyNotAuthorized,
39650 LineFull,
39651 Underfunded,
39652 CrossSelf,
39653 SellNoIssuer,
39654 BuyNoIssuer,
39655 NotFound,
39656 LowReserve,
39657}
39658
39659#[cfg(feature = "alloc")]
39660impl Default for ManageSellOfferResult {
39661 fn default() -> Self {
39662 Self::Success(ManageOfferSuccessResult::default())
39663 }
39664}
39665
39666impl ManageSellOfferResult {
39667 pub const VARIANTS: [ManageSellOfferResultCode; 13] = [
39668 ManageSellOfferResultCode::Success,
39669 ManageSellOfferResultCode::Malformed,
39670 ManageSellOfferResultCode::SellNoTrust,
39671 ManageSellOfferResultCode::BuyNoTrust,
39672 ManageSellOfferResultCode::SellNotAuthorized,
39673 ManageSellOfferResultCode::BuyNotAuthorized,
39674 ManageSellOfferResultCode::LineFull,
39675 ManageSellOfferResultCode::Underfunded,
39676 ManageSellOfferResultCode::CrossSelf,
39677 ManageSellOfferResultCode::SellNoIssuer,
39678 ManageSellOfferResultCode::BuyNoIssuer,
39679 ManageSellOfferResultCode::NotFound,
39680 ManageSellOfferResultCode::LowReserve,
39681 ];
39682 pub const VARIANTS_STR: [&'static str; 13] = [
39683 "Success",
39684 "Malformed",
39685 "SellNoTrust",
39686 "BuyNoTrust",
39687 "SellNotAuthorized",
39688 "BuyNotAuthorized",
39689 "LineFull",
39690 "Underfunded",
39691 "CrossSelf",
39692 "SellNoIssuer",
39693 "BuyNoIssuer",
39694 "NotFound",
39695 "LowReserve",
39696 ];
39697
39698 #[must_use]
39699 pub const fn name(&self) -> &'static str {
39700 match self {
39701 Self::Success(_) => "Success",
39702 Self::Malformed => "Malformed",
39703 Self::SellNoTrust => "SellNoTrust",
39704 Self::BuyNoTrust => "BuyNoTrust",
39705 Self::SellNotAuthorized => "SellNotAuthorized",
39706 Self::BuyNotAuthorized => "BuyNotAuthorized",
39707 Self::LineFull => "LineFull",
39708 Self::Underfunded => "Underfunded",
39709 Self::CrossSelf => "CrossSelf",
39710 Self::SellNoIssuer => "SellNoIssuer",
39711 Self::BuyNoIssuer => "BuyNoIssuer",
39712 Self::NotFound => "NotFound",
39713 Self::LowReserve => "LowReserve",
39714 }
39715 }
39716
39717 #[must_use]
39718 pub const fn discriminant(&self) -> ManageSellOfferResultCode {
39719 #[allow(clippy::match_same_arms)]
39720 match self {
39721 Self::Success(_) => ManageSellOfferResultCode::Success,
39722 Self::Malformed => ManageSellOfferResultCode::Malformed,
39723 Self::SellNoTrust => ManageSellOfferResultCode::SellNoTrust,
39724 Self::BuyNoTrust => ManageSellOfferResultCode::BuyNoTrust,
39725 Self::SellNotAuthorized => ManageSellOfferResultCode::SellNotAuthorized,
39726 Self::BuyNotAuthorized => ManageSellOfferResultCode::BuyNotAuthorized,
39727 Self::LineFull => ManageSellOfferResultCode::LineFull,
39728 Self::Underfunded => ManageSellOfferResultCode::Underfunded,
39729 Self::CrossSelf => ManageSellOfferResultCode::CrossSelf,
39730 Self::SellNoIssuer => ManageSellOfferResultCode::SellNoIssuer,
39731 Self::BuyNoIssuer => ManageSellOfferResultCode::BuyNoIssuer,
39732 Self::NotFound => ManageSellOfferResultCode::NotFound,
39733 Self::LowReserve => ManageSellOfferResultCode::LowReserve,
39734 }
39735 }
39736
39737 #[must_use]
39738 pub const fn variants() -> [ManageSellOfferResultCode; 13] {
39739 Self::VARIANTS
39740 }
39741}
39742
39743impl Name for ManageSellOfferResult {
39744 #[must_use]
39745 fn name(&self) -> &'static str {
39746 Self::name(self)
39747 }
39748}
39749
39750impl Discriminant<ManageSellOfferResultCode> for ManageSellOfferResult {
39751 #[must_use]
39752 fn discriminant(&self) -> ManageSellOfferResultCode {
39753 Self::discriminant(self)
39754 }
39755}
39756
39757impl Variants<ManageSellOfferResultCode> for ManageSellOfferResult {
39758 fn variants() -> slice::Iter<'static, ManageSellOfferResultCode> {
39759 Self::VARIANTS.iter()
39760 }
39761}
39762
39763impl Union<ManageSellOfferResultCode> for ManageSellOfferResult {}
39764
39765impl ReadXdr for ManageSellOfferResult {
39766 #[cfg(feature = "std")]
39767 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39768 r.with_limited_depth(|r| {
39769 let dv: ManageSellOfferResultCode =
39770 <ManageSellOfferResultCode as ReadXdr>::read_xdr(r)?;
39771 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
39772 let v = match dv {
39773 ManageSellOfferResultCode::Success => {
39774 Self::Success(ManageOfferSuccessResult::read_xdr(r)?)
39775 }
39776 ManageSellOfferResultCode::Malformed => Self::Malformed,
39777 ManageSellOfferResultCode::SellNoTrust => Self::SellNoTrust,
39778 ManageSellOfferResultCode::BuyNoTrust => Self::BuyNoTrust,
39779 ManageSellOfferResultCode::SellNotAuthorized => Self::SellNotAuthorized,
39780 ManageSellOfferResultCode::BuyNotAuthorized => Self::BuyNotAuthorized,
39781 ManageSellOfferResultCode::LineFull => Self::LineFull,
39782 ManageSellOfferResultCode::Underfunded => Self::Underfunded,
39783 ManageSellOfferResultCode::CrossSelf => Self::CrossSelf,
39784 ManageSellOfferResultCode::SellNoIssuer => Self::SellNoIssuer,
39785 ManageSellOfferResultCode::BuyNoIssuer => Self::BuyNoIssuer,
39786 ManageSellOfferResultCode::NotFound => Self::NotFound,
39787 ManageSellOfferResultCode::LowReserve => Self::LowReserve,
39788 #[allow(unreachable_patterns)]
39789 _ => return Err(Error::Invalid),
39790 };
39791 Ok(v)
39792 })
39793 }
39794}
39795
39796impl WriteXdr for ManageSellOfferResult {
39797 #[cfg(feature = "std")]
39798 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
39799 w.with_limited_depth(|w| {
39800 self.discriminant().write_xdr(w)?;
39801 #[allow(clippy::match_same_arms)]
39802 match self {
39803 Self::Success(v) => v.write_xdr(w)?,
39804 Self::Malformed => ().write_xdr(w)?,
39805 Self::SellNoTrust => ().write_xdr(w)?,
39806 Self::BuyNoTrust => ().write_xdr(w)?,
39807 Self::SellNotAuthorized => ().write_xdr(w)?,
39808 Self::BuyNotAuthorized => ().write_xdr(w)?,
39809 Self::LineFull => ().write_xdr(w)?,
39810 Self::Underfunded => ().write_xdr(w)?,
39811 Self::CrossSelf => ().write_xdr(w)?,
39812 Self::SellNoIssuer => ().write_xdr(w)?,
39813 Self::BuyNoIssuer => ().write_xdr(w)?,
39814 Self::NotFound => ().write_xdr(w)?,
39815 Self::LowReserve => ().write_xdr(w)?,
39816 };
39817 Ok(())
39818 })
39819 }
39820}
39821
39822#[cfg_attr(feature = "alloc", derive(Default))]
39852#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
39853#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
39854#[cfg_attr(
39855 all(feature = "serde", feature = "alloc"),
39856 derive(serde::Serialize, serde::Deserialize),
39857 serde(rename_all = "snake_case")
39858)]
39859#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
39860#[repr(i32)]
39861pub enum ManageBuyOfferResultCode {
39862 #[cfg_attr(feature = "alloc", default)]
39863 Success = 0,
39864 Malformed = -1,
39865 SellNoTrust = -2,
39866 BuyNoTrust = -3,
39867 SellNotAuthorized = -4,
39868 BuyNotAuthorized = -5,
39869 LineFull = -6,
39870 Underfunded = -7,
39871 CrossSelf = -8,
39872 SellNoIssuer = -9,
39873 BuyNoIssuer = -10,
39874 NotFound = -11,
39875 LowReserve = -12,
39876}
39877
39878impl ManageBuyOfferResultCode {
39879 pub const VARIANTS: [ManageBuyOfferResultCode; 13] = [
39880 ManageBuyOfferResultCode::Success,
39881 ManageBuyOfferResultCode::Malformed,
39882 ManageBuyOfferResultCode::SellNoTrust,
39883 ManageBuyOfferResultCode::BuyNoTrust,
39884 ManageBuyOfferResultCode::SellNotAuthorized,
39885 ManageBuyOfferResultCode::BuyNotAuthorized,
39886 ManageBuyOfferResultCode::LineFull,
39887 ManageBuyOfferResultCode::Underfunded,
39888 ManageBuyOfferResultCode::CrossSelf,
39889 ManageBuyOfferResultCode::SellNoIssuer,
39890 ManageBuyOfferResultCode::BuyNoIssuer,
39891 ManageBuyOfferResultCode::NotFound,
39892 ManageBuyOfferResultCode::LowReserve,
39893 ];
39894 pub const VARIANTS_STR: [&'static str; 13] = [
39895 "Success",
39896 "Malformed",
39897 "SellNoTrust",
39898 "BuyNoTrust",
39899 "SellNotAuthorized",
39900 "BuyNotAuthorized",
39901 "LineFull",
39902 "Underfunded",
39903 "CrossSelf",
39904 "SellNoIssuer",
39905 "BuyNoIssuer",
39906 "NotFound",
39907 "LowReserve",
39908 ];
39909
39910 #[must_use]
39911 pub const fn name(&self) -> &'static str {
39912 match self {
39913 Self::Success => "Success",
39914 Self::Malformed => "Malformed",
39915 Self::SellNoTrust => "SellNoTrust",
39916 Self::BuyNoTrust => "BuyNoTrust",
39917 Self::SellNotAuthorized => "SellNotAuthorized",
39918 Self::BuyNotAuthorized => "BuyNotAuthorized",
39919 Self::LineFull => "LineFull",
39920 Self::Underfunded => "Underfunded",
39921 Self::CrossSelf => "CrossSelf",
39922 Self::SellNoIssuer => "SellNoIssuer",
39923 Self::BuyNoIssuer => "BuyNoIssuer",
39924 Self::NotFound => "NotFound",
39925 Self::LowReserve => "LowReserve",
39926 }
39927 }
39928
39929 #[must_use]
39930 pub const fn variants() -> [ManageBuyOfferResultCode; 13] {
39931 Self::VARIANTS
39932 }
39933}
39934
39935impl Name for ManageBuyOfferResultCode {
39936 #[must_use]
39937 fn name(&self) -> &'static str {
39938 Self::name(self)
39939 }
39940}
39941
39942impl Variants<ManageBuyOfferResultCode> for ManageBuyOfferResultCode {
39943 fn variants() -> slice::Iter<'static, ManageBuyOfferResultCode> {
39944 Self::VARIANTS.iter()
39945 }
39946}
39947
39948impl Enum for ManageBuyOfferResultCode {}
39949
39950impl fmt::Display for ManageBuyOfferResultCode {
39951 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
39952 f.write_str(self.name())
39953 }
39954}
39955
39956impl TryFrom<i32> for ManageBuyOfferResultCode {
39957 type Error = Error;
39958
39959 fn try_from(i: i32) -> Result<Self, Error> {
39960 let e = match i {
39961 0 => ManageBuyOfferResultCode::Success,
39962 -1 => ManageBuyOfferResultCode::Malformed,
39963 -2 => ManageBuyOfferResultCode::SellNoTrust,
39964 -3 => ManageBuyOfferResultCode::BuyNoTrust,
39965 -4 => ManageBuyOfferResultCode::SellNotAuthorized,
39966 -5 => ManageBuyOfferResultCode::BuyNotAuthorized,
39967 -6 => ManageBuyOfferResultCode::LineFull,
39968 -7 => ManageBuyOfferResultCode::Underfunded,
39969 -8 => ManageBuyOfferResultCode::CrossSelf,
39970 -9 => ManageBuyOfferResultCode::SellNoIssuer,
39971 -10 => ManageBuyOfferResultCode::BuyNoIssuer,
39972 -11 => ManageBuyOfferResultCode::NotFound,
39973 -12 => ManageBuyOfferResultCode::LowReserve,
39974 #[allow(unreachable_patterns)]
39975 _ => return Err(Error::Invalid),
39976 };
39977 Ok(e)
39978 }
39979}
39980
39981impl From<ManageBuyOfferResultCode> for i32 {
39982 #[must_use]
39983 fn from(e: ManageBuyOfferResultCode) -> Self {
39984 e as Self
39985 }
39986}
39987
39988impl ReadXdr for ManageBuyOfferResultCode {
39989 #[cfg(feature = "std")]
39990 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
39991 r.with_limited_depth(|r| {
39992 let e = i32::read_xdr(r)?;
39993 let v: Self = e.try_into()?;
39994 Ok(v)
39995 })
39996 }
39997}
39998
39999impl WriteXdr for ManageBuyOfferResultCode {
40000 #[cfg(feature = "std")]
40001 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40002 w.with_limited_depth(|w| {
40003 let i: i32 = (*self).into();
40004 i.write_xdr(w)
40005 })
40006 }
40007}
40008
40009#[cfg_eval::cfg_eval]
40034#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40035#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40036#[cfg_attr(
40037 all(feature = "serde", feature = "alloc"),
40038 serde_with::serde_as,
40039 derive(serde::Serialize, serde::Deserialize),
40040 serde(rename_all = "snake_case")
40041)]
40042#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40043#[allow(clippy::large_enum_variant)]
40044pub enum ManageBuyOfferResult {
40045 Success(ManageOfferSuccessResult),
40046 Malformed,
40047 SellNoTrust,
40048 BuyNoTrust,
40049 SellNotAuthorized,
40050 BuyNotAuthorized,
40051 LineFull,
40052 Underfunded,
40053 CrossSelf,
40054 SellNoIssuer,
40055 BuyNoIssuer,
40056 NotFound,
40057 LowReserve,
40058}
40059
40060#[cfg(feature = "alloc")]
40061impl Default for ManageBuyOfferResult {
40062 fn default() -> Self {
40063 Self::Success(ManageOfferSuccessResult::default())
40064 }
40065}
40066
40067impl ManageBuyOfferResult {
40068 pub const VARIANTS: [ManageBuyOfferResultCode; 13] = [
40069 ManageBuyOfferResultCode::Success,
40070 ManageBuyOfferResultCode::Malformed,
40071 ManageBuyOfferResultCode::SellNoTrust,
40072 ManageBuyOfferResultCode::BuyNoTrust,
40073 ManageBuyOfferResultCode::SellNotAuthorized,
40074 ManageBuyOfferResultCode::BuyNotAuthorized,
40075 ManageBuyOfferResultCode::LineFull,
40076 ManageBuyOfferResultCode::Underfunded,
40077 ManageBuyOfferResultCode::CrossSelf,
40078 ManageBuyOfferResultCode::SellNoIssuer,
40079 ManageBuyOfferResultCode::BuyNoIssuer,
40080 ManageBuyOfferResultCode::NotFound,
40081 ManageBuyOfferResultCode::LowReserve,
40082 ];
40083 pub const VARIANTS_STR: [&'static str; 13] = [
40084 "Success",
40085 "Malformed",
40086 "SellNoTrust",
40087 "BuyNoTrust",
40088 "SellNotAuthorized",
40089 "BuyNotAuthorized",
40090 "LineFull",
40091 "Underfunded",
40092 "CrossSelf",
40093 "SellNoIssuer",
40094 "BuyNoIssuer",
40095 "NotFound",
40096 "LowReserve",
40097 ];
40098
40099 #[must_use]
40100 pub const fn name(&self) -> &'static str {
40101 match self {
40102 Self::Success(_) => "Success",
40103 Self::Malformed => "Malformed",
40104 Self::SellNoTrust => "SellNoTrust",
40105 Self::BuyNoTrust => "BuyNoTrust",
40106 Self::SellNotAuthorized => "SellNotAuthorized",
40107 Self::BuyNotAuthorized => "BuyNotAuthorized",
40108 Self::LineFull => "LineFull",
40109 Self::Underfunded => "Underfunded",
40110 Self::CrossSelf => "CrossSelf",
40111 Self::SellNoIssuer => "SellNoIssuer",
40112 Self::BuyNoIssuer => "BuyNoIssuer",
40113 Self::NotFound => "NotFound",
40114 Self::LowReserve => "LowReserve",
40115 }
40116 }
40117
40118 #[must_use]
40119 pub const fn discriminant(&self) -> ManageBuyOfferResultCode {
40120 #[allow(clippy::match_same_arms)]
40121 match self {
40122 Self::Success(_) => ManageBuyOfferResultCode::Success,
40123 Self::Malformed => ManageBuyOfferResultCode::Malformed,
40124 Self::SellNoTrust => ManageBuyOfferResultCode::SellNoTrust,
40125 Self::BuyNoTrust => ManageBuyOfferResultCode::BuyNoTrust,
40126 Self::SellNotAuthorized => ManageBuyOfferResultCode::SellNotAuthorized,
40127 Self::BuyNotAuthorized => ManageBuyOfferResultCode::BuyNotAuthorized,
40128 Self::LineFull => ManageBuyOfferResultCode::LineFull,
40129 Self::Underfunded => ManageBuyOfferResultCode::Underfunded,
40130 Self::CrossSelf => ManageBuyOfferResultCode::CrossSelf,
40131 Self::SellNoIssuer => ManageBuyOfferResultCode::SellNoIssuer,
40132 Self::BuyNoIssuer => ManageBuyOfferResultCode::BuyNoIssuer,
40133 Self::NotFound => ManageBuyOfferResultCode::NotFound,
40134 Self::LowReserve => ManageBuyOfferResultCode::LowReserve,
40135 }
40136 }
40137
40138 #[must_use]
40139 pub const fn variants() -> [ManageBuyOfferResultCode; 13] {
40140 Self::VARIANTS
40141 }
40142}
40143
40144impl Name for ManageBuyOfferResult {
40145 #[must_use]
40146 fn name(&self) -> &'static str {
40147 Self::name(self)
40148 }
40149}
40150
40151impl Discriminant<ManageBuyOfferResultCode> for ManageBuyOfferResult {
40152 #[must_use]
40153 fn discriminant(&self) -> ManageBuyOfferResultCode {
40154 Self::discriminant(self)
40155 }
40156}
40157
40158impl Variants<ManageBuyOfferResultCode> for ManageBuyOfferResult {
40159 fn variants() -> slice::Iter<'static, ManageBuyOfferResultCode> {
40160 Self::VARIANTS.iter()
40161 }
40162}
40163
40164impl Union<ManageBuyOfferResultCode> for ManageBuyOfferResult {}
40165
40166impl ReadXdr for ManageBuyOfferResult {
40167 #[cfg(feature = "std")]
40168 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
40169 r.with_limited_depth(|r| {
40170 let dv: ManageBuyOfferResultCode = <ManageBuyOfferResultCode as ReadXdr>::read_xdr(r)?;
40171 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
40172 let v = match dv {
40173 ManageBuyOfferResultCode::Success => {
40174 Self::Success(ManageOfferSuccessResult::read_xdr(r)?)
40175 }
40176 ManageBuyOfferResultCode::Malformed => Self::Malformed,
40177 ManageBuyOfferResultCode::SellNoTrust => Self::SellNoTrust,
40178 ManageBuyOfferResultCode::BuyNoTrust => Self::BuyNoTrust,
40179 ManageBuyOfferResultCode::SellNotAuthorized => Self::SellNotAuthorized,
40180 ManageBuyOfferResultCode::BuyNotAuthorized => Self::BuyNotAuthorized,
40181 ManageBuyOfferResultCode::LineFull => Self::LineFull,
40182 ManageBuyOfferResultCode::Underfunded => Self::Underfunded,
40183 ManageBuyOfferResultCode::CrossSelf => Self::CrossSelf,
40184 ManageBuyOfferResultCode::SellNoIssuer => Self::SellNoIssuer,
40185 ManageBuyOfferResultCode::BuyNoIssuer => Self::BuyNoIssuer,
40186 ManageBuyOfferResultCode::NotFound => Self::NotFound,
40187 ManageBuyOfferResultCode::LowReserve => Self::LowReserve,
40188 #[allow(unreachable_patterns)]
40189 _ => return Err(Error::Invalid),
40190 };
40191 Ok(v)
40192 })
40193 }
40194}
40195
40196impl WriteXdr for ManageBuyOfferResult {
40197 #[cfg(feature = "std")]
40198 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40199 w.with_limited_depth(|w| {
40200 self.discriminant().write_xdr(w)?;
40201 #[allow(clippy::match_same_arms)]
40202 match self {
40203 Self::Success(v) => v.write_xdr(w)?,
40204 Self::Malformed => ().write_xdr(w)?,
40205 Self::SellNoTrust => ().write_xdr(w)?,
40206 Self::BuyNoTrust => ().write_xdr(w)?,
40207 Self::SellNotAuthorized => ().write_xdr(w)?,
40208 Self::BuyNotAuthorized => ().write_xdr(w)?,
40209 Self::LineFull => ().write_xdr(w)?,
40210 Self::Underfunded => ().write_xdr(w)?,
40211 Self::CrossSelf => ().write_xdr(w)?,
40212 Self::SellNoIssuer => ().write_xdr(w)?,
40213 Self::BuyNoIssuer => ().write_xdr(w)?,
40214 Self::NotFound => ().write_xdr(w)?,
40215 Self::LowReserve => ().write_xdr(w)?,
40216 };
40217 Ok(())
40218 })
40219 }
40220}
40221
40222#[cfg_attr(feature = "alloc", derive(Default))]
40246#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40247#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40248#[cfg_attr(
40249 all(feature = "serde", feature = "alloc"),
40250 derive(serde::Serialize, serde::Deserialize),
40251 serde(rename_all = "snake_case")
40252)]
40253#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40254#[repr(i32)]
40255pub enum SetOptionsResultCode {
40256 #[cfg_attr(feature = "alloc", default)]
40257 Success = 0,
40258 LowReserve = -1,
40259 TooManySigners = -2,
40260 BadFlags = -3,
40261 InvalidInflation = -4,
40262 CantChange = -5,
40263 UnknownFlag = -6,
40264 ThresholdOutOfRange = -7,
40265 BadSigner = -8,
40266 InvalidHomeDomain = -9,
40267 AuthRevocableRequired = -10,
40268}
40269
40270impl SetOptionsResultCode {
40271 pub const VARIANTS: [SetOptionsResultCode; 11] = [
40272 SetOptionsResultCode::Success,
40273 SetOptionsResultCode::LowReserve,
40274 SetOptionsResultCode::TooManySigners,
40275 SetOptionsResultCode::BadFlags,
40276 SetOptionsResultCode::InvalidInflation,
40277 SetOptionsResultCode::CantChange,
40278 SetOptionsResultCode::UnknownFlag,
40279 SetOptionsResultCode::ThresholdOutOfRange,
40280 SetOptionsResultCode::BadSigner,
40281 SetOptionsResultCode::InvalidHomeDomain,
40282 SetOptionsResultCode::AuthRevocableRequired,
40283 ];
40284 pub const VARIANTS_STR: [&'static str; 11] = [
40285 "Success",
40286 "LowReserve",
40287 "TooManySigners",
40288 "BadFlags",
40289 "InvalidInflation",
40290 "CantChange",
40291 "UnknownFlag",
40292 "ThresholdOutOfRange",
40293 "BadSigner",
40294 "InvalidHomeDomain",
40295 "AuthRevocableRequired",
40296 ];
40297
40298 #[must_use]
40299 pub const fn name(&self) -> &'static str {
40300 match self {
40301 Self::Success => "Success",
40302 Self::LowReserve => "LowReserve",
40303 Self::TooManySigners => "TooManySigners",
40304 Self::BadFlags => "BadFlags",
40305 Self::InvalidInflation => "InvalidInflation",
40306 Self::CantChange => "CantChange",
40307 Self::UnknownFlag => "UnknownFlag",
40308 Self::ThresholdOutOfRange => "ThresholdOutOfRange",
40309 Self::BadSigner => "BadSigner",
40310 Self::InvalidHomeDomain => "InvalidHomeDomain",
40311 Self::AuthRevocableRequired => "AuthRevocableRequired",
40312 }
40313 }
40314
40315 #[must_use]
40316 pub const fn variants() -> [SetOptionsResultCode; 11] {
40317 Self::VARIANTS
40318 }
40319}
40320
40321impl Name for SetOptionsResultCode {
40322 #[must_use]
40323 fn name(&self) -> &'static str {
40324 Self::name(self)
40325 }
40326}
40327
40328impl Variants<SetOptionsResultCode> for SetOptionsResultCode {
40329 fn variants() -> slice::Iter<'static, SetOptionsResultCode> {
40330 Self::VARIANTS.iter()
40331 }
40332}
40333
40334impl Enum for SetOptionsResultCode {}
40335
40336impl fmt::Display for SetOptionsResultCode {
40337 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40338 f.write_str(self.name())
40339 }
40340}
40341
40342impl TryFrom<i32> for SetOptionsResultCode {
40343 type Error = Error;
40344
40345 fn try_from(i: i32) -> Result<Self, Error> {
40346 let e = match i {
40347 0 => SetOptionsResultCode::Success,
40348 -1 => SetOptionsResultCode::LowReserve,
40349 -2 => SetOptionsResultCode::TooManySigners,
40350 -3 => SetOptionsResultCode::BadFlags,
40351 -4 => SetOptionsResultCode::InvalidInflation,
40352 -5 => SetOptionsResultCode::CantChange,
40353 -6 => SetOptionsResultCode::UnknownFlag,
40354 -7 => SetOptionsResultCode::ThresholdOutOfRange,
40355 -8 => SetOptionsResultCode::BadSigner,
40356 -9 => SetOptionsResultCode::InvalidHomeDomain,
40357 -10 => SetOptionsResultCode::AuthRevocableRequired,
40358 #[allow(unreachable_patterns)]
40359 _ => return Err(Error::Invalid),
40360 };
40361 Ok(e)
40362 }
40363}
40364
40365impl From<SetOptionsResultCode> for i32 {
40366 #[must_use]
40367 fn from(e: SetOptionsResultCode) -> Self {
40368 e as Self
40369 }
40370}
40371
40372impl ReadXdr for SetOptionsResultCode {
40373 #[cfg(feature = "std")]
40374 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
40375 r.with_limited_depth(|r| {
40376 let e = i32::read_xdr(r)?;
40377 let v: Self = e.try_into()?;
40378 Ok(v)
40379 })
40380 }
40381}
40382
40383impl WriteXdr for SetOptionsResultCode {
40384 #[cfg(feature = "std")]
40385 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40386 w.with_limited_depth(|w| {
40387 let i: i32 = (*self).into();
40388 i.write_xdr(w)
40389 })
40390 }
40391}
40392
40393#[cfg_eval::cfg_eval]
40416#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40417#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40418#[cfg_attr(
40419 all(feature = "serde", feature = "alloc"),
40420 serde_with::serde_as,
40421 derive(serde::Serialize, serde::Deserialize),
40422 serde(rename_all = "snake_case")
40423)]
40424#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40425#[allow(clippy::large_enum_variant)]
40426pub enum SetOptionsResult {
40427 Success,
40428 LowReserve,
40429 TooManySigners,
40430 BadFlags,
40431 InvalidInflation,
40432 CantChange,
40433 UnknownFlag,
40434 ThresholdOutOfRange,
40435 BadSigner,
40436 InvalidHomeDomain,
40437 AuthRevocableRequired,
40438}
40439
40440#[cfg(feature = "alloc")]
40441impl Default for SetOptionsResult {
40442 fn default() -> Self {
40443 Self::Success
40444 }
40445}
40446
40447impl SetOptionsResult {
40448 pub const VARIANTS: [SetOptionsResultCode; 11] = [
40449 SetOptionsResultCode::Success,
40450 SetOptionsResultCode::LowReserve,
40451 SetOptionsResultCode::TooManySigners,
40452 SetOptionsResultCode::BadFlags,
40453 SetOptionsResultCode::InvalidInflation,
40454 SetOptionsResultCode::CantChange,
40455 SetOptionsResultCode::UnknownFlag,
40456 SetOptionsResultCode::ThresholdOutOfRange,
40457 SetOptionsResultCode::BadSigner,
40458 SetOptionsResultCode::InvalidHomeDomain,
40459 SetOptionsResultCode::AuthRevocableRequired,
40460 ];
40461 pub const VARIANTS_STR: [&'static str; 11] = [
40462 "Success",
40463 "LowReserve",
40464 "TooManySigners",
40465 "BadFlags",
40466 "InvalidInflation",
40467 "CantChange",
40468 "UnknownFlag",
40469 "ThresholdOutOfRange",
40470 "BadSigner",
40471 "InvalidHomeDomain",
40472 "AuthRevocableRequired",
40473 ];
40474
40475 #[must_use]
40476 pub const fn name(&self) -> &'static str {
40477 match self {
40478 Self::Success => "Success",
40479 Self::LowReserve => "LowReserve",
40480 Self::TooManySigners => "TooManySigners",
40481 Self::BadFlags => "BadFlags",
40482 Self::InvalidInflation => "InvalidInflation",
40483 Self::CantChange => "CantChange",
40484 Self::UnknownFlag => "UnknownFlag",
40485 Self::ThresholdOutOfRange => "ThresholdOutOfRange",
40486 Self::BadSigner => "BadSigner",
40487 Self::InvalidHomeDomain => "InvalidHomeDomain",
40488 Self::AuthRevocableRequired => "AuthRevocableRequired",
40489 }
40490 }
40491
40492 #[must_use]
40493 pub const fn discriminant(&self) -> SetOptionsResultCode {
40494 #[allow(clippy::match_same_arms)]
40495 match self {
40496 Self::Success => SetOptionsResultCode::Success,
40497 Self::LowReserve => SetOptionsResultCode::LowReserve,
40498 Self::TooManySigners => SetOptionsResultCode::TooManySigners,
40499 Self::BadFlags => SetOptionsResultCode::BadFlags,
40500 Self::InvalidInflation => SetOptionsResultCode::InvalidInflation,
40501 Self::CantChange => SetOptionsResultCode::CantChange,
40502 Self::UnknownFlag => SetOptionsResultCode::UnknownFlag,
40503 Self::ThresholdOutOfRange => SetOptionsResultCode::ThresholdOutOfRange,
40504 Self::BadSigner => SetOptionsResultCode::BadSigner,
40505 Self::InvalidHomeDomain => SetOptionsResultCode::InvalidHomeDomain,
40506 Self::AuthRevocableRequired => SetOptionsResultCode::AuthRevocableRequired,
40507 }
40508 }
40509
40510 #[must_use]
40511 pub const fn variants() -> [SetOptionsResultCode; 11] {
40512 Self::VARIANTS
40513 }
40514}
40515
40516impl Name for SetOptionsResult {
40517 #[must_use]
40518 fn name(&self) -> &'static str {
40519 Self::name(self)
40520 }
40521}
40522
40523impl Discriminant<SetOptionsResultCode> for SetOptionsResult {
40524 #[must_use]
40525 fn discriminant(&self) -> SetOptionsResultCode {
40526 Self::discriminant(self)
40527 }
40528}
40529
40530impl Variants<SetOptionsResultCode> for SetOptionsResult {
40531 fn variants() -> slice::Iter<'static, SetOptionsResultCode> {
40532 Self::VARIANTS.iter()
40533 }
40534}
40535
40536impl Union<SetOptionsResultCode> for SetOptionsResult {}
40537
40538impl ReadXdr for SetOptionsResult {
40539 #[cfg(feature = "std")]
40540 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
40541 r.with_limited_depth(|r| {
40542 let dv: SetOptionsResultCode = <SetOptionsResultCode as ReadXdr>::read_xdr(r)?;
40543 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
40544 let v = match dv {
40545 SetOptionsResultCode::Success => Self::Success,
40546 SetOptionsResultCode::LowReserve => Self::LowReserve,
40547 SetOptionsResultCode::TooManySigners => Self::TooManySigners,
40548 SetOptionsResultCode::BadFlags => Self::BadFlags,
40549 SetOptionsResultCode::InvalidInflation => Self::InvalidInflation,
40550 SetOptionsResultCode::CantChange => Self::CantChange,
40551 SetOptionsResultCode::UnknownFlag => Self::UnknownFlag,
40552 SetOptionsResultCode::ThresholdOutOfRange => Self::ThresholdOutOfRange,
40553 SetOptionsResultCode::BadSigner => Self::BadSigner,
40554 SetOptionsResultCode::InvalidHomeDomain => Self::InvalidHomeDomain,
40555 SetOptionsResultCode::AuthRevocableRequired => Self::AuthRevocableRequired,
40556 #[allow(unreachable_patterns)]
40557 _ => return Err(Error::Invalid),
40558 };
40559 Ok(v)
40560 })
40561 }
40562}
40563
40564impl WriteXdr for SetOptionsResult {
40565 #[cfg(feature = "std")]
40566 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40567 w.with_limited_depth(|w| {
40568 self.discriminant().write_xdr(w)?;
40569 #[allow(clippy::match_same_arms)]
40570 match self {
40571 Self::Success => ().write_xdr(w)?,
40572 Self::LowReserve => ().write_xdr(w)?,
40573 Self::TooManySigners => ().write_xdr(w)?,
40574 Self::BadFlags => ().write_xdr(w)?,
40575 Self::InvalidInflation => ().write_xdr(w)?,
40576 Self::CantChange => ().write_xdr(w)?,
40577 Self::UnknownFlag => ().write_xdr(w)?,
40578 Self::ThresholdOutOfRange => ().write_xdr(w)?,
40579 Self::BadSigner => ().write_xdr(w)?,
40580 Self::InvalidHomeDomain => ().write_xdr(w)?,
40581 Self::AuthRevocableRequired => ().write_xdr(w)?,
40582 };
40583 Ok(())
40584 })
40585 }
40586}
40587
40588#[cfg_attr(feature = "alloc", derive(Default))]
40613#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40614#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40615#[cfg_attr(
40616 all(feature = "serde", feature = "alloc"),
40617 derive(serde::Serialize, serde::Deserialize),
40618 serde(rename_all = "snake_case")
40619)]
40620#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40621#[repr(i32)]
40622pub enum ChangeTrustResultCode {
40623 #[cfg_attr(feature = "alloc", default)]
40624 Success = 0,
40625 Malformed = -1,
40626 NoIssuer = -2,
40627 InvalidLimit = -3,
40628 LowReserve = -4,
40629 SelfNotAllowed = -5,
40630 TrustLineMissing = -6,
40631 CannotDelete = -7,
40632 NotAuthMaintainLiabilities = -8,
40633}
40634
40635impl ChangeTrustResultCode {
40636 pub const VARIANTS: [ChangeTrustResultCode; 9] = [
40637 ChangeTrustResultCode::Success,
40638 ChangeTrustResultCode::Malformed,
40639 ChangeTrustResultCode::NoIssuer,
40640 ChangeTrustResultCode::InvalidLimit,
40641 ChangeTrustResultCode::LowReserve,
40642 ChangeTrustResultCode::SelfNotAllowed,
40643 ChangeTrustResultCode::TrustLineMissing,
40644 ChangeTrustResultCode::CannotDelete,
40645 ChangeTrustResultCode::NotAuthMaintainLiabilities,
40646 ];
40647 pub const VARIANTS_STR: [&'static str; 9] = [
40648 "Success",
40649 "Malformed",
40650 "NoIssuer",
40651 "InvalidLimit",
40652 "LowReserve",
40653 "SelfNotAllowed",
40654 "TrustLineMissing",
40655 "CannotDelete",
40656 "NotAuthMaintainLiabilities",
40657 ];
40658
40659 #[must_use]
40660 pub const fn name(&self) -> &'static str {
40661 match self {
40662 Self::Success => "Success",
40663 Self::Malformed => "Malformed",
40664 Self::NoIssuer => "NoIssuer",
40665 Self::InvalidLimit => "InvalidLimit",
40666 Self::LowReserve => "LowReserve",
40667 Self::SelfNotAllowed => "SelfNotAllowed",
40668 Self::TrustLineMissing => "TrustLineMissing",
40669 Self::CannotDelete => "CannotDelete",
40670 Self::NotAuthMaintainLiabilities => "NotAuthMaintainLiabilities",
40671 }
40672 }
40673
40674 #[must_use]
40675 pub const fn variants() -> [ChangeTrustResultCode; 9] {
40676 Self::VARIANTS
40677 }
40678}
40679
40680impl Name for ChangeTrustResultCode {
40681 #[must_use]
40682 fn name(&self) -> &'static str {
40683 Self::name(self)
40684 }
40685}
40686
40687impl Variants<ChangeTrustResultCode> for ChangeTrustResultCode {
40688 fn variants() -> slice::Iter<'static, ChangeTrustResultCode> {
40689 Self::VARIANTS.iter()
40690 }
40691}
40692
40693impl Enum for ChangeTrustResultCode {}
40694
40695impl fmt::Display for ChangeTrustResultCode {
40696 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40697 f.write_str(self.name())
40698 }
40699}
40700
40701impl TryFrom<i32> for ChangeTrustResultCode {
40702 type Error = Error;
40703
40704 fn try_from(i: i32) -> Result<Self, Error> {
40705 let e = match i {
40706 0 => ChangeTrustResultCode::Success,
40707 -1 => ChangeTrustResultCode::Malformed,
40708 -2 => ChangeTrustResultCode::NoIssuer,
40709 -3 => ChangeTrustResultCode::InvalidLimit,
40710 -4 => ChangeTrustResultCode::LowReserve,
40711 -5 => ChangeTrustResultCode::SelfNotAllowed,
40712 -6 => ChangeTrustResultCode::TrustLineMissing,
40713 -7 => ChangeTrustResultCode::CannotDelete,
40714 -8 => ChangeTrustResultCode::NotAuthMaintainLiabilities,
40715 #[allow(unreachable_patterns)]
40716 _ => return Err(Error::Invalid),
40717 };
40718 Ok(e)
40719 }
40720}
40721
40722impl From<ChangeTrustResultCode> for i32 {
40723 #[must_use]
40724 fn from(e: ChangeTrustResultCode) -> Self {
40725 e as Self
40726 }
40727}
40728
40729impl ReadXdr for ChangeTrustResultCode {
40730 #[cfg(feature = "std")]
40731 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
40732 r.with_limited_depth(|r| {
40733 let e = i32::read_xdr(r)?;
40734 let v: Self = e.try_into()?;
40735 Ok(v)
40736 })
40737 }
40738}
40739
40740impl WriteXdr for ChangeTrustResultCode {
40741 #[cfg(feature = "std")]
40742 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40743 w.with_limited_depth(|w| {
40744 let i: i32 = (*self).into();
40745 i.write_xdr(w)
40746 })
40747 }
40748}
40749
40750#[cfg_eval::cfg_eval]
40771#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40772#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40773#[cfg_attr(
40774 all(feature = "serde", feature = "alloc"),
40775 serde_with::serde_as,
40776 derive(serde::Serialize, serde::Deserialize),
40777 serde(rename_all = "snake_case")
40778)]
40779#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40780#[allow(clippy::large_enum_variant)]
40781pub enum ChangeTrustResult {
40782 Success,
40783 Malformed,
40784 NoIssuer,
40785 InvalidLimit,
40786 LowReserve,
40787 SelfNotAllowed,
40788 TrustLineMissing,
40789 CannotDelete,
40790 NotAuthMaintainLiabilities,
40791}
40792
40793#[cfg(feature = "alloc")]
40794impl Default for ChangeTrustResult {
40795 fn default() -> Self {
40796 Self::Success
40797 }
40798}
40799
40800impl ChangeTrustResult {
40801 pub const VARIANTS: [ChangeTrustResultCode; 9] = [
40802 ChangeTrustResultCode::Success,
40803 ChangeTrustResultCode::Malformed,
40804 ChangeTrustResultCode::NoIssuer,
40805 ChangeTrustResultCode::InvalidLimit,
40806 ChangeTrustResultCode::LowReserve,
40807 ChangeTrustResultCode::SelfNotAllowed,
40808 ChangeTrustResultCode::TrustLineMissing,
40809 ChangeTrustResultCode::CannotDelete,
40810 ChangeTrustResultCode::NotAuthMaintainLiabilities,
40811 ];
40812 pub const VARIANTS_STR: [&'static str; 9] = [
40813 "Success",
40814 "Malformed",
40815 "NoIssuer",
40816 "InvalidLimit",
40817 "LowReserve",
40818 "SelfNotAllowed",
40819 "TrustLineMissing",
40820 "CannotDelete",
40821 "NotAuthMaintainLiabilities",
40822 ];
40823
40824 #[must_use]
40825 pub const fn name(&self) -> &'static str {
40826 match self {
40827 Self::Success => "Success",
40828 Self::Malformed => "Malformed",
40829 Self::NoIssuer => "NoIssuer",
40830 Self::InvalidLimit => "InvalidLimit",
40831 Self::LowReserve => "LowReserve",
40832 Self::SelfNotAllowed => "SelfNotAllowed",
40833 Self::TrustLineMissing => "TrustLineMissing",
40834 Self::CannotDelete => "CannotDelete",
40835 Self::NotAuthMaintainLiabilities => "NotAuthMaintainLiabilities",
40836 }
40837 }
40838
40839 #[must_use]
40840 pub const fn discriminant(&self) -> ChangeTrustResultCode {
40841 #[allow(clippy::match_same_arms)]
40842 match self {
40843 Self::Success => ChangeTrustResultCode::Success,
40844 Self::Malformed => ChangeTrustResultCode::Malformed,
40845 Self::NoIssuer => ChangeTrustResultCode::NoIssuer,
40846 Self::InvalidLimit => ChangeTrustResultCode::InvalidLimit,
40847 Self::LowReserve => ChangeTrustResultCode::LowReserve,
40848 Self::SelfNotAllowed => ChangeTrustResultCode::SelfNotAllowed,
40849 Self::TrustLineMissing => ChangeTrustResultCode::TrustLineMissing,
40850 Self::CannotDelete => ChangeTrustResultCode::CannotDelete,
40851 Self::NotAuthMaintainLiabilities => ChangeTrustResultCode::NotAuthMaintainLiabilities,
40852 }
40853 }
40854
40855 #[must_use]
40856 pub const fn variants() -> [ChangeTrustResultCode; 9] {
40857 Self::VARIANTS
40858 }
40859}
40860
40861impl Name for ChangeTrustResult {
40862 #[must_use]
40863 fn name(&self) -> &'static str {
40864 Self::name(self)
40865 }
40866}
40867
40868impl Discriminant<ChangeTrustResultCode> for ChangeTrustResult {
40869 #[must_use]
40870 fn discriminant(&self) -> ChangeTrustResultCode {
40871 Self::discriminant(self)
40872 }
40873}
40874
40875impl Variants<ChangeTrustResultCode> for ChangeTrustResult {
40876 fn variants() -> slice::Iter<'static, ChangeTrustResultCode> {
40877 Self::VARIANTS.iter()
40878 }
40879}
40880
40881impl Union<ChangeTrustResultCode> for ChangeTrustResult {}
40882
40883impl ReadXdr for ChangeTrustResult {
40884 #[cfg(feature = "std")]
40885 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
40886 r.with_limited_depth(|r| {
40887 let dv: ChangeTrustResultCode = <ChangeTrustResultCode as ReadXdr>::read_xdr(r)?;
40888 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
40889 let v = match dv {
40890 ChangeTrustResultCode::Success => Self::Success,
40891 ChangeTrustResultCode::Malformed => Self::Malformed,
40892 ChangeTrustResultCode::NoIssuer => Self::NoIssuer,
40893 ChangeTrustResultCode::InvalidLimit => Self::InvalidLimit,
40894 ChangeTrustResultCode::LowReserve => Self::LowReserve,
40895 ChangeTrustResultCode::SelfNotAllowed => Self::SelfNotAllowed,
40896 ChangeTrustResultCode::TrustLineMissing => Self::TrustLineMissing,
40897 ChangeTrustResultCode::CannotDelete => Self::CannotDelete,
40898 ChangeTrustResultCode::NotAuthMaintainLiabilities => {
40899 Self::NotAuthMaintainLiabilities
40900 }
40901 #[allow(unreachable_patterns)]
40902 _ => return Err(Error::Invalid),
40903 };
40904 Ok(v)
40905 })
40906 }
40907}
40908
40909impl WriteXdr for ChangeTrustResult {
40910 #[cfg(feature = "std")]
40911 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
40912 w.with_limited_depth(|w| {
40913 self.discriminant().write_xdr(w)?;
40914 #[allow(clippy::match_same_arms)]
40915 match self {
40916 Self::Success => ().write_xdr(w)?,
40917 Self::Malformed => ().write_xdr(w)?,
40918 Self::NoIssuer => ().write_xdr(w)?,
40919 Self::InvalidLimit => ().write_xdr(w)?,
40920 Self::LowReserve => ().write_xdr(w)?,
40921 Self::SelfNotAllowed => ().write_xdr(w)?,
40922 Self::TrustLineMissing => ().write_xdr(w)?,
40923 Self::CannotDelete => ().write_xdr(w)?,
40924 Self::NotAuthMaintainLiabilities => ().write_xdr(w)?,
40925 };
40926 Ok(())
40927 })
40928 }
40929}
40930
40931#[cfg_attr(feature = "alloc", derive(Default))]
40952#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
40953#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
40954#[cfg_attr(
40955 all(feature = "serde", feature = "alloc"),
40956 derive(serde::Serialize, serde::Deserialize),
40957 serde(rename_all = "snake_case")
40958)]
40959#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
40960#[repr(i32)]
40961pub enum AllowTrustResultCode {
40962 #[cfg_attr(feature = "alloc", default)]
40963 Success = 0,
40964 Malformed = -1,
40965 NoTrustLine = -2,
40966 TrustNotRequired = -3,
40967 CantRevoke = -4,
40968 SelfNotAllowed = -5,
40969 LowReserve = -6,
40970}
40971
40972impl AllowTrustResultCode {
40973 pub const VARIANTS: [AllowTrustResultCode; 7] = [
40974 AllowTrustResultCode::Success,
40975 AllowTrustResultCode::Malformed,
40976 AllowTrustResultCode::NoTrustLine,
40977 AllowTrustResultCode::TrustNotRequired,
40978 AllowTrustResultCode::CantRevoke,
40979 AllowTrustResultCode::SelfNotAllowed,
40980 AllowTrustResultCode::LowReserve,
40981 ];
40982 pub const VARIANTS_STR: [&'static str; 7] = [
40983 "Success",
40984 "Malformed",
40985 "NoTrustLine",
40986 "TrustNotRequired",
40987 "CantRevoke",
40988 "SelfNotAllowed",
40989 "LowReserve",
40990 ];
40991
40992 #[must_use]
40993 pub const fn name(&self) -> &'static str {
40994 match self {
40995 Self::Success => "Success",
40996 Self::Malformed => "Malformed",
40997 Self::NoTrustLine => "NoTrustLine",
40998 Self::TrustNotRequired => "TrustNotRequired",
40999 Self::CantRevoke => "CantRevoke",
41000 Self::SelfNotAllowed => "SelfNotAllowed",
41001 Self::LowReserve => "LowReserve",
41002 }
41003 }
41004
41005 #[must_use]
41006 pub const fn variants() -> [AllowTrustResultCode; 7] {
41007 Self::VARIANTS
41008 }
41009}
41010
41011impl Name for AllowTrustResultCode {
41012 #[must_use]
41013 fn name(&self) -> &'static str {
41014 Self::name(self)
41015 }
41016}
41017
41018impl Variants<AllowTrustResultCode> for AllowTrustResultCode {
41019 fn variants() -> slice::Iter<'static, AllowTrustResultCode> {
41020 Self::VARIANTS.iter()
41021 }
41022}
41023
41024impl Enum for AllowTrustResultCode {}
41025
41026impl fmt::Display for AllowTrustResultCode {
41027 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41028 f.write_str(self.name())
41029 }
41030}
41031
41032impl TryFrom<i32> for AllowTrustResultCode {
41033 type Error = Error;
41034
41035 fn try_from(i: i32) -> Result<Self, Error> {
41036 let e = match i {
41037 0 => AllowTrustResultCode::Success,
41038 -1 => AllowTrustResultCode::Malformed,
41039 -2 => AllowTrustResultCode::NoTrustLine,
41040 -3 => AllowTrustResultCode::TrustNotRequired,
41041 -4 => AllowTrustResultCode::CantRevoke,
41042 -5 => AllowTrustResultCode::SelfNotAllowed,
41043 -6 => AllowTrustResultCode::LowReserve,
41044 #[allow(unreachable_patterns)]
41045 _ => return Err(Error::Invalid),
41046 };
41047 Ok(e)
41048 }
41049}
41050
41051impl From<AllowTrustResultCode> for i32 {
41052 #[must_use]
41053 fn from(e: AllowTrustResultCode) -> Self {
41054 e as Self
41055 }
41056}
41057
41058impl ReadXdr for AllowTrustResultCode {
41059 #[cfg(feature = "std")]
41060 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41061 r.with_limited_depth(|r| {
41062 let e = i32::read_xdr(r)?;
41063 let v: Self = e.try_into()?;
41064 Ok(v)
41065 })
41066 }
41067}
41068
41069impl WriteXdr for AllowTrustResultCode {
41070 #[cfg(feature = "std")]
41071 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41072 w.with_limited_depth(|w| {
41073 let i: i32 = (*self).into();
41074 i.write_xdr(w)
41075 })
41076 }
41077}
41078
41079#[cfg_eval::cfg_eval]
41098#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41099#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41100#[cfg_attr(
41101 all(feature = "serde", feature = "alloc"),
41102 serde_with::serde_as,
41103 derive(serde::Serialize, serde::Deserialize),
41104 serde(rename_all = "snake_case")
41105)]
41106#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41107#[allow(clippy::large_enum_variant)]
41108pub enum AllowTrustResult {
41109 Success,
41110 Malformed,
41111 NoTrustLine,
41112 TrustNotRequired,
41113 CantRevoke,
41114 SelfNotAllowed,
41115 LowReserve,
41116}
41117
41118#[cfg(feature = "alloc")]
41119impl Default for AllowTrustResult {
41120 fn default() -> Self {
41121 Self::Success
41122 }
41123}
41124
41125impl AllowTrustResult {
41126 pub const VARIANTS: [AllowTrustResultCode; 7] = [
41127 AllowTrustResultCode::Success,
41128 AllowTrustResultCode::Malformed,
41129 AllowTrustResultCode::NoTrustLine,
41130 AllowTrustResultCode::TrustNotRequired,
41131 AllowTrustResultCode::CantRevoke,
41132 AllowTrustResultCode::SelfNotAllowed,
41133 AllowTrustResultCode::LowReserve,
41134 ];
41135 pub const VARIANTS_STR: [&'static str; 7] = [
41136 "Success",
41137 "Malformed",
41138 "NoTrustLine",
41139 "TrustNotRequired",
41140 "CantRevoke",
41141 "SelfNotAllowed",
41142 "LowReserve",
41143 ];
41144
41145 #[must_use]
41146 pub const fn name(&self) -> &'static str {
41147 match self {
41148 Self::Success => "Success",
41149 Self::Malformed => "Malformed",
41150 Self::NoTrustLine => "NoTrustLine",
41151 Self::TrustNotRequired => "TrustNotRequired",
41152 Self::CantRevoke => "CantRevoke",
41153 Self::SelfNotAllowed => "SelfNotAllowed",
41154 Self::LowReserve => "LowReserve",
41155 }
41156 }
41157
41158 #[must_use]
41159 pub const fn discriminant(&self) -> AllowTrustResultCode {
41160 #[allow(clippy::match_same_arms)]
41161 match self {
41162 Self::Success => AllowTrustResultCode::Success,
41163 Self::Malformed => AllowTrustResultCode::Malformed,
41164 Self::NoTrustLine => AllowTrustResultCode::NoTrustLine,
41165 Self::TrustNotRequired => AllowTrustResultCode::TrustNotRequired,
41166 Self::CantRevoke => AllowTrustResultCode::CantRevoke,
41167 Self::SelfNotAllowed => AllowTrustResultCode::SelfNotAllowed,
41168 Self::LowReserve => AllowTrustResultCode::LowReserve,
41169 }
41170 }
41171
41172 #[must_use]
41173 pub const fn variants() -> [AllowTrustResultCode; 7] {
41174 Self::VARIANTS
41175 }
41176}
41177
41178impl Name for AllowTrustResult {
41179 #[must_use]
41180 fn name(&self) -> &'static str {
41181 Self::name(self)
41182 }
41183}
41184
41185impl Discriminant<AllowTrustResultCode> for AllowTrustResult {
41186 #[must_use]
41187 fn discriminant(&self) -> AllowTrustResultCode {
41188 Self::discriminant(self)
41189 }
41190}
41191
41192impl Variants<AllowTrustResultCode> for AllowTrustResult {
41193 fn variants() -> slice::Iter<'static, AllowTrustResultCode> {
41194 Self::VARIANTS.iter()
41195 }
41196}
41197
41198impl Union<AllowTrustResultCode> for AllowTrustResult {}
41199
41200impl ReadXdr for AllowTrustResult {
41201 #[cfg(feature = "std")]
41202 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41203 r.with_limited_depth(|r| {
41204 let dv: AllowTrustResultCode = <AllowTrustResultCode as ReadXdr>::read_xdr(r)?;
41205 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
41206 let v = match dv {
41207 AllowTrustResultCode::Success => Self::Success,
41208 AllowTrustResultCode::Malformed => Self::Malformed,
41209 AllowTrustResultCode::NoTrustLine => Self::NoTrustLine,
41210 AllowTrustResultCode::TrustNotRequired => Self::TrustNotRequired,
41211 AllowTrustResultCode::CantRevoke => Self::CantRevoke,
41212 AllowTrustResultCode::SelfNotAllowed => Self::SelfNotAllowed,
41213 AllowTrustResultCode::LowReserve => Self::LowReserve,
41214 #[allow(unreachable_patterns)]
41215 _ => return Err(Error::Invalid),
41216 };
41217 Ok(v)
41218 })
41219 }
41220}
41221
41222impl WriteXdr for AllowTrustResult {
41223 #[cfg(feature = "std")]
41224 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41225 w.with_limited_depth(|w| {
41226 self.discriminant().write_xdr(w)?;
41227 #[allow(clippy::match_same_arms)]
41228 match self {
41229 Self::Success => ().write_xdr(w)?,
41230 Self::Malformed => ().write_xdr(w)?,
41231 Self::NoTrustLine => ().write_xdr(w)?,
41232 Self::TrustNotRequired => ().write_xdr(w)?,
41233 Self::CantRevoke => ().write_xdr(w)?,
41234 Self::SelfNotAllowed => ().write_xdr(w)?,
41235 Self::LowReserve => ().write_xdr(w)?,
41236 };
41237 Ok(())
41238 })
41239 }
41240}
41241
41242#[cfg_attr(feature = "alloc", derive(Default))]
41263#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41264#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41265#[cfg_attr(
41266 all(feature = "serde", feature = "alloc"),
41267 derive(serde::Serialize, serde::Deserialize),
41268 serde(rename_all = "snake_case")
41269)]
41270#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41271#[repr(i32)]
41272pub enum AccountMergeResultCode {
41273 #[cfg_attr(feature = "alloc", default)]
41274 Success = 0,
41275 Malformed = -1,
41276 NoAccount = -2,
41277 ImmutableSet = -3,
41278 HasSubEntries = -4,
41279 SeqnumTooFar = -5,
41280 DestFull = -6,
41281 IsSponsor = -7,
41282}
41283
41284impl AccountMergeResultCode {
41285 pub const VARIANTS: [AccountMergeResultCode; 8] = [
41286 AccountMergeResultCode::Success,
41287 AccountMergeResultCode::Malformed,
41288 AccountMergeResultCode::NoAccount,
41289 AccountMergeResultCode::ImmutableSet,
41290 AccountMergeResultCode::HasSubEntries,
41291 AccountMergeResultCode::SeqnumTooFar,
41292 AccountMergeResultCode::DestFull,
41293 AccountMergeResultCode::IsSponsor,
41294 ];
41295 pub const VARIANTS_STR: [&'static str; 8] = [
41296 "Success",
41297 "Malformed",
41298 "NoAccount",
41299 "ImmutableSet",
41300 "HasSubEntries",
41301 "SeqnumTooFar",
41302 "DestFull",
41303 "IsSponsor",
41304 ];
41305
41306 #[must_use]
41307 pub const fn name(&self) -> &'static str {
41308 match self {
41309 Self::Success => "Success",
41310 Self::Malformed => "Malformed",
41311 Self::NoAccount => "NoAccount",
41312 Self::ImmutableSet => "ImmutableSet",
41313 Self::HasSubEntries => "HasSubEntries",
41314 Self::SeqnumTooFar => "SeqnumTooFar",
41315 Self::DestFull => "DestFull",
41316 Self::IsSponsor => "IsSponsor",
41317 }
41318 }
41319
41320 #[must_use]
41321 pub const fn variants() -> [AccountMergeResultCode; 8] {
41322 Self::VARIANTS
41323 }
41324}
41325
41326impl Name for AccountMergeResultCode {
41327 #[must_use]
41328 fn name(&self) -> &'static str {
41329 Self::name(self)
41330 }
41331}
41332
41333impl Variants<AccountMergeResultCode> for AccountMergeResultCode {
41334 fn variants() -> slice::Iter<'static, AccountMergeResultCode> {
41335 Self::VARIANTS.iter()
41336 }
41337}
41338
41339impl Enum for AccountMergeResultCode {}
41340
41341impl fmt::Display for AccountMergeResultCode {
41342 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41343 f.write_str(self.name())
41344 }
41345}
41346
41347impl TryFrom<i32> for AccountMergeResultCode {
41348 type Error = Error;
41349
41350 fn try_from(i: i32) -> Result<Self, Error> {
41351 let e = match i {
41352 0 => AccountMergeResultCode::Success,
41353 -1 => AccountMergeResultCode::Malformed,
41354 -2 => AccountMergeResultCode::NoAccount,
41355 -3 => AccountMergeResultCode::ImmutableSet,
41356 -4 => AccountMergeResultCode::HasSubEntries,
41357 -5 => AccountMergeResultCode::SeqnumTooFar,
41358 -6 => AccountMergeResultCode::DestFull,
41359 -7 => AccountMergeResultCode::IsSponsor,
41360 #[allow(unreachable_patterns)]
41361 _ => return Err(Error::Invalid),
41362 };
41363 Ok(e)
41364 }
41365}
41366
41367impl From<AccountMergeResultCode> for i32 {
41368 #[must_use]
41369 fn from(e: AccountMergeResultCode) -> Self {
41370 e as Self
41371 }
41372}
41373
41374impl ReadXdr for AccountMergeResultCode {
41375 #[cfg(feature = "std")]
41376 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41377 r.with_limited_depth(|r| {
41378 let e = i32::read_xdr(r)?;
41379 let v: Self = e.try_into()?;
41380 Ok(v)
41381 })
41382 }
41383}
41384
41385impl WriteXdr for AccountMergeResultCode {
41386 #[cfg(feature = "std")]
41387 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41388 w.with_limited_depth(|w| {
41389 let i: i32 = (*self).into();
41390 i.write_xdr(w)
41391 })
41392 }
41393}
41394
41395#[cfg_eval::cfg_eval]
41415#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41416#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41417#[cfg_attr(
41418 all(feature = "serde", feature = "alloc"),
41419 serde_with::serde_as,
41420 derive(serde::Serialize, serde::Deserialize),
41421 serde(rename_all = "snake_case")
41422)]
41423#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41424#[allow(clippy::large_enum_variant)]
41425pub enum AccountMergeResult {
41426 Success(
41427 #[cfg_attr(
41428 all(feature = "serde", feature = "alloc"),
41429 serde_as(as = "NumberOrString")
41430 )]
41431 i64,
41432 ),
41433 Malformed,
41434 NoAccount,
41435 ImmutableSet,
41436 HasSubEntries,
41437 SeqnumTooFar,
41438 DestFull,
41439 IsSponsor,
41440}
41441
41442#[cfg(feature = "alloc")]
41443impl Default for AccountMergeResult {
41444 fn default() -> Self {
41445 Self::Success(i64::default())
41446 }
41447}
41448
41449impl AccountMergeResult {
41450 pub const VARIANTS: [AccountMergeResultCode; 8] = [
41451 AccountMergeResultCode::Success,
41452 AccountMergeResultCode::Malformed,
41453 AccountMergeResultCode::NoAccount,
41454 AccountMergeResultCode::ImmutableSet,
41455 AccountMergeResultCode::HasSubEntries,
41456 AccountMergeResultCode::SeqnumTooFar,
41457 AccountMergeResultCode::DestFull,
41458 AccountMergeResultCode::IsSponsor,
41459 ];
41460 pub const VARIANTS_STR: [&'static str; 8] = [
41461 "Success",
41462 "Malformed",
41463 "NoAccount",
41464 "ImmutableSet",
41465 "HasSubEntries",
41466 "SeqnumTooFar",
41467 "DestFull",
41468 "IsSponsor",
41469 ];
41470
41471 #[must_use]
41472 pub const fn name(&self) -> &'static str {
41473 match self {
41474 Self::Success(_) => "Success",
41475 Self::Malformed => "Malformed",
41476 Self::NoAccount => "NoAccount",
41477 Self::ImmutableSet => "ImmutableSet",
41478 Self::HasSubEntries => "HasSubEntries",
41479 Self::SeqnumTooFar => "SeqnumTooFar",
41480 Self::DestFull => "DestFull",
41481 Self::IsSponsor => "IsSponsor",
41482 }
41483 }
41484
41485 #[must_use]
41486 pub const fn discriminant(&self) -> AccountMergeResultCode {
41487 #[allow(clippy::match_same_arms)]
41488 match self {
41489 Self::Success(_) => AccountMergeResultCode::Success,
41490 Self::Malformed => AccountMergeResultCode::Malformed,
41491 Self::NoAccount => AccountMergeResultCode::NoAccount,
41492 Self::ImmutableSet => AccountMergeResultCode::ImmutableSet,
41493 Self::HasSubEntries => AccountMergeResultCode::HasSubEntries,
41494 Self::SeqnumTooFar => AccountMergeResultCode::SeqnumTooFar,
41495 Self::DestFull => AccountMergeResultCode::DestFull,
41496 Self::IsSponsor => AccountMergeResultCode::IsSponsor,
41497 }
41498 }
41499
41500 #[must_use]
41501 pub const fn variants() -> [AccountMergeResultCode; 8] {
41502 Self::VARIANTS
41503 }
41504}
41505
41506impl Name for AccountMergeResult {
41507 #[must_use]
41508 fn name(&self) -> &'static str {
41509 Self::name(self)
41510 }
41511}
41512
41513impl Discriminant<AccountMergeResultCode> for AccountMergeResult {
41514 #[must_use]
41515 fn discriminant(&self) -> AccountMergeResultCode {
41516 Self::discriminant(self)
41517 }
41518}
41519
41520impl Variants<AccountMergeResultCode> for AccountMergeResult {
41521 fn variants() -> slice::Iter<'static, AccountMergeResultCode> {
41522 Self::VARIANTS.iter()
41523 }
41524}
41525
41526impl Union<AccountMergeResultCode> for AccountMergeResult {}
41527
41528impl ReadXdr for AccountMergeResult {
41529 #[cfg(feature = "std")]
41530 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41531 r.with_limited_depth(|r| {
41532 let dv: AccountMergeResultCode = <AccountMergeResultCode as ReadXdr>::read_xdr(r)?;
41533 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
41534 let v = match dv {
41535 AccountMergeResultCode::Success => Self::Success(i64::read_xdr(r)?),
41536 AccountMergeResultCode::Malformed => Self::Malformed,
41537 AccountMergeResultCode::NoAccount => Self::NoAccount,
41538 AccountMergeResultCode::ImmutableSet => Self::ImmutableSet,
41539 AccountMergeResultCode::HasSubEntries => Self::HasSubEntries,
41540 AccountMergeResultCode::SeqnumTooFar => Self::SeqnumTooFar,
41541 AccountMergeResultCode::DestFull => Self::DestFull,
41542 AccountMergeResultCode::IsSponsor => Self::IsSponsor,
41543 #[allow(unreachable_patterns)]
41544 _ => return Err(Error::Invalid),
41545 };
41546 Ok(v)
41547 })
41548 }
41549}
41550
41551impl WriteXdr for AccountMergeResult {
41552 #[cfg(feature = "std")]
41553 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41554 w.with_limited_depth(|w| {
41555 self.discriminant().write_xdr(w)?;
41556 #[allow(clippy::match_same_arms)]
41557 match self {
41558 Self::Success(v) => v.write_xdr(w)?,
41559 Self::Malformed => ().write_xdr(w)?,
41560 Self::NoAccount => ().write_xdr(w)?,
41561 Self::ImmutableSet => ().write_xdr(w)?,
41562 Self::HasSubEntries => ().write_xdr(w)?,
41563 Self::SeqnumTooFar => ().write_xdr(w)?,
41564 Self::DestFull => ().write_xdr(w)?,
41565 Self::IsSponsor => ().write_xdr(w)?,
41566 };
41567 Ok(())
41568 })
41569 }
41570}
41571
41572#[cfg_attr(feature = "alloc", derive(Default))]
41586#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41587#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41588#[cfg_attr(
41589 all(feature = "serde", feature = "alloc"),
41590 derive(serde::Serialize, serde::Deserialize),
41591 serde(rename_all = "snake_case")
41592)]
41593#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41594#[repr(i32)]
41595pub enum InflationResultCode {
41596 #[cfg_attr(feature = "alloc", default)]
41597 Success = 0,
41598 NotTime = -1,
41599}
41600
41601impl InflationResultCode {
41602 pub const VARIANTS: [InflationResultCode; 2] =
41603 [InflationResultCode::Success, InflationResultCode::NotTime];
41604 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "NotTime"];
41605
41606 #[must_use]
41607 pub const fn name(&self) -> &'static str {
41608 match self {
41609 Self::Success => "Success",
41610 Self::NotTime => "NotTime",
41611 }
41612 }
41613
41614 #[must_use]
41615 pub const fn variants() -> [InflationResultCode; 2] {
41616 Self::VARIANTS
41617 }
41618}
41619
41620impl Name for InflationResultCode {
41621 #[must_use]
41622 fn name(&self) -> &'static str {
41623 Self::name(self)
41624 }
41625}
41626
41627impl Variants<InflationResultCode> for InflationResultCode {
41628 fn variants() -> slice::Iter<'static, InflationResultCode> {
41629 Self::VARIANTS.iter()
41630 }
41631}
41632
41633impl Enum for InflationResultCode {}
41634
41635impl fmt::Display for InflationResultCode {
41636 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41637 f.write_str(self.name())
41638 }
41639}
41640
41641impl TryFrom<i32> for InflationResultCode {
41642 type Error = Error;
41643
41644 fn try_from(i: i32) -> Result<Self, Error> {
41645 let e = match i {
41646 0 => InflationResultCode::Success,
41647 -1 => InflationResultCode::NotTime,
41648 #[allow(unreachable_patterns)]
41649 _ => return Err(Error::Invalid),
41650 };
41651 Ok(e)
41652 }
41653}
41654
41655impl From<InflationResultCode> for i32 {
41656 #[must_use]
41657 fn from(e: InflationResultCode) -> Self {
41658 e as Self
41659 }
41660}
41661
41662impl ReadXdr for InflationResultCode {
41663 #[cfg(feature = "std")]
41664 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41665 r.with_limited_depth(|r| {
41666 let e = i32::read_xdr(r)?;
41667 let v: Self = e.try_into()?;
41668 Ok(v)
41669 })
41670 }
41671}
41672
41673impl WriteXdr for InflationResultCode {
41674 #[cfg(feature = "std")]
41675 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41676 w.with_limited_depth(|w| {
41677 let i: i32 = (*self).into();
41678 i.write_xdr(w)
41679 })
41680 }
41681}
41682
41683#[cfg_attr(feature = "alloc", derive(Default))]
41694#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41695#[cfg_eval::cfg_eval]
41696#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41697#[cfg_attr(
41698 all(feature = "serde", feature = "alloc"),
41699 serde_with::serde_as,
41700 derive(serde::Serialize, serde::Deserialize),
41701 serde(rename_all = "snake_case")
41702)]
41703#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41704pub struct InflationPayout {
41705 pub destination: AccountId,
41706 #[cfg_attr(
41707 all(feature = "serde", feature = "alloc"),
41708 serde_as(as = "NumberOrString")
41709 )]
41710 pub amount: i64,
41711}
41712
41713impl ReadXdr for InflationPayout {
41714 #[cfg(feature = "std")]
41715 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41716 r.with_limited_depth(|r| {
41717 Ok(Self {
41718 destination: AccountId::read_xdr(r)?,
41719 amount: i64::read_xdr(r)?,
41720 })
41721 })
41722 }
41723}
41724
41725impl WriteXdr for InflationPayout {
41726 #[cfg(feature = "std")]
41727 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41728 w.with_limited_depth(|w| {
41729 self.destination.write_xdr(w)?;
41730 self.amount.write_xdr(w)?;
41731 Ok(())
41732 })
41733 }
41734}
41735
41736#[cfg_eval::cfg_eval]
41750#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41751#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41752#[cfg_attr(
41753 all(feature = "serde", feature = "alloc"),
41754 serde_with::serde_as,
41755 derive(serde::Serialize, serde::Deserialize),
41756 serde(rename_all = "snake_case")
41757)]
41758#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41759#[allow(clippy::large_enum_variant)]
41760pub enum InflationResult {
41761 Success(VecM<InflationPayout>),
41762 NotTime,
41763}
41764
41765#[cfg(feature = "alloc")]
41766impl Default for InflationResult {
41767 fn default() -> Self {
41768 Self::Success(VecM::<InflationPayout>::default())
41769 }
41770}
41771
41772impl InflationResult {
41773 pub const VARIANTS: [InflationResultCode; 2] =
41774 [InflationResultCode::Success, InflationResultCode::NotTime];
41775 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "NotTime"];
41776
41777 #[must_use]
41778 pub const fn name(&self) -> &'static str {
41779 match self {
41780 Self::Success(_) => "Success",
41781 Self::NotTime => "NotTime",
41782 }
41783 }
41784
41785 #[must_use]
41786 pub const fn discriminant(&self) -> InflationResultCode {
41787 #[allow(clippy::match_same_arms)]
41788 match self {
41789 Self::Success(_) => InflationResultCode::Success,
41790 Self::NotTime => InflationResultCode::NotTime,
41791 }
41792 }
41793
41794 #[must_use]
41795 pub const fn variants() -> [InflationResultCode; 2] {
41796 Self::VARIANTS
41797 }
41798}
41799
41800impl Name for InflationResult {
41801 #[must_use]
41802 fn name(&self) -> &'static str {
41803 Self::name(self)
41804 }
41805}
41806
41807impl Discriminant<InflationResultCode> for InflationResult {
41808 #[must_use]
41809 fn discriminant(&self) -> InflationResultCode {
41810 Self::discriminant(self)
41811 }
41812}
41813
41814impl Variants<InflationResultCode> for InflationResult {
41815 fn variants() -> slice::Iter<'static, InflationResultCode> {
41816 Self::VARIANTS.iter()
41817 }
41818}
41819
41820impl Union<InflationResultCode> for InflationResult {}
41821
41822impl ReadXdr for InflationResult {
41823 #[cfg(feature = "std")]
41824 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41825 r.with_limited_depth(|r| {
41826 let dv: InflationResultCode = <InflationResultCode as ReadXdr>::read_xdr(r)?;
41827 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
41828 let v = match dv {
41829 InflationResultCode::Success => {
41830 Self::Success(VecM::<InflationPayout>::read_xdr(r)?)
41831 }
41832 InflationResultCode::NotTime => Self::NotTime,
41833 #[allow(unreachable_patterns)]
41834 _ => return Err(Error::Invalid),
41835 };
41836 Ok(v)
41837 })
41838 }
41839}
41840
41841impl WriteXdr for InflationResult {
41842 #[cfg(feature = "std")]
41843 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41844 w.with_limited_depth(|w| {
41845 self.discriminant().write_xdr(w)?;
41846 #[allow(clippy::match_same_arms)]
41847 match self {
41848 Self::Success(v) => v.write_xdr(w)?,
41849 Self::NotTime => ().write_xdr(w)?,
41850 };
41851 Ok(())
41852 })
41853 }
41854}
41855
41856#[cfg_attr(feature = "alloc", derive(Default))]
41875#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
41876#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
41877#[cfg_attr(
41878 all(feature = "serde", feature = "alloc"),
41879 derive(serde::Serialize, serde::Deserialize),
41880 serde(rename_all = "snake_case")
41881)]
41882#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
41883#[repr(i32)]
41884pub enum ManageDataResultCode {
41885 #[cfg_attr(feature = "alloc", default)]
41886 Success = 0,
41887 NotSupportedYet = -1,
41888 NameNotFound = -2,
41889 LowReserve = -3,
41890 InvalidName = -4,
41891}
41892
41893impl ManageDataResultCode {
41894 pub const VARIANTS: [ManageDataResultCode; 5] = [
41895 ManageDataResultCode::Success,
41896 ManageDataResultCode::NotSupportedYet,
41897 ManageDataResultCode::NameNotFound,
41898 ManageDataResultCode::LowReserve,
41899 ManageDataResultCode::InvalidName,
41900 ];
41901 pub const VARIANTS_STR: [&'static str; 5] = [
41902 "Success",
41903 "NotSupportedYet",
41904 "NameNotFound",
41905 "LowReserve",
41906 "InvalidName",
41907 ];
41908
41909 #[must_use]
41910 pub const fn name(&self) -> &'static str {
41911 match self {
41912 Self::Success => "Success",
41913 Self::NotSupportedYet => "NotSupportedYet",
41914 Self::NameNotFound => "NameNotFound",
41915 Self::LowReserve => "LowReserve",
41916 Self::InvalidName => "InvalidName",
41917 }
41918 }
41919
41920 #[must_use]
41921 pub const fn variants() -> [ManageDataResultCode; 5] {
41922 Self::VARIANTS
41923 }
41924}
41925
41926impl Name for ManageDataResultCode {
41927 #[must_use]
41928 fn name(&self) -> &'static str {
41929 Self::name(self)
41930 }
41931}
41932
41933impl Variants<ManageDataResultCode> for ManageDataResultCode {
41934 fn variants() -> slice::Iter<'static, ManageDataResultCode> {
41935 Self::VARIANTS.iter()
41936 }
41937}
41938
41939impl Enum for ManageDataResultCode {}
41940
41941impl fmt::Display for ManageDataResultCode {
41942 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41943 f.write_str(self.name())
41944 }
41945}
41946
41947impl TryFrom<i32> for ManageDataResultCode {
41948 type Error = Error;
41949
41950 fn try_from(i: i32) -> Result<Self, Error> {
41951 let e = match i {
41952 0 => ManageDataResultCode::Success,
41953 -1 => ManageDataResultCode::NotSupportedYet,
41954 -2 => ManageDataResultCode::NameNotFound,
41955 -3 => ManageDataResultCode::LowReserve,
41956 -4 => ManageDataResultCode::InvalidName,
41957 #[allow(unreachable_patterns)]
41958 _ => return Err(Error::Invalid),
41959 };
41960 Ok(e)
41961 }
41962}
41963
41964impl From<ManageDataResultCode> for i32 {
41965 #[must_use]
41966 fn from(e: ManageDataResultCode) -> Self {
41967 e as Self
41968 }
41969}
41970
41971impl ReadXdr for ManageDataResultCode {
41972 #[cfg(feature = "std")]
41973 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
41974 r.with_limited_depth(|r| {
41975 let e = i32::read_xdr(r)?;
41976 let v: Self = e.try_into()?;
41977 Ok(v)
41978 })
41979 }
41980}
41981
41982impl WriteXdr for ManageDataResultCode {
41983 #[cfg(feature = "std")]
41984 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
41985 w.with_limited_depth(|w| {
41986 let i: i32 = (*self).into();
41987 i.write_xdr(w)
41988 })
41989 }
41990}
41991
41992#[cfg_eval::cfg_eval]
42009#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42010#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42011#[cfg_attr(
42012 all(feature = "serde", feature = "alloc"),
42013 serde_with::serde_as,
42014 derive(serde::Serialize, serde::Deserialize),
42015 serde(rename_all = "snake_case")
42016)]
42017#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42018#[allow(clippy::large_enum_variant)]
42019pub enum ManageDataResult {
42020 Success,
42021 NotSupportedYet,
42022 NameNotFound,
42023 LowReserve,
42024 InvalidName,
42025}
42026
42027#[cfg(feature = "alloc")]
42028impl Default for ManageDataResult {
42029 fn default() -> Self {
42030 Self::Success
42031 }
42032}
42033
42034impl ManageDataResult {
42035 pub const VARIANTS: [ManageDataResultCode; 5] = [
42036 ManageDataResultCode::Success,
42037 ManageDataResultCode::NotSupportedYet,
42038 ManageDataResultCode::NameNotFound,
42039 ManageDataResultCode::LowReserve,
42040 ManageDataResultCode::InvalidName,
42041 ];
42042 pub const VARIANTS_STR: [&'static str; 5] = [
42043 "Success",
42044 "NotSupportedYet",
42045 "NameNotFound",
42046 "LowReserve",
42047 "InvalidName",
42048 ];
42049
42050 #[must_use]
42051 pub const fn name(&self) -> &'static str {
42052 match self {
42053 Self::Success => "Success",
42054 Self::NotSupportedYet => "NotSupportedYet",
42055 Self::NameNotFound => "NameNotFound",
42056 Self::LowReserve => "LowReserve",
42057 Self::InvalidName => "InvalidName",
42058 }
42059 }
42060
42061 #[must_use]
42062 pub const fn discriminant(&self) -> ManageDataResultCode {
42063 #[allow(clippy::match_same_arms)]
42064 match self {
42065 Self::Success => ManageDataResultCode::Success,
42066 Self::NotSupportedYet => ManageDataResultCode::NotSupportedYet,
42067 Self::NameNotFound => ManageDataResultCode::NameNotFound,
42068 Self::LowReserve => ManageDataResultCode::LowReserve,
42069 Self::InvalidName => ManageDataResultCode::InvalidName,
42070 }
42071 }
42072
42073 #[must_use]
42074 pub const fn variants() -> [ManageDataResultCode; 5] {
42075 Self::VARIANTS
42076 }
42077}
42078
42079impl Name for ManageDataResult {
42080 #[must_use]
42081 fn name(&self) -> &'static str {
42082 Self::name(self)
42083 }
42084}
42085
42086impl Discriminant<ManageDataResultCode> for ManageDataResult {
42087 #[must_use]
42088 fn discriminant(&self) -> ManageDataResultCode {
42089 Self::discriminant(self)
42090 }
42091}
42092
42093impl Variants<ManageDataResultCode> for ManageDataResult {
42094 fn variants() -> slice::Iter<'static, ManageDataResultCode> {
42095 Self::VARIANTS.iter()
42096 }
42097}
42098
42099impl Union<ManageDataResultCode> for ManageDataResult {}
42100
42101impl ReadXdr for ManageDataResult {
42102 #[cfg(feature = "std")]
42103 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42104 r.with_limited_depth(|r| {
42105 let dv: ManageDataResultCode = <ManageDataResultCode as ReadXdr>::read_xdr(r)?;
42106 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
42107 let v = match dv {
42108 ManageDataResultCode::Success => Self::Success,
42109 ManageDataResultCode::NotSupportedYet => Self::NotSupportedYet,
42110 ManageDataResultCode::NameNotFound => Self::NameNotFound,
42111 ManageDataResultCode::LowReserve => Self::LowReserve,
42112 ManageDataResultCode::InvalidName => Self::InvalidName,
42113 #[allow(unreachable_patterns)]
42114 _ => return Err(Error::Invalid),
42115 };
42116 Ok(v)
42117 })
42118 }
42119}
42120
42121impl WriteXdr for ManageDataResult {
42122 #[cfg(feature = "std")]
42123 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42124 w.with_limited_depth(|w| {
42125 self.discriminant().write_xdr(w)?;
42126 #[allow(clippy::match_same_arms)]
42127 match self {
42128 Self::Success => ().write_xdr(w)?,
42129 Self::NotSupportedYet => ().write_xdr(w)?,
42130 Self::NameNotFound => ().write_xdr(w)?,
42131 Self::LowReserve => ().write_xdr(w)?,
42132 Self::InvalidName => ().write_xdr(w)?,
42133 };
42134 Ok(())
42135 })
42136 }
42137}
42138
42139#[cfg_attr(feature = "alloc", derive(Default))]
42153#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42154#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42155#[cfg_attr(
42156 all(feature = "serde", feature = "alloc"),
42157 derive(serde::Serialize, serde::Deserialize),
42158 serde(rename_all = "snake_case")
42159)]
42160#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42161#[repr(i32)]
42162pub enum BumpSequenceResultCode {
42163 #[cfg_attr(feature = "alloc", default)]
42164 Success = 0,
42165 BadSeq = -1,
42166}
42167
42168impl BumpSequenceResultCode {
42169 pub const VARIANTS: [BumpSequenceResultCode; 2] = [
42170 BumpSequenceResultCode::Success,
42171 BumpSequenceResultCode::BadSeq,
42172 ];
42173 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "BadSeq"];
42174
42175 #[must_use]
42176 pub const fn name(&self) -> &'static str {
42177 match self {
42178 Self::Success => "Success",
42179 Self::BadSeq => "BadSeq",
42180 }
42181 }
42182
42183 #[must_use]
42184 pub const fn variants() -> [BumpSequenceResultCode; 2] {
42185 Self::VARIANTS
42186 }
42187}
42188
42189impl Name for BumpSequenceResultCode {
42190 #[must_use]
42191 fn name(&self) -> &'static str {
42192 Self::name(self)
42193 }
42194}
42195
42196impl Variants<BumpSequenceResultCode> for BumpSequenceResultCode {
42197 fn variants() -> slice::Iter<'static, BumpSequenceResultCode> {
42198 Self::VARIANTS.iter()
42199 }
42200}
42201
42202impl Enum for BumpSequenceResultCode {}
42203
42204impl fmt::Display for BumpSequenceResultCode {
42205 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42206 f.write_str(self.name())
42207 }
42208}
42209
42210impl TryFrom<i32> for BumpSequenceResultCode {
42211 type Error = Error;
42212
42213 fn try_from(i: i32) -> Result<Self, Error> {
42214 let e = match i {
42215 0 => BumpSequenceResultCode::Success,
42216 -1 => BumpSequenceResultCode::BadSeq,
42217 #[allow(unreachable_patterns)]
42218 _ => return Err(Error::Invalid),
42219 };
42220 Ok(e)
42221 }
42222}
42223
42224impl From<BumpSequenceResultCode> for i32 {
42225 #[must_use]
42226 fn from(e: BumpSequenceResultCode) -> Self {
42227 e as Self
42228 }
42229}
42230
42231impl ReadXdr for BumpSequenceResultCode {
42232 #[cfg(feature = "std")]
42233 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42234 r.with_limited_depth(|r| {
42235 let e = i32::read_xdr(r)?;
42236 let v: Self = e.try_into()?;
42237 Ok(v)
42238 })
42239 }
42240}
42241
42242impl WriteXdr for BumpSequenceResultCode {
42243 #[cfg(feature = "std")]
42244 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42245 w.with_limited_depth(|w| {
42246 let i: i32 = (*self).into();
42247 i.write_xdr(w)
42248 })
42249 }
42250}
42251
42252#[cfg_eval::cfg_eval]
42266#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42267#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42268#[cfg_attr(
42269 all(feature = "serde", feature = "alloc"),
42270 serde_with::serde_as,
42271 derive(serde::Serialize, serde::Deserialize),
42272 serde(rename_all = "snake_case")
42273)]
42274#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42275#[allow(clippy::large_enum_variant)]
42276pub enum BumpSequenceResult {
42277 Success,
42278 BadSeq,
42279}
42280
42281#[cfg(feature = "alloc")]
42282impl Default for BumpSequenceResult {
42283 fn default() -> Self {
42284 Self::Success
42285 }
42286}
42287
42288impl BumpSequenceResult {
42289 pub const VARIANTS: [BumpSequenceResultCode; 2] = [
42290 BumpSequenceResultCode::Success,
42291 BumpSequenceResultCode::BadSeq,
42292 ];
42293 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "BadSeq"];
42294
42295 #[must_use]
42296 pub const fn name(&self) -> &'static str {
42297 match self {
42298 Self::Success => "Success",
42299 Self::BadSeq => "BadSeq",
42300 }
42301 }
42302
42303 #[must_use]
42304 pub const fn discriminant(&self) -> BumpSequenceResultCode {
42305 #[allow(clippy::match_same_arms)]
42306 match self {
42307 Self::Success => BumpSequenceResultCode::Success,
42308 Self::BadSeq => BumpSequenceResultCode::BadSeq,
42309 }
42310 }
42311
42312 #[must_use]
42313 pub const fn variants() -> [BumpSequenceResultCode; 2] {
42314 Self::VARIANTS
42315 }
42316}
42317
42318impl Name for BumpSequenceResult {
42319 #[must_use]
42320 fn name(&self) -> &'static str {
42321 Self::name(self)
42322 }
42323}
42324
42325impl Discriminant<BumpSequenceResultCode> for BumpSequenceResult {
42326 #[must_use]
42327 fn discriminant(&self) -> BumpSequenceResultCode {
42328 Self::discriminant(self)
42329 }
42330}
42331
42332impl Variants<BumpSequenceResultCode> for BumpSequenceResult {
42333 fn variants() -> slice::Iter<'static, BumpSequenceResultCode> {
42334 Self::VARIANTS.iter()
42335 }
42336}
42337
42338impl Union<BumpSequenceResultCode> for BumpSequenceResult {}
42339
42340impl ReadXdr for BumpSequenceResult {
42341 #[cfg(feature = "std")]
42342 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42343 r.with_limited_depth(|r| {
42344 let dv: BumpSequenceResultCode = <BumpSequenceResultCode as ReadXdr>::read_xdr(r)?;
42345 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
42346 let v = match dv {
42347 BumpSequenceResultCode::Success => Self::Success,
42348 BumpSequenceResultCode::BadSeq => Self::BadSeq,
42349 #[allow(unreachable_patterns)]
42350 _ => return Err(Error::Invalid),
42351 };
42352 Ok(v)
42353 })
42354 }
42355}
42356
42357impl WriteXdr for BumpSequenceResult {
42358 #[cfg(feature = "std")]
42359 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42360 w.with_limited_depth(|w| {
42361 self.discriminant().write_xdr(w)?;
42362 #[allow(clippy::match_same_arms)]
42363 match self {
42364 Self::Success => ().write_xdr(w)?,
42365 Self::BadSeq => ().write_xdr(w)?,
42366 };
42367 Ok(())
42368 })
42369 }
42370}
42371
42372#[cfg_attr(feature = "alloc", derive(Default))]
42388#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42389#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42390#[cfg_attr(
42391 all(feature = "serde", feature = "alloc"),
42392 derive(serde::Serialize, serde::Deserialize),
42393 serde(rename_all = "snake_case")
42394)]
42395#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42396#[repr(i32)]
42397pub enum CreateClaimableBalanceResultCode {
42398 #[cfg_attr(feature = "alloc", default)]
42399 Success = 0,
42400 Malformed = -1,
42401 LowReserve = -2,
42402 NoTrust = -3,
42403 NotAuthorized = -4,
42404 Underfunded = -5,
42405}
42406
42407impl CreateClaimableBalanceResultCode {
42408 pub const VARIANTS: [CreateClaimableBalanceResultCode; 6] = [
42409 CreateClaimableBalanceResultCode::Success,
42410 CreateClaimableBalanceResultCode::Malformed,
42411 CreateClaimableBalanceResultCode::LowReserve,
42412 CreateClaimableBalanceResultCode::NoTrust,
42413 CreateClaimableBalanceResultCode::NotAuthorized,
42414 CreateClaimableBalanceResultCode::Underfunded,
42415 ];
42416 pub const VARIANTS_STR: [&'static str; 6] = [
42417 "Success",
42418 "Malformed",
42419 "LowReserve",
42420 "NoTrust",
42421 "NotAuthorized",
42422 "Underfunded",
42423 ];
42424
42425 #[must_use]
42426 pub const fn name(&self) -> &'static str {
42427 match self {
42428 Self::Success => "Success",
42429 Self::Malformed => "Malformed",
42430 Self::LowReserve => "LowReserve",
42431 Self::NoTrust => "NoTrust",
42432 Self::NotAuthorized => "NotAuthorized",
42433 Self::Underfunded => "Underfunded",
42434 }
42435 }
42436
42437 #[must_use]
42438 pub const fn variants() -> [CreateClaimableBalanceResultCode; 6] {
42439 Self::VARIANTS
42440 }
42441}
42442
42443impl Name for CreateClaimableBalanceResultCode {
42444 #[must_use]
42445 fn name(&self) -> &'static str {
42446 Self::name(self)
42447 }
42448}
42449
42450impl Variants<CreateClaimableBalanceResultCode> for CreateClaimableBalanceResultCode {
42451 fn variants() -> slice::Iter<'static, CreateClaimableBalanceResultCode> {
42452 Self::VARIANTS.iter()
42453 }
42454}
42455
42456impl Enum for CreateClaimableBalanceResultCode {}
42457
42458impl fmt::Display for CreateClaimableBalanceResultCode {
42459 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42460 f.write_str(self.name())
42461 }
42462}
42463
42464impl TryFrom<i32> for CreateClaimableBalanceResultCode {
42465 type Error = Error;
42466
42467 fn try_from(i: i32) -> Result<Self, Error> {
42468 let e = match i {
42469 0 => CreateClaimableBalanceResultCode::Success,
42470 -1 => CreateClaimableBalanceResultCode::Malformed,
42471 -2 => CreateClaimableBalanceResultCode::LowReserve,
42472 -3 => CreateClaimableBalanceResultCode::NoTrust,
42473 -4 => CreateClaimableBalanceResultCode::NotAuthorized,
42474 -5 => CreateClaimableBalanceResultCode::Underfunded,
42475 #[allow(unreachable_patterns)]
42476 _ => return Err(Error::Invalid),
42477 };
42478 Ok(e)
42479 }
42480}
42481
42482impl From<CreateClaimableBalanceResultCode> for i32 {
42483 #[must_use]
42484 fn from(e: CreateClaimableBalanceResultCode) -> Self {
42485 e as Self
42486 }
42487}
42488
42489impl ReadXdr for CreateClaimableBalanceResultCode {
42490 #[cfg(feature = "std")]
42491 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42492 r.with_limited_depth(|r| {
42493 let e = i32::read_xdr(r)?;
42494 let v: Self = e.try_into()?;
42495 Ok(v)
42496 })
42497 }
42498}
42499
42500impl WriteXdr for CreateClaimableBalanceResultCode {
42501 #[cfg(feature = "std")]
42502 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42503 w.with_limited_depth(|w| {
42504 let i: i32 = (*self).into();
42505 i.write_xdr(w)
42506 })
42507 }
42508}
42509
42510#[cfg_eval::cfg_eval]
42529#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42530#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42531#[cfg_attr(
42532 all(feature = "serde", feature = "alloc"),
42533 serde_with::serde_as,
42534 derive(serde::Serialize, serde::Deserialize),
42535 serde(rename_all = "snake_case")
42536)]
42537#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42538#[allow(clippy::large_enum_variant)]
42539pub enum CreateClaimableBalanceResult {
42540 Success(ClaimableBalanceId),
42541 Malformed,
42542 LowReserve,
42543 NoTrust,
42544 NotAuthorized,
42545 Underfunded,
42546}
42547
42548#[cfg(feature = "alloc")]
42549impl Default for CreateClaimableBalanceResult {
42550 fn default() -> Self {
42551 Self::Success(ClaimableBalanceId::default())
42552 }
42553}
42554
42555impl CreateClaimableBalanceResult {
42556 pub const VARIANTS: [CreateClaimableBalanceResultCode; 6] = [
42557 CreateClaimableBalanceResultCode::Success,
42558 CreateClaimableBalanceResultCode::Malformed,
42559 CreateClaimableBalanceResultCode::LowReserve,
42560 CreateClaimableBalanceResultCode::NoTrust,
42561 CreateClaimableBalanceResultCode::NotAuthorized,
42562 CreateClaimableBalanceResultCode::Underfunded,
42563 ];
42564 pub const VARIANTS_STR: [&'static str; 6] = [
42565 "Success",
42566 "Malformed",
42567 "LowReserve",
42568 "NoTrust",
42569 "NotAuthorized",
42570 "Underfunded",
42571 ];
42572
42573 #[must_use]
42574 pub const fn name(&self) -> &'static str {
42575 match self {
42576 Self::Success(_) => "Success",
42577 Self::Malformed => "Malformed",
42578 Self::LowReserve => "LowReserve",
42579 Self::NoTrust => "NoTrust",
42580 Self::NotAuthorized => "NotAuthorized",
42581 Self::Underfunded => "Underfunded",
42582 }
42583 }
42584
42585 #[must_use]
42586 pub const fn discriminant(&self) -> CreateClaimableBalanceResultCode {
42587 #[allow(clippy::match_same_arms)]
42588 match self {
42589 Self::Success(_) => CreateClaimableBalanceResultCode::Success,
42590 Self::Malformed => CreateClaimableBalanceResultCode::Malformed,
42591 Self::LowReserve => CreateClaimableBalanceResultCode::LowReserve,
42592 Self::NoTrust => CreateClaimableBalanceResultCode::NoTrust,
42593 Self::NotAuthorized => CreateClaimableBalanceResultCode::NotAuthorized,
42594 Self::Underfunded => CreateClaimableBalanceResultCode::Underfunded,
42595 }
42596 }
42597
42598 #[must_use]
42599 pub const fn variants() -> [CreateClaimableBalanceResultCode; 6] {
42600 Self::VARIANTS
42601 }
42602}
42603
42604impl Name for CreateClaimableBalanceResult {
42605 #[must_use]
42606 fn name(&self) -> &'static str {
42607 Self::name(self)
42608 }
42609}
42610
42611impl Discriminant<CreateClaimableBalanceResultCode> for CreateClaimableBalanceResult {
42612 #[must_use]
42613 fn discriminant(&self) -> CreateClaimableBalanceResultCode {
42614 Self::discriminant(self)
42615 }
42616}
42617
42618impl Variants<CreateClaimableBalanceResultCode> for CreateClaimableBalanceResult {
42619 fn variants() -> slice::Iter<'static, CreateClaimableBalanceResultCode> {
42620 Self::VARIANTS.iter()
42621 }
42622}
42623
42624impl Union<CreateClaimableBalanceResultCode> for CreateClaimableBalanceResult {}
42625
42626impl ReadXdr for CreateClaimableBalanceResult {
42627 #[cfg(feature = "std")]
42628 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42629 r.with_limited_depth(|r| {
42630 let dv: CreateClaimableBalanceResultCode =
42631 <CreateClaimableBalanceResultCode as ReadXdr>::read_xdr(r)?;
42632 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
42633 let v = match dv {
42634 CreateClaimableBalanceResultCode::Success => {
42635 Self::Success(ClaimableBalanceId::read_xdr(r)?)
42636 }
42637 CreateClaimableBalanceResultCode::Malformed => Self::Malformed,
42638 CreateClaimableBalanceResultCode::LowReserve => Self::LowReserve,
42639 CreateClaimableBalanceResultCode::NoTrust => Self::NoTrust,
42640 CreateClaimableBalanceResultCode::NotAuthorized => Self::NotAuthorized,
42641 CreateClaimableBalanceResultCode::Underfunded => Self::Underfunded,
42642 #[allow(unreachable_patterns)]
42643 _ => return Err(Error::Invalid),
42644 };
42645 Ok(v)
42646 })
42647 }
42648}
42649
42650impl WriteXdr for CreateClaimableBalanceResult {
42651 #[cfg(feature = "std")]
42652 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42653 w.with_limited_depth(|w| {
42654 self.discriminant().write_xdr(w)?;
42655 #[allow(clippy::match_same_arms)]
42656 match self {
42657 Self::Success(v) => v.write_xdr(w)?,
42658 Self::Malformed => ().write_xdr(w)?,
42659 Self::LowReserve => ().write_xdr(w)?,
42660 Self::NoTrust => ().write_xdr(w)?,
42661 Self::NotAuthorized => ().write_xdr(w)?,
42662 Self::Underfunded => ().write_xdr(w)?,
42663 };
42664 Ok(())
42665 })
42666 }
42667}
42668
42669#[cfg_attr(feature = "alloc", derive(Default))]
42685#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42686#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42687#[cfg_attr(
42688 all(feature = "serde", feature = "alloc"),
42689 derive(serde::Serialize, serde::Deserialize),
42690 serde(rename_all = "snake_case")
42691)]
42692#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42693#[repr(i32)]
42694pub enum ClaimClaimableBalanceResultCode {
42695 #[cfg_attr(feature = "alloc", default)]
42696 Success = 0,
42697 DoesNotExist = -1,
42698 CannotClaim = -2,
42699 LineFull = -3,
42700 NoTrust = -4,
42701 NotAuthorized = -5,
42702}
42703
42704impl ClaimClaimableBalanceResultCode {
42705 pub const VARIANTS: [ClaimClaimableBalanceResultCode; 6] = [
42706 ClaimClaimableBalanceResultCode::Success,
42707 ClaimClaimableBalanceResultCode::DoesNotExist,
42708 ClaimClaimableBalanceResultCode::CannotClaim,
42709 ClaimClaimableBalanceResultCode::LineFull,
42710 ClaimClaimableBalanceResultCode::NoTrust,
42711 ClaimClaimableBalanceResultCode::NotAuthorized,
42712 ];
42713 pub const VARIANTS_STR: [&'static str; 6] = [
42714 "Success",
42715 "DoesNotExist",
42716 "CannotClaim",
42717 "LineFull",
42718 "NoTrust",
42719 "NotAuthorized",
42720 ];
42721
42722 #[must_use]
42723 pub const fn name(&self) -> &'static str {
42724 match self {
42725 Self::Success => "Success",
42726 Self::DoesNotExist => "DoesNotExist",
42727 Self::CannotClaim => "CannotClaim",
42728 Self::LineFull => "LineFull",
42729 Self::NoTrust => "NoTrust",
42730 Self::NotAuthorized => "NotAuthorized",
42731 }
42732 }
42733
42734 #[must_use]
42735 pub const fn variants() -> [ClaimClaimableBalanceResultCode; 6] {
42736 Self::VARIANTS
42737 }
42738}
42739
42740impl Name for ClaimClaimableBalanceResultCode {
42741 #[must_use]
42742 fn name(&self) -> &'static str {
42743 Self::name(self)
42744 }
42745}
42746
42747impl Variants<ClaimClaimableBalanceResultCode> for ClaimClaimableBalanceResultCode {
42748 fn variants() -> slice::Iter<'static, ClaimClaimableBalanceResultCode> {
42749 Self::VARIANTS.iter()
42750 }
42751}
42752
42753impl Enum for ClaimClaimableBalanceResultCode {}
42754
42755impl fmt::Display for ClaimClaimableBalanceResultCode {
42756 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42757 f.write_str(self.name())
42758 }
42759}
42760
42761impl TryFrom<i32> for ClaimClaimableBalanceResultCode {
42762 type Error = Error;
42763
42764 fn try_from(i: i32) -> Result<Self, Error> {
42765 let e = match i {
42766 0 => ClaimClaimableBalanceResultCode::Success,
42767 -1 => ClaimClaimableBalanceResultCode::DoesNotExist,
42768 -2 => ClaimClaimableBalanceResultCode::CannotClaim,
42769 -3 => ClaimClaimableBalanceResultCode::LineFull,
42770 -4 => ClaimClaimableBalanceResultCode::NoTrust,
42771 -5 => ClaimClaimableBalanceResultCode::NotAuthorized,
42772 #[allow(unreachable_patterns)]
42773 _ => return Err(Error::Invalid),
42774 };
42775 Ok(e)
42776 }
42777}
42778
42779impl From<ClaimClaimableBalanceResultCode> for i32 {
42780 #[must_use]
42781 fn from(e: ClaimClaimableBalanceResultCode) -> Self {
42782 e as Self
42783 }
42784}
42785
42786impl ReadXdr for ClaimClaimableBalanceResultCode {
42787 #[cfg(feature = "std")]
42788 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42789 r.with_limited_depth(|r| {
42790 let e = i32::read_xdr(r)?;
42791 let v: Self = e.try_into()?;
42792 Ok(v)
42793 })
42794 }
42795}
42796
42797impl WriteXdr for ClaimClaimableBalanceResultCode {
42798 #[cfg(feature = "std")]
42799 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42800 w.with_limited_depth(|w| {
42801 let i: i32 = (*self).into();
42802 i.write_xdr(w)
42803 })
42804 }
42805}
42806
42807#[cfg_eval::cfg_eval]
42825#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42826#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42827#[cfg_attr(
42828 all(feature = "serde", feature = "alloc"),
42829 serde_with::serde_as,
42830 derive(serde::Serialize, serde::Deserialize),
42831 serde(rename_all = "snake_case")
42832)]
42833#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42834#[allow(clippy::large_enum_variant)]
42835pub enum ClaimClaimableBalanceResult {
42836 Success,
42837 DoesNotExist,
42838 CannotClaim,
42839 LineFull,
42840 NoTrust,
42841 NotAuthorized,
42842}
42843
42844#[cfg(feature = "alloc")]
42845impl Default for ClaimClaimableBalanceResult {
42846 fn default() -> Self {
42847 Self::Success
42848 }
42849}
42850
42851impl ClaimClaimableBalanceResult {
42852 pub const VARIANTS: [ClaimClaimableBalanceResultCode; 6] = [
42853 ClaimClaimableBalanceResultCode::Success,
42854 ClaimClaimableBalanceResultCode::DoesNotExist,
42855 ClaimClaimableBalanceResultCode::CannotClaim,
42856 ClaimClaimableBalanceResultCode::LineFull,
42857 ClaimClaimableBalanceResultCode::NoTrust,
42858 ClaimClaimableBalanceResultCode::NotAuthorized,
42859 ];
42860 pub const VARIANTS_STR: [&'static str; 6] = [
42861 "Success",
42862 "DoesNotExist",
42863 "CannotClaim",
42864 "LineFull",
42865 "NoTrust",
42866 "NotAuthorized",
42867 ];
42868
42869 #[must_use]
42870 pub const fn name(&self) -> &'static str {
42871 match self {
42872 Self::Success => "Success",
42873 Self::DoesNotExist => "DoesNotExist",
42874 Self::CannotClaim => "CannotClaim",
42875 Self::LineFull => "LineFull",
42876 Self::NoTrust => "NoTrust",
42877 Self::NotAuthorized => "NotAuthorized",
42878 }
42879 }
42880
42881 #[must_use]
42882 pub const fn discriminant(&self) -> ClaimClaimableBalanceResultCode {
42883 #[allow(clippy::match_same_arms)]
42884 match self {
42885 Self::Success => ClaimClaimableBalanceResultCode::Success,
42886 Self::DoesNotExist => ClaimClaimableBalanceResultCode::DoesNotExist,
42887 Self::CannotClaim => ClaimClaimableBalanceResultCode::CannotClaim,
42888 Self::LineFull => ClaimClaimableBalanceResultCode::LineFull,
42889 Self::NoTrust => ClaimClaimableBalanceResultCode::NoTrust,
42890 Self::NotAuthorized => ClaimClaimableBalanceResultCode::NotAuthorized,
42891 }
42892 }
42893
42894 #[must_use]
42895 pub const fn variants() -> [ClaimClaimableBalanceResultCode; 6] {
42896 Self::VARIANTS
42897 }
42898}
42899
42900impl Name for ClaimClaimableBalanceResult {
42901 #[must_use]
42902 fn name(&self) -> &'static str {
42903 Self::name(self)
42904 }
42905}
42906
42907impl Discriminant<ClaimClaimableBalanceResultCode> for ClaimClaimableBalanceResult {
42908 #[must_use]
42909 fn discriminant(&self) -> ClaimClaimableBalanceResultCode {
42910 Self::discriminant(self)
42911 }
42912}
42913
42914impl Variants<ClaimClaimableBalanceResultCode> for ClaimClaimableBalanceResult {
42915 fn variants() -> slice::Iter<'static, ClaimClaimableBalanceResultCode> {
42916 Self::VARIANTS.iter()
42917 }
42918}
42919
42920impl Union<ClaimClaimableBalanceResultCode> for ClaimClaimableBalanceResult {}
42921
42922impl ReadXdr for ClaimClaimableBalanceResult {
42923 #[cfg(feature = "std")]
42924 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
42925 r.with_limited_depth(|r| {
42926 let dv: ClaimClaimableBalanceResultCode =
42927 <ClaimClaimableBalanceResultCode as ReadXdr>::read_xdr(r)?;
42928 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
42929 let v = match dv {
42930 ClaimClaimableBalanceResultCode::Success => Self::Success,
42931 ClaimClaimableBalanceResultCode::DoesNotExist => Self::DoesNotExist,
42932 ClaimClaimableBalanceResultCode::CannotClaim => Self::CannotClaim,
42933 ClaimClaimableBalanceResultCode::LineFull => Self::LineFull,
42934 ClaimClaimableBalanceResultCode::NoTrust => Self::NoTrust,
42935 ClaimClaimableBalanceResultCode::NotAuthorized => Self::NotAuthorized,
42936 #[allow(unreachable_patterns)]
42937 _ => return Err(Error::Invalid),
42938 };
42939 Ok(v)
42940 })
42941 }
42942}
42943
42944impl WriteXdr for ClaimClaimableBalanceResult {
42945 #[cfg(feature = "std")]
42946 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
42947 w.with_limited_depth(|w| {
42948 self.discriminant().write_xdr(w)?;
42949 #[allow(clippy::match_same_arms)]
42950 match self {
42951 Self::Success => ().write_xdr(w)?,
42952 Self::DoesNotExist => ().write_xdr(w)?,
42953 Self::CannotClaim => ().write_xdr(w)?,
42954 Self::LineFull => ().write_xdr(w)?,
42955 Self::NoTrust => ().write_xdr(w)?,
42956 Self::NotAuthorized => ().write_xdr(w)?,
42957 };
42958 Ok(())
42959 })
42960 }
42961}
42962
42963#[cfg_attr(feature = "alloc", derive(Default))]
42980#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
42981#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
42982#[cfg_attr(
42983 all(feature = "serde", feature = "alloc"),
42984 derive(serde::Serialize, serde::Deserialize),
42985 serde(rename_all = "snake_case")
42986)]
42987#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
42988#[repr(i32)]
42989pub enum BeginSponsoringFutureReservesResultCode {
42990 #[cfg_attr(feature = "alloc", default)]
42991 Success = 0,
42992 Malformed = -1,
42993 AlreadySponsored = -2,
42994 Recursive = -3,
42995}
42996
42997impl BeginSponsoringFutureReservesResultCode {
42998 pub const VARIANTS: [BeginSponsoringFutureReservesResultCode; 4] = [
42999 BeginSponsoringFutureReservesResultCode::Success,
43000 BeginSponsoringFutureReservesResultCode::Malformed,
43001 BeginSponsoringFutureReservesResultCode::AlreadySponsored,
43002 BeginSponsoringFutureReservesResultCode::Recursive,
43003 ];
43004 pub const VARIANTS_STR: [&'static str; 4] =
43005 ["Success", "Malformed", "AlreadySponsored", "Recursive"];
43006
43007 #[must_use]
43008 pub const fn name(&self) -> &'static str {
43009 match self {
43010 Self::Success => "Success",
43011 Self::Malformed => "Malformed",
43012 Self::AlreadySponsored => "AlreadySponsored",
43013 Self::Recursive => "Recursive",
43014 }
43015 }
43016
43017 #[must_use]
43018 pub const fn variants() -> [BeginSponsoringFutureReservesResultCode; 4] {
43019 Self::VARIANTS
43020 }
43021}
43022
43023impl Name for BeginSponsoringFutureReservesResultCode {
43024 #[must_use]
43025 fn name(&self) -> &'static str {
43026 Self::name(self)
43027 }
43028}
43029
43030impl Variants<BeginSponsoringFutureReservesResultCode> for BeginSponsoringFutureReservesResultCode {
43031 fn variants() -> slice::Iter<'static, BeginSponsoringFutureReservesResultCode> {
43032 Self::VARIANTS.iter()
43033 }
43034}
43035
43036impl Enum for BeginSponsoringFutureReservesResultCode {}
43037
43038impl fmt::Display for BeginSponsoringFutureReservesResultCode {
43039 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43040 f.write_str(self.name())
43041 }
43042}
43043
43044impl TryFrom<i32> for BeginSponsoringFutureReservesResultCode {
43045 type Error = Error;
43046
43047 fn try_from(i: i32) -> Result<Self, Error> {
43048 let e = match i {
43049 0 => BeginSponsoringFutureReservesResultCode::Success,
43050 -1 => BeginSponsoringFutureReservesResultCode::Malformed,
43051 -2 => BeginSponsoringFutureReservesResultCode::AlreadySponsored,
43052 -3 => BeginSponsoringFutureReservesResultCode::Recursive,
43053 #[allow(unreachable_patterns)]
43054 _ => return Err(Error::Invalid),
43055 };
43056 Ok(e)
43057 }
43058}
43059
43060impl From<BeginSponsoringFutureReservesResultCode> for i32 {
43061 #[must_use]
43062 fn from(e: BeginSponsoringFutureReservesResultCode) -> Self {
43063 e as Self
43064 }
43065}
43066
43067impl ReadXdr for BeginSponsoringFutureReservesResultCode {
43068 #[cfg(feature = "std")]
43069 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43070 r.with_limited_depth(|r| {
43071 let e = i32::read_xdr(r)?;
43072 let v: Self = e.try_into()?;
43073 Ok(v)
43074 })
43075 }
43076}
43077
43078impl WriteXdr for BeginSponsoringFutureReservesResultCode {
43079 #[cfg(feature = "std")]
43080 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43081 w.with_limited_depth(|w| {
43082 let i: i32 = (*self).into();
43083 i.write_xdr(w)
43084 })
43085 }
43086}
43087
43088#[cfg_eval::cfg_eval]
43105#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43106#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43107#[cfg_attr(
43108 all(feature = "serde", feature = "alloc"),
43109 serde_with::serde_as,
43110 derive(serde::Serialize, serde::Deserialize),
43111 serde(rename_all = "snake_case")
43112)]
43113#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43114#[allow(clippy::large_enum_variant)]
43115pub enum BeginSponsoringFutureReservesResult {
43116 Success,
43117 Malformed,
43118 AlreadySponsored,
43119 Recursive,
43120}
43121
43122#[cfg(feature = "alloc")]
43123impl Default for BeginSponsoringFutureReservesResult {
43124 fn default() -> Self {
43125 Self::Success
43126 }
43127}
43128
43129impl BeginSponsoringFutureReservesResult {
43130 pub const VARIANTS: [BeginSponsoringFutureReservesResultCode; 4] = [
43131 BeginSponsoringFutureReservesResultCode::Success,
43132 BeginSponsoringFutureReservesResultCode::Malformed,
43133 BeginSponsoringFutureReservesResultCode::AlreadySponsored,
43134 BeginSponsoringFutureReservesResultCode::Recursive,
43135 ];
43136 pub const VARIANTS_STR: [&'static str; 4] =
43137 ["Success", "Malformed", "AlreadySponsored", "Recursive"];
43138
43139 #[must_use]
43140 pub const fn name(&self) -> &'static str {
43141 match self {
43142 Self::Success => "Success",
43143 Self::Malformed => "Malformed",
43144 Self::AlreadySponsored => "AlreadySponsored",
43145 Self::Recursive => "Recursive",
43146 }
43147 }
43148
43149 #[must_use]
43150 pub const fn discriminant(&self) -> BeginSponsoringFutureReservesResultCode {
43151 #[allow(clippy::match_same_arms)]
43152 match self {
43153 Self::Success => BeginSponsoringFutureReservesResultCode::Success,
43154 Self::Malformed => BeginSponsoringFutureReservesResultCode::Malformed,
43155 Self::AlreadySponsored => BeginSponsoringFutureReservesResultCode::AlreadySponsored,
43156 Self::Recursive => BeginSponsoringFutureReservesResultCode::Recursive,
43157 }
43158 }
43159
43160 #[must_use]
43161 pub const fn variants() -> [BeginSponsoringFutureReservesResultCode; 4] {
43162 Self::VARIANTS
43163 }
43164}
43165
43166impl Name for BeginSponsoringFutureReservesResult {
43167 #[must_use]
43168 fn name(&self) -> &'static str {
43169 Self::name(self)
43170 }
43171}
43172
43173impl Discriminant<BeginSponsoringFutureReservesResultCode> for BeginSponsoringFutureReservesResult {
43174 #[must_use]
43175 fn discriminant(&self) -> BeginSponsoringFutureReservesResultCode {
43176 Self::discriminant(self)
43177 }
43178}
43179
43180impl Variants<BeginSponsoringFutureReservesResultCode> for BeginSponsoringFutureReservesResult {
43181 fn variants() -> slice::Iter<'static, BeginSponsoringFutureReservesResultCode> {
43182 Self::VARIANTS.iter()
43183 }
43184}
43185
43186impl Union<BeginSponsoringFutureReservesResultCode> for BeginSponsoringFutureReservesResult {}
43187
43188impl ReadXdr for BeginSponsoringFutureReservesResult {
43189 #[cfg(feature = "std")]
43190 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43191 r.with_limited_depth(|r| {
43192 let dv: BeginSponsoringFutureReservesResultCode =
43193 <BeginSponsoringFutureReservesResultCode as ReadXdr>::read_xdr(r)?;
43194 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
43195 let v = match dv {
43196 BeginSponsoringFutureReservesResultCode::Success => Self::Success,
43197 BeginSponsoringFutureReservesResultCode::Malformed => Self::Malformed,
43198 BeginSponsoringFutureReservesResultCode::AlreadySponsored => Self::AlreadySponsored,
43199 BeginSponsoringFutureReservesResultCode::Recursive => Self::Recursive,
43200 #[allow(unreachable_patterns)]
43201 _ => return Err(Error::Invalid),
43202 };
43203 Ok(v)
43204 })
43205 }
43206}
43207
43208impl WriteXdr for BeginSponsoringFutureReservesResult {
43209 #[cfg(feature = "std")]
43210 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43211 w.with_limited_depth(|w| {
43212 self.discriminant().write_xdr(w)?;
43213 #[allow(clippy::match_same_arms)]
43214 match self {
43215 Self::Success => ().write_xdr(w)?,
43216 Self::Malformed => ().write_xdr(w)?,
43217 Self::AlreadySponsored => ().write_xdr(w)?,
43218 Self::Recursive => ().write_xdr(w)?,
43219 };
43220 Ok(())
43221 })
43222 }
43223}
43224
43225#[cfg_attr(feature = "alloc", derive(Default))]
43240#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43241#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43242#[cfg_attr(
43243 all(feature = "serde", feature = "alloc"),
43244 derive(serde::Serialize, serde::Deserialize),
43245 serde(rename_all = "snake_case")
43246)]
43247#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43248#[repr(i32)]
43249pub enum EndSponsoringFutureReservesResultCode {
43250 #[cfg_attr(feature = "alloc", default)]
43251 Success = 0,
43252 NotSponsored = -1,
43253}
43254
43255impl EndSponsoringFutureReservesResultCode {
43256 pub const VARIANTS: [EndSponsoringFutureReservesResultCode; 2] = [
43257 EndSponsoringFutureReservesResultCode::Success,
43258 EndSponsoringFutureReservesResultCode::NotSponsored,
43259 ];
43260 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "NotSponsored"];
43261
43262 #[must_use]
43263 pub const fn name(&self) -> &'static str {
43264 match self {
43265 Self::Success => "Success",
43266 Self::NotSponsored => "NotSponsored",
43267 }
43268 }
43269
43270 #[must_use]
43271 pub const fn variants() -> [EndSponsoringFutureReservesResultCode; 2] {
43272 Self::VARIANTS
43273 }
43274}
43275
43276impl Name for EndSponsoringFutureReservesResultCode {
43277 #[must_use]
43278 fn name(&self) -> &'static str {
43279 Self::name(self)
43280 }
43281}
43282
43283impl Variants<EndSponsoringFutureReservesResultCode> for EndSponsoringFutureReservesResultCode {
43284 fn variants() -> slice::Iter<'static, EndSponsoringFutureReservesResultCode> {
43285 Self::VARIANTS.iter()
43286 }
43287}
43288
43289impl Enum for EndSponsoringFutureReservesResultCode {}
43290
43291impl fmt::Display for EndSponsoringFutureReservesResultCode {
43292 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43293 f.write_str(self.name())
43294 }
43295}
43296
43297impl TryFrom<i32> for EndSponsoringFutureReservesResultCode {
43298 type Error = Error;
43299
43300 fn try_from(i: i32) -> Result<Self, Error> {
43301 let e = match i {
43302 0 => EndSponsoringFutureReservesResultCode::Success,
43303 -1 => EndSponsoringFutureReservesResultCode::NotSponsored,
43304 #[allow(unreachable_patterns)]
43305 _ => return Err(Error::Invalid),
43306 };
43307 Ok(e)
43308 }
43309}
43310
43311impl From<EndSponsoringFutureReservesResultCode> for i32 {
43312 #[must_use]
43313 fn from(e: EndSponsoringFutureReservesResultCode) -> Self {
43314 e as Self
43315 }
43316}
43317
43318impl ReadXdr for EndSponsoringFutureReservesResultCode {
43319 #[cfg(feature = "std")]
43320 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43321 r.with_limited_depth(|r| {
43322 let e = i32::read_xdr(r)?;
43323 let v: Self = e.try_into()?;
43324 Ok(v)
43325 })
43326 }
43327}
43328
43329impl WriteXdr for EndSponsoringFutureReservesResultCode {
43330 #[cfg(feature = "std")]
43331 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43332 w.with_limited_depth(|w| {
43333 let i: i32 = (*self).into();
43334 i.write_xdr(w)
43335 })
43336 }
43337}
43338
43339#[cfg_eval::cfg_eval]
43354#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43355#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43356#[cfg_attr(
43357 all(feature = "serde", feature = "alloc"),
43358 serde_with::serde_as,
43359 derive(serde::Serialize, serde::Deserialize),
43360 serde(rename_all = "snake_case")
43361)]
43362#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43363#[allow(clippy::large_enum_variant)]
43364pub enum EndSponsoringFutureReservesResult {
43365 Success,
43366 NotSponsored,
43367}
43368
43369#[cfg(feature = "alloc")]
43370impl Default for EndSponsoringFutureReservesResult {
43371 fn default() -> Self {
43372 Self::Success
43373 }
43374}
43375
43376impl EndSponsoringFutureReservesResult {
43377 pub const VARIANTS: [EndSponsoringFutureReservesResultCode; 2] = [
43378 EndSponsoringFutureReservesResultCode::Success,
43379 EndSponsoringFutureReservesResultCode::NotSponsored,
43380 ];
43381 pub const VARIANTS_STR: [&'static str; 2] = ["Success", "NotSponsored"];
43382
43383 #[must_use]
43384 pub const fn name(&self) -> &'static str {
43385 match self {
43386 Self::Success => "Success",
43387 Self::NotSponsored => "NotSponsored",
43388 }
43389 }
43390
43391 #[must_use]
43392 pub const fn discriminant(&self) -> EndSponsoringFutureReservesResultCode {
43393 #[allow(clippy::match_same_arms)]
43394 match self {
43395 Self::Success => EndSponsoringFutureReservesResultCode::Success,
43396 Self::NotSponsored => EndSponsoringFutureReservesResultCode::NotSponsored,
43397 }
43398 }
43399
43400 #[must_use]
43401 pub const fn variants() -> [EndSponsoringFutureReservesResultCode; 2] {
43402 Self::VARIANTS
43403 }
43404}
43405
43406impl Name for EndSponsoringFutureReservesResult {
43407 #[must_use]
43408 fn name(&self) -> &'static str {
43409 Self::name(self)
43410 }
43411}
43412
43413impl Discriminant<EndSponsoringFutureReservesResultCode> for EndSponsoringFutureReservesResult {
43414 #[must_use]
43415 fn discriminant(&self) -> EndSponsoringFutureReservesResultCode {
43416 Self::discriminant(self)
43417 }
43418}
43419
43420impl Variants<EndSponsoringFutureReservesResultCode> for EndSponsoringFutureReservesResult {
43421 fn variants() -> slice::Iter<'static, EndSponsoringFutureReservesResultCode> {
43422 Self::VARIANTS.iter()
43423 }
43424}
43425
43426impl Union<EndSponsoringFutureReservesResultCode> for EndSponsoringFutureReservesResult {}
43427
43428impl ReadXdr for EndSponsoringFutureReservesResult {
43429 #[cfg(feature = "std")]
43430 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43431 r.with_limited_depth(|r| {
43432 let dv: EndSponsoringFutureReservesResultCode =
43433 <EndSponsoringFutureReservesResultCode as ReadXdr>::read_xdr(r)?;
43434 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
43435 let v = match dv {
43436 EndSponsoringFutureReservesResultCode::Success => Self::Success,
43437 EndSponsoringFutureReservesResultCode::NotSponsored => Self::NotSponsored,
43438 #[allow(unreachable_patterns)]
43439 _ => return Err(Error::Invalid),
43440 };
43441 Ok(v)
43442 })
43443 }
43444}
43445
43446impl WriteXdr for EndSponsoringFutureReservesResult {
43447 #[cfg(feature = "std")]
43448 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43449 w.with_limited_depth(|w| {
43450 self.discriminant().write_xdr(w)?;
43451 #[allow(clippy::match_same_arms)]
43452 match self {
43453 Self::Success => ().write_xdr(w)?,
43454 Self::NotSponsored => ().write_xdr(w)?,
43455 };
43456 Ok(())
43457 })
43458 }
43459}
43460
43461#[cfg_attr(feature = "alloc", derive(Default))]
43480#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43481#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43482#[cfg_attr(
43483 all(feature = "serde", feature = "alloc"),
43484 derive(serde::Serialize, serde::Deserialize),
43485 serde(rename_all = "snake_case")
43486)]
43487#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43488#[repr(i32)]
43489pub enum RevokeSponsorshipResultCode {
43490 #[cfg_attr(feature = "alloc", default)]
43491 Success = 0,
43492 DoesNotExist = -1,
43493 NotSponsor = -2,
43494 LowReserve = -3,
43495 OnlyTransferable = -4,
43496 Malformed = -5,
43497}
43498
43499impl RevokeSponsorshipResultCode {
43500 pub const VARIANTS: [RevokeSponsorshipResultCode; 6] = [
43501 RevokeSponsorshipResultCode::Success,
43502 RevokeSponsorshipResultCode::DoesNotExist,
43503 RevokeSponsorshipResultCode::NotSponsor,
43504 RevokeSponsorshipResultCode::LowReserve,
43505 RevokeSponsorshipResultCode::OnlyTransferable,
43506 RevokeSponsorshipResultCode::Malformed,
43507 ];
43508 pub const VARIANTS_STR: [&'static str; 6] = [
43509 "Success",
43510 "DoesNotExist",
43511 "NotSponsor",
43512 "LowReserve",
43513 "OnlyTransferable",
43514 "Malformed",
43515 ];
43516
43517 #[must_use]
43518 pub const fn name(&self) -> &'static str {
43519 match self {
43520 Self::Success => "Success",
43521 Self::DoesNotExist => "DoesNotExist",
43522 Self::NotSponsor => "NotSponsor",
43523 Self::LowReserve => "LowReserve",
43524 Self::OnlyTransferable => "OnlyTransferable",
43525 Self::Malformed => "Malformed",
43526 }
43527 }
43528
43529 #[must_use]
43530 pub const fn variants() -> [RevokeSponsorshipResultCode; 6] {
43531 Self::VARIANTS
43532 }
43533}
43534
43535impl Name for RevokeSponsorshipResultCode {
43536 #[must_use]
43537 fn name(&self) -> &'static str {
43538 Self::name(self)
43539 }
43540}
43541
43542impl Variants<RevokeSponsorshipResultCode> for RevokeSponsorshipResultCode {
43543 fn variants() -> slice::Iter<'static, RevokeSponsorshipResultCode> {
43544 Self::VARIANTS.iter()
43545 }
43546}
43547
43548impl Enum for RevokeSponsorshipResultCode {}
43549
43550impl fmt::Display for RevokeSponsorshipResultCode {
43551 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43552 f.write_str(self.name())
43553 }
43554}
43555
43556impl TryFrom<i32> for RevokeSponsorshipResultCode {
43557 type Error = Error;
43558
43559 fn try_from(i: i32) -> Result<Self, Error> {
43560 let e = match i {
43561 0 => RevokeSponsorshipResultCode::Success,
43562 -1 => RevokeSponsorshipResultCode::DoesNotExist,
43563 -2 => RevokeSponsorshipResultCode::NotSponsor,
43564 -3 => RevokeSponsorshipResultCode::LowReserve,
43565 -4 => RevokeSponsorshipResultCode::OnlyTransferable,
43566 -5 => RevokeSponsorshipResultCode::Malformed,
43567 #[allow(unreachable_patterns)]
43568 _ => return Err(Error::Invalid),
43569 };
43570 Ok(e)
43571 }
43572}
43573
43574impl From<RevokeSponsorshipResultCode> for i32 {
43575 #[must_use]
43576 fn from(e: RevokeSponsorshipResultCode) -> Self {
43577 e as Self
43578 }
43579}
43580
43581impl ReadXdr for RevokeSponsorshipResultCode {
43582 #[cfg(feature = "std")]
43583 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43584 r.with_limited_depth(|r| {
43585 let e = i32::read_xdr(r)?;
43586 let v: Self = e.try_into()?;
43587 Ok(v)
43588 })
43589 }
43590}
43591
43592impl WriteXdr for RevokeSponsorshipResultCode {
43593 #[cfg(feature = "std")]
43594 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43595 w.with_limited_depth(|w| {
43596 let i: i32 = (*self).into();
43597 i.write_xdr(w)
43598 })
43599 }
43600}
43601
43602#[cfg_eval::cfg_eval]
43620#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43621#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43622#[cfg_attr(
43623 all(feature = "serde", feature = "alloc"),
43624 serde_with::serde_as,
43625 derive(serde::Serialize, serde::Deserialize),
43626 serde(rename_all = "snake_case")
43627)]
43628#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43629#[allow(clippy::large_enum_variant)]
43630pub enum RevokeSponsorshipResult {
43631 Success,
43632 DoesNotExist,
43633 NotSponsor,
43634 LowReserve,
43635 OnlyTransferable,
43636 Malformed,
43637}
43638
43639#[cfg(feature = "alloc")]
43640impl Default for RevokeSponsorshipResult {
43641 fn default() -> Self {
43642 Self::Success
43643 }
43644}
43645
43646impl RevokeSponsorshipResult {
43647 pub const VARIANTS: [RevokeSponsorshipResultCode; 6] = [
43648 RevokeSponsorshipResultCode::Success,
43649 RevokeSponsorshipResultCode::DoesNotExist,
43650 RevokeSponsorshipResultCode::NotSponsor,
43651 RevokeSponsorshipResultCode::LowReserve,
43652 RevokeSponsorshipResultCode::OnlyTransferable,
43653 RevokeSponsorshipResultCode::Malformed,
43654 ];
43655 pub const VARIANTS_STR: [&'static str; 6] = [
43656 "Success",
43657 "DoesNotExist",
43658 "NotSponsor",
43659 "LowReserve",
43660 "OnlyTransferable",
43661 "Malformed",
43662 ];
43663
43664 #[must_use]
43665 pub const fn name(&self) -> &'static str {
43666 match self {
43667 Self::Success => "Success",
43668 Self::DoesNotExist => "DoesNotExist",
43669 Self::NotSponsor => "NotSponsor",
43670 Self::LowReserve => "LowReserve",
43671 Self::OnlyTransferable => "OnlyTransferable",
43672 Self::Malformed => "Malformed",
43673 }
43674 }
43675
43676 #[must_use]
43677 pub const fn discriminant(&self) -> RevokeSponsorshipResultCode {
43678 #[allow(clippy::match_same_arms)]
43679 match self {
43680 Self::Success => RevokeSponsorshipResultCode::Success,
43681 Self::DoesNotExist => RevokeSponsorshipResultCode::DoesNotExist,
43682 Self::NotSponsor => RevokeSponsorshipResultCode::NotSponsor,
43683 Self::LowReserve => RevokeSponsorshipResultCode::LowReserve,
43684 Self::OnlyTransferable => RevokeSponsorshipResultCode::OnlyTransferable,
43685 Self::Malformed => RevokeSponsorshipResultCode::Malformed,
43686 }
43687 }
43688
43689 #[must_use]
43690 pub const fn variants() -> [RevokeSponsorshipResultCode; 6] {
43691 Self::VARIANTS
43692 }
43693}
43694
43695impl Name for RevokeSponsorshipResult {
43696 #[must_use]
43697 fn name(&self) -> &'static str {
43698 Self::name(self)
43699 }
43700}
43701
43702impl Discriminant<RevokeSponsorshipResultCode> for RevokeSponsorshipResult {
43703 #[must_use]
43704 fn discriminant(&self) -> RevokeSponsorshipResultCode {
43705 Self::discriminant(self)
43706 }
43707}
43708
43709impl Variants<RevokeSponsorshipResultCode> for RevokeSponsorshipResult {
43710 fn variants() -> slice::Iter<'static, RevokeSponsorshipResultCode> {
43711 Self::VARIANTS.iter()
43712 }
43713}
43714
43715impl Union<RevokeSponsorshipResultCode> for RevokeSponsorshipResult {}
43716
43717impl ReadXdr for RevokeSponsorshipResult {
43718 #[cfg(feature = "std")]
43719 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43720 r.with_limited_depth(|r| {
43721 let dv: RevokeSponsorshipResultCode =
43722 <RevokeSponsorshipResultCode as ReadXdr>::read_xdr(r)?;
43723 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
43724 let v = match dv {
43725 RevokeSponsorshipResultCode::Success => Self::Success,
43726 RevokeSponsorshipResultCode::DoesNotExist => Self::DoesNotExist,
43727 RevokeSponsorshipResultCode::NotSponsor => Self::NotSponsor,
43728 RevokeSponsorshipResultCode::LowReserve => Self::LowReserve,
43729 RevokeSponsorshipResultCode::OnlyTransferable => Self::OnlyTransferable,
43730 RevokeSponsorshipResultCode::Malformed => Self::Malformed,
43731 #[allow(unreachable_patterns)]
43732 _ => return Err(Error::Invalid),
43733 };
43734 Ok(v)
43735 })
43736 }
43737}
43738
43739impl WriteXdr for RevokeSponsorshipResult {
43740 #[cfg(feature = "std")]
43741 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43742 w.with_limited_depth(|w| {
43743 self.discriminant().write_xdr(w)?;
43744 #[allow(clippy::match_same_arms)]
43745 match self {
43746 Self::Success => ().write_xdr(w)?,
43747 Self::DoesNotExist => ().write_xdr(w)?,
43748 Self::NotSponsor => ().write_xdr(w)?,
43749 Self::LowReserve => ().write_xdr(w)?,
43750 Self::OnlyTransferable => ().write_xdr(w)?,
43751 Self::Malformed => ().write_xdr(w)?,
43752 };
43753 Ok(())
43754 })
43755 }
43756}
43757
43758#[cfg_attr(feature = "alloc", derive(Default))]
43776#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43777#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43778#[cfg_attr(
43779 all(feature = "serde", feature = "alloc"),
43780 derive(serde::Serialize, serde::Deserialize),
43781 serde(rename_all = "snake_case")
43782)]
43783#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43784#[repr(i32)]
43785pub enum ClawbackResultCode {
43786 #[cfg_attr(feature = "alloc", default)]
43787 Success = 0,
43788 Malformed = -1,
43789 NotClawbackEnabled = -2,
43790 NoTrust = -3,
43791 Underfunded = -4,
43792}
43793
43794impl ClawbackResultCode {
43795 pub const VARIANTS: [ClawbackResultCode; 5] = [
43796 ClawbackResultCode::Success,
43797 ClawbackResultCode::Malformed,
43798 ClawbackResultCode::NotClawbackEnabled,
43799 ClawbackResultCode::NoTrust,
43800 ClawbackResultCode::Underfunded,
43801 ];
43802 pub const VARIANTS_STR: [&'static str; 5] = [
43803 "Success",
43804 "Malformed",
43805 "NotClawbackEnabled",
43806 "NoTrust",
43807 "Underfunded",
43808 ];
43809
43810 #[must_use]
43811 pub const fn name(&self) -> &'static str {
43812 match self {
43813 Self::Success => "Success",
43814 Self::Malformed => "Malformed",
43815 Self::NotClawbackEnabled => "NotClawbackEnabled",
43816 Self::NoTrust => "NoTrust",
43817 Self::Underfunded => "Underfunded",
43818 }
43819 }
43820
43821 #[must_use]
43822 pub const fn variants() -> [ClawbackResultCode; 5] {
43823 Self::VARIANTS
43824 }
43825}
43826
43827impl Name for ClawbackResultCode {
43828 #[must_use]
43829 fn name(&self) -> &'static str {
43830 Self::name(self)
43831 }
43832}
43833
43834impl Variants<ClawbackResultCode> for ClawbackResultCode {
43835 fn variants() -> slice::Iter<'static, ClawbackResultCode> {
43836 Self::VARIANTS.iter()
43837 }
43838}
43839
43840impl Enum for ClawbackResultCode {}
43841
43842impl fmt::Display for ClawbackResultCode {
43843 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43844 f.write_str(self.name())
43845 }
43846}
43847
43848impl TryFrom<i32> for ClawbackResultCode {
43849 type Error = Error;
43850
43851 fn try_from(i: i32) -> Result<Self, Error> {
43852 let e = match i {
43853 0 => ClawbackResultCode::Success,
43854 -1 => ClawbackResultCode::Malformed,
43855 -2 => ClawbackResultCode::NotClawbackEnabled,
43856 -3 => ClawbackResultCode::NoTrust,
43857 -4 => ClawbackResultCode::Underfunded,
43858 #[allow(unreachable_patterns)]
43859 _ => return Err(Error::Invalid),
43860 };
43861 Ok(e)
43862 }
43863}
43864
43865impl From<ClawbackResultCode> for i32 {
43866 #[must_use]
43867 fn from(e: ClawbackResultCode) -> Self {
43868 e as Self
43869 }
43870}
43871
43872impl ReadXdr for ClawbackResultCode {
43873 #[cfg(feature = "std")]
43874 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
43875 r.with_limited_depth(|r| {
43876 let e = i32::read_xdr(r)?;
43877 let v: Self = e.try_into()?;
43878 Ok(v)
43879 })
43880 }
43881}
43882
43883impl WriteXdr for ClawbackResultCode {
43884 #[cfg(feature = "std")]
43885 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
43886 w.with_limited_depth(|w| {
43887 let i: i32 = (*self).into();
43888 i.write_xdr(w)
43889 })
43890 }
43891}
43892
43893#[cfg_eval::cfg_eval]
43910#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
43911#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
43912#[cfg_attr(
43913 all(feature = "serde", feature = "alloc"),
43914 serde_with::serde_as,
43915 derive(serde::Serialize, serde::Deserialize),
43916 serde(rename_all = "snake_case")
43917)]
43918#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
43919#[allow(clippy::large_enum_variant)]
43920pub enum ClawbackResult {
43921 Success,
43922 Malformed,
43923 NotClawbackEnabled,
43924 NoTrust,
43925 Underfunded,
43926}
43927
43928#[cfg(feature = "alloc")]
43929impl Default for ClawbackResult {
43930 fn default() -> Self {
43931 Self::Success
43932 }
43933}
43934
43935impl ClawbackResult {
43936 pub const VARIANTS: [ClawbackResultCode; 5] = [
43937 ClawbackResultCode::Success,
43938 ClawbackResultCode::Malformed,
43939 ClawbackResultCode::NotClawbackEnabled,
43940 ClawbackResultCode::NoTrust,
43941 ClawbackResultCode::Underfunded,
43942 ];
43943 pub const VARIANTS_STR: [&'static str; 5] = [
43944 "Success",
43945 "Malformed",
43946 "NotClawbackEnabled",
43947 "NoTrust",
43948 "Underfunded",
43949 ];
43950
43951 #[must_use]
43952 pub const fn name(&self) -> &'static str {
43953 match self {
43954 Self::Success => "Success",
43955 Self::Malformed => "Malformed",
43956 Self::NotClawbackEnabled => "NotClawbackEnabled",
43957 Self::NoTrust => "NoTrust",
43958 Self::Underfunded => "Underfunded",
43959 }
43960 }
43961
43962 #[must_use]
43963 pub const fn discriminant(&self) -> ClawbackResultCode {
43964 #[allow(clippy::match_same_arms)]
43965 match self {
43966 Self::Success => ClawbackResultCode::Success,
43967 Self::Malformed => ClawbackResultCode::Malformed,
43968 Self::NotClawbackEnabled => ClawbackResultCode::NotClawbackEnabled,
43969 Self::NoTrust => ClawbackResultCode::NoTrust,
43970 Self::Underfunded => ClawbackResultCode::Underfunded,
43971 }
43972 }
43973
43974 #[must_use]
43975 pub const fn variants() -> [ClawbackResultCode; 5] {
43976 Self::VARIANTS
43977 }
43978}
43979
43980impl Name for ClawbackResult {
43981 #[must_use]
43982 fn name(&self) -> &'static str {
43983 Self::name(self)
43984 }
43985}
43986
43987impl Discriminant<ClawbackResultCode> for ClawbackResult {
43988 #[must_use]
43989 fn discriminant(&self) -> ClawbackResultCode {
43990 Self::discriminant(self)
43991 }
43992}
43993
43994impl Variants<ClawbackResultCode> for ClawbackResult {
43995 fn variants() -> slice::Iter<'static, ClawbackResultCode> {
43996 Self::VARIANTS.iter()
43997 }
43998}
43999
44000impl Union<ClawbackResultCode> for ClawbackResult {}
44001
44002impl ReadXdr for ClawbackResult {
44003 #[cfg(feature = "std")]
44004 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44005 r.with_limited_depth(|r| {
44006 let dv: ClawbackResultCode = <ClawbackResultCode as ReadXdr>::read_xdr(r)?;
44007 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
44008 let v = match dv {
44009 ClawbackResultCode::Success => Self::Success,
44010 ClawbackResultCode::Malformed => Self::Malformed,
44011 ClawbackResultCode::NotClawbackEnabled => Self::NotClawbackEnabled,
44012 ClawbackResultCode::NoTrust => Self::NoTrust,
44013 ClawbackResultCode::Underfunded => Self::Underfunded,
44014 #[allow(unreachable_patterns)]
44015 _ => return Err(Error::Invalid),
44016 };
44017 Ok(v)
44018 })
44019 }
44020}
44021
44022impl WriteXdr for ClawbackResult {
44023 #[cfg(feature = "std")]
44024 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44025 w.with_limited_depth(|w| {
44026 self.discriminant().write_xdr(w)?;
44027 #[allow(clippy::match_same_arms)]
44028 match self {
44029 Self::Success => ().write_xdr(w)?,
44030 Self::Malformed => ().write_xdr(w)?,
44031 Self::NotClawbackEnabled => ().write_xdr(w)?,
44032 Self::NoTrust => ().write_xdr(w)?,
44033 Self::Underfunded => ().write_xdr(w)?,
44034 };
44035 Ok(())
44036 })
44037 }
44038}
44039
44040#[cfg_attr(feature = "alloc", derive(Default))]
44057#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44058#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44059#[cfg_attr(
44060 all(feature = "serde", feature = "alloc"),
44061 derive(serde::Serialize, serde::Deserialize),
44062 serde(rename_all = "snake_case")
44063)]
44064#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44065#[repr(i32)]
44066pub enum ClawbackClaimableBalanceResultCode {
44067 #[cfg_attr(feature = "alloc", default)]
44068 Success = 0,
44069 DoesNotExist = -1,
44070 NotIssuer = -2,
44071 NotClawbackEnabled = -3,
44072}
44073
44074impl ClawbackClaimableBalanceResultCode {
44075 pub const VARIANTS: [ClawbackClaimableBalanceResultCode; 4] = [
44076 ClawbackClaimableBalanceResultCode::Success,
44077 ClawbackClaimableBalanceResultCode::DoesNotExist,
44078 ClawbackClaimableBalanceResultCode::NotIssuer,
44079 ClawbackClaimableBalanceResultCode::NotClawbackEnabled,
44080 ];
44081 pub const VARIANTS_STR: [&'static str; 4] =
44082 ["Success", "DoesNotExist", "NotIssuer", "NotClawbackEnabled"];
44083
44084 #[must_use]
44085 pub const fn name(&self) -> &'static str {
44086 match self {
44087 Self::Success => "Success",
44088 Self::DoesNotExist => "DoesNotExist",
44089 Self::NotIssuer => "NotIssuer",
44090 Self::NotClawbackEnabled => "NotClawbackEnabled",
44091 }
44092 }
44093
44094 #[must_use]
44095 pub const fn variants() -> [ClawbackClaimableBalanceResultCode; 4] {
44096 Self::VARIANTS
44097 }
44098}
44099
44100impl Name for ClawbackClaimableBalanceResultCode {
44101 #[must_use]
44102 fn name(&self) -> &'static str {
44103 Self::name(self)
44104 }
44105}
44106
44107impl Variants<ClawbackClaimableBalanceResultCode> for ClawbackClaimableBalanceResultCode {
44108 fn variants() -> slice::Iter<'static, ClawbackClaimableBalanceResultCode> {
44109 Self::VARIANTS.iter()
44110 }
44111}
44112
44113impl Enum for ClawbackClaimableBalanceResultCode {}
44114
44115impl fmt::Display for ClawbackClaimableBalanceResultCode {
44116 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44117 f.write_str(self.name())
44118 }
44119}
44120
44121impl TryFrom<i32> for ClawbackClaimableBalanceResultCode {
44122 type Error = Error;
44123
44124 fn try_from(i: i32) -> Result<Self, Error> {
44125 let e = match i {
44126 0 => ClawbackClaimableBalanceResultCode::Success,
44127 -1 => ClawbackClaimableBalanceResultCode::DoesNotExist,
44128 -2 => ClawbackClaimableBalanceResultCode::NotIssuer,
44129 -3 => ClawbackClaimableBalanceResultCode::NotClawbackEnabled,
44130 #[allow(unreachable_patterns)]
44131 _ => return Err(Error::Invalid),
44132 };
44133 Ok(e)
44134 }
44135}
44136
44137impl From<ClawbackClaimableBalanceResultCode> for i32 {
44138 #[must_use]
44139 fn from(e: ClawbackClaimableBalanceResultCode) -> Self {
44140 e as Self
44141 }
44142}
44143
44144impl ReadXdr for ClawbackClaimableBalanceResultCode {
44145 #[cfg(feature = "std")]
44146 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44147 r.with_limited_depth(|r| {
44148 let e = i32::read_xdr(r)?;
44149 let v: Self = e.try_into()?;
44150 Ok(v)
44151 })
44152 }
44153}
44154
44155impl WriteXdr for ClawbackClaimableBalanceResultCode {
44156 #[cfg(feature = "std")]
44157 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44158 w.with_limited_depth(|w| {
44159 let i: i32 = (*self).into();
44160 i.write_xdr(w)
44161 })
44162 }
44163}
44164
44165#[cfg_eval::cfg_eval]
44182#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44183#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44184#[cfg_attr(
44185 all(feature = "serde", feature = "alloc"),
44186 serde_with::serde_as,
44187 derive(serde::Serialize, serde::Deserialize),
44188 serde(rename_all = "snake_case")
44189)]
44190#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44191#[allow(clippy::large_enum_variant)]
44192pub enum ClawbackClaimableBalanceResult {
44193 Success,
44194 DoesNotExist,
44195 NotIssuer,
44196 NotClawbackEnabled,
44197}
44198
44199#[cfg(feature = "alloc")]
44200impl Default for ClawbackClaimableBalanceResult {
44201 fn default() -> Self {
44202 Self::Success
44203 }
44204}
44205
44206impl ClawbackClaimableBalanceResult {
44207 pub const VARIANTS: [ClawbackClaimableBalanceResultCode; 4] = [
44208 ClawbackClaimableBalanceResultCode::Success,
44209 ClawbackClaimableBalanceResultCode::DoesNotExist,
44210 ClawbackClaimableBalanceResultCode::NotIssuer,
44211 ClawbackClaimableBalanceResultCode::NotClawbackEnabled,
44212 ];
44213 pub const VARIANTS_STR: [&'static str; 4] =
44214 ["Success", "DoesNotExist", "NotIssuer", "NotClawbackEnabled"];
44215
44216 #[must_use]
44217 pub const fn name(&self) -> &'static str {
44218 match self {
44219 Self::Success => "Success",
44220 Self::DoesNotExist => "DoesNotExist",
44221 Self::NotIssuer => "NotIssuer",
44222 Self::NotClawbackEnabled => "NotClawbackEnabled",
44223 }
44224 }
44225
44226 #[must_use]
44227 pub const fn discriminant(&self) -> ClawbackClaimableBalanceResultCode {
44228 #[allow(clippy::match_same_arms)]
44229 match self {
44230 Self::Success => ClawbackClaimableBalanceResultCode::Success,
44231 Self::DoesNotExist => ClawbackClaimableBalanceResultCode::DoesNotExist,
44232 Self::NotIssuer => ClawbackClaimableBalanceResultCode::NotIssuer,
44233 Self::NotClawbackEnabled => ClawbackClaimableBalanceResultCode::NotClawbackEnabled,
44234 }
44235 }
44236
44237 #[must_use]
44238 pub const fn variants() -> [ClawbackClaimableBalanceResultCode; 4] {
44239 Self::VARIANTS
44240 }
44241}
44242
44243impl Name for ClawbackClaimableBalanceResult {
44244 #[must_use]
44245 fn name(&self) -> &'static str {
44246 Self::name(self)
44247 }
44248}
44249
44250impl Discriminant<ClawbackClaimableBalanceResultCode> for ClawbackClaimableBalanceResult {
44251 #[must_use]
44252 fn discriminant(&self) -> ClawbackClaimableBalanceResultCode {
44253 Self::discriminant(self)
44254 }
44255}
44256
44257impl Variants<ClawbackClaimableBalanceResultCode> for ClawbackClaimableBalanceResult {
44258 fn variants() -> slice::Iter<'static, ClawbackClaimableBalanceResultCode> {
44259 Self::VARIANTS.iter()
44260 }
44261}
44262
44263impl Union<ClawbackClaimableBalanceResultCode> for ClawbackClaimableBalanceResult {}
44264
44265impl ReadXdr for ClawbackClaimableBalanceResult {
44266 #[cfg(feature = "std")]
44267 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44268 r.with_limited_depth(|r| {
44269 let dv: ClawbackClaimableBalanceResultCode =
44270 <ClawbackClaimableBalanceResultCode as ReadXdr>::read_xdr(r)?;
44271 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
44272 let v = match dv {
44273 ClawbackClaimableBalanceResultCode::Success => Self::Success,
44274 ClawbackClaimableBalanceResultCode::DoesNotExist => Self::DoesNotExist,
44275 ClawbackClaimableBalanceResultCode::NotIssuer => Self::NotIssuer,
44276 ClawbackClaimableBalanceResultCode::NotClawbackEnabled => Self::NotClawbackEnabled,
44277 #[allow(unreachable_patterns)]
44278 _ => return Err(Error::Invalid),
44279 };
44280 Ok(v)
44281 })
44282 }
44283}
44284
44285impl WriteXdr for ClawbackClaimableBalanceResult {
44286 #[cfg(feature = "std")]
44287 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44288 w.with_limited_depth(|w| {
44289 self.discriminant().write_xdr(w)?;
44290 #[allow(clippy::match_same_arms)]
44291 match self {
44292 Self::Success => ().write_xdr(w)?,
44293 Self::DoesNotExist => ().write_xdr(w)?,
44294 Self::NotIssuer => ().write_xdr(w)?,
44295 Self::NotClawbackEnabled => ().write_xdr(w)?,
44296 };
44297 Ok(())
44298 })
44299 }
44300}
44301
44302#[cfg_attr(feature = "alloc", derive(Default))]
44322#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44323#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44324#[cfg_attr(
44325 all(feature = "serde", feature = "alloc"),
44326 derive(serde::Serialize, serde::Deserialize),
44327 serde(rename_all = "snake_case")
44328)]
44329#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44330#[repr(i32)]
44331pub enum SetTrustLineFlagsResultCode {
44332 #[cfg_attr(feature = "alloc", default)]
44333 Success = 0,
44334 Malformed = -1,
44335 NoTrustLine = -2,
44336 CantRevoke = -3,
44337 InvalidState = -4,
44338 LowReserve = -5,
44339}
44340
44341impl SetTrustLineFlagsResultCode {
44342 pub const VARIANTS: [SetTrustLineFlagsResultCode; 6] = [
44343 SetTrustLineFlagsResultCode::Success,
44344 SetTrustLineFlagsResultCode::Malformed,
44345 SetTrustLineFlagsResultCode::NoTrustLine,
44346 SetTrustLineFlagsResultCode::CantRevoke,
44347 SetTrustLineFlagsResultCode::InvalidState,
44348 SetTrustLineFlagsResultCode::LowReserve,
44349 ];
44350 pub const VARIANTS_STR: [&'static str; 6] = [
44351 "Success",
44352 "Malformed",
44353 "NoTrustLine",
44354 "CantRevoke",
44355 "InvalidState",
44356 "LowReserve",
44357 ];
44358
44359 #[must_use]
44360 pub const fn name(&self) -> &'static str {
44361 match self {
44362 Self::Success => "Success",
44363 Self::Malformed => "Malformed",
44364 Self::NoTrustLine => "NoTrustLine",
44365 Self::CantRevoke => "CantRevoke",
44366 Self::InvalidState => "InvalidState",
44367 Self::LowReserve => "LowReserve",
44368 }
44369 }
44370
44371 #[must_use]
44372 pub const fn variants() -> [SetTrustLineFlagsResultCode; 6] {
44373 Self::VARIANTS
44374 }
44375}
44376
44377impl Name for SetTrustLineFlagsResultCode {
44378 #[must_use]
44379 fn name(&self) -> &'static str {
44380 Self::name(self)
44381 }
44382}
44383
44384impl Variants<SetTrustLineFlagsResultCode> for SetTrustLineFlagsResultCode {
44385 fn variants() -> slice::Iter<'static, SetTrustLineFlagsResultCode> {
44386 Self::VARIANTS.iter()
44387 }
44388}
44389
44390impl Enum for SetTrustLineFlagsResultCode {}
44391
44392impl fmt::Display for SetTrustLineFlagsResultCode {
44393 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44394 f.write_str(self.name())
44395 }
44396}
44397
44398impl TryFrom<i32> for SetTrustLineFlagsResultCode {
44399 type Error = Error;
44400
44401 fn try_from(i: i32) -> Result<Self, Error> {
44402 let e = match i {
44403 0 => SetTrustLineFlagsResultCode::Success,
44404 -1 => SetTrustLineFlagsResultCode::Malformed,
44405 -2 => SetTrustLineFlagsResultCode::NoTrustLine,
44406 -3 => SetTrustLineFlagsResultCode::CantRevoke,
44407 -4 => SetTrustLineFlagsResultCode::InvalidState,
44408 -5 => SetTrustLineFlagsResultCode::LowReserve,
44409 #[allow(unreachable_patterns)]
44410 _ => return Err(Error::Invalid),
44411 };
44412 Ok(e)
44413 }
44414}
44415
44416impl From<SetTrustLineFlagsResultCode> for i32 {
44417 #[must_use]
44418 fn from(e: SetTrustLineFlagsResultCode) -> Self {
44419 e as Self
44420 }
44421}
44422
44423impl ReadXdr for SetTrustLineFlagsResultCode {
44424 #[cfg(feature = "std")]
44425 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44426 r.with_limited_depth(|r| {
44427 let e = i32::read_xdr(r)?;
44428 let v: Self = e.try_into()?;
44429 Ok(v)
44430 })
44431 }
44432}
44433
44434impl WriteXdr for SetTrustLineFlagsResultCode {
44435 #[cfg(feature = "std")]
44436 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44437 w.with_limited_depth(|w| {
44438 let i: i32 = (*self).into();
44439 i.write_xdr(w)
44440 })
44441 }
44442}
44443
44444#[cfg_eval::cfg_eval]
44462#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44463#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44464#[cfg_attr(
44465 all(feature = "serde", feature = "alloc"),
44466 serde_with::serde_as,
44467 derive(serde::Serialize, serde::Deserialize),
44468 serde(rename_all = "snake_case")
44469)]
44470#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44471#[allow(clippy::large_enum_variant)]
44472pub enum SetTrustLineFlagsResult {
44473 Success,
44474 Malformed,
44475 NoTrustLine,
44476 CantRevoke,
44477 InvalidState,
44478 LowReserve,
44479}
44480
44481#[cfg(feature = "alloc")]
44482impl Default for SetTrustLineFlagsResult {
44483 fn default() -> Self {
44484 Self::Success
44485 }
44486}
44487
44488impl SetTrustLineFlagsResult {
44489 pub const VARIANTS: [SetTrustLineFlagsResultCode; 6] = [
44490 SetTrustLineFlagsResultCode::Success,
44491 SetTrustLineFlagsResultCode::Malformed,
44492 SetTrustLineFlagsResultCode::NoTrustLine,
44493 SetTrustLineFlagsResultCode::CantRevoke,
44494 SetTrustLineFlagsResultCode::InvalidState,
44495 SetTrustLineFlagsResultCode::LowReserve,
44496 ];
44497 pub const VARIANTS_STR: [&'static str; 6] = [
44498 "Success",
44499 "Malformed",
44500 "NoTrustLine",
44501 "CantRevoke",
44502 "InvalidState",
44503 "LowReserve",
44504 ];
44505
44506 #[must_use]
44507 pub const fn name(&self) -> &'static str {
44508 match self {
44509 Self::Success => "Success",
44510 Self::Malformed => "Malformed",
44511 Self::NoTrustLine => "NoTrustLine",
44512 Self::CantRevoke => "CantRevoke",
44513 Self::InvalidState => "InvalidState",
44514 Self::LowReserve => "LowReserve",
44515 }
44516 }
44517
44518 #[must_use]
44519 pub const fn discriminant(&self) -> SetTrustLineFlagsResultCode {
44520 #[allow(clippy::match_same_arms)]
44521 match self {
44522 Self::Success => SetTrustLineFlagsResultCode::Success,
44523 Self::Malformed => SetTrustLineFlagsResultCode::Malformed,
44524 Self::NoTrustLine => SetTrustLineFlagsResultCode::NoTrustLine,
44525 Self::CantRevoke => SetTrustLineFlagsResultCode::CantRevoke,
44526 Self::InvalidState => SetTrustLineFlagsResultCode::InvalidState,
44527 Self::LowReserve => SetTrustLineFlagsResultCode::LowReserve,
44528 }
44529 }
44530
44531 #[must_use]
44532 pub const fn variants() -> [SetTrustLineFlagsResultCode; 6] {
44533 Self::VARIANTS
44534 }
44535}
44536
44537impl Name for SetTrustLineFlagsResult {
44538 #[must_use]
44539 fn name(&self) -> &'static str {
44540 Self::name(self)
44541 }
44542}
44543
44544impl Discriminant<SetTrustLineFlagsResultCode> for SetTrustLineFlagsResult {
44545 #[must_use]
44546 fn discriminant(&self) -> SetTrustLineFlagsResultCode {
44547 Self::discriminant(self)
44548 }
44549}
44550
44551impl Variants<SetTrustLineFlagsResultCode> for SetTrustLineFlagsResult {
44552 fn variants() -> slice::Iter<'static, SetTrustLineFlagsResultCode> {
44553 Self::VARIANTS.iter()
44554 }
44555}
44556
44557impl Union<SetTrustLineFlagsResultCode> for SetTrustLineFlagsResult {}
44558
44559impl ReadXdr for SetTrustLineFlagsResult {
44560 #[cfg(feature = "std")]
44561 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44562 r.with_limited_depth(|r| {
44563 let dv: SetTrustLineFlagsResultCode =
44564 <SetTrustLineFlagsResultCode as ReadXdr>::read_xdr(r)?;
44565 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
44566 let v = match dv {
44567 SetTrustLineFlagsResultCode::Success => Self::Success,
44568 SetTrustLineFlagsResultCode::Malformed => Self::Malformed,
44569 SetTrustLineFlagsResultCode::NoTrustLine => Self::NoTrustLine,
44570 SetTrustLineFlagsResultCode::CantRevoke => Self::CantRevoke,
44571 SetTrustLineFlagsResultCode::InvalidState => Self::InvalidState,
44572 SetTrustLineFlagsResultCode::LowReserve => Self::LowReserve,
44573 #[allow(unreachable_patterns)]
44574 _ => return Err(Error::Invalid),
44575 };
44576 Ok(v)
44577 })
44578 }
44579}
44580
44581impl WriteXdr for SetTrustLineFlagsResult {
44582 #[cfg(feature = "std")]
44583 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44584 w.with_limited_depth(|w| {
44585 self.discriminant().write_xdr(w)?;
44586 #[allow(clippy::match_same_arms)]
44587 match self {
44588 Self::Success => ().write_xdr(w)?,
44589 Self::Malformed => ().write_xdr(w)?,
44590 Self::NoTrustLine => ().write_xdr(w)?,
44591 Self::CantRevoke => ().write_xdr(w)?,
44592 Self::InvalidState => ().write_xdr(w)?,
44593 Self::LowReserve => ().write_xdr(w)?,
44594 };
44595 Ok(())
44596 })
44597 }
44598}
44599
44600#[cfg_attr(feature = "alloc", derive(Default))]
44625#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44626#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44627#[cfg_attr(
44628 all(feature = "serde", feature = "alloc"),
44629 derive(serde::Serialize, serde::Deserialize),
44630 serde(rename_all = "snake_case")
44631)]
44632#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44633#[repr(i32)]
44634pub enum LiquidityPoolDepositResultCode {
44635 #[cfg_attr(feature = "alloc", default)]
44636 Success = 0,
44637 Malformed = -1,
44638 NoTrust = -2,
44639 NotAuthorized = -3,
44640 Underfunded = -4,
44641 LineFull = -5,
44642 BadPrice = -6,
44643 PoolFull = -7,
44644}
44645
44646impl LiquidityPoolDepositResultCode {
44647 pub const VARIANTS: [LiquidityPoolDepositResultCode; 8] = [
44648 LiquidityPoolDepositResultCode::Success,
44649 LiquidityPoolDepositResultCode::Malformed,
44650 LiquidityPoolDepositResultCode::NoTrust,
44651 LiquidityPoolDepositResultCode::NotAuthorized,
44652 LiquidityPoolDepositResultCode::Underfunded,
44653 LiquidityPoolDepositResultCode::LineFull,
44654 LiquidityPoolDepositResultCode::BadPrice,
44655 LiquidityPoolDepositResultCode::PoolFull,
44656 ];
44657 pub const VARIANTS_STR: [&'static str; 8] = [
44658 "Success",
44659 "Malformed",
44660 "NoTrust",
44661 "NotAuthorized",
44662 "Underfunded",
44663 "LineFull",
44664 "BadPrice",
44665 "PoolFull",
44666 ];
44667
44668 #[must_use]
44669 pub const fn name(&self) -> &'static str {
44670 match self {
44671 Self::Success => "Success",
44672 Self::Malformed => "Malformed",
44673 Self::NoTrust => "NoTrust",
44674 Self::NotAuthorized => "NotAuthorized",
44675 Self::Underfunded => "Underfunded",
44676 Self::LineFull => "LineFull",
44677 Self::BadPrice => "BadPrice",
44678 Self::PoolFull => "PoolFull",
44679 }
44680 }
44681
44682 #[must_use]
44683 pub const fn variants() -> [LiquidityPoolDepositResultCode; 8] {
44684 Self::VARIANTS
44685 }
44686}
44687
44688impl Name for LiquidityPoolDepositResultCode {
44689 #[must_use]
44690 fn name(&self) -> &'static str {
44691 Self::name(self)
44692 }
44693}
44694
44695impl Variants<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResultCode {
44696 fn variants() -> slice::Iter<'static, LiquidityPoolDepositResultCode> {
44697 Self::VARIANTS.iter()
44698 }
44699}
44700
44701impl Enum for LiquidityPoolDepositResultCode {}
44702
44703impl fmt::Display for LiquidityPoolDepositResultCode {
44704 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44705 f.write_str(self.name())
44706 }
44707}
44708
44709impl TryFrom<i32> for LiquidityPoolDepositResultCode {
44710 type Error = Error;
44711
44712 fn try_from(i: i32) -> Result<Self, Error> {
44713 let e = match i {
44714 0 => LiquidityPoolDepositResultCode::Success,
44715 -1 => LiquidityPoolDepositResultCode::Malformed,
44716 -2 => LiquidityPoolDepositResultCode::NoTrust,
44717 -3 => LiquidityPoolDepositResultCode::NotAuthorized,
44718 -4 => LiquidityPoolDepositResultCode::Underfunded,
44719 -5 => LiquidityPoolDepositResultCode::LineFull,
44720 -6 => LiquidityPoolDepositResultCode::BadPrice,
44721 -7 => LiquidityPoolDepositResultCode::PoolFull,
44722 #[allow(unreachable_patterns)]
44723 _ => return Err(Error::Invalid),
44724 };
44725 Ok(e)
44726 }
44727}
44728
44729impl From<LiquidityPoolDepositResultCode> for i32 {
44730 #[must_use]
44731 fn from(e: LiquidityPoolDepositResultCode) -> Self {
44732 e as Self
44733 }
44734}
44735
44736impl ReadXdr for LiquidityPoolDepositResultCode {
44737 #[cfg(feature = "std")]
44738 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44739 r.with_limited_depth(|r| {
44740 let e = i32::read_xdr(r)?;
44741 let v: Self = e.try_into()?;
44742 Ok(v)
44743 })
44744 }
44745}
44746
44747impl WriteXdr for LiquidityPoolDepositResultCode {
44748 #[cfg(feature = "std")]
44749 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44750 w.with_limited_depth(|w| {
44751 let i: i32 = (*self).into();
44752 i.write_xdr(w)
44753 })
44754 }
44755}
44756
44757#[cfg_eval::cfg_eval]
44777#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44778#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44779#[cfg_attr(
44780 all(feature = "serde", feature = "alloc"),
44781 serde_with::serde_as,
44782 derive(serde::Serialize, serde::Deserialize),
44783 serde(rename_all = "snake_case")
44784)]
44785#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44786#[allow(clippy::large_enum_variant)]
44787pub enum LiquidityPoolDepositResult {
44788 Success,
44789 Malformed,
44790 NoTrust,
44791 NotAuthorized,
44792 Underfunded,
44793 LineFull,
44794 BadPrice,
44795 PoolFull,
44796}
44797
44798#[cfg(feature = "alloc")]
44799impl Default for LiquidityPoolDepositResult {
44800 fn default() -> Self {
44801 Self::Success
44802 }
44803}
44804
44805impl LiquidityPoolDepositResult {
44806 pub const VARIANTS: [LiquidityPoolDepositResultCode; 8] = [
44807 LiquidityPoolDepositResultCode::Success,
44808 LiquidityPoolDepositResultCode::Malformed,
44809 LiquidityPoolDepositResultCode::NoTrust,
44810 LiquidityPoolDepositResultCode::NotAuthorized,
44811 LiquidityPoolDepositResultCode::Underfunded,
44812 LiquidityPoolDepositResultCode::LineFull,
44813 LiquidityPoolDepositResultCode::BadPrice,
44814 LiquidityPoolDepositResultCode::PoolFull,
44815 ];
44816 pub const VARIANTS_STR: [&'static str; 8] = [
44817 "Success",
44818 "Malformed",
44819 "NoTrust",
44820 "NotAuthorized",
44821 "Underfunded",
44822 "LineFull",
44823 "BadPrice",
44824 "PoolFull",
44825 ];
44826
44827 #[must_use]
44828 pub const fn name(&self) -> &'static str {
44829 match self {
44830 Self::Success => "Success",
44831 Self::Malformed => "Malformed",
44832 Self::NoTrust => "NoTrust",
44833 Self::NotAuthorized => "NotAuthorized",
44834 Self::Underfunded => "Underfunded",
44835 Self::LineFull => "LineFull",
44836 Self::BadPrice => "BadPrice",
44837 Self::PoolFull => "PoolFull",
44838 }
44839 }
44840
44841 #[must_use]
44842 pub const fn discriminant(&self) -> LiquidityPoolDepositResultCode {
44843 #[allow(clippy::match_same_arms)]
44844 match self {
44845 Self::Success => LiquidityPoolDepositResultCode::Success,
44846 Self::Malformed => LiquidityPoolDepositResultCode::Malformed,
44847 Self::NoTrust => LiquidityPoolDepositResultCode::NoTrust,
44848 Self::NotAuthorized => LiquidityPoolDepositResultCode::NotAuthorized,
44849 Self::Underfunded => LiquidityPoolDepositResultCode::Underfunded,
44850 Self::LineFull => LiquidityPoolDepositResultCode::LineFull,
44851 Self::BadPrice => LiquidityPoolDepositResultCode::BadPrice,
44852 Self::PoolFull => LiquidityPoolDepositResultCode::PoolFull,
44853 }
44854 }
44855
44856 #[must_use]
44857 pub const fn variants() -> [LiquidityPoolDepositResultCode; 8] {
44858 Self::VARIANTS
44859 }
44860}
44861
44862impl Name for LiquidityPoolDepositResult {
44863 #[must_use]
44864 fn name(&self) -> &'static str {
44865 Self::name(self)
44866 }
44867}
44868
44869impl Discriminant<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {
44870 #[must_use]
44871 fn discriminant(&self) -> LiquidityPoolDepositResultCode {
44872 Self::discriminant(self)
44873 }
44874}
44875
44876impl Variants<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {
44877 fn variants() -> slice::Iter<'static, LiquidityPoolDepositResultCode> {
44878 Self::VARIANTS.iter()
44879 }
44880}
44881
44882impl Union<LiquidityPoolDepositResultCode> for LiquidityPoolDepositResult {}
44883
44884impl ReadXdr for LiquidityPoolDepositResult {
44885 #[cfg(feature = "std")]
44886 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
44887 r.with_limited_depth(|r| {
44888 let dv: LiquidityPoolDepositResultCode =
44889 <LiquidityPoolDepositResultCode as ReadXdr>::read_xdr(r)?;
44890 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
44891 let v = match dv {
44892 LiquidityPoolDepositResultCode::Success => Self::Success,
44893 LiquidityPoolDepositResultCode::Malformed => Self::Malformed,
44894 LiquidityPoolDepositResultCode::NoTrust => Self::NoTrust,
44895 LiquidityPoolDepositResultCode::NotAuthorized => Self::NotAuthorized,
44896 LiquidityPoolDepositResultCode::Underfunded => Self::Underfunded,
44897 LiquidityPoolDepositResultCode::LineFull => Self::LineFull,
44898 LiquidityPoolDepositResultCode::BadPrice => Self::BadPrice,
44899 LiquidityPoolDepositResultCode::PoolFull => Self::PoolFull,
44900 #[allow(unreachable_patterns)]
44901 _ => return Err(Error::Invalid),
44902 };
44903 Ok(v)
44904 })
44905 }
44906}
44907
44908impl WriteXdr for LiquidityPoolDepositResult {
44909 #[cfg(feature = "std")]
44910 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
44911 w.with_limited_depth(|w| {
44912 self.discriminant().write_xdr(w)?;
44913 #[allow(clippy::match_same_arms)]
44914 match self {
44915 Self::Success => ().write_xdr(w)?,
44916 Self::Malformed => ().write_xdr(w)?,
44917 Self::NoTrust => ().write_xdr(w)?,
44918 Self::NotAuthorized => ().write_xdr(w)?,
44919 Self::Underfunded => ().write_xdr(w)?,
44920 Self::LineFull => ().write_xdr(w)?,
44921 Self::BadPrice => ().write_xdr(w)?,
44922 Self::PoolFull => ().write_xdr(w)?,
44923 };
44924 Ok(())
44925 })
44926 }
44927}
44928
44929#[cfg_attr(feature = "alloc", derive(Default))]
44951#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
44952#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
44953#[cfg_attr(
44954 all(feature = "serde", feature = "alloc"),
44955 derive(serde::Serialize, serde::Deserialize),
44956 serde(rename_all = "snake_case")
44957)]
44958#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
44959#[repr(i32)]
44960pub enum LiquidityPoolWithdrawResultCode {
44961 #[cfg_attr(feature = "alloc", default)]
44962 Success = 0,
44963 Malformed = -1,
44964 NoTrust = -2,
44965 Underfunded = -3,
44966 LineFull = -4,
44967 UnderMinimum = -5,
44968}
44969
44970impl LiquidityPoolWithdrawResultCode {
44971 pub const VARIANTS: [LiquidityPoolWithdrawResultCode; 6] = [
44972 LiquidityPoolWithdrawResultCode::Success,
44973 LiquidityPoolWithdrawResultCode::Malformed,
44974 LiquidityPoolWithdrawResultCode::NoTrust,
44975 LiquidityPoolWithdrawResultCode::Underfunded,
44976 LiquidityPoolWithdrawResultCode::LineFull,
44977 LiquidityPoolWithdrawResultCode::UnderMinimum,
44978 ];
44979 pub const VARIANTS_STR: [&'static str; 6] = [
44980 "Success",
44981 "Malformed",
44982 "NoTrust",
44983 "Underfunded",
44984 "LineFull",
44985 "UnderMinimum",
44986 ];
44987
44988 #[must_use]
44989 pub const fn name(&self) -> &'static str {
44990 match self {
44991 Self::Success => "Success",
44992 Self::Malformed => "Malformed",
44993 Self::NoTrust => "NoTrust",
44994 Self::Underfunded => "Underfunded",
44995 Self::LineFull => "LineFull",
44996 Self::UnderMinimum => "UnderMinimum",
44997 }
44998 }
44999
45000 #[must_use]
45001 pub const fn variants() -> [LiquidityPoolWithdrawResultCode; 6] {
45002 Self::VARIANTS
45003 }
45004}
45005
45006impl Name for LiquidityPoolWithdrawResultCode {
45007 #[must_use]
45008 fn name(&self) -> &'static str {
45009 Self::name(self)
45010 }
45011}
45012
45013impl Variants<LiquidityPoolWithdrawResultCode> for LiquidityPoolWithdrawResultCode {
45014 fn variants() -> slice::Iter<'static, LiquidityPoolWithdrawResultCode> {
45015 Self::VARIANTS.iter()
45016 }
45017}
45018
45019impl Enum for LiquidityPoolWithdrawResultCode {}
45020
45021impl fmt::Display for LiquidityPoolWithdrawResultCode {
45022 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45023 f.write_str(self.name())
45024 }
45025}
45026
45027impl TryFrom<i32> for LiquidityPoolWithdrawResultCode {
45028 type Error = Error;
45029
45030 fn try_from(i: i32) -> Result<Self, Error> {
45031 let e = match i {
45032 0 => LiquidityPoolWithdrawResultCode::Success,
45033 -1 => LiquidityPoolWithdrawResultCode::Malformed,
45034 -2 => LiquidityPoolWithdrawResultCode::NoTrust,
45035 -3 => LiquidityPoolWithdrawResultCode::Underfunded,
45036 -4 => LiquidityPoolWithdrawResultCode::LineFull,
45037 -5 => LiquidityPoolWithdrawResultCode::UnderMinimum,
45038 #[allow(unreachable_patterns)]
45039 _ => return Err(Error::Invalid),
45040 };
45041 Ok(e)
45042 }
45043}
45044
45045impl From<LiquidityPoolWithdrawResultCode> for i32 {
45046 #[must_use]
45047 fn from(e: LiquidityPoolWithdrawResultCode) -> Self {
45048 e as Self
45049 }
45050}
45051
45052impl ReadXdr for LiquidityPoolWithdrawResultCode {
45053 #[cfg(feature = "std")]
45054 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45055 r.with_limited_depth(|r| {
45056 let e = i32::read_xdr(r)?;
45057 let v: Self = e.try_into()?;
45058 Ok(v)
45059 })
45060 }
45061}
45062
45063impl WriteXdr for LiquidityPoolWithdrawResultCode {
45064 #[cfg(feature = "std")]
45065 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45066 w.with_limited_depth(|w| {
45067 let i: i32 = (*self).into();
45068 i.write_xdr(w)
45069 })
45070 }
45071}
45072
45073#[cfg_eval::cfg_eval]
45091#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45092#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45093#[cfg_attr(
45094 all(feature = "serde", feature = "alloc"),
45095 serde_with::serde_as,
45096 derive(serde::Serialize, serde::Deserialize),
45097 serde(rename_all = "snake_case")
45098)]
45099#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45100#[allow(clippy::large_enum_variant)]
45101pub enum LiquidityPoolWithdrawResult {
45102 Success,
45103 Malformed,
45104 NoTrust,
45105 Underfunded,
45106 LineFull,
45107 UnderMinimum,
45108}
45109
45110#[cfg(feature = "alloc")]
45111impl Default for LiquidityPoolWithdrawResult {
45112 fn default() -> Self {
45113 Self::Success
45114 }
45115}
45116
45117impl LiquidityPoolWithdrawResult {
45118 pub const VARIANTS: [LiquidityPoolWithdrawResultCode; 6] = [
45119 LiquidityPoolWithdrawResultCode::Success,
45120 LiquidityPoolWithdrawResultCode::Malformed,
45121 LiquidityPoolWithdrawResultCode::NoTrust,
45122 LiquidityPoolWithdrawResultCode::Underfunded,
45123 LiquidityPoolWithdrawResultCode::LineFull,
45124 LiquidityPoolWithdrawResultCode::UnderMinimum,
45125 ];
45126 pub const VARIANTS_STR: [&'static str; 6] = [
45127 "Success",
45128 "Malformed",
45129 "NoTrust",
45130 "Underfunded",
45131 "LineFull",
45132 "UnderMinimum",
45133 ];
45134
45135 #[must_use]
45136 pub const fn name(&self) -> &'static str {
45137 match self {
45138 Self::Success => "Success",
45139 Self::Malformed => "Malformed",
45140 Self::NoTrust => "NoTrust",
45141 Self::Underfunded => "Underfunded",
45142 Self::LineFull => "LineFull",
45143 Self::UnderMinimum => "UnderMinimum",
45144 }
45145 }
45146
45147 #[must_use]
45148 pub const fn discriminant(&self) -> LiquidityPoolWithdrawResultCode {
45149 #[allow(clippy::match_same_arms)]
45150 match self {
45151 Self::Success => LiquidityPoolWithdrawResultCode::Success,
45152 Self::Malformed => LiquidityPoolWithdrawResultCode::Malformed,
45153 Self::NoTrust => LiquidityPoolWithdrawResultCode::NoTrust,
45154 Self::Underfunded => LiquidityPoolWithdrawResultCode::Underfunded,
45155 Self::LineFull => LiquidityPoolWithdrawResultCode::LineFull,
45156 Self::UnderMinimum => LiquidityPoolWithdrawResultCode::UnderMinimum,
45157 }
45158 }
45159
45160 #[must_use]
45161 pub const fn variants() -> [LiquidityPoolWithdrawResultCode; 6] {
45162 Self::VARIANTS
45163 }
45164}
45165
45166impl Name for LiquidityPoolWithdrawResult {
45167 #[must_use]
45168 fn name(&self) -> &'static str {
45169 Self::name(self)
45170 }
45171}
45172
45173impl Discriminant<LiquidityPoolWithdrawResultCode> for LiquidityPoolWithdrawResult {
45174 #[must_use]
45175 fn discriminant(&self) -> LiquidityPoolWithdrawResultCode {
45176 Self::discriminant(self)
45177 }
45178}
45179
45180impl Variants<LiquidityPoolWithdrawResultCode> for LiquidityPoolWithdrawResult {
45181 fn variants() -> slice::Iter<'static, LiquidityPoolWithdrawResultCode> {
45182 Self::VARIANTS.iter()
45183 }
45184}
45185
45186impl Union<LiquidityPoolWithdrawResultCode> for LiquidityPoolWithdrawResult {}
45187
45188impl ReadXdr for LiquidityPoolWithdrawResult {
45189 #[cfg(feature = "std")]
45190 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45191 r.with_limited_depth(|r| {
45192 let dv: LiquidityPoolWithdrawResultCode =
45193 <LiquidityPoolWithdrawResultCode as ReadXdr>::read_xdr(r)?;
45194 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
45195 let v = match dv {
45196 LiquidityPoolWithdrawResultCode::Success => Self::Success,
45197 LiquidityPoolWithdrawResultCode::Malformed => Self::Malformed,
45198 LiquidityPoolWithdrawResultCode::NoTrust => Self::NoTrust,
45199 LiquidityPoolWithdrawResultCode::Underfunded => Self::Underfunded,
45200 LiquidityPoolWithdrawResultCode::LineFull => Self::LineFull,
45201 LiquidityPoolWithdrawResultCode::UnderMinimum => Self::UnderMinimum,
45202 #[allow(unreachable_patterns)]
45203 _ => return Err(Error::Invalid),
45204 };
45205 Ok(v)
45206 })
45207 }
45208}
45209
45210impl WriteXdr for LiquidityPoolWithdrawResult {
45211 #[cfg(feature = "std")]
45212 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45213 w.with_limited_depth(|w| {
45214 self.discriminant().write_xdr(w)?;
45215 #[allow(clippy::match_same_arms)]
45216 match self {
45217 Self::Success => ().write_xdr(w)?,
45218 Self::Malformed => ().write_xdr(w)?,
45219 Self::NoTrust => ().write_xdr(w)?,
45220 Self::Underfunded => ().write_xdr(w)?,
45221 Self::LineFull => ().write_xdr(w)?,
45222 Self::UnderMinimum => ().write_xdr(w)?,
45223 };
45224 Ok(())
45225 })
45226 }
45227}
45228
45229#[cfg_attr(feature = "alloc", derive(Default))]
45248#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45249#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45250#[cfg_attr(
45251 all(feature = "serde", feature = "alloc"),
45252 derive(serde::Serialize, serde::Deserialize),
45253 serde(rename_all = "snake_case")
45254)]
45255#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45256#[repr(i32)]
45257pub enum InvokeHostFunctionResultCode {
45258 #[cfg_attr(feature = "alloc", default)]
45259 Success = 0,
45260 Malformed = -1,
45261 Trapped = -2,
45262 ResourceLimitExceeded = -3,
45263 EntryArchived = -4,
45264 InsufficientRefundableFee = -5,
45265}
45266
45267impl InvokeHostFunctionResultCode {
45268 pub const VARIANTS: [InvokeHostFunctionResultCode; 6] = [
45269 InvokeHostFunctionResultCode::Success,
45270 InvokeHostFunctionResultCode::Malformed,
45271 InvokeHostFunctionResultCode::Trapped,
45272 InvokeHostFunctionResultCode::ResourceLimitExceeded,
45273 InvokeHostFunctionResultCode::EntryArchived,
45274 InvokeHostFunctionResultCode::InsufficientRefundableFee,
45275 ];
45276 pub const VARIANTS_STR: [&'static str; 6] = [
45277 "Success",
45278 "Malformed",
45279 "Trapped",
45280 "ResourceLimitExceeded",
45281 "EntryArchived",
45282 "InsufficientRefundableFee",
45283 ];
45284
45285 #[must_use]
45286 pub const fn name(&self) -> &'static str {
45287 match self {
45288 Self::Success => "Success",
45289 Self::Malformed => "Malformed",
45290 Self::Trapped => "Trapped",
45291 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45292 Self::EntryArchived => "EntryArchived",
45293 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45294 }
45295 }
45296
45297 #[must_use]
45298 pub const fn variants() -> [InvokeHostFunctionResultCode; 6] {
45299 Self::VARIANTS
45300 }
45301}
45302
45303impl Name for InvokeHostFunctionResultCode {
45304 #[must_use]
45305 fn name(&self) -> &'static str {
45306 Self::name(self)
45307 }
45308}
45309
45310impl Variants<InvokeHostFunctionResultCode> for InvokeHostFunctionResultCode {
45311 fn variants() -> slice::Iter<'static, InvokeHostFunctionResultCode> {
45312 Self::VARIANTS.iter()
45313 }
45314}
45315
45316impl Enum for InvokeHostFunctionResultCode {}
45317
45318impl fmt::Display for InvokeHostFunctionResultCode {
45319 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45320 f.write_str(self.name())
45321 }
45322}
45323
45324impl TryFrom<i32> for InvokeHostFunctionResultCode {
45325 type Error = Error;
45326
45327 fn try_from(i: i32) -> Result<Self, Error> {
45328 let e = match i {
45329 0 => InvokeHostFunctionResultCode::Success,
45330 -1 => InvokeHostFunctionResultCode::Malformed,
45331 -2 => InvokeHostFunctionResultCode::Trapped,
45332 -3 => InvokeHostFunctionResultCode::ResourceLimitExceeded,
45333 -4 => InvokeHostFunctionResultCode::EntryArchived,
45334 -5 => InvokeHostFunctionResultCode::InsufficientRefundableFee,
45335 #[allow(unreachable_patterns)]
45336 _ => return Err(Error::Invalid),
45337 };
45338 Ok(e)
45339 }
45340}
45341
45342impl From<InvokeHostFunctionResultCode> for i32 {
45343 #[must_use]
45344 fn from(e: InvokeHostFunctionResultCode) -> Self {
45345 e as Self
45346 }
45347}
45348
45349impl ReadXdr for InvokeHostFunctionResultCode {
45350 #[cfg(feature = "std")]
45351 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45352 r.with_limited_depth(|r| {
45353 let e = i32::read_xdr(r)?;
45354 let v: Self = e.try_into()?;
45355 Ok(v)
45356 })
45357 }
45358}
45359
45360impl WriteXdr for InvokeHostFunctionResultCode {
45361 #[cfg(feature = "std")]
45362 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45363 w.with_limited_depth(|w| {
45364 let i: i32 = (*self).into();
45365 i.write_xdr(w)
45366 })
45367 }
45368}
45369
45370#[cfg_eval::cfg_eval]
45388#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45389#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45390#[cfg_attr(
45391 all(feature = "serde", feature = "alloc"),
45392 serde_with::serde_as,
45393 derive(serde::Serialize, serde::Deserialize),
45394 serde(rename_all = "snake_case")
45395)]
45396#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45397#[allow(clippy::large_enum_variant)]
45398pub enum InvokeHostFunctionResult {
45399 Success(Hash),
45400 Malformed,
45401 Trapped,
45402 ResourceLimitExceeded,
45403 EntryArchived,
45404 InsufficientRefundableFee,
45405}
45406
45407#[cfg(feature = "alloc")]
45408impl Default for InvokeHostFunctionResult {
45409 fn default() -> Self {
45410 Self::Success(Hash::default())
45411 }
45412}
45413
45414impl InvokeHostFunctionResult {
45415 pub const VARIANTS: [InvokeHostFunctionResultCode; 6] = [
45416 InvokeHostFunctionResultCode::Success,
45417 InvokeHostFunctionResultCode::Malformed,
45418 InvokeHostFunctionResultCode::Trapped,
45419 InvokeHostFunctionResultCode::ResourceLimitExceeded,
45420 InvokeHostFunctionResultCode::EntryArchived,
45421 InvokeHostFunctionResultCode::InsufficientRefundableFee,
45422 ];
45423 pub const VARIANTS_STR: [&'static str; 6] = [
45424 "Success",
45425 "Malformed",
45426 "Trapped",
45427 "ResourceLimitExceeded",
45428 "EntryArchived",
45429 "InsufficientRefundableFee",
45430 ];
45431
45432 #[must_use]
45433 pub const fn name(&self) -> &'static str {
45434 match self {
45435 Self::Success(_) => "Success",
45436 Self::Malformed => "Malformed",
45437 Self::Trapped => "Trapped",
45438 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45439 Self::EntryArchived => "EntryArchived",
45440 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45441 }
45442 }
45443
45444 #[must_use]
45445 pub const fn discriminant(&self) -> InvokeHostFunctionResultCode {
45446 #[allow(clippy::match_same_arms)]
45447 match self {
45448 Self::Success(_) => InvokeHostFunctionResultCode::Success,
45449 Self::Malformed => InvokeHostFunctionResultCode::Malformed,
45450 Self::Trapped => InvokeHostFunctionResultCode::Trapped,
45451 Self::ResourceLimitExceeded => InvokeHostFunctionResultCode::ResourceLimitExceeded,
45452 Self::EntryArchived => InvokeHostFunctionResultCode::EntryArchived,
45453 Self::InsufficientRefundableFee => {
45454 InvokeHostFunctionResultCode::InsufficientRefundableFee
45455 }
45456 }
45457 }
45458
45459 #[must_use]
45460 pub const fn variants() -> [InvokeHostFunctionResultCode; 6] {
45461 Self::VARIANTS
45462 }
45463}
45464
45465impl Name for InvokeHostFunctionResult {
45466 #[must_use]
45467 fn name(&self) -> &'static str {
45468 Self::name(self)
45469 }
45470}
45471
45472impl Discriminant<InvokeHostFunctionResultCode> for InvokeHostFunctionResult {
45473 #[must_use]
45474 fn discriminant(&self) -> InvokeHostFunctionResultCode {
45475 Self::discriminant(self)
45476 }
45477}
45478
45479impl Variants<InvokeHostFunctionResultCode> for InvokeHostFunctionResult {
45480 fn variants() -> slice::Iter<'static, InvokeHostFunctionResultCode> {
45481 Self::VARIANTS.iter()
45482 }
45483}
45484
45485impl Union<InvokeHostFunctionResultCode> for InvokeHostFunctionResult {}
45486
45487impl ReadXdr for InvokeHostFunctionResult {
45488 #[cfg(feature = "std")]
45489 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45490 r.with_limited_depth(|r| {
45491 let dv: InvokeHostFunctionResultCode =
45492 <InvokeHostFunctionResultCode as ReadXdr>::read_xdr(r)?;
45493 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
45494 let v = match dv {
45495 InvokeHostFunctionResultCode::Success => Self::Success(Hash::read_xdr(r)?),
45496 InvokeHostFunctionResultCode::Malformed => Self::Malformed,
45497 InvokeHostFunctionResultCode::Trapped => Self::Trapped,
45498 InvokeHostFunctionResultCode::ResourceLimitExceeded => Self::ResourceLimitExceeded,
45499 InvokeHostFunctionResultCode::EntryArchived => Self::EntryArchived,
45500 InvokeHostFunctionResultCode::InsufficientRefundableFee => {
45501 Self::InsufficientRefundableFee
45502 }
45503 #[allow(unreachable_patterns)]
45504 _ => return Err(Error::Invalid),
45505 };
45506 Ok(v)
45507 })
45508 }
45509}
45510
45511impl WriteXdr for InvokeHostFunctionResult {
45512 #[cfg(feature = "std")]
45513 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45514 w.with_limited_depth(|w| {
45515 self.discriminant().write_xdr(w)?;
45516 #[allow(clippy::match_same_arms)]
45517 match self {
45518 Self::Success(v) => v.write_xdr(w)?,
45519 Self::Malformed => ().write_xdr(w)?,
45520 Self::Trapped => ().write_xdr(w)?,
45521 Self::ResourceLimitExceeded => ().write_xdr(w)?,
45522 Self::EntryArchived => ().write_xdr(w)?,
45523 Self::InsufficientRefundableFee => ().write_xdr(w)?,
45524 };
45525 Ok(())
45526 })
45527 }
45528}
45529
45530#[cfg_attr(feature = "alloc", derive(Default))]
45547#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45548#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45549#[cfg_attr(
45550 all(feature = "serde", feature = "alloc"),
45551 derive(serde::Serialize, serde::Deserialize),
45552 serde(rename_all = "snake_case")
45553)]
45554#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45555#[repr(i32)]
45556pub enum ExtendFootprintTtlResultCode {
45557 #[cfg_attr(feature = "alloc", default)]
45558 Success = 0,
45559 Malformed = -1,
45560 ResourceLimitExceeded = -2,
45561 InsufficientRefundableFee = -3,
45562}
45563
45564impl ExtendFootprintTtlResultCode {
45565 pub const VARIANTS: [ExtendFootprintTtlResultCode; 4] = [
45566 ExtendFootprintTtlResultCode::Success,
45567 ExtendFootprintTtlResultCode::Malformed,
45568 ExtendFootprintTtlResultCode::ResourceLimitExceeded,
45569 ExtendFootprintTtlResultCode::InsufficientRefundableFee,
45570 ];
45571 pub const VARIANTS_STR: [&'static str; 4] = [
45572 "Success",
45573 "Malformed",
45574 "ResourceLimitExceeded",
45575 "InsufficientRefundableFee",
45576 ];
45577
45578 #[must_use]
45579 pub const fn name(&self) -> &'static str {
45580 match self {
45581 Self::Success => "Success",
45582 Self::Malformed => "Malformed",
45583 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45584 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45585 }
45586 }
45587
45588 #[must_use]
45589 pub const fn variants() -> [ExtendFootprintTtlResultCode; 4] {
45590 Self::VARIANTS
45591 }
45592}
45593
45594impl Name for ExtendFootprintTtlResultCode {
45595 #[must_use]
45596 fn name(&self) -> &'static str {
45597 Self::name(self)
45598 }
45599}
45600
45601impl Variants<ExtendFootprintTtlResultCode> for ExtendFootprintTtlResultCode {
45602 fn variants() -> slice::Iter<'static, ExtendFootprintTtlResultCode> {
45603 Self::VARIANTS.iter()
45604 }
45605}
45606
45607impl Enum for ExtendFootprintTtlResultCode {}
45608
45609impl fmt::Display for ExtendFootprintTtlResultCode {
45610 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45611 f.write_str(self.name())
45612 }
45613}
45614
45615impl TryFrom<i32> for ExtendFootprintTtlResultCode {
45616 type Error = Error;
45617
45618 fn try_from(i: i32) -> Result<Self, Error> {
45619 let e = match i {
45620 0 => ExtendFootprintTtlResultCode::Success,
45621 -1 => ExtendFootprintTtlResultCode::Malformed,
45622 -2 => ExtendFootprintTtlResultCode::ResourceLimitExceeded,
45623 -3 => ExtendFootprintTtlResultCode::InsufficientRefundableFee,
45624 #[allow(unreachable_patterns)]
45625 _ => return Err(Error::Invalid),
45626 };
45627 Ok(e)
45628 }
45629}
45630
45631impl From<ExtendFootprintTtlResultCode> for i32 {
45632 #[must_use]
45633 fn from(e: ExtendFootprintTtlResultCode) -> Self {
45634 e as Self
45635 }
45636}
45637
45638impl ReadXdr for ExtendFootprintTtlResultCode {
45639 #[cfg(feature = "std")]
45640 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45641 r.with_limited_depth(|r| {
45642 let e = i32::read_xdr(r)?;
45643 let v: Self = e.try_into()?;
45644 Ok(v)
45645 })
45646 }
45647}
45648
45649impl WriteXdr for ExtendFootprintTtlResultCode {
45650 #[cfg(feature = "std")]
45651 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45652 w.with_limited_depth(|w| {
45653 let i: i32 = (*self).into();
45654 i.write_xdr(w)
45655 })
45656 }
45657}
45658
45659#[cfg_eval::cfg_eval]
45675#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45676#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45677#[cfg_attr(
45678 all(feature = "serde", feature = "alloc"),
45679 serde_with::serde_as,
45680 derive(serde::Serialize, serde::Deserialize),
45681 serde(rename_all = "snake_case")
45682)]
45683#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45684#[allow(clippy::large_enum_variant)]
45685pub enum ExtendFootprintTtlResult {
45686 Success,
45687 Malformed,
45688 ResourceLimitExceeded,
45689 InsufficientRefundableFee,
45690}
45691
45692#[cfg(feature = "alloc")]
45693impl Default for ExtendFootprintTtlResult {
45694 fn default() -> Self {
45695 Self::Success
45696 }
45697}
45698
45699impl ExtendFootprintTtlResult {
45700 pub const VARIANTS: [ExtendFootprintTtlResultCode; 4] = [
45701 ExtendFootprintTtlResultCode::Success,
45702 ExtendFootprintTtlResultCode::Malformed,
45703 ExtendFootprintTtlResultCode::ResourceLimitExceeded,
45704 ExtendFootprintTtlResultCode::InsufficientRefundableFee,
45705 ];
45706 pub const VARIANTS_STR: [&'static str; 4] = [
45707 "Success",
45708 "Malformed",
45709 "ResourceLimitExceeded",
45710 "InsufficientRefundableFee",
45711 ];
45712
45713 #[must_use]
45714 pub const fn name(&self) -> &'static str {
45715 match self {
45716 Self::Success => "Success",
45717 Self::Malformed => "Malformed",
45718 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45719 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45720 }
45721 }
45722
45723 #[must_use]
45724 pub const fn discriminant(&self) -> ExtendFootprintTtlResultCode {
45725 #[allow(clippy::match_same_arms)]
45726 match self {
45727 Self::Success => ExtendFootprintTtlResultCode::Success,
45728 Self::Malformed => ExtendFootprintTtlResultCode::Malformed,
45729 Self::ResourceLimitExceeded => ExtendFootprintTtlResultCode::ResourceLimitExceeded,
45730 Self::InsufficientRefundableFee => {
45731 ExtendFootprintTtlResultCode::InsufficientRefundableFee
45732 }
45733 }
45734 }
45735
45736 #[must_use]
45737 pub const fn variants() -> [ExtendFootprintTtlResultCode; 4] {
45738 Self::VARIANTS
45739 }
45740}
45741
45742impl Name for ExtendFootprintTtlResult {
45743 #[must_use]
45744 fn name(&self) -> &'static str {
45745 Self::name(self)
45746 }
45747}
45748
45749impl Discriminant<ExtendFootprintTtlResultCode> for ExtendFootprintTtlResult {
45750 #[must_use]
45751 fn discriminant(&self) -> ExtendFootprintTtlResultCode {
45752 Self::discriminant(self)
45753 }
45754}
45755
45756impl Variants<ExtendFootprintTtlResultCode> for ExtendFootprintTtlResult {
45757 fn variants() -> slice::Iter<'static, ExtendFootprintTtlResultCode> {
45758 Self::VARIANTS.iter()
45759 }
45760}
45761
45762impl Union<ExtendFootprintTtlResultCode> for ExtendFootprintTtlResult {}
45763
45764impl ReadXdr for ExtendFootprintTtlResult {
45765 #[cfg(feature = "std")]
45766 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45767 r.with_limited_depth(|r| {
45768 let dv: ExtendFootprintTtlResultCode =
45769 <ExtendFootprintTtlResultCode as ReadXdr>::read_xdr(r)?;
45770 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
45771 let v = match dv {
45772 ExtendFootprintTtlResultCode::Success => Self::Success,
45773 ExtendFootprintTtlResultCode::Malformed => Self::Malformed,
45774 ExtendFootprintTtlResultCode::ResourceLimitExceeded => Self::ResourceLimitExceeded,
45775 ExtendFootprintTtlResultCode::InsufficientRefundableFee => {
45776 Self::InsufficientRefundableFee
45777 }
45778 #[allow(unreachable_patterns)]
45779 _ => return Err(Error::Invalid),
45780 };
45781 Ok(v)
45782 })
45783 }
45784}
45785
45786impl WriteXdr for ExtendFootprintTtlResult {
45787 #[cfg(feature = "std")]
45788 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45789 w.with_limited_depth(|w| {
45790 self.discriminant().write_xdr(w)?;
45791 #[allow(clippy::match_same_arms)]
45792 match self {
45793 Self::Success => ().write_xdr(w)?,
45794 Self::Malformed => ().write_xdr(w)?,
45795 Self::ResourceLimitExceeded => ().write_xdr(w)?,
45796 Self::InsufficientRefundableFee => ().write_xdr(w)?,
45797 };
45798 Ok(())
45799 })
45800 }
45801}
45802
45803#[cfg_attr(feature = "alloc", derive(Default))]
45820#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45821#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45822#[cfg_attr(
45823 all(feature = "serde", feature = "alloc"),
45824 derive(serde::Serialize, serde::Deserialize),
45825 serde(rename_all = "snake_case")
45826)]
45827#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45828#[repr(i32)]
45829pub enum RestoreFootprintResultCode {
45830 #[cfg_attr(feature = "alloc", default)]
45831 Success = 0,
45832 Malformed = -1,
45833 ResourceLimitExceeded = -2,
45834 InsufficientRefundableFee = -3,
45835}
45836
45837impl RestoreFootprintResultCode {
45838 pub const VARIANTS: [RestoreFootprintResultCode; 4] = [
45839 RestoreFootprintResultCode::Success,
45840 RestoreFootprintResultCode::Malformed,
45841 RestoreFootprintResultCode::ResourceLimitExceeded,
45842 RestoreFootprintResultCode::InsufficientRefundableFee,
45843 ];
45844 pub const VARIANTS_STR: [&'static str; 4] = [
45845 "Success",
45846 "Malformed",
45847 "ResourceLimitExceeded",
45848 "InsufficientRefundableFee",
45849 ];
45850
45851 #[must_use]
45852 pub const fn name(&self) -> &'static str {
45853 match self {
45854 Self::Success => "Success",
45855 Self::Malformed => "Malformed",
45856 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45857 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45858 }
45859 }
45860
45861 #[must_use]
45862 pub const fn variants() -> [RestoreFootprintResultCode; 4] {
45863 Self::VARIANTS
45864 }
45865}
45866
45867impl Name for RestoreFootprintResultCode {
45868 #[must_use]
45869 fn name(&self) -> &'static str {
45870 Self::name(self)
45871 }
45872}
45873
45874impl Variants<RestoreFootprintResultCode> for RestoreFootprintResultCode {
45875 fn variants() -> slice::Iter<'static, RestoreFootprintResultCode> {
45876 Self::VARIANTS.iter()
45877 }
45878}
45879
45880impl Enum for RestoreFootprintResultCode {}
45881
45882impl fmt::Display for RestoreFootprintResultCode {
45883 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45884 f.write_str(self.name())
45885 }
45886}
45887
45888impl TryFrom<i32> for RestoreFootprintResultCode {
45889 type Error = Error;
45890
45891 fn try_from(i: i32) -> Result<Self, Error> {
45892 let e = match i {
45893 0 => RestoreFootprintResultCode::Success,
45894 -1 => RestoreFootprintResultCode::Malformed,
45895 -2 => RestoreFootprintResultCode::ResourceLimitExceeded,
45896 -3 => RestoreFootprintResultCode::InsufficientRefundableFee,
45897 #[allow(unreachable_patterns)]
45898 _ => return Err(Error::Invalid),
45899 };
45900 Ok(e)
45901 }
45902}
45903
45904impl From<RestoreFootprintResultCode> for i32 {
45905 #[must_use]
45906 fn from(e: RestoreFootprintResultCode) -> Self {
45907 e as Self
45908 }
45909}
45910
45911impl ReadXdr for RestoreFootprintResultCode {
45912 #[cfg(feature = "std")]
45913 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
45914 r.with_limited_depth(|r| {
45915 let e = i32::read_xdr(r)?;
45916 let v: Self = e.try_into()?;
45917 Ok(v)
45918 })
45919 }
45920}
45921
45922impl WriteXdr for RestoreFootprintResultCode {
45923 #[cfg(feature = "std")]
45924 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
45925 w.with_limited_depth(|w| {
45926 let i: i32 = (*self).into();
45927 i.write_xdr(w)
45928 })
45929 }
45930}
45931
45932#[cfg_eval::cfg_eval]
45948#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
45949#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
45950#[cfg_attr(
45951 all(feature = "serde", feature = "alloc"),
45952 serde_with::serde_as,
45953 derive(serde::Serialize, serde::Deserialize),
45954 serde(rename_all = "snake_case")
45955)]
45956#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
45957#[allow(clippy::large_enum_variant)]
45958pub enum RestoreFootprintResult {
45959 Success,
45960 Malformed,
45961 ResourceLimitExceeded,
45962 InsufficientRefundableFee,
45963}
45964
45965#[cfg(feature = "alloc")]
45966impl Default for RestoreFootprintResult {
45967 fn default() -> Self {
45968 Self::Success
45969 }
45970}
45971
45972impl RestoreFootprintResult {
45973 pub const VARIANTS: [RestoreFootprintResultCode; 4] = [
45974 RestoreFootprintResultCode::Success,
45975 RestoreFootprintResultCode::Malformed,
45976 RestoreFootprintResultCode::ResourceLimitExceeded,
45977 RestoreFootprintResultCode::InsufficientRefundableFee,
45978 ];
45979 pub const VARIANTS_STR: [&'static str; 4] = [
45980 "Success",
45981 "Malformed",
45982 "ResourceLimitExceeded",
45983 "InsufficientRefundableFee",
45984 ];
45985
45986 #[must_use]
45987 pub const fn name(&self) -> &'static str {
45988 match self {
45989 Self::Success => "Success",
45990 Self::Malformed => "Malformed",
45991 Self::ResourceLimitExceeded => "ResourceLimitExceeded",
45992 Self::InsufficientRefundableFee => "InsufficientRefundableFee",
45993 }
45994 }
45995
45996 #[must_use]
45997 pub const fn discriminant(&self) -> RestoreFootprintResultCode {
45998 #[allow(clippy::match_same_arms)]
45999 match self {
46000 Self::Success => RestoreFootprintResultCode::Success,
46001 Self::Malformed => RestoreFootprintResultCode::Malformed,
46002 Self::ResourceLimitExceeded => RestoreFootprintResultCode::ResourceLimitExceeded,
46003 Self::InsufficientRefundableFee => {
46004 RestoreFootprintResultCode::InsufficientRefundableFee
46005 }
46006 }
46007 }
46008
46009 #[must_use]
46010 pub const fn variants() -> [RestoreFootprintResultCode; 4] {
46011 Self::VARIANTS
46012 }
46013}
46014
46015impl Name for RestoreFootprintResult {
46016 #[must_use]
46017 fn name(&self) -> &'static str {
46018 Self::name(self)
46019 }
46020}
46021
46022impl Discriminant<RestoreFootprintResultCode> for RestoreFootprintResult {
46023 #[must_use]
46024 fn discriminant(&self) -> RestoreFootprintResultCode {
46025 Self::discriminant(self)
46026 }
46027}
46028
46029impl Variants<RestoreFootprintResultCode> for RestoreFootprintResult {
46030 fn variants() -> slice::Iter<'static, RestoreFootprintResultCode> {
46031 Self::VARIANTS.iter()
46032 }
46033}
46034
46035impl Union<RestoreFootprintResultCode> for RestoreFootprintResult {}
46036
46037impl ReadXdr for RestoreFootprintResult {
46038 #[cfg(feature = "std")]
46039 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
46040 r.with_limited_depth(|r| {
46041 let dv: RestoreFootprintResultCode =
46042 <RestoreFootprintResultCode as ReadXdr>::read_xdr(r)?;
46043 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
46044 let v = match dv {
46045 RestoreFootprintResultCode::Success => Self::Success,
46046 RestoreFootprintResultCode::Malformed => Self::Malformed,
46047 RestoreFootprintResultCode::ResourceLimitExceeded => Self::ResourceLimitExceeded,
46048 RestoreFootprintResultCode::InsufficientRefundableFee => {
46049 Self::InsufficientRefundableFee
46050 }
46051 #[allow(unreachable_patterns)]
46052 _ => return Err(Error::Invalid),
46053 };
46054 Ok(v)
46055 })
46056 }
46057}
46058
46059impl WriteXdr for RestoreFootprintResult {
46060 #[cfg(feature = "std")]
46061 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
46062 w.with_limited_depth(|w| {
46063 self.discriminant().write_xdr(w)?;
46064 #[allow(clippy::match_same_arms)]
46065 match self {
46066 Self::Success => ().write_xdr(w)?,
46067 Self::Malformed => ().write_xdr(w)?,
46068 Self::ResourceLimitExceeded => ().write_xdr(w)?,
46069 Self::InsufficientRefundableFee => ().write_xdr(w)?,
46070 };
46071 Ok(())
46072 })
46073 }
46074}
46075
46076#[cfg_attr(feature = "alloc", derive(Default))]
46094#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
46095#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
46096#[cfg_attr(
46097 all(feature = "serde", feature = "alloc"),
46098 derive(serde::Serialize, serde::Deserialize),
46099 serde(rename_all = "snake_case")
46100)]
46101#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
46102#[repr(i32)]
46103pub enum OperationResultCode {
46104 #[cfg_attr(feature = "alloc", default)]
46105 OpInner = 0,
46106 OpBadAuth = -1,
46107 OpNoAccount = -2,
46108 OpNotSupported = -3,
46109 OpTooManySubentries = -4,
46110 OpExceededWorkLimit = -5,
46111 OpTooManySponsoring = -6,
46112}
46113
46114impl OperationResultCode {
46115 pub const VARIANTS: [OperationResultCode; 7] = [
46116 OperationResultCode::OpInner,
46117 OperationResultCode::OpBadAuth,
46118 OperationResultCode::OpNoAccount,
46119 OperationResultCode::OpNotSupported,
46120 OperationResultCode::OpTooManySubentries,
46121 OperationResultCode::OpExceededWorkLimit,
46122 OperationResultCode::OpTooManySponsoring,
46123 ];
46124 pub const VARIANTS_STR: [&'static str; 7] = [
46125 "OpInner",
46126 "OpBadAuth",
46127 "OpNoAccount",
46128 "OpNotSupported",
46129 "OpTooManySubentries",
46130 "OpExceededWorkLimit",
46131 "OpTooManySponsoring",
46132 ];
46133
46134 #[must_use]
46135 pub const fn name(&self) -> &'static str {
46136 match self {
46137 Self::OpInner => "OpInner",
46138 Self::OpBadAuth => "OpBadAuth",
46139 Self::OpNoAccount => "OpNoAccount",
46140 Self::OpNotSupported => "OpNotSupported",
46141 Self::OpTooManySubentries => "OpTooManySubentries",
46142 Self::OpExceededWorkLimit => "OpExceededWorkLimit",
46143 Self::OpTooManySponsoring => "OpTooManySponsoring",
46144 }
46145 }
46146
46147 #[must_use]
46148 pub const fn variants() -> [OperationResultCode; 7] {
46149 Self::VARIANTS
46150 }
46151}
46152
46153impl Name for OperationResultCode {
46154 #[must_use]
46155 fn name(&self) -> &'static str {
46156 Self::name(self)
46157 }
46158}
46159
46160impl Variants<OperationResultCode> for OperationResultCode {
46161 fn variants() -> slice::Iter<'static, OperationResultCode> {
46162 Self::VARIANTS.iter()
46163 }
46164}
46165
46166impl Enum for OperationResultCode {}
46167
46168impl fmt::Display for OperationResultCode {
46169 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
46170 f.write_str(self.name())
46171 }
46172}
46173
46174impl TryFrom<i32> for OperationResultCode {
46175 type Error = Error;
46176
46177 fn try_from(i: i32) -> Result<Self, Error> {
46178 let e = match i {
46179 0 => OperationResultCode::OpInner,
46180 -1 => OperationResultCode::OpBadAuth,
46181 -2 => OperationResultCode::OpNoAccount,
46182 -3 => OperationResultCode::OpNotSupported,
46183 -4 => OperationResultCode::OpTooManySubentries,
46184 -5 => OperationResultCode::OpExceededWorkLimit,
46185 -6 => OperationResultCode::OpTooManySponsoring,
46186 #[allow(unreachable_patterns)]
46187 _ => return Err(Error::Invalid),
46188 };
46189 Ok(e)
46190 }
46191}
46192
46193impl From<OperationResultCode> for i32 {
46194 #[must_use]
46195 fn from(e: OperationResultCode) -> Self {
46196 e as Self
46197 }
46198}
46199
46200impl ReadXdr for OperationResultCode {
46201 #[cfg(feature = "std")]
46202 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
46203 r.with_limited_depth(|r| {
46204 let e = i32::read_xdr(r)?;
46205 let v: Self = e.try_into()?;
46206 Ok(v)
46207 })
46208 }
46209}
46210
46211impl WriteXdr for OperationResultCode {
46212 #[cfg(feature = "std")]
46213 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
46214 w.with_limited_depth(|w| {
46215 let i: i32 = (*self).into();
46216 i.write_xdr(w)
46217 })
46218 }
46219}
46220
46221#[cfg_eval::cfg_eval]
46285#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
46286#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
46287#[cfg_attr(
46288 all(feature = "serde", feature = "alloc"),
46289 serde_with::serde_as,
46290 derive(serde::Serialize, serde::Deserialize),
46291 serde(rename_all = "snake_case")
46292)]
46293#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
46294#[allow(clippy::large_enum_variant)]
46295pub enum OperationResultTr {
46296 CreateAccount(CreateAccountResult),
46297 Payment(PaymentResult),
46298 PathPaymentStrictReceive(PathPaymentStrictReceiveResult),
46299 ManageSellOffer(ManageSellOfferResult),
46300 CreatePassiveSellOffer(ManageSellOfferResult),
46301 SetOptions(SetOptionsResult),
46302 ChangeTrust(ChangeTrustResult),
46303 AllowTrust(AllowTrustResult),
46304 AccountMerge(AccountMergeResult),
46305 Inflation(InflationResult),
46306 ManageData(ManageDataResult),
46307 BumpSequence(BumpSequenceResult),
46308 ManageBuyOffer(ManageBuyOfferResult),
46309 PathPaymentStrictSend(PathPaymentStrictSendResult),
46310 CreateClaimableBalance(CreateClaimableBalanceResult),
46311 ClaimClaimableBalance(ClaimClaimableBalanceResult),
46312 BeginSponsoringFutureReserves(BeginSponsoringFutureReservesResult),
46313 EndSponsoringFutureReserves(EndSponsoringFutureReservesResult),
46314 RevokeSponsorship(RevokeSponsorshipResult),
46315 Clawback(ClawbackResult),
46316 ClawbackClaimableBalance(ClawbackClaimableBalanceResult),
46317 SetTrustLineFlags(SetTrustLineFlagsResult),
46318 LiquidityPoolDeposit(LiquidityPoolDepositResult),
46319 LiquidityPoolWithdraw(LiquidityPoolWithdrawResult),
46320 InvokeHostFunction(InvokeHostFunctionResult),
46321 ExtendFootprintTtl(ExtendFootprintTtlResult),
46322 RestoreFootprint(RestoreFootprintResult),
46323}
46324
46325#[cfg(feature = "alloc")]
46326impl Default for OperationResultTr {
46327 fn default() -> Self {
46328 Self::CreateAccount(CreateAccountResult::default())
46329 }
46330}
46331
46332impl OperationResultTr {
46333 pub const VARIANTS: [OperationType; 27] = [
46334 OperationType::CreateAccount,
46335 OperationType::Payment,
46336 OperationType::PathPaymentStrictReceive,
46337 OperationType::ManageSellOffer,
46338 OperationType::CreatePassiveSellOffer,
46339 OperationType::SetOptions,
46340 OperationType::ChangeTrust,
46341 OperationType::AllowTrust,
46342 OperationType::AccountMerge,
46343 OperationType::Inflation,
46344 OperationType::ManageData,
46345 OperationType::BumpSequence,
46346 OperationType::ManageBuyOffer,
46347 OperationType::PathPaymentStrictSend,
46348 OperationType::CreateClaimableBalance,
46349 OperationType::ClaimClaimableBalance,
46350 OperationType::BeginSponsoringFutureReserves,
46351 OperationType::EndSponsoringFutureReserves,
46352 OperationType::RevokeSponsorship,
46353 OperationType::Clawback,
46354 OperationType::ClawbackClaimableBalance,
46355 OperationType::SetTrustLineFlags,
46356 OperationType::LiquidityPoolDeposit,
46357 OperationType::LiquidityPoolWithdraw,
46358 OperationType::InvokeHostFunction,
46359 OperationType::ExtendFootprintTtl,
46360 OperationType::RestoreFootprint,
46361 ];
46362 pub const VARIANTS_STR: [&'static str; 27] = [
46363 "CreateAccount",
46364 "Payment",
46365 "PathPaymentStrictReceive",
46366 "ManageSellOffer",
46367 "CreatePassiveSellOffer",
46368 "SetOptions",
46369 "ChangeTrust",
46370 "AllowTrust",
46371 "AccountMerge",
46372 "Inflation",
46373 "ManageData",
46374 "BumpSequence",
46375 "ManageBuyOffer",
46376 "PathPaymentStrictSend",
46377 "CreateClaimableBalance",
46378 "ClaimClaimableBalance",
46379 "BeginSponsoringFutureReserves",
46380 "EndSponsoringFutureReserves",
46381 "RevokeSponsorship",
46382 "Clawback",
46383 "ClawbackClaimableBalance",
46384 "SetTrustLineFlags",
46385 "LiquidityPoolDeposit",
46386 "LiquidityPoolWithdraw",
46387 "InvokeHostFunction",
46388 "ExtendFootprintTtl",
46389 "RestoreFootprint",
46390 ];
46391
46392 #[must_use]
46393 pub const fn name(&self) -> &'static str {
46394 match self {
46395 Self::CreateAccount(_) => "CreateAccount",
46396 Self::Payment(_) => "Payment",
46397 Self::PathPaymentStrictReceive(_) => "PathPaymentStrictReceive",
46398 Self::ManageSellOffer(_) => "ManageSellOffer",
46399 Self::CreatePassiveSellOffer(_) => "CreatePassiveSellOffer",
46400 Self::SetOptions(_) => "SetOptions",
46401 Self::ChangeTrust(_) => "ChangeTrust",
46402 Self::AllowTrust(_) => "AllowTrust",
46403 Self::AccountMerge(_) => "AccountMerge",
46404 Self::Inflation(_) => "Inflation",
46405 Self::ManageData(_) => "ManageData",
46406 Self::BumpSequence(_) => "BumpSequence",
46407 Self::ManageBuyOffer(_) => "ManageBuyOffer",
46408 Self::PathPaymentStrictSend(_) => "PathPaymentStrictSend",
46409 Self::CreateClaimableBalance(_) => "CreateClaimableBalance",
46410 Self::ClaimClaimableBalance(_) => "ClaimClaimableBalance",
46411 Self::BeginSponsoringFutureReserves(_) => "BeginSponsoringFutureReserves",
46412 Self::EndSponsoringFutureReserves(_) => "EndSponsoringFutureReserves",
46413 Self::RevokeSponsorship(_) => "RevokeSponsorship",
46414 Self::Clawback(_) => "Clawback",
46415 Self::ClawbackClaimableBalance(_) => "ClawbackClaimableBalance",
46416 Self::SetTrustLineFlags(_) => "SetTrustLineFlags",
46417 Self::LiquidityPoolDeposit(_) => "LiquidityPoolDeposit",
46418 Self::LiquidityPoolWithdraw(_) => "LiquidityPoolWithdraw",
46419 Self::InvokeHostFunction(_) => "InvokeHostFunction",
46420 Self::ExtendFootprintTtl(_) => "ExtendFootprintTtl",
46421 Self::RestoreFootprint(_) => "RestoreFootprint",
46422 }
46423 }
46424
46425 #[must_use]
46426 pub const fn discriminant(&self) -> OperationType {
46427 #[allow(clippy::match_same_arms)]
46428 match self {
46429 Self::CreateAccount(_) => OperationType::CreateAccount,
46430 Self::Payment(_) => OperationType::Payment,
46431 Self::PathPaymentStrictReceive(_) => OperationType::PathPaymentStrictReceive,
46432 Self::ManageSellOffer(_) => OperationType::ManageSellOffer,
46433 Self::CreatePassiveSellOffer(_) => OperationType::CreatePassiveSellOffer,
46434 Self::SetOptions(_) => OperationType::SetOptions,
46435 Self::ChangeTrust(_) => OperationType::ChangeTrust,
46436 Self::AllowTrust(_) => OperationType::AllowTrust,
46437 Self::AccountMerge(_) => OperationType::AccountMerge,
46438 Self::Inflation(_) => OperationType::Inflation,
46439 Self::ManageData(_) => OperationType::ManageData,
46440 Self::BumpSequence(_) => OperationType::BumpSequence,
46441 Self::ManageBuyOffer(_) => OperationType::ManageBuyOffer,
46442 Self::PathPaymentStrictSend(_) => OperationType::PathPaymentStrictSend,
46443 Self::CreateClaimableBalance(_) => OperationType::CreateClaimableBalance,
46444 Self::ClaimClaimableBalance(_) => OperationType::ClaimClaimableBalance,
46445 Self::BeginSponsoringFutureReserves(_) => OperationType::BeginSponsoringFutureReserves,
46446 Self::EndSponsoringFutureReserves(_) => OperationType::EndSponsoringFutureReserves,
46447 Self::RevokeSponsorship(_) => OperationType::RevokeSponsorship,
46448 Self::Clawback(_) => OperationType::Clawback,
46449 Self::ClawbackClaimableBalance(_) => OperationType::ClawbackClaimableBalance,
46450 Self::SetTrustLineFlags(_) => OperationType::SetTrustLineFlags,
46451 Self::LiquidityPoolDeposit(_) => OperationType::LiquidityPoolDeposit,
46452 Self::LiquidityPoolWithdraw(_) => OperationType::LiquidityPoolWithdraw,
46453 Self::InvokeHostFunction(_) => OperationType::InvokeHostFunction,
46454 Self::ExtendFootprintTtl(_) => OperationType::ExtendFootprintTtl,
46455 Self::RestoreFootprint(_) => OperationType::RestoreFootprint,
46456 }
46457 }
46458
46459 #[must_use]
46460 pub const fn variants() -> [OperationType; 27] {
46461 Self::VARIANTS
46462 }
46463}
46464
46465impl Name for OperationResultTr {
46466 #[must_use]
46467 fn name(&self) -> &'static str {
46468 Self::name(self)
46469 }
46470}
46471
46472impl Discriminant<OperationType> for OperationResultTr {
46473 #[must_use]
46474 fn discriminant(&self) -> OperationType {
46475 Self::discriminant(self)
46476 }
46477}
46478
46479impl Variants<OperationType> for OperationResultTr {
46480 fn variants() -> slice::Iter<'static, OperationType> {
46481 Self::VARIANTS.iter()
46482 }
46483}
46484
46485impl Union<OperationType> for OperationResultTr {}
46486
46487impl ReadXdr for OperationResultTr {
46488 #[cfg(feature = "std")]
46489 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
46490 r.with_limited_depth(|r| {
46491 let dv: OperationType = <OperationType as ReadXdr>::read_xdr(r)?;
46492 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
46493 let v = match dv {
46494 OperationType::CreateAccount => {
46495 Self::CreateAccount(CreateAccountResult::read_xdr(r)?)
46496 }
46497 OperationType::Payment => Self::Payment(PaymentResult::read_xdr(r)?),
46498 OperationType::PathPaymentStrictReceive => {
46499 Self::PathPaymentStrictReceive(PathPaymentStrictReceiveResult::read_xdr(r)?)
46500 }
46501 OperationType::ManageSellOffer => {
46502 Self::ManageSellOffer(ManageSellOfferResult::read_xdr(r)?)
46503 }
46504 OperationType::CreatePassiveSellOffer => {
46505 Self::CreatePassiveSellOffer(ManageSellOfferResult::read_xdr(r)?)
46506 }
46507 OperationType::SetOptions => Self::SetOptions(SetOptionsResult::read_xdr(r)?),
46508 OperationType::ChangeTrust => Self::ChangeTrust(ChangeTrustResult::read_xdr(r)?),
46509 OperationType::AllowTrust => Self::AllowTrust(AllowTrustResult::read_xdr(r)?),
46510 OperationType::AccountMerge => Self::AccountMerge(AccountMergeResult::read_xdr(r)?),
46511 OperationType::Inflation => Self::Inflation(InflationResult::read_xdr(r)?),
46512 OperationType::ManageData => Self::ManageData(ManageDataResult::read_xdr(r)?),
46513 OperationType::BumpSequence => Self::BumpSequence(BumpSequenceResult::read_xdr(r)?),
46514 OperationType::ManageBuyOffer => {
46515 Self::ManageBuyOffer(ManageBuyOfferResult::read_xdr(r)?)
46516 }
46517 OperationType::PathPaymentStrictSend => {
46518 Self::PathPaymentStrictSend(PathPaymentStrictSendResult::read_xdr(r)?)
46519 }
46520 OperationType::CreateClaimableBalance => {
46521 Self::CreateClaimableBalance(CreateClaimableBalanceResult::read_xdr(r)?)
46522 }
46523 OperationType::ClaimClaimableBalance => {
46524 Self::ClaimClaimableBalance(ClaimClaimableBalanceResult::read_xdr(r)?)
46525 }
46526 OperationType::BeginSponsoringFutureReserves => {
46527 Self::BeginSponsoringFutureReserves(
46528 BeginSponsoringFutureReservesResult::read_xdr(r)?,
46529 )
46530 }
46531 OperationType::EndSponsoringFutureReserves => Self::EndSponsoringFutureReserves(
46532 EndSponsoringFutureReservesResult::read_xdr(r)?,
46533 ),
46534 OperationType::RevokeSponsorship => {
46535 Self::RevokeSponsorship(RevokeSponsorshipResult::read_xdr(r)?)
46536 }
46537 OperationType::Clawback => Self::Clawback(ClawbackResult::read_xdr(r)?),
46538 OperationType::ClawbackClaimableBalance => {
46539 Self::ClawbackClaimableBalance(ClawbackClaimableBalanceResult::read_xdr(r)?)
46540 }
46541 OperationType::SetTrustLineFlags => {
46542 Self::SetTrustLineFlags(SetTrustLineFlagsResult::read_xdr(r)?)
46543 }
46544 OperationType::LiquidityPoolDeposit => {
46545 Self::LiquidityPoolDeposit(LiquidityPoolDepositResult::read_xdr(r)?)
46546 }
46547 OperationType::LiquidityPoolWithdraw => {
46548 Self::LiquidityPoolWithdraw(LiquidityPoolWithdrawResult::read_xdr(r)?)
46549 }
46550 OperationType::InvokeHostFunction => {
46551 Self::InvokeHostFunction(InvokeHostFunctionResult::read_xdr(r)?)
46552 }
46553 OperationType::ExtendFootprintTtl => {
46554 Self::ExtendFootprintTtl(ExtendFootprintTtlResult::read_xdr(r)?)
46555 }
46556 OperationType::RestoreFootprint => {
46557 Self::RestoreFootprint(RestoreFootprintResult::read_xdr(r)?)
46558 }
46559 #[allow(unreachable_patterns)]
46560 _ => return Err(Error::Invalid),
46561 };
46562 Ok(v)
46563 })
46564 }
46565}
46566
46567impl WriteXdr for OperationResultTr {
46568 #[cfg(feature = "std")]
46569 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
46570 w.with_limited_depth(|w| {
46571 self.discriminant().write_xdr(w)?;
46572 #[allow(clippy::match_same_arms)]
46573 match self {
46574 Self::CreateAccount(v) => v.write_xdr(w)?,
46575 Self::Payment(v) => v.write_xdr(w)?,
46576 Self::PathPaymentStrictReceive(v) => v.write_xdr(w)?,
46577 Self::ManageSellOffer(v) => v.write_xdr(w)?,
46578 Self::CreatePassiveSellOffer(v) => v.write_xdr(w)?,
46579 Self::SetOptions(v) => v.write_xdr(w)?,
46580 Self::ChangeTrust(v) => v.write_xdr(w)?,
46581 Self::AllowTrust(v) => v.write_xdr(w)?,
46582 Self::AccountMerge(v) => v.write_xdr(w)?,
46583 Self::Inflation(v) => v.write_xdr(w)?,
46584 Self::ManageData(v) => v.write_xdr(w)?,
46585 Self::BumpSequence(v) => v.write_xdr(w)?,
46586 Self::ManageBuyOffer(v) => v.write_xdr(w)?,
46587 Self::PathPaymentStrictSend(v) => v.write_xdr(w)?,
46588 Self::CreateClaimableBalance(v) => v.write_xdr(w)?,
46589 Self::ClaimClaimableBalance(v) => v.write_xdr(w)?,
46590 Self::BeginSponsoringFutureReserves(v) => v.write_xdr(w)?,
46591 Self::EndSponsoringFutureReserves(v) => v.write_xdr(w)?,
46592 Self::RevokeSponsorship(v) => v.write_xdr(w)?,
46593 Self::Clawback(v) => v.write_xdr(w)?,
46594 Self::ClawbackClaimableBalance(v) => v.write_xdr(w)?,
46595 Self::SetTrustLineFlags(v) => v.write_xdr(w)?,
46596 Self::LiquidityPoolDeposit(v) => v.write_xdr(w)?,
46597 Self::LiquidityPoolWithdraw(v) => v.write_xdr(w)?,
46598 Self::InvokeHostFunction(v) => v.write_xdr(w)?,
46599 Self::ExtendFootprintTtl(v) => v.write_xdr(w)?,
46600 Self::RestoreFootprint(v) => v.write_xdr(w)?,
46601 };
46602 Ok(())
46603 })
46604 }
46605}
46606
46607#[cfg_eval::cfg_eval]
46683#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
46684#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
46685#[cfg_attr(
46686 all(feature = "serde", feature = "alloc"),
46687 serde_with::serde_as,
46688 derive(serde::Serialize, serde::Deserialize),
46689 serde(rename_all = "snake_case")
46690)]
46691#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
46692#[allow(clippy::large_enum_variant)]
46693pub enum OperationResult {
46694 OpInner(OperationResultTr),
46695 OpBadAuth,
46696 OpNoAccount,
46697 OpNotSupported,
46698 OpTooManySubentries,
46699 OpExceededWorkLimit,
46700 OpTooManySponsoring,
46701}
46702
46703#[cfg(feature = "alloc")]
46704impl Default for OperationResult {
46705 fn default() -> Self {
46706 Self::OpInner(OperationResultTr::default())
46707 }
46708}
46709
46710impl OperationResult {
46711 pub const VARIANTS: [OperationResultCode; 7] = [
46712 OperationResultCode::OpInner,
46713 OperationResultCode::OpBadAuth,
46714 OperationResultCode::OpNoAccount,
46715 OperationResultCode::OpNotSupported,
46716 OperationResultCode::OpTooManySubentries,
46717 OperationResultCode::OpExceededWorkLimit,
46718 OperationResultCode::OpTooManySponsoring,
46719 ];
46720 pub const VARIANTS_STR: [&'static str; 7] = [
46721 "OpInner",
46722 "OpBadAuth",
46723 "OpNoAccount",
46724 "OpNotSupported",
46725 "OpTooManySubentries",
46726 "OpExceededWorkLimit",
46727 "OpTooManySponsoring",
46728 ];
46729
46730 #[must_use]
46731 pub const fn name(&self) -> &'static str {
46732 match self {
46733 Self::OpInner(_) => "OpInner",
46734 Self::OpBadAuth => "OpBadAuth",
46735 Self::OpNoAccount => "OpNoAccount",
46736 Self::OpNotSupported => "OpNotSupported",
46737 Self::OpTooManySubentries => "OpTooManySubentries",
46738 Self::OpExceededWorkLimit => "OpExceededWorkLimit",
46739 Self::OpTooManySponsoring => "OpTooManySponsoring",
46740 }
46741 }
46742
46743 #[must_use]
46744 pub const fn discriminant(&self) -> OperationResultCode {
46745 #[allow(clippy::match_same_arms)]
46746 match self {
46747 Self::OpInner(_) => OperationResultCode::OpInner,
46748 Self::OpBadAuth => OperationResultCode::OpBadAuth,
46749 Self::OpNoAccount => OperationResultCode::OpNoAccount,
46750 Self::OpNotSupported => OperationResultCode::OpNotSupported,
46751 Self::OpTooManySubentries => OperationResultCode::OpTooManySubentries,
46752 Self::OpExceededWorkLimit => OperationResultCode::OpExceededWorkLimit,
46753 Self::OpTooManySponsoring => OperationResultCode::OpTooManySponsoring,
46754 }
46755 }
46756
46757 #[must_use]
46758 pub const fn variants() -> [OperationResultCode; 7] {
46759 Self::VARIANTS
46760 }
46761}
46762
46763impl Name for OperationResult {
46764 #[must_use]
46765 fn name(&self) -> &'static str {
46766 Self::name(self)
46767 }
46768}
46769
46770impl Discriminant<OperationResultCode> for OperationResult {
46771 #[must_use]
46772 fn discriminant(&self) -> OperationResultCode {
46773 Self::discriminant(self)
46774 }
46775}
46776
46777impl Variants<OperationResultCode> for OperationResult {
46778 fn variants() -> slice::Iter<'static, OperationResultCode> {
46779 Self::VARIANTS.iter()
46780 }
46781}
46782
46783impl Union<OperationResultCode> for OperationResult {}
46784
46785impl ReadXdr for OperationResult {
46786 #[cfg(feature = "std")]
46787 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
46788 r.with_limited_depth(|r| {
46789 let dv: OperationResultCode = <OperationResultCode as ReadXdr>::read_xdr(r)?;
46790 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
46791 let v = match dv {
46792 OperationResultCode::OpInner => Self::OpInner(OperationResultTr::read_xdr(r)?),
46793 OperationResultCode::OpBadAuth => Self::OpBadAuth,
46794 OperationResultCode::OpNoAccount => Self::OpNoAccount,
46795 OperationResultCode::OpNotSupported => Self::OpNotSupported,
46796 OperationResultCode::OpTooManySubentries => Self::OpTooManySubentries,
46797 OperationResultCode::OpExceededWorkLimit => Self::OpExceededWorkLimit,
46798 OperationResultCode::OpTooManySponsoring => Self::OpTooManySponsoring,
46799 #[allow(unreachable_patterns)]
46800 _ => return Err(Error::Invalid),
46801 };
46802 Ok(v)
46803 })
46804 }
46805}
46806
46807impl WriteXdr for OperationResult {
46808 #[cfg(feature = "std")]
46809 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
46810 w.with_limited_depth(|w| {
46811 self.discriminant().write_xdr(w)?;
46812 #[allow(clippy::match_same_arms)]
46813 match self {
46814 Self::OpInner(v) => v.write_xdr(w)?,
46815 Self::OpBadAuth => ().write_xdr(w)?,
46816 Self::OpNoAccount => ().write_xdr(w)?,
46817 Self::OpNotSupported => ().write_xdr(w)?,
46818 Self::OpTooManySubentries => ().write_xdr(w)?,
46819 Self::OpExceededWorkLimit => ().write_xdr(w)?,
46820 Self::OpTooManySponsoring => ().write_xdr(w)?,
46821 };
46822 Ok(())
46823 })
46824 }
46825}
46826
46827#[cfg_attr(feature = "alloc", derive(Default))]
46860#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
46861#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
46862#[cfg_attr(
46863 all(feature = "serde", feature = "alloc"),
46864 derive(serde::Serialize, serde::Deserialize),
46865 serde(rename_all = "snake_case")
46866)]
46867#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
46868#[repr(i32)]
46869pub enum TransactionResultCode {
46870 #[cfg_attr(feature = "alloc", default)]
46871 TxFeeBumpInnerSuccess = 1,
46872 TxSuccess = 0,
46873 TxFailed = -1,
46874 TxTooEarly = -2,
46875 TxTooLate = -3,
46876 TxMissingOperation = -4,
46877 TxBadSeq = -5,
46878 TxBadAuth = -6,
46879 TxInsufficientBalance = -7,
46880 TxNoAccount = -8,
46881 TxInsufficientFee = -9,
46882 TxBadAuthExtra = -10,
46883 TxInternalError = -11,
46884 TxNotSupported = -12,
46885 TxFeeBumpInnerFailed = -13,
46886 TxBadSponsorship = -14,
46887 TxBadMinSeqAgeOrGap = -15,
46888 TxMalformed = -16,
46889 TxSorobanInvalid = -17,
46890}
46891
46892impl TransactionResultCode {
46893 pub const VARIANTS: [TransactionResultCode; 19] = [
46894 TransactionResultCode::TxFeeBumpInnerSuccess,
46895 TransactionResultCode::TxSuccess,
46896 TransactionResultCode::TxFailed,
46897 TransactionResultCode::TxTooEarly,
46898 TransactionResultCode::TxTooLate,
46899 TransactionResultCode::TxMissingOperation,
46900 TransactionResultCode::TxBadSeq,
46901 TransactionResultCode::TxBadAuth,
46902 TransactionResultCode::TxInsufficientBalance,
46903 TransactionResultCode::TxNoAccount,
46904 TransactionResultCode::TxInsufficientFee,
46905 TransactionResultCode::TxBadAuthExtra,
46906 TransactionResultCode::TxInternalError,
46907 TransactionResultCode::TxNotSupported,
46908 TransactionResultCode::TxFeeBumpInnerFailed,
46909 TransactionResultCode::TxBadSponsorship,
46910 TransactionResultCode::TxBadMinSeqAgeOrGap,
46911 TransactionResultCode::TxMalformed,
46912 TransactionResultCode::TxSorobanInvalid,
46913 ];
46914 pub const VARIANTS_STR: [&'static str; 19] = [
46915 "TxFeeBumpInnerSuccess",
46916 "TxSuccess",
46917 "TxFailed",
46918 "TxTooEarly",
46919 "TxTooLate",
46920 "TxMissingOperation",
46921 "TxBadSeq",
46922 "TxBadAuth",
46923 "TxInsufficientBalance",
46924 "TxNoAccount",
46925 "TxInsufficientFee",
46926 "TxBadAuthExtra",
46927 "TxInternalError",
46928 "TxNotSupported",
46929 "TxFeeBumpInnerFailed",
46930 "TxBadSponsorship",
46931 "TxBadMinSeqAgeOrGap",
46932 "TxMalformed",
46933 "TxSorobanInvalid",
46934 ];
46935
46936 #[must_use]
46937 pub const fn name(&self) -> &'static str {
46938 match self {
46939 Self::TxFeeBumpInnerSuccess => "TxFeeBumpInnerSuccess",
46940 Self::TxSuccess => "TxSuccess",
46941 Self::TxFailed => "TxFailed",
46942 Self::TxTooEarly => "TxTooEarly",
46943 Self::TxTooLate => "TxTooLate",
46944 Self::TxMissingOperation => "TxMissingOperation",
46945 Self::TxBadSeq => "TxBadSeq",
46946 Self::TxBadAuth => "TxBadAuth",
46947 Self::TxInsufficientBalance => "TxInsufficientBalance",
46948 Self::TxNoAccount => "TxNoAccount",
46949 Self::TxInsufficientFee => "TxInsufficientFee",
46950 Self::TxBadAuthExtra => "TxBadAuthExtra",
46951 Self::TxInternalError => "TxInternalError",
46952 Self::TxNotSupported => "TxNotSupported",
46953 Self::TxFeeBumpInnerFailed => "TxFeeBumpInnerFailed",
46954 Self::TxBadSponsorship => "TxBadSponsorship",
46955 Self::TxBadMinSeqAgeOrGap => "TxBadMinSeqAgeOrGap",
46956 Self::TxMalformed => "TxMalformed",
46957 Self::TxSorobanInvalid => "TxSorobanInvalid",
46958 }
46959 }
46960
46961 #[must_use]
46962 pub const fn variants() -> [TransactionResultCode; 19] {
46963 Self::VARIANTS
46964 }
46965}
46966
46967impl Name for TransactionResultCode {
46968 #[must_use]
46969 fn name(&self) -> &'static str {
46970 Self::name(self)
46971 }
46972}
46973
46974impl Variants<TransactionResultCode> for TransactionResultCode {
46975 fn variants() -> slice::Iter<'static, TransactionResultCode> {
46976 Self::VARIANTS.iter()
46977 }
46978}
46979
46980impl Enum for TransactionResultCode {}
46981
46982impl fmt::Display for TransactionResultCode {
46983 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
46984 f.write_str(self.name())
46985 }
46986}
46987
46988impl TryFrom<i32> for TransactionResultCode {
46989 type Error = Error;
46990
46991 fn try_from(i: i32) -> Result<Self, Error> {
46992 let e = match i {
46993 1 => TransactionResultCode::TxFeeBumpInnerSuccess,
46994 0 => TransactionResultCode::TxSuccess,
46995 -1 => TransactionResultCode::TxFailed,
46996 -2 => TransactionResultCode::TxTooEarly,
46997 -3 => TransactionResultCode::TxTooLate,
46998 -4 => TransactionResultCode::TxMissingOperation,
46999 -5 => TransactionResultCode::TxBadSeq,
47000 -6 => TransactionResultCode::TxBadAuth,
47001 -7 => TransactionResultCode::TxInsufficientBalance,
47002 -8 => TransactionResultCode::TxNoAccount,
47003 -9 => TransactionResultCode::TxInsufficientFee,
47004 -10 => TransactionResultCode::TxBadAuthExtra,
47005 -11 => TransactionResultCode::TxInternalError,
47006 -12 => TransactionResultCode::TxNotSupported,
47007 -13 => TransactionResultCode::TxFeeBumpInnerFailed,
47008 -14 => TransactionResultCode::TxBadSponsorship,
47009 -15 => TransactionResultCode::TxBadMinSeqAgeOrGap,
47010 -16 => TransactionResultCode::TxMalformed,
47011 -17 => TransactionResultCode::TxSorobanInvalid,
47012 #[allow(unreachable_patterns)]
47013 _ => return Err(Error::Invalid),
47014 };
47015 Ok(e)
47016 }
47017}
47018
47019impl From<TransactionResultCode> for i32 {
47020 #[must_use]
47021 fn from(e: TransactionResultCode) -> Self {
47022 e as Self
47023 }
47024}
47025
47026impl ReadXdr for TransactionResultCode {
47027 #[cfg(feature = "std")]
47028 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47029 r.with_limited_depth(|r| {
47030 let e = i32::read_xdr(r)?;
47031 let v: Self = e.try_into()?;
47032 Ok(v)
47033 })
47034 }
47035}
47036
47037impl WriteXdr for TransactionResultCode {
47038 #[cfg(feature = "std")]
47039 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47040 w.with_limited_depth(|w| {
47041 let i: i32 = (*self).into();
47042 i.write_xdr(w)
47043 })
47044 }
47045}
47046
47047#[cfg_eval::cfg_eval]
47078#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47079#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47080#[cfg_attr(
47081 all(feature = "serde", feature = "alloc"),
47082 serde_with::serde_as,
47083 derive(serde::Serialize, serde::Deserialize),
47084 serde(rename_all = "snake_case")
47085)]
47086#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47087#[allow(clippy::large_enum_variant)]
47088pub enum InnerTransactionResultResult {
47089 TxSuccess(VecM<OperationResult>),
47090 TxFailed(VecM<OperationResult>),
47091 TxTooEarly,
47092 TxTooLate,
47093 TxMissingOperation,
47094 TxBadSeq,
47095 TxBadAuth,
47096 TxInsufficientBalance,
47097 TxNoAccount,
47098 TxInsufficientFee,
47099 TxBadAuthExtra,
47100 TxInternalError,
47101 TxNotSupported,
47102 TxBadSponsorship,
47103 TxBadMinSeqAgeOrGap,
47104 TxMalformed,
47105 TxSorobanInvalid,
47106}
47107
47108#[cfg(feature = "alloc")]
47109impl Default for InnerTransactionResultResult {
47110 fn default() -> Self {
47111 Self::TxSuccess(VecM::<OperationResult>::default())
47112 }
47113}
47114
47115impl InnerTransactionResultResult {
47116 pub const VARIANTS: [TransactionResultCode; 17] = [
47117 TransactionResultCode::TxSuccess,
47118 TransactionResultCode::TxFailed,
47119 TransactionResultCode::TxTooEarly,
47120 TransactionResultCode::TxTooLate,
47121 TransactionResultCode::TxMissingOperation,
47122 TransactionResultCode::TxBadSeq,
47123 TransactionResultCode::TxBadAuth,
47124 TransactionResultCode::TxInsufficientBalance,
47125 TransactionResultCode::TxNoAccount,
47126 TransactionResultCode::TxInsufficientFee,
47127 TransactionResultCode::TxBadAuthExtra,
47128 TransactionResultCode::TxInternalError,
47129 TransactionResultCode::TxNotSupported,
47130 TransactionResultCode::TxBadSponsorship,
47131 TransactionResultCode::TxBadMinSeqAgeOrGap,
47132 TransactionResultCode::TxMalformed,
47133 TransactionResultCode::TxSorobanInvalid,
47134 ];
47135 pub const VARIANTS_STR: [&'static str; 17] = [
47136 "TxSuccess",
47137 "TxFailed",
47138 "TxTooEarly",
47139 "TxTooLate",
47140 "TxMissingOperation",
47141 "TxBadSeq",
47142 "TxBadAuth",
47143 "TxInsufficientBalance",
47144 "TxNoAccount",
47145 "TxInsufficientFee",
47146 "TxBadAuthExtra",
47147 "TxInternalError",
47148 "TxNotSupported",
47149 "TxBadSponsorship",
47150 "TxBadMinSeqAgeOrGap",
47151 "TxMalformed",
47152 "TxSorobanInvalid",
47153 ];
47154
47155 #[must_use]
47156 pub const fn name(&self) -> &'static str {
47157 match self {
47158 Self::TxSuccess(_) => "TxSuccess",
47159 Self::TxFailed(_) => "TxFailed",
47160 Self::TxTooEarly => "TxTooEarly",
47161 Self::TxTooLate => "TxTooLate",
47162 Self::TxMissingOperation => "TxMissingOperation",
47163 Self::TxBadSeq => "TxBadSeq",
47164 Self::TxBadAuth => "TxBadAuth",
47165 Self::TxInsufficientBalance => "TxInsufficientBalance",
47166 Self::TxNoAccount => "TxNoAccount",
47167 Self::TxInsufficientFee => "TxInsufficientFee",
47168 Self::TxBadAuthExtra => "TxBadAuthExtra",
47169 Self::TxInternalError => "TxInternalError",
47170 Self::TxNotSupported => "TxNotSupported",
47171 Self::TxBadSponsorship => "TxBadSponsorship",
47172 Self::TxBadMinSeqAgeOrGap => "TxBadMinSeqAgeOrGap",
47173 Self::TxMalformed => "TxMalformed",
47174 Self::TxSorobanInvalid => "TxSorobanInvalid",
47175 }
47176 }
47177
47178 #[must_use]
47179 pub const fn discriminant(&self) -> TransactionResultCode {
47180 #[allow(clippy::match_same_arms)]
47181 match self {
47182 Self::TxSuccess(_) => TransactionResultCode::TxSuccess,
47183 Self::TxFailed(_) => TransactionResultCode::TxFailed,
47184 Self::TxTooEarly => TransactionResultCode::TxTooEarly,
47185 Self::TxTooLate => TransactionResultCode::TxTooLate,
47186 Self::TxMissingOperation => TransactionResultCode::TxMissingOperation,
47187 Self::TxBadSeq => TransactionResultCode::TxBadSeq,
47188 Self::TxBadAuth => TransactionResultCode::TxBadAuth,
47189 Self::TxInsufficientBalance => TransactionResultCode::TxInsufficientBalance,
47190 Self::TxNoAccount => TransactionResultCode::TxNoAccount,
47191 Self::TxInsufficientFee => TransactionResultCode::TxInsufficientFee,
47192 Self::TxBadAuthExtra => TransactionResultCode::TxBadAuthExtra,
47193 Self::TxInternalError => TransactionResultCode::TxInternalError,
47194 Self::TxNotSupported => TransactionResultCode::TxNotSupported,
47195 Self::TxBadSponsorship => TransactionResultCode::TxBadSponsorship,
47196 Self::TxBadMinSeqAgeOrGap => TransactionResultCode::TxBadMinSeqAgeOrGap,
47197 Self::TxMalformed => TransactionResultCode::TxMalformed,
47198 Self::TxSorobanInvalid => TransactionResultCode::TxSorobanInvalid,
47199 }
47200 }
47201
47202 #[must_use]
47203 pub const fn variants() -> [TransactionResultCode; 17] {
47204 Self::VARIANTS
47205 }
47206}
47207
47208impl Name for InnerTransactionResultResult {
47209 #[must_use]
47210 fn name(&self) -> &'static str {
47211 Self::name(self)
47212 }
47213}
47214
47215impl Discriminant<TransactionResultCode> for InnerTransactionResultResult {
47216 #[must_use]
47217 fn discriminant(&self) -> TransactionResultCode {
47218 Self::discriminant(self)
47219 }
47220}
47221
47222impl Variants<TransactionResultCode> for InnerTransactionResultResult {
47223 fn variants() -> slice::Iter<'static, TransactionResultCode> {
47224 Self::VARIANTS.iter()
47225 }
47226}
47227
47228impl Union<TransactionResultCode> for InnerTransactionResultResult {}
47229
47230impl ReadXdr for InnerTransactionResultResult {
47231 #[cfg(feature = "std")]
47232 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47233 r.with_limited_depth(|r| {
47234 let dv: TransactionResultCode = <TransactionResultCode as ReadXdr>::read_xdr(r)?;
47235 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
47236 let v = match dv {
47237 TransactionResultCode::TxSuccess => {
47238 Self::TxSuccess(VecM::<OperationResult>::read_xdr(r)?)
47239 }
47240 TransactionResultCode::TxFailed => {
47241 Self::TxFailed(VecM::<OperationResult>::read_xdr(r)?)
47242 }
47243 TransactionResultCode::TxTooEarly => Self::TxTooEarly,
47244 TransactionResultCode::TxTooLate => Self::TxTooLate,
47245 TransactionResultCode::TxMissingOperation => Self::TxMissingOperation,
47246 TransactionResultCode::TxBadSeq => Self::TxBadSeq,
47247 TransactionResultCode::TxBadAuth => Self::TxBadAuth,
47248 TransactionResultCode::TxInsufficientBalance => Self::TxInsufficientBalance,
47249 TransactionResultCode::TxNoAccount => Self::TxNoAccount,
47250 TransactionResultCode::TxInsufficientFee => Self::TxInsufficientFee,
47251 TransactionResultCode::TxBadAuthExtra => Self::TxBadAuthExtra,
47252 TransactionResultCode::TxInternalError => Self::TxInternalError,
47253 TransactionResultCode::TxNotSupported => Self::TxNotSupported,
47254 TransactionResultCode::TxBadSponsorship => Self::TxBadSponsorship,
47255 TransactionResultCode::TxBadMinSeqAgeOrGap => Self::TxBadMinSeqAgeOrGap,
47256 TransactionResultCode::TxMalformed => Self::TxMalformed,
47257 TransactionResultCode::TxSorobanInvalid => Self::TxSorobanInvalid,
47258 #[allow(unreachable_patterns)]
47259 _ => return Err(Error::Invalid),
47260 };
47261 Ok(v)
47262 })
47263 }
47264}
47265
47266impl WriteXdr for InnerTransactionResultResult {
47267 #[cfg(feature = "std")]
47268 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47269 w.with_limited_depth(|w| {
47270 self.discriminant().write_xdr(w)?;
47271 #[allow(clippy::match_same_arms)]
47272 match self {
47273 Self::TxSuccess(v) => v.write_xdr(w)?,
47274 Self::TxFailed(v) => v.write_xdr(w)?,
47275 Self::TxTooEarly => ().write_xdr(w)?,
47276 Self::TxTooLate => ().write_xdr(w)?,
47277 Self::TxMissingOperation => ().write_xdr(w)?,
47278 Self::TxBadSeq => ().write_xdr(w)?,
47279 Self::TxBadAuth => ().write_xdr(w)?,
47280 Self::TxInsufficientBalance => ().write_xdr(w)?,
47281 Self::TxNoAccount => ().write_xdr(w)?,
47282 Self::TxInsufficientFee => ().write_xdr(w)?,
47283 Self::TxBadAuthExtra => ().write_xdr(w)?,
47284 Self::TxInternalError => ().write_xdr(w)?,
47285 Self::TxNotSupported => ().write_xdr(w)?,
47286 Self::TxBadSponsorship => ().write_xdr(w)?,
47287 Self::TxBadMinSeqAgeOrGap => ().write_xdr(w)?,
47288 Self::TxMalformed => ().write_xdr(w)?,
47289 Self::TxSorobanInvalid => ().write_xdr(w)?,
47290 };
47291 Ok(())
47292 })
47293 }
47294}
47295
47296#[cfg_eval::cfg_eval]
47308#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47309#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47310#[cfg_attr(
47311 all(feature = "serde", feature = "alloc"),
47312 serde_with::serde_as,
47313 derive(serde::Serialize, serde::Deserialize),
47314 serde(rename_all = "snake_case")
47315)]
47316#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47317#[allow(clippy::large_enum_variant)]
47318pub enum InnerTransactionResultExt {
47319 V0,
47320}
47321
47322#[cfg(feature = "alloc")]
47323impl Default for InnerTransactionResultExt {
47324 fn default() -> Self {
47325 Self::V0
47326 }
47327}
47328
47329impl InnerTransactionResultExt {
47330 pub const VARIANTS: [i32; 1] = [0];
47331 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
47332
47333 #[must_use]
47334 pub const fn name(&self) -> &'static str {
47335 match self {
47336 Self::V0 => "V0",
47337 }
47338 }
47339
47340 #[must_use]
47341 pub const fn discriminant(&self) -> i32 {
47342 #[allow(clippy::match_same_arms)]
47343 match self {
47344 Self::V0 => 0,
47345 }
47346 }
47347
47348 #[must_use]
47349 pub const fn variants() -> [i32; 1] {
47350 Self::VARIANTS
47351 }
47352}
47353
47354impl Name for InnerTransactionResultExt {
47355 #[must_use]
47356 fn name(&self) -> &'static str {
47357 Self::name(self)
47358 }
47359}
47360
47361impl Discriminant<i32> for InnerTransactionResultExt {
47362 #[must_use]
47363 fn discriminant(&self) -> i32 {
47364 Self::discriminant(self)
47365 }
47366}
47367
47368impl Variants<i32> for InnerTransactionResultExt {
47369 fn variants() -> slice::Iter<'static, i32> {
47370 Self::VARIANTS.iter()
47371 }
47372}
47373
47374impl Union<i32> for InnerTransactionResultExt {}
47375
47376impl ReadXdr for InnerTransactionResultExt {
47377 #[cfg(feature = "std")]
47378 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47379 r.with_limited_depth(|r| {
47380 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
47381 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
47382 let v = match dv {
47383 0 => Self::V0,
47384 #[allow(unreachable_patterns)]
47385 _ => return Err(Error::Invalid),
47386 };
47387 Ok(v)
47388 })
47389 }
47390}
47391
47392impl WriteXdr for InnerTransactionResultExt {
47393 #[cfg(feature = "std")]
47394 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47395 w.with_limited_depth(|w| {
47396 self.discriminant().write_xdr(w)?;
47397 #[allow(clippy::match_same_arms)]
47398 match self {
47399 Self::V0 => ().write_xdr(w)?,
47400 };
47401 Ok(())
47402 })
47403 }
47404}
47405
47406#[cfg_attr(feature = "alloc", derive(Default))]
47451#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47452#[cfg_eval::cfg_eval]
47453#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47454#[cfg_attr(
47455 all(feature = "serde", feature = "alloc"),
47456 serde_with::serde_as,
47457 derive(serde::Serialize, serde::Deserialize),
47458 serde(rename_all = "snake_case")
47459)]
47460#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47461pub struct InnerTransactionResult {
47462 #[cfg_attr(
47463 all(feature = "serde", feature = "alloc"),
47464 serde_as(as = "NumberOrString")
47465 )]
47466 pub fee_charged: i64,
47467 pub result: InnerTransactionResultResult,
47468 pub ext: InnerTransactionResultExt,
47469}
47470
47471impl ReadXdr for InnerTransactionResult {
47472 #[cfg(feature = "std")]
47473 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47474 r.with_limited_depth(|r| {
47475 Ok(Self {
47476 fee_charged: i64::read_xdr(r)?,
47477 result: InnerTransactionResultResult::read_xdr(r)?,
47478 ext: InnerTransactionResultExt::read_xdr(r)?,
47479 })
47480 })
47481 }
47482}
47483
47484impl WriteXdr for InnerTransactionResult {
47485 #[cfg(feature = "std")]
47486 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47487 w.with_limited_depth(|w| {
47488 self.fee_charged.write_xdr(w)?;
47489 self.result.write_xdr(w)?;
47490 self.ext.write_xdr(w)?;
47491 Ok(())
47492 })
47493 }
47494}
47495
47496#[cfg_attr(feature = "alloc", derive(Default))]
47507#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47508#[cfg_eval::cfg_eval]
47509#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47510#[cfg_attr(
47511 all(feature = "serde", feature = "alloc"),
47512 serde_with::serde_as,
47513 derive(serde::Serialize, serde::Deserialize),
47514 serde(rename_all = "snake_case")
47515)]
47516#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47517pub struct InnerTransactionResultPair {
47518 pub transaction_hash: Hash,
47519 pub result: InnerTransactionResult,
47520}
47521
47522impl ReadXdr for InnerTransactionResultPair {
47523 #[cfg(feature = "std")]
47524 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47525 r.with_limited_depth(|r| {
47526 Ok(Self {
47527 transaction_hash: Hash::read_xdr(r)?,
47528 result: InnerTransactionResult::read_xdr(r)?,
47529 })
47530 })
47531 }
47532}
47533
47534impl WriteXdr for InnerTransactionResultPair {
47535 #[cfg(feature = "std")]
47536 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47537 w.with_limited_depth(|w| {
47538 self.transaction_hash.write_xdr(w)?;
47539 self.result.write_xdr(w)?;
47540 Ok(())
47541 })
47542 }
47543}
47544
47545#[cfg_eval::cfg_eval]
47578#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47579#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47580#[cfg_attr(
47581 all(feature = "serde", feature = "alloc"),
47582 serde_with::serde_as,
47583 derive(serde::Serialize, serde::Deserialize),
47584 serde(rename_all = "snake_case")
47585)]
47586#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47587#[allow(clippy::large_enum_variant)]
47588pub enum TransactionResultResult {
47589 TxFeeBumpInnerSuccess(InnerTransactionResultPair),
47590 TxFeeBumpInnerFailed(InnerTransactionResultPair),
47591 TxSuccess(VecM<OperationResult>),
47592 TxFailed(VecM<OperationResult>),
47593 TxTooEarly,
47594 TxTooLate,
47595 TxMissingOperation,
47596 TxBadSeq,
47597 TxBadAuth,
47598 TxInsufficientBalance,
47599 TxNoAccount,
47600 TxInsufficientFee,
47601 TxBadAuthExtra,
47602 TxInternalError,
47603 TxNotSupported,
47604 TxBadSponsorship,
47605 TxBadMinSeqAgeOrGap,
47606 TxMalformed,
47607 TxSorobanInvalid,
47608}
47609
47610#[cfg(feature = "alloc")]
47611impl Default for TransactionResultResult {
47612 fn default() -> Self {
47613 Self::TxFeeBumpInnerSuccess(InnerTransactionResultPair::default())
47614 }
47615}
47616
47617impl TransactionResultResult {
47618 pub const VARIANTS: [TransactionResultCode; 19] = [
47619 TransactionResultCode::TxFeeBumpInnerSuccess,
47620 TransactionResultCode::TxFeeBumpInnerFailed,
47621 TransactionResultCode::TxSuccess,
47622 TransactionResultCode::TxFailed,
47623 TransactionResultCode::TxTooEarly,
47624 TransactionResultCode::TxTooLate,
47625 TransactionResultCode::TxMissingOperation,
47626 TransactionResultCode::TxBadSeq,
47627 TransactionResultCode::TxBadAuth,
47628 TransactionResultCode::TxInsufficientBalance,
47629 TransactionResultCode::TxNoAccount,
47630 TransactionResultCode::TxInsufficientFee,
47631 TransactionResultCode::TxBadAuthExtra,
47632 TransactionResultCode::TxInternalError,
47633 TransactionResultCode::TxNotSupported,
47634 TransactionResultCode::TxBadSponsorship,
47635 TransactionResultCode::TxBadMinSeqAgeOrGap,
47636 TransactionResultCode::TxMalformed,
47637 TransactionResultCode::TxSorobanInvalid,
47638 ];
47639 pub const VARIANTS_STR: [&'static str; 19] = [
47640 "TxFeeBumpInnerSuccess",
47641 "TxFeeBumpInnerFailed",
47642 "TxSuccess",
47643 "TxFailed",
47644 "TxTooEarly",
47645 "TxTooLate",
47646 "TxMissingOperation",
47647 "TxBadSeq",
47648 "TxBadAuth",
47649 "TxInsufficientBalance",
47650 "TxNoAccount",
47651 "TxInsufficientFee",
47652 "TxBadAuthExtra",
47653 "TxInternalError",
47654 "TxNotSupported",
47655 "TxBadSponsorship",
47656 "TxBadMinSeqAgeOrGap",
47657 "TxMalformed",
47658 "TxSorobanInvalid",
47659 ];
47660
47661 #[must_use]
47662 pub const fn name(&self) -> &'static str {
47663 match self {
47664 Self::TxFeeBumpInnerSuccess(_) => "TxFeeBumpInnerSuccess",
47665 Self::TxFeeBumpInnerFailed(_) => "TxFeeBumpInnerFailed",
47666 Self::TxSuccess(_) => "TxSuccess",
47667 Self::TxFailed(_) => "TxFailed",
47668 Self::TxTooEarly => "TxTooEarly",
47669 Self::TxTooLate => "TxTooLate",
47670 Self::TxMissingOperation => "TxMissingOperation",
47671 Self::TxBadSeq => "TxBadSeq",
47672 Self::TxBadAuth => "TxBadAuth",
47673 Self::TxInsufficientBalance => "TxInsufficientBalance",
47674 Self::TxNoAccount => "TxNoAccount",
47675 Self::TxInsufficientFee => "TxInsufficientFee",
47676 Self::TxBadAuthExtra => "TxBadAuthExtra",
47677 Self::TxInternalError => "TxInternalError",
47678 Self::TxNotSupported => "TxNotSupported",
47679 Self::TxBadSponsorship => "TxBadSponsorship",
47680 Self::TxBadMinSeqAgeOrGap => "TxBadMinSeqAgeOrGap",
47681 Self::TxMalformed => "TxMalformed",
47682 Self::TxSorobanInvalid => "TxSorobanInvalid",
47683 }
47684 }
47685
47686 #[must_use]
47687 pub const fn discriminant(&self) -> TransactionResultCode {
47688 #[allow(clippy::match_same_arms)]
47689 match self {
47690 Self::TxFeeBumpInnerSuccess(_) => TransactionResultCode::TxFeeBumpInnerSuccess,
47691 Self::TxFeeBumpInnerFailed(_) => TransactionResultCode::TxFeeBumpInnerFailed,
47692 Self::TxSuccess(_) => TransactionResultCode::TxSuccess,
47693 Self::TxFailed(_) => TransactionResultCode::TxFailed,
47694 Self::TxTooEarly => TransactionResultCode::TxTooEarly,
47695 Self::TxTooLate => TransactionResultCode::TxTooLate,
47696 Self::TxMissingOperation => TransactionResultCode::TxMissingOperation,
47697 Self::TxBadSeq => TransactionResultCode::TxBadSeq,
47698 Self::TxBadAuth => TransactionResultCode::TxBadAuth,
47699 Self::TxInsufficientBalance => TransactionResultCode::TxInsufficientBalance,
47700 Self::TxNoAccount => TransactionResultCode::TxNoAccount,
47701 Self::TxInsufficientFee => TransactionResultCode::TxInsufficientFee,
47702 Self::TxBadAuthExtra => TransactionResultCode::TxBadAuthExtra,
47703 Self::TxInternalError => TransactionResultCode::TxInternalError,
47704 Self::TxNotSupported => TransactionResultCode::TxNotSupported,
47705 Self::TxBadSponsorship => TransactionResultCode::TxBadSponsorship,
47706 Self::TxBadMinSeqAgeOrGap => TransactionResultCode::TxBadMinSeqAgeOrGap,
47707 Self::TxMalformed => TransactionResultCode::TxMalformed,
47708 Self::TxSorobanInvalid => TransactionResultCode::TxSorobanInvalid,
47709 }
47710 }
47711
47712 #[must_use]
47713 pub const fn variants() -> [TransactionResultCode; 19] {
47714 Self::VARIANTS
47715 }
47716}
47717
47718impl Name for TransactionResultResult {
47719 #[must_use]
47720 fn name(&self) -> &'static str {
47721 Self::name(self)
47722 }
47723}
47724
47725impl Discriminant<TransactionResultCode> for TransactionResultResult {
47726 #[must_use]
47727 fn discriminant(&self) -> TransactionResultCode {
47728 Self::discriminant(self)
47729 }
47730}
47731
47732impl Variants<TransactionResultCode> for TransactionResultResult {
47733 fn variants() -> slice::Iter<'static, TransactionResultCode> {
47734 Self::VARIANTS.iter()
47735 }
47736}
47737
47738impl Union<TransactionResultCode> for TransactionResultResult {}
47739
47740impl ReadXdr for TransactionResultResult {
47741 #[cfg(feature = "std")]
47742 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47743 r.with_limited_depth(|r| {
47744 let dv: TransactionResultCode = <TransactionResultCode as ReadXdr>::read_xdr(r)?;
47745 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
47746 let v = match dv {
47747 TransactionResultCode::TxFeeBumpInnerSuccess => {
47748 Self::TxFeeBumpInnerSuccess(InnerTransactionResultPair::read_xdr(r)?)
47749 }
47750 TransactionResultCode::TxFeeBumpInnerFailed => {
47751 Self::TxFeeBumpInnerFailed(InnerTransactionResultPair::read_xdr(r)?)
47752 }
47753 TransactionResultCode::TxSuccess => {
47754 Self::TxSuccess(VecM::<OperationResult>::read_xdr(r)?)
47755 }
47756 TransactionResultCode::TxFailed => {
47757 Self::TxFailed(VecM::<OperationResult>::read_xdr(r)?)
47758 }
47759 TransactionResultCode::TxTooEarly => Self::TxTooEarly,
47760 TransactionResultCode::TxTooLate => Self::TxTooLate,
47761 TransactionResultCode::TxMissingOperation => Self::TxMissingOperation,
47762 TransactionResultCode::TxBadSeq => Self::TxBadSeq,
47763 TransactionResultCode::TxBadAuth => Self::TxBadAuth,
47764 TransactionResultCode::TxInsufficientBalance => Self::TxInsufficientBalance,
47765 TransactionResultCode::TxNoAccount => Self::TxNoAccount,
47766 TransactionResultCode::TxInsufficientFee => Self::TxInsufficientFee,
47767 TransactionResultCode::TxBadAuthExtra => Self::TxBadAuthExtra,
47768 TransactionResultCode::TxInternalError => Self::TxInternalError,
47769 TransactionResultCode::TxNotSupported => Self::TxNotSupported,
47770 TransactionResultCode::TxBadSponsorship => Self::TxBadSponsorship,
47771 TransactionResultCode::TxBadMinSeqAgeOrGap => Self::TxBadMinSeqAgeOrGap,
47772 TransactionResultCode::TxMalformed => Self::TxMalformed,
47773 TransactionResultCode::TxSorobanInvalid => Self::TxSorobanInvalid,
47774 #[allow(unreachable_patterns)]
47775 _ => return Err(Error::Invalid),
47776 };
47777 Ok(v)
47778 })
47779 }
47780}
47781
47782impl WriteXdr for TransactionResultResult {
47783 #[cfg(feature = "std")]
47784 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47785 w.with_limited_depth(|w| {
47786 self.discriminant().write_xdr(w)?;
47787 #[allow(clippy::match_same_arms)]
47788 match self {
47789 Self::TxFeeBumpInnerSuccess(v) => v.write_xdr(w)?,
47790 Self::TxFeeBumpInnerFailed(v) => v.write_xdr(w)?,
47791 Self::TxSuccess(v) => v.write_xdr(w)?,
47792 Self::TxFailed(v) => v.write_xdr(w)?,
47793 Self::TxTooEarly => ().write_xdr(w)?,
47794 Self::TxTooLate => ().write_xdr(w)?,
47795 Self::TxMissingOperation => ().write_xdr(w)?,
47796 Self::TxBadSeq => ().write_xdr(w)?,
47797 Self::TxBadAuth => ().write_xdr(w)?,
47798 Self::TxInsufficientBalance => ().write_xdr(w)?,
47799 Self::TxNoAccount => ().write_xdr(w)?,
47800 Self::TxInsufficientFee => ().write_xdr(w)?,
47801 Self::TxBadAuthExtra => ().write_xdr(w)?,
47802 Self::TxInternalError => ().write_xdr(w)?,
47803 Self::TxNotSupported => ().write_xdr(w)?,
47804 Self::TxBadSponsorship => ().write_xdr(w)?,
47805 Self::TxBadMinSeqAgeOrGap => ().write_xdr(w)?,
47806 Self::TxMalformed => ().write_xdr(w)?,
47807 Self::TxSorobanInvalid => ().write_xdr(w)?,
47808 };
47809 Ok(())
47810 })
47811 }
47812}
47813
47814#[cfg_eval::cfg_eval]
47826#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47827#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47828#[cfg_attr(
47829 all(feature = "serde", feature = "alloc"),
47830 serde_with::serde_as,
47831 derive(serde::Serialize, serde::Deserialize),
47832 serde(rename_all = "snake_case")
47833)]
47834#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47835#[allow(clippy::large_enum_variant)]
47836pub enum TransactionResultExt {
47837 V0,
47838}
47839
47840#[cfg(feature = "alloc")]
47841impl Default for TransactionResultExt {
47842 fn default() -> Self {
47843 Self::V0
47844 }
47845}
47846
47847impl TransactionResultExt {
47848 pub const VARIANTS: [i32; 1] = [0];
47849 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
47850
47851 #[must_use]
47852 pub const fn name(&self) -> &'static str {
47853 match self {
47854 Self::V0 => "V0",
47855 }
47856 }
47857
47858 #[must_use]
47859 pub const fn discriminant(&self) -> i32 {
47860 #[allow(clippy::match_same_arms)]
47861 match self {
47862 Self::V0 => 0,
47863 }
47864 }
47865
47866 #[must_use]
47867 pub const fn variants() -> [i32; 1] {
47868 Self::VARIANTS
47869 }
47870}
47871
47872impl Name for TransactionResultExt {
47873 #[must_use]
47874 fn name(&self) -> &'static str {
47875 Self::name(self)
47876 }
47877}
47878
47879impl Discriminant<i32> for TransactionResultExt {
47880 #[must_use]
47881 fn discriminant(&self) -> i32 {
47882 Self::discriminant(self)
47883 }
47884}
47885
47886impl Variants<i32> for TransactionResultExt {
47887 fn variants() -> slice::Iter<'static, i32> {
47888 Self::VARIANTS.iter()
47889 }
47890}
47891
47892impl Union<i32> for TransactionResultExt {}
47893
47894impl ReadXdr for TransactionResultExt {
47895 #[cfg(feature = "std")]
47896 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47897 r.with_limited_depth(|r| {
47898 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
47899 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
47900 let v = match dv {
47901 0 => Self::V0,
47902 #[allow(unreachable_patterns)]
47903 _ => return Err(Error::Invalid),
47904 };
47905 Ok(v)
47906 })
47907 }
47908}
47909
47910impl WriteXdr for TransactionResultExt {
47911 #[cfg(feature = "std")]
47912 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
47913 w.with_limited_depth(|w| {
47914 self.discriminant().write_xdr(w)?;
47915 #[allow(clippy::match_same_arms)]
47916 match self {
47917 Self::V0 => ().write_xdr(w)?,
47918 };
47919 Ok(())
47920 })
47921 }
47922}
47923
47924#[cfg_attr(feature = "alloc", derive(Default))]
47970#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
47971#[cfg_eval::cfg_eval]
47972#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
47973#[cfg_attr(
47974 all(feature = "serde", feature = "alloc"),
47975 serde_with::serde_as,
47976 derive(serde::Serialize, serde::Deserialize),
47977 serde(rename_all = "snake_case")
47978)]
47979#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
47980pub struct TransactionResult {
47981 #[cfg_attr(
47982 all(feature = "serde", feature = "alloc"),
47983 serde_as(as = "NumberOrString")
47984 )]
47985 pub fee_charged: i64,
47986 pub result: TransactionResultResult,
47987 pub ext: TransactionResultExt,
47988}
47989
47990impl ReadXdr for TransactionResult {
47991 #[cfg(feature = "std")]
47992 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
47993 r.with_limited_depth(|r| {
47994 Ok(Self {
47995 fee_charged: i64::read_xdr(r)?,
47996 result: TransactionResultResult::read_xdr(r)?,
47997 ext: TransactionResultExt::read_xdr(r)?,
47998 })
47999 })
48000 }
48001}
48002
48003impl WriteXdr for TransactionResult {
48004 #[cfg(feature = "std")]
48005 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48006 w.with_limited_depth(|w| {
48007 self.fee_charged.write_xdr(w)?;
48008 self.result.write_xdr(w)?;
48009 self.ext.write_xdr(w)?;
48010 Ok(())
48011 })
48012 }
48013}
48014
48015#[cfg_eval::cfg_eval]
48022#[cfg_attr(feature = "alloc", derive(Default))]
48023#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
48024#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48025#[cfg_attr(
48026 all(feature = "serde", feature = "alloc"),
48027 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
48028)]
48029pub struct Hash(pub [u8; 32]);
48030
48031impl core::fmt::Debug for Hash {
48032 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48033 let v = &self.0;
48034 write!(f, "Hash(")?;
48035 for b in v {
48036 write!(f, "{b:02x}")?;
48037 }
48038 write!(f, ")")?;
48039 Ok(())
48040 }
48041}
48042impl core::fmt::Display for Hash {
48043 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48044 let v = &self.0;
48045 for b in v {
48046 write!(f, "{b:02x}")?;
48047 }
48048 Ok(())
48049 }
48050}
48051
48052#[cfg(feature = "alloc")]
48053impl core::str::FromStr for Hash {
48054 type Err = Error;
48055 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
48056 hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into()
48057 }
48058}
48059#[cfg(feature = "schemars")]
48060impl schemars::JsonSchema for Hash {
48061 fn schema_name() -> String {
48062 "Hash".to_string()
48063 }
48064
48065 fn is_referenceable() -> bool {
48066 false
48067 }
48068
48069 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
48070 let schema = String::json_schema(gen);
48071 if let schemars::schema::Schema::Object(mut schema) = schema {
48072 schema.extensions.insert(
48073 "contentEncoding".to_owned(),
48074 serde_json::Value::String("hex".to_string()),
48075 );
48076 schema.extensions.insert(
48077 "contentMediaType".to_owned(),
48078 serde_json::Value::String("application/binary".to_string()),
48079 );
48080 let string = *schema.string.unwrap_or_default().clone();
48081 schema.string = Some(Box::new(schemars::schema::StringValidation {
48082 max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(),
48083 min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(),
48084 ..string
48085 }));
48086 schema.into()
48087 } else {
48088 schema
48089 }
48090 }
48091}
48092impl From<Hash> for [u8; 32] {
48093 #[must_use]
48094 fn from(x: Hash) -> Self {
48095 x.0
48096 }
48097}
48098
48099impl From<[u8; 32]> for Hash {
48100 #[must_use]
48101 fn from(x: [u8; 32]) -> Self {
48102 Hash(x)
48103 }
48104}
48105
48106impl AsRef<[u8; 32]> for Hash {
48107 #[must_use]
48108 fn as_ref(&self) -> &[u8; 32] {
48109 &self.0
48110 }
48111}
48112
48113impl ReadXdr for Hash {
48114 #[cfg(feature = "std")]
48115 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48116 r.with_limited_depth(|r| {
48117 let i = <[u8; 32]>::read_xdr(r)?;
48118 let v = Hash(i);
48119 Ok(v)
48120 })
48121 }
48122}
48123
48124impl WriteXdr for Hash {
48125 #[cfg(feature = "std")]
48126 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48127 w.with_limited_depth(|w| self.0.write_xdr(w))
48128 }
48129}
48130
48131impl Hash {
48132 #[must_use]
48133 pub fn as_slice(&self) -> &[u8] {
48134 &self.0
48135 }
48136}
48137
48138#[cfg(feature = "alloc")]
48139impl TryFrom<Vec<u8>> for Hash {
48140 type Error = Error;
48141 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
48142 x.as_slice().try_into()
48143 }
48144}
48145
48146#[cfg(feature = "alloc")]
48147impl TryFrom<&Vec<u8>> for Hash {
48148 type Error = Error;
48149 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
48150 x.as_slice().try_into()
48151 }
48152}
48153
48154impl TryFrom<&[u8]> for Hash {
48155 type Error = Error;
48156 fn try_from(x: &[u8]) -> Result<Self, Error> {
48157 Ok(Hash(x.try_into()?))
48158 }
48159}
48160
48161impl AsRef<[u8]> for Hash {
48162 #[must_use]
48163 fn as_ref(&self) -> &[u8] {
48164 &self.0
48165 }
48166}
48167
48168#[cfg_eval::cfg_eval]
48175#[cfg_attr(feature = "alloc", derive(Default))]
48176#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
48177#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48178#[cfg_attr(
48179 all(feature = "serde", feature = "alloc"),
48180 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
48181)]
48182pub struct Uint256(pub [u8; 32]);
48183
48184impl core::fmt::Debug for Uint256 {
48185 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48186 let v = &self.0;
48187 write!(f, "Uint256(")?;
48188 for b in v {
48189 write!(f, "{b:02x}")?;
48190 }
48191 write!(f, ")")?;
48192 Ok(())
48193 }
48194}
48195impl core::fmt::Display for Uint256 {
48196 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
48197 let v = &self.0;
48198 for b in v {
48199 write!(f, "{b:02x}")?;
48200 }
48201 Ok(())
48202 }
48203}
48204
48205#[cfg(feature = "alloc")]
48206impl core::str::FromStr for Uint256 {
48207 type Err = Error;
48208 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
48209 hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into()
48210 }
48211}
48212#[cfg(feature = "schemars")]
48213impl schemars::JsonSchema for Uint256 {
48214 fn schema_name() -> String {
48215 "Uint256".to_string()
48216 }
48217
48218 fn is_referenceable() -> bool {
48219 false
48220 }
48221
48222 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
48223 let schema = String::json_schema(gen);
48224 if let schemars::schema::Schema::Object(mut schema) = schema {
48225 schema.extensions.insert(
48226 "contentEncoding".to_owned(),
48227 serde_json::Value::String("hex".to_string()),
48228 );
48229 schema.extensions.insert(
48230 "contentMediaType".to_owned(),
48231 serde_json::Value::String("application/binary".to_string()),
48232 );
48233 let string = *schema.string.unwrap_or_default().clone();
48234 schema.string = Some(Box::new(schemars::schema::StringValidation {
48235 max_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(),
48236 min_length: 32_u32.checked_mul(2).map(Some).unwrap_or_default(),
48237 ..string
48238 }));
48239 schema.into()
48240 } else {
48241 schema
48242 }
48243 }
48244}
48245impl From<Uint256> for [u8; 32] {
48246 #[must_use]
48247 fn from(x: Uint256) -> Self {
48248 x.0
48249 }
48250}
48251
48252impl From<[u8; 32]> for Uint256 {
48253 #[must_use]
48254 fn from(x: [u8; 32]) -> Self {
48255 Uint256(x)
48256 }
48257}
48258
48259impl AsRef<[u8; 32]> for Uint256 {
48260 #[must_use]
48261 fn as_ref(&self) -> &[u8; 32] {
48262 &self.0
48263 }
48264}
48265
48266impl ReadXdr for Uint256 {
48267 #[cfg(feature = "std")]
48268 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48269 r.with_limited_depth(|r| {
48270 let i = <[u8; 32]>::read_xdr(r)?;
48271 let v = Uint256(i);
48272 Ok(v)
48273 })
48274 }
48275}
48276
48277impl WriteXdr for Uint256 {
48278 #[cfg(feature = "std")]
48279 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48280 w.with_limited_depth(|w| self.0.write_xdr(w))
48281 }
48282}
48283
48284impl Uint256 {
48285 #[must_use]
48286 pub fn as_slice(&self) -> &[u8] {
48287 &self.0
48288 }
48289}
48290
48291#[cfg(feature = "alloc")]
48292impl TryFrom<Vec<u8>> for Uint256 {
48293 type Error = Error;
48294 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
48295 x.as_slice().try_into()
48296 }
48297}
48298
48299#[cfg(feature = "alloc")]
48300impl TryFrom<&Vec<u8>> for Uint256 {
48301 type Error = Error;
48302 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
48303 x.as_slice().try_into()
48304 }
48305}
48306
48307impl TryFrom<&[u8]> for Uint256 {
48308 type Error = Error;
48309 fn try_from(x: &[u8]) -> Result<Self, Error> {
48310 Ok(Uint256(x.try_into()?))
48311 }
48312}
48313
48314impl AsRef<[u8]> for Uint256 {
48315 #[must_use]
48316 fn as_ref(&self) -> &[u8] {
48317 &self.0
48318 }
48319}
48320
48321pub type Uint32 = u32;
48328
48329pub type Int32 = i32;
48336
48337pub type Uint64 = u64;
48344
48345pub type Int64 = i64;
48352
48353#[cfg_eval::cfg_eval]
48360#[cfg_attr(feature = "alloc", derive(Default))]
48361#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
48362#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48363#[cfg_attr(
48364 all(feature = "serde", feature = "alloc"),
48365 serde_with::serde_as,
48366 derive(serde::Serialize, serde::Deserialize),
48367 serde(rename_all = "snake_case")
48368)]
48369#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48370#[derive(Debug)]
48371pub struct TimePoint(
48372 #[cfg_attr(
48373 all(feature = "serde", feature = "alloc"),
48374 serde_as(as = "NumberOrString")
48375 )]
48376 pub u64,
48377);
48378
48379impl From<TimePoint> for u64 {
48380 #[must_use]
48381 fn from(x: TimePoint) -> Self {
48382 x.0
48383 }
48384}
48385
48386impl From<u64> for TimePoint {
48387 #[must_use]
48388 fn from(x: u64) -> Self {
48389 TimePoint(x)
48390 }
48391}
48392
48393impl AsRef<u64> for TimePoint {
48394 #[must_use]
48395 fn as_ref(&self) -> &u64 {
48396 &self.0
48397 }
48398}
48399
48400impl ReadXdr for TimePoint {
48401 #[cfg(feature = "std")]
48402 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48403 r.with_limited_depth(|r| {
48404 let i = u64::read_xdr(r)?;
48405 let v = TimePoint(i);
48406 Ok(v)
48407 })
48408 }
48409}
48410
48411impl WriteXdr for TimePoint {
48412 #[cfg(feature = "std")]
48413 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48414 w.with_limited_depth(|w| self.0.write_xdr(w))
48415 }
48416}
48417
48418#[cfg_eval::cfg_eval]
48425#[cfg_attr(feature = "alloc", derive(Default))]
48426#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
48427#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48428#[cfg_attr(
48429 all(feature = "serde", feature = "alloc"),
48430 serde_with::serde_as,
48431 derive(serde::Serialize, serde::Deserialize),
48432 serde(rename_all = "snake_case")
48433)]
48434#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48435#[derive(Debug)]
48436pub struct Duration(
48437 #[cfg_attr(
48438 all(feature = "serde", feature = "alloc"),
48439 serde_as(as = "NumberOrString")
48440 )]
48441 pub u64,
48442);
48443
48444impl From<Duration> for u64 {
48445 #[must_use]
48446 fn from(x: Duration) -> Self {
48447 x.0
48448 }
48449}
48450
48451impl From<u64> for Duration {
48452 #[must_use]
48453 fn from(x: u64) -> Self {
48454 Duration(x)
48455 }
48456}
48457
48458impl AsRef<u64> for Duration {
48459 #[must_use]
48460 fn as_ref(&self) -> &u64 {
48461 &self.0
48462 }
48463}
48464
48465impl ReadXdr for Duration {
48466 #[cfg(feature = "std")]
48467 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48468 r.with_limited_depth(|r| {
48469 let i = u64::read_xdr(r)?;
48470 let v = Duration(i);
48471 Ok(v)
48472 })
48473 }
48474}
48475
48476impl WriteXdr for Duration {
48477 #[cfg(feature = "std")]
48478 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48479 w.with_limited_depth(|w| self.0.write_xdr(w))
48480 }
48481}
48482
48483#[cfg_eval::cfg_eval]
48495#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
48496#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48497#[cfg_attr(
48498 all(feature = "serde", feature = "alloc"),
48499 serde_with::serde_as,
48500 derive(serde::Serialize, serde::Deserialize),
48501 serde(rename_all = "snake_case")
48502)]
48503#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48504#[allow(clippy::large_enum_variant)]
48505pub enum ExtensionPoint {
48506 V0,
48507}
48508
48509#[cfg(feature = "alloc")]
48510impl Default for ExtensionPoint {
48511 fn default() -> Self {
48512 Self::V0
48513 }
48514}
48515
48516impl ExtensionPoint {
48517 pub const VARIANTS: [i32; 1] = [0];
48518 pub const VARIANTS_STR: [&'static str; 1] = ["V0"];
48519
48520 #[must_use]
48521 pub const fn name(&self) -> &'static str {
48522 match self {
48523 Self::V0 => "V0",
48524 }
48525 }
48526
48527 #[must_use]
48528 pub const fn discriminant(&self) -> i32 {
48529 #[allow(clippy::match_same_arms)]
48530 match self {
48531 Self::V0 => 0,
48532 }
48533 }
48534
48535 #[must_use]
48536 pub const fn variants() -> [i32; 1] {
48537 Self::VARIANTS
48538 }
48539}
48540
48541impl Name for ExtensionPoint {
48542 #[must_use]
48543 fn name(&self) -> &'static str {
48544 Self::name(self)
48545 }
48546}
48547
48548impl Discriminant<i32> for ExtensionPoint {
48549 #[must_use]
48550 fn discriminant(&self) -> i32 {
48551 Self::discriminant(self)
48552 }
48553}
48554
48555impl Variants<i32> for ExtensionPoint {
48556 fn variants() -> slice::Iter<'static, i32> {
48557 Self::VARIANTS.iter()
48558 }
48559}
48560
48561impl Union<i32> for ExtensionPoint {}
48562
48563impl ReadXdr for ExtensionPoint {
48564 #[cfg(feature = "std")]
48565 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48566 r.with_limited_depth(|r| {
48567 let dv: i32 = <i32 as ReadXdr>::read_xdr(r)?;
48568 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
48569 let v = match dv {
48570 0 => Self::V0,
48571 #[allow(unreachable_patterns)]
48572 _ => return Err(Error::Invalid),
48573 };
48574 Ok(v)
48575 })
48576 }
48577}
48578
48579impl WriteXdr for ExtensionPoint {
48580 #[cfg(feature = "std")]
48581 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48582 w.with_limited_depth(|w| {
48583 self.discriminant().write_xdr(w)?;
48584 #[allow(clippy::match_same_arms)]
48585 match self {
48586 Self::V0 => ().write_xdr(w)?,
48587 };
48588 Ok(())
48589 })
48590 }
48591}
48592
48593#[cfg_attr(feature = "alloc", derive(Default))]
48610#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
48611#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48612#[cfg_attr(
48613 all(feature = "serde", feature = "alloc"),
48614 derive(serde::Serialize, serde::Deserialize),
48615 serde(rename_all = "snake_case")
48616)]
48617#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48618#[repr(i32)]
48619pub enum CryptoKeyType {
48620 #[cfg_attr(feature = "alloc", default)]
48621 Ed25519 = 0,
48622 PreAuthTx = 1,
48623 HashX = 2,
48624 Ed25519SignedPayload = 3,
48625 MuxedEd25519 = 256,
48626}
48627
48628impl CryptoKeyType {
48629 pub const VARIANTS: [CryptoKeyType; 5] = [
48630 CryptoKeyType::Ed25519,
48631 CryptoKeyType::PreAuthTx,
48632 CryptoKeyType::HashX,
48633 CryptoKeyType::Ed25519SignedPayload,
48634 CryptoKeyType::MuxedEd25519,
48635 ];
48636 pub const VARIANTS_STR: [&'static str; 5] = [
48637 "Ed25519",
48638 "PreAuthTx",
48639 "HashX",
48640 "Ed25519SignedPayload",
48641 "MuxedEd25519",
48642 ];
48643
48644 #[must_use]
48645 pub const fn name(&self) -> &'static str {
48646 match self {
48647 Self::Ed25519 => "Ed25519",
48648 Self::PreAuthTx => "PreAuthTx",
48649 Self::HashX => "HashX",
48650 Self::Ed25519SignedPayload => "Ed25519SignedPayload",
48651 Self::MuxedEd25519 => "MuxedEd25519",
48652 }
48653 }
48654
48655 #[must_use]
48656 pub const fn variants() -> [CryptoKeyType; 5] {
48657 Self::VARIANTS
48658 }
48659}
48660
48661impl Name for CryptoKeyType {
48662 #[must_use]
48663 fn name(&self) -> &'static str {
48664 Self::name(self)
48665 }
48666}
48667
48668impl Variants<CryptoKeyType> for CryptoKeyType {
48669 fn variants() -> slice::Iter<'static, CryptoKeyType> {
48670 Self::VARIANTS.iter()
48671 }
48672}
48673
48674impl Enum for CryptoKeyType {}
48675
48676impl fmt::Display for CryptoKeyType {
48677 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48678 f.write_str(self.name())
48679 }
48680}
48681
48682impl TryFrom<i32> for CryptoKeyType {
48683 type Error = Error;
48684
48685 fn try_from(i: i32) -> Result<Self, Error> {
48686 let e = match i {
48687 0 => CryptoKeyType::Ed25519,
48688 1 => CryptoKeyType::PreAuthTx,
48689 2 => CryptoKeyType::HashX,
48690 3 => CryptoKeyType::Ed25519SignedPayload,
48691 256 => CryptoKeyType::MuxedEd25519,
48692 #[allow(unreachable_patterns)]
48693 _ => return Err(Error::Invalid),
48694 };
48695 Ok(e)
48696 }
48697}
48698
48699impl From<CryptoKeyType> for i32 {
48700 #[must_use]
48701 fn from(e: CryptoKeyType) -> Self {
48702 e as Self
48703 }
48704}
48705
48706impl ReadXdr for CryptoKeyType {
48707 #[cfg(feature = "std")]
48708 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48709 r.with_limited_depth(|r| {
48710 let e = i32::read_xdr(r)?;
48711 let v: Self = e.try_into()?;
48712 Ok(v)
48713 })
48714 }
48715}
48716
48717impl WriteXdr for CryptoKeyType {
48718 #[cfg(feature = "std")]
48719 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48720 w.with_limited_depth(|w| {
48721 let i: i32 = (*self).into();
48722 i.write_xdr(w)
48723 })
48724 }
48725}
48726
48727#[cfg_attr(feature = "alloc", derive(Default))]
48738#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
48739#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48740#[cfg_attr(
48741 all(feature = "serde", feature = "alloc"),
48742 derive(serde::Serialize, serde::Deserialize),
48743 serde(rename_all = "snake_case")
48744)]
48745#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48746#[repr(i32)]
48747pub enum PublicKeyType {
48748 #[cfg_attr(feature = "alloc", default)]
48749 PublicKeyTypeEd25519 = 0,
48750}
48751
48752impl PublicKeyType {
48753 pub const VARIANTS: [PublicKeyType; 1] = [PublicKeyType::PublicKeyTypeEd25519];
48754 pub const VARIANTS_STR: [&'static str; 1] = ["PublicKeyTypeEd25519"];
48755
48756 #[must_use]
48757 pub const fn name(&self) -> &'static str {
48758 match self {
48759 Self::PublicKeyTypeEd25519 => "PublicKeyTypeEd25519",
48760 }
48761 }
48762
48763 #[must_use]
48764 pub const fn variants() -> [PublicKeyType; 1] {
48765 Self::VARIANTS
48766 }
48767}
48768
48769impl Name for PublicKeyType {
48770 #[must_use]
48771 fn name(&self) -> &'static str {
48772 Self::name(self)
48773 }
48774}
48775
48776impl Variants<PublicKeyType> for PublicKeyType {
48777 fn variants() -> slice::Iter<'static, PublicKeyType> {
48778 Self::VARIANTS.iter()
48779 }
48780}
48781
48782impl Enum for PublicKeyType {}
48783
48784impl fmt::Display for PublicKeyType {
48785 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48786 f.write_str(self.name())
48787 }
48788}
48789
48790impl TryFrom<i32> for PublicKeyType {
48791 type Error = Error;
48792
48793 fn try_from(i: i32) -> Result<Self, Error> {
48794 let e = match i {
48795 0 => PublicKeyType::PublicKeyTypeEd25519,
48796 #[allow(unreachable_patterns)]
48797 _ => return Err(Error::Invalid),
48798 };
48799 Ok(e)
48800 }
48801}
48802
48803impl From<PublicKeyType> for i32 {
48804 #[must_use]
48805 fn from(e: PublicKeyType) -> Self {
48806 e as Self
48807 }
48808}
48809
48810impl ReadXdr for PublicKeyType {
48811 #[cfg(feature = "std")]
48812 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48813 r.with_limited_depth(|r| {
48814 let e = i32::read_xdr(r)?;
48815 let v: Self = e.try_into()?;
48816 Ok(v)
48817 })
48818 }
48819}
48820
48821impl WriteXdr for PublicKeyType {
48822 #[cfg(feature = "std")]
48823 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48824 w.with_limited_depth(|w| {
48825 let i: i32 = (*self).into();
48826 i.write_xdr(w)
48827 })
48828 }
48829}
48830
48831#[cfg_attr(feature = "alloc", derive(Default))]
48845#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
48846#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48847#[cfg_attr(
48848 all(feature = "serde", feature = "alloc"),
48849 derive(serde::Serialize, serde::Deserialize),
48850 serde(rename_all = "snake_case")
48851)]
48852#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
48853#[repr(i32)]
48854pub enum SignerKeyType {
48855 #[cfg_attr(feature = "alloc", default)]
48856 Ed25519 = 0,
48857 PreAuthTx = 1,
48858 HashX = 2,
48859 Ed25519SignedPayload = 3,
48860}
48861
48862impl SignerKeyType {
48863 pub const VARIANTS: [SignerKeyType; 4] = [
48864 SignerKeyType::Ed25519,
48865 SignerKeyType::PreAuthTx,
48866 SignerKeyType::HashX,
48867 SignerKeyType::Ed25519SignedPayload,
48868 ];
48869 pub const VARIANTS_STR: [&'static str; 4] =
48870 ["Ed25519", "PreAuthTx", "HashX", "Ed25519SignedPayload"];
48871
48872 #[must_use]
48873 pub const fn name(&self) -> &'static str {
48874 match self {
48875 Self::Ed25519 => "Ed25519",
48876 Self::PreAuthTx => "PreAuthTx",
48877 Self::HashX => "HashX",
48878 Self::Ed25519SignedPayload => "Ed25519SignedPayload",
48879 }
48880 }
48881
48882 #[must_use]
48883 pub const fn variants() -> [SignerKeyType; 4] {
48884 Self::VARIANTS
48885 }
48886}
48887
48888impl Name for SignerKeyType {
48889 #[must_use]
48890 fn name(&self) -> &'static str {
48891 Self::name(self)
48892 }
48893}
48894
48895impl Variants<SignerKeyType> for SignerKeyType {
48896 fn variants() -> slice::Iter<'static, SignerKeyType> {
48897 Self::VARIANTS.iter()
48898 }
48899}
48900
48901impl Enum for SignerKeyType {}
48902
48903impl fmt::Display for SignerKeyType {
48904 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48905 f.write_str(self.name())
48906 }
48907}
48908
48909impl TryFrom<i32> for SignerKeyType {
48910 type Error = Error;
48911
48912 fn try_from(i: i32) -> Result<Self, Error> {
48913 let e = match i {
48914 0 => SignerKeyType::Ed25519,
48915 1 => SignerKeyType::PreAuthTx,
48916 2 => SignerKeyType::HashX,
48917 3 => SignerKeyType::Ed25519SignedPayload,
48918 #[allow(unreachable_patterns)]
48919 _ => return Err(Error::Invalid),
48920 };
48921 Ok(e)
48922 }
48923}
48924
48925impl From<SignerKeyType> for i32 {
48926 #[must_use]
48927 fn from(e: SignerKeyType) -> Self {
48928 e as Self
48929 }
48930}
48931
48932impl ReadXdr for SignerKeyType {
48933 #[cfg(feature = "std")]
48934 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
48935 r.with_limited_depth(|r| {
48936 let e = i32::read_xdr(r)?;
48937 let v: Self = e.try_into()?;
48938 Ok(v)
48939 })
48940 }
48941}
48942
48943impl WriteXdr for SignerKeyType {
48944 #[cfg(feature = "std")]
48945 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
48946 w.with_limited_depth(|w| {
48947 let i: i32 = (*self).into();
48948 i.write_xdr(w)
48949 })
48950 }
48951}
48952
48953#[cfg_eval::cfg_eval]
48965#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
48966#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48967#[cfg_attr(
48968 all(feature = "serde", feature = "alloc"),
48969 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
48970)]
48971#[allow(clippy::large_enum_variant)]
48972pub enum PublicKey {
48973 PublicKeyTypeEd25519(Uint256),
48974}
48975
48976#[cfg(feature = "alloc")]
48977impl Default for PublicKey {
48978 fn default() -> Self {
48979 Self::PublicKeyTypeEd25519(Uint256::default())
48980 }
48981}
48982
48983impl PublicKey {
48984 pub const VARIANTS: [PublicKeyType; 1] = [PublicKeyType::PublicKeyTypeEd25519];
48985 pub const VARIANTS_STR: [&'static str; 1] = ["PublicKeyTypeEd25519"];
48986
48987 #[must_use]
48988 pub const fn name(&self) -> &'static str {
48989 match self {
48990 Self::PublicKeyTypeEd25519(_) => "PublicKeyTypeEd25519",
48991 }
48992 }
48993
48994 #[must_use]
48995 pub const fn discriminant(&self) -> PublicKeyType {
48996 #[allow(clippy::match_same_arms)]
48997 match self {
48998 Self::PublicKeyTypeEd25519(_) => PublicKeyType::PublicKeyTypeEd25519,
48999 }
49000 }
49001
49002 #[must_use]
49003 pub const fn variants() -> [PublicKeyType; 1] {
49004 Self::VARIANTS
49005 }
49006}
49007
49008impl Name for PublicKey {
49009 #[must_use]
49010 fn name(&self) -> &'static str {
49011 Self::name(self)
49012 }
49013}
49014
49015impl Discriminant<PublicKeyType> for PublicKey {
49016 #[must_use]
49017 fn discriminant(&self) -> PublicKeyType {
49018 Self::discriminant(self)
49019 }
49020}
49021
49022impl Variants<PublicKeyType> for PublicKey {
49023 fn variants() -> slice::Iter<'static, PublicKeyType> {
49024 Self::VARIANTS.iter()
49025 }
49026}
49027
49028impl Union<PublicKeyType> for PublicKey {}
49029
49030impl ReadXdr for PublicKey {
49031 #[cfg(feature = "std")]
49032 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49033 r.with_limited_depth(|r| {
49034 let dv: PublicKeyType = <PublicKeyType as ReadXdr>::read_xdr(r)?;
49035 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
49036 let v = match dv {
49037 PublicKeyType::PublicKeyTypeEd25519 => {
49038 Self::PublicKeyTypeEd25519(Uint256::read_xdr(r)?)
49039 }
49040 #[allow(unreachable_patterns)]
49041 _ => return Err(Error::Invalid),
49042 };
49043 Ok(v)
49044 })
49045 }
49046}
49047
49048impl WriteXdr for PublicKey {
49049 #[cfg(feature = "std")]
49050 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49051 w.with_limited_depth(|w| {
49052 self.discriminant().write_xdr(w)?;
49053 #[allow(clippy::match_same_arms)]
49054 match self {
49055 Self::PublicKeyTypeEd25519(v) => v.write_xdr(w)?,
49056 };
49057 Ok(())
49058 })
49059 }
49060}
49061
49062#[cfg_attr(feature = "alloc", derive(Default))]
49075#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49076#[cfg_eval::cfg_eval]
49077#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49078#[cfg_attr(
49079 all(feature = "serde", feature = "alloc"),
49080 derive(serde_with::SerializeDisplay)
49081)]
49082pub struct SignerKeyEd25519SignedPayload {
49083 pub ed25519: Uint256,
49084 pub payload: BytesM<64>,
49085}
49086
49087impl ReadXdr for SignerKeyEd25519SignedPayload {
49088 #[cfg(feature = "std")]
49089 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49090 r.with_limited_depth(|r| {
49091 Ok(Self {
49092 ed25519: Uint256::read_xdr(r)?,
49093 payload: BytesM::<64>::read_xdr(r)?,
49094 })
49095 })
49096 }
49097}
49098
49099impl WriteXdr for SignerKeyEd25519SignedPayload {
49100 #[cfg(feature = "std")]
49101 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49102 w.with_limited_depth(|w| {
49103 self.ed25519.write_xdr(w)?;
49104 self.payload.write_xdr(w)?;
49105 Ok(())
49106 })
49107 }
49108}
49109#[cfg(all(feature = "serde", feature = "alloc"))]
49110impl<'de> serde::Deserialize<'de> for SignerKeyEd25519SignedPayload {
49111 fn deserialize<D>(deserializer: D) -> core::result::Result<Self, D::Error>
49112 where
49113 D: serde::Deserializer<'de>,
49114 {
49115 use serde::Deserialize;
49116 #[derive(Deserialize)]
49117 struct SignerKeyEd25519SignedPayload {
49118 ed25519: Uint256,
49119 payload: BytesM<64>,
49120 }
49121 #[derive(Deserialize)]
49122 #[serde(untagged)]
49123 enum SignerKeyEd25519SignedPayloadOrString<'a> {
49124 Str(&'a str),
49125 String(String),
49126 SignerKeyEd25519SignedPayload(SignerKeyEd25519SignedPayload),
49127 }
49128 match SignerKeyEd25519SignedPayloadOrString::deserialize(deserializer)? {
49129 SignerKeyEd25519SignedPayloadOrString::Str(s) => {
49130 s.parse().map_err(serde::de::Error::custom)
49131 }
49132 SignerKeyEd25519SignedPayloadOrString::String(s) => {
49133 s.parse().map_err(serde::de::Error::custom)
49134 }
49135 SignerKeyEd25519SignedPayloadOrString::SignerKeyEd25519SignedPayload(
49136 SignerKeyEd25519SignedPayload { ed25519, payload },
49137 ) => Ok(self::SignerKeyEd25519SignedPayload { ed25519, payload }),
49138 }
49139 }
49140}
49141
49142#[cfg_eval::cfg_eval]
49168#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49169#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49170#[cfg_attr(
49171 all(feature = "serde", feature = "alloc"),
49172 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
49173)]
49174#[allow(clippy::large_enum_variant)]
49175pub enum SignerKey {
49176 Ed25519(Uint256),
49177 PreAuthTx(Uint256),
49178 HashX(Uint256),
49179 Ed25519SignedPayload(SignerKeyEd25519SignedPayload),
49180}
49181
49182#[cfg(feature = "alloc")]
49183impl Default for SignerKey {
49184 fn default() -> Self {
49185 Self::Ed25519(Uint256::default())
49186 }
49187}
49188
49189impl SignerKey {
49190 pub const VARIANTS: [SignerKeyType; 4] = [
49191 SignerKeyType::Ed25519,
49192 SignerKeyType::PreAuthTx,
49193 SignerKeyType::HashX,
49194 SignerKeyType::Ed25519SignedPayload,
49195 ];
49196 pub const VARIANTS_STR: [&'static str; 4] =
49197 ["Ed25519", "PreAuthTx", "HashX", "Ed25519SignedPayload"];
49198
49199 #[must_use]
49200 pub const fn name(&self) -> &'static str {
49201 match self {
49202 Self::Ed25519(_) => "Ed25519",
49203 Self::PreAuthTx(_) => "PreAuthTx",
49204 Self::HashX(_) => "HashX",
49205 Self::Ed25519SignedPayload(_) => "Ed25519SignedPayload",
49206 }
49207 }
49208
49209 #[must_use]
49210 pub const fn discriminant(&self) -> SignerKeyType {
49211 #[allow(clippy::match_same_arms)]
49212 match self {
49213 Self::Ed25519(_) => SignerKeyType::Ed25519,
49214 Self::PreAuthTx(_) => SignerKeyType::PreAuthTx,
49215 Self::HashX(_) => SignerKeyType::HashX,
49216 Self::Ed25519SignedPayload(_) => SignerKeyType::Ed25519SignedPayload,
49217 }
49218 }
49219
49220 #[must_use]
49221 pub const fn variants() -> [SignerKeyType; 4] {
49222 Self::VARIANTS
49223 }
49224}
49225
49226impl Name for SignerKey {
49227 #[must_use]
49228 fn name(&self) -> &'static str {
49229 Self::name(self)
49230 }
49231}
49232
49233impl Discriminant<SignerKeyType> for SignerKey {
49234 #[must_use]
49235 fn discriminant(&self) -> SignerKeyType {
49236 Self::discriminant(self)
49237 }
49238}
49239
49240impl Variants<SignerKeyType> for SignerKey {
49241 fn variants() -> slice::Iter<'static, SignerKeyType> {
49242 Self::VARIANTS.iter()
49243 }
49244}
49245
49246impl Union<SignerKeyType> for SignerKey {}
49247
49248impl ReadXdr for SignerKey {
49249 #[cfg(feature = "std")]
49250 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49251 r.with_limited_depth(|r| {
49252 let dv: SignerKeyType = <SignerKeyType as ReadXdr>::read_xdr(r)?;
49253 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
49254 let v = match dv {
49255 SignerKeyType::Ed25519 => Self::Ed25519(Uint256::read_xdr(r)?),
49256 SignerKeyType::PreAuthTx => Self::PreAuthTx(Uint256::read_xdr(r)?),
49257 SignerKeyType::HashX => Self::HashX(Uint256::read_xdr(r)?),
49258 SignerKeyType::Ed25519SignedPayload => {
49259 Self::Ed25519SignedPayload(SignerKeyEd25519SignedPayload::read_xdr(r)?)
49260 }
49261 #[allow(unreachable_patterns)]
49262 _ => return Err(Error::Invalid),
49263 };
49264 Ok(v)
49265 })
49266 }
49267}
49268
49269impl WriteXdr for SignerKey {
49270 #[cfg(feature = "std")]
49271 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49272 w.with_limited_depth(|w| {
49273 self.discriminant().write_xdr(w)?;
49274 #[allow(clippy::match_same_arms)]
49275 match self {
49276 Self::Ed25519(v) => v.write_xdr(w)?,
49277 Self::PreAuthTx(v) => v.write_xdr(w)?,
49278 Self::HashX(v) => v.write_xdr(w)?,
49279 Self::Ed25519SignedPayload(v) => v.write_xdr(w)?,
49280 };
49281 Ok(())
49282 })
49283 }
49284}
49285
49286#[cfg_eval::cfg_eval]
49293#[derive(Default, Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
49294#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49295#[cfg_attr(
49296 all(feature = "serde", feature = "alloc"),
49297 serde_with::serde_as,
49298 derive(serde::Serialize, serde::Deserialize),
49299 serde(rename_all = "snake_case")
49300)]
49301#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49302#[derive(Debug)]
49303pub struct Signature(pub BytesM<64>);
49304
49305impl From<Signature> for BytesM<64> {
49306 #[must_use]
49307 fn from(x: Signature) -> Self {
49308 x.0
49309 }
49310}
49311
49312impl From<BytesM<64>> for Signature {
49313 #[must_use]
49314 fn from(x: BytesM<64>) -> Self {
49315 Signature(x)
49316 }
49317}
49318
49319impl AsRef<BytesM<64>> for Signature {
49320 #[must_use]
49321 fn as_ref(&self) -> &BytesM<64> {
49322 &self.0
49323 }
49324}
49325
49326impl ReadXdr for Signature {
49327 #[cfg(feature = "std")]
49328 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49329 r.with_limited_depth(|r| {
49330 let i = BytesM::<64>::read_xdr(r)?;
49331 let v = Signature(i);
49332 Ok(v)
49333 })
49334 }
49335}
49336
49337impl WriteXdr for Signature {
49338 #[cfg(feature = "std")]
49339 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49340 w.with_limited_depth(|w| self.0.write_xdr(w))
49341 }
49342}
49343
49344impl Deref for Signature {
49345 type Target = BytesM<64>;
49346 fn deref(&self) -> &Self::Target {
49347 &self.0
49348 }
49349}
49350
49351impl From<Signature> for Vec<u8> {
49352 #[must_use]
49353 fn from(x: Signature) -> Self {
49354 x.0 .0
49355 }
49356}
49357
49358impl TryFrom<Vec<u8>> for Signature {
49359 type Error = Error;
49360 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
49361 Ok(Signature(x.try_into()?))
49362 }
49363}
49364
49365#[cfg(feature = "alloc")]
49366impl TryFrom<&Vec<u8>> for Signature {
49367 type Error = Error;
49368 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
49369 Ok(Signature(x.try_into()?))
49370 }
49371}
49372
49373impl AsRef<Vec<u8>> for Signature {
49374 #[must_use]
49375 fn as_ref(&self) -> &Vec<u8> {
49376 &self.0 .0
49377 }
49378}
49379
49380impl AsRef<[u8]> for Signature {
49381 #[cfg(feature = "alloc")]
49382 #[must_use]
49383 fn as_ref(&self) -> &[u8] {
49384 &self.0 .0
49385 }
49386 #[cfg(not(feature = "alloc"))]
49387 #[must_use]
49388 fn as_ref(&self) -> &[u8] {
49389 self.0 .0
49390 }
49391}
49392
49393#[cfg_eval::cfg_eval]
49400#[cfg_attr(feature = "alloc", derive(Default))]
49401#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
49402#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49403#[cfg_attr(
49404 all(feature = "serde", feature = "alloc"),
49405 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
49406)]
49407pub struct SignatureHint(pub [u8; 4]);
49408
49409impl core::fmt::Debug for SignatureHint {
49410 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
49411 let v = &self.0;
49412 write!(f, "SignatureHint(")?;
49413 for b in v {
49414 write!(f, "{b:02x}")?;
49415 }
49416 write!(f, ")")?;
49417 Ok(())
49418 }
49419}
49420impl core::fmt::Display for SignatureHint {
49421 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
49422 let v = &self.0;
49423 for b in v {
49424 write!(f, "{b:02x}")?;
49425 }
49426 Ok(())
49427 }
49428}
49429
49430#[cfg(feature = "alloc")]
49431impl core::str::FromStr for SignatureHint {
49432 type Err = Error;
49433 fn from_str(s: &str) -> core::result::Result<Self, Self::Err> {
49434 hex::decode(s).map_err(|_| Error::InvalidHex)?.try_into()
49435 }
49436}
49437#[cfg(feature = "schemars")]
49438impl schemars::JsonSchema for SignatureHint {
49439 fn schema_name() -> String {
49440 "SignatureHint".to_string()
49441 }
49442
49443 fn is_referenceable() -> bool {
49444 false
49445 }
49446
49447 fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema {
49448 let schema = String::json_schema(gen);
49449 if let schemars::schema::Schema::Object(mut schema) = schema {
49450 schema.extensions.insert(
49451 "contentEncoding".to_owned(),
49452 serde_json::Value::String("hex".to_string()),
49453 );
49454 schema.extensions.insert(
49455 "contentMediaType".to_owned(),
49456 serde_json::Value::String("application/binary".to_string()),
49457 );
49458 let string = *schema.string.unwrap_or_default().clone();
49459 schema.string = Some(Box::new(schemars::schema::StringValidation {
49460 max_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(),
49461 min_length: 4_u32.checked_mul(2).map(Some).unwrap_or_default(),
49462 ..string
49463 }));
49464 schema.into()
49465 } else {
49466 schema
49467 }
49468 }
49469}
49470impl From<SignatureHint> for [u8; 4] {
49471 #[must_use]
49472 fn from(x: SignatureHint) -> Self {
49473 x.0
49474 }
49475}
49476
49477impl From<[u8; 4]> for SignatureHint {
49478 #[must_use]
49479 fn from(x: [u8; 4]) -> Self {
49480 SignatureHint(x)
49481 }
49482}
49483
49484impl AsRef<[u8; 4]> for SignatureHint {
49485 #[must_use]
49486 fn as_ref(&self) -> &[u8; 4] {
49487 &self.0
49488 }
49489}
49490
49491impl ReadXdr for SignatureHint {
49492 #[cfg(feature = "std")]
49493 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49494 r.with_limited_depth(|r| {
49495 let i = <[u8; 4]>::read_xdr(r)?;
49496 let v = SignatureHint(i);
49497 Ok(v)
49498 })
49499 }
49500}
49501
49502impl WriteXdr for SignatureHint {
49503 #[cfg(feature = "std")]
49504 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49505 w.with_limited_depth(|w| self.0.write_xdr(w))
49506 }
49507}
49508
49509impl SignatureHint {
49510 #[must_use]
49511 pub fn as_slice(&self) -> &[u8] {
49512 &self.0
49513 }
49514}
49515
49516#[cfg(feature = "alloc")]
49517impl TryFrom<Vec<u8>> for SignatureHint {
49518 type Error = Error;
49519 fn try_from(x: Vec<u8>) -> Result<Self, Error> {
49520 x.as_slice().try_into()
49521 }
49522}
49523
49524#[cfg(feature = "alloc")]
49525impl TryFrom<&Vec<u8>> for SignatureHint {
49526 type Error = Error;
49527 fn try_from(x: &Vec<u8>) -> Result<Self, Error> {
49528 x.as_slice().try_into()
49529 }
49530}
49531
49532impl TryFrom<&[u8]> for SignatureHint {
49533 type Error = Error;
49534 fn try_from(x: &[u8]) -> Result<Self, Error> {
49535 Ok(SignatureHint(x.try_into()?))
49536 }
49537}
49538
49539impl AsRef<[u8]> for SignatureHint {
49540 #[must_use]
49541 fn as_ref(&self) -> &[u8] {
49542 &self.0
49543 }
49544}
49545
49546#[cfg_eval::cfg_eval]
49553#[cfg_attr(feature = "alloc", derive(Default))]
49554#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
49555#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49556#[cfg_attr(
49557 all(feature = "serde", feature = "alloc"),
49558 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
49559)]
49560#[derive(Debug)]
49561pub struct NodeId(pub PublicKey);
49562
49563impl From<NodeId> for PublicKey {
49564 #[must_use]
49565 fn from(x: NodeId) -> Self {
49566 x.0
49567 }
49568}
49569
49570impl From<PublicKey> for NodeId {
49571 #[must_use]
49572 fn from(x: PublicKey) -> Self {
49573 NodeId(x)
49574 }
49575}
49576
49577impl AsRef<PublicKey> for NodeId {
49578 #[must_use]
49579 fn as_ref(&self) -> &PublicKey {
49580 &self.0
49581 }
49582}
49583
49584impl ReadXdr for NodeId {
49585 #[cfg(feature = "std")]
49586 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49587 r.with_limited_depth(|r| {
49588 let i = PublicKey::read_xdr(r)?;
49589 let v = NodeId(i);
49590 Ok(v)
49591 })
49592 }
49593}
49594
49595impl WriteXdr for NodeId {
49596 #[cfg(feature = "std")]
49597 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49598 w.with_limited_depth(|w| self.0.write_xdr(w))
49599 }
49600}
49601
49602#[cfg_eval::cfg_eval]
49609#[cfg_attr(feature = "alloc", derive(Default))]
49610#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
49611#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49612#[cfg_attr(
49613 all(feature = "serde", feature = "alloc"),
49614 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
49615)]
49616#[derive(Debug)]
49617pub struct AccountId(pub PublicKey);
49618
49619impl From<AccountId> for PublicKey {
49620 #[must_use]
49621 fn from(x: AccountId) -> Self {
49622 x.0
49623 }
49624}
49625
49626impl From<PublicKey> for AccountId {
49627 #[must_use]
49628 fn from(x: PublicKey) -> Self {
49629 AccountId(x)
49630 }
49631}
49632
49633impl AsRef<PublicKey> for AccountId {
49634 #[must_use]
49635 fn as_ref(&self) -> &PublicKey {
49636 &self.0
49637 }
49638}
49639
49640impl ReadXdr for AccountId {
49641 #[cfg(feature = "std")]
49642 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49643 r.with_limited_depth(|r| {
49644 let i = PublicKey::read_xdr(r)?;
49645 let v = AccountId(i);
49646 Ok(v)
49647 })
49648 }
49649}
49650
49651impl WriteXdr for AccountId {
49652 #[cfg(feature = "std")]
49653 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49654 w.with_limited_depth(|w| self.0.write_xdr(w))
49655 }
49656}
49657
49658#[cfg_eval::cfg_eval]
49665#[cfg_attr(feature = "alloc", derive(Default))]
49666#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
49667#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49668#[cfg_attr(
49669 all(feature = "serde", feature = "alloc"),
49670 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
49671)]
49672#[derive(Debug)]
49673pub struct ContractId(pub Hash);
49674
49675impl From<ContractId> for Hash {
49676 #[must_use]
49677 fn from(x: ContractId) -> Self {
49678 x.0
49679 }
49680}
49681
49682impl From<Hash> for ContractId {
49683 #[must_use]
49684 fn from(x: Hash) -> Self {
49685 ContractId(x)
49686 }
49687}
49688
49689impl AsRef<Hash> for ContractId {
49690 #[must_use]
49691 fn as_ref(&self) -> &Hash {
49692 &self.0
49693 }
49694}
49695
49696impl ReadXdr for ContractId {
49697 #[cfg(feature = "std")]
49698 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49699 r.with_limited_depth(|r| {
49700 let i = Hash::read_xdr(r)?;
49701 let v = ContractId(i);
49702 Ok(v)
49703 })
49704 }
49705}
49706
49707impl WriteXdr for ContractId {
49708 #[cfg(feature = "std")]
49709 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49710 w.with_limited_depth(|w| self.0.write_xdr(w))
49711 }
49712}
49713
49714#[cfg_attr(feature = "alloc", derive(Default))]
49724#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49725#[cfg_eval::cfg_eval]
49726#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49727#[cfg_attr(
49728 all(feature = "serde", feature = "alloc"),
49729 serde_with::serde_as,
49730 derive(serde::Serialize, serde::Deserialize),
49731 serde(rename_all = "snake_case")
49732)]
49733#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49734pub struct Curve25519Secret {
49735 pub key: [u8; 32],
49736}
49737
49738impl ReadXdr for Curve25519Secret {
49739 #[cfg(feature = "std")]
49740 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49741 r.with_limited_depth(|r| {
49742 Ok(Self {
49743 key: <[u8; 32]>::read_xdr(r)?,
49744 })
49745 })
49746 }
49747}
49748
49749impl WriteXdr for Curve25519Secret {
49750 #[cfg(feature = "std")]
49751 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49752 w.with_limited_depth(|w| {
49753 self.key.write_xdr(w)?;
49754 Ok(())
49755 })
49756 }
49757}
49758
49759#[cfg_attr(feature = "alloc", derive(Default))]
49769#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49770#[cfg_eval::cfg_eval]
49771#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49772#[cfg_attr(
49773 all(feature = "serde", feature = "alloc"),
49774 serde_with::serde_as,
49775 derive(serde::Serialize, serde::Deserialize),
49776 serde(rename_all = "snake_case")
49777)]
49778#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49779pub struct Curve25519Public {
49780 pub key: [u8; 32],
49781}
49782
49783impl ReadXdr for Curve25519Public {
49784 #[cfg(feature = "std")]
49785 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49786 r.with_limited_depth(|r| {
49787 Ok(Self {
49788 key: <[u8; 32]>::read_xdr(r)?,
49789 })
49790 })
49791 }
49792}
49793
49794impl WriteXdr for Curve25519Public {
49795 #[cfg(feature = "std")]
49796 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49797 w.with_limited_depth(|w| {
49798 self.key.write_xdr(w)?;
49799 Ok(())
49800 })
49801 }
49802}
49803
49804#[cfg_attr(feature = "alloc", derive(Default))]
49814#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49815#[cfg_eval::cfg_eval]
49816#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49817#[cfg_attr(
49818 all(feature = "serde", feature = "alloc"),
49819 serde_with::serde_as,
49820 derive(serde::Serialize, serde::Deserialize),
49821 serde(rename_all = "snake_case")
49822)]
49823#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49824pub struct HmacSha256Key {
49825 pub key: [u8; 32],
49826}
49827
49828impl ReadXdr for HmacSha256Key {
49829 #[cfg(feature = "std")]
49830 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49831 r.with_limited_depth(|r| {
49832 Ok(Self {
49833 key: <[u8; 32]>::read_xdr(r)?,
49834 })
49835 })
49836 }
49837}
49838
49839impl WriteXdr for HmacSha256Key {
49840 #[cfg(feature = "std")]
49841 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49842 w.with_limited_depth(|w| {
49843 self.key.write_xdr(w)?;
49844 Ok(())
49845 })
49846 }
49847}
49848
49849#[cfg_attr(feature = "alloc", derive(Default))]
49859#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49860#[cfg_eval::cfg_eval]
49861#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49862#[cfg_attr(
49863 all(feature = "serde", feature = "alloc"),
49864 serde_with::serde_as,
49865 derive(serde::Serialize, serde::Deserialize),
49866 serde(rename_all = "snake_case")
49867)]
49868#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49869pub struct HmacSha256Mac {
49870 pub mac: [u8; 32],
49871}
49872
49873impl ReadXdr for HmacSha256Mac {
49874 #[cfg(feature = "std")]
49875 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49876 r.with_limited_depth(|r| {
49877 Ok(Self {
49878 mac: <[u8; 32]>::read_xdr(r)?,
49879 })
49880 })
49881 }
49882}
49883
49884impl WriteXdr for HmacSha256Mac {
49885 #[cfg(feature = "std")]
49886 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49887 w.with_limited_depth(|w| {
49888 self.mac.write_xdr(w)?;
49889 Ok(())
49890 })
49891 }
49892}
49893
49894#[cfg_attr(feature = "alloc", derive(Default))]
49904#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49905#[cfg_eval::cfg_eval]
49906#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49907#[cfg_attr(
49908 all(feature = "serde", feature = "alloc"),
49909 serde_with::serde_as,
49910 derive(serde::Serialize, serde::Deserialize),
49911 serde(rename_all = "snake_case")
49912)]
49913#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49914pub struct ShortHashSeed {
49915 pub seed: [u8; 16],
49916}
49917
49918impl ReadXdr for ShortHashSeed {
49919 #[cfg(feature = "std")]
49920 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
49921 r.with_limited_depth(|r| {
49922 Ok(Self {
49923 seed: <[u8; 16]>::read_xdr(r)?,
49924 })
49925 })
49926 }
49927}
49928
49929impl WriteXdr for ShortHashSeed {
49930 #[cfg(feature = "std")]
49931 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
49932 w.with_limited_depth(|w| {
49933 self.seed.write_xdr(w)?;
49934 Ok(())
49935 })
49936 }
49937}
49938
49939#[cfg_attr(feature = "alloc", derive(Default))]
49952#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
49953#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
49954#[cfg_attr(
49955 all(feature = "serde", feature = "alloc"),
49956 derive(serde::Serialize, serde::Deserialize),
49957 serde(rename_all = "snake_case")
49958)]
49959#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
49960#[repr(i32)]
49961pub enum BinaryFuseFilterType {
49962 #[cfg_attr(feature = "alloc", default)]
49963 B8Bit = 0,
49964 B16Bit = 1,
49965 B32Bit = 2,
49966}
49967
49968impl BinaryFuseFilterType {
49969 pub const VARIANTS: [BinaryFuseFilterType; 3] = [
49970 BinaryFuseFilterType::B8Bit,
49971 BinaryFuseFilterType::B16Bit,
49972 BinaryFuseFilterType::B32Bit,
49973 ];
49974 pub const VARIANTS_STR: [&'static str; 3] = ["B8Bit", "B16Bit", "B32Bit"];
49975
49976 #[must_use]
49977 pub const fn name(&self) -> &'static str {
49978 match self {
49979 Self::B8Bit => "B8Bit",
49980 Self::B16Bit => "B16Bit",
49981 Self::B32Bit => "B32Bit",
49982 }
49983 }
49984
49985 #[must_use]
49986 pub const fn variants() -> [BinaryFuseFilterType; 3] {
49987 Self::VARIANTS
49988 }
49989}
49990
49991impl Name for BinaryFuseFilterType {
49992 #[must_use]
49993 fn name(&self) -> &'static str {
49994 Self::name(self)
49995 }
49996}
49997
49998impl Variants<BinaryFuseFilterType> for BinaryFuseFilterType {
49999 fn variants() -> slice::Iter<'static, BinaryFuseFilterType> {
50000 Self::VARIANTS.iter()
50001 }
50002}
50003
50004impl Enum for BinaryFuseFilterType {}
50005
50006impl fmt::Display for BinaryFuseFilterType {
50007 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
50008 f.write_str(self.name())
50009 }
50010}
50011
50012impl TryFrom<i32> for BinaryFuseFilterType {
50013 type Error = Error;
50014
50015 fn try_from(i: i32) -> Result<Self, Error> {
50016 let e = match i {
50017 0 => BinaryFuseFilterType::B8Bit,
50018 1 => BinaryFuseFilterType::B16Bit,
50019 2 => BinaryFuseFilterType::B32Bit,
50020 #[allow(unreachable_patterns)]
50021 _ => return Err(Error::Invalid),
50022 };
50023 Ok(e)
50024 }
50025}
50026
50027impl From<BinaryFuseFilterType> for i32 {
50028 #[must_use]
50029 fn from(e: BinaryFuseFilterType) -> Self {
50030 e as Self
50031 }
50032}
50033
50034impl ReadXdr for BinaryFuseFilterType {
50035 #[cfg(feature = "std")]
50036 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
50037 r.with_limited_depth(|r| {
50038 let e = i32::read_xdr(r)?;
50039 let v: Self = e.try_into()?;
50040 Ok(v)
50041 })
50042 }
50043}
50044
50045impl WriteXdr for BinaryFuseFilterType {
50046 #[cfg(feature = "std")]
50047 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
50048 w.with_limited_depth(|w| {
50049 let i: i32 = (*self).into();
50050 i.write_xdr(w)
50051 })
50052 }
50053}
50054
50055#[cfg_attr(feature = "alloc", derive(Default))]
50079#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
50080#[cfg_eval::cfg_eval]
50081#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
50082#[cfg_attr(
50083 all(feature = "serde", feature = "alloc"),
50084 serde_with::serde_as,
50085 derive(serde::Serialize, serde::Deserialize),
50086 serde(rename_all = "snake_case")
50087)]
50088#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
50089pub struct SerializedBinaryFuseFilter {
50090 pub type_: BinaryFuseFilterType,
50091 pub input_hash_seed: ShortHashSeed,
50092 pub filter_seed: ShortHashSeed,
50093 pub segment_length: u32,
50094 pub segement_length_mask: u32,
50095 pub segment_count: u32,
50096 pub segment_count_length: u32,
50097 pub fingerprint_length: u32,
50098 pub fingerprints: BytesM,
50099}
50100
50101impl ReadXdr for SerializedBinaryFuseFilter {
50102 #[cfg(feature = "std")]
50103 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
50104 r.with_limited_depth(|r| {
50105 Ok(Self {
50106 type_: BinaryFuseFilterType::read_xdr(r)?,
50107 input_hash_seed: ShortHashSeed::read_xdr(r)?,
50108 filter_seed: ShortHashSeed::read_xdr(r)?,
50109 segment_length: u32::read_xdr(r)?,
50110 segement_length_mask: u32::read_xdr(r)?,
50111 segment_count: u32::read_xdr(r)?,
50112 segment_count_length: u32::read_xdr(r)?,
50113 fingerprint_length: u32::read_xdr(r)?,
50114 fingerprints: BytesM::read_xdr(r)?,
50115 })
50116 })
50117 }
50118}
50119
50120impl WriteXdr for SerializedBinaryFuseFilter {
50121 #[cfg(feature = "std")]
50122 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
50123 w.with_limited_depth(|w| {
50124 self.type_.write_xdr(w)?;
50125 self.input_hash_seed.write_xdr(w)?;
50126 self.filter_seed.write_xdr(w)?;
50127 self.segment_length.write_xdr(w)?;
50128 self.segement_length_mask.write_xdr(w)?;
50129 self.segment_count.write_xdr(w)?;
50130 self.segment_count_length.write_xdr(w)?;
50131 self.fingerprint_length.write_xdr(w)?;
50132 self.fingerprints.write_xdr(w)?;
50133 Ok(())
50134 })
50135 }
50136}
50137
50138#[cfg_eval::cfg_eval]
50145#[cfg_attr(feature = "alloc", derive(Default))]
50146#[derive(Clone, Hash, PartialEq, Eq, PartialOrd, Ord)]
50147#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
50148#[cfg_attr(
50149 all(feature = "serde", feature = "alloc"),
50150 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
50151)]
50152#[derive(Debug)]
50153pub struct PoolId(pub Hash);
50154
50155impl From<PoolId> for Hash {
50156 #[must_use]
50157 fn from(x: PoolId) -> Self {
50158 x.0
50159 }
50160}
50161
50162impl From<Hash> for PoolId {
50163 #[must_use]
50164 fn from(x: Hash) -> Self {
50165 PoolId(x)
50166 }
50167}
50168
50169impl AsRef<Hash> for PoolId {
50170 #[must_use]
50171 fn as_ref(&self) -> &Hash {
50172 &self.0
50173 }
50174}
50175
50176impl ReadXdr for PoolId {
50177 #[cfg(feature = "std")]
50178 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
50179 r.with_limited_depth(|r| {
50180 let i = Hash::read_xdr(r)?;
50181 let v = PoolId(i);
50182 Ok(v)
50183 })
50184 }
50185}
50186
50187impl WriteXdr for PoolId {
50188 #[cfg(feature = "std")]
50189 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
50190 w.with_limited_depth(|w| self.0.write_xdr(w))
50191 }
50192}
50193
50194#[cfg_attr(feature = "alloc", derive(Default))]
50205#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
50206#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
50207#[cfg_attr(
50208 all(feature = "serde", feature = "alloc"),
50209 derive(serde::Serialize, serde::Deserialize),
50210 serde(rename_all = "snake_case")
50211)]
50212#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
50213#[repr(i32)]
50214pub enum ClaimableBalanceIdType {
50215 #[cfg_attr(feature = "alloc", default)]
50216 ClaimableBalanceIdTypeV0 = 0,
50217}
50218
50219impl ClaimableBalanceIdType {
50220 pub const VARIANTS: [ClaimableBalanceIdType; 1] =
50221 [ClaimableBalanceIdType::ClaimableBalanceIdTypeV0];
50222 pub const VARIANTS_STR: [&'static str; 1] = ["ClaimableBalanceIdTypeV0"];
50223
50224 #[must_use]
50225 pub const fn name(&self) -> &'static str {
50226 match self {
50227 Self::ClaimableBalanceIdTypeV0 => "ClaimableBalanceIdTypeV0",
50228 }
50229 }
50230
50231 #[must_use]
50232 pub const fn variants() -> [ClaimableBalanceIdType; 1] {
50233 Self::VARIANTS
50234 }
50235}
50236
50237impl Name for ClaimableBalanceIdType {
50238 #[must_use]
50239 fn name(&self) -> &'static str {
50240 Self::name(self)
50241 }
50242}
50243
50244impl Variants<ClaimableBalanceIdType> for ClaimableBalanceIdType {
50245 fn variants() -> slice::Iter<'static, ClaimableBalanceIdType> {
50246 Self::VARIANTS.iter()
50247 }
50248}
50249
50250impl Enum for ClaimableBalanceIdType {}
50251
50252impl fmt::Display for ClaimableBalanceIdType {
50253 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
50254 f.write_str(self.name())
50255 }
50256}
50257
50258impl TryFrom<i32> for ClaimableBalanceIdType {
50259 type Error = Error;
50260
50261 fn try_from(i: i32) -> Result<Self, Error> {
50262 let e = match i {
50263 0 => ClaimableBalanceIdType::ClaimableBalanceIdTypeV0,
50264 #[allow(unreachable_patterns)]
50265 _ => return Err(Error::Invalid),
50266 };
50267 Ok(e)
50268 }
50269}
50270
50271impl From<ClaimableBalanceIdType> for i32 {
50272 #[must_use]
50273 fn from(e: ClaimableBalanceIdType) -> Self {
50274 e as Self
50275 }
50276}
50277
50278impl ReadXdr for ClaimableBalanceIdType {
50279 #[cfg(feature = "std")]
50280 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
50281 r.with_limited_depth(|r| {
50282 let e = i32::read_xdr(r)?;
50283 let v: Self = e.try_into()?;
50284 Ok(v)
50285 })
50286 }
50287}
50288
50289impl WriteXdr for ClaimableBalanceIdType {
50290 #[cfg(feature = "std")]
50291 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
50292 w.with_limited_depth(|w| {
50293 let i: i32 = (*self).into();
50294 i.write_xdr(w)
50295 })
50296 }
50297}
50298
50299#[cfg_eval::cfg_eval]
50311#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
50312#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
50313#[cfg_attr(
50314 all(feature = "serde", feature = "alloc"),
50315 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr)
50316)]
50317#[allow(clippy::large_enum_variant)]
50318pub enum ClaimableBalanceId {
50319 ClaimableBalanceIdTypeV0(Hash),
50320}
50321
50322#[cfg(feature = "alloc")]
50323impl Default for ClaimableBalanceId {
50324 fn default() -> Self {
50325 Self::ClaimableBalanceIdTypeV0(Hash::default())
50326 }
50327}
50328
50329impl ClaimableBalanceId {
50330 pub const VARIANTS: [ClaimableBalanceIdType; 1] =
50331 [ClaimableBalanceIdType::ClaimableBalanceIdTypeV0];
50332 pub const VARIANTS_STR: [&'static str; 1] = ["ClaimableBalanceIdTypeV0"];
50333
50334 #[must_use]
50335 pub const fn name(&self) -> &'static str {
50336 match self {
50337 Self::ClaimableBalanceIdTypeV0(_) => "ClaimableBalanceIdTypeV0",
50338 }
50339 }
50340
50341 #[must_use]
50342 pub const fn discriminant(&self) -> ClaimableBalanceIdType {
50343 #[allow(clippy::match_same_arms)]
50344 match self {
50345 Self::ClaimableBalanceIdTypeV0(_) => ClaimableBalanceIdType::ClaimableBalanceIdTypeV0,
50346 }
50347 }
50348
50349 #[must_use]
50350 pub const fn variants() -> [ClaimableBalanceIdType; 1] {
50351 Self::VARIANTS
50352 }
50353}
50354
50355impl Name for ClaimableBalanceId {
50356 #[must_use]
50357 fn name(&self) -> &'static str {
50358 Self::name(self)
50359 }
50360}
50361
50362impl Discriminant<ClaimableBalanceIdType> for ClaimableBalanceId {
50363 #[must_use]
50364 fn discriminant(&self) -> ClaimableBalanceIdType {
50365 Self::discriminant(self)
50366 }
50367}
50368
50369impl Variants<ClaimableBalanceIdType> for ClaimableBalanceId {
50370 fn variants() -> slice::Iter<'static, ClaimableBalanceIdType> {
50371 Self::VARIANTS.iter()
50372 }
50373}
50374
50375impl Union<ClaimableBalanceIdType> for ClaimableBalanceId {}
50376
50377impl ReadXdr for ClaimableBalanceId {
50378 #[cfg(feature = "std")]
50379 fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
50380 r.with_limited_depth(|r| {
50381 let dv: ClaimableBalanceIdType = <ClaimableBalanceIdType as ReadXdr>::read_xdr(r)?;
50382 #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
50383 let v = match dv {
50384 ClaimableBalanceIdType::ClaimableBalanceIdTypeV0 => {
50385 Self::ClaimableBalanceIdTypeV0(Hash::read_xdr(r)?)
50386 }
50387 #[allow(unreachable_patterns)]
50388 _ => return Err(Error::Invalid),
50389 };
50390 Ok(v)
50391 })
50392 }
50393}
50394
50395impl WriteXdr for ClaimableBalanceId {
50396 #[cfg(feature = "std")]
50397 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
50398 w.with_limited_depth(|w| {
50399 self.discriminant().write_xdr(w)?;
50400 #[allow(clippy::match_same_arms)]
50401 match self {
50402 Self::ClaimableBalanceIdTypeV0(v) => v.write_xdr(w)?,
50403 };
50404 Ok(())
50405 })
50406 }
50407}
50408
50409#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
50410#[cfg_attr(
50411 all(feature = "serde", feature = "alloc"),
50412 derive(serde::Serialize, serde::Deserialize),
50413 serde(rename_all = "snake_case")
50414)]
50415#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
50416pub enum TypeVariant {
50417 Value,
50418 ScpBallot,
50419 ScpStatementType,
50420 ScpNomination,
50421 ScpStatement,
50422 ScpStatementPledges,
50423 ScpStatementPrepare,
50424 ScpStatementConfirm,
50425 ScpStatementExternalize,
50426 ScpEnvelope,
50427 ScpQuorumSet,
50428 ConfigSettingContractExecutionLanesV0,
50429 ConfigSettingContractComputeV0,
50430 ConfigSettingContractParallelComputeV0,
50431 ConfigSettingContractLedgerCostV0,
50432 ConfigSettingContractLedgerCostExtV0,
50433 ConfigSettingContractHistoricalDataV0,
50434 ConfigSettingContractEventsV0,
50435 ConfigSettingContractBandwidthV0,
50436 ContractCostType,
50437 ContractCostParamEntry,
50438 StateArchivalSettings,
50439 EvictionIterator,
50440 ConfigSettingScpTiming,
50441 ContractCostParams,
50442 ConfigSettingId,
50443 ConfigSettingEntry,
50444 ScEnvMetaKind,
50445 ScEnvMetaEntry,
50446 ScEnvMetaEntryInterfaceVersion,
50447 ScMetaV0,
50448 ScMetaKind,
50449 ScMetaEntry,
50450 ScSpecType,
50451 ScSpecTypeOption,
50452 ScSpecTypeResult,
50453 ScSpecTypeVec,
50454 ScSpecTypeMap,
50455 ScSpecTypeTuple,
50456 ScSpecTypeBytesN,
50457 ScSpecTypeUdt,
50458 ScSpecTypeDef,
50459 ScSpecUdtStructFieldV0,
50460 ScSpecUdtStructV0,
50461 ScSpecUdtUnionCaseVoidV0,
50462 ScSpecUdtUnionCaseTupleV0,
50463 ScSpecUdtUnionCaseV0Kind,
50464 ScSpecUdtUnionCaseV0,
50465 ScSpecUdtUnionV0,
50466 ScSpecUdtEnumCaseV0,
50467 ScSpecUdtEnumV0,
50468 ScSpecUdtErrorEnumCaseV0,
50469 ScSpecUdtErrorEnumV0,
50470 ScSpecFunctionInputV0,
50471 ScSpecFunctionV0,
50472 ScSpecEventParamLocationV0,
50473 ScSpecEventParamV0,
50474 ScSpecEventDataFormat,
50475 ScSpecEventV0,
50476 ScSpecEntryKind,
50477 ScSpecEntry,
50478 ScValType,
50479 ScErrorType,
50480 ScErrorCode,
50481 ScError,
50482 UInt128Parts,
50483 Int128Parts,
50484 UInt256Parts,
50485 Int256Parts,
50486 ContractExecutableType,
50487 ContractExecutable,
50488 ScAddressType,
50489 MuxedEd25519Account,
50490 ScAddress,
50491 ScVec,
50492 ScMap,
50493 ScBytes,
50494 ScString,
50495 ScSymbol,
50496 ScNonceKey,
50497 ScContractInstance,
50498 ScVal,
50499 ScMapEntry,
50500 LedgerCloseMetaBatch,
50501 StoredTransactionSet,
50502 StoredDebugTransactionSet,
50503 PersistedScpStateV0,
50504 PersistedScpStateV1,
50505 PersistedScpState,
50506 Thresholds,
50507 String32,
50508 String64,
50509 SequenceNumber,
50510 DataValue,
50511 AssetCode4,
50512 AssetCode12,
50513 AssetType,
50514 AssetCode,
50515 AlphaNum4,
50516 AlphaNum12,
50517 Asset,
50518 Price,
50519 Liabilities,
50520 ThresholdIndexes,
50521 LedgerEntryType,
50522 Signer,
50523 AccountFlags,
50524 SponsorshipDescriptor,
50525 AccountEntryExtensionV3,
50526 AccountEntryExtensionV2,
50527 AccountEntryExtensionV2Ext,
50528 AccountEntryExtensionV1,
50529 AccountEntryExtensionV1Ext,
50530 AccountEntry,
50531 AccountEntryExt,
50532 TrustLineFlags,
50533 LiquidityPoolType,
50534 TrustLineAsset,
50535 TrustLineEntryExtensionV2,
50536 TrustLineEntryExtensionV2Ext,
50537 TrustLineEntry,
50538 TrustLineEntryExt,
50539 TrustLineEntryV1,
50540 TrustLineEntryV1Ext,
50541 OfferEntryFlags,
50542 OfferEntry,
50543 OfferEntryExt,
50544 DataEntry,
50545 DataEntryExt,
50546 ClaimPredicateType,
50547 ClaimPredicate,
50548 ClaimantType,
50549 Claimant,
50550 ClaimantV0,
50551 ClaimableBalanceFlags,
50552 ClaimableBalanceEntryExtensionV1,
50553 ClaimableBalanceEntryExtensionV1Ext,
50554 ClaimableBalanceEntry,
50555 ClaimableBalanceEntryExt,
50556 LiquidityPoolConstantProductParameters,
50557 LiquidityPoolEntry,
50558 LiquidityPoolEntryBody,
50559 LiquidityPoolEntryConstantProduct,
50560 ContractDataDurability,
50561 ContractDataEntry,
50562 ContractCodeCostInputs,
50563 ContractCodeEntry,
50564 ContractCodeEntryExt,
50565 ContractCodeEntryV1,
50566 TtlEntry,
50567 LedgerEntryExtensionV1,
50568 LedgerEntryExtensionV1Ext,
50569 LedgerEntry,
50570 LedgerEntryData,
50571 LedgerEntryExt,
50572 LedgerKey,
50573 LedgerKeyAccount,
50574 LedgerKeyTrustLine,
50575 LedgerKeyOffer,
50576 LedgerKeyData,
50577 LedgerKeyClaimableBalance,
50578 LedgerKeyLiquidityPool,
50579 LedgerKeyContractData,
50580 LedgerKeyContractCode,
50581 LedgerKeyConfigSetting,
50582 LedgerKeyTtl,
50583 EnvelopeType,
50584 BucketListType,
50585 BucketEntryType,
50586 HotArchiveBucketEntryType,
50587 BucketMetadata,
50588 BucketMetadataExt,
50589 BucketEntry,
50590 HotArchiveBucketEntry,
50591 UpgradeType,
50592 StellarValueType,
50593 LedgerCloseValueSignature,
50594 StellarValue,
50595 StellarValueExt,
50596 LedgerHeaderFlags,
50597 LedgerHeaderExtensionV1,
50598 LedgerHeaderExtensionV1Ext,
50599 LedgerHeader,
50600 LedgerHeaderExt,
50601 LedgerUpgradeType,
50602 ConfigUpgradeSetKey,
50603 LedgerUpgrade,
50604 ConfigUpgradeSet,
50605 TxSetComponentType,
50606 DependentTxCluster,
50607 ParallelTxExecutionStage,
50608 ParallelTxsComponent,
50609 TxSetComponent,
50610 TxSetComponentTxsMaybeDiscountedFee,
50611 TransactionPhase,
50612 TransactionSet,
50613 TransactionSetV1,
50614 GeneralizedTransactionSet,
50615 TransactionResultPair,
50616 TransactionResultSet,
50617 TransactionHistoryEntry,
50618 TransactionHistoryEntryExt,
50619 TransactionHistoryResultEntry,
50620 TransactionHistoryResultEntryExt,
50621 LedgerHeaderHistoryEntry,
50622 LedgerHeaderHistoryEntryExt,
50623 LedgerScpMessages,
50624 ScpHistoryEntryV0,
50625 ScpHistoryEntry,
50626 LedgerEntryChangeType,
50627 LedgerEntryChange,
50628 LedgerEntryChanges,
50629 OperationMeta,
50630 TransactionMetaV1,
50631 TransactionMetaV2,
50632 ContractEventType,
50633 ContractEvent,
50634 ContractEventBody,
50635 ContractEventV0,
50636 DiagnosticEvent,
50637 SorobanTransactionMetaExtV1,
50638 SorobanTransactionMetaExt,
50639 SorobanTransactionMeta,
50640 TransactionMetaV3,
50641 OperationMetaV2,
50642 SorobanTransactionMetaV2,
50643 TransactionEventStage,
50644 TransactionEvent,
50645 TransactionMetaV4,
50646 InvokeHostFunctionSuccessPreImage,
50647 TransactionMeta,
50648 TransactionResultMeta,
50649 TransactionResultMetaV1,
50650 UpgradeEntryMeta,
50651 LedgerCloseMetaV0,
50652 LedgerCloseMetaExtV1,
50653 LedgerCloseMetaExt,
50654 LedgerCloseMetaV1,
50655 LedgerCloseMetaV2,
50656 LedgerCloseMeta,
50657 ErrorCode,
50658 SError,
50659 SendMore,
50660 SendMoreExtended,
50661 AuthCert,
50662 Hello,
50663 Auth,
50664 IpAddrType,
50665 PeerAddress,
50666 PeerAddressIp,
50667 MessageType,
50668 DontHave,
50669 SurveyMessageCommandType,
50670 SurveyMessageResponseType,
50671 TimeSlicedSurveyStartCollectingMessage,
50672 SignedTimeSlicedSurveyStartCollectingMessage,
50673 TimeSlicedSurveyStopCollectingMessage,
50674 SignedTimeSlicedSurveyStopCollectingMessage,
50675 SurveyRequestMessage,
50676 TimeSlicedSurveyRequestMessage,
50677 SignedTimeSlicedSurveyRequestMessage,
50678 EncryptedBody,
50679 SurveyResponseMessage,
50680 TimeSlicedSurveyResponseMessage,
50681 SignedTimeSlicedSurveyResponseMessage,
50682 PeerStats,
50683 TimeSlicedNodeData,
50684 TimeSlicedPeerData,
50685 TimeSlicedPeerDataList,
50686 TopologyResponseBodyV2,
50687 SurveyResponseBody,
50688 TxAdvertVector,
50689 FloodAdvert,
50690 TxDemandVector,
50691 FloodDemand,
50692 StellarMessage,
50693 AuthenticatedMessage,
50694 AuthenticatedMessageV0,
50695 LiquidityPoolParameters,
50696 MuxedAccount,
50697 MuxedAccountMed25519,
50698 DecoratedSignature,
50699 OperationType,
50700 CreateAccountOp,
50701 PaymentOp,
50702 PathPaymentStrictReceiveOp,
50703 PathPaymentStrictSendOp,
50704 ManageSellOfferOp,
50705 ManageBuyOfferOp,
50706 CreatePassiveSellOfferOp,
50707 SetOptionsOp,
50708 ChangeTrustAsset,
50709 ChangeTrustOp,
50710 AllowTrustOp,
50711 ManageDataOp,
50712 BumpSequenceOp,
50713 CreateClaimableBalanceOp,
50714 ClaimClaimableBalanceOp,
50715 BeginSponsoringFutureReservesOp,
50716 RevokeSponsorshipType,
50717 RevokeSponsorshipOp,
50718 RevokeSponsorshipOpSigner,
50719 ClawbackOp,
50720 ClawbackClaimableBalanceOp,
50721 SetTrustLineFlagsOp,
50722 LiquidityPoolDepositOp,
50723 LiquidityPoolWithdrawOp,
50724 HostFunctionType,
50725 ContractIdPreimageType,
50726 ContractIdPreimage,
50727 ContractIdPreimageFromAddress,
50728 CreateContractArgs,
50729 CreateContractArgsV2,
50730 InvokeContractArgs,
50731 HostFunction,
50732 SorobanAuthorizedFunctionType,
50733 SorobanAuthorizedFunction,
50734 SorobanAuthorizedInvocation,
50735 SorobanAddressCredentials,
50736 SorobanCredentialsType,
50737 SorobanCredentials,
50738 SorobanAuthorizationEntry,
50739 SorobanAuthorizationEntries,
50740 InvokeHostFunctionOp,
50741 ExtendFootprintTtlOp,
50742 RestoreFootprintOp,
50743 Operation,
50744 OperationBody,
50745 HashIdPreimage,
50746 HashIdPreimageOperationId,
50747 HashIdPreimageRevokeId,
50748 HashIdPreimageContractId,
50749 HashIdPreimageSorobanAuthorization,
50750 MemoType,
50751 Memo,
50752 TimeBounds,
50753 LedgerBounds,
50754 PreconditionsV2,
50755 PreconditionType,
50756 Preconditions,
50757 LedgerFootprint,
50758 SorobanResources,
50759 SorobanResourcesExtV0,
50760 SorobanTransactionData,
50761 SorobanTransactionDataExt,
50762 TransactionV0,
50763 TransactionV0Ext,
50764 TransactionV0Envelope,
50765 Transaction,
50766 TransactionExt,
50767 TransactionV1Envelope,
50768 FeeBumpTransaction,
50769 FeeBumpTransactionInnerTx,
50770 FeeBumpTransactionExt,
50771 FeeBumpTransactionEnvelope,
50772 TransactionEnvelope,
50773 TransactionSignaturePayload,
50774 TransactionSignaturePayloadTaggedTransaction,
50775 ClaimAtomType,
50776 ClaimOfferAtomV0,
50777 ClaimOfferAtom,
50778 ClaimLiquidityAtom,
50779 ClaimAtom,
50780 CreateAccountResultCode,
50781 CreateAccountResult,
50782 PaymentResultCode,
50783 PaymentResult,
50784 PathPaymentStrictReceiveResultCode,
50785 SimplePaymentResult,
50786 PathPaymentStrictReceiveResult,
50787 PathPaymentStrictReceiveResultSuccess,
50788 PathPaymentStrictSendResultCode,
50789 PathPaymentStrictSendResult,
50790 PathPaymentStrictSendResultSuccess,
50791 ManageSellOfferResultCode,
50792 ManageOfferEffect,
50793 ManageOfferSuccessResult,
50794 ManageOfferSuccessResultOffer,
50795 ManageSellOfferResult,
50796 ManageBuyOfferResultCode,
50797 ManageBuyOfferResult,
50798 SetOptionsResultCode,
50799 SetOptionsResult,
50800 ChangeTrustResultCode,
50801 ChangeTrustResult,
50802 AllowTrustResultCode,
50803 AllowTrustResult,
50804 AccountMergeResultCode,
50805 AccountMergeResult,
50806 InflationResultCode,
50807 InflationPayout,
50808 InflationResult,
50809 ManageDataResultCode,
50810 ManageDataResult,
50811 BumpSequenceResultCode,
50812 BumpSequenceResult,
50813 CreateClaimableBalanceResultCode,
50814 CreateClaimableBalanceResult,
50815 ClaimClaimableBalanceResultCode,
50816 ClaimClaimableBalanceResult,
50817 BeginSponsoringFutureReservesResultCode,
50818 BeginSponsoringFutureReservesResult,
50819 EndSponsoringFutureReservesResultCode,
50820 EndSponsoringFutureReservesResult,
50821 RevokeSponsorshipResultCode,
50822 RevokeSponsorshipResult,
50823 ClawbackResultCode,
50824 ClawbackResult,
50825 ClawbackClaimableBalanceResultCode,
50826 ClawbackClaimableBalanceResult,
50827 SetTrustLineFlagsResultCode,
50828 SetTrustLineFlagsResult,
50829 LiquidityPoolDepositResultCode,
50830 LiquidityPoolDepositResult,
50831 LiquidityPoolWithdrawResultCode,
50832 LiquidityPoolWithdrawResult,
50833 InvokeHostFunctionResultCode,
50834 InvokeHostFunctionResult,
50835 ExtendFootprintTtlResultCode,
50836 ExtendFootprintTtlResult,
50837 RestoreFootprintResultCode,
50838 RestoreFootprintResult,
50839 OperationResultCode,
50840 OperationResult,
50841 OperationResultTr,
50842 TransactionResultCode,
50843 InnerTransactionResult,
50844 InnerTransactionResultResult,
50845 InnerTransactionResultExt,
50846 InnerTransactionResultPair,
50847 TransactionResult,
50848 TransactionResultResult,
50849 TransactionResultExt,
50850 Hash,
50851 Uint256,
50852 Uint32,
50853 Int32,
50854 Uint64,
50855 Int64,
50856 TimePoint,
50857 Duration,
50858 ExtensionPoint,
50859 CryptoKeyType,
50860 PublicKeyType,
50861 SignerKeyType,
50862 PublicKey,
50863 SignerKey,
50864 SignerKeyEd25519SignedPayload,
50865 Signature,
50866 SignatureHint,
50867 NodeId,
50868 AccountId,
50869 ContractId,
50870 Curve25519Secret,
50871 Curve25519Public,
50872 HmacSha256Key,
50873 HmacSha256Mac,
50874 ShortHashSeed,
50875 BinaryFuseFilterType,
50876 SerializedBinaryFuseFilter,
50877 PoolId,
50878 ClaimableBalanceIdType,
50879 ClaimableBalanceId,
50880}
50881
50882impl TypeVariant {
50883 pub const VARIANTS: [TypeVariant; 463] = [
50884 TypeVariant::Value,
50885 TypeVariant::ScpBallot,
50886 TypeVariant::ScpStatementType,
50887 TypeVariant::ScpNomination,
50888 TypeVariant::ScpStatement,
50889 TypeVariant::ScpStatementPledges,
50890 TypeVariant::ScpStatementPrepare,
50891 TypeVariant::ScpStatementConfirm,
50892 TypeVariant::ScpStatementExternalize,
50893 TypeVariant::ScpEnvelope,
50894 TypeVariant::ScpQuorumSet,
50895 TypeVariant::ConfigSettingContractExecutionLanesV0,
50896 TypeVariant::ConfigSettingContractComputeV0,
50897 TypeVariant::ConfigSettingContractParallelComputeV0,
50898 TypeVariant::ConfigSettingContractLedgerCostV0,
50899 TypeVariant::ConfigSettingContractLedgerCostExtV0,
50900 TypeVariant::ConfigSettingContractHistoricalDataV0,
50901 TypeVariant::ConfigSettingContractEventsV0,
50902 TypeVariant::ConfigSettingContractBandwidthV0,
50903 TypeVariant::ContractCostType,
50904 TypeVariant::ContractCostParamEntry,
50905 TypeVariant::StateArchivalSettings,
50906 TypeVariant::EvictionIterator,
50907 TypeVariant::ConfigSettingScpTiming,
50908 TypeVariant::ContractCostParams,
50909 TypeVariant::ConfigSettingId,
50910 TypeVariant::ConfigSettingEntry,
50911 TypeVariant::ScEnvMetaKind,
50912 TypeVariant::ScEnvMetaEntry,
50913 TypeVariant::ScEnvMetaEntryInterfaceVersion,
50914 TypeVariant::ScMetaV0,
50915 TypeVariant::ScMetaKind,
50916 TypeVariant::ScMetaEntry,
50917 TypeVariant::ScSpecType,
50918 TypeVariant::ScSpecTypeOption,
50919 TypeVariant::ScSpecTypeResult,
50920 TypeVariant::ScSpecTypeVec,
50921 TypeVariant::ScSpecTypeMap,
50922 TypeVariant::ScSpecTypeTuple,
50923 TypeVariant::ScSpecTypeBytesN,
50924 TypeVariant::ScSpecTypeUdt,
50925 TypeVariant::ScSpecTypeDef,
50926 TypeVariant::ScSpecUdtStructFieldV0,
50927 TypeVariant::ScSpecUdtStructV0,
50928 TypeVariant::ScSpecUdtUnionCaseVoidV0,
50929 TypeVariant::ScSpecUdtUnionCaseTupleV0,
50930 TypeVariant::ScSpecUdtUnionCaseV0Kind,
50931 TypeVariant::ScSpecUdtUnionCaseV0,
50932 TypeVariant::ScSpecUdtUnionV0,
50933 TypeVariant::ScSpecUdtEnumCaseV0,
50934 TypeVariant::ScSpecUdtEnumV0,
50935 TypeVariant::ScSpecUdtErrorEnumCaseV0,
50936 TypeVariant::ScSpecUdtErrorEnumV0,
50937 TypeVariant::ScSpecFunctionInputV0,
50938 TypeVariant::ScSpecFunctionV0,
50939 TypeVariant::ScSpecEventParamLocationV0,
50940 TypeVariant::ScSpecEventParamV0,
50941 TypeVariant::ScSpecEventDataFormat,
50942 TypeVariant::ScSpecEventV0,
50943 TypeVariant::ScSpecEntryKind,
50944 TypeVariant::ScSpecEntry,
50945 TypeVariant::ScValType,
50946 TypeVariant::ScErrorType,
50947 TypeVariant::ScErrorCode,
50948 TypeVariant::ScError,
50949 TypeVariant::UInt128Parts,
50950 TypeVariant::Int128Parts,
50951 TypeVariant::UInt256Parts,
50952 TypeVariant::Int256Parts,
50953 TypeVariant::ContractExecutableType,
50954 TypeVariant::ContractExecutable,
50955 TypeVariant::ScAddressType,
50956 TypeVariant::MuxedEd25519Account,
50957 TypeVariant::ScAddress,
50958 TypeVariant::ScVec,
50959 TypeVariant::ScMap,
50960 TypeVariant::ScBytes,
50961 TypeVariant::ScString,
50962 TypeVariant::ScSymbol,
50963 TypeVariant::ScNonceKey,
50964 TypeVariant::ScContractInstance,
50965 TypeVariant::ScVal,
50966 TypeVariant::ScMapEntry,
50967 TypeVariant::LedgerCloseMetaBatch,
50968 TypeVariant::StoredTransactionSet,
50969 TypeVariant::StoredDebugTransactionSet,
50970 TypeVariant::PersistedScpStateV0,
50971 TypeVariant::PersistedScpStateV1,
50972 TypeVariant::PersistedScpState,
50973 TypeVariant::Thresholds,
50974 TypeVariant::String32,
50975 TypeVariant::String64,
50976 TypeVariant::SequenceNumber,
50977 TypeVariant::DataValue,
50978 TypeVariant::AssetCode4,
50979 TypeVariant::AssetCode12,
50980 TypeVariant::AssetType,
50981 TypeVariant::AssetCode,
50982 TypeVariant::AlphaNum4,
50983 TypeVariant::AlphaNum12,
50984 TypeVariant::Asset,
50985 TypeVariant::Price,
50986 TypeVariant::Liabilities,
50987 TypeVariant::ThresholdIndexes,
50988 TypeVariant::LedgerEntryType,
50989 TypeVariant::Signer,
50990 TypeVariant::AccountFlags,
50991 TypeVariant::SponsorshipDescriptor,
50992 TypeVariant::AccountEntryExtensionV3,
50993 TypeVariant::AccountEntryExtensionV2,
50994 TypeVariant::AccountEntryExtensionV2Ext,
50995 TypeVariant::AccountEntryExtensionV1,
50996 TypeVariant::AccountEntryExtensionV1Ext,
50997 TypeVariant::AccountEntry,
50998 TypeVariant::AccountEntryExt,
50999 TypeVariant::TrustLineFlags,
51000 TypeVariant::LiquidityPoolType,
51001 TypeVariant::TrustLineAsset,
51002 TypeVariant::TrustLineEntryExtensionV2,
51003 TypeVariant::TrustLineEntryExtensionV2Ext,
51004 TypeVariant::TrustLineEntry,
51005 TypeVariant::TrustLineEntryExt,
51006 TypeVariant::TrustLineEntryV1,
51007 TypeVariant::TrustLineEntryV1Ext,
51008 TypeVariant::OfferEntryFlags,
51009 TypeVariant::OfferEntry,
51010 TypeVariant::OfferEntryExt,
51011 TypeVariant::DataEntry,
51012 TypeVariant::DataEntryExt,
51013 TypeVariant::ClaimPredicateType,
51014 TypeVariant::ClaimPredicate,
51015 TypeVariant::ClaimantType,
51016 TypeVariant::Claimant,
51017 TypeVariant::ClaimantV0,
51018 TypeVariant::ClaimableBalanceFlags,
51019 TypeVariant::ClaimableBalanceEntryExtensionV1,
51020 TypeVariant::ClaimableBalanceEntryExtensionV1Ext,
51021 TypeVariant::ClaimableBalanceEntry,
51022 TypeVariant::ClaimableBalanceEntryExt,
51023 TypeVariant::LiquidityPoolConstantProductParameters,
51024 TypeVariant::LiquidityPoolEntry,
51025 TypeVariant::LiquidityPoolEntryBody,
51026 TypeVariant::LiquidityPoolEntryConstantProduct,
51027 TypeVariant::ContractDataDurability,
51028 TypeVariant::ContractDataEntry,
51029 TypeVariant::ContractCodeCostInputs,
51030 TypeVariant::ContractCodeEntry,
51031 TypeVariant::ContractCodeEntryExt,
51032 TypeVariant::ContractCodeEntryV1,
51033 TypeVariant::TtlEntry,
51034 TypeVariant::LedgerEntryExtensionV1,
51035 TypeVariant::LedgerEntryExtensionV1Ext,
51036 TypeVariant::LedgerEntry,
51037 TypeVariant::LedgerEntryData,
51038 TypeVariant::LedgerEntryExt,
51039 TypeVariant::LedgerKey,
51040 TypeVariant::LedgerKeyAccount,
51041 TypeVariant::LedgerKeyTrustLine,
51042 TypeVariant::LedgerKeyOffer,
51043 TypeVariant::LedgerKeyData,
51044 TypeVariant::LedgerKeyClaimableBalance,
51045 TypeVariant::LedgerKeyLiquidityPool,
51046 TypeVariant::LedgerKeyContractData,
51047 TypeVariant::LedgerKeyContractCode,
51048 TypeVariant::LedgerKeyConfigSetting,
51049 TypeVariant::LedgerKeyTtl,
51050 TypeVariant::EnvelopeType,
51051 TypeVariant::BucketListType,
51052 TypeVariant::BucketEntryType,
51053 TypeVariant::HotArchiveBucketEntryType,
51054 TypeVariant::BucketMetadata,
51055 TypeVariant::BucketMetadataExt,
51056 TypeVariant::BucketEntry,
51057 TypeVariant::HotArchiveBucketEntry,
51058 TypeVariant::UpgradeType,
51059 TypeVariant::StellarValueType,
51060 TypeVariant::LedgerCloseValueSignature,
51061 TypeVariant::StellarValue,
51062 TypeVariant::StellarValueExt,
51063 TypeVariant::LedgerHeaderFlags,
51064 TypeVariant::LedgerHeaderExtensionV1,
51065 TypeVariant::LedgerHeaderExtensionV1Ext,
51066 TypeVariant::LedgerHeader,
51067 TypeVariant::LedgerHeaderExt,
51068 TypeVariant::LedgerUpgradeType,
51069 TypeVariant::ConfigUpgradeSetKey,
51070 TypeVariant::LedgerUpgrade,
51071 TypeVariant::ConfigUpgradeSet,
51072 TypeVariant::TxSetComponentType,
51073 TypeVariant::DependentTxCluster,
51074 TypeVariant::ParallelTxExecutionStage,
51075 TypeVariant::ParallelTxsComponent,
51076 TypeVariant::TxSetComponent,
51077 TypeVariant::TxSetComponentTxsMaybeDiscountedFee,
51078 TypeVariant::TransactionPhase,
51079 TypeVariant::TransactionSet,
51080 TypeVariant::TransactionSetV1,
51081 TypeVariant::GeneralizedTransactionSet,
51082 TypeVariant::TransactionResultPair,
51083 TypeVariant::TransactionResultSet,
51084 TypeVariant::TransactionHistoryEntry,
51085 TypeVariant::TransactionHistoryEntryExt,
51086 TypeVariant::TransactionHistoryResultEntry,
51087 TypeVariant::TransactionHistoryResultEntryExt,
51088 TypeVariant::LedgerHeaderHistoryEntry,
51089 TypeVariant::LedgerHeaderHistoryEntryExt,
51090 TypeVariant::LedgerScpMessages,
51091 TypeVariant::ScpHistoryEntryV0,
51092 TypeVariant::ScpHistoryEntry,
51093 TypeVariant::LedgerEntryChangeType,
51094 TypeVariant::LedgerEntryChange,
51095 TypeVariant::LedgerEntryChanges,
51096 TypeVariant::OperationMeta,
51097 TypeVariant::TransactionMetaV1,
51098 TypeVariant::TransactionMetaV2,
51099 TypeVariant::ContractEventType,
51100 TypeVariant::ContractEvent,
51101 TypeVariant::ContractEventBody,
51102 TypeVariant::ContractEventV0,
51103 TypeVariant::DiagnosticEvent,
51104 TypeVariant::SorobanTransactionMetaExtV1,
51105 TypeVariant::SorobanTransactionMetaExt,
51106 TypeVariant::SorobanTransactionMeta,
51107 TypeVariant::TransactionMetaV3,
51108 TypeVariant::OperationMetaV2,
51109 TypeVariant::SorobanTransactionMetaV2,
51110 TypeVariant::TransactionEventStage,
51111 TypeVariant::TransactionEvent,
51112 TypeVariant::TransactionMetaV4,
51113 TypeVariant::InvokeHostFunctionSuccessPreImage,
51114 TypeVariant::TransactionMeta,
51115 TypeVariant::TransactionResultMeta,
51116 TypeVariant::TransactionResultMetaV1,
51117 TypeVariant::UpgradeEntryMeta,
51118 TypeVariant::LedgerCloseMetaV0,
51119 TypeVariant::LedgerCloseMetaExtV1,
51120 TypeVariant::LedgerCloseMetaExt,
51121 TypeVariant::LedgerCloseMetaV1,
51122 TypeVariant::LedgerCloseMetaV2,
51123 TypeVariant::LedgerCloseMeta,
51124 TypeVariant::ErrorCode,
51125 TypeVariant::SError,
51126 TypeVariant::SendMore,
51127 TypeVariant::SendMoreExtended,
51128 TypeVariant::AuthCert,
51129 TypeVariant::Hello,
51130 TypeVariant::Auth,
51131 TypeVariant::IpAddrType,
51132 TypeVariant::PeerAddress,
51133 TypeVariant::PeerAddressIp,
51134 TypeVariant::MessageType,
51135 TypeVariant::DontHave,
51136 TypeVariant::SurveyMessageCommandType,
51137 TypeVariant::SurveyMessageResponseType,
51138 TypeVariant::TimeSlicedSurveyStartCollectingMessage,
51139 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage,
51140 TypeVariant::TimeSlicedSurveyStopCollectingMessage,
51141 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage,
51142 TypeVariant::SurveyRequestMessage,
51143 TypeVariant::TimeSlicedSurveyRequestMessage,
51144 TypeVariant::SignedTimeSlicedSurveyRequestMessage,
51145 TypeVariant::EncryptedBody,
51146 TypeVariant::SurveyResponseMessage,
51147 TypeVariant::TimeSlicedSurveyResponseMessage,
51148 TypeVariant::SignedTimeSlicedSurveyResponseMessage,
51149 TypeVariant::PeerStats,
51150 TypeVariant::TimeSlicedNodeData,
51151 TypeVariant::TimeSlicedPeerData,
51152 TypeVariant::TimeSlicedPeerDataList,
51153 TypeVariant::TopologyResponseBodyV2,
51154 TypeVariant::SurveyResponseBody,
51155 TypeVariant::TxAdvertVector,
51156 TypeVariant::FloodAdvert,
51157 TypeVariant::TxDemandVector,
51158 TypeVariant::FloodDemand,
51159 TypeVariant::StellarMessage,
51160 TypeVariant::AuthenticatedMessage,
51161 TypeVariant::AuthenticatedMessageV0,
51162 TypeVariant::LiquidityPoolParameters,
51163 TypeVariant::MuxedAccount,
51164 TypeVariant::MuxedAccountMed25519,
51165 TypeVariant::DecoratedSignature,
51166 TypeVariant::OperationType,
51167 TypeVariant::CreateAccountOp,
51168 TypeVariant::PaymentOp,
51169 TypeVariant::PathPaymentStrictReceiveOp,
51170 TypeVariant::PathPaymentStrictSendOp,
51171 TypeVariant::ManageSellOfferOp,
51172 TypeVariant::ManageBuyOfferOp,
51173 TypeVariant::CreatePassiveSellOfferOp,
51174 TypeVariant::SetOptionsOp,
51175 TypeVariant::ChangeTrustAsset,
51176 TypeVariant::ChangeTrustOp,
51177 TypeVariant::AllowTrustOp,
51178 TypeVariant::ManageDataOp,
51179 TypeVariant::BumpSequenceOp,
51180 TypeVariant::CreateClaimableBalanceOp,
51181 TypeVariant::ClaimClaimableBalanceOp,
51182 TypeVariant::BeginSponsoringFutureReservesOp,
51183 TypeVariant::RevokeSponsorshipType,
51184 TypeVariant::RevokeSponsorshipOp,
51185 TypeVariant::RevokeSponsorshipOpSigner,
51186 TypeVariant::ClawbackOp,
51187 TypeVariant::ClawbackClaimableBalanceOp,
51188 TypeVariant::SetTrustLineFlagsOp,
51189 TypeVariant::LiquidityPoolDepositOp,
51190 TypeVariant::LiquidityPoolWithdrawOp,
51191 TypeVariant::HostFunctionType,
51192 TypeVariant::ContractIdPreimageType,
51193 TypeVariant::ContractIdPreimage,
51194 TypeVariant::ContractIdPreimageFromAddress,
51195 TypeVariant::CreateContractArgs,
51196 TypeVariant::CreateContractArgsV2,
51197 TypeVariant::InvokeContractArgs,
51198 TypeVariant::HostFunction,
51199 TypeVariant::SorobanAuthorizedFunctionType,
51200 TypeVariant::SorobanAuthorizedFunction,
51201 TypeVariant::SorobanAuthorizedInvocation,
51202 TypeVariant::SorobanAddressCredentials,
51203 TypeVariant::SorobanCredentialsType,
51204 TypeVariant::SorobanCredentials,
51205 TypeVariant::SorobanAuthorizationEntry,
51206 TypeVariant::SorobanAuthorizationEntries,
51207 TypeVariant::InvokeHostFunctionOp,
51208 TypeVariant::ExtendFootprintTtlOp,
51209 TypeVariant::RestoreFootprintOp,
51210 TypeVariant::Operation,
51211 TypeVariant::OperationBody,
51212 TypeVariant::HashIdPreimage,
51213 TypeVariant::HashIdPreimageOperationId,
51214 TypeVariant::HashIdPreimageRevokeId,
51215 TypeVariant::HashIdPreimageContractId,
51216 TypeVariant::HashIdPreimageSorobanAuthorization,
51217 TypeVariant::MemoType,
51218 TypeVariant::Memo,
51219 TypeVariant::TimeBounds,
51220 TypeVariant::LedgerBounds,
51221 TypeVariant::PreconditionsV2,
51222 TypeVariant::PreconditionType,
51223 TypeVariant::Preconditions,
51224 TypeVariant::LedgerFootprint,
51225 TypeVariant::SorobanResources,
51226 TypeVariant::SorobanResourcesExtV0,
51227 TypeVariant::SorobanTransactionData,
51228 TypeVariant::SorobanTransactionDataExt,
51229 TypeVariant::TransactionV0,
51230 TypeVariant::TransactionV0Ext,
51231 TypeVariant::TransactionV0Envelope,
51232 TypeVariant::Transaction,
51233 TypeVariant::TransactionExt,
51234 TypeVariant::TransactionV1Envelope,
51235 TypeVariant::FeeBumpTransaction,
51236 TypeVariant::FeeBumpTransactionInnerTx,
51237 TypeVariant::FeeBumpTransactionExt,
51238 TypeVariant::FeeBumpTransactionEnvelope,
51239 TypeVariant::TransactionEnvelope,
51240 TypeVariant::TransactionSignaturePayload,
51241 TypeVariant::TransactionSignaturePayloadTaggedTransaction,
51242 TypeVariant::ClaimAtomType,
51243 TypeVariant::ClaimOfferAtomV0,
51244 TypeVariant::ClaimOfferAtom,
51245 TypeVariant::ClaimLiquidityAtom,
51246 TypeVariant::ClaimAtom,
51247 TypeVariant::CreateAccountResultCode,
51248 TypeVariant::CreateAccountResult,
51249 TypeVariant::PaymentResultCode,
51250 TypeVariant::PaymentResult,
51251 TypeVariant::PathPaymentStrictReceiveResultCode,
51252 TypeVariant::SimplePaymentResult,
51253 TypeVariant::PathPaymentStrictReceiveResult,
51254 TypeVariant::PathPaymentStrictReceiveResultSuccess,
51255 TypeVariant::PathPaymentStrictSendResultCode,
51256 TypeVariant::PathPaymentStrictSendResult,
51257 TypeVariant::PathPaymentStrictSendResultSuccess,
51258 TypeVariant::ManageSellOfferResultCode,
51259 TypeVariant::ManageOfferEffect,
51260 TypeVariant::ManageOfferSuccessResult,
51261 TypeVariant::ManageOfferSuccessResultOffer,
51262 TypeVariant::ManageSellOfferResult,
51263 TypeVariant::ManageBuyOfferResultCode,
51264 TypeVariant::ManageBuyOfferResult,
51265 TypeVariant::SetOptionsResultCode,
51266 TypeVariant::SetOptionsResult,
51267 TypeVariant::ChangeTrustResultCode,
51268 TypeVariant::ChangeTrustResult,
51269 TypeVariant::AllowTrustResultCode,
51270 TypeVariant::AllowTrustResult,
51271 TypeVariant::AccountMergeResultCode,
51272 TypeVariant::AccountMergeResult,
51273 TypeVariant::InflationResultCode,
51274 TypeVariant::InflationPayout,
51275 TypeVariant::InflationResult,
51276 TypeVariant::ManageDataResultCode,
51277 TypeVariant::ManageDataResult,
51278 TypeVariant::BumpSequenceResultCode,
51279 TypeVariant::BumpSequenceResult,
51280 TypeVariant::CreateClaimableBalanceResultCode,
51281 TypeVariant::CreateClaimableBalanceResult,
51282 TypeVariant::ClaimClaimableBalanceResultCode,
51283 TypeVariant::ClaimClaimableBalanceResult,
51284 TypeVariant::BeginSponsoringFutureReservesResultCode,
51285 TypeVariant::BeginSponsoringFutureReservesResult,
51286 TypeVariant::EndSponsoringFutureReservesResultCode,
51287 TypeVariant::EndSponsoringFutureReservesResult,
51288 TypeVariant::RevokeSponsorshipResultCode,
51289 TypeVariant::RevokeSponsorshipResult,
51290 TypeVariant::ClawbackResultCode,
51291 TypeVariant::ClawbackResult,
51292 TypeVariant::ClawbackClaimableBalanceResultCode,
51293 TypeVariant::ClawbackClaimableBalanceResult,
51294 TypeVariant::SetTrustLineFlagsResultCode,
51295 TypeVariant::SetTrustLineFlagsResult,
51296 TypeVariant::LiquidityPoolDepositResultCode,
51297 TypeVariant::LiquidityPoolDepositResult,
51298 TypeVariant::LiquidityPoolWithdrawResultCode,
51299 TypeVariant::LiquidityPoolWithdrawResult,
51300 TypeVariant::InvokeHostFunctionResultCode,
51301 TypeVariant::InvokeHostFunctionResult,
51302 TypeVariant::ExtendFootprintTtlResultCode,
51303 TypeVariant::ExtendFootprintTtlResult,
51304 TypeVariant::RestoreFootprintResultCode,
51305 TypeVariant::RestoreFootprintResult,
51306 TypeVariant::OperationResultCode,
51307 TypeVariant::OperationResult,
51308 TypeVariant::OperationResultTr,
51309 TypeVariant::TransactionResultCode,
51310 TypeVariant::InnerTransactionResult,
51311 TypeVariant::InnerTransactionResultResult,
51312 TypeVariant::InnerTransactionResultExt,
51313 TypeVariant::InnerTransactionResultPair,
51314 TypeVariant::TransactionResult,
51315 TypeVariant::TransactionResultResult,
51316 TypeVariant::TransactionResultExt,
51317 TypeVariant::Hash,
51318 TypeVariant::Uint256,
51319 TypeVariant::Uint32,
51320 TypeVariant::Int32,
51321 TypeVariant::Uint64,
51322 TypeVariant::Int64,
51323 TypeVariant::TimePoint,
51324 TypeVariant::Duration,
51325 TypeVariant::ExtensionPoint,
51326 TypeVariant::CryptoKeyType,
51327 TypeVariant::PublicKeyType,
51328 TypeVariant::SignerKeyType,
51329 TypeVariant::PublicKey,
51330 TypeVariant::SignerKey,
51331 TypeVariant::SignerKeyEd25519SignedPayload,
51332 TypeVariant::Signature,
51333 TypeVariant::SignatureHint,
51334 TypeVariant::NodeId,
51335 TypeVariant::AccountId,
51336 TypeVariant::ContractId,
51337 TypeVariant::Curve25519Secret,
51338 TypeVariant::Curve25519Public,
51339 TypeVariant::HmacSha256Key,
51340 TypeVariant::HmacSha256Mac,
51341 TypeVariant::ShortHashSeed,
51342 TypeVariant::BinaryFuseFilterType,
51343 TypeVariant::SerializedBinaryFuseFilter,
51344 TypeVariant::PoolId,
51345 TypeVariant::ClaimableBalanceIdType,
51346 TypeVariant::ClaimableBalanceId,
51347 ];
51348 pub const VARIANTS_STR: [&'static str; 463] = [
51349 "Value",
51350 "ScpBallot",
51351 "ScpStatementType",
51352 "ScpNomination",
51353 "ScpStatement",
51354 "ScpStatementPledges",
51355 "ScpStatementPrepare",
51356 "ScpStatementConfirm",
51357 "ScpStatementExternalize",
51358 "ScpEnvelope",
51359 "ScpQuorumSet",
51360 "ConfigSettingContractExecutionLanesV0",
51361 "ConfigSettingContractComputeV0",
51362 "ConfigSettingContractParallelComputeV0",
51363 "ConfigSettingContractLedgerCostV0",
51364 "ConfigSettingContractLedgerCostExtV0",
51365 "ConfigSettingContractHistoricalDataV0",
51366 "ConfigSettingContractEventsV0",
51367 "ConfigSettingContractBandwidthV0",
51368 "ContractCostType",
51369 "ContractCostParamEntry",
51370 "StateArchivalSettings",
51371 "EvictionIterator",
51372 "ConfigSettingScpTiming",
51373 "ContractCostParams",
51374 "ConfigSettingId",
51375 "ConfigSettingEntry",
51376 "ScEnvMetaKind",
51377 "ScEnvMetaEntry",
51378 "ScEnvMetaEntryInterfaceVersion",
51379 "ScMetaV0",
51380 "ScMetaKind",
51381 "ScMetaEntry",
51382 "ScSpecType",
51383 "ScSpecTypeOption",
51384 "ScSpecTypeResult",
51385 "ScSpecTypeVec",
51386 "ScSpecTypeMap",
51387 "ScSpecTypeTuple",
51388 "ScSpecTypeBytesN",
51389 "ScSpecTypeUdt",
51390 "ScSpecTypeDef",
51391 "ScSpecUdtStructFieldV0",
51392 "ScSpecUdtStructV0",
51393 "ScSpecUdtUnionCaseVoidV0",
51394 "ScSpecUdtUnionCaseTupleV0",
51395 "ScSpecUdtUnionCaseV0Kind",
51396 "ScSpecUdtUnionCaseV0",
51397 "ScSpecUdtUnionV0",
51398 "ScSpecUdtEnumCaseV0",
51399 "ScSpecUdtEnumV0",
51400 "ScSpecUdtErrorEnumCaseV0",
51401 "ScSpecUdtErrorEnumV0",
51402 "ScSpecFunctionInputV0",
51403 "ScSpecFunctionV0",
51404 "ScSpecEventParamLocationV0",
51405 "ScSpecEventParamV0",
51406 "ScSpecEventDataFormat",
51407 "ScSpecEventV0",
51408 "ScSpecEntryKind",
51409 "ScSpecEntry",
51410 "ScValType",
51411 "ScErrorType",
51412 "ScErrorCode",
51413 "ScError",
51414 "UInt128Parts",
51415 "Int128Parts",
51416 "UInt256Parts",
51417 "Int256Parts",
51418 "ContractExecutableType",
51419 "ContractExecutable",
51420 "ScAddressType",
51421 "MuxedEd25519Account",
51422 "ScAddress",
51423 "ScVec",
51424 "ScMap",
51425 "ScBytes",
51426 "ScString",
51427 "ScSymbol",
51428 "ScNonceKey",
51429 "ScContractInstance",
51430 "ScVal",
51431 "ScMapEntry",
51432 "LedgerCloseMetaBatch",
51433 "StoredTransactionSet",
51434 "StoredDebugTransactionSet",
51435 "PersistedScpStateV0",
51436 "PersistedScpStateV1",
51437 "PersistedScpState",
51438 "Thresholds",
51439 "String32",
51440 "String64",
51441 "SequenceNumber",
51442 "DataValue",
51443 "AssetCode4",
51444 "AssetCode12",
51445 "AssetType",
51446 "AssetCode",
51447 "AlphaNum4",
51448 "AlphaNum12",
51449 "Asset",
51450 "Price",
51451 "Liabilities",
51452 "ThresholdIndexes",
51453 "LedgerEntryType",
51454 "Signer",
51455 "AccountFlags",
51456 "SponsorshipDescriptor",
51457 "AccountEntryExtensionV3",
51458 "AccountEntryExtensionV2",
51459 "AccountEntryExtensionV2Ext",
51460 "AccountEntryExtensionV1",
51461 "AccountEntryExtensionV1Ext",
51462 "AccountEntry",
51463 "AccountEntryExt",
51464 "TrustLineFlags",
51465 "LiquidityPoolType",
51466 "TrustLineAsset",
51467 "TrustLineEntryExtensionV2",
51468 "TrustLineEntryExtensionV2Ext",
51469 "TrustLineEntry",
51470 "TrustLineEntryExt",
51471 "TrustLineEntryV1",
51472 "TrustLineEntryV1Ext",
51473 "OfferEntryFlags",
51474 "OfferEntry",
51475 "OfferEntryExt",
51476 "DataEntry",
51477 "DataEntryExt",
51478 "ClaimPredicateType",
51479 "ClaimPredicate",
51480 "ClaimantType",
51481 "Claimant",
51482 "ClaimantV0",
51483 "ClaimableBalanceFlags",
51484 "ClaimableBalanceEntryExtensionV1",
51485 "ClaimableBalanceEntryExtensionV1Ext",
51486 "ClaimableBalanceEntry",
51487 "ClaimableBalanceEntryExt",
51488 "LiquidityPoolConstantProductParameters",
51489 "LiquidityPoolEntry",
51490 "LiquidityPoolEntryBody",
51491 "LiquidityPoolEntryConstantProduct",
51492 "ContractDataDurability",
51493 "ContractDataEntry",
51494 "ContractCodeCostInputs",
51495 "ContractCodeEntry",
51496 "ContractCodeEntryExt",
51497 "ContractCodeEntryV1",
51498 "TtlEntry",
51499 "LedgerEntryExtensionV1",
51500 "LedgerEntryExtensionV1Ext",
51501 "LedgerEntry",
51502 "LedgerEntryData",
51503 "LedgerEntryExt",
51504 "LedgerKey",
51505 "LedgerKeyAccount",
51506 "LedgerKeyTrustLine",
51507 "LedgerKeyOffer",
51508 "LedgerKeyData",
51509 "LedgerKeyClaimableBalance",
51510 "LedgerKeyLiquidityPool",
51511 "LedgerKeyContractData",
51512 "LedgerKeyContractCode",
51513 "LedgerKeyConfigSetting",
51514 "LedgerKeyTtl",
51515 "EnvelopeType",
51516 "BucketListType",
51517 "BucketEntryType",
51518 "HotArchiveBucketEntryType",
51519 "BucketMetadata",
51520 "BucketMetadataExt",
51521 "BucketEntry",
51522 "HotArchiveBucketEntry",
51523 "UpgradeType",
51524 "StellarValueType",
51525 "LedgerCloseValueSignature",
51526 "StellarValue",
51527 "StellarValueExt",
51528 "LedgerHeaderFlags",
51529 "LedgerHeaderExtensionV1",
51530 "LedgerHeaderExtensionV1Ext",
51531 "LedgerHeader",
51532 "LedgerHeaderExt",
51533 "LedgerUpgradeType",
51534 "ConfigUpgradeSetKey",
51535 "LedgerUpgrade",
51536 "ConfigUpgradeSet",
51537 "TxSetComponentType",
51538 "DependentTxCluster",
51539 "ParallelTxExecutionStage",
51540 "ParallelTxsComponent",
51541 "TxSetComponent",
51542 "TxSetComponentTxsMaybeDiscountedFee",
51543 "TransactionPhase",
51544 "TransactionSet",
51545 "TransactionSetV1",
51546 "GeneralizedTransactionSet",
51547 "TransactionResultPair",
51548 "TransactionResultSet",
51549 "TransactionHistoryEntry",
51550 "TransactionHistoryEntryExt",
51551 "TransactionHistoryResultEntry",
51552 "TransactionHistoryResultEntryExt",
51553 "LedgerHeaderHistoryEntry",
51554 "LedgerHeaderHistoryEntryExt",
51555 "LedgerScpMessages",
51556 "ScpHistoryEntryV0",
51557 "ScpHistoryEntry",
51558 "LedgerEntryChangeType",
51559 "LedgerEntryChange",
51560 "LedgerEntryChanges",
51561 "OperationMeta",
51562 "TransactionMetaV1",
51563 "TransactionMetaV2",
51564 "ContractEventType",
51565 "ContractEvent",
51566 "ContractEventBody",
51567 "ContractEventV0",
51568 "DiagnosticEvent",
51569 "SorobanTransactionMetaExtV1",
51570 "SorobanTransactionMetaExt",
51571 "SorobanTransactionMeta",
51572 "TransactionMetaV3",
51573 "OperationMetaV2",
51574 "SorobanTransactionMetaV2",
51575 "TransactionEventStage",
51576 "TransactionEvent",
51577 "TransactionMetaV4",
51578 "InvokeHostFunctionSuccessPreImage",
51579 "TransactionMeta",
51580 "TransactionResultMeta",
51581 "TransactionResultMetaV1",
51582 "UpgradeEntryMeta",
51583 "LedgerCloseMetaV0",
51584 "LedgerCloseMetaExtV1",
51585 "LedgerCloseMetaExt",
51586 "LedgerCloseMetaV1",
51587 "LedgerCloseMetaV2",
51588 "LedgerCloseMeta",
51589 "ErrorCode",
51590 "SError",
51591 "SendMore",
51592 "SendMoreExtended",
51593 "AuthCert",
51594 "Hello",
51595 "Auth",
51596 "IpAddrType",
51597 "PeerAddress",
51598 "PeerAddressIp",
51599 "MessageType",
51600 "DontHave",
51601 "SurveyMessageCommandType",
51602 "SurveyMessageResponseType",
51603 "TimeSlicedSurveyStartCollectingMessage",
51604 "SignedTimeSlicedSurveyStartCollectingMessage",
51605 "TimeSlicedSurveyStopCollectingMessage",
51606 "SignedTimeSlicedSurveyStopCollectingMessage",
51607 "SurveyRequestMessage",
51608 "TimeSlicedSurveyRequestMessage",
51609 "SignedTimeSlicedSurveyRequestMessage",
51610 "EncryptedBody",
51611 "SurveyResponseMessage",
51612 "TimeSlicedSurveyResponseMessage",
51613 "SignedTimeSlicedSurveyResponseMessage",
51614 "PeerStats",
51615 "TimeSlicedNodeData",
51616 "TimeSlicedPeerData",
51617 "TimeSlicedPeerDataList",
51618 "TopologyResponseBodyV2",
51619 "SurveyResponseBody",
51620 "TxAdvertVector",
51621 "FloodAdvert",
51622 "TxDemandVector",
51623 "FloodDemand",
51624 "StellarMessage",
51625 "AuthenticatedMessage",
51626 "AuthenticatedMessageV0",
51627 "LiquidityPoolParameters",
51628 "MuxedAccount",
51629 "MuxedAccountMed25519",
51630 "DecoratedSignature",
51631 "OperationType",
51632 "CreateAccountOp",
51633 "PaymentOp",
51634 "PathPaymentStrictReceiveOp",
51635 "PathPaymentStrictSendOp",
51636 "ManageSellOfferOp",
51637 "ManageBuyOfferOp",
51638 "CreatePassiveSellOfferOp",
51639 "SetOptionsOp",
51640 "ChangeTrustAsset",
51641 "ChangeTrustOp",
51642 "AllowTrustOp",
51643 "ManageDataOp",
51644 "BumpSequenceOp",
51645 "CreateClaimableBalanceOp",
51646 "ClaimClaimableBalanceOp",
51647 "BeginSponsoringFutureReservesOp",
51648 "RevokeSponsorshipType",
51649 "RevokeSponsorshipOp",
51650 "RevokeSponsorshipOpSigner",
51651 "ClawbackOp",
51652 "ClawbackClaimableBalanceOp",
51653 "SetTrustLineFlagsOp",
51654 "LiquidityPoolDepositOp",
51655 "LiquidityPoolWithdrawOp",
51656 "HostFunctionType",
51657 "ContractIdPreimageType",
51658 "ContractIdPreimage",
51659 "ContractIdPreimageFromAddress",
51660 "CreateContractArgs",
51661 "CreateContractArgsV2",
51662 "InvokeContractArgs",
51663 "HostFunction",
51664 "SorobanAuthorizedFunctionType",
51665 "SorobanAuthorizedFunction",
51666 "SorobanAuthorizedInvocation",
51667 "SorobanAddressCredentials",
51668 "SorobanCredentialsType",
51669 "SorobanCredentials",
51670 "SorobanAuthorizationEntry",
51671 "SorobanAuthorizationEntries",
51672 "InvokeHostFunctionOp",
51673 "ExtendFootprintTtlOp",
51674 "RestoreFootprintOp",
51675 "Operation",
51676 "OperationBody",
51677 "HashIdPreimage",
51678 "HashIdPreimageOperationId",
51679 "HashIdPreimageRevokeId",
51680 "HashIdPreimageContractId",
51681 "HashIdPreimageSorobanAuthorization",
51682 "MemoType",
51683 "Memo",
51684 "TimeBounds",
51685 "LedgerBounds",
51686 "PreconditionsV2",
51687 "PreconditionType",
51688 "Preconditions",
51689 "LedgerFootprint",
51690 "SorobanResources",
51691 "SorobanResourcesExtV0",
51692 "SorobanTransactionData",
51693 "SorobanTransactionDataExt",
51694 "TransactionV0",
51695 "TransactionV0Ext",
51696 "TransactionV0Envelope",
51697 "Transaction",
51698 "TransactionExt",
51699 "TransactionV1Envelope",
51700 "FeeBumpTransaction",
51701 "FeeBumpTransactionInnerTx",
51702 "FeeBumpTransactionExt",
51703 "FeeBumpTransactionEnvelope",
51704 "TransactionEnvelope",
51705 "TransactionSignaturePayload",
51706 "TransactionSignaturePayloadTaggedTransaction",
51707 "ClaimAtomType",
51708 "ClaimOfferAtomV0",
51709 "ClaimOfferAtom",
51710 "ClaimLiquidityAtom",
51711 "ClaimAtom",
51712 "CreateAccountResultCode",
51713 "CreateAccountResult",
51714 "PaymentResultCode",
51715 "PaymentResult",
51716 "PathPaymentStrictReceiveResultCode",
51717 "SimplePaymentResult",
51718 "PathPaymentStrictReceiveResult",
51719 "PathPaymentStrictReceiveResultSuccess",
51720 "PathPaymentStrictSendResultCode",
51721 "PathPaymentStrictSendResult",
51722 "PathPaymentStrictSendResultSuccess",
51723 "ManageSellOfferResultCode",
51724 "ManageOfferEffect",
51725 "ManageOfferSuccessResult",
51726 "ManageOfferSuccessResultOffer",
51727 "ManageSellOfferResult",
51728 "ManageBuyOfferResultCode",
51729 "ManageBuyOfferResult",
51730 "SetOptionsResultCode",
51731 "SetOptionsResult",
51732 "ChangeTrustResultCode",
51733 "ChangeTrustResult",
51734 "AllowTrustResultCode",
51735 "AllowTrustResult",
51736 "AccountMergeResultCode",
51737 "AccountMergeResult",
51738 "InflationResultCode",
51739 "InflationPayout",
51740 "InflationResult",
51741 "ManageDataResultCode",
51742 "ManageDataResult",
51743 "BumpSequenceResultCode",
51744 "BumpSequenceResult",
51745 "CreateClaimableBalanceResultCode",
51746 "CreateClaimableBalanceResult",
51747 "ClaimClaimableBalanceResultCode",
51748 "ClaimClaimableBalanceResult",
51749 "BeginSponsoringFutureReservesResultCode",
51750 "BeginSponsoringFutureReservesResult",
51751 "EndSponsoringFutureReservesResultCode",
51752 "EndSponsoringFutureReservesResult",
51753 "RevokeSponsorshipResultCode",
51754 "RevokeSponsorshipResult",
51755 "ClawbackResultCode",
51756 "ClawbackResult",
51757 "ClawbackClaimableBalanceResultCode",
51758 "ClawbackClaimableBalanceResult",
51759 "SetTrustLineFlagsResultCode",
51760 "SetTrustLineFlagsResult",
51761 "LiquidityPoolDepositResultCode",
51762 "LiquidityPoolDepositResult",
51763 "LiquidityPoolWithdrawResultCode",
51764 "LiquidityPoolWithdrawResult",
51765 "InvokeHostFunctionResultCode",
51766 "InvokeHostFunctionResult",
51767 "ExtendFootprintTtlResultCode",
51768 "ExtendFootprintTtlResult",
51769 "RestoreFootprintResultCode",
51770 "RestoreFootprintResult",
51771 "OperationResultCode",
51772 "OperationResult",
51773 "OperationResultTr",
51774 "TransactionResultCode",
51775 "InnerTransactionResult",
51776 "InnerTransactionResultResult",
51777 "InnerTransactionResultExt",
51778 "InnerTransactionResultPair",
51779 "TransactionResult",
51780 "TransactionResultResult",
51781 "TransactionResultExt",
51782 "Hash",
51783 "Uint256",
51784 "Uint32",
51785 "Int32",
51786 "Uint64",
51787 "Int64",
51788 "TimePoint",
51789 "Duration",
51790 "ExtensionPoint",
51791 "CryptoKeyType",
51792 "PublicKeyType",
51793 "SignerKeyType",
51794 "PublicKey",
51795 "SignerKey",
51796 "SignerKeyEd25519SignedPayload",
51797 "Signature",
51798 "SignatureHint",
51799 "NodeId",
51800 "AccountId",
51801 "ContractId",
51802 "Curve25519Secret",
51803 "Curve25519Public",
51804 "HmacSha256Key",
51805 "HmacSha256Mac",
51806 "ShortHashSeed",
51807 "BinaryFuseFilterType",
51808 "SerializedBinaryFuseFilter",
51809 "PoolId",
51810 "ClaimableBalanceIdType",
51811 "ClaimableBalanceId",
51812 ];
51813
51814 #[must_use]
51815 #[allow(clippy::too_many_lines)]
51816 pub const fn name(&self) -> &'static str {
51817 match self {
51818 Self::Value => "Value",
51819 Self::ScpBallot => "ScpBallot",
51820 Self::ScpStatementType => "ScpStatementType",
51821 Self::ScpNomination => "ScpNomination",
51822 Self::ScpStatement => "ScpStatement",
51823 Self::ScpStatementPledges => "ScpStatementPledges",
51824 Self::ScpStatementPrepare => "ScpStatementPrepare",
51825 Self::ScpStatementConfirm => "ScpStatementConfirm",
51826 Self::ScpStatementExternalize => "ScpStatementExternalize",
51827 Self::ScpEnvelope => "ScpEnvelope",
51828 Self::ScpQuorumSet => "ScpQuorumSet",
51829 Self::ConfigSettingContractExecutionLanesV0 => "ConfigSettingContractExecutionLanesV0",
51830 Self::ConfigSettingContractComputeV0 => "ConfigSettingContractComputeV0",
51831 Self::ConfigSettingContractParallelComputeV0 => {
51832 "ConfigSettingContractParallelComputeV0"
51833 }
51834 Self::ConfigSettingContractLedgerCostV0 => "ConfigSettingContractLedgerCostV0",
51835 Self::ConfigSettingContractLedgerCostExtV0 => "ConfigSettingContractLedgerCostExtV0",
51836 Self::ConfigSettingContractHistoricalDataV0 => "ConfigSettingContractHistoricalDataV0",
51837 Self::ConfigSettingContractEventsV0 => "ConfigSettingContractEventsV0",
51838 Self::ConfigSettingContractBandwidthV0 => "ConfigSettingContractBandwidthV0",
51839 Self::ContractCostType => "ContractCostType",
51840 Self::ContractCostParamEntry => "ContractCostParamEntry",
51841 Self::StateArchivalSettings => "StateArchivalSettings",
51842 Self::EvictionIterator => "EvictionIterator",
51843 Self::ConfigSettingScpTiming => "ConfigSettingScpTiming",
51844 Self::ContractCostParams => "ContractCostParams",
51845 Self::ConfigSettingId => "ConfigSettingId",
51846 Self::ConfigSettingEntry => "ConfigSettingEntry",
51847 Self::ScEnvMetaKind => "ScEnvMetaKind",
51848 Self::ScEnvMetaEntry => "ScEnvMetaEntry",
51849 Self::ScEnvMetaEntryInterfaceVersion => "ScEnvMetaEntryInterfaceVersion",
51850 Self::ScMetaV0 => "ScMetaV0",
51851 Self::ScMetaKind => "ScMetaKind",
51852 Self::ScMetaEntry => "ScMetaEntry",
51853 Self::ScSpecType => "ScSpecType",
51854 Self::ScSpecTypeOption => "ScSpecTypeOption",
51855 Self::ScSpecTypeResult => "ScSpecTypeResult",
51856 Self::ScSpecTypeVec => "ScSpecTypeVec",
51857 Self::ScSpecTypeMap => "ScSpecTypeMap",
51858 Self::ScSpecTypeTuple => "ScSpecTypeTuple",
51859 Self::ScSpecTypeBytesN => "ScSpecTypeBytesN",
51860 Self::ScSpecTypeUdt => "ScSpecTypeUdt",
51861 Self::ScSpecTypeDef => "ScSpecTypeDef",
51862 Self::ScSpecUdtStructFieldV0 => "ScSpecUdtStructFieldV0",
51863 Self::ScSpecUdtStructV0 => "ScSpecUdtStructV0",
51864 Self::ScSpecUdtUnionCaseVoidV0 => "ScSpecUdtUnionCaseVoidV0",
51865 Self::ScSpecUdtUnionCaseTupleV0 => "ScSpecUdtUnionCaseTupleV0",
51866 Self::ScSpecUdtUnionCaseV0Kind => "ScSpecUdtUnionCaseV0Kind",
51867 Self::ScSpecUdtUnionCaseV0 => "ScSpecUdtUnionCaseV0",
51868 Self::ScSpecUdtUnionV0 => "ScSpecUdtUnionV0",
51869 Self::ScSpecUdtEnumCaseV0 => "ScSpecUdtEnumCaseV0",
51870 Self::ScSpecUdtEnumV0 => "ScSpecUdtEnumV0",
51871 Self::ScSpecUdtErrorEnumCaseV0 => "ScSpecUdtErrorEnumCaseV0",
51872 Self::ScSpecUdtErrorEnumV0 => "ScSpecUdtErrorEnumV0",
51873 Self::ScSpecFunctionInputV0 => "ScSpecFunctionInputV0",
51874 Self::ScSpecFunctionV0 => "ScSpecFunctionV0",
51875 Self::ScSpecEventParamLocationV0 => "ScSpecEventParamLocationV0",
51876 Self::ScSpecEventParamV0 => "ScSpecEventParamV0",
51877 Self::ScSpecEventDataFormat => "ScSpecEventDataFormat",
51878 Self::ScSpecEventV0 => "ScSpecEventV0",
51879 Self::ScSpecEntryKind => "ScSpecEntryKind",
51880 Self::ScSpecEntry => "ScSpecEntry",
51881 Self::ScValType => "ScValType",
51882 Self::ScErrorType => "ScErrorType",
51883 Self::ScErrorCode => "ScErrorCode",
51884 Self::ScError => "ScError",
51885 Self::UInt128Parts => "UInt128Parts",
51886 Self::Int128Parts => "Int128Parts",
51887 Self::UInt256Parts => "UInt256Parts",
51888 Self::Int256Parts => "Int256Parts",
51889 Self::ContractExecutableType => "ContractExecutableType",
51890 Self::ContractExecutable => "ContractExecutable",
51891 Self::ScAddressType => "ScAddressType",
51892 Self::MuxedEd25519Account => "MuxedEd25519Account",
51893 Self::ScAddress => "ScAddress",
51894 Self::ScVec => "ScVec",
51895 Self::ScMap => "ScMap",
51896 Self::ScBytes => "ScBytes",
51897 Self::ScString => "ScString",
51898 Self::ScSymbol => "ScSymbol",
51899 Self::ScNonceKey => "ScNonceKey",
51900 Self::ScContractInstance => "ScContractInstance",
51901 Self::ScVal => "ScVal",
51902 Self::ScMapEntry => "ScMapEntry",
51903 Self::LedgerCloseMetaBatch => "LedgerCloseMetaBatch",
51904 Self::StoredTransactionSet => "StoredTransactionSet",
51905 Self::StoredDebugTransactionSet => "StoredDebugTransactionSet",
51906 Self::PersistedScpStateV0 => "PersistedScpStateV0",
51907 Self::PersistedScpStateV1 => "PersistedScpStateV1",
51908 Self::PersistedScpState => "PersistedScpState",
51909 Self::Thresholds => "Thresholds",
51910 Self::String32 => "String32",
51911 Self::String64 => "String64",
51912 Self::SequenceNumber => "SequenceNumber",
51913 Self::DataValue => "DataValue",
51914 Self::AssetCode4 => "AssetCode4",
51915 Self::AssetCode12 => "AssetCode12",
51916 Self::AssetType => "AssetType",
51917 Self::AssetCode => "AssetCode",
51918 Self::AlphaNum4 => "AlphaNum4",
51919 Self::AlphaNum12 => "AlphaNum12",
51920 Self::Asset => "Asset",
51921 Self::Price => "Price",
51922 Self::Liabilities => "Liabilities",
51923 Self::ThresholdIndexes => "ThresholdIndexes",
51924 Self::LedgerEntryType => "LedgerEntryType",
51925 Self::Signer => "Signer",
51926 Self::AccountFlags => "AccountFlags",
51927 Self::SponsorshipDescriptor => "SponsorshipDescriptor",
51928 Self::AccountEntryExtensionV3 => "AccountEntryExtensionV3",
51929 Self::AccountEntryExtensionV2 => "AccountEntryExtensionV2",
51930 Self::AccountEntryExtensionV2Ext => "AccountEntryExtensionV2Ext",
51931 Self::AccountEntryExtensionV1 => "AccountEntryExtensionV1",
51932 Self::AccountEntryExtensionV1Ext => "AccountEntryExtensionV1Ext",
51933 Self::AccountEntry => "AccountEntry",
51934 Self::AccountEntryExt => "AccountEntryExt",
51935 Self::TrustLineFlags => "TrustLineFlags",
51936 Self::LiquidityPoolType => "LiquidityPoolType",
51937 Self::TrustLineAsset => "TrustLineAsset",
51938 Self::TrustLineEntryExtensionV2 => "TrustLineEntryExtensionV2",
51939 Self::TrustLineEntryExtensionV2Ext => "TrustLineEntryExtensionV2Ext",
51940 Self::TrustLineEntry => "TrustLineEntry",
51941 Self::TrustLineEntryExt => "TrustLineEntryExt",
51942 Self::TrustLineEntryV1 => "TrustLineEntryV1",
51943 Self::TrustLineEntryV1Ext => "TrustLineEntryV1Ext",
51944 Self::OfferEntryFlags => "OfferEntryFlags",
51945 Self::OfferEntry => "OfferEntry",
51946 Self::OfferEntryExt => "OfferEntryExt",
51947 Self::DataEntry => "DataEntry",
51948 Self::DataEntryExt => "DataEntryExt",
51949 Self::ClaimPredicateType => "ClaimPredicateType",
51950 Self::ClaimPredicate => "ClaimPredicate",
51951 Self::ClaimantType => "ClaimantType",
51952 Self::Claimant => "Claimant",
51953 Self::ClaimantV0 => "ClaimantV0",
51954 Self::ClaimableBalanceFlags => "ClaimableBalanceFlags",
51955 Self::ClaimableBalanceEntryExtensionV1 => "ClaimableBalanceEntryExtensionV1",
51956 Self::ClaimableBalanceEntryExtensionV1Ext => "ClaimableBalanceEntryExtensionV1Ext",
51957 Self::ClaimableBalanceEntry => "ClaimableBalanceEntry",
51958 Self::ClaimableBalanceEntryExt => "ClaimableBalanceEntryExt",
51959 Self::LiquidityPoolConstantProductParameters => {
51960 "LiquidityPoolConstantProductParameters"
51961 }
51962 Self::LiquidityPoolEntry => "LiquidityPoolEntry",
51963 Self::LiquidityPoolEntryBody => "LiquidityPoolEntryBody",
51964 Self::LiquidityPoolEntryConstantProduct => "LiquidityPoolEntryConstantProduct",
51965 Self::ContractDataDurability => "ContractDataDurability",
51966 Self::ContractDataEntry => "ContractDataEntry",
51967 Self::ContractCodeCostInputs => "ContractCodeCostInputs",
51968 Self::ContractCodeEntry => "ContractCodeEntry",
51969 Self::ContractCodeEntryExt => "ContractCodeEntryExt",
51970 Self::ContractCodeEntryV1 => "ContractCodeEntryV1",
51971 Self::TtlEntry => "TtlEntry",
51972 Self::LedgerEntryExtensionV1 => "LedgerEntryExtensionV1",
51973 Self::LedgerEntryExtensionV1Ext => "LedgerEntryExtensionV1Ext",
51974 Self::LedgerEntry => "LedgerEntry",
51975 Self::LedgerEntryData => "LedgerEntryData",
51976 Self::LedgerEntryExt => "LedgerEntryExt",
51977 Self::LedgerKey => "LedgerKey",
51978 Self::LedgerKeyAccount => "LedgerKeyAccount",
51979 Self::LedgerKeyTrustLine => "LedgerKeyTrustLine",
51980 Self::LedgerKeyOffer => "LedgerKeyOffer",
51981 Self::LedgerKeyData => "LedgerKeyData",
51982 Self::LedgerKeyClaimableBalance => "LedgerKeyClaimableBalance",
51983 Self::LedgerKeyLiquidityPool => "LedgerKeyLiquidityPool",
51984 Self::LedgerKeyContractData => "LedgerKeyContractData",
51985 Self::LedgerKeyContractCode => "LedgerKeyContractCode",
51986 Self::LedgerKeyConfigSetting => "LedgerKeyConfigSetting",
51987 Self::LedgerKeyTtl => "LedgerKeyTtl",
51988 Self::EnvelopeType => "EnvelopeType",
51989 Self::BucketListType => "BucketListType",
51990 Self::BucketEntryType => "BucketEntryType",
51991 Self::HotArchiveBucketEntryType => "HotArchiveBucketEntryType",
51992 Self::BucketMetadata => "BucketMetadata",
51993 Self::BucketMetadataExt => "BucketMetadataExt",
51994 Self::BucketEntry => "BucketEntry",
51995 Self::HotArchiveBucketEntry => "HotArchiveBucketEntry",
51996 Self::UpgradeType => "UpgradeType",
51997 Self::StellarValueType => "StellarValueType",
51998 Self::LedgerCloseValueSignature => "LedgerCloseValueSignature",
51999 Self::StellarValue => "StellarValue",
52000 Self::StellarValueExt => "StellarValueExt",
52001 Self::LedgerHeaderFlags => "LedgerHeaderFlags",
52002 Self::LedgerHeaderExtensionV1 => "LedgerHeaderExtensionV1",
52003 Self::LedgerHeaderExtensionV1Ext => "LedgerHeaderExtensionV1Ext",
52004 Self::LedgerHeader => "LedgerHeader",
52005 Self::LedgerHeaderExt => "LedgerHeaderExt",
52006 Self::LedgerUpgradeType => "LedgerUpgradeType",
52007 Self::ConfigUpgradeSetKey => "ConfigUpgradeSetKey",
52008 Self::LedgerUpgrade => "LedgerUpgrade",
52009 Self::ConfigUpgradeSet => "ConfigUpgradeSet",
52010 Self::TxSetComponentType => "TxSetComponentType",
52011 Self::DependentTxCluster => "DependentTxCluster",
52012 Self::ParallelTxExecutionStage => "ParallelTxExecutionStage",
52013 Self::ParallelTxsComponent => "ParallelTxsComponent",
52014 Self::TxSetComponent => "TxSetComponent",
52015 Self::TxSetComponentTxsMaybeDiscountedFee => "TxSetComponentTxsMaybeDiscountedFee",
52016 Self::TransactionPhase => "TransactionPhase",
52017 Self::TransactionSet => "TransactionSet",
52018 Self::TransactionSetV1 => "TransactionSetV1",
52019 Self::GeneralizedTransactionSet => "GeneralizedTransactionSet",
52020 Self::TransactionResultPair => "TransactionResultPair",
52021 Self::TransactionResultSet => "TransactionResultSet",
52022 Self::TransactionHistoryEntry => "TransactionHistoryEntry",
52023 Self::TransactionHistoryEntryExt => "TransactionHistoryEntryExt",
52024 Self::TransactionHistoryResultEntry => "TransactionHistoryResultEntry",
52025 Self::TransactionHistoryResultEntryExt => "TransactionHistoryResultEntryExt",
52026 Self::LedgerHeaderHistoryEntry => "LedgerHeaderHistoryEntry",
52027 Self::LedgerHeaderHistoryEntryExt => "LedgerHeaderHistoryEntryExt",
52028 Self::LedgerScpMessages => "LedgerScpMessages",
52029 Self::ScpHistoryEntryV0 => "ScpHistoryEntryV0",
52030 Self::ScpHistoryEntry => "ScpHistoryEntry",
52031 Self::LedgerEntryChangeType => "LedgerEntryChangeType",
52032 Self::LedgerEntryChange => "LedgerEntryChange",
52033 Self::LedgerEntryChanges => "LedgerEntryChanges",
52034 Self::OperationMeta => "OperationMeta",
52035 Self::TransactionMetaV1 => "TransactionMetaV1",
52036 Self::TransactionMetaV2 => "TransactionMetaV2",
52037 Self::ContractEventType => "ContractEventType",
52038 Self::ContractEvent => "ContractEvent",
52039 Self::ContractEventBody => "ContractEventBody",
52040 Self::ContractEventV0 => "ContractEventV0",
52041 Self::DiagnosticEvent => "DiagnosticEvent",
52042 Self::SorobanTransactionMetaExtV1 => "SorobanTransactionMetaExtV1",
52043 Self::SorobanTransactionMetaExt => "SorobanTransactionMetaExt",
52044 Self::SorobanTransactionMeta => "SorobanTransactionMeta",
52045 Self::TransactionMetaV3 => "TransactionMetaV3",
52046 Self::OperationMetaV2 => "OperationMetaV2",
52047 Self::SorobanTransactionMetaV2 => "SorobanTransactionMetaV2",
52048 Self::TransactionEventStage => "TransactionEventStage",
52049 Self::TransactionEvent => "TransactionEvent",
52050 Self::TransactionMetaV4 => "TransactionMetaV4",
52051 Self::InvokeHostFunctionSuccessPreImage => "InvokeHostFunctionSuccessPreImage",
52052 Self::TransactionMeta => "TransactionMeta",
52053 Self::TransactionResultMeta => "TransactionResultMeta",
52054 Self::TransactionResultMetaV1 => "TransactionResultMetaV1",
52055 Self::UpgradeEntryMeta => "UpgradeEntryMeta",
52056 Self::LedgerCloseMetaV0 => "LedgerCloseMetaV0",
52057 Self::LedgerCloseMetaExtV1 => "LedgerCloseMetaExtV1",
52058 Self::LedgerCloseMetaExt => "LedgerCloseMetaExt",
52059 Self::LedgerCloseMetaV1 => "LedgerCloseMetaV1",
52060 Self::LedgerCloseMetaV2 => "LedgerCloseMetaV2",
52061 Self::LedgerCloseMeta => "LedgerCloseMeta",
52062 Self::ErrorCode => "ErrorCode",
52063 Self::SError => "SError",
52064 Self::SendMore => "SendMore",
52065 Self::SendMoreExtended => "SendMoreExtended",
52066 Self::AuthCert => "AuthCert",
52067 Self::Hello => "Hello",
52068 Self::Auth => "Auth",
52069 Self::IpAddrType => "IpAddrType",
52070 Self::PeerAddress => "PeerAddress",
52071 Self::PeerAddressIp => "PeerAddressIp",
52072 Self::MessageType => "MessageType",
52073 Self::DontHave => "DontHave",
52074 Self::SurveyMessageCommandType => "SurveyMessageCommandType",
52075 Self::SurveyMessageResponseType => "SurveyMessageResponseType",
52076 Self::TimeSlicedSurveyStartCollectingMessage => {
52077 "TimeSlicedSurveyStartCollectingMessage"
52078 }
52079 Self::SignedTimeSlicedSurveyStartCollectingMessage => {
52080 "SignedTimeSlicedSurveyStartCollectingMessage"
52081 }
52082 Self::TimeSlicedSurveyStopCollectingMessage => "TimeSlicedSurveyStopCollectingMessage",
52083 Self::SignedTimeSlicedSurveyStopCollectingMessage => {
52084 "SignedTimeSlicedSurveyStopCollectingMessage"
52085 }
52086 Self::SurveyRequestMessage => "SurveyRequestMessage",
52087 Self::TimeSlicedSurveyRequestMessage => "TimeSlicedSurveyRequestMessage",
52088 Self::SignedTimeSlicedSurveyRequestMessage => "SignedTimeSlicedSurveyRequestMessage",
52089 Self::EncryptedBody => "EncryptedBody",
52090 Self::SurveyResponseMessage => "SurveyResponseMessage",
52091 Self::TimeSlicedSurveyResponseMessage => "TimeSlicedSurveyResponseMessage",
52092 Self::SignedTimeSlicedSurveyResponseMessage => "SignedTimeSlicedSurveyResponseMessage",
52093 Self::PeerStats => "PeerStats",
52094 Self::TimeSlicedNodeData => "TimeSlicedNodeData",
52095 Self::TimeSlicedPeerData => "TimeSlicedPeerData",
52096 Self::TimeSlicedPeerDataList => "TimeSlicedPeerDataList",
52097 Self::TopologyResponseBodyV2 => "TopologyResponseBodyV2",
52098 Self::SurveyResponseBody => "SurveyResponseBody",
52099 Self::TxAdvertVector => "TxAdvertVector",
52100 Self::FloodAdvert => "FloodAdvert",
52101 Self::TxDemandVector => "TxDemandVector",
52102 Self::FloodDemand => "FloodDemand",
52103 Self::StellarMessage => "StellarMessage",
52104 Self::AuthenticatedMessage => "AuthenticatedMessage",
52105 Self::AuthenticatedMessageV0 => "AuthenticatedMessageV0",
52106 Self::LiquidityPoolParameters => "LiquidityPoolParameters",
52107 Self::MuxedAccount => "MuxedAccount",
52108 Self::MuxedAccountMed25519 => "MuxedAccountMed25519",
52109 Self::DecoratedSignature => "DecoratedSignature",
52110 Self::OperationType => "OperationType",
52111 Self::CreateAccountOp => "CreateAccountOp",
52112 Self::PaymentOp => "PaymentOp",
52113 Self::PathPaymentStrictReceiveOp => "PathPaymentStrictReceiveOp",
52114 Self::PathPaymentStrictSendOp => "PathPaymentStrictSendOp",
52115 Self::ManageSellOfferOp => "ManageSellOfferOp",
52116 Self::ManageBuyOfferOp => "ManageBuyOfferOp",
52117 Self::CreatePassiveSellOfferOp => "CreatePassiveSellOfferOp",
52118 Self::SetOptionsOp => "SetOptionsOp",
52119 Self::ChangeTrustAsset => "ChangeTrustAsset",
52120 Self::ChangeTrustOp => "ChangeTrustOp",
52121 Self::AllowTrustOp => "AllowTrustOp",
52122 Self::ManageDataOp => "ManageDataOp",
52123 Self::BumpSequenceOp => "BumpSequenceOp",
52124 Self::CreateClaimableBalanceOp => "CreateClaimableBalanceOp",
52125 Self::ClaimClaimableBalanceOp => "ClaimClaimableBalanceOp",
52126 Self::BeginSponsoringFutureReservesOp => "BeginSponsoringFutureReservesOp",
52127 Self::RevokeSponsorshipType => "RevokeSponsorshipType",
52128 Self::RevokeSponsorshipOp => "RevokeSponsorshipOp",
52129 Self::RevokeSponsorshipOpSigner => "RevokeSponsorshipOpSigner",
52130 Self::ClawbackOp => "ClawbackOp",
52131 Self::ClawbackClaimableBalanceOp => "ClawbackClaimableBalanceOp",
52132 Self::SetTrustLineFlagsOp => "SetTrustLineFlagsOp",
52133 Self::LiquidityPoolDepositOp => "LiquidityPoolDepositOp",
52134 Self::LiquidityPoolWithdrawOp => "LiquidityPoolWithdrawOp",
52135 Self::HostFunctionType => "HostFunctionType",
52136 Self::ContractIdPreimageType => "ContractIdPreimageType",
52137 Self::ContractIdPreimage => "ContractIdPreimage",
52138 Self::ContractIdPreimageFromAddress => "ContractIdPreimageFromAddress",
52139 Self::CreateContractArgs => "CreateContractArgs",
52140 Self::CreateContractArgsV2 => "CreateContractArgsV2",
52141 Self::InvokeContractArgs => "InvokeContractArgs",
52142 Self::HostFunction => "HostFunction",
52143 Self::SorobanAuthorizedFunctionType => "SorobanAuthorizedFunctionType",
52144 Self::SorobanAuthorizedFunction => "SorobanAuthorizedFunction",
52145 Self::SorobanAuthorizedInvocation => "SorobanAuthorizedInvocation",
52146 Self::SorobanAddressCredentials => "SorobanAddressCredentials",
52147 Self::SorobanCredentialsType => "SorobanCredentialsType",
52148 Self::SorobanCredentials => "SorobanCredentials",
52149 Self::SorobanAuthorizationEntry => "SorobanAuthorizationEntry",
52150 Self::SorobanAuthorizationEntries => "SorobanAuthorizationEntries",
52151 Self::InvokeHostFunctionOp => "InvokeHostFunctionOp",
52152 Self::ExtendFootprintTtlOp => "ExtendFootprintTtlOp",
52153 Self::RestoreFootprintOp => "RestoreFootprintOp",
52154 Self::Operation => "Operation",
52155 Self::OperationBody => "OperationBody",
52156 Self::HashIdPreimage => "HashIdPreimage",
52157 Self::HashIdPreimageOperationId => "HashIdPreimageOperationId",
52158 Self::HashIdPreimageRevokeId => "HashIdPreimageRevokeId",
52159 Self::HashIdPreimageContractId => "HashIdPreimageContractId",
52160 Self::HashIdPreimageSorobanAuthorization => "HashIdPreimageSorobanAuthorization",
52161 Self::MemoType => "MemoType",
52162 Self::Memo => "Memo",
52163 Self::TimeBounds => "TimeBounds",
52164 Self::LedgerBounds => "LedgerBounds",
52165 Self::PreconditionsV2 => "PreconditionsV2",
52166 Self::PreconditionType => "PreconditionType",
52167 Self::Preconditions => "Preconditions",
52168 Self::LedgerFootprint => "LedgerFootprint",
52169 Self::SorobanResources => "SorobanResources",
52170 Self::SorobanResourcesExtV0 => "SorobanResourcesExtV0",
52171 Self::SorobanTransactionData => "SorobanTransactionData",
52172 Self::SorobanTransactionDataExt => "SorobanTransactionDataExt",
52173 Self::TransactionV0 => "TransactionV0",
52174 Self::TransactionV0Ext => "TransactionV0Ext",
52175 Self::TransactionV0Envelope => "TransactionV0Envelope",
52176 Self::Transaction => "Transaction",
52177 Self::TransactionExt => "TransactionExt",
52178 Self::TransactionV1Envelope => "TransactionV1Envelope",
52179 Self::FeeBumpTransaction => "FeeBumpTransaction",
52180 Self::FeeBumpTransactionInnerTx => "FeeBumpTransactionInnerTx",
52181 Self::FeeBumpTransactionExt => "FeeBumpTransactionExt",
52182 Self::FeeBumpTransactionEnvelope => "FeeBumpTransactionEnvelope",
52183 Self::TransactionEnvelope => "TransactionEnvelope",
52184 Self::TransactionSignaturePayload => "TransactionSignaturePayload",
52185 Self::TransactionSignaturePayloadTaggedTransaction => {
52186 "TransactionSignaturePayloadTaggedTransaction"
52187 }
52188 Self::ClaimAtomType => "ClaimAtomType",
52189 Self::ClaimOfferAtomV0 => "ClaimOfferAtomV0",
52190 Self::ClaimOfferAtom => "ClaimOfferAtom",
52191 Self::ClaimLiquidityAtom => "ClaimLiquidityAtom",
52192 Self::ClaimAtom => "ClaimAtom",
52193 Self::CreateAccountResultCode => "CreateAccountResultCode",
52194 Self::CreateAccountResult => "CreateAccountResult",
52195 Self::PaymentResultCode => "PaymentResultCode",
52196 Self::PaymentResult => "PaymentResult",
52197 Self::PathPaymentStrictReceiveResultCode => "PathPaymentStrictReceiveResultCode",
52198 Self::SimplePaymentResult => "SimplePaymentResult",
52199 Self::PathPaymentStrictReceiveResult => "PathPaymentStrictReceiveResult",
52200 Self::PathPaymentStrictReceiveResultSuccess => "PathPaymentStrictReceiveResultSuccess",
52201 Self::PathPaymentStrictSendResultCode => "PathPaymentStrictSendResultCode",
52202 Self::PathPaymentStrictSendResult => "PathPaymentStrictSendResult",
52203 Self::PathPaymentStrictSendResultSuccess => "PathPaymentStrictSendResultSuccess",
52204 Self::ManageSellOfferResultCode => "ManageSellOfferResultCode",
52205 Self::ManageOfferEffect => "ManageOfferEffect",
52206 Self::ManageOfferSuccessResult => "ManageOfferSuccessResult",
52207 Self::ManageOfferSuccessResultOffer => "ManageOfferSuccessResultOffer",
52208 Self::ManageSellOfferResult => "ManageSellOfferResult",
52209 Self::ManageBuyOfferResultCode => "ManageBuyOfferResultCode",
52210 Self::ManageBuyOfferResult => "ManageBuyOfferResult",
52211 Self::SetOptionsResultCode => "SetOptionsResultCode",
52212 Self::SetOptionsResult => "SetOptionsResult",
52213 Self::ChangeTrustResultCode => "ChangeTrustResultCode",
52214 Self::ChangeTrustResult => "ChangeTrustResult",
52215 Self::AllowTrustResultCode => "AllowTrustResultCode",
52216 Self::AllowTrustResult => "AllowTrustResult",
52217 Self::AccountMergeResultCode => "AccountMergeResultCode",
52218 Self::AccountMergeResult => "AccountMergeResult",
52219 Self::InflationResultCode => "InflationResultCode",
52220 Self::InflationPayout => "InflationPayout",
52221 Self::InflationResult => "InflationResult",
52222 Self::ManageDataResultCode => "ManageDataResultCode",
52223 Self::ManageDataResult => "ManageDataResult",
52224 Self::BumpSequenceResultCode => "BumpSequenceResultCode",
52225 Self::BumpSequenceResult => "BumpSequenceResult",
52226 Self::CreateClaimableBalanceResultCode => "CreateClaimableBalanceResultCode",
52227 Self::CreateClaimableBalanceResult => "CreateClaimableBalanceResult",
52228 Self::ClaimClaimableBalanceResultCode => "ClaimClaimableBalanceResultCode",
52229 Self::ClaimClaimableBalanceResult => "ClaimClaimableBalanceResult",
52230 Self::BeginSponsoringFutureReservesResultCode => {
52231 "BeginSponsoringFutureReservesResultCode"
52232 }
52233 Self::BeginSponsoringFutureReservesResult => "BeginSponsoringFutureReservesResult",
52234 Self::EndSponsoringFutureReservesResultCode => "EndSponsoringFutureReservesResultCode",
52235 Self::EndSponsoringFutureReservesResult => "EndSponsoringFutureReservesResult",
52236 Self::RevokeSponsorshipResultCode => "RevokeSponsorshipResultCode",
52237 Self::RevokeSponsorshipResult => "RevokeSponsorshipResult",
52238 Self::ClawbackResultCode => "ClawbackResultCode",
52239 Self::ClawbackResult => "ClawbackResult",
52240 Self::ClawbackClaimableBalanceResultCode => "ClawbackClaimableBalanceResultCode",
52241 Self::ClawbackClaimableBalanceResult => "ClawbackClaimableBalanceResult",
52242 Self::SetTrustLineFlagsResultCode => "SetTrustLineFlagsResultCode",
52243 Self::SetTrustLineFlagsResult => "SetTrustLineFlagsResult",
52244 Self::LiquidityPoolDepositResultCode => "LiquidityPoolDepositResultCode",
52245 Self::LiquidityPoolDepositResult => "LiquidityPoolDepositResult",
52246 Self::LiquidityPoolWithdrawResultCode => "LiquidityPoolWithdrawResultCode",
52247 Self::LiquidityPoolWithdrawResult => "LiquidityPoolWithdrawResult",
52248 Self::InvokeHostFunctionResultCode => "InvokeHostFunctionResultCode",
52249 Self::InvokeHostFunctionResult => "InvokeHostFunctionResult",
52250 Self::ExtendFootprintTtlResultCode => "ExtendFootprintTtlResultCode",
52251 Self::ExtendFootprintTtlResult => "ExtendFootprintTtlResult",
52252 Self::RestoreFootprintResultCode => "RestoreFootprintResultCode",
52253 Self::RestoreFootprintResult => "RestoreFootprintResult",
52254 Self::OperationResultCode => "OperationResultCode",
52255 Self::OperationResult => "OperationResult",
52256 Self::OperationResultTr => "OperationResultTr",
52257 Self::TransactionResultCode => "TransactionResultCode",
52258 Self::InnerTransactionResult => "InnerTransactionResult",
52259 Self::InnerTransactionResultResult => "InnerTransactionResultResult",
52260 Self::InnerTransactionResultExt => "InnerTransactionResultExt",
52261 Self::InnerTransactionResultPair => "InnerTransactionResultPair",
52262 Self::TransactionResult => "TransactionResult",
52263 Self::TransactionResultResult => "TransactionResultResult",
52264 Self::TransactionResultExt => "TransactionResultExt",
52265 Self::Hash => "Hash",
52266 Self::Uint256 => "Uint256",
52267 Self::Uint32 => "Uint32",
52268 Self::Int32 => "Int32",
52269 Self::Uint64 => "Uint64",
52270 Self::Int64 => "Int64",
52271 Self::TimePoint => "TimePoint",
52272 Self::Duration => "Duration",
52273 Self::ExtensionPoint => "ExtensionPoint",
52274 Self::CryptoKeyType => "CryptoKeyType",
52275 Self::PublicKeyType => "PublicKeyType",
52276 Self::SignerKeyType => "SignerKeyType",
52277 Self::PublicKey => "PublicKey",
52278 Self::SignerKey => "SignerKey",
52279 Self::SignerKeyEd25519SignedPayload => "SignerKeyEd25519SignedPayload",
52280 Self::Signature => "Signature",
52281 Self::SignatureHint => "SignatureHint",
52282 Self::NodeId => "NodeId",
52283 Self::AccountId => "AccountId",
52284 Self::ContractId => "ContractId",
52285 Self::Curve25519Secret => "Curve25519Secret",
52286 Self::Curve25519Public => "Curve25519Public",
52287 Self::HmacSha256Key => "HmacSha256Key",
52288 Self::HmacSha256Mac => "HmacSha256Mac",
52289 Self::ShortHashSeed => "ShortHashSeed",
52290 Self::BinaryFuseFilterType => "BinaryFuseFilterType",
52291 Self::SerializedBinaryFuseFilter => "SerializedBinaryFuseFilter",
52292 Self::PoolId => "PoolId",
52293 Self::ClaimableBalanceIdType => "ClaimableBalanceIdType",
52294 Self::ClaimableBalanceId => "ClaimableBalanceId",
52295 }
52296 }
52297
52298 #[must_use]
52299 #[allow(clippy::too_many_lines)]
52300 pub const fn variants() -> [TypeVariant; 463] {
52301 Self::VARIANTS
52302 }
52303
52304 #[cfg(feature = "schemars")]
52305 #[must_use]
52306 #[allow(clippy::too_many_lines)]
52307 pub fn json_schema(&self, gen: schemars::gen::SchemaGenerator) -> schemars::schema::RootSchema {
52308 match self {
52309 Self::Value => gen.into_root_schema_for::<Value>(),
52310 Self::ScpBallot => gen.into_root_schema_for::<ScpBallot>(),
52311 Self::ScpStatementType => gen.into_root_schema_for::<ScpStatementType>(),
52312 Self::ScpNomination => gen.into_root_schema_for::<ScpNomination>(),
52313 Self::ScpStatement => gen.into_root_schema_for::<ScpStatement>(),
52314 Self::ScpStatementPledges => gen.into_root_schema_for::<ScpStatementPledges>(),
52315 Self::ScpStatementPrepare => gen.into_root_schema_for::<ScpStatementPrepare>(),
52316 Self::ScpStatementConfirm => gen.into_root_schema_for::<ScpStatementConfirm>(),
52317 Self::ScpStatementExternalize => gen.into_root_schema_for::<ScpStatementExternalize>(),
52318 Self::ScpEnvelope => gen.into_root_schema_for::<ScpEnvelope>(),
52319 Self::ScpQuorumSet => gen.into_root_schema_for::<ScpQuorumSet>(),
52320 Self::ConfigSettingContractExecutionLanesV0 => {
52321 gen.into_root_schema_for::<ConfigSettingContractExecutionLanesV0>()
52322 }
52323 Self::ConfigSettingContractComputeV0 => {
52324 gen.into_root_schema_for::<ConfigSettingContractComputeV0>()
52325 }
52326 Self::ConfigSettingContractParallelComputeV0 => {
52327 gen.into_root_schema_for::<ConfigSettingContractParallelComputeV0>()
52328 }
52329 Self::ConfigSettingContractLedgerCostV0 => {
52330 gen.into_root_schema_for::<ConfigSettingContractLedgerCostV0>()
52331 }
52332 Self::ConfigSettingContractLedgerCostExtV0 => {
52333 gen.into_root_schema_for::<ConfigSettingContractLedgerCostExtV0>()
52334 }
52335 Self::ConfigSettingContractHistoricalDataV0 => {
52336 gen.into_root_schema_for::<ConfigSettingContractHistoricalDataV0>()
52337 }
52338 Self::ConfigSettingContractEventsV0 => {
52339 gen.into_root_schema_for::<ConfigSettingContractEventsV0>()
52340 }
52341 Self::ConfigSettingContractBandwidthV0 => {
52342 gen.into_root_schema_for::<ConfigSettingContractBandwidthV0>()
52343 }
52344 Self::ContractCostType => gen.into_root_schema_for::<ContractCostType>(),
52345 Self::ContractCostParamEntry => gen.into_root_schema_for::<ContractCostParamEntry>(),
52346 Self::StateArchivalSettings => gen.into_root_schema_for::<StateArchivalSettings>(),
52347 Self::EvictionIterator => gen.into_root_schema_for::<EvictionIterator>(),
52348 Self::ConfigSettingScpTiming => gen.into_root_schema_for::<ConfigSettingScpTiming>(),
52349 Self::ContractCostParams => gen.into_root_schema_for::<ContractCostParams>(),
52350 Self::ConfigSettingId => gen.into_root_schema_for::<ConfigSettingId>(),
52351 Self::ConfigSettingEntry => gen.into_root_schema_for::<ConfigSettingEntry>(),
52352 Self::ScEnvMetaKind => gen.into_root_schema_for::<ScEnvMetaKind>(),
52353 Self::ScEnvMetaEntry => gen.into_root_schema_for::<ScEnvMetaEntry>(),
52354 Self::ScEnvMetaEntryInterfaceVersion => {
52355 gen.into_root_schema_for::<ScEnvMetaEntryInterfaceVersion>()
52356 }
52357 Self::ScMetaV0 => gen.into_root_schema_for::<ScMetaV0>(),
52358 Self::ScMetaKind => gen.into_root_schema_for::<ScMetaKind>(),
52359 Self::ScMetaEntry => gen.into_root_schema_for::<ScMetaEntry>(),
52360 Self::ScSpecType => gen.into_root_schema_for::<ScSpecType>(),
52361 Self::ScSpecTypeOption => gen.into_root_schema_for::<ScSpecTypeOption>(),
52362 Self::ScSpecTypeResult => gen.into_root_schema_for::<ScSpecTypeResult>(),
52363 Self::ScSpecTypeVec => gen.into_root_schema_for::<ScSpecTypeVec>(),
52364 Self::ScSpecTypeMap => gen.into_root_schema_for::<ScSpecTypeMap>(),
52365 Self::ScSpecTypeTuple => gen.into_root_schema_for::<ScSpecTypeTuple>(),
52366 Self::ScSpecTypeBytesN => gen.into_root_schema_for::<ScSpecTypeBytesN>(),
52367 Self::ScSpecTypeUdt => gen.into_root_schema_for::<ScSpecTypeUdt>(),
52368 Self::ScSpecTypeDef => gen.into_root_schema_for::<ScSpecTypeDef>(),
52369 Self::ScSpecUdtStructFieldV0 => gen.into_root_schema_for::<ScSpecUdtStructFieldV0>(),
52370 Self::ScSpecUdtStructV0 => gen.into_root_schema_for::<ScSpecUdtStructV0>(),
52371 Self::ScSpecUdtUnionCaseVoidV0 => {
52372 gen.into_root_schema_for::<ScSpecUdtUnionCaseVoidV0>()
52373 }
52374 Self::ScSpecUdtUnionCaseTupleV0 => {
52375 gen.into_root_schema_for::<ScSpecUdtUnionCaseTupleV0>()
52376 }
52377 Self::ScSpecUdtUnionCaseV0Kind => {
52378 gen.into_root_schema_for::<ScSpecUdtUnionCaseV0Kind>()
52379 }
52380 Self::ScSpecUdtUnionCaseV0 => gen.into_root_schema_for::<ScSpecUdtUnionCaseV0>(),
52381 Self::ScSpecUdtUnionV0 => gen.into_root_schema_for::<ScSpecUdtUnionV0>(),
52382 Self::ScSpecUdtEnumCaseV0 => gen.into_root_schema_for::<ScSpecUdtEnumCaseV0>(),
52383 Self::ScSpecUdtEnumV0 => gen.into_root_schema_for::<ScSpecUdtEnumV0>(),
52384 Self::ScSpecUdtErrorEnumCaseV0 => {
52385 gen.into_root_schema_for::<ScSpecUdtErrorEnumCaseV0>()
52386 }
52387 Self::ScSpecUdtErrorEnumV0 => gen.into_root_schema_for::<ScSpecUdtErrorEnumV0>(),
52388 Self::ScSpecFunctionInputV0 => gen.into_root_schema_for::<ScSpecFunctionInputV0>(),
52389 Self::ScSpecFunctionV0 => gen.into_root_schema_for::<ScSpecFunctionV0>(),
52390 Self::ScSpecEventParamLocationV0 => {
52391 gen.into_root_schema_for::<ScSpecEventParamLocationV0>()
52392 }
52393 Self::ScSpecEventParamV0 => gen.into_root_schema_for::<ScSpecEventParamV0>(),
52394 Self::ScSpecEventDataFormat => gen.into_root_schema_for::<ScSpecEventDataFormat>(),
52395 Self::ScSpecEventV0 => gen.into_root_schema_for::<ScSpecEventV0>(),
52396 Self::ScSpecEntryKind => gen.into_root_schema_for::<ScSpecEntryKind>(),
52397 Self::ScSpecEntry => gen.into_root_schema_for::<ScSpecEntry>(),
52398 Self::ScValType => gen.into_root_schema_for::<ScValType>(),
52399 Self::ScErrorType => gen.into_root_schema_for::<ScErrorType>(),
52400 Self::ScErrorCode => gen.into_root_schema_for::<ScErrorCode>(),
52401 Self::ScError => gen.into_root_schema_for::<ScError>(),
52402 Self::UInt128Parts => gen.into_root_schema_for::<UInt128Parts>(),
52403 Self::Int128Parts => gen.into_root_schema_for::<Int128Parts>(),
52404 Self::UInt256Parts => gen.into_root_schema_for::<UInt256Parts>(),
52405 Self::Int256Parts => gen.into_root_schema_for::<Int256Parts>(),
52406 Self::ContractExecutableType => gen.into_root_schema_for::<ContractExecutableType>(),
52407 Self::ContractExecutable => gen.into_root_schema_for::<ContractExecutable>(),
52408 Self::ScAddressType => gen.into_root_schema_for::<ScAddressType>(),
52409 Self::MuxedEd25519Account => gen.into_root_schema_for::<MuxedEd25519Account>(),
52410 Self::ScAddress => gen.into_root_schema_for::<ScAddress>(),
52411 Self::ScVec => gen.into_root_schema_for::<ScVec>(),
52412 Self::ScMap => gen.into_root_schema_for::<ScMap>(),
52413 Self::ScBytes => gen.into_root_schema_for::<ScBytes>(),
52414 Self::ScString => gen.into_root_schema_for::<ScString>(),
52415 Self::ScSymbol => gen.into_root_schema_for::<ScSymbol>(),
52416 Self::ScNonceKey => gen.into_root_schema_for::<ScNonceKey>(),
52417 Self::ScContractInstance => gen.into_root_schema_for::<ScContractInstance>(),
52418 Self::ScVal => gen.into_root_schema_for::<ScVal>(),
52419 Self::ScMapEntry => gen.into_root_schema_for::<ScMapEntry>(),
52420 Self::LedgerCloseMetaBatch => gen.into_root_schema_for::<LedgerCloseMetaBatch>(),
52421 Self::StoredTransactionSet => gen.into_root_schema_for::<StoredTransactionSet>(),
52422 Self::StoredDebugTransactionSet => {
52423 gen.into_root_schema_for::<StoredDebugTransactionSet>()
52424 }
52425 Self::PersistedScpStateV0 => gen.into_root_schema_for::<PersistedScpStateV0>(),
52426 Self::PersistedScpStateV1 => gen.into_root_schema_for::<PersistedScpStateV1>(),
52427 Self::PersistedScpState => gen.into_root_schema_for::<PersistedScpState>(),
52428 Self::Thresholds => gen.into_root_schema_for::<Thresholds>(),
52429 Self::String32 => gen.into_root_schema_for::<String32>(),
52430 Self::String64 => gen.into_root_schema_for::<String64>(),
52431 Self::SequenceNumber => gen.into_root_schema_for::<SequenceNumber>(),
52432 Self::DataValue => gen.into_root_schema_for::<DataValue>(),
52433 Self::AssetCode4 => gen.into_root_schema_for::<AssetCode4>(),
52434 Self::AssetCode12 => gen.into_root_schema_for::<AssetCode12>(),
52435 Self::AssetType => gen.into_root_schema_for::<AssetType>(),
52436 Self::AssetCode => gen.into_root_schema_for::<AssetCode>(),
52437 Self::AlphaNum4 => gen.into_root_schema_for::<AlphaNum4>(),
52438 Self::AlphaNum12 => gen.into_root_schema_for::<AlphaNum12>(),
52439 Self::Asset => gen.into_root_schema_for::<Asset>(),
52440 Self::Price => gen.into_root_schema_for::<Price>(),
52441 Self::Liabilities => gen.into_root_schema_for::<Liabilities>(),
52442 Self::ThresholdIndexes => gen.into_root_schema_for::<ThresholdIndexes>(),
52443 Self::LedgerEntryType => gen.into_root_schema_for::<LedgerEntryType>(),
52444 Self::Signer => gen.into_root_schema_for::<Signer>(),
52445 Self::AccountFlags => gen.into_root_schema_for::<AccountFlags>(),
52446 Self::SponsorshipDescriptor => gen.into_root_schema_for::<SponsorshipDescriptor>(),
52447 Self::AccountEntryExtensionV3 => gen.into_root_schema_for::<AccountEntryExtensionV3>(),
52448 Self::AccountEntryExtensionV2 => gen.into_root_schema_for::<AccountEntryExtensionV2>(),
52449 Self::AccountEntryExtensionV2Ext => {
52450 gen.into_root_schema_for::<AccountEntryExtensionV2Ext>()
52451 }
52452 Self::AccountEntryExtensionV1 => gen.into_root_schema_for::<AccountEntryExtensionV1>(),
52453 Self::AccountEntryExtensionV1Ext => {
52454 gen.into_root_schema_for::<AccountEntryExtensionV1Ext>()
52455 }
52456 Self::AccountEntry => gen.into_root_schema_for::<AccountEntry>(),
52457 Self::AccountEntryExt => gen.into_root_schema_for::<AccountEntryExt>(),
52458 Self::TrustLineFlags => gen.into_root_schema_for::<TrustLineFlags>(),
52459 Self::LiquidityPoolType => gen.into_root_schema_for::<LiquidityPoolType>(),
52460 Self::TrustLineAsset => gen.into_root_schema_for::<TrustLineAsset>(),
52461 Self::TrustLineEntryExtensionV2 => {
52462 gen.into_root_schema_for::<TrustLineEntryExtensionV2>()
52463 }
52464 Self::TrustLineEntryExtensionV2Ext => {
52465 gen.into_root_schema_for::<TrustLineEntryExtensionV2Ext>()
52466 }
52467 Self::TrustLineEntry => gen.into_root_schema_for::<TrustLineEntry>(),
52468 Self::TrustLineEntryExt => gen.into_root_schema_for::<TrustLineEntryExt>(),
52469 Self::TrustLineEntryV1 => gen.into_root_schema_for::<TrustLineEntryV1>(),
52470 Self::TrustLineEntryV1Ext => gen.into_root_schema_for::<TrustLineEntryV1Ext>(),
52471 Self::OfferEntryFlags => gen.into_root_schema_for::<OfferEntryFlags>(),
52472 Self::OfferEntry => gen.into_root_schema_for::<OfferEntry>(),
52473 Self::OfferEntryExt => gen.into_root_schema_for::<OfferEntryExt>(),
52474 Self::DataEntry => gen.into_root_schema_for::<DataEntry>(),
52475 Self::DataEntryExt => gen.into_root_schema_for::<DataEntryExt>(),
52476 Self::ClaimPredicateType => gen.into_root_schema_for::<ClaimPredicateType>(),
52477 Self::ClaimPredicate => gen.into_root_schema_for::<ClaimPredicate>(),
52478 Self::ClaimantType => gen.into_root_schema_for::<ClaimantType>(),
52479 Self::Claimant => gen.into_root_schema_for::<Claimant>(),
52480 Self::ClaimantV0 => gen.into_root_schema_for::<ClaimantV0>(),
52481 Self::ClaimableBalanceFlags => gen.into_root_schema_for::<ClaimableBalanceFlags>(),
52482 Self::ClaimableBalanceEntryExtensionV1 => {
52483 gen.into_root_schema_for::<ClaimableBalanceEntryExtensionV1>()
52484 }
52485 Self::ClaimableBalanceEntryExtensionV1Ext => {
52486 gen.into_root_schema_for::<ClaimableBalanceEntryExtensionV1Ext>()
52487 }
52488 Self::ClaimableBalanceEntry => gen.into_root_schema_for::<ClaimableBalanceEntry>(),
52489 Self::ClaimableBalanceEntryExt => {
52490 gen.into_root_schema_for::<ClaimableBalanceEntryExt>()
52491 }
52492 Self::LiquidityPoolConstantProductParameters => {
52493 gen.into_root_schema_for::<LiquidityPoolConstantProductParameters>()
52494 }
52495 Self::LiquidityPoolEntry => gen.into_root_schema_for::<LiquidityPoolEntry>(),
52496 Self::LiquidityPoolEntryBody => gen.into_root_schema_for::<LiquidityPoolEntryBody>(),
52497 Self::LiquidityPoolEntryConstantProduct => {
52498 gen.into_root_schema_for::<LiquidityPoolEntryConstantProduct>()
52499 }
52500 Self::ContractDataDurability => gen.into_root_schema_for::<ContractDataDurability>(),
52501 Self::ContractDataEntry => gen.into_root_schema_for::<ContractDataEntry>(),
52502 Self::ContractCodeCostInputs => gen.into_root_schema_for::<ContractCodeCostInputs>(),
52503 Self::ContractCodeEntry => gen.into_root_schema_for::<ContractCodeEntry>(),
52504 Self::ContractCodeEntryExt => gen.into_root_schema_for::<ContractCodeEntryExt>(),
52505 Self::ContractCodeEntryV1 => gen.into_root_schema_for::<ContractCodeEntryV1>(),
52506 Self::TtlEntry => gen.into_root_schema_for::<TtlEntry>(),
52507 Self::LedgerEntryExtensionV1 => gen.into_root_schema_for::<LedgerEntryExtensionV1>(),
52508 Self::LedgerEntryExtensionV1Ext => {
52509 gen.into_root_schema_for::<LedgerEntryExtensionV1Ext>()
52510 }
52511 Self::LedgerEntry => gen.into_root_schema_for::<LedgerEntry>(),
52512 Self::LedgerEntryData => gen.into_root_schema_for::<LedgerEntryData>(),
52513 Self::LedgerEntryExt => gen.into_root_schema_for::<LedgerEntryExt>(),
52514 Self::LedgerKey => gen.into_root_schema_for::<LedgerKey>(),
52515 Self::LedgerKeyAccount => gen.into_root_schema_for::<LedgerKeyAccount>(),
52516 Self::LedgerKeyTrustLine => gen.into_root_schema_for::<LedgerKeyTrustLine>(),
52517 Self::LedgerKeyOffer => gen.into_root_schema_for::<LedgerKeyOffer>(),
52518 Self::LedgerKeyData => gen.into_root_schema_for::<LedgerKeyData>(),
52519 Self::LedgerKeyClaimableBalance => {
52520 gen.into_root_schema_for::<LedgerKeyClaimableBalance>()
52521 }
52522 Self::LedgerKeyLiquidityPool => gen.into_root_schema_for::<LedgerKeyLiquidityPool>(),
52523 Self::LedgerKeyContractData => gen.into_root_schema_for::<LedgerKeyContractData>(),
52524 Self::LedgerKeyContractCode => gen.into_root_schema_for::<LedgerKeyContractCode>(),
52525 Self::LedgerKeyConfigSetting => gen.into_root_schema_for::<LedgerKeyConfigSetting>(),
52526 Self::LedgerKeyTtl => gen.into_root_schema_for::<LedgerKeyTtl>(),
52527 Self::EnvelopeType => gen.into_root_schema_for::<EnvelopeType>(),
52528 Self::BucketListType => gen.into_root_schema_for::<BucketListType>(),
52529 Self::BucketEntryType => gen.into_root_schema_for::<BucketEntryType>(),
52530 Self::HotArchiveBucketEntryType => {
52531 gen.into_root_schema_for::<HotArchiveBucketEntryType>()
52532 }
52533 Self::BucketMetadata => gen.into_root_schema_for::<BucketMetadata>(),
52534 Self::BucketMetadataExt => gen.into_root_schema_for::<BucketMetadataExt>(),
52535 Self::BucketEntry => gen.into_root_schema_for::<BucketEntry>(),
52536 Self::HotArchiveBucketEntry => gen.into_root_schema_for::<HotArchiveBucketEntry>(),
52537 Self::UpgradeType => gen.into_root_schema_for::<UpgradeType>(),
52538 Self::StellarValueType => gen.into_root_schema_for::<StellarValueType>(),
52539 Self::LedgerCloseValueSignature => {
52540 gen.into_root_schema_for::<LedgerCloseValueSignature>()
52541 }
52542 Self::StellarValue => gen.into_root_schema_for::<StellarValue>(),
52543 Self::StellarValueExt => gen.into_root_schema_for::<StellarValueExt>(),
52544 Self::LedgerHeaderFlags => gen.into_root_schema_for::<LedgerHeaderFlags>(),
52545 Self::LedgerHeaderExtensionV1 => gen.into_root_schema_for::<LedgerHeaderExtensionV1>(),
52546 Self::LedgerHeaderExtensionV1Ext => {
52547 gen.into_root_schema_for::<LedgerHeaderExtensionV1Ext>()
52548 }
52549 Self::LedgerHeader => gen.into_root_schema_for::<LedgerHeader>(),
52550 Self::LedgerHeaderExt => gen.into_root_schema_for::<LedgerHeaderExt>(),
52551 Self::LedgerUpgradeType => gen.into_root_schema_for::<LedgerUpgradeType>(),
52552 Self::ConfigUpgradeSetKey => gen.into_root_schema_for::<ConfigUpgradeSetKey>(),
52553 Self::LedgerUpgrade => gen.into_root_schema_for::<LedgerUpgrade>(),
52554 Self::ConfigUpgradeSet => gen.into_root_schema_for::<ConfigUpgradeSet>(),
52555 Self::TxSetComponentType => gen.into_root_schema_for::<TxSetComponentType>(),
52556 Self::DependentTxCluster => gen.into_root_schema_for::<DependentTxCluster>(),
52557 Self::ParallelTxExecutionStage => {
52558 gen.into_root_schema_for::<ParallelTxExecutionStage>()
52559 }
52560 Self::ParallelTxsComponent => gen.into_root_schema_for::<ParallelTxsComponent>(),
52561 Self::TxSetComponent => gen.into_root_schema_for::<TxSetComponent>(),
52562 Self::TxSetComponentTxsMaybeDiscountedFee => {
52563 gen.into_root_schema_for::<TxSetComponentTxsMaybeDiscountedFee>()
52564 }
52565 Self::TransactionPhase => gen.into_root_schema_for::<TransactionPhase>(),
52566 Self::TransactionSet => gen.into_root_schema_for::<TransactionSet>(),
52567 Self::TransactionSetV1 => gen.into_root_schema_for::<TransactionSetV1>(),
52568 Self::GeneralizedTransactionSet => {
52569 gen.into_root_schema_for::<GeneralizedTransactionSet>()
52570 }
52571 Self::TransactionResultPair => gen.into_root_schema_for::<TransactionResultPair>(),
52572 Self::TransactionResultSet => gen.into_root_schema_for::<TransactionResultSet>(),
52573 Self::TransactionHistoryEntry => gen.into_root_schema_for::<TransactionHistoryEntry>(),
52574 Self::TransactionHistoryEntryExt => {
52575 gen.into_root_schema_for::<TransactionHistoryEntryExt>()
52576 }
52577 Self::TransactionHistoryResultEntry => {
52578 gen.into_root_schema_for::<TransactionHistoryResultEntry>()
52579 }
52580 Self::TransactionHistoryResultEntryExt => {
52581 gen.into_root_schema_for::<TransactionHistoryResultEntryExt>()
52582 }
52583 Self::LedgerHeaderHistoryEntry => {
52584 gen.into_root_schema_for::<LedgerHeaderHistoryEntry>()
52585 }
52586 Self::LedgerHeaderHistoryEntryExt => {
52587 gen.into_root_schema_for::<LedgerHeaderHistoryEntryExt>()
52588 }
52589 Self::LedgerScpMessages => gen.into_root_schema_for::<LedgerScpMessages>(),
52590 Self::ScpHistoryEntryV0 => gen.into_root_schema_for::<ScpHistoryEntryV0>(),
52591 Self::ScpHistoryEntry => gen.into_root_schema_for::<ScpHistoryEntry>(),
52592 Self::LedgerEntryChangeType => gen.into_root_schema_for::<LedgerEntryChangeType>(),
52593 Self::LedgerEntryChange => gen.into_root_schema_for::<LedgerEntryChange>(),
52594 Self::LedgerEntryChanges => gen.into_root_schema_for::<LedgerEntryChanges>(),
52595 Self::OperationMeta => gen.into_root_schema_for::<OperationMeta>(),
52596 Self::TransactionMetaV1 => gen.into_root_schema_for::<TransactionMetaV1>(),
52597 Self::TransactionMetaV2 => gen.into_root_schema_for::<TransactionMetaV2>(),
52598 Self::ContractEventType => gen.into_root_schema_for::<ContractEventType>(),
52599 Self::ContractEvent => gen.into_root_schema_for::<ContractEvent>(),
52600 Self::ContractEventBody => gen.into_root_schema_for::<ContractEventBody>(),
52601 Self::ContractEventV0 => gen.into_root_schema_for::<ContractEventV0>(),
52602 Self::DiagnosticEvent => gen.into_root_schema_for::<DiagnosticEvent>(),
52603 Self::SorobanTransactionMetaExtV1 => {
52604 gen.into_root_schema_for::<SorobanTransactionMetaExtV1>()
52605 }
52606 Self::SorobanTransactionMetaExt => {
52607 gen.into_root_schema_for::<SorobanTransactionMetaExt>()
52608 }
52609 Self::SorobanTransactionMeta => gen.into_root_schema_for::<SorobanTransactionMeta>(),
52610 Self::TransactionMetaV3 => gen.into_root_schema_for::<TransactionMetaV3>(),
52611 Self::OperationMetaV2 => gen.into_root_schema_for::<OperationMetaV2>(),
52612 Self::SorobanTransactionMetaV2 => {
52613 gen.into_root_schema_for::<SorobanTransactionMetaV2>()
52614 }
52615 Self::TransactionEventStage => gen.into_root_schema_for::<TransactionEventStage>(),
52616 Self::TransactionEvent => gen.into_root_schema_for::<TransactionEvent>(),
52617 Self::TransactionMetaV4 => gen.into_root_schema_for::<TransactionMetaV4>(),
52618 Self::InvokeHostFunctionSuccessPreImage => {
52619 gen.into_root_schema_for::<InvokeHostFunctionSuccessPreImage>()
52620 }
52621 Self::TransactionMeta => gen.into_root_schema_for::<TransactionMeta>(),
52622 Self::TransactionResultMeta => gen.into_root_schema_for::<TransactionResultMeta>(),
52623 Self::TransactionResultMetaV1 => gen.into_root_schema_for::<TransactionResultMetaV1>(),
52624 Self::UpgradeEntryMeta => gen.into_root_schema_for::<UpgradeEntryMeta>(),
52625 Self::LedgerCloseMetaV0 => gen.into_root_schema_for::<LedgerCloseMetaV0>(),
52626 Self::LedgerCloseMetaExtV1 => gen.into_root_schema_for::<LedgerCloseMetaExtV1>(),
52627 Self::LedgerCloseMetaExt => gen.into_root_schema_for::<LedgerCloseMetaExt>(),
52628 Self::LedgerCloseMetaV1 => gen.into_root_schema_for::<LedgerCloseMetaV1>(),
52629 Self::LedgerCloseMetaV2 => gen.into_root_schema_for::<LedgerCloseMetaV2>(),
52630 Self::LedgerCloseMeta => gen.into_root_schema_for::<LedgerCloseMeta>(),
52631 Self::ErrorCode => gen.into_root_schema_for::<ErrorCode>(),
52632 Self::SError => gen.into_root_schema_for::<SError>(),
52633 Self::SendMore => gen.into_root_schema_for::<SendMore>(),
52634 Self::SendMoreExtended => gen.into_root_schema_for::<SendMoreExtended>(),
52635 Self::AuthCert => gen.into_root_schema_for::<AuthCert>(),
52636 Self::Hello => gen.into_root_schema_for::<Hello>(),
52637 Self::Auth => gen.into_root_schema_for::<Auth>(),
52638 Self::IpAddrType => gen.into_root_schema_for::<IpAddrType>(),
52639 Self::PeerAddress => gen.into_root_schema_for::<PeerAddress>(),
52640 Self::PeerAddressIp => gen.into_root_schema_for::<PeerAddressIp>(),
52641 Self::MessageType => gen.into_root_schema_for::<MessageType>(),
52642 Self::DontHave => gen.into_root_schema_for::<DontHave>(),
52643 Self::SurveyMessageCommandType => {
52644 gen.into_root_schema_for::<SurveyMessageCommandType>()
52645 }
52646 Self::SurveyMessageResponseType => {
52647 gen.into_root_schema_for::<SurveyMessageResponseType>()
52648 }
52649 Self::TimeSlicedSurveyStartCollectingMessage => {
52650 gen.into_root_schema_for::<TimeSlicedSurveyStartCollectingMessage>()
52651 }
52652 Self::SignedTimeSlicedSurveyStartCollectingMessage => {
52653 gen.into_root_schema_for::<SignedTimeSlicedSurveyStartCollectingMessage>()
52654 }
52655 Self::TimeSlicedSurveyStopCollectingMessage => {
52656 gen.into_root_schema_for::<TimeSlicedSurveyStopCollectingMessage>()
52657 }
52658 Self::SignedTimeSlicedSurveyStopCollectingMessage => {
52659 gen.into_root_schema_for::<SignedTimeSlicedSurveyStopCollectingMessage>()
52660 }
52661 Self::SurveyRequestMessage => gen.into_root_schema_for::<SurveyRequestMessage>(),
52662 Self::TimeSlicedSurveyRequestMessage => {
52663 gen.into_root_schema_for::<TimeSlicedSurveyRequestMessage>()
52664 }
52665 Self::SignedTimeSlicedSurveyRequestMessage => {
52666 gen.into_root_schema_for::<SignedTimeSlicedSurveyRequestMessage>()
52667 }
52668 Self::EncryptedBody => gen.into_root_schema_for::<EncryptedBody>(),
52669 Self::SurveyResponseMessage => gen.into_root_schema_for::<SurveyResponseMessage>(),
52670 Self::TimeSlicedSurveyResponseMessage => {
52671 gen.into_root_schema_for::<TimeSlicedSurveyResponseMessage>()
52672 }
52673 Self::SignedTimeSlicedSurveyResponseMessage => {
52674 gen.into_root_schema_for::<SignedTimeSlicedSurveyResponseMessage>()
52675 }
52676 Self::PeerStats => gen.into_root_schema_for::<PeerStats>(),
52677 Self::TimeSlicedNodeData => gen.into_root_schema_for::<TimeSlicedNodeData>(),
52678 Self::TimeSlicedPeerData => gen.into_root_schema_for::<TimeSlicedPeerData>(),
52679 Self::TimeSlicedPeerDataList => gen.into_root_schema_for::<TimeSlicedPeerDataList>(),
52680 Self::TopologyResponseBodyV2 => gen.into_root_schema_for::<TopologyResponseBodyV2>(),
52681 Self::SurveyResponseBody => gen.into_root_schema_for::<SurveyResponseBody>(),
52682 Self::TxAdvertVector => gen.into_root_schema_for::<TxAdvertVector>(),
52683 Self::FloodAdvert => gen.into_root_schema_for::<FloodAdvert>(),
52684 Self::TxDemandVector => gen.into_root_schema_for::<TxDemandVector>(),
52685 Self::FloodDemand => gen.into_root_schema_for::<FloodDemand>(),
52686 Self::StellarMessage => gen.into_root_schema_for::<StellarMessage>(),
52687 Self::AuthenticatedMessage => gen.into_root_schema_for::<AuthenticatedMessage>(),
52688 Self::AuthenticatedMessageV0 => gen.into_root_schema_for::<AuthenticatedMessageV0>(),
52689 Self::LiquidityPoolParameters => gen.into_root_schema_for::<LiquidityPoolParameters>(),
52690 Self::MuxedAccount => gen.into_root_schema_for::<MuxedAccount>(),
52691 Self::MuxedAccountMed25519 => gen.into_root_schema_for::<MuxedAccountMed25519>(),
52692 Self::DecoratedSignature => gen.into_root_schema_for::<DecoratedSignature>(),
52693 Self::OperationType => gen.into_root_schema_for::<OperationType>(),
52694 Self::CreateAccountOp => gen.into_root_schema_for::<CreateAccountOp>(),
52695 Self::PaymentOp => gen.into_root_schema_for::<PaymentOp>(),
52696 Self::PathPaymentStrictReceiveOp => {
52697 gen.into_root_schema_for::<PathPaymentStrictReceiveOp>()
52698 }
52699 Self::PathPaymentStrictSendOp => gen.into_root_schema_for::<PathPaymentStrictSendOp>(),
52700 Self::ManageSellOfferOp => gen.into_root_schema_for::<ManageSellOfferOp>(),
52701 Self::ManageBuyOfferOp => gen.into_root_schema_for::<ManageBuyOfferOp>(),
52702 Self::CreatePassiveSellOfferOp => {
52703 gen.into_root_schema_for::<CreatePassiveSellOfferOp>()
52704 }
52705 Self::SetOptionsOp => gen.into_root_schema_for::<SetOptionsOp>(),
52706 Self::ChangeTrustAsset => gen.into_root_schema_for::<ChangeTrustAsset>(),
52707 Self::ChangeTrustOp => gen.into_root_schema_for::<ChangeTrustOp>(),
52708 Self::AllowTrustOp => gen.into_root_schema_for::<AllowTrustOp>(),
52709 Self::ManageDataOp => gen.into_root_schema_for::<ManageDataOp>(),
52710 Self::BumpSequenceOp => gen.into_root_schema_for::<BumpSequenceOp>(),
52711 Self::CreateClaimableBalanceOp => {
52712 gen.into_root_schema_for::<CreateClaimableBalanceOp>()
52713 }
52714 Self::ClaimClaimableBalanceOp => gen.into_root_schema_for::<ClaimClaimableBalanceOp>(),
52715 Self::BeginSponsoringFutureReservesOp => {
52716 gen.into_root_schema_for::<BeginSponsoringFutureReservesOp>()
52717 }
52718 Self::RevokeSponsorshipType => gen.into_root_schema_for::<RevokeSponsorshipType>(),
52719 Self::RevokeSponsorshipOp => gen.into_root_schema_for::<RevokeSponsorshipOp>(),
52720 Self::RevokeSponsorshipOpSigner => {
52721 gen.into_root_schema_for::<RevokeSponsorshipOpSigner>()
52722 }
52723 Self::ClawbackOp => gen.into_root_schema_for::<ClawbackOp>(),
52724 Self::ClawbackClaimableBalanceOp => {
52725 gen.into_root_schema_for::<ClawbackClaimableBalanceOp>()
52726 }
52727 Self::SetTrustLineFlagsOp => gen.into_root_schema_for::<SetTrustLineFlagsOp>(),
52728 Self::LiquidityPoolDepositOp => gen.into_root_schema_for::<LiquidityPoolDepositOp>(),
52729 Self::LiquidityPoolWithdrawOp => gen.into_root_schema_for::<LiquidityPoolWithdrawOp>(),
52730 Self::HostFunctionType => gen.into_root_schema_for::<HostFunctionType>(),
52731 Self::ContractIdPreimageType => gen.into_root_schema_for::<ContractIdPreimageType>(),
52732 Self::ContractIdPreimage => gen.into_root_schema_for::<ContractIdPreimage>(),
52733 Self::ContractIdPreimageFromAddress => {
52734 gen.into_root_schema_for::<ContractIdPreimageFromAddress>()
52735 }
52736 Self::CreateContractArgs => gen.into_root_schema_for::<CreateContractArgs>(),
52737 Self::CreateContractArgsV2 => gen.into_root_schema_for::<CreateContractArgsV2>(),
52738 Self::InvokeContractArgs => gen.into_root_schema_for::<InvokeContractArgs>(),
52739 Self::HostFunction => gen.into_root_schema_for::<HostFunction>(),
52740 Self::SorobanAuthorizedFunctionType => {
52741 gen.into_root_schema_for::<SorobanAuthorizedFunctionType>()
52742 }
52743 Self::SorobanAuthorizedFunction => {
52744 gen.into_root_schema_for::<SorobanAuthorizedFunction>()
52745 }
52746 Self::SorobanAuthorizedInvocation => {
52747 gen.into_root_schema_for::<SorobanAuthorizedInvocation>()
52748 }
52749 Self::SorobanAddressCredentials => {
52750 gen.into_root_schema_for::<SorobanAddressCredentials>()
52751 }
52752 Self::SorobanCredentialsType => gen.into_root_schema_for::<SorobanCredentialsType>(),
52753 Self::SorobanCredentials => gen.into_root_schema_for::<SorobanCredentials>(),
52754 Self::SorobanAuthorizationEntry => {
52755 gen.into_root_schema_for::<SorobanAuthorizationEntry>()
52756 }
52757 Self::SorobanAuthorizationEntries => {
52758 gen.into_root_schema_for::<SorobanAuthorizationEntries>()
52759 }
52760 Self::InvokeHostFunctionOp => gen.into_root_schema_for::<InvokeHostFunctionOp>(),
52761 Self::ExtendFootprintTtlOp => gen.into_root_schema_for::<ExtendFootprintTtlOp>(),
52762 Self::RestoreFootprintOp => gen.into_root_schema_for::<RestoreFootprintOp>(),
52763 Self::Operation => gen.into_root_schema_for::<Operation>(),
52764 Self::OperationBody => gen.into_root_schema_for::<OperationBody>(),
52765 Self::HashIdPreimage => gen.into_root_schema_for::<HashIdPreimage>(),
52766 Self::HashIdPreimageOperationId => {
52767 gen.into_root_schema_for::<HashIdPreimageOperationId>()
52768 }
52769 Self::HashIdPreimageRevokeId => gen.into_root_schema_for::<HashIdPreimageRevokeId>(),
52770 Self::HashIdPreimageContractId => {
52771 gen.into_root_schema_for::<HashIdPreimageContractId>()
52772 }
52773 Self::HashIdPreimageSorobanAuthorization => {
52774 gen.into_root_schema_for::<HashIdPreimageSorobanAuthorization>()
52775 }
52776 Self::MemoType => gen.into_root_schema_for::<MemoType>(),
52777 Self::Memo => gen.into_root_schema_for::<Memo>(),
52778 Self::TimeBounds => gen.into_root_schema_for::<TimeBounds>(),
52779 Self::LedgerBounds => gen.into_root_schema_for::<LedgerBounds>(),
52780 Self::PreconditionsV2 => gen.into_root_schema_for::<PreconditionsV2>(),
52781 Self::PreconditionType => gen.into_root_schema_for::<PreconditionType>(),
52782 Self::Preconditions => gen.into_root_schema_for::<Preconditions>(),
52783 Self::LedgerFootprint => gen.into_root_schema_for::<LedgerFootprint>(),
52784 Self::SorobanResources => gen.into_root_schema_for::<SorobanResources>(),
52785 Self::SorobanResourcesExtV0 => gen.into_root_schema_for::<SorobanResourcesExtV0>(),
52786 Self::SorobanTransactionData => gen.into_root_schema_for::<SorobanTransactionData>(),
52787 Self::SorobanTransactionDataExt => {
52788 gen.into_root_schema_for::<SorobanTransactionDataExt>()
52789 }
52790 Self::TransactionV0 => gen.into_root_schema_for::<TransactionV0>(),
52791 Self::TransactionV0Ext => gen.into_root_schema_for::<TransactionV0Ext>(),
52792 Self::TransactionV0Envelope => gen.into_root_schema_for::<TransactionV0Envelope>(),
52793 Self::Transaction => gen.into_root_schema_for::<Transaction>(),
52794 Self::TransactionExt => gen.into_root_schema_for::<TransactionExt>(),
52795 Self::TransactionV1Envelope => gen.into_root_schema_for::<TransactionV1Envelope>(),
52796 Self::FeeBumpTransaction => gen.into_root_schema_for::<FeeBumpTransaction>(),
52797 Self::FeeBumpTransactionInnerTx => {
52798 gen.into_root_schema_for::<FeeBumpTransactionInnerTx>()
52799 }
52800 Self::FeeBumpTransactionExt => gen.into_root_schema_for::<FeeBumpTransactionExt>(),
52801 Self::FeeBumpTransactionEnvelope => {
52802 gen.into_root_schema_for::<FeeBumpTransactionEnvelope>()
52803 }
52804 Self::TransactionEnvelope => gen.into_root_schema_for::<TransactionEnvelope>(),
52805 Self::TransactionSignaturePayload => {
52806 gen.into_root_schema_for::<TransactionSignaturePayload>()
52807 }
52808 Self::TransactionSignaturePayloadTaggedTransaction => {
52809 gen.into_root_schema_for::<TransactionSignaturePayloadTaggedTransaction>()
52810 }
52811 Self::ClaimAtomType => gen.into_root_schema_for::<ClaimAtomType>(),
52812 Self::ClaimOfferAtomV0 => gen.into_root_schema_for::<ClaimOfferAtomV0>(),
52813 Self::ClaimOfferAtom => gen.into_root_schema_for::<ClaimOfferAtom>(),
52814 Self::ClaimLiquidityAtom => gen.into_root_schema_for::<ClaimLiquidityAtom>(),
52815 Self::ClaimAtom => gen.into_root_schema_for::<ClaimAtom>(),
52816 Self::CreateAccountResultCode => gen.into_root_schema_for::<CreateAccountResultCode>(),
52817 Self::CreateAccountResult => gen.into_root_schema_for::<CreateAccountResult>(),
52818 Self::PaymentResultCode => gen.into_root_schema_for::<PaymentResultCode>(),
52819 Self::PaymentResult => gen.into_root_schema_for::<PaymentResult>(),
52820 Self::PathPaymentStrictReceiveResultCode => {
52821 gen.into_root_schema_for::<PathPaymentStrictReceiveResultCode>()
52822 }
52823 Self::SimplePaymentResult => gen.into_root_schema_for::<SimplePaymentResult>(),
52824 Self::PathPaymentStrictReceiveResult => {
52825 gen.into_root_schema_for::<PathPaymentStrictReceiveResult>()
52826 }
52827 Self::PathPaymentStrictReceiveResultSuccess => {
52828 gen.into_root_schema_for::<PathPaymentStrictReceiveResultSuccess>()
52829 }
52830 Self::PathPaymentStrictSendResultCode => {
52831 gen.into_root_schema_for::<PathPaymentStrictSendResultCode>()
52832 }
52833 Self::PathPaymentStrictSendResult => {
52834 gen.into_root_schema_for::<PathPaymentStrictSendResult>()
52835 }
52836 Self::PathPaymentStrictSendResultSuccess => {
52837 gen.into_root_schema_for::<PathPaymentStrictSendResultSuccess>()
52838 }
52839 Self::ManageSellOfferResultCode => {
52840 gen.into_root_schema_for::<ManageSellOfferResultCode>()
52841 }
52842 Self::ManageOfferEffect => gen.into_root_schema_for::<ManageOfferEffect>(),
52843 Self::ManageOfferSuccessResult => {
52844 gen.into_root_schema_for::<ManageOfferSuccessResult>()
52845 }
52846 Self::ManageOfferSuccessResultOffer => {
52847 gen.into_root_schema_for::<ManageOfferSuccessResultOffer>()
52848 }
52849 Self::ManageSellOfferResult => gen.into_root_schema_for::<ManageSellOfferResult>(),
52850 Self::ManageBuyOfferResultCode => {
52851 gen.into_root_schema_for::<ManageBuyOfferResultCode>()
52852 }
52853 Self::ManageBuyOfferResult => gen.into_root_schema_for::<ManageBuyOfferResult>(),
52854 Self::SetOptionsResultCode => gen.into_root_schema_for::<SetOptionsResultCode>(),
52855 Self::SetOptionsResult => gen.into_root_schema_for::<SetOptionsResult>(),
52856 Self::ChangeTrustResultCode => gen.into_root_schema_for::<ChangeTrustResultCode>(),
52857 Self::ChangeTrustResult => gen.into_root_schema_for::<ChangeTrustResult>(),
52858 Self::AllowTrustResultCode => gen.into_root_schema_for::<AllowTrustResultCode>(),
52859 Self::AllowTrustResult => gen.into_root_schema_for::<AllowTrustResult>(),
52860 Self::AccountMergeResultCode => gen.into_root_schema_for::<AccountMergeResultCode>(),
52861 Self::AccountMergeResult => gen.into_root_schema_for::<AccountMergeResult>(),
52862 Self::InflationResultCode => gen.into_root_schema_for::<InflationResultCode>(),
52863 Self::InflationPayout => gen.into_root_schema_for::<InflationPayout>(),
52864 Self::InflationResult => gen.into_root_schema_for::<InflationResult>(),
52865 Self::ManageDataResultCode => gen.into_root_schema_for::<ManageDataResultCode>(),
52866 Self::ManageDataResult => gen.into_root_schema_for::<ManageDataResult>(),
52867 Self::BumpSequenceResultCode => gen.into_root_schema_for::<BumpSequenceResultCode>(),
52868 Self::BumpSequenceResult => gen.into_root_schema_for::<BumpSequenceResult>(),
52869 Self::CreateClaimableBalanceResultCode => {
52870 gen.into_root_schema_for::<CreateClaimableBalanceResultCode>()
52871 }
52872 Self::CreateClaimableBalanceResult => {
52873 gen.into_root_schema_for::<CreateClaimableBalanceResult>()
52874 }
52875 Self::ClaimClaimableBalanceResultCode => {
52876 gen.into_root_schema_for::<ClaimClaimableBalanceResultCode>()
52877 }
52878 Self::ClaimClaimableBalanceResult => {
52879 gen.into_root_schema_for::<ClaimClaimableBalanceResult>()
52880 }
52881 Self::BeginSponsoringFutureReservesResultCode => {
52882 gen.into_root_schema_for::<BeginSponsoringFutureReservesResultCode>()
52883 }
52884 Self::BeginSponsoringFutureReservesResult => {
52885 gen.into_root_schema_for::<BeginSponsoringFutureReservesResult>()
52886 }
52887 Self::EndSponsoringFutureReservesResultCode => {
52888 gen.into_root_schema_for::<EndSponsoringFutureReservesResultCode>()
52889 }
52890 Self::EndSponsoringFutureReservesResult => {
52891 gen.into_root_schema_for::<EndSponsoringFutureReservesResult>()
52892 }
52893 Self::RevokeSponsorshipResultCode => {
52894 gen.into_root_schema_for::<RevokeSponsorshipResultCode>()
52895 }
52896 Self::RevokeSponsorshipResult => gen.into_root_schema_for::<RevokeSponsorshipResult>(),
52897 Self::ClawbackResultCode => gen.into_root_schema_for::<ClawbackResultCode>(),
52898 Self::ClawbackResult => gen.into_root_schema_for::<ClawbackResult>(),
52899 Self::ClawbackClaimableBalanceResultCode => {
52900 gen.into_root_schema_for::<ClawbackClaimableBalanceResultCode>()
52901 }
52902 Self::ClawbackClaimableBalanceResult => {
52903 gen.into_root_schema_for::<ClawbackClaimableBalanceResult>()
52904 }
52905 Self::SetTrustLineFlagsResultCode => {
52906 gen.into_root_schema_for::<SetTrustLineFlagsResultCode>()
52907 }
52908 Self::SetTrustLineFlagsResult => gen.into_root_schema_for::<SetTrustLineFlagsResult>(),
52909 Self::LiquidityPoolDepositResultCode => {
52910 gen.into_root_schema_for::<LiquidityPoolDepositResultCode>()
52911 }
52912 Self::LiquidityPoolDepositResult => {
52913 gen.into_root_schema_for::<LiquidityPoolDepositResult>()
52914 }
52915 Self::LiquidityPoolWithdrawResultCode => {
52916 gen.into_root_schema_for::<LiquidityPoolWithdrawResultCode>()
52917 }
52918 Self::LiquidityPoolWithdrawResult => {
52919 gen.into_root_schema_for::<LiquidityPoolWithdrawResult>()
52920 }
52921 Self::InvokeHostFunctionResultCode => {
52922 gen.into_root_schema_for::<InvokeHostFunctionResultCode>()
52923 }
52924 Self::InvokeHostFunctionResult => {
52925 gen.into_root_schema_for::<InvokeHostFunctionResult>()
52926 }
52927 Self::ExtendFootprintTtlResultCode => {
52928 gen.into_root_schema_for::<ExtendFootprintTtlResultCode>()
52929 }
52930 Self::ExtendFootprintTtlResult => {
52931 gen.into_root_schema_for::<ExtendFootprintTtlResult>()
52932 }
52933 Self::RestoreFootprintResultCode => {
52934 gen.into_root_schema_for::<RestoreFootprintResultCode>()
52935 }
52936 Self::RestoreFootprintResult => gen.into_root_schema_for::<RestoreFootprintResult>(),
52937 Self::OperationResultCode => gen.into_root_schema_for::<OperationResultCode>(),
52938 Self::OperationResult => gen.into_root_schema_for::<OperationResult>(),
52939 Self::OperationResultTr => gen.into_root_schema_for::<OperationResultTr>(),
52940 Self::TransactionResultCode => gen.into_root_schema_for::<TransactionResultCode>(),
52941 Self::InnerTransactionResult => gen.into_root_schema_for::<InnerTransactionResult>(),
52942 Self::InnerTransactionResultResult => {
52943 gen.into_root_schema_for::<InnerTransactionResultResult>()
52944 }
52945 Self::InnerTransactionResultExt => {
52946 gen.into_root_schema_for::<InnerTransactionResultExt>()
52947 }
52948 Self::InnerTransactionResultPair => {
52949 gen.into_root_schema_for::<InnerTransactionResultPair>()
52950 }
52951 Self::TransactionResult => gen.into_root_schema_for::<TransactionResult>(),
52952 Self::TransactionResultResult => gen.into_root_schema_for::<TransactionResultResult>(),
52953 Self::TransactionResultExt => gen.into_root_schema_for::<TransactionResultExt>(),
52954 Self::Hash => gen.into_root_schema_for::<Hash>(),
52955 Self::Uint256 => gen.into_root_schema_for::<Uint256>(),
52956 Self::Uint32 => gen.into_root_schema_for::<Uint32>(),
52957 Self::Int32 => gen.into_root_schema_for::<Int32>(),
52958 Self::Uint64 => gen.into_root_schema_for::<Uint64>(),
52959 Self::Int64 => gen.into_root_schema_for::<Int64>(),
52960 Self::TimePoint => gen.into_root_schema_for::<TimePoint>(),
52961 Self::Duration => gen.into_root_schema_for::<Duration>(),
52962 Self::ExtensionPoint => gen.into_root_schema_for::<ExtensionPoint>(),
52963 Self::CryptoKeyType => gen.into_root_schema_for::<CryptoKeyType>(),
52964 Self::PublicKeyType => gen.into_root_schema_for::<PublicKeyType>(),
52965 Self::SignerKeyType => gen.into_root_schema_for::<SignerKeyType>(),
52966 Self::PublicKey => gen.into_root_schema_for::<PublicKey>(),
52967 Self::SignerKey => gen.into_root_schema_for::<SignerKey>(),
52968 Self::SignerKeyEd25519SignedPayload => {
52969 gen.into_root_schema_for::<SignerKeyEd25519SignedPayload>()
52970 }
52971 Self::Signature => gen.into_root_schema_for::<Signature>(),
52972 Self::SignatureHint => gen.into_root_schema_for::<SignatureHint>(),
52973 Self::NodeId => gen.into_root_schema_for::<NodeId>(),
52974 Self::AccountId => gen.into_root_schema_for::<AccountId>(),
52975 Self::ContractId => gen.into_root_schema_for::<ContractId>(),
52976 Self::Curve25519Secret => gen.into_root_schema_for::<Curve25519Secret>(),
52977 Self::Curve25519Public => gen.into_root_schema_for::<Curve25519Public>(),
52978 Self::HmacSha256Key => gen.into_root_schema_for::<HmacSha256Key>(),
52979 Self::HmacSha256Mac => gen.into_root_schema_for::<HmacSha256Mac>(),
52980 Self::ShortHashSeed => gen.into_root_schema_for::<ShortHashSeed>(),
52981 Self::BinaryFuseFilterType => gen.into_root_schema_for::<BinaryFuseFilterType>(),
52982 Self::SerializedBinaryFuseFilter => {
52983 gen.into_root_schema_for::<SerializedBinaryFuseFilter>()
52984 }
52985 Self::PoolId => gen.into_root_schema_for::<PoolId>(),
52986 Self::ClaimableBalanceIdType => gen.into_root_schema_for::<ClaimableBalanceIdType>(),
52987 Self::ClaimableBalanceId => gen.into_root_schema_for::<ClaimableBalanceId>(),
52988 }
52989 }
52990}
52991
52992impl Name for TypeVariant {
52993 #[must_use]
52994 fn name(&self) -> &'static str {
52995 Self::name(self)
52996 }
52997}
52998
52999impl Variants<TypeVariant> for TypeVariant {
53000 fn variants() -> slice::Iter<'static, TypeVariant> {
53001 Self::VARIANTS.iter()
53002 }
53003}
53004
53005impl core::str::FromStr for TypeVariant {
53006 type Err = Error;
53007 #[allow(clippy::too_many_lines)]
53008 fn from_str(s: &str) -> Result<Self, Error> {
53009 match s {
53010 "Value" => Ok(Self::Value),
53011 "ScpBallot" => Ok(Self::ScpBallot),
53012 "ScpStatementType" => Ok(Self::ScpStatementType),
53013 "ScpNomination" => Ok(Self::ScpNomination),
53014 "ScpStatement" => Ok(Self::ScpStatement),
53015 "ScpStatementPledges" => Ok(Self::ScpStatementPledges),
53016 "ScpStatementPrepare" => Ok(Self::ScpStatementPrepare),
53017 "ScpStatementConfirm" => Ok(Self::ScpStatementConfirm),
53018 "ScpStatementExternalize" => Ok(Self::ScpStatementExternalize),
53019 "ScpEnvelope" => Ok(Self::ScpEnvelope),
53020 "ScpQuorumSet" => Ok(Self::ScpQuorumSet),
53021 "ConfigSettingContractExecutionLanesV0" => {
53022 Ok(Self::ConfigSettingContractExecutionLanesV0)
53023 }
53024 "ConfigSettingContractComputeV0" => Ok(Self::ConfigSettingContractComputeV0),
53025 "ConfigSettingContractParallelComputeV0" => {
53026 Ok(Self::ConfigSettingContractParallelComputeV0)
53027 }
53028 "ConfigSettingContractLedgerCostV0" => Ok(Self::ConfigSettingContractLedgerCostV0),
53029 "ConfigSettingContractLedgerCostExtV0" => {
53030 Ok(Self::ConfigSettingContractLedgerCostExtV0)
53031 }
53032 "ConfigSettingContractHistoricalDataV0" => {
53033 Ok(Self::ConfigSettingContractHistoricalDataV0)
53034 }
53035 "ConfigSettingContractEventsV0" => Ok(Self::ConfigSettingContractEventsV0),
53036 "ConfigSettingContractBandwidthV0" => Ok(Self::ConfigSettingContractBandwidthV0),
53037 "ContractCostType" => Ok(Self::ContractCostType),
53038 "ContractCostParamEntry" => Ok(Self::ContractCostParamEntry),
53039 "StateArchivalSettings" => Ok(Self::StateArchivalSettings),
53040 "EvictionIterator" => Ok(Self::EvictionIterator),
53041 "ConfigSettingScpTiming" => Ok(Self::ConfigSettingScpTiming),
53042 "ContractCostParams" => Ok(Self::ContractCostParams),
53043 "ConfigSettingId" => Ok(Self::ConfigSettingId),
53044 "ConfigSettingEntry" => Ok(Self::ConfigSettingEntry),
53045 "ScEnvMetaKind" => Ok(Self::ScEnvMetaKind),
53046 "ScEnvMetaEntry" => Ok(Self::ScEnvMetaEntry),
53047 "ScEnvMetaEntryInterfaceVersion" => Ok(Self::ScEnvMetaEntryInterfaceVersion),
53048 "ScMetaV0" => Ok(Self::ScMetaV0),
53049 "ScMetaKind" => Ok(Self::ScMetaKind),
53050 "ScMetaEntry" => Ok(Self::ScMetaEntry),
53051 "ScSpecType" => Ok(Self::ScSpecType),
53052 "ScSpecTypeOption" => Ok(Self::ScSpecTypeOption),
53053 "ScSpecTypeResult" => Ok(Self::ScSpecTypeResult),
53054 "ScSpecTypeVec" => Ok(Self::ScSpecTypeVec),
53055 "ScSpecTypeMap" => Ok(Self::ScSpecTypeMap),
53056 "ScSpecTypeTuple" => Ok(Self::ScSpecTypeTuple),
53057 "ScSpecTypeBytesN" => Ok(Self::ScSpecTypeBytesN),
53058 "ScSpecTypeUdt" => Ok(Self::ScSpecTypeUdt),
53059 "ScSpecTypeDef" => Ok(Self::ScSpecTypeDef),
53060 "ScSpecUdtStructFieldV0" => Ok(Self::ScSpecUdtStructFieldV0),
53061 "ScSpecUdtStructV0" => Ok(Self::ScSpecUdtStructV0),
53062 "ScSpecUdtUnionCaseVoidV0" => Ok(Self::ScSpecUdtUnionCaseVoidV0),
53063 "ScSpecUdtUnionCaseTupleV0" => Ok(Self::ScSpecUdtUnionCaseTupleV0),
53064 "ScSpecUdtUnionCaseV0Kind" => Ok(Self::ScSpecUdtUnionCaseV0Kind),
53065 "ScSpecUdtUnionCaseV0" => Ok(Self::ScSpecUdtUnionCaseV0),
53066 "ScSpecUdtUnionV0" => Ok(Self::ScSpecUdtUnionV0),
53067 "ScSpecUdtEnumCaseV0" => Ok(Self::ScSpecUdtEnumCaseV0),
53068 "ScSpecUdtEnumV0" => Ok(Self::ScSpecUdtEnumV0),
53069 "ScSpecUdtErrorEnumCaseV0" => Ok(Self::ScSpecUdtErrorEnumCaseV0),
53070 "ScSpecUdtErrorEnumV0" => Ok(Self::ScSpecUdtErrorEnumV0),
53071 "ScSpecFunctionInputV0" => Ok(Self::ScSpecFunctionInputV0),
53072 "ScSpecFunctionV0" => Ok(Self::ScSpecFunctionV0),
53073 "ScSpecEventParamLocationV0" => Ok(Self::ScSpecEventParamLocationV0),
53074 "ScSpecEventParamV0" => Ok(Self::ScSpecEventParamV0),
53075 "ScSpecEventDataFormat" => Ok(Self::ScSpecEventDataFormat),
53076 "ScSpecEventV0" => Ok(Self::ScSpecEventV0),
53077 "ScSpecEntryKind" => Ok(Self::ScSpecEntryKind),
53078 "ScSpecEntry" => Ok(Self::ScSpecEntry),
53079 "ScValType" => Ok(Self::ScValType),
53080 "ScErrorType" => Ok(Self::ScErrorType),
53081 "ScErrorCode" => Ok(Self::ScErrorCode),
53082 "ScError" => Ok(Self::ScError),
53083 "UInt128Parts" => Ok(Self::UInt128Parts),
53084 "Int128Parts" => Ok(Self::Int128Parts),
53085 "UInt256Parts" => Ok(Self::UInt256Parts),
53086 "Int256Parts" => Ok(Self::Int256Parts),
53087 "ContractExecutableType" => Ok(Self::ContractExecutableType),
53088 "ContractExecutable" => Ok(Self::ContractExecutable),
53089 "ScAddressType" => Ok(Self::ScAddressType),
53090 "MuxedEd25519Account" => Ok(Self::MuxedEd25519Account),
53091 "ScAddress" => Ok(Self::ScAddress),
53092 "ScVec" => Ok(Self::ScVec),
53093 "ScMap" => Ok(Self::ScMap),
53094 "ScBytes" => Ok(Self::ScBytes),
53095 "ScString" => Ok(Self::ScString),
53096 "ScSymbol" => Ok(Self::ScSymbol),
53097 "ScNonceKey" => Ok(Self::ScNonceKey),
53098 "ScContractInstance" => Ok(Self::ScContractInstance),
53099 "ScVal" => Ok(Self::ScVal),
53100 "ScMapEntry" => Ok(Self::ScMapEntry),
53101 "LedgerCloseMetaBatch" => Ok(Self::LedgerCloseMetaBatch),
53102 "StoredTransactionSet" => Ok(Self::StoredTransactionSet),
53103 "StoredDebugTransactionSet" => Ok(Self::StoredDebugTransactionSet),
53104 "PersistedScpStateV0" => Ok(Self::PersistedScpStateV0),
53105 "PersistedScpStateV1" => Ok(Self::PersistedScpStateV1),
53106 "PersistedScpState" => Ok(Self::PersistedScpState),
53107 "Thresholds" => Ok(Self::Thresholds),
53108 "String32" => Ok(Self::String32),
53109 "String64" => Ok(Self::String64),
53110 "SequenceNumber" => Ok(Self::SequenceNumber),
53111 "DataValue" => Ok(Self::DataValue),
53112 "AssetCode4" => Ok(Self::AssetCode4),
53113 "AssetCode12" => Ok(Self::AssetCode12),
53114 "AssetType" => Ok(Self::AssetType),
53115 "AssetCode" => Ok(Self::AssetCode),
53116 "AlphaNum4" => Ok(Self::AlphaNum4),
53117 "AlphaNum12" => Ok(Self::AlphaNum12),
53118 "Asset" => Ok(Self::Asset),
53119 "Price" => Ok(Self::Price),
53120 "Liabilities" => Ok(Self::Liabilities),
53121 "ThresholdIndexes" => Ok(Self::ThresholdIndexes),
53122 "LedgerEntryType" => Ok(Self::LedgerEntryType),
53123 "Signer" => Ok(Self::Signer),
53124 "AccountFlags" => Ok(Self::AccountFlags),
53125 "SponsorshipDescriptor" => Ok(Self::SponsorshipDescriptor),
53126 "AccountEntryExtensionV3" => Ok(Self::AccountEntryExtensionV3),
53127 "AccountEntryExtensionV2" => Ok(Self::AccountEntryExtensionV2),
53128 "AccountEntryExtensionV2Ext" => Ok(Self::AccountEntryExtensionV2Ext),
53129 "AccountEntryExtensionV1" => Ok(Self::AccountEntryExtensionV1),
53130 "AccountEntryExtensionV1Ext" => Ok(Self::AccountEntryExtensionV1Ext),
53131 "AccountEntry" => Ok(Self::AccountEntry),
53132 "AccountEntryExt" => Ok(Self::AccountEntryExt),
53133 "TrustLineFlags" => Ok(Self::TrustLineFlags),
53134 "LiquidityPoolType" => Ok(Self::LiquidityPoolType),
53135 "TrustLineAsset" => Ok(Self::TrustLineAsset),
53136 "TrustLineEntryExtensionV2" => Ok(Self::TrustLineEntryExtensionV2),
53137 "TrustLineEntryExtensionV2Ext" => Ok(Self::TrustLineEntryExtensionV2Ext),
53138 "TrustLineEntry" => Ok(Self::TrustLineEntry),
53139 "TrustLineEntryExt" => Ok(Self::TrustLineEntryExt),
53140 "TrustLineEntryV1" => Ok(Self::TrustLineEntryV1),
53141 "TrustLineEntryV1Ext" => Ok(Self::TrustLineEntryV1Ext),
53142 "OfferEntryFlags" => Ok(Self::OfferEntryFlags),
53143 "OfferEntry" => Ok(Self::OfferEntry),
53144 "OfferEntryExt" => Ok(Self::OfferEntryExt),
53145 "DataEntry" => Ok(Self::DataEntry),
53146 "DataEntryExt" => Ok(Self::DataEntryExt),
53147 "ClaimPredicateType" => Ok(Self::ClaimPredicateType),
53148 "ClaimPredicate" => Ok(Self::ClaimPredicate),
53149 "ClaimantType" => Ok(Self::ClaimantType),
53150 "Claimant" => Ok(Self::Claimant),
53151 "ClaimantV0" => Ok(Self::ClaimantV0),
53152 "ClaimableBalanceFlags" => Ok(Self::ClaimableBalanceFlags),
53153 "ClaimableBalanceEntryExtensionV1" => Ok(Self::ClaimableBalanceEntryExtensionV1),
53154 "ClaimableBalanceEntryExtensionV1Ext" => Ok(Self::ClaimableBalanceEntryExtensionV1Ext),
53155 "ClaimableBalanceEntry" => Ok(Self::ClaimableBalanceEntry),
53156 "ClaimableBalanceEntryExt" => Ok(Self::ClaimableBalanceEntryExt),
53157 "LiquidityPoolConstantProductParameters" => {
53158 Ok(Self::LiquidityPoolConstantProductParameters)
53159 }
53160 "LiquidityPoolEntry" => Ok(Self::LiquidityPoolEntry),
53161 "LiquidityPoolEntryBody" => Ok(Self::LiquidityPoolEntryBody),
53162 "LiquidityPoolEntryConstantProduct" => Ok(Self::LiquidityPoolEntryConstantProduct),
53163 "ContractDataDurability" => Ok(Self::ContractDataDurability),
53164 "ContractDataEntry" => Ok(Self::ContractDataEntry),
53165 "ContractCodeCostInputs" => Ok(Self::ContractCodeCostInputs),
53166 "ContractCodeEntry" => Ok(Self::ContractCodeEntry),
53167 "ContractCodeEntryExt" => Ok(Self::ContractCodeEntryExt),
53168 "ContractCodeEntryV1" => Ok(Self::ContractCodeEntryV1),
53169 "TtlEntry" => Ok(Self::TtlEntry),
53170 "LedgerEntryExtensionV1" => Ok(Self::LedgerEntryExtensionV1),
53171 "LedgerEntryExtensionV1Ext" => Ok(Self::LedgerEntryExtensionV1Ext),
53172 "LedgerEntry" => Ok(Self::LedgerEntry),
53173 "LedgerEntryData" => Ok(Self::LedgerEntryData),
53174 "LedgerEntryExt" => Ok(Self::LedgerEntryExt),
53175 "LedgerKey" => Ok(Self::LedgerKey),
53176 "LedgerKeyAccount" => Ok(Self::LedgerKeyAccount),
53177 "LedgerKeyTrustLine" => Ok(Self::LedgerKeyTrustLine),
53178 "LedgerKeyOffer" => Ok(Self::LedgerKeyOffer),
53179 "LedgerKeyData" => Ok(Self::LedgerKeyData),
53180 "LedgerKeyClaimableBalance" => Ok(Self::LedgerKeyClaimableBalance),
53181 "LedgerKeyLiquidityPool" => Ok(Self::LedgerKeyLiquidityPool),
53182 "LedgerKeyContractData" => Ok(Self::LedgerKeyContractData),
53183 "LedgerKeyContractCode" => Ok(Self::LedgerKeyContractCode),
53184 "LedgerKeyConfigSetting" => Ok(Self::LedgerKeyConfigSetting),
53185 "LedgerKeyTtl" => Ok(Self::LedgerKeyTtl),
53186 "EnvelopeType" => Ok(Self::EnvelopeType),
53187 "BucketListType" => Ok(Self::BucketListType),
53188 "BucketEntryType" => Ok(Self::BucketEntryType),
53189 "HotArchiveBucketEntryType" => Ok(Self::HotArchiveBucketEntryType),
53190 "BucketMetadata" => Ok(Self::BucketMetadata),
53191 "BucketMetadataExt" => Ok(Self::BucketMetadataExt),
53192 "BucketEntry" => Ok(Self::BucketEntry),
53193 "HotArchiveBucketEntry" => Ok(Self::HotArchiveBucketEntry),
53194 "UpgradeType" => Ok(Self::UpgradeType),
53195 "StellarValueType" => Ok(Self::StellarValueType),
53196 "LedgerCloseValueSignature" => Ok(Self::LedgerCloseValueSignature),
53197 "StellarValue" => Ok(Self::StellarValue),
53198 "StellarValueExt" => Ok(Self::StellarValueExt),
53199 "LedgerHeaderFlags" => Ok(Self::LedgerHeaderFlags),
53200 "LedgerHeaderExtensionV1" => Ok(Self::LedgerHeaderExtensionV1),
53201 "LedgerHeaderExtensionV1Ext" => Ok(Self::LedgerHeaderExtensionV1Ext),
53202 "LedgerHeader" => Ok(Self::LedgerHeader),
53203 "LedgerHeaderExt" => Ok(Self::LedgerHeaderExt),
53204 "LedgerUpgradeType" => Ok(Self::LedgerUpgradeType),
53205 "ConfigUpgradeSetKey" => Ok(Self::ConfigUpgradeSetKey),
53206 "LedgerUpgrade" => Ok(Self::LedgerUpgrade),
53207 "ConfigUpgradeSet" => Ok(Self::ConfigUpgradeSet),
53208 "TxSetComponentType" => Ok(Self::TxSetComponentType),
53209 "DependentTxCluster" => Ok(Self::DependentTxCluster),
53210 "ParallelTxExecutionStage" => Ok(Self::ParallelTxExecutionStage),
53211 "ParallelTxsComponent" => Ok(Self::ParallelTxsComponent),
53212 "TxSetComponent" => Ok(Self::TxSetComponent),
53213 "TxSetComponentTxsMaybeDiscountedFee" => Ok(Self::TxSetComponentTxsMaybeDiscountedFee),
53214 "TransactionPhase" => Ok(Self::TransactionPhase),
53215 "TransactionSet" => Ok(Self::TransactionSet),
53216 "TransactionSetV1" => Ok(Self::TransactionSetV1),
53217 "GeneralizedTransactionSet" => Ok(Self::GeneralizedTransactionSet),
53218 "TransactionResultPair" => Ok(Self::TransactionResultPair),
53219 "TransactionResultSet" => Ok(Self::TransactionResultSet),
53220 "TransactionHistoryEntry" => Ok(Self::TransactionHistoryEntry),
53221 "TransactionHistoryEntryExt" => Ok(Self::TransactionHistoryEntryExt),
53222 "TransactionHistoryResultEntry" => Ok(Self::TransactionHistoryResultEntry),
53223 "TransactionHistoryResultEntryExt" => Ok(Self::TransactionHistoryResultEntryExt),
53224 "LedgerHeaderHistoryEntry" => Ok(Self::LedgerHeaderHistoryEntry),
53225 "LedgerHeaderHistoryEntryExt" => Ok(Self::LedgerHeaderHistoryEntryExt),
53226 "LedgerScpMessages" => Ok(Self::LedgerScpMessages),
53227 "ScpHistoryEntryV0" => Ok(Self::ScpHistoryEntryV0),
53228 "ScpHistoryEntry" => Ok(Self::ScpHistoryEntry),
53229 "LedgerEntryChangeType" => Ok(Self::LedgerEntryChangeType),
53230 "LedgerEntryChange" => Ok(Self::LedgerEntryChange),
53231 "LedgerEntryChanges" => Ok(Self::LedgerEntryChanges),
53232 "OperationMeta" => Ok(Self::OperationMeta),
53233 "TransactionMetaV1" => Ok(Self::TransactionMetaV1),
53234 "TransactionMetaV2" => Ok(Self::TransactionMetaV2),
53235 "ContractEventType" => Ok(Self::ContractEventType),
53236 "ContractEvent" => Ok(Self::ContractEvent),
53237 "ContractEventBody" => Ok(Self::ContractEventBody),
53238 "ContractEventV0" => Ok(Self::ContractEventV0),
53239 "DiagnosticEvent" => Ok(Self::DiagnosticEvent),
53240 "SorobanTransactionMetaExtV1" => Ok(Self::SorobanTransactionMetaExtV1),
53241 "SorobanTransactionMetaExt" => Ok(Self::SorobanTransactionMetaExt),
53242 "SorobanTransactionMeta" => Ok(Self::SorobanTransactionMeta),
53243 "TransactionMetaV3" => Ok(Self::TransactionMetaV3),
53244 "OperationMetaV2" => Ok(Self::OperationMetaV2),
53245 "SorobanTransactionMetaV2" => Ok(Self::SorobanTransactionMetaV2),
53246 "TransactionEventStage" => Ok(Self::TransactionEventStage),
53247 "TransactionEvent" => Ok(Self::TransactionEvent),
53248 "TransactionMetaV4" => Ok(Self::TransactionMetaV4),
53249 "InvokeHostFunctionSuccessPreImage" => Ok(Self::InvokeHostFunctionSuccessPreImage),
53250 "TransactionMeta" => Ok(Self::TransactionMeta),
53251 "TransactionResultMeta" => Ok(Self::TransactionResultMeta),
53252 "TransactionResultMetaV1" => Ok(Self::TransactionResultMetaV1),
53253 "UpgradeEntryMeta" => Ok(Self::UpgradeEntryMeta),
53254 "LedgerCloseMetaV0" => Ok(Self::LedgerCloseMetaV0),
53255 "LedgerCloseMetaExtV1" => Ok(Self::LedgerCloseMetaExtV1),
53256 "LedgerCloseMetaExt" => Ok(Self::LedgerCloseMetaExt),
53257 "LedgerCloseMetaV1" => Ok(Self::LedgerCloseMetaV1),
53258 "LedgerCloseMetaV2" => Ok(Self::LedgerCloseMetaV2),
53259 "LedgerCloseMeta" => Ok(Self::LedgerCloseMeta),
53260 "ErrorCode" => Ok(Self::ErrorCode),
53261 "SError" => Ok(Self::SError),
53262 "SendMore" => Ok(Self::SendMore),
53263 "SendMoreExtended" => Ok(Self::SendMoreExtended),
53264 "AuthCert" => Ok(Self::AuthCert),
53265 "Hello" => Ok(Self::Hello),
53266 "Auth" => Ok(Self::Auth),
53267 "IpAddrType" => Ok(Self::IpAddrType),
53268 "PeerAddress" => Ok(Self::PeerAddress),
53269 "PeerAddressIp" => Ok(Self::PeerAddressIp),
53270 "MessageType" => Ok(Self::MessageType),
53271 "DontHave" => Ok(Self::DontHave),
53272 "SurveyMessageCommandType" => Ok(Self::SurveyMessageCommandType),
53273 "SurveyMessageResponseType" => Ok(Self::SurveyMessageResponseType),
53274 "TimeSlicedSurveyStartCollectingMessage" => {
53275 Ok(Self::TimeSlicedSurveyStartCollectingMessage)
53276 }
53277 "SignedTimeSlicedSurveyStartCollectingMessage" => {
53278 Ok(Self::SignedTimeSlicedSurveyStartCollectingMessage)
53279 }
53280 "TimeSlicedSurveyStopCollectingMessage" => {
53281 Ok(Self::TimeSlicedSurveyStopCollectingMessage)
53282 }
53283 "SignedTimeSlicedSurveyStopCollectingMessage" => {
53284 Ok(Self::SignedTimeSlicedSurveyStopCollectingMessage)
53285 }
53286 "SurveyRequestMessage" => Ok(Self::SurveyRequestMessage),
53287 "TimeSlicedSurveyRequestMessage" => Ok(Self::TimeSlicedSurveyRequestMessage),
53288 "SignedTimeSlicedSurveyRequestMessage" => {
53289 Ok(Self::SignedTimeSlicedSurveyRequestMessage)
53290 }
53291 "EncryptedBody" => Ok(Self::EncryptedBody),
53292 "SurveyResponseMessage" => Ok(Self::SurveyResponseMessage),
53293 "TimeSlicedSurveyResponseMessage" => Ok(Self::TimeSlicedSurveyResponseMessage),
53294 "SignedTimeSlicedSurveyResponseMessage" => {
53295 Ok(Self::SignedTimeSlicedSurveyResponseMessage)
53296 }
53297 "PeerStats" => Ok(Self::PeerStats),
53298 "TimeSlicedNodeData" => Ok(Self::TimeSlicedNodeData),
53299 "TimeSlicedPeerData" => Ok(Self::TimeSlicedPeerData),
53300 "TimeSlicedPeerDataList" => Ok(Self::TimeSlicedPeerDataList),
53301 "TopologyResponseBodyV2" => Ok(Self::TopologyResponseBodyV2),
53302 "SurveyResponseBody" => Ok(Self::SurveyResponseBody),
53303 "TxAdvertVector" => Ok(Self::TxAdvertVector),
53304 "FloodAdvert" => Ok(Self::FloodAdvert),
53305 "TxDemandVector" => Ok(Self::TxDemandVector),
53306 "FloodDemand" => Ok(Self::FloodDemand),
53307 "StellarMessage" => Ok(Self::StellarMessage),
53308 "AuthenticatedMessage" => Ok(Self::AuthenticatedMessage),
53309 "AuthenticatedMessageV0" => Ok(Self::AuthenticatedMessageV0),
53310 "LiquidityPoolParameters" => Ok(Self::LiquidityPoolParameters),
53311 "MuxedAccount" => Ok(Self::MuxedAccount),
53312 "MuxedAccountMed25519" => Ok(Self::MuxedAccountMed25519),
53313 "DecoratedSignature" => Ok(Self::DecoratedSignature),
53314 "OperationType" => Ok(Self::OperationType),
53315 "CreateAccountOp" => Ok(Self::CreateAccountOp),
53316 "PaymentOp" => Ok(Self::PaymentOp),
53317 "PathPaymentStrictReceiveOp" => Ok(Self::PathPaymentStrictReceiveOp),
53318 "PathPaymentStrictSendOp" => Ok(Self::PathPaymentStrictSendOp),
53319 "ManageSellOfferOp" => Ok(Self::ManageSellOfferOp),
53320 "ManageBuyOfferOp" => Ok(Self::ManageBuyOfferOp),
53321 "CreatePassiveSellOfferOp" => Ok(Self::CreatePassiveSellOfferOp),
53322 "SetOptionsOp" => Ok(Self::SetOptionsOp),
53323 "ChangeTrustAsset" => Ok(Self::ChangeTrustAsset),
53324 "ChangeTrustOp" => Ok(Self::ChangeTrustOp),
53325 "AllowTrustOp" => Ok(Self::AllowTrustOp),
53326 "ManageDataOp" => Ok(Self::ManageDataOp),
53327 "BumpSequenceOp" => Ok(Self::BumpSequenceOp),
53328 "CreateClaimableBalanceOp" => Ok(Self::CreateClaimableBalanceOp),
53329 "ClaimClaimableBalanceOp" => Ok(Self::ClaimClaimableBalanceOp),
53330 "BeginSponsoringFutureReservesOp" => Ok(Self::BeginSponsoringFutureReservesOp),
53331 "RevokeSponsorshipType" => Ok(Self::RevokeSponsorshipType),
53332 "RevokeSponsorshipOp" => Ok(Self::RevokeSponsorshipOp),
53333 "RevokeSponsorshipOpSigner" => Ok(Self::RevokeSponsorshipOpSigner),
53334 "ClawbackOp" => Ok(Self::ClawbackOp),
53335 "ClawbackClaimableBalanceOp" => Ok(Self::ClawbackClaimableBalanceOp),
53336 "SetTrustLineFlagsOp" => Ok(Self::SetTrustLineFlagsOp),
53337 "LiquidityPoolDepositOp" => Ok(Self::LiquidityPoolDepositOp),
53338 "LiquidityPoolWithdrawOp" => Ok(Self::LiquidityPoolWithdrawOp),
53339 "HostFunctionType" => Ok(Self::HostFunctionType),
53340 "ContractIdPreimageType" => Ok(Self::ContractIdPreimageType),
53341 "ContractIdPreimage" => Ok(Self::ContractIdPreimage),
53342 "ContractIdPreimageFromAddress" => Ok(Self::ContractIdPreimageFromAddress),
53343 "CreateContractArgs" => Ok(Self::CreateContractArgs),
53344 "CreateContractArgsV2" => Ok(Self::CreateContractArgsV2),
53345 "InvokeContractArgs" => Ok(Self::InvokeContractArgs),
53346 "HostFunction" => Ok(Self::HostFunction),
53347 "SorobanAuthorizedFunctionType" => Ok(Self::SorobanAuthorizedFunctionType),
53348 "SorobanAuthorizedFunction" => Ok(Self::SorobanAuthorizedFunction),
53349 "SorobanAuthorizedInvocation" => Ok(Self::SorobanAuthorizedInvocation),
53350 "SorobanAddressCredentials" => Ok(Self::SorobanAddressCredentials),
53351 "SorobanCredentialsType" => Ok(Self::SorobanCredentialsType),
53352 "SorobanCredentials" => Ok(Self::SorobanCredentials),
53353 "SorobanAuthorizationEntry" => Ok(Self::SorobanAuthorizationEntry),
53354 "SorobanAuthorizationEntries" => Ok(Self::SorobanAuthorizationEntries),
53355 "InvokeHostFunctionOp" => Ok(Self::InvokeHostFunctionOp),
53356 "ExtendFootprintTtlOp" => Ok(Self::ExtendFootprintTtlOp),
53357 "RestoreFootprintOp" => Ok(Self::RestoreFootprintOp),
53358 "Operation" => Ok(Self::Operation),
53359 "OperationBody" => Ok(Self::OperationBody),
53360 "HashIdPreimage" => Ok(Self::HashIdPreimage),
53361 "HashIdPreimageOperationId" => Ok(Self::HashIdPreimageOperationId),
53362 "HashIdPreimageRevokeId" => Ok(Self::HashIdPreimageRevokeId),
53363 "HashIdPreimageContractId" => Ok(Self::HashIdPreimageContractId),
53364 "HashIdPreimageSorobanAuthorization" => Ok(Self::HashIdPreimageSorobanAuthorization),
53365 "MemoType" => Ok(Self::MemoType),
53366 "Memo" => Ok(Self::Memo),
53367 "TimeBounds" => Ok(Self::TimeBounds),
53368 "LedgerBounds" => Ok(Self::LedgerBounds),
53369 "PreconditionsV2" => Ok(Self::PreconditionsV2),
53370 "PreconditionType" => Ok(Self::PreconditionType),
53371 "Preconditions" => Ok(Self::Preconditions),
53372 "LedgerFootprint" => Ok(Self::LedgerFootprint),
53373 "SorobanResources" => Ok(Self::SorobanResources),
53374 "SorobanResourcesExtV0" => Ok(Self::SorobanResourcesExtV0),
53375 "SorobanTransactionData" => Ok(Self::SorobanTransactionData),
53376 "SorobanTransactionDataExt" => Ok(Self::SorobanTransactionDataExt),
53377 "TransactionV0" => Ok(Self::TransactionV0),
53378 "TransactionV0Ext" => Ok(Self::TransactionV0Ext),
53379 "TransactionV0Envelope" => Ok(Self::TransactionV0Envelope),
53380 "Transaction" => Ok(Self::Transaction),
53381 "TransactionExt" => Ok(Self::TransactionExt),
53382 "TransactionV1Envelope" => Ok(Self::TransactionV1Envelope),
53383 "FeeBumpTransaction" => Ok(Self::FeeBumpTransaction),
53384 "FeeBumpTransactionInnerTx" => Ok(Self::FeeBumpTransactionInnerTx),
53385 "FeeBumpTransactionExt" => Ok(Self::FeeBumpTransactionExt),
53386 "FeeBumpTransactionEnvelope" => Ok(Self::FeeBumpTransactionEnvelope),
53387 "TransactionEnvelope" => Ok(Self::TransactionEnvelope),
53388 "TransactionSignaturePayload" => Ok(Self::TransactionSignaturePayload),
53389 "TransactionSignaturePayloadTaggedTransaction" => {
53390 Ok(Self::TransactionSignaturePayloadTaggedTransaction)
53391 }
53392 "ClaimAtomType" => Ok(Self::ClaimAtomType),
53393 "ClaimOfferAtomV0" => Ok(Self::ClaimOfferAtomV0),
53394 "ClaimOfferAtom" => Ok(Self::ClaimOfferAtom),
53395 "ClaimLiquidityAtom" => Ok(Self::ClaimLiquidityAtom),
53396 "ClaimAtom" => Ok(Self::ClaimAtom),
53397 "CreateAccountResultCode" => Ok(Self::CreateAccountResultCode),
53398 "CreateAccountResult" => Ok(Self::CreateAccountResult),
53399 "PaymentResultCode" => Ok(Self::PaymentResultCode),
53400 "PaymentResult" => Ok(Self::PaymentResult),
53401 "PathPaymentStrictReceiveResultCode" => Ok(Self::PathPaymentStrictReceiveResultCode),
53402 "SimplePaymentResult" => Ok(Self::SimplePaymentResult),
53403 "PathPaymentStrictReceiveResult" => Ok(Self::PathPaymentStrictReceiveResult),
53404 "PathPaymentStrictReceiveResultSuccess" => {
53405 Ok(Self::PathPaymentStrictReceiveResultSuccess)
53406 }
53407 "PathPaymentStrictSendResultCode" => Ok(Self::PathPaymentStrictSendResultCode),
53408 "PathPaymentStrictSendResult" => Ok(Self::PathPaymentStrictSendResult),
53409 "PathPaymentStrictSendResultSuccess" => Ok(Self::PathPaymentStrictSendResultSuccess),
53410 "ManageSellOfferResultCode" => Ok(Self::ManageSellOfferResultCode),
53411 "ManageOfferEffect" => Ok(Self::ManageOfferEffect),
53412 "ManageOfferSuccessResult" => Ok(Self::ManageOfferSuccessResult),
53413 "ManageOfferSuccessResultOffer" => Ok(Self::ManageOfferSuccessResultOffer),
53414 "ManageSellOfferResult" => Ok(Self::ManageSellOfferResult),
53415 "ManageBuyOfferResultCode" => Ok(Self::ManageBuyOfferResultCode),
53416 "ManageBuyOfferResult" => Ok(Self::ManageBuyOfferResult),
53417 "SetOptionsResultCode" => Ok(Self::SetOptionsResultCode),
53418 "SetOptionsResult" => Ok(Self::SetOptionsResult),
53419 "ChangeTrustResultCode" => Ok(Self::ChangeTrustResultCode),
53420 "ChangeTrustResult" => Ok(Self::ChangeTrustResult),
53421 "AllowTrustResultCode" => Ok(Self::AllowTrustResultCode),
53422 "AllowTrustResult" => Ok(Self::AllowTrustResult),
53423 "AccountMergeResultCode" => Ok(Self::AccountMergeResultCode),
53424 "AccountMergeResult" => Ok(Self::AccountMergeResult),
53425 "InflationResultCode" => Ok(Self::InflationResultCode),
53426 "InflationPayout" => Ok(Self::InflationPayout),
53427 "InflationResult" => Ok(Self::InflationResult),
53428 "ManageDataResultCode" => Ok(Self::ManageDataResultCode),
53429 "ManageDataResult" => Ok(Self::ManageDataResult),
53430 "BumpSequenceResultCode" => Ok(Self::BumpSequenceResultCode),
53431 "BumpSequenceResult" => Ok(Self::BumpSequenceResult),
53432 "CreateClaimableBalanceResultCode" => Ok(Self::CreateClaimableBalanceResultCode),
53433 "CreateClaimableBalanceResult" => Ok(Self::CreateClaimableBalanceResult),
53434 "ClaimClaimableBalanceResultCode" => Ok(Self::ClaimClaimableBalanceResultCode),
53435 "ClaimClaimableBalanceResult" => Ok(Self::ClaimClaimableBalanceResult),
53436 "BeginSponsoringFutureReservesResultCode" => {
53437 Ok(Self::BeginSponsoringFutureReservesResultCode)
53438 }
53439 "BeginSponsoringFutureReservesResult" => Ok(Self::BeginSponsoringFutureReservesResult),
53440 "EndSponsoringFutureReservesResultCode" => {
53441 Ok(Self::EndSponsoringFutureReservesResultCode)
53442 }
53443 "EndSponsoringFutureReservesResult" => Ok(Self::EndSponsoringFutureReservesResult),
53444 "RevokeSponsorshipResultCode" => Ok(Self::RevokeSponsorshipResultCode),
53445 "RevokeSponsorshipResult" => Ok(Self::RevokeSponsorshipResult),
53446 "ClawbackResultCode" => Ok(Self::ClawbackResultCode),
53447 "ClawbackResult" => Ok(Self::ClawbackResult),
53448 "ClawbackClaimableBalanceResultCode" => Ok(Self::ClawbackClaimableBalanceResultCode),
53449 "ClawbackClaimableBalanceResult" => Ok(Self::ClawbackClaimableBalanceResult),
53450 "SetTrustLineFlagsResultCode" => Ok(Self::SetTrustLineFlagsResultCode),
53451 "SetTrustLineFlagsResult" => Ok(Self::SetTrustLineFlagsResult),
53452 "LiquidityPoolDepositResultCode" => Ok(Self::LiquidityPoolDepositResultCode),
53453 "LiquidityPoolDepositResult" => Ok(Self::LiquidityPoolDepositResult),
53454 "LiquidityPoolWithdrawResultCode" => Ok(Self::LiquidityPoolWithdrawResultCode),
53455 "LiquidityPoolWithdrawResult" => Ok(Self::LiquidityPoolWithdrawResult),
53456 "InvokeHostFunctionResultCode" => Ok(Self::InvokeHostFunctionResultCode),
53457 "InvokeHostFunctionResult" => Ok(Self::InvokeHostFunctionResult),
53458 "ExtendFootprintTtlResultCode" => Ok(Self::ExtendFootprintTtlResultCode),
53459 "ExtendFootprintTtlResult" => Ok(Self::ExtendFootprintTtlResult),
53460 "RestoreFootprintResultCode" => Ok(Self::RestoreFootprintResultCode),
53461 "RestoreFootprintResult" => Ok(Self::RestoreFootprintResult),
53462 "OperationResultCode" => Ok(Self::OperationResultCode),
53463 "OperationResult" => Ok(Self::OperationResult),
53464 "OperationResultTr" => Ok(Self::OperationResultTr),
53465 "TransactionResultCode" => Ok(Self::TransactionResultCode),
53466 "InnerTransactionResult" => Ok(Self::InnerTransactionResult),
53467 "InnerTransactionResultResult" => Ok(Self::InnerTransactionResultResult),
53468 "InnerTransactionResultExt" => Ok(Self::InnerTransactionResultExt),
53469 "InnerTransactionResultPair" => Ok(Self::InnerTransactionResultPair),
53470 "TransactionResult" => Ok(Self::TransactionResult),
53471 "TransactionResultResult" => Ok(Self::TransactionResultResult),
53472 "TransactionResultExt" => Ok(Self::TransactionResultExt),
53473 "Hash" => Ok(Self::Hash),
53474 "Uint256" => Ok(Self::Uint256),
53475 "Uint32" => Ok(Self::Uint32),
53476 "Int32" => Ok(Self::Int32),
53477 "Uint64" => Ok(Self::Uint64),
53478 "Int64" => Ok(Self::Int64),
53479 "TimePoint" => Ok(Self::TimePoint),
53480 "Duration" => Ok(Self::Duration),
53481 "ExtensionPoint" => Ok(Self::ExtensionPoint),
53482 "CryptoKeyType" => Ok(Self::CryptoKeyType),
53483 "PublicKeyType" => Ok(Self::PublicKeyType),
53484 "SignerKeyType" => Ok(Self::SignerKeyType),
53485 "PublicKey" => Ok(Self::PublicKey),
53486 "SignerKey" => Ok(Self::SignerKey),
53487 "SignerKeyEd25519SignedPayload" => Ok(Self::SignerKeyEd25519SignedPayload),
53488 "Signature" => Ok(Self::Signature),
53489 "SignatureHint" => Ok(Self::SignatureHint),
53490 "NodeId" => Ok(Self::NodeId),
53491 "AccountId" => Ok(Self::AccountId),
53492 "ContractId" => Ok(Self::ContractId),
53493 "Curve25519Secret" => Ok(Self::Curve25519Secret),
53494 "Curve25519Public" => Ok(Self::Curve25519Public),
53495 "HmacSha256Key" => Ok(Self::HmacSha256Key),
53496 "HmacSha256Mac" => Ok(Self::HmacSha256Mac),
53497 "ShortHashSeed" => Ok(Self::ShortHashSeed),
53498 "BinaryFuseFilterType" => Ok(Self::BinaryFuseFilterType),
53499 "SerializedBinaryFuseFilter" => Ok(Self::SerializedBinaryFuseFilter),
53500 "PoolId" => Ok(Self::PoolId),
53501 "ClaimableBalanceIdType" => Ok(Self::ClaimableBalanceIdType),
53502 "ClaimableBalanceId" => Ok(Self::ClaimableBalanceId),
53503 _ => Err(Error::Invalid),
53504 }
53505 }
53506}
53507
53508#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
53509#[cfg_attr(
53510 all(feature = "serde", feature = "alloc"),
53511 derive(serde::Serialize, serde::Deserialize),
53512 serde(rename_all = "snake_case"),
53513 serde(untagged)
53514)]
53515#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
53516pub enum Type {
53517 Value(Box<Value>),
53518 ScpBallot(Box<ScpBallot>),
53519 ScpStatementType(Box<ScpStatementType>),
53520 ScpNomination(Box<ScpNomination>),
53521 ScpStatement(Box<ScpStatement>),
53522 ScpStatementPledges(Box<ScpStatementPledges>),
53523 ScpStatementPrepare(Box<ScpStatementPrepare>),
53524 ScpStatementConfirm(Box<ScpStatementConfirm>),
53525 ScpStatementExternalize(Box<ScpStatementExternalize>),
53526 ScpEnvelope(Box<ScpEnvelope>),
53527 ScpQuorumSet(Box<ScpQuorumSet>),
53528 ConfigSettingContractExecutionLanesV0(Box<ConfigSettingContractExecutionLanesV0>),
53529 ConfigSettingContractComputeV0(Box<ConfigSettingContractComputeV0>),
53530 ConfigSettingContractParallelComputeV0(Box<ConfigSettingContractParallelComputeV0>),
53531 ConfigSettingContractLedgerCostV0(Box<ConfigSettingContractLedgerCostV0>),
53532 ConfigSettingContractLedgerCostExtV0(Box<ConfigSettingContractLedgerCostExtV0>),
53533 ConfigSettingContractHistoricalDataV0(Box<ConfigSettingContractHistoricalDataV0>),
53534 ConfigSettingContractEventsV0(Box<ConfigSettingContractEventsV0>),
53535 ConfigSettingContractBandwidthV0(Box<ConfigSettingContractBandwidthV0>),
53536 ContractCostType(Box<ContractCostType>),
53537 ContractCostParamEntry(Box<ContractCostParamEntry>),
53538 StateArchivalSettings(Box<StateArchivalSettings>),
53539 EvictionIterator(Box<EvictionIterator>),
53540 ConfigSettingScpTiming(Box<ConfigSettingScpTiming>),
53541 ContractCostParams(Box<ContractCostParams>),
53542 ConfigSettingId(Box<ConfigSettingId>),
53543 ConfigSettingEntry(Box<ConfigSettingEntry>),
53544 ScEnvMetaKind(Box<ScEnvMetaKind>),
53545 ScEnvMetaEntry(Box<ScEnvMetaEntry>),
53546 ScEnvMetaEntryInterfaceVersion(Box<ScEnvMetaEntryInterfaceVersion>),
53547 ScMetaV0(Box<ScMetaV0>),
53548 ScMetaKind(Box<ScMetaKind>),
53549 ScMetaEntry(Box<ScMetaEntry>),
53550 ScSpecType(Box<ScSpecType>),
53551 ScSpecTypeOption(Box<ScSpecTypeOption>),
53552 ScSpecTypeResult(Box<ScSpecTypeResult>),
53553 ScSpecTypeVec(Box<ScSpecTypeVec>),
53554 ScSpecTypeMap(Box<ScSpecTypeMap>),
53555 ScSpecTypeTuple(Box<ScSpecTypeTuple>),
53556 ScSpecTypeBytesN(Box<ScSpecTypeBytesN>),
53557 ScSpecTypeUdt(Box<ScSpecTypeUdt>),
53558 ScSpecTypeDef(Box<ScSpecTypeDef>),
53559 ScSpecUdtStructFieldV0(Box<ScSpecUdtStructFieldV0>),
53560 ScSpecUdtStructV0(Box<ScSpecUdtStructV0>),
53561 ScSpecUdtUnionCaseVoidV0(Box<ScSpecUdtUnionCaseVoidV0>),
53562 ScSpecUdtUnionCaseTupleV0(Box<ScSpecUdtUnionCaseTupleV0>),
53563 ScSpecUdtUnionCaseV0Kind(Box<ScSpecUdtUnionCaseV0Kind>),
53564 ScSpecUdtUnionCaseV0(Box<ScSpecUdtUnionCaseV0>),
53565 ScSpecUdtUnionV0(Box<ScSpecUdtUnionV0>),
53566 ScSpecUdtEnumCaseV0(Box<ScSpecUdtEnumCaseV0>),
53567 ScSpecUdtEnumV0(Box<ScSpecUdtEnumV0>),
53568 ScSpecUdtErrorEnumCaseV0(Box<ScSpecUdtErrorEnumCaseV0>),
53569 ScSpecUdtErrorEnumV0(Box<ScSpecUdtErrorEnumV0>),
53570 ScSpecFunctionInputV0(Box<ScSpecFunctionInputV0>),
53571 ScSpecFunctionV0(Box<ScSpecFunctionV0>),
53572 ScSpecEventParamLocationV0(Box<ScSpecEventParamLocationV0>),
53573 ScSpecEventParamV0(Box<ScSpecEventParamV0>),
53574 ScSpecEventDataFormat(Box<ScSpecEventDataFormat>),
53575 ScSpecEventV0(Box<ScSpecEventV0>),
53576 ScSpecEntryKind(Box<ScSpecEntryKind>),
53577 ScSpecEntry(Box<ScSpecEntry>),
53578 ScValType(Box<ScValType>),
53579 ScErrorType(Box<ScErrorType>),
53580 ScErrorCode(Box<ScErrorCode>),
53581 ScError(Box<ScError>),
53582 UInt128Parts(Box<UInt128Parts>),
53583 Int128Parts(Box<Int128Parts>),
53584 UInt256Parts(Box<UInt256Parts>),
53585 Int256Parts(Box<Int256Parts>),
53586 ContractExecutableType(Box<ContractExecutableType>),
53587 ContractExecutable(Box<ContractExecutable>),
53588 ScAddressType(Box<ScAddressType>),
53589 MuxedEd25519Account(Box<MuxedEd25519Account>),
53590 ScAddress(Box<ScAddress>),
53591 ScVec(Box<ScVec>),
53592 ScMap(Box<ScMap>),
53593 ScBytes(Box<ScBytes>),
53594 ScString(Box<ScString>),
53595 ScSymbol(Box<ScSymbol>),
53596 ScNonceKey(Box<ScNonceKey>),
53597 ScContractInstance(Box<ScContractInstance>),
53598 ScVal(Box<ScVal>),
53599 ScMapEntry(Box<ScMapEntry>),
53600 LedgerCloseMetaBatch(Box<LedgerCloseMetaBatch>),
53601 StoredTransactionSet(Box<StoredTransactionSet>),
53602 StoredDebugTransactionSet(Box<StoredDebugTransactionSet>),
53603 PersistedScpStateV0(Box<PersistedScpStateV0>),
53604 PersistedScpStateV1(Box<PersistedScpStateV1>),
53605 PersistedScpState(Box<PersistedScpState>),
53606 Thresholds(Box<Thresholds>),
53607 String32(Box<String32>),
53608 String64(Box<String64>),
53609 SequenceNumber(Box<SequenceNumber>),
53610 DataValue(Box<DataValue>),
53611 AssetCode4(Box<AssetCode4>),
53612 AssetCode12(Box<AssetCode12>),
53613 AssetType(Box<AssetType>),
53614 AssetCode(Box<AssetCode>),
53615 AlphaNum4(Box<AlphaNum4>),
53616 AlphaNum12(Box<AlphaNum12>),
53617 Asset(Box<Asset>),
53618 Price(Box<Price>),
53619 Liabilities(Box<Liabilities>),
53620 ThresholdIndexes(Box<ThresholdIndexes>),
53621 LedgerEntryType(Box<LedgerEntryType>),
53622 Signer(Box<Signer>),
53623 AccountFlags(Box<AccountFlags>),
53624 SponsorshipDescriptor(Box<SponsorshipDescriptor>),
53625 AccountEntryExtensionV3(Box<AccountEntryExtensionV3>),
53626 AccountEntryExtensionV2(Box<AccountEntryExtensionV2>),
53627 AccountEntryExtensionV2Ext(Box<AccountEntryExtensionV2Ext>),
53628 AccountEntryExtensionV1(Box<AccountEntryExtensionV1>),
53629 AccountEntryExtensionV1Ext(Box<AccountEntryExtensionV1Ext>),
53630 AccountEntry(Box<AccountEntry>),
53631 AccountEntryExt(Box<AccountEntryExt>),
53632 TrustLineFlags(Box<TrustLineFlags>),
53633 LiquidityPoolType(Box<LiquidityPoolType>),
53634 TrustLineAsset(Box<TrustLineAsset>),
53635 TrustLineEntryExtensionV2(Box<TrustLineEntryExtensionV2>),
53636 TrustLineEntryExtensionV2Ext(Box<TrustLineEntryExtensionV2Ext>),
53637 TrustLineEntry(Box<TrustLineEntry>),
53638 TrustLineEntryExt(Box<TrustLineEntryExt>),
53639 TrustLineEntryV1(Box<TrustLineEntryV1>),
53640 TrustLineEntryV1Ext(Box<TrustLineEntryV1Ext>),
53641 OfferEntryFlags(Box<OfferEntryFlags>),
53642 OfferEntry(Box<OfferEntry>),
53643 OfferEntryExt(Box<OfferEntryExt>),
53644 DataEntry(Box<DataEntry>),
53645 DataEntryExt(Box<DataEntryExt>),
53646 ClaimPredicateType(Box<ClaimPredicateType>),
53647 ClaimPredicate(Box<ClaimPredicate>),
53648 ClaimantType(Box<ClaimantType>),
53649 Claimant(Box<Claimant>),
53650 ClaimantV0(Box<ClaimantV0>),
53651 ClaimableBalanceFlags(Box<ClaimableBalanceFlags>),
53652 ClaimableBalanceEntryExtensionV1(Box<ClaimableBalanceEntryExtensionV1>),
53653 ClaimableBalanceEntryExtensionV1Ext(Box<ClaimableBalanceEntryExtensionV1Ext>),
53654 ClaimableBalanceEntry(Box<ClaimableBalanceEntry>),
53655 ClaimableBalanceEntryExt(Box<ClaimableBalanceEntryExt>),
53656 LiquidityPoolConstantProductParameters(Box<LiquidityPoolConstantProductParameters>),
53657 LiquidityPoolEntry(Box<LiquidityPoolEntry>),
53658 LiquidityPoolEntryBody(Box<LiquidityPoolEntryBody>),
53659 LiquidityPoolEntryConstantProduct(Box<LiquidityPoolEntryConstantProduct>),
53660 ContractDataDurability(Box<ContractDataDurability>),
53661 ContractDataEntry(Box<ContractDataEntry>),
53662 ContractCodeCostInputs(Box<ContractCodeCostInputs>),
53663 ContractCodeEntry(Box<ContractCodeEntry>),
53664 ContractCodeEntryExt(Box<ContractCodeEntryExt>),
53665 ContractCodeEntryV1(Box<ContractCodeEntryV1>),
53666 TtlEntry(Box<TtlEntry>),
53667 LedgerEntryExtensionV1(Box<LedgerEntryExtensionV1>),
53668 LedgerEntryExtensionV1Ext(Box<LedgerEntryExtensionV1Ext>),
53669 LedgerEntry(Box<LedgerEntry>),
53670 LedgerEntryData(Box<LedgerEntryData>),
53671 LedgerEntryExt(Box<LedgerEntryExt>),
53672 LedgerKey(Box<LedgerKey>),
53673 LedgerKeyAccount(Box<LedgerKeyAccount>),
53674 LedgerKeyTrustLine(Box<LedgerKeyTrustLine>),
53675 LedgerKeyOffer(Box<LedgerKeyOffer>),
53676 LedgerKeyData(Box<LedgerKeyData>),
53677 LedgerKeyClaimableBalance(Box<LedgerKeyClaimableBalance>),
53678 LedgerKeyLiquidityPool(Box<LedgerKeyLiquidityPool>),
53679 LedgerKeyContractData(Box<LedgerKeyContractData>),
53680 LedgerKeyContractCode(Box<LedgerKeyContractCode>),
53681 LedgerKeyConfigSetting(Box<LedgerKeyConfigSetting>),
53682 LedgerKeyTtl(Box<LedgerKeyTtl>),
53683 EnvelopeType(Box<EnvelopeType>),
53684 BucketListType(Box<BucketListType>),
53685 BucketEntryType(Box<BucketEntryType>),
53686 HotArchiveBucketEntryType(Box<HotArchiveBucketEntryType>),
53687 BucketMetadata(Box<BucketMetadata>),
53688 BucketMetadataExt(Box<BucketMetadataExt>),
53689 BucketEntry(Box<BucketEntry>),
53690 HotArchiveBucketEntry(Box<HotArchiveBucketEntry>),
53691 UpgradeType(Box<UpgradeType>),
53692 StellarValueType(Box<StellarValueType>),
53693 LedgerCloseValueSignature(Box<LedgerCloseValueSignature>),
53694 StellarValue(Box<StellarValue>),
53695 StellarValueExt(Box<StellarValueExt>),
53696 LedgerHeaderFlags(Box<LedgerHeaderFlags>),
53697 LedgerHeaderExtensionV1(Box<LedgerHeaderExtensionV1>),
53698 LedgerHeaderExtensionV1Ext(Box<LedgerHeaderExtensionV1Ext>),
53699 LedgerHeader(Box<LedgerHeader>),
53700 LedgerHeaderExt(Box<LedgerHeaderExt>),
53701 LedgerUpgradeType(Box<LedgerUpgradeType>),
53702 ConfigUpgradeSetKey(Box<ConfigUpgradeSetKey>),
53703 LedgerUpgrade(Box<LedgerUpgrade>),
53704 ConfigUpgradeSet(Box<ConfigUpgradeSet>),
53705 TxSetComponentType(Box<TxSetComponentType>),
53706 DependentTxCluster(Box<DependentTxCluster>),
53707 ParallelTxExecutionStage(Box<ParallelTxExecutionStage>),
53708 ParallelTxsComponent(Box<ParallelTxsComponent>),
53709 TxSetComponent(Box<TxSetComponent>),
53710 TxSetComponentTxsMaybeDiscountedFee(Box<TxSetComponentTxsMaybeDiscountedFee>),
53711 TransactionPhase(Box<TransactionPhase>),
53712 TransactionSet(Box<TransactionSet>),
53713 TransactionSetV1(Box<TransactionSetV1>),
53714 GeneralizedTransactionSet(Box<GeneralizedTransactionSet>),
53715 TransactionResultPair(Box<TransactionResultPair>),
53716 TransactionResultSet(Box<TransactionResultSet>),
53717 TransactionHistoryEntry(Box<TransactionHistoryEntry>),
53718 TransactionHistoryEntryExt(Box<TransactionHistoryEntryExt>),
53719 TransactionHistoryResultEntry(Box<TransactionHistoryResultEntry>),
53720 TransactionHistoryResultEntryExt(Box<TransactionHistoryResultEntryExt>),
53721 LedgerHeaderHistoryEntry(Box<LedgerHeaderHistoryEntry>),
53722 LedgerHeaderHistoryEntryExt(Box<LedgerHeaderHistoryEntryExt>),
53723 LedgerScpMessages(Box<LedgerScpMessages>),
53724 ScpHistoryEntryV0(Box<ScpHistoryEntryV0>),
53725 ScpHistoryEntry(Box<ScpHistoryEntry>),
53726 LedgerEntryChangeType(Box<LedgerEntryChangeType>),
53727 LedgerEntryChange(Box<LedgerEntryChange>),
53728 LedgerEntryChanges(Box<LedgerEntryChanges>),
53729 OperationMeta(Box<OperationMeta>),
53730 TransactionMetaV1(Box<TransactionMetaV1>),
53731 TransactionMetaV2(Box<TransactionMetaV2>),
53732 ContractEventType(Box<ContractEventType>),
53733 ContractEvent(Box<ContractEvent>),
53734 ContractEventBody(Box<ContractEventBody>),
53735 ContractEventV0(Box<ContractEventV0>),
53736 DiagnosticEvent(Box<DiagnosticEvent>),
53737 SorobanTransactionMetaExtV1(Box<SorobanTransactionMetaExtV1>),
53738 SorobanTransactionMetaExt(Box<SorobanTransactionMetaExt>),
53739 SorobanTransactionMeta(Box<SorobanTransactionMeta>),
53740 TransactionMetaV3(Box<TransactionMetaV3>),
53741 OperationMetaV2(Box<OperationMetaV2>),
53742 SorobanTransactionMetaV2(Box<SorobanTransactionMetaV2>),
53743 TransactionEventStage(Box<TransactionEventStage>),
53744 TransactionEvent(Box<TransactionEvent>),
53745 TransactionMetaV4(Box<TransactionMetaV4>),
53746 InvokeHostFunctionSuccessPreImage(Box<InvokeHostFunctionSuccessPreImage>),
53747 TransactionMeta(Box<TransactionMeta>),
53748 TransactionResultMeta(Box<TransactionResultMeta>),
53749 TransactionResultMetaV1(Box<TransactionResultMetaV1>),
53750 UpgradeEntryMeta(Box<UpgradeEntryMeta>),
53751 LedgerCloseMetaV0(Box<LedgerCloseMetaV0>),
53752 LedgerCloseMetaExtV1(Box<LedgerCloseMetaExtV1>),
53753 LedgerCloseMetaExt(Box<LedgerCloseMetaExt>),
53754 LedgerCloseMetaV1(Box<LedgerCloseMetaV1>),
53755 LedgerCloseMetaV2(Box<LedgerCloseMetaV2>),
53756 LedgerCloseMeta(Box<LedgerCloseMeta>),
53757 ErrorCode(Box<ErrorCode>),
53758 SError(Box<SError>),
53759 SendMore(Box<SendMore>),
53760 SendMoreExtended(Box<SendMoreExtended>),
53761 AuthCert(Box<AuthCert>),
53762 Hello(Box<Hello>),
53763 Auth(Box<Auth>),
53764 IpAddrType(Box<IpAddrType>),
53765 PeerAddress(Box<PeerAddress>),
53766 PeerAddressIp(Box<PeerAddressIp>),
53767 MessageType(Box<MessageType>),
53768 DontHave(Box<DontHave>),
53769 SurveyMessageCommandType(Box<SurveyMessageCommandType>),
53770 SurveyMessageResponseType(Box<SurveyMessageResponseType>),
53771 TimeSlicedSurveyStartCollectingMessage(Box<TimeSlicedSurveyStartCollectingMessage>),
53772 SignedTimeSlicedSurveyStartCollectingMessage(Box<SignedTimeSlicedSurveyStartCollectingMessage>),
53773 TimeSlicedSurveyStopCollectingMessage(Box<TimeSlicedSurveyStopCollectingMessage>),
53774 SignedTimeSlicedSurveyStopCollectingMessage(Box<SignedTimeSlicedSurveyStopCollectingMessage>),
53775 SurveyRequestMessage(Box<SurveyRequestMessage>),
53776 TimeSlicedSurveyRequestMessage(Box<TimeSlicedSurveyRequestMessage>),
53777 SignedTimeSlicedSurveyRequestMessage(Box<SignedTimeSlicedSurveyRequestMessage>),
53778 EncryptedBody(Box<EncryptedBody>),
53779 SurveyResponseMessage(Box<SurveyResponseMessage>),
53780 TimeSlicedSurveyResponseMessage(Box<TimeSlicedSurveyResponseMessage>),
53781 SignedTimeSlicedSurveyResponseMessage(Box<SignedTimeSlicedSurveyResponseMessage>),
53782 PeerStats(Box<PeerStats>),
53783 TimeSlicedNodeData(Box<TimeSlicedNodeData>),
53784 TimeSlicedPeerData(Box<TimeSlicedPeerData>),
53785 TimeSlicedPeerDataList(Box<TimeSlicedPeerDataList>),
53786 TopologyResponseBodyV2(Box<TopologyResponseBodyV2>),
53787 SurveyResponseBody(Box<SurveyResponseBody>),
53788 TxAdvertVector(Box<TxAdvertVector>),
53789 FloodAdvert(Box<FloodAdvert>),
53790 TxDemandVector(Box<TxDemandVector>),
53791 FloodDemand(Box<FloodDemand>),
53792 StellarMessage(Box<StellarMessage>),
53793 AuthenticatedMessage(Box<AuthenticatedMessage>),
53794 AuthenticatedMessageV0(Box<AuthenticatedMessageV0>),
53795 LiquidityPoolParameters(Box<LiquidityPoolParameters>),
53796 MuxedAccount(Box<MuxedAccount>),
53797 MuxedAccountMed25519(Box<MuxedAccountMed25519>),
53798 DecoratedSignature(Box<DecoratedSignature>),
53799 OperationType(Box<OperationType>),
53800 CreateAccountOp(Box<CreateAccountOp>),
53801 PaymentOp(Box<PaymentOp>),
53802 PathPaymentStrictReceiveOp(Box<PathPaymentStrictReceiveOp>),
53803 PathPaymentStrictSendOp(Box<PathPaymentStrictSendOp>),
53804 ManageSellOfferOp(Box<ManageSellOfferOp>),
53805 ManageBuyOfferOp(Box<ManageBuyOfferOp>),
53806 CreatePassiveSellOfferOp(Box<CreatePassiveSellOfferOp>),
53807 SetOptionsOp(Box<SetOptionsOp>),
53808 ChangeTrustAsset(Box<ChangeTrustAsset>),
53809 ChangeTrustOp(Box<ChangeTrustOp>),
53810 AllowTrustOp(Box<AllowTrustOp>),
53811 ManageDataOp(Box<ManageDataOp>),
53812 BumpSequenceOp(Box<BumpSequenceOp>),
53813 CreateClaimableBalanceOp(Box<CreateClaimableBalanceOp>),
53814 ClaimClaimableBalanceOp(Box<ClaimClaimableBalanceOp>),
53815 BeginSponsoringFutureReservesOp(Box<BeginSponsoringFutureReservesOp>),
53816 RevokeSponsorshipType(Box<RevokeSponsorshipType>),
53817 RevokeSponsorshipOp(Box<RevokeSponsorshipOp>),
53818 RevokeSponsorshipOpSigner(Box<RevokeSponsorshipOpSigner>),
53819 ClawbackOp(Box<ClawbackOp>),
53820 ClawbackClaimableBalanceOp(Box<ClawbackClaimableBalanceOp>),
53821 SetTrustLineFlagsOp(Box<SetTrustLineFlagsOp>),
53822 LiquidityPoolDepositOp(Box<LiquidityPoolDepositOp>),
53823 LiquidityPoolWithdrawOp(Box<LiquidityPoolWithdrawOp>),
53824 HostFunctionType(Box<HostFunctionType>),
53825 ContractIdPreimageType(Box<ContractIdPreimageType>),
53826 ContractIdPreimage(Box<ContractIdPreimage>),
53827 ContractIdPreimageFromAddress(Box<ContractIdPreimageFromAddress>),
53828 CreateContractArgs(Box<CreateContractArgs>),
53829 CreateContractArgsV2(Box<CreateContractArgsV2>),
53830 InvokeContractArgs(Box<InvokeContractArgs>),
53831 HostFunction(Box<HostFunction>),
53832 SorobanAuthorizedFunctionType(Box<SorobanAuthorizedFunctionType>),
53833 SorobanAuthorizedFunction(Box<SorobanAuthorizedFunction>),
53834 SorobanAuthorizedInvocation(Box<SorobanAuthorizedInvocation>),
53835 SorobanAddressCredentials(Box<SorobanAddressCredentials>),
53836 SorobanCredentialsType(Box<SorobanCredentialsType>),
53837 SorobanCredentials(Box<SorobanCredentials>),
53838 SorobanAuthorizationEntry(Box<SorobanAuthorizationEntry>),
53839 SorobanAuthorizationEntries(Box<SorobanAuthorizationEntries>),
53840 InvokeHostFunctionOp(Box<InvokeHostFunctionOp>),
53841 ExtendFootprintTtlOp(Box<ExtendFootprintTtlOp>),
53842 RestoreFootprintOp(Box<RestoreFootprintOp>),
53843 Operation(Box<Operation>),
53844 OperationBody(Box<OperationBody>),
53845 HashIdPreimage(Box<HashIdPreimage>),
53846 HashIdPreimageOperationId(Box<HashIdPreimageOperationId>),
53847 HashIdPreimageRevokeId(Box<HashIdPreimageRevokeId>),
53848 HashIdPreimageContractId(Box<HashIdPreimageContractId>),
53849 HashIdPreimageSorobanAuthorization(Box<HashIdPreimageSorobanAuthorization>),
53850 MemoType(Box<MemoType>),
53851 Memo(Box<Memo>),
53852 TimeBounds(Box<TimeBounds>),
53853 LedgerBounds(Box<LedgerBounds>),
53854 PreconditionsV2(Box<PreconditionsV2>),
53855 PreconditionType(Box<PreconditionType>),
53856 Preconditions(Box<Preconditions>),
53857 LedgerFootprint(Box<LedgerFootprint>),
53858 SorobanResources(Box<SorobanResources>),
53859 SorobanResourcesExtV0(Box<SorobanResourcesExtV0>),
53860 SorobanTransactionData(Box<SorobanTransactionData>),
53861 SorobanTransactionDataExt(Box<SorobanTransactionDataExt>),
53862 TransactionV0(Box<TransactionV0>),
53863 TransactionV0Ext(Box<TransactionV0Ext>),
53864 TransactionV0Envelope(Box<TransactionV0Envelope>),
53865 Transaction(Box<Transaction>),
53866 TransactionExt(Box<TransactionExt>),
53867 TransactionV1Envelope(Box<TransactionV1Envelope>),
53868 FeeBumpTransaction(Box<FeeBumpTransaction>),
53869 FeeBumpTransactionInnerTx(Box<FeeBumpTransactionInnerTx>),
53870 FeeBumpTransactionExt(Box<FeeBumpTransactionExt>),
53871 FeeBumpTransactionEnvelope(Box<FeeBumpTransactionEnvelope>),
53872 TransactionEnvelope(Box<TransactionEnvelope>),
53873 TransactionSignaturePayload(Box<TransactionSignaturePayload>),
53874 TransactionSignaturePayloadTaggedTransaction(Box<TransactionSignaturePayloadTaggedTransaction>),
53875 ClaimAtomType(Box<ClaimAtomType>),
53876 ClaimOfferAtomV0(Box<ClaimOfferAtomV0>),
53877 ClaimOfferAtom(Box<ClaimOfferAtom>),
53878 ClaimLiquidityAtom(Box<ClaimLiquidityAtom>),
53879 ClaimAtom(Box<ClaimAtom>),
53880 CreateAccountResultCode(Box<CreateAccountResultCode>),
53881 CreateAccountResult(Box<CreateAccountResult>),
53882 PaymentResultCode(Box<PaymentResultCode>),
53883 PaymentResult(Box<PaymentResult>),
53884 PathPaymentStrictReceiveResultCode(Box<PathPaymentStrictReceiveResultCode>),
53885 SimplePaymentResult(Box<SimplePaymentResult>),
53886 PathPaymentStrictReceiveResult(Box<PathPaymentStrictReceiveResult>),
53887 PathPaymentStrictReceiveResultSuccess(Box<PathPaymentStrictReceiveResultSuccess>),
53888 PathPaymentStrictSendResultCode(Box<PathPaymentStrictSendResultCode>),
53889 PathPaymentStrictSendResult(Box<PathPaymentStrictSendResult>),
53890 PathPaymentStrictSendResultSuccess(Box<PathPaymentStrictSendResultSuccess>),
53891 ManageSellOfferResultCode(Box<ManageSellOfferResultCode>),
53892 ManageOfferEffect(Box<ManageOfferEffect>),
53893 ManageOfferSuccessResult(Box<ManageOfferSuccessResult>),
53894 ManageOfferSuccessResultOffer(Box<ManageOfferSuccessResultOffer>),
53895 ManageSellOfferResult(Box<ManageSellOfferResult>),
53896 ManageBuyOfferResultCode(Box<ManageBuyOfferResultCode>),
53897 ManageBuyOfferResult(Box<ManageBuyOfferResult>),
53898 SetOptionsResultCode(Box<SetOptionsResultCode>),
53899 SetOptionsResult(Box<SetOptionsResult>),
53900 ChangeTrustResultCode(Box<ChangeTrustResultCode>),
53901 ChangeTrustResult(Box<ChangeTrustResult>),
53902 AllowTrustResultCode(Box<AllowTrustResultCode>),
53903 AllowTrustResult(Box<AllowTrustResult>),
53904 AccountMergeResultCode(Box<AccountMergeResultCode>),
53905 AccountMergeResult(Box<AccountMergeResult>),
53906 InflationResultCode(Box<InflationResultCode>),
53907 InflationPayout(Box<InflationPayout>),
53908 InflationResult(Box<InflationResult>),
53909 ManageDataResultCode(Box<ManageDataResultCode>),
53910 ManageDataResult(Box<ManageDataResult>),
53911 BumpSequenceResultCode(Box<BumpSequenceResultCode>),
53912 BumpSequenceResult(Box<BumpSequenceResult>),
53913 CreateClaimableBalanceResultCode(Box<CreateClaimableBalanceResultCode>),
53914 CreateClaimableBalanceResult(Box<CreateClaimableBalanceResult>),
53915 ClaimClaimableBalanceResultCode(Box<ClaimClaimableBalanceResultCode>),
53916 ClaimClaimableBalanceResult(Box<ClaimClaimableBalanceResult>),
53917 BeginSponsoringFutureReservesResultCode(Box<BeginSponsoringFutureReservesResultCode>),
53918 BeginSponsoringFutureReservesResult(Box<BeginSponsoringFutureReservesResult>),
53919 EndSponsoringFutureReservesResultCode(Box<EndSponsoringFutureReservesResultCode>),
53920 EndSponsoringFutureReservesResult(Box<EndSponsoringFutureReservesResult>),
53921 RevokeSponsorshipResultCode(Box<RevokeSponsorshipResultCode>),
53922 RevokeSponsorshipResult(Box<RevokeSponsorshipResult>),
53923 ClawbackResultCode(Box<ClawbackResultCode>),
53924 ClawbackResult(Box<ClawbackResult>),
53925 ClawbackClaimableBalanceResultCode(Box<ClawbackClaimableBalanceResultCode>),
53926 ClawbackClaimableBalanceResult(Box<ClawbackClaimableBalanceResult>),
53927 SetTrustLineFlagsResultCode(Box<SetTrustLineFlagsResultCode>),
53928 SetTrustLineFlagsResult(Box<SetTrustLineFlagsResult>),
53929 LiquidityPoolDepositResultCode(Box<LiquidityPoolDepositResultCode>),
53930 LiquidityPoolDepositResult(Box<LiquidityPoolDepositResult>),
53931 LiquidityPoolWithdrawResultCode(Box<LiquidityPoolWithdrawResultCode>),
53932 LiquidityPoolWithdrawResult(Box<LiquidityPoolWithdrawResult>),
53933 InvokeHostFunctionResultCode(Box<InvokeHostFunctionResultCode>),
53934 InvokeHostFunctionResult(Box<InvokeHostFunctionResult>),
53935 ExtendFootprintTtlResultCode(Box<ExtendFootprintTtlResultCode>),
53936 ExtendFootprintTtlResult(Box<ExtendFootprintTtlResult>),
53937 RestoreFootprintResultCode(Box<RestoreFootprintResultCode>),
53938 RestoreFootprintResult(Box<RestoreFootprintResult>),
53939 OperationResultCode(Box<OperationResultCode>),
53940 OperationResult(Box<OperationResult>),
53941 OperationResultTr(Box<OperationResultTr>),
53942 TransactionResultCode(Box<TransactionResultCode>),
53943 InnerTransactionResult(Box<InnerTransactionResult>),
53944 InnerTransactionResultResult(Box<InnerTransactionResultResult>),
53945 InnerTransactionResultExt(Box<InnerTransactionResultExt>),
53946 InnerTransactionResultPair(Box<InnerTransactionResultPair>),
53947 TransactionResult(Box<TransactionResult>),
53948 TransactionResultResult(Box<TransactionResultResult>),
53949 TransactionResultExt(Box<TransactionResultExt>),
53950 Hash(Box<Hash>),
53951 Uint256(Box<Uint256>),
53952 Uint32(Box<Uint32>),
53953 Int32(Box<Int32>),
53954 Uint64(Box<Uint64>),
53955 Int64(Box<Int64>),
53956 TimePoint(Box<TimePoint>),
53957 Duration(Box<Duration>),
53958 ExtensionPoint(Box<ExtensionPoint>),
53959 CryptoKeyType(Box<CryptoKeyType>),
53960 PublicKeyType(Box<PublicKeyType>),
53961 SignerKeyType(Box<SignerKeyType>),
53962 PublicKey(Box<PublicKey>),
53963 SignerKey(Box<SignerKey>),
53964 SignerKeyEd25519SignedPayload(Box<SignerKeyEd25519SignedPayload>),
53965 Signature(Box<Signature>),
53966 SignatureHint(Box<SignatureHint>),
53967 NodeId(Box<NodeId>),
53968 AccountId(Box<AccountId>),
53969 ContractId(Box<ContractId>),
53970 Curve25519Secret(Box<Curve25519Secret>),
53971 Curve25519Public(Box<Curve25519Public>),
53972 HmacSha256Key(Box<HmacSha256Key>),
53973 HmacSha256Mac(Box<HmacSha256Mac>),
53974 ShortHashSeed(Box<ShortHashSeed>),
53975 BinaryFuseFilterType(Box<BinaryFuseFilterType>),
53976 SerializedBinaryFuseFilter(Box<SerializedBinaryFuseFilter>),
53977 PoolId(Box<PoolId>),
53978 ClaimableBalanceIdType(Box<ClaimableBalanceIdType>),
53979 ClaimableBalanceId(Box<ClaimableBalanceId>),
53980}
53981
53982impl Type {
53983 pub const VARIANTS: [TypeVariant; 463] = [
53984 TypeVariant::Value,
53985 TypeVariant::ScpBallot,
53986 TypeVariant::ScpStatementType,
53987 TypeVariant::ScpNomination,
53988 TypeVariant::ScpStatement,
53989 TypeVariant::ScpStatementPledges,
53990 TypeVariant::ScpStatementPrepare,
53991 TypeVariant::ScpStatementConfirm,
53992 TypeVariant::ScpStatementExternalize,
53993 TypeVariant::ScpEnvelope,
53994 TypeVariant::ScpQuorumSet,
53995 TypeVariant::ConfigSettingContractExecutionLanesV0,
53996 TypeVariant::ConfigSettingContractComputeV0,
53997 TypeVariant::ConfigSettingContractParallelComputeV0,
53998 TypeVariant::ConfigSettingContractLedgerCostV0,
53999 TypeVariant::ConfigSettingContractLedgerCostExtV0,
54000 TypeVariant::ConfigSettingContractHistoricalDataV0,
54001 TypeVariant::ConfigSettingContractEventsV0,
54002 TypeVariant::ConfigSettingContractBandwidthV0,
54003 TypeVariant::ContractCostType,
54004 TypeVariant::ContractCostParamEntry,
54005 TypeVariant::StateArchivalSettings,
54006 TypeVariant::EvictionIterator,
54007 TypeVariant::ConfigSettingScpTiming,
54008 TypeVariant::ContractCostParams,
54009 TypeVariant::ConfigSettingId,
54010 TypeVariant::ConfigSettingEntry,
54011 TypeVariant::ScEnvMetaKind,
54012 TypeVariant::ScEnvMetaEntry,
54013 TypeVariant::ScEnvMetaEntryInterfaceVersion,
54014 TypeVariant::ScMetaV0,
54015 TypeVariant::ScMetaKind,
54016 TypeVariant::ScMetaEntry,
54017 TypeVariant::ScSpecType,
54018 TypeVariant::ScSpecTypeOption,
54019 TypeVariant::ScSpecTypeResult,
54020 TypeVariant::ScSpecTypeVec,
54021 TypeVariant::ScSpecTypeMap,
54022 TypeVariant::ScSpecTypeTuple,
54023 TypeVariant::ScSpecTypeBytesN,
54024 TypeVariant::ScSpecTypeUdt,
54025 TypeVariant::ScSpecTypeDef,
54026 TypeVariant::ScSpecUdtStructFieldV0,
54027 TypeVariant::ScSpecUdtStructV0,
54028 TypeVariant::ScSpecUdtUnionCaseVoidV0,
54029 TypeVariant::ScSpecUdtUnionCaseTupleV0,
54030 TypeVariant::ScSpecUdtUnionCaseV0Kind,
54031 TypeVariant::ScSpecUdtUnionCaseV0,
54032 TypeVariant::ScSpecUdtUnionV0,
54033 TypeVariant::ScSpecUdtEnumCaseV0,
54034 TypeVariant::ScSpecUdtEnumV0,
54035 TypeVariant::ScSpecUdtErrorEnumCaseV0,
54036 TypeVariant::ScSpecUdtErrorEnumV0,
54037 TypeVariant::ScSpecFunctionInputV0,
54038 TypeVariant::ScSpecFunctionV0,
54039 TypeVariant::ScSpecEventParamLocationV0,
54040 TypeVariant::ScSpecEventParamV0,
54041 TypeVariant::ScSpecEventDataFormat,
54042 TypeVariant::ScSpecEventV0,
54043 TypeVariant::ScSpecEntryKind,
54044 TypeVariant::ScSpecEntry,
54045 TypeVariant::ScValType,
54046 TypeVariant::ScErrorType,
54047 TypeVariant::ScErrorCode,
54048 TypeVariant::ScError,
54049 TypeVariant::UInt128Parts,
54050 TypeVariant::Int128Parts,
54051 TypeVariant::UInt256Parts,
54052 TypeVariant::Int256Parts,
54053 TypeVariant::ContractExecutableType,
54054 TypeVariant::ContractExecutable,
54055 TypeVariant::ScAddressType,
54056 TypeVariant::MuxedEd25519Account,
54057 TypeVariant::ScAddress,
54058 TypeVariant::ScVec,
54059 TypeVariant::ScMap,
54060 TypeVariant::ScBytes,
54061 TypeVariant::ScString,
54062 TypeVariant::ScSymbol,
54063 TypeVariant::ScNonceKey,
54064 TypeVariant::ScContractInstance,
54065 TypeVariant::ScVal,
54066 TypeVariant::ScMapEntry,
54067 TypeVariant::LedgerCloseMetaBatch,
54068 TypeVariant::StoredTransactionSet,
54069 TypeVariant::StoredDebugTransactionSet,
54070 TypeVariant::PersistedScpStateV0,
54071 TypeVariant::PersistedScpStateV1,
54072 TypeVariant::PersistedScpState,
54073 TypeVariant::Thresholds,
54074 TypeVariant::String32,
54075 TypeVariant::String64,
54076 TypeVariant::SequenceNumber,
54077 TypeVariant::DataValue,
54078 TypeVariant::AssetCode4,
54079 TypeVariant::AssetCode12,
54080 TypeVariant::AssetType,
54081 TypeVariant::AssetCode,
54082 TypeVariant::AlphaNum4,
54083 TypeVariant::AlphaNum12,
54084 TypeVariant::Asset,
54085 TypeVariant::Price,
54086 TypeVariant::Liabilities,
54087 TypeVariant::ThresholdIndexes,
54088 TypeVariant::LedgerEntryType,
54089 TypeVariant::Signer,
54090 TypeVariant::AccountFlags,
54091 TypeVariant::SponsorshipDescriptor,
54092 TypeVariant::AccountEntryExtensionV3,
54093 TypeVariant::AccountEntryExtensionV2,
54094 TypeVariant::AccountEntryExtensionV2Ext,
54095 TypeVariant::AccountEntryExtensionV1,
54096 TypeVariant::AccountEntryExtensionV1Ext,
54097 TypeVariant::AccountEntry,
54098 TypeVariant::AccountEntryExt,
54099 TypeVariant::TrustLineFlags,
54100 TypeVariant::LiquidityPoolType,
54101 TypeVariant::TrustLineAsset,
54102 TypeVariant::TrustLineEntryExtensionV2,
54103 TypeVariant::TrustLineEntryExtensionV2Ext,
54104 TypeVariant::TrustLineEntry,
54105 TypeVariant::TrustLineEntryExt,
54106 TypeVariant::TrustLineEntryV1,
54107 TypeVariant::TrustLineEntryV1Ext,
54108 TypeVariant::OfferEntryFlags,
54109 TypeVariant::OfferEntry,
54110 TypeVariant::OfferEntryExt,
54111 TypeVariant::DataEntry,
54112 TypeVariant::DataEntryExt,
54113 TypeVariant::ClaimPredicateType,
54114 TypeVariant::ClaimPredicate,
54115 TypeVariant::ClaimantType,
54116 TypeVariant::Claimant,
54117 TypeVariant::ClaimantV0,
54118 TypeVariant::ClaimableBalanceFlags,
54119 TypeVariant::ClaimableBalanceEntryExtensionV1,
54120 TypeVariant::ClaimableBalanceEntryExtensionV1Ext,
54121 TypeVariant::ClaimableBalanceEntry,
54122 TypeVariant::ClaimableBalanceEntryExt,
54123 TypeVariant::LiquidityPoolConstantProductParameters,
54124 TypeVariant::LiquidityPoolEntry,
54125 TypeVariant::LiquidityPoolEntryBody,
54126 TypeVariant::LiquidityPoolEntryConstantProduct,
54127 TypeVariant::ContractDataDurability,
54128 TypeVariant::ContractDataEntry,
54129 TypeVariant::ContractCodeCostInputs,
54130 TypeVariant::ContractCodeEntry,
54131 TypeVariant::ContractCodeEntryExt,
54132 TypeVariant::ContractCodeEntryV1,
54133 TypeVariant::TtlEntry,
54134 TypeVariant::LedgerEntryExtensionV1,
54135 TypeVariant::LedgerEntryExtensionV1Ext,
54136 TypeVariant::LedgerEntry,
54137 TypeVariant::LedgerEntryData,
54138 TypeVariant::LedgerEntryExt,
54139 TypeVariant::LedgerKey,
54140 TypeVariant::LedgerKeyAccount,
54141 TypeVariant::LedgerKeyTrustLine,
54142 TypeVariant::LedgerKeyOffer,
54143 TypeVariant::LedgerKeyData,
54144 TypeVariant::LedgerKeyClaimableBalance,
54145 TypeVariant::LedgerKeyLiquidityPool,
54146 TypeVariant::LedgerKeyContractData,
54147 TypeVariant::LedgerKeyContractCode,
54148 TypeVariant::LedgerKeyConfigSetting,
54149 TypeVariant::LedgerKeyTtl,
54150 TypeVariant::EnvelopeType,
54151 TypeVariant::BucketListType,
54152 TypeVariant::BucketEntryType,
54153 TypeVariant::HotArchiveBucketEntryType,
54154 TypeVariant::BucketMetadata,
54155 TypeVariant::BucketMetadataExt,
54156 TypeVariant::BucketEntry,
54157 TypeVariant::HotArchiveBucketEntry,
54158 TypeVariant::UpgradeType,
54159 TypeVariant::StellarValueType,
54160 TypeVariant::LedgerCloseValueSignature,
54161 TypeVariant::StellarValue,
54162 TypeVariant::StellarValueExt,
54163 TypeVariant::LedgerHeaderFlags,
54164 TypeVariant::LedgerHeaderExtensionV1,
54165 TypeVariant::LedgerHeaderExtensionV1Ext,
54166 TypeVariant::LedgerHeader,
54167 TypeVariant::LedgerHeaderExt,
54168 TypeVariant::LedgerUpgradeType,
54169 TypeVariant::ConfigUpgradeSetKey,
54170 TypeVariant::LedgerUpgrade,
54171 TypeVariant::ConfigUpgradeSet,
54172 TypeVariant::TxSetComponentType,
54173 TypeVariant::DependentTxCluster,
54174 TypeVariant::ParallelTxExecutionStage,
54175 TypeVariant::ParallelTxsComponent,
54176 TypeVariant::TxSetComponent,
54177 TypeVariant::TxSetComponentTxsMaybeDiscountedFee,
54178 TypeVariant::TransactionPhase,
54179 TypeVariant::TransactionSet,
54180 TypeVariant::TransactionSetV1,
54181 TypeVariant::GeneralizedTransactionSet,
54182 TypeVariant::TransactionResultPair,
54183 TypeVariant::TransactionResultSet,
54184 TypeVariant::TransactionHistoryEntry,
54185 TypeVariant::TransactionHistoryEntryExt,
54186 TypeVariant::TransactionHistoryResultEntry,
54187 TypeVariant::TransactionHistoryResultEntryExt,
54188 TypeVariant::LedgerHeaderHistoryEntry,
54189 TypeVariant::LedgerHeaderHistoryEntryExt,
54190 TypeVariant::LedgerScpMessages,
54191 TypeVariant::ScpHistoryEntryV0,
54192 TypeVariant::ScpHistoryEntry,
54193 TypeVariant::LedgerEntryChangeType,
54194 TypeVariant::LedgerEntryChange,
54195 TypeVariant::LedgerEntryChanges,
54196 TypeVariant::OperationMeta,
54197 TypeVariant::TransactionMetaV1,
54198 TypeVariant::TransactionMetaV2,
54199 TypeVariant::ContractEventType,
54200 TypeVariant::ContractEvent,
54201 TypeVariant::ContractEventBody,
54202 TypeVariant::ContractEventV0,
54203 TypeVariant::DiagnosticEvent,
54204 TypeVariant::SorobanTransactionMetaExtV1,
54205 TypeVariant::SorobanTransactionMetaExt,
54206 TypeVariant::SorobanTransactionMeta,
54207 TypeVariant::TransactionMetaV3,
54208 TypeVariant::OperationMetaV2,
54209 TypeVariant::SorobanTransactionMetaV2,
54210 TypeVariant::TransactionEventStage,
54211 TypeVariant::TransactionEvent,
54212 TypeVariant::TransactionMetaV4,
54213 TypeVariant::InvokeHostFunctionSuccessPreImage,
54214 TypeVariant::TransactionMeta,
54215 TypeVariant::TransactionResultMeta,
54216 TypeVariant::TransactionResultMetaV1,
54217 TypeVariant::UpgradeEntryMeta,
54218 TypeVariant::LedgerCloseMetaV0,
54219 TypeVariant::LedgerCloseMetaExtV1,
54220 TypeVariant::LedgerCloseMetaExt,
54221 TypeVariant::LedgerCloseMetaV1,
54222 TypeVariant::LedgerCloseMetaV2,
54223 TypeVariant::LedgerCloseMeta,
54224 TypeVariant::ErrorCode,
54225 TypeVariant::SError,
54226 TypeVariant::SendMore,
54227 TypeVariant::SendMoreExtended,
54228 TypeVariant::AuthCert,
54229 TypeVariant::Hello,
54230 TypeVariant::Auth,
54231 TypeVariant::IpAddrType,
54232 TypeVariant::PeerAddress,
54233 TypeVariant::PeerAddressIp,
54234 TypeVariant::MessageType,
54235 TypeVariant::DontHave,
54236 TypeVariant::SurveyMessageCommandType,
54237 TypeVariant::SurveyMessageResponseType,
54238 TypeVariant::TimeSlicedSurveyStartCollectingMessage,
54239 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage,
54240 TypeVariant::TimeSlicedSurveyStopCollectingMessage,
54241 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage,
54242 TypeVariant::SurveyRequestMessage,
54243 TypeVariant::TimeSlicedSurveyRequestMessage,
54244 TypeVariant::SignedTimeSlicedSurveyRequestMessage,
54245 TypeVariant::EncryptedBody,
54246 TypeVariant::SurveyResponseMessage,
54247 TypeVariant::TimeSlicedSurveyResponseMessage,
54248 TypeVariant::SignedTimeSlicedSurveyResponseMessage,
54249 TypeVariant::PeerStats,
54250 TypeVariant::TimeSlicedNodeData,
54251 TypeVariant::TimeSlicedPeerData,
54252 TypeVariant::TimeSlicedPeerDataList,
54253 TypeVariant::TopologyResponseBodyV2,
54254 TypeVariant::SurveyResponseBody,
54255 TypeVariant::TxAdvertVector,
54256 TypeVariant::FloodAdvert,
54257 TypeVariant::TxDemandVector,
54258 TypeVariant::FloodDemand,
54259 TypeVariant::StellarMessage,
54260 TypeVariant::AuthenticatedMessage,
54261 TypeVariant::AuthenticatedMessageV0,
54262 TypeVariant::LiquidityPoolParameters,
54263 TypeVariant::MuxedAccount,
54264 TypeVariant::MuxedAccountMed25519,
54265 TypeVariant::DecoratedSignature,
54266 TypeVariant::OperationType,
54267 TypeVariant::CreateAccountOp,
54268 TypeVariant::PaymentOp,
54269 TypeVariant::PathPaymentStrictReceiveOp,
54270 TypeVariant::PathPaymentStrictSendOp,
54271 TypeVariant::ManageSellOfferOp,
54272 TypeVariant::ManageBuyOfferOp,
54273 TypeVariant::CreatePassiveSellOfferOp,
54274 TypeVariant::SetOptionsOp,
54275 TypeVariant::ChangeTrustAsset,
54276 TypeVariant::ChangeTrustOp,
54277 TypeVariant::AllowTrustOp,
54278 TypeVariant::ManageDataOp,
54279 TypeVariant::BumpSequenceOp,
54280 TypeVariant::CreateClaimableBalanceOp,
54281 TypeVariant::ClaimClaimableBalanceOp,
54282 TypeVariant::BeginSponsoringFutureReservesOp,
54283 TypeVariant::RevokeSponsorshipType,
54284 TypeVariant::RevokeSponsorshipOp,
54285 TypeVariant::RevokeSponsorshipOpSigner,
54286 TypeVariant::ClawbackOp,
54287 TypeVariant::ClawbackClaimableBalanceOp,
54288 TypeVariant::SetTrustLineFlagsOp,
54289 TypeVariant::LiquidityPoolDepositOp,
54290 TypeVariant::LiquidityPoolWithdrawOp,
54291 TypeVariant::HostFunctionType,
54292 TypeVariant::ContractIdPreimageType,
54293 TypeVariant::ContractIdPreimage,
54294 TypeVariant::ContractIdPreimageFromAddress,
54295 TypeVariant::CreateContractArgs,
54296 TypeVariant::CreateContractArgsV2,
54297 TypeVariant::InvokeContractArgs,
54298 TypeVariant::HostFunction,
54299 TypeVariant::SorobanAuthorizedFunctionType,
54300 TypeVariant::SorobanAuthorizedFunction,
54301 TypeVariant::SorobanAuthorizedInvocation,
54302 TypeVariant::SorobanAddressCredentials,
54303 TypeVariant::SorobanCredentialsType,
54304 TypeVariant::SorobanCredentials,
54305 TypeVariant::SorobanAuthorizationEntry,
54306 TypeVariant::SorobanAuthorizationEntries,
54307 TypeVariant::InvokeHostFunctionOp,
54308 TypeVariant::ExtendFootprintTtlOp,
54309 TypeVariant::RestoreFootprintOp,
54310 TypeVariant::Operation,
54311 TypeVariant::OperationBody,
54312 TypeVariant::HashIdPreimage,
54313 TypeVariant::HashIdPreimageOperationId,
54314 TypeVariant::HashIdPreimageRevokeId,
54315 TypeVariant::HashIdPreimageContractId,
54316 TypeVariant::HashIdPreimageSorobanAuthorization,
54317 TypeVariant::MemoType,
54318 TypeVariant::Memo,
54319 TypeVariant::TimeBounds,
54320 TypeVariant::LedgerBounds,
54321 TypeVariant::PreconditionsV2,
54322 TypeVariant::PreconditionType,
54323 TypeVariant::Preconditions,
54324 TypeVariant::LedgerFootprint,
54325 TypeVariant::SorobanResources,
54326 TypeVariant::SorobanResourcesExtV0,
54327 TypeVariant::SorobanTransactionData,
54328 TypeVariant::SorobanTransactionDataExt,
54329 TypeVariant::TransactionV0,
54330 TypeVariant::TransactionV0Ext,
54331 TypeVariant::TransactionV0Envelope,
54332 TypeVariant::Transaction,
54333 TypeVariant::TransactionExt,
54334 TypeVariant::TransactionV1Envelope,
54335 TypeVariant::FeeBumpTransaction,
54336 TypeVariant::FeeBumpTransactionInnerTx,
54337 TypeVariant::FeeBumpTransactionExt,
54338 TypeVariant::FeeBumpTransactionEnvelope,
54339 TypeVariant::TransactionEnvelope,
54340 TypeVariant::TransactionSignaturePayload,
54341 TypeVariant::TransactionSignaturePayloadTaggedTransaction,
54342 TypeVariant::ClaimAtomType,
54343 TypeVariant::ClaimOfferAtomV0,
54344 TypeVariant::ClaimOfferAtom,
54345 TypeVariant::ClaimLiquidityAtom,
54346 TypeVariant::ClaimAtom,
54347 TypeVariant::CreateAccountResultCode,
54348 TypeVariant::CreateAccountResult,
54349 TypeVariant::PaymentResultCode,
54350 TypeVariant::PaymentResult,
54351 TypeVariant::PathPaymentStrictReceiveResultCode,
54352 TypeVariant::SimplePaymentResult,
54353 TypeVariant::PathPaymentStrictReceiveResult,
54354 TypeVariant::PathPaymentStrictReceiveResultSuccess,
54355 TypeVariant::PathPaymentStrictSendResultCode,
54356 TypeVariant::PathPaymentStrictSendResult,
54357 TypeVariant::PathPaymentStrictSendResultSuccess,
54358 TypeVariant::ManageSellOfferResultCode,
54359 TypeVariant::ManageOfferEffect,
54360 TypeVariant::ManageOfferSuccessResult,
54361 TypeVariant::ManageOfferSuccessResultOffer,
54362 TypeVariant::ManageSellOfferResult,
54363 TypeVariant::ManageBuyOfferResultCode,
54364 TypeVariant::ManageBuyOfferResult,
54365 TypeVariant::SetOptionsResultCode,
54366 TypeVariant::SetOptionsResult,
54367 TypeVariant::ChangeTrustResultCode,
54368 TypeVariant::ChangeTrustResult,
54369 TypeVariant::AllowTrustResultCode,
54370 TypeVariant::AllowTrustResult,
54371 TypeVariant::AccountMergeResultCode,
54372 TypeVariant::AccountMergeResult,
54373 TypeVariant::InflationResultCode,
54374 TypeVariant::InflationPayout,
54375 TypeVariant::InflationResult,
54376 TypeVariant::ManageDataResultCode,
54377 TypeVariant::ManageDataResult,
54378 TypeVariant::BumpSequenceResultCode,
54379 TypeVariant::BumpSequenceResult,
54380 TypeVariant::CreateClaimableBalanceResultCode,
54381 TypeVariant::CreateClaimableBalanceResult,
54382 TypeVariant::ClaimClaimableBalanceResultCode,
54383 TypeVariant::ClaimClaimableBalanceResult,
54384 TypeVariant::BeginSponsoringFutureReservesResultCode,
54385 TypeVariant::BeginSponsoringFutureReservesResult,
54386 TypeVariant::EndSponsoringFutureReservesResultCode,
54387 TypeVariant::EndSponsoringFutureReservesResult,
54388 TypeVariant::RevokeSponsorshipResultCode,
54389 TypeVariant::RevokeSponsorshipResult,
54390 TypeVariant::ClawbackResultCode,
54391 TypeVariant::ClawbackResult,
54392 TypeVariant::ClawbackClaimableBalanceResultCode,
54393 TypeVariant::ClawbackClaimableBalanceResult,
54394 TypeVariant::SetTrustLineFlagsResultCode,
54395 TypeVariant::SetTrustLineFlagsResult,
54396 TypeVariant::LiquidityPoolDepositResultCode,
54397 TypeVariant::LiquidityPoolDepositResult,
54398 TypeVariant::LiquidityPoolWithdrawResultCode,
54399 TypeVariant::LiquidityPoolWithdrawResult,
54400 TypeVariant::InvokeHostFunctionResultCode,
54401 TypeVariant::InvokeHostFunctionResult,
54402 TypeVariant::ExtendFootprintTtlResultCode,
54403 TypeVariant::ExtendFootprintTtlResult,
54404 TypeVariant::RestoreFootprintResultCode,
54405 TypeVariant::RestoreFootprintResult,
54406 TypeVariant::OperationResultCode,
54407 TypeVariant::OperationResult,
54408 TypeVariant::OperationResultTr,
54409 TypeVariant::TransactionResultCode,
54410 TypeVariant::InnerTransactionResult,
54411 TypeVariant::InnerTransactionResultResult,
54412 TypeVariant::InnerTransactionResultExt,
54413 TypeVariant::InnerTransactionResultPair,
54414 TypeVariant::TransactionResult,
54415 TypeVariant::TransactionResultResult,
54416 TypeVariant::TransactionResultExt,
54417 TypeVariant::Hash,
54418 TypeVariant::Uint256,
54419 TypeVariant::Uint32,
54420 TypeVariant::Int32,
54421 TypeVariant::Uint64,
54422 TypeVariant::Int64,
54423 TypeVariant::TimePoint,
54424 TypeVariant::Duration,
54425 TypeVariant::ExtensionPoint,
54426 TypeVariant::CryptoKeyType,
54427 TypeVariant::PublicKeyType,
54428 TypeVariant::SignerKeyType,
54429 TypeVariant::PublicKey,
54430 TypeVariant::SignerKey,
54431 TypeVariant::SignerKeyEd25519SignedPayload,
54432 TypeVariant::Signature,
54433 TypeVariant::SignatureHint,
54434 TypeVariant::NodeId,
54435 TypeVariant::AccountId,
54436 TypeVariant::ContractId,
54437 TypeVariant::Curve25519Secret,
54438 TypeVariant::Curve25519Public,
54439 TypeVariant::HmacSha256Key,
54440 TypeVariant::HmacSha256Mac,
54441 TypeVariant::ShortHashSeed,
54442 TypeVariant::BinaryFuseFilterType,
54443 TypeVariant::SerializedBinaryFuseFilter,
54444 TypeVariant::PoolId,
54445 TypeVariant::ClaimableBalanceIdType,
54446 TypeVariant::ClaimableBalanceId,
54447 ];
54448 pub const VARIANTS_STR: [&'static str; 463] = [
54449 "Value",
54450 "ScpBallot",
54451 "ScpStatementType",
54452 "ScpNomination",
54453 "ScpStatement",
54454 "ScpStatementPledges",
54455 "ScpStatementPrepare",
54456 "ScpStatementConfirm",
54457 "ScpStatementExternalize",
54458 "ScpEnvelope",
54459 "ScpQuorumSet",
54460 "ConfigSettingContractExecutionLanesV0",
54461 "ConfigSettingContractComputeV0",
54462 "ConfigSettingContractParallelComputeV0",
54463 "ConfigSettingContractLedgerCostV0",
54464 "ConfigSettingContractLedgerCostExtV0",
54465 "ConfigSettingContractHistoricalDataV0",
54466 "ConfigSettingContractEventsV0",
54467 "ConfigSettingContractBandwidthV0",
54468 "ContractCostType",
54469 "ContractCostParamEntry",
54470 "StateArchivalSettings",
54471 "EvictionIterator",
54472 "ConfigSettingScpTiming",
54473 "ContractCostParams",
54474 "ConfigSettingId",
54475 "ConfigSettingEntry",
54476 "ScEnvMetaKind",
54477 "ScEnvMetaEntry",
54478 "ScEnvMetaEntryInterfaceVersion",
54479 "ScMetaV0",
54480 "ScMetaKind",
54481 "ScMetaEntry",
54482 "ScSpecType",
54483 "ScSpecTypeOption",
54484 "ScSpecTypeResult",
54485 "ScSpecTypeVec",
54486 "ScSpecTypeMap",
54487 "ScSpecTypeTuple",
54488 "ScSpecTypeBytesN",
54489 "ScSpecTypeUdt",
54490 "ScSpecTypeDef",
54491 "ScSpecUdtStructFieldV0",
54492 "ScSpecUdtStructV0",
54493 "ScSpecUdtUnionCaseVoidV0",
54494 "ScSpecUdtUnionCaseTupleV0",
54495 "ScSpecUdtUnionCaseV0Kind",
54496 "ScSpecUdtUnionCaseV0",
54497 "ScSpecUdtUnionV0",
54498 "ScSpecUdtEnumCaseV0",
54499 "ScSpecUdtEnumV0",
54500 "ScSpecUdtErrorEnumCaseV0",
54501 "ScSpecUdtErrorEnumV0",
54502 "ScSpecFunctionInputV0",
54503 "ScSpecFunctionV0",
54504 "ScSpecEventParamLocationV0",
54505 "ScSpecEventParamV0",
54506 "ScSpecEventDataFormat",
54507 "ScSpecEventV0",
54508 "ScSpecEntryKind",
54509 "ScSpecEntry",
54510 "ScValType",
54511 "ScErrorType",
54512 "ScErrorCode",
54513 "ScError",
54514 "UInt128Parts",
54515 "Int128Parts",
54516 "UInt256Parts",
54517 "Int256Parts",
54518 "ContractExecutableType",
54519 "ContractExecutable",
54520 "ScAddressType",
54521 "MuxedEd25519Account",
54522 "ScAddress",
54523 "ScVec",
54524 "ScMap",
54525 "ScBytes",
54526 "ScString",
54527 "ScSymbol",
54528 "ScNonceKey",
54529 "ScContractInstance",
54530 "ScVal",
54531 "ScMapEntry",
54532 "LedgerCloseMetaBatch",
54533 "StoredTransactionSet",
54534 "StoredDebugTransactionSet",
54535 "PersistedScpStateV0",
54536 "PersistedScpStateV1",
54537 "PersistedScpState",
54538 "Thresholds",
54539 "String32",
54540 "String64",
54541 "SequenceNumber",
54542 "DataValue",
54543 "AssetCode4",
54544 "AssetCode12",
54545 "AssetType",
54546 "AssetCode",
54547 "AlphaNum4",
54548 "AlphaNum12",
54549 "Asset",
54550 "Price",
54551 "Liabilities",
54552 "ThresholdIndexes",
54553 "LedgerEntryType",
54554 "Signer",
54555 "AccountFlags",
54556 "SponsorshipDescriptor",
54557 "AccountEntryExtensionV3",
54558 "AccountEntryExtensionV2",
54559 "AccountEntryExtensionV2Ext",
54560 "AccountEntryExtensionV1",
54561 "AccountEntryExtensionV1Ext",
54562 "AccountEntry",
54563 "AccountEntryExt",
54564 "TrustLineFlags",
54565 "LiquidityPoolType",
54566 "TrustLineAsset",
54567 "TrustLineEntryExtensionV2",
54568 "TrustLineEntryExtensionV2Ext",
54569 "TrustLineEntry",
54570 "TrustLineEntryExt",
54571 "TrustLineEntryV1",
54572 "TrustLineEntryV1Ext",
54573 "OfferEntryFlags",
54574 "OfferEntry",
54575 "OfferEntryExt",
54576 "DataEntry",
54577 "DataEntryExt",
54578 "ClaimPredicateType",
54579 "ClaimPredicate",
54580 "ClaimantType",
54581 "Claimant",
54582 "ClaimantV0",
54583 "ClaimableBalanceFlags",
54584 "ClaimableBalanceEntryExtensionV1",
54585 "ClaimableBalanceEntryExtensionV1Ext",
54586 "ClaimableBalanceEntry",
54587 "ClaimableBalanceEntryExt",
54588 "LiquidityPoolConstantProductParameters",
54589 "LiquidityPoolEntry",
54590 "LiquidityPoolEntryBody",
54591 "LiquidityPoolEntryConstantProduct",
54592 "ContractDataDurability",
54593 "ContractDataEntry",
54594 "ContractCodeCostInputs",
54595 "ContractCodeEntry",
54596 "ContractCodeEntryExt",
54597 "ContractCodeEntryV1",
54598 "TtlEntry",
54599 "LedgerEntryExtensionV1",
54600 "LedgerEntryExtensionV1Ext",
54601 "LedgerEntry",
54602 "LedgerEntryData",
54603 "LedgerEntryExt",
54604 "LedgerKey",
54605 "LedgerKeyAccount",
54606 "LedgerKeyTrustLine",
54607 "LedgerKeyOffer",
54608 "LedgerKeyData",
54609 "LedgerKeyClaimableBalance",
54610 "LedgerKeyLiquidityPool",
54611 "LedgerKeyContractData",
54612 "LedgerKeyContractCode",
54613 "LedgerKeyConfigSetting",
54614 "LedgerKeyTtl",
54615 "EnvelopeType",
54616 "BucketListType",
54617 "BucketEntryType",
54618 "HotArchiveBucketEntryType",
54619 "BucketMetadata",
54620 "BucketMetadataExt",
54621 "BucketEntry",
54622 "HotArchiveBucketEntry",
54623 "UpgradeType",
54624 "StellarValueType",
54625 "LedgerCloseValueSignature",
54626 "StellarValue",
54627 "StellarValueExt",
54628 "LedgerHeaderFlags",
54629 "LedgerHeaderExtensionV1",
54630 "LedgerHeaderExtensionV1Ext",
54631 "LedgerHeader",
54632 "LedgerHeaderExt",
54633 "LedgerUpgradeType",
54634 "ConfigUpgradeSetKey",
54635 "LedgerUpgrade",
54636 "ConfigUpgradeSet",
54637 "TxSetComponentType",
54638 "DependentTxCluster",
54639 "ParallelTxExecutionStage",
54640 "ParallelTxsComponent",
54641 "TxSetComponent",
54642 "TxSetComponentTxsMaybeDiscountedFee",
54643 "TransactionPhase",
54644 "TransactionSet",
54645 "TransactionSetV1",
54646 "GeneralizedTransactionSet",
54647 "TransactionResultPair",
54648 "TransactionResultSet",
54649 "TransactionHistoryEntry",
54650 "TransactionHistoryEntryExt",
54651 "TransactionHistoryResultEntry",
54652 "TransactionHistoryResultEntryExt",
54653 "LedgerHeaderHistoryEntry",
54654 "LedgerHeaderHistoryEntryExt",
54655 "LedgerScpMessages",
54656 "ScpHistoryEntryV0",
54657 "ScpHistoryEntry",
54658 "LedgerEntryChangeType",
54659 "LedgerEntryChange",
54660 "LedgerEntryChanges",
54661 "OperationMeta",
54662 "TransactionMetaV1",
54663 "TransactionMetaV2",
54664 "ContractEventType",
54665 "ContractEvent",
54666 "ContractEventBody",
54667 "ContractEventV0",
54668 "DiagnosticEvent",
54669 "SorobanTransactionMetaExtV1",
54670 "SorobanTransactionMetaExt",
54671 "SorobanTransactionMeta",
54672 "TransactionMetaV3",
54673 "OperationMetaV2",
54674 "SorobanTransactionMetaV2",
54675 "TransactionEventStage",
54676 "TransactionEvent",
54677 "TransactionMetaV4",
54678 "InvokeHostFunctionSuccessPreImage",
54679 "TransactionMeta",
54680 "TransactionResultMeta",
54681 "TransactionResultMetaV1",
54682 "UpgradeEntryMeta",
54683 "LedgerCloseMetaV0",
54684 "LedgerCloseMetaExtV1",
54685 "LedgerCloseMetaExt",
54686 "LedgerCloseMetaV1",
54687 "LedgerCloseMetaV2",
54688 "LedgerCloseMeta",
54689 "ErrorCode",
54690 "SError",
54691 "SendMore",
54692 "SendMoreExtended",
54693 "AuthCert",
54694 "Hello",
54695 "Auth",
54696 "IpAddrType",
54697 "PeerAddress",
54698 "PeerAddressIp",
54699 "MessageType",
54700 "DontHave",
54701 "SurveyMessageCommandType",
54702 "SurveyMessageResponseType",
54703 "TimeSlicedSurveyStartCollectingMessage",
54704 "SignedTimeSlicedSurveyStartCollectingMessage",
54705 "TimeSlicedSurveyStopCollectingMessage",
54706 "SignedTimeSlicedSurveyStopCollectingMessage",
54707 "SurveyRequestMessage",
54708 "TimeSlicedSurveyRequestMessage",
54709 "SignedTimeSlicedSurveyRequestMessage",
54710 "EncryptedBody",
54711 "SurveyResponseMessage",
54712 "TimeSlicedSurveyResponseMessage",
54713 "SignedTimeSlicedSurveyResponseMessage",
54714 "PeerStats",
54715 "TimeSlicedNodeData",
54716 "TimeSlicedPeerData",
54717 "TimeSlicedPeerDataList",
54718 "TopologyResponseBodyV2",
54719 "SurveyResponseBody",
54720 "TxAdvertVector",
54721 "FloodAdvert",
54722 "TxDemandVector",
54723 "FloodDemand",
54724 "StellarMessage",
54725 "AuthenticatedMessage",
54726 "AuthenticatedMessageV0",
54727 "LiquidityPoolParameters",
54728 "MuxedAccount",
54729 "MuxedAccountMed25519",
54730 "DecoratedSignature",
54731 "OperationType",
54732 "CreateAccountOp",
54733 "PaymentOp",
54734 "PathPaymentStrictReceiveOp",
54735 "PathPaymentStrictSendOp",
54736 "ManageSellOfferOp",
54737 "ManageBuyOfferOp",
54738 "CreatePassiveSellOfferOp",
54739 "SetOptionsOp",
54740 "ChangeTrustAsset",
54741 "ChangeTrustOp",
54742 "AllowTrustOp",
54743 "ManageDataOp",
54744 "BumpSequenceOp",
54745 "CreateClaimableBalanceOp",
54746 "ClaimClaimableBalanceOp",
54747 "BeginSponsoringFutureReservesOp",
54748 "RevokeSponsorshipType",
54749 "RevokeSponsorshipOp",
54750 "RevokeSponsorshipOpSigner",
54751 "ClawbackOp",
54752 "ClawbackClaimableBalanceOp",
54753 "SetTrustLineFlagsOp",
54754 "LiquidityPoolDepositOp",
54755 "LiquidityPoolWithdrawOp",
54756 "HostFunctionType",
54757 "ContractIdPreimageType",
54758 "ContractIdPreimage",
54759 "ContractIdPreimageFromAddress",
54760 "CreateContractArgs",
54761 "CreateContractArgsV2",
54762 "InvokeContractArgs",
54763 "HostFunction",
54764 "SorobanAuthorizedFunctionType",
54765 "SorobanAuthorizedFunction",
54766 "SorobanAuthorizedInvocation",
54767 "SorobanAddressCredentials",
54768 "SorobanCredentialsType",
54769 "SorobanCredentials",
54770 "SorobanAuthorizationEntry",
54771 "SorobanAuthorizationEntries",
54772 "InvokeHostFunctionOp",
54773 "ExtendFootprintTtlOp",
54774 "RestoreFootprintOp",
54775 "Operation",
54776 "OperationBody",
54777 "HashIdPreimage",
54778 "HashIdPreimageOperationId",
54779 "HashIdPreimageRevokeId",
54780 "HashIdPreimageContractId",
54781 "HashIdPreimageSorobanAuthorization",
54782 "MemoType",
54783 "Memo",
54784 "TimeBounds",
54785 "LedgerBounds",
54786 "PreconditionsV2",
54787 "PreconditionType",
54788 "Preconditions",
54789 "LedgerFootprint",
54790 "SorobanResources",
54791 "SorobanResourcesExtV0",
54792 "SorobanTransactionData",
54793 "SorobanTransactionDataExt",
54794 "TransactionV0",
54795 "TransactionV0Ext",
54796 "TransactionV0Envelope",
54797 "Transaction",
54798 "TransactionExt",
54799 "TransactionV1Envelope",
54800 "FeeBumpTransaction",
54801 "FeeBumpTransactionInnerTx",
54802 "FeeBumpTransactionExt",
54803 "FeeBumpTransactionEnvelope",
54804 "TransactionEnvelope",
54805 "TransactionSignaturePayload",
54806 "TransactionSignaturePayloadTaggedTransaction",
54807 "ClaimAtomType",
54808 "ClaimOfferAtomV0",
54809 "ClaimOfferAtom",
54810 "ClaimLiquidityAtom",
54811 "ClaimAtom",
54812 "CreateAccountResultCode",
54813 "CreateAccountResult",
54814 "PaymentResultCode",
54815 "PaymentResult",
54816 "PathPaymentStrictReceiveResultCode",
54817 "SimplePaymentResult",
54818 "PathPaymentStrictReceiveResult",
54819 "PathPaymentStrictReceiveResultSuccess",
54820 "PathPaymentStrictSendResultCode",
54821 "PathPaymentStrictSendResult",
54822 "PathPaymentStrictSendResultSuccess",
54823 "ManageSellOfferResultCode",
54824 "ManageOfferEffect",
54825 "ManageOfferSuccessResult",
54826 "ManageOfferSuccessResultOffer",
54827 "ManageSellOfferResult",
54828 "ManageBuyOfferResultCode",
54829 "ManageBuyOfferResult",
54830 "SetOptionsResultCode",
54831 "SetOptionsResult",
54832 "ChangeTrustResultCode",
54833 "ChangeTrustResult",
54834 "AllowTrustResultCode",
54835 "AllowTrustResult",
54836 "AccountMergeResultCode",
54837 "AccountMergeResult",
54838 "InflationResultCode",
54839 "InflationPayout",
54840 "InflationResult",
54841 "ManageDataResultCode",
54842 "ManageDataResult",
54843 "BumpSequenceResultCode",
54844 "BumpSequenceResult",
54845 "CreateClaimableBalanceResultCode",
54846 "CreateClaimableBalanceResult",
54847 "ClaimClaimableBalanceResultCode",
54848 "ClaimClaimableBalanceResult",
54849 "BeginSponsoringFutureReservesResultCode",
54850 "BeginSponsoringFutureReservesResult",
54851 "EndSponsoringFutureReservesResultCode",
54852 "EndSponsoringFutureReservesResult",
54853 "RevokeSponsorshipResultCode",
54854 "RevokeSponsorshipResult",
54855 "ClawbackResultCode",
54856 "ClawbackResult",
54857 "ClawbackClaimableBalanceResultCode",
54858 "ClawbackClaimableBalanceResult",
54859 "SetTrustLineFlagsResultCode",
54860 "SetTrustLineFlagsResult",
54861 "LiquidityPoolDepositResultCode",
54862 "LiquidityPoolDepositResult",
54863 "LiquidityPoolWithdrawResultCode",
54864 "LiquidityPoolWithdrawResult",
54865 "InvokeHostFunctionResultCode",
54866 "InvokeHostFunctionResult",
54867 "ExtendFootprintTtlResultCode",
54868 "ExtendFootprintTtlResult",
54869 "RestoreFootprintResultCode",
54870 "RestoreFootprintResult",
54871 "OperationResultCode",
54872 "OperationResult",
54873 "OperationResultTr",
54874 "TransactionResultCode",
54875 "InnerTransactionResult",
54876 "InnerTransactionResultResult",
54877 "InnerTransactionResultExt",
54878 "InnerTransactionResultPair",
54879 "TransactionResult",
54880 "TransactionResultResult",
54881 "TransactionResultExt",
54882 "Hash",
54883 "Uint256",
54884 "Uint32",
54885 "Int32",
54886 "Uint64",
54887 "Int64",
54888 "TimePoint",
54889 "Duration",
54890 "ExtensionPoint",
54891 "CryptoKeyType",
54892 "PublicKeyType",
54893 "SignerKeyType",
54894 "PublicKey",
54895 "SignerKey",
54896 "SignerKeyEd25519SignedPayload",
54897 "Signature",
54898 "SignatureHint",
54899 "NodeId",
54900 "AccountId",
54901 "ContractId",
54902 "Curve25519Secret",
54903 "Curve25519Public",
54904 "HmacSha256Key",
54905 "HmacSha256Mac",
54906 "ShortHashSeed",
54907 "BinaryFuseFilterType",
54908 "SerializedBinaryFuseFilter",
54909 "PoolId",
54910 "ClaimableBalanceIdType",
54911 "ClaimableBalanceId",
54912 ];
54913
54914 #[cfg(feature = "std")]
54915 #[allow(clippy::too_many_lines)]
54916 pub fn read_xdr<R: Read>(v: TypeVariant, r: &mut Limited<R>) -> Result<Self, Error> {
54917 match v {
54918 TypeVariant::Value => {
54919 r.with_limited_depth(|r| Ok(Self::Value(Box::new(Value::read_xdr(r)?))))
54920 }
54921 TypeVariant::ScpBallot => {
54922 r.with_limited_depth(|r| Ok(Self::ScpBallot(Box::new(ScpBallot::read_xdr(r)?))))
54923 }
54924 TypeVariant::ScpStatementType => r.with_limited_depth(|r| {
54925 Ok(Self::ScpStatementType(Box::new(
54926 ScpStatementType::read_xdr(r)?,
54927 )))
54928 }),
54929 TypeVariant::ScpNomination => r.with_limited_depth(|r| {
54930 Ok(Self::ScpNomination(Box::new(ScpNomination::read_xdr(r)?)))
54931 }),
54932 TypeVariant::ScpStatement => r.with_limited_depth(|r| {
54933 Ok(Self::ScpStatement(Box::new(ScpStatement::read_xdr(r)?)))
54934 }),
54935 TypeVariant::ScpStatementPledges => r.with_limited_depth(|r| {
54936 Ok(Self::ScpStatementPledges(Box::new(
54937 ScpStatementPledges::read_xdr(r)?,
54938 )))
54939 }),
54940 TypeVariant::ScpStatementPrepare => r.with_limited_depth(|r| {
54941 Ok(Self::ScpStatementPrepare(Box::new(
54942 ScpStatementPrepare::read_xdr(r)?,
54943 )))
54944 }),
54945 TypeVariant::ScpStatementConfirm => r.with_limited_depth(|r| {
54946 Ok(Self::ScpStatementConfirm(Box::new(
54947 ScpStatementConfirm::read_xdr(r)?,
54948 )))
54949 }),
54950 TypeVariant::ScpStatementExternalize => r.with_limited_depth(|r| {
54951 Ok(Self::ScpStatementExternalize(Box::new(
54952 ScpStatementExternalize::read_xdr(r)?,
54953 )))
54954 }),
54955 TypeVariant::ScpEnvelope => {
54956 r.with_limited_depth(|r| Ok(Self::ScpEnvelope(Box::new(ScpEnvelope::read_xdr(r)?))))
54957 }
54958 TypeVariant::ScpQuorumSet => r.with_limited_depth(|r| {
54959 Ok(Self::ScpQuorumSet(Box::new(ScpQuorumSet::read_xdr(r)?)))
54960 }),
54961 TypeVariant::ConfigSettingContractExecutionLanesV0 => r.with_limited_depth(|r| {
54962 Ok(Self::ConfigSettingContractExecutionLanesV0(Box::new(
54963 ConfigSettingContractExecutionLanesV0::read_xdr(r)?,
54964 )))
54965 }),
54966 TypeVariant::ConfigSettingContractComputeV0 => r.with_limited_depth(|r| {
54967 Ok(Self::ConfigSettingContractComputeV0(Box::new(
54968 ConfigSettingContractComputeV0::read_xdr(r)?,
54969 )))
54970 }),
54971 TypeVariant::ConfigSettingContractParallelComputeV0 => r.with_limited_depth(|r| {
54972 Ok(Self::ConfigSettingContractParallelComputeV0(Box::new(
54973 ConfigSettingContractParallelComputeV0::read_xdr(r)?,
54974 )))
54975 }),
54976 TypeVariant::ConfigSettingContractLedgerCostV0 => r.with_limited_depth(|r| {
54977 Ok(Self::ConfigSettingContractLedgerCostV0(Box::new(
54978 ConfigSettingContractLedgerCostV0::read_xdr(r)?,
54979 )))
54980 }),
54981 TypeVariant::ConfigSettingContractLedgerCostExtV0 => r.with_limited_depth(|r| {
54982 Ok(Self::ConfigSettingContractLedgerCostExtV0(Box::new(
54983 ConfigSettingContractLedgerCostExtV0::read_xdr(r)?,
54984 )))
54985 }),
54986 TypeVariant::ConfigSettingContractHistoricalDataV0 => r.with_limited_depth(|r| {
54987 Ok(Self::ConfigSettingContractHistoricalDataV0(Box::new(
54988 ConfigSettingContractHistoricalDataV0::read_xdr(r)?,
54989 )))
54990 }),
54991 TypeVariant::ConfigSettingContractEventsV0 => r.with_limited_depth(|r| {
54992 Ok(Self::ConfigSettingContractEventsV0(Box::new(
54993 ConfigSettingContractEventsV0::read_xdr(r)?,
54994 )))
54995 }),
54996 TypeVariant::ConfigSettingContractBandwidthV0 => r.with_limited_depth(|r| {
54997 Ok(Self::ConfigSettingContractBandwidthV0(Box::new(
54998 ConfigSettingContractBandwidthV0::read_xdr(r)?,
54999 )))
55000 }),
55001 TypeVariant::ContractCostType => r.with_limited_depth(|r| {
55002 Ok(Self::ContractCostType(Box::new(
55003 ContractCostType::read_xdr(r)?,
55004 )))
55005 }),
55006 TypeVariant::ContractCostParamEntry => r.with_limited_depth(|r| {
55007 Ok(Self::ContractCostParamEntry(Box::new(
55008 ContractCostParamEntry::read_xdr(r)?,
55009 )))
55010 }),
55011 TypeVariant::StateArchivalSettings => r.with_limited_depth(|r| {
55012 Ok(Self::StateArchivalSettings(Box::new(
55013 StateArchivalSettings::read_xdr(r)?,
55014 )))
55015 }),
55016 TypeVariant::EvictionIterator => r.with_limited_depth(|r| {
55017 Ok(Self::EvictionIterator(Box::new(
55018 EvictionIterator::read_xdr(r)?,
55019 )))
55020 }),
55021 TypeVariant::ConfigSettingScpTiming => r.with_limited_depth(|r| {
55022 Ok(Self::ConfigSettingScpTiming(Box::new(
55023 ConfigSettingScpTiming::read_xdr(r)?,
55024 )))
55025 }),
55026 TypeVariant::ContractCostParams => r.with_limited_depth(|r| {
55027 Ok(Self::ContractCostParams(Box::new(
55028 ContractCostParams::read_xdr(r)?,
55029 )))
55030 }),
55031 TypeVariant::ConfigSettingId => r.with_limited_depth(|r| {
55032 Ok(Self::ConfigSettingId(Box::new(ConfigSettingId::read_xdr(
55033 r,
55034 )?)))
55035 }),
55036 TypeVariant::ConfigSettingEntry => r.with_limited_depth(|r| {
55037 Ok(Self::ConfigSettingEntry(Box::new(
55038 ConfigSettingEntry::read_xdr(r)?,
55039 )))
55040 }),
55041 TypeVariant::ScEnvMetaKind => r.with_limited_depth(|r| {
55042 Ok(Self::ScEnvMetaKind(Box::new(ScEnvMetaKind::read_xdr(r)?)))
55043 }),
55044 TypeVariant::ScEnvMetaEntry => r.with_limited_depth(|r| {
55045 Ok(Self::ScEnvMetaEntry(Box::new(ScEnvMetaEntry::read_xdr(r)?)))
55046 }),
55047 TypeVariant::ScEnvMetaEntryInterfaceVersion => r.with_limited_depth(|r| {
55048 Ok(Self::ScEnvMetaEntryInterfaceVersion(Box::new(
55049 ScEnvMetaEntryInterfaceVersion::read_xdr(r)?,
55050 )))
55051 }),
55052 TypeVariant::ScMetaV0 => {
55053 r.with_limited_depth(|r| Ok(Self::ScMetaV0(Box::new(ScMetaV0::read_xdr(r)?))))
55054 }
55055 TypeVariant::ScMetaKind => {
55056 r.with_limited_depth(|r| Ok(Self::ScMetaKind(Box::new(ScMetaKind::read_xdr(r)?))))
55057 }
55058 TypeVariant::ScMetaEntry => {
55059 r.with_limited_depth(|r| Ok(Self::ScMetaEntry(Box::new(ScMetaEntry::read_xdr(r)?))))
55060 }
55061 TypeVariant::ScSpecType => {
55062 r.with_limited_depth(|r| Ok(Self::ScSpecType(Box::new(ScSpecType::read_xdr(r)?))))
55063 }
55064 TypeVariant::ScSpecTypeOption => r.with_limited_depth(|r| {
55065 Ok(Self::ScSpecTypeOption(Box::new(
55066 ScSpecTypeOption::read_xdr(r)?,
55067 )))
55068 }),
55069 TypeVariant::ScSpecTypeResult => r.with_limited_depth(|r| {
55070 Ok(Self::ScSpecTypeResult(Box::new(
55071 ScSpecTypeResult::read_xdr(r)?,
55072 )))
55073 }),
55074 TypeVariant::ScSpecTypeVec => r.with_limited_depth(|r| {
55075 Ok(Self::ScSpecTypeVec(Box::new(ScSpecTypeVec::read_xdr(r)?)))
55076 }),
55077 TypeVariant::ScSpecTypeMap => r.with_limited_depth(|r| {
55078 Ok(Self::ScSpecTypeMap(Box::new(ScSpecTypeMap::read_xdr(r)?)))
55079 }),
55080 TypeVariant::ScSpecTypeTuple => r.with_limited_depth(|r| {
55081 Ok(Self::ScSpecTypeTuple(Box::new(ScSpecTypeTuple::read_xdr(
55082 r,
55083 )?)))
55084 }),
55085 TypeVariant::ScSpecTypeBytesN => r.with_limited_depth(|r| {
55086 Ok(Self::ScSpecTypeBytesN(Box::new(
55087 ScSpecTypeBytesN::read_xdr(r)?,
55088 )))
55089 }),
55090 TypeVariant::ScSpecTypeUdt => r.with_limited_depth(|r| {
55091 Ok(Self::ScSpecTypeUdt(Box::new(ScSpecTypeUdt::read_xdr(r)?)))
55092 }),
55093 TypeVariant::ScSpecTypeDef => r.with_limited_depth(|r| {
55094 Ok(Self::ScSpecTypeDef(Box::new(ScSpecTypeDef::read_xdr(r)?)))
55095 }),
55096 TypeVariant::ScSpecUdtStructFieldV0 => r.with_limited_depth(|r| {
55097 Ok(Self::ScSpecUdtStructFieldV0(Box::new(
55098 ScSpecUdtStructFieldV0::read_xdr(r)?,
55099 )))
55100 }),
55101 TypeVariant::ScSpecUdtStructV0 => r.with_limited_depth(|r| {
55102 Ok(Self::ScSpecUdtStructV0(Box::new(
55103 ScSpecUdtStructV0::read_xdr(r)?,
55104 )))
55105 }),
55106 TypeVariant::ScSpecUdtUnionCaseVoidV0 => r.with_limited_depth(|r| {
55107 Ok(Self::ScSpecUdtUnionCaseVoidV0(Box::new(
55108 ScSpecUdtUnionCaseVoidV0::read_xdr(r)?,
55109 )))
55110 }),
55111 TypeVariant::ScSpecUdtUnionCaseTupleV0 => r.with_limited_depth(|r| {
55112 Ok(Self::ScSpecUdtUnionCaseTupleV0(Box::new(
55113 ScSpecUdtUnionCaseTupleV0::read_xdr(r)?,
55114 )))
55115 }),
55116 TypeVariant::ScSpecUdtUnionCaseV0Kind => r.with_limited_depth(|r| {
55117 Ok(Self::ScSpecUdtUnionCaseV0Kind(Box::new(
55118 ScSpecUdtUnionCaseV0Kind::read_xdr(r)?,
55119 )))
55120 }),
55121 TypeVariant::ScSpecUdtUnionCaseV0 => r.with_limited_depth(|r| {
55122 Ok(Self::ScSpecUdtUnionCaseV0(Box::new(
55123 ScSpecUdtUnionCaseV0::read_xdr(r)?,
55124 )))
55125 }),
55126 TypeVariant::ScSpecUdtUnionV0 => r.with_limited_depth(|r| {
55127 Ok(Self::ScSpecUdtUnionV0(Box::new(
55128 ScSpecUdtUnionV0::read_xdr(r)?,
55129 )))
55130 }),
55131 TypeVariant::ScSpecUdtEnumCaseV0 => r.with_limited_depth(|r| {
55132 Ok(Self::ScSpecUdtEnumCaseV0(Box::new(
55133 ScSpecUdtEnumCaseV0::read_xdr(r)?,
55134 )))
55135 }),
55136 TypeVariant::ScSpecUdtEnumV0 => r.with_limited_depth(|r| {
55137 Ok(Self::ScSpecUdtEnumV0(Box::new(ScSpecUdtEnumV0::read_xdr(
55138 r,
55139 )?)))
55140 }),
55141 TypeVariant::ScSpecUdtErrorEnumCaseV0 => r.with_limited_depth(|r| {
55142 Ok(Self::ScSpecUdtErrorEnumCaseV0(Box::new(
55143 ScSpecUdtErrorEnumCaseV0::read_xdr(r)?,
55144 )))
55145 }),
55146 TypeVariant::ScSpecUdtErrorEnumV0 => r.with_limited_depth(|r| {
55147 Ok(Self::ScSpecUdtErrorEnumV0(Box::new(
55148 ScSpecUdtErrorEnumV0::read_xdr(r)?,
55149 )))
55150 }),
55151 TypeVariant::ScSpecFunctionInputV0 => r.with_limited_depth(|r| {
55152 Ok(Self::ScSpecFunctionInputV0(Box::new(
55153 ScSpecFunctionInputV0::read_xdr(r)?,
55154 )))
55155 }),
55156 TypeVariant::ScSpecFunctionV0 => r.with_limited_depth(|r| {
55157 Ok(Self::ScSpecFunctionV0(Box::new(
55158 ScSpecFunctionV0::read_xdr(r)?,
55159 )))
55160 }),
55161 TypeVariant::ScSpecEventParamLocationV0 => r.with_limited_depth(|r| {
55162 Ok(Self::ScSpecEventParamLocationV0(Box::new(
55163 ScSpecEventParamLocationV0::read_xdr(r)?,
55164 )))
55165 }),
55166 TypeVariant::ScSpecEventParamV0 => r.with_limited_depth(|r| {
55167 Ok(Self::ScSpecEventParamV0(Box::new(
55168 ScSpecEventParamV0::read_xdr(r)?,
55169 )))
55170 }),
55171 TypeVariant::ScSpecEventDataFormat => r.with_limited_depth(|r| {
55172 Ok(Self::ScSpecEventDataFormat(Box::new(
55173 ScSpecEventDataFormat::read_xdr(r)?,
55174 )))
55175 }),
55176 TypeVariant::ScSpecEventV0 => r.with_limited_depth(|r| {
55177 Ok(Self::ScSpecEventV0(Box::new(ScSpecEventV0::read_xdr(r)?)))
55178 }),
55179 TypeVariant::ScSpecEntryKind => r.with_limited_depth(|r| {
55180 Ok(Self::ScSpecEntryKind(Box::new(ScSpecEntryKind::read_xdr(
55181 r,
55182 )?)))
55183 }),
55184 TypeVariant::ScSpecEntry => {
55185 r.with_limited_depth(|r| Ok(Self::ScSpecEntry(Box::new(ScSpecEntry::read_xdr(r)?))))
55186 }
55187 TypeVariant::ScValType => {
55188 r.with_limited_depth(|r| Ok(Self::ScValType(Box::new(ScValType::read_xdr(r)?))))
55189 }
55190 TypeVariant::ScErrorType => {
55191 r.with_limited_depth(|r| Ok(Self::ScErrorType(Box::new(ScErrorType::read_xdr(r)?))))
55192 }
55193 TypeVariant::ScErrorCode => {
55194 r.with_limited_depth(|r| Ok(Self::ScErrorCode(Box::new(ScErrorCode::read_xdr(r)?))))
55195 }
55196 TypeVariant::ScError => {
55197 r.with_limited_depth(|r| Ok(Self::ScError(Box::new(ScError::read_xdr(r)?))))
55198 }
55199 TypeVariant::UInt128Parts => r.with_limited_depth(|r| {
55200 Ok(Self::UInt128Parts(Box::new(UInt128Parts::read_xdr(r)?)))
55201 }),
55202 TypeVariant::Int128Parts => {
55203 r.with_limited_depth(|r| Ok(Self::Int128Parts(Box::new(Int128Parts::read_xdr(r)?))))
55204 }
55205 TypeVariant::UInt256Parts => r.with_limited_depth(|r| {
55206 Ok(Self::UInt256Parts(Box::new(UInt256Parts::read_xdr(r)?)))
55207 }),
55208 TypeVariant::Int256Parts => {
55209 r.with_limited_depth(|r| Ok(Self::Int256Parts(Box::new(Int256Parts::read_xdr(r)?))))
55210 }
55211 TypeVariant::ContractExecutableType => r.with_limited_depth(|r| {
55212 Ok(Self::ContractExecutableType(Box::new(
55213 ContractExecutableType::read_xdr(r)?,
55214 )))
55215 }),
55216 TypeVariant::ContractExecutable => r.with_limited_depth(|r| {
55217 Ok(Self::ContractExecutable(Box::new(
55218 ContractExecutable::read_xdr(r)?,
55219 )))
55220 }),
55221 TypeVariant::ScAddressType => r.with_limited_depth(|r| {
55222 Ok(Self::ScAddressType(Box::new(ScAddressType::read_xdr(r)?)))
55223 }),
55224 TypeVariant::MuxedEd25519Account => r.with_limited_depth(|r| {
55225 Ok(Self::MuxedEd25519Account(Box::new(
55226 MuxedEd25519Account::read_xdr(r)?,
55227 )))
55228 }),
55229 TypeVariant::ScAddress => {
55230 r.with_limited_depth(|r| Ok(Self::ScAddress(Box::new(ScAddress::read_xdr(r)?))))
55231 }
55232 TypeVariant::ScVec => {
55233 r.with_limited_depth(|r| Ok(Self::ScVec(Box::new(ScVec::read_xdr(r)?))))
55234 }
55235 TypeVariant::ScMap => {
55236 r.with_limited_depth(|r| Ok(Self::ScMap(Box::new(ScMap::read_xdr(r)?))))
55237 }
55238 TypeVariant::ScBytes => {
55239 r.with_limited_depth(|r| Ok(Self::ScBytes(Box::new(ScBytes::read_xdr(r)?))))
55240 }
55241 TypeVariant::ScString => {
55242 r.with_limited_depth(|r| Ok(Self::ScString(Box::new(ScString::read_xdr(r)?))))
55243 }
55244 TypeVariant::ScSymbol => {
55245 r.with_limited_depth(|r| Ok(Self::ScSymbol(Box::new(ScSymbol::read_xdr(r)?))))
55246 }
55247 TypeVariant::ScNonceKey => {
55248 r.with_limited_depth(|r| Ok(Self::ScNonceKey(Box::new(ScNonceKey::read_xdr(r)?))))
55249 }
55250 TypeVariant::ScContractInstance => r.with_limited_depth(|r| {
55251 Ok(Self::ScContractInstance(Box::new(
55252 ScContractInstance::read_xdr(r)?,
55253 )))
55254 }),
55255 TypeVariant::ScVal => {
55256 r.with_limited_depth(|r| Ok(Self::ScVal(Box::new(ScVal::read_xdr(r)?))))
55257 }
55258 TypeVariant::ScMapEntry => {
55259 r.with_limited_depth(|r| Ok(Self::ScMapEntry(Box::new(ScMapEntry::read_xdr(r)?))))
55260 }
55261 TypeVariant::LedgerCloseMetaBatch => r.with_limited_depth(|r| {
55262 Ok(Self::LedgerCloseMetaBatch(Box::new(
55263 LedgerCloseMetaBatch::read_xdr(r)?,
55264 )))
55265 }),
55266 TypeVariant::StoredTransactionSet => r.with_limited_depth(|r| {
55267 Ok(Self::StoredTransactionSet(Box::new(
55268 StoredTransactionSet::read_xdr(r)?,
55269 )))
55270 }),
55271 TypeVariant::StoredDebugTransactionSet => r.with_limited_depth(|r| {
55272 Ok(Self::StoredDebugTransactionSet(Box::new(
55273 StoredDebugTransactionSet::read_xdr(r)?,
55274 )))
55275 }),
55276 TypeVariant::PersistedScpStateV0 => r.with_limited_depth(|r| {
55277 Ok(Self::PersistedScpStateV0(Box::new(
55278 PersistedScpStateV0::read_xdr(r)?,
55279 )))
55280 }),
55281 TypeVariant::PersistedScpStateV1 => r.with_limited_depth(|r| {
55282 Ok(Self::PersistedScpStateV1(Box::new(
55283 PersistedScpStateV1::read_xdr(r)?,
55284 )))
55285 }),
55286 TypeVariant::PersistedScpState => r.with_limited_depth(|r| {
55287 Ok(Self::PersistedScpState(Box::new(
55288 PersistedScpState::read_xdr(r)?,
55289 )))
55290 }),
55291 TypeVariant::Thresholds => {
55292 r.with_limited_depth(|r| Ok(Self::Thresholds(Box::new(Thresholds::read_xdr(r)?))))
55293 }
55294 TypeVariant::String32 => {
55295 r.with_limited_depth(|r| Ok(Self::String32(Box::new(String32::read_xdr(r)?))))
55296 }
55297 TypeVariant::String64 => {
55298 r.with_limited_depth(|r| Ok(Self::String64(Box::new(String64::read_xdr(r)?))))
55299 }
55300 TypeVariant::SequenceNumber => r.with_limited_depth(|r| {
55301 Ok(Self::SequenceNumber(Box::new(SequenceNumber::read_xdr(r)?)))
55302 }),
55303 TypeVariant::DataValue => {
55304 r.with_limited_depth(|r| Ok(Self::DataValue(Box::new(DataValue::read_xdr(r)?))))
55305 }
55306 TypeVariant::AssetCode4 => {
55307 r.with_limited_depth(|r| Ok(Self::AssetCode4(Box::new(AssetCode4::read_xdr(r)?))))
55308 }
55309 TypeVariant::AssetCode12 => {
55310 r.with_limited_depth(|r| Ok(Self::AssetCode12(Box::new(AssetCode12::read_xdr(r)?))))
55311 }
55312 TypeVariant::AssetType => {
55313 r.with_limited_depth(|r| Ok(Self::AssetType(Box::new(AssetType::read_xdr(r)?))))
55314 }
55315 TypeVariant::AssetCode => {
55316 r.with_limited_depth(|r| Ok(Self::AssetCode(Box::new(AssetCode::read_xdr(r)?))))
55317 }
55318 TypeVariant::AlphaNum4 => {
55319 r.with_limited_depth(|r| Ok(Self::AlphaNum4(Box::new(AlphaNum4::read_xdr(r)?))))
55320 }
55321 TypeVariant::AlphaNum12 => {
55322 r.with_limited_depth(|r| Ok(Self::AlphaNum12(Box::new(AlphaNum12::read_xdr(r)?))))
55323 }
55324 TypeVariant::Asset => {
55325 r.with_limited_depth(|r| Ok(Self::Asset(Box::new(Asset::read_xdr(r)?))))
55326 }
55327 TypeVariant::Price => {
55328 r.with_limited_depth(|r| Ok(Self::Price(Box::new(Price::read_xdr(r)?))))
55329 }
55330 TypeVariant::Liabilities => {
55331 r.with_limited_depth(|r| Ok(Self::Liabilities(Box::new(Liabilities::read_xdr(r)?))))
55332 }
55333 TypeVariant::ThresholdIndexes => r.with_limited_depth(|r| {
55334 Ok(Self::ThresholdIndexes(Box::new(
55335 ThresholdIndexes::read_xdr(r)?,
55336 )))
55337 }),
55338 TypeVariant::LedgerEntryType => r.with_limited_depth(|r| {
55339 Ok(Self::LedgerEntryType(Box::new(LedgerEntryType::read_xdr(
55340 r,
55341 )?)))
55342 }),
55343 TypeVariant::Signer => {
55344 r.with_limited_depth(|r| Ok(Self::Signer(Box::new(Signer::read_xdr(r)?))))
55345 }
55346 TypeVariant::AccountFlags => r.with_limited_depth(|r| {
55347 Ok(Self::AccountFlags(Box::new(AccountFlags::read_xdr(r)?)))
55348 }),
55349 TypeVariant::SponsorshipDescriptor => r.with_limited_depth(|r| {
55350 Ok(Self::SponsorshipDescriptor(Box::new(
55351 SponsorshipDescriptor::read_xdr(r)?,
55352 )))
55353 }),
55354 TypeVariant::AccountEntryExtensionV3 => r.with_limited_depth(|r| {
55355 Ok(Self::AccountEntryExtensionV3(Box::new(
55356 AccountEntryExtensionV3::read_xdr(r)?,
55357 )))
55358 }),
55359 TypeVariant::AccountEntryExtensionV2 => r.with_limited_depth(|r| {
55360 Ok(Self::AccountEntryExtensionV2(Box::new(
55361 AccountEntryExtensionV2::read_xdr(r)?,
55362 )))
55363 }),
55364 TypeVariant::AccountEntryExtensionV2Ext => r.with_limited_depth(|r| {
55365 Ok(Self::AccountEntryExtensionV2Ext(Box::new(
55366 AccountEntryExtensionV2Ext::read_xdr(r)?,
55367 )))
55368 }),
55369 TypeVariant::AccountEntryExtensionV1 => r.with_limited_depth(|r| {
55370 Ok(Self::AccountEntryExtensionV1(Box::new(
55371 AccountEntryExtensionV1::read_xdr(r)?,
55372 )))
55373 }),
55374 TypeVariant::AccountEntryExtensionV1Ext => r.with_limited_depth(|r| {
55375 Ok(Self::AccountEntryExtensionV1Ext(Box::new(
55376 AccountEntryExtensionV1Ext::read_xdr(r)?,
55377 )))
55378 }),
55379 TypeVariant::AccountEntry => r.with_limited_depth(|r| {
55380 Ok(Self::AccountEntry(Box::new(AccountEntry::read_xdr(r)?)))
55381 }),
55382 TypeVariant::AccountEntryExt => r.with_limited_depth(|r| {
55383 Ok(Self::AccountEntryExt(Box::new(AccountEntryExt::read_xdr(
55384 r,
55385 )?)))
55386 }),
55387 TypeVariant::TrustLineFlags => r.with_limited_depth(|r| {
55388 Ok(Self::TrustLineFlags(Box::new(TrustLineFlags::read_xdr(r)?)))
55389 }),
55390 TypeVariant::LiquidityPoolType => r.with_limited_depth(|r| {
55391 Ok(Self::LiquidityPoolType(Box::new(
55392 LiquidityPoolType::read_xdr(r)?,
55393 )))
55394 }),
55395 TypeVariant::TrustLineAsset => r.with_limited_depth(|r| {
55396 Ok(Self::TrustLineAsset(Box::new(TrustLineAsset::read_xdr(r)?)))
55397 }),
55398 TypeVariant::TrustLineEntryExtensionV2 => r.with_limited_depth(|r| {
55399 Ok(Self::TrustLineEntryExtensionV2(Box::new(
55400 TrustLineEntryExtensionV2::read_xdr(r)?,
55401 )))
55402 }),
55403 TypeVariant::TrustLineEntryExtensionV2Ext => r.with_limited_depth(|r| {
55404 Ok(Self::TrustLineEntryExtensionV2Ext(Box::new(
55405 TrustLineEntryExtensionV2Ext::read_xdr(r)?,
55406 )))
55407 }),
55408 TypeVariant::TrustLineEntry => r.with_limited_depth(|r| {
55409 Ok(Self::TrustLineEntry(Box::new(TrustLineEntry::read_xdr(r)?)))
55410 }),
55411 TypeVariant::TrustLineEntryExt => r.with_limited_depth(|r| {
55412 Ok(Self::TrustLineEntryExt(Box::new(
55413 TrustLineEntryExt::read_xdr(r)?,
55414 )))
55415 }),
55416 TypeVariant::TrustLineEntryV1 => r.with_limited_depth(|r| {
55417 Ok(Self::TrustLineEntryV1(Box::new(
55418 TrustLineEntryV1::read_xdr(r)?,
55419 )))
55420 }),
55421 TypeVariant::TrustLineEntryV1Ext => r.with_limited_depth(|r| {
55422 Ok(Self::TrustLineEntryV1Ext(Box::new(
55423 TrustLineEntryV1Ext::read_xdr(r)?,
55424 )))
55425 }),
55426 TypeVariant::OfferEntryFlags => r.with_limited_depth(|r| {
55427 Ok(Self::OfferEntryFlags(Box::new(OfferEntryFlags::read_xdr(
55428 r,
55429 )?)))
55430 }),
55431 TypeVariant::OfferEntry => {
55432 r.with_limited_depth(|r| Ok(Self::OfferEntry(Box::new(OfferEntry::read_xdr(r)?))))
55433 }
55434 TypeVariant::OfferEntryExt => r.with_limited_depth(|r| {
55435 Ok(Self::OfferEntryExt(Box::new(OfferEntryExt::read_xdr(r)?)))
55436 }),
55437 TypeVariant::DataEntry => {
55438 r.with_limited_depth(|r| Ok(Self::DataEntry(Box::new(DataEntry::read_xdr(r)?))))
55439 }
55440 TypeVariant::DataEntryExt => r.with_limited_depth(|r| {
55441 Ok(Self::DataEntryExt(Box::new(DataEntryExt::read_xdr(r)?)))
55442 }),
55443 TypeVariant::ClaimPredicateType => r.with_limited_depth(|r| {
55444 Ok(Self::ClaimPredicateType(Box::new(
55445 ClaimPredicateType::read_xdr(r)?,
55446 )))
55447 }),
55448 TypeVariant::ClaimPredicate => r.with_limited_depth(|r| {
55449 Ok(Self::ClaimPredicate(Box::new(ClaimPredicate::read_xdr(r)?)))
55450 }),
55451 TypeVariant::ClaimantType => r.with_limited_depth(|r| {
55452 Ok(Self::ClaimantType(Box::new(ClaimantType::read_xdr(r)?)))
55453 }),
55454 TypeVariant::Claimant => {
55455 r.with_limited_depth(|r| Ok(Self::Claimant(Box::new(Claimant::read_xdr(r)?))))
55456 }
55457 TypeVariant::ClaimantV0 => {
55458 r.with_limited_depth(|r| Ok(Self::ClaimantV0(Box::new(ClaimantV0::read_xdr(r)?))))
55459 }
55460 TypeVariant::ClaimableBalanceFlags => r.with_limited_depth(|r| {
55461 Ok(Self::ClaimableBalanceFlags(Box::new(
55462 ClaimableBalanceFlags::read_xdr(r)?,
55463 )))
55464 }),
55465 TypeVariant::ClaimableBalanceEntryExtensionV1 => r.with_limited_depth(|r| {
55466 Ok(Self::ClaimableBalanceEntryExtensionV1(Box::new(
55467 ClaimableBalanceEntryExtensionV1::read_xdr(r)?,
55468 )))
55469 }),
55470 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => r.with_limited_depth(|r| {
55471 Ok(Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(
55472 ClaimableBalanceEntryExtensionV1Ext::read_xdr(r)?,
55473 )))
55474 }),
55475 TypeVariant::ClaimableBalanceEntry => r.with_limited_depth(|r| {
55476 Ok(Self::ClaimableBalanceEntry(Box::new(
55477 ClaimableBalanceEntry::read_xdr(r)?,
55478 )))
55479 }),
55480 TypeVariant::ClaimableBalanceEntryExt => r.with_limited_depth(|r| {
55481 Ok(Self::ClaimableBalanceEntryExt(Box::new(
55482 ClaimableBalanceEntryExt::read_xdr(r)?,
55483 )))
55484 }),
55485 TypeVariant::LiquidityPoolConstantProductParameters => r.with_limited_depth(|r| {
55486 Ok(Self::LiquidityPoolConstantProductParameters(Box::new(
55487 LiquidityPoolConstantProductParameters::read_xdr(r)?,
55488 )))
55489 }),
55490 TypeVariant::LiquidityPoolEntry => r.with_limited_depth(|r| {
55491 Ok(Self::LiquidityPoolEntry(Box::new(
55492 LiquidityPoolEntry::read_xdr(r)?,
55493 )))
55494 }),
55495 TypeVariant::LiquidityPoolEntryBody => r.with_limited_depth(|r| {
55496 Ok(Self::LiquidityPoolEntryBody(Box::new(
55497 LiquidityPoolEntryBody::read_xdr(r)?,
55498 )))
55499 }),
55500 TypeVariant::LiquidityPoolEntryConstantProduct => r.with_limited_depth(|r| {
55501 Ok(Self::LiquidityPoolEntryConstantProduct(Box::new(
55502 LiquidityPoolEntryConstantProduct::read_xdr(r)?,
55503 )))
55504 }),
55505 TypeVariant::ContractDataDurability => r.with_limited_depth(|r| {
55506 Ok(Self::ContractDataDurability(Box::new(
55507 ContractDataDurability::read_xdr(r)?,
55508 )))
55509 }),
55510 TypeVariant::ContractDataEntry => r.with_limited_depth(|r| {
55511 Ok(Self::ContractDataEntry(Box::new(
55512 ContractDataEntry::read_xdr(r)?,
55513 )))
55514 }),
55515 TypeVariant::ContractCodeCostInputs => r.with_limited_depth(|r| {
55516 Ok(Self::ContractCodeCostInputs(Box::new(
55517 ContractCodeCostInputs::read_xdr(r)?,
55518 )))
55519 }),
55520 TypeVariant::ContractCodeEntry => r.with_limited_depth(|r| {
55521 Ok(Self::ContractCodeEntry(Box::new(
55522 ContractCodeEntry::read_xdr(r)?,
55523 )))
55524 }),
55525 TypeVariant::ContractCodeEntryExt => r.with_limited_depth(|r| {
55526 Ok(Self::ContractCodeEntryExt(Box::new(
55527 ContractCodeEntryExt::read_xdr(r)?,
55528 )))
55529 }),
55530 TypeVariant::ContractCodeEntryV1 => r.with_limited_depth(|r| {
55531 Ok(Self::ContractCodeEntryV1(Box::new(
55532 ContractCodeEntryV1::read_xdr(r)?,
55533 )))
55534 }),
55535 TypeVariant::TtlEntry => {
55536 r.with_limited_depth(|r| Ok(Self::TtlEntry(Box::new(TtlEntry::read_xdr(r)?))))
55537 }
55538 TypeVariant::LedgerEntryExtensionV1 => r.with_limited_depth(|r| {
55539 Ok(Self::LedgerEntryExtensionV1(Box::new(
55540 LedgerEntryExtensionV1::read_xdr(r)?,
55541 )))
55542 }),
55543 TypeVariant::LedgerEntryExtensionV1Ext => r.with_limited_depth(|r| {
55544 Ok(Self::LedgerEntryExtensionV1Ext(Box::new(
55545 LedgerEntryExtensionV1Ext::read_xdr(r)?,
55546 )))
55547 }),
55548 TypeVariant::LedgerEntry => {
55549 r.with_limited_depth(|r| Ok(Self::LedgerEntry(Box::new(LedgerEntry::read_xdr(r)?))))
55550 }
55551 TypeVariant::LedgerEntryData => r.with_limited_depth(|r| {
55552 Ok(Self::LedgerEntryData(Box::new(LedgerEntryData::read_xdr(
55553 r,
55554 )?)))
55555 }),
55556 TypeVariant::LedgerEntryExt => r.with_limited_depth(|r| {
55557 Ok(Self::LedgerEntryExt(Box::new(LedgerEntryExt::read_xdr(r)?)))
55558 }),
55559 TypeVariant::LedgerKey => {
55560 r.with_limited_depth(|r| Ok(Self::LedgerKey(Box::new(LedgerKey::read_xdr(r)?))))
55561 }
55562 TypeVariant::LedgerKeyAccount => r.with_limited_depth(|r| {
55563 Ok(Self::LedgerKeyAccount(Box::new(
55564 LedgerKeyAccount::read_xdr(r)?,
55565 )))
55566 }),
55567 TypeVariant::LedgerKeyTrustLine => r.with_limited_depth(|r| {
55568 Ok(Self::LedgerKeyTrustLine(Box::new(
55569 LedgerKeyTrustLine::read_xdr(r)?,
55570 )))
55571 }),
55572 TypeVariant::LedgerKeyOffer => r.with_limited_depth(|r| {
55573 Ok(Self::LedgerKeyOffer(Box::new(LedgerKeyOffer::read_xdr(r)?)))
55574 }),
55575 TypeVariant::LedgerKeyData => r.with_limited_depth(|r| {
55576 Ok(Self::LedgerKeyData(Box::new(LedgerKeyData::read_xdr(r)?)))
55577 }),
55578 TypeVariant::LedgerKeyClaimableBalance => r.with_limited_depth(|r| {
55579 Ok(Self::LedgerKeyClaimableBalance(Box::new(
55580 LedgerKeyClaimableBalance::read_xdr(r)?,
55581 )))
55582 }),
55583 TypeVariant::LedgerKeyLiquidityPool => r.with_limited_depth(|r| {
55584 Ok(Self::LedgerKeyLiquidityPool(Box::new(
55585 LedgerKeyLiquidityPool::read_xdr(r)?,
55586 )))
55587 }),
55588 TypeVariant::LedgerKeyContractData => r.with_limited_depth(|r| {
55589 Ok(Self::LedgerKeyContractData(Box::new(
55590 LedgerKeyContractData::read_xdr(r)?,
55591 )))
55592 }),
55593 TypeVariant::LedgerKeyContractCode => r.with_limited_depth(|r| {
55594 Ok(Self::LedgerKeyContractCode(Box::new(
55595 LedgerKeyContractCode::read_xdr(r)?,
55596 )))
55597 }),
55598 TypeVariant::LedgerKeyConfigSetting => r.with_limited_depth(|r| {
55599 Ok(Self::LedgerKeyConfigSetting(Box::new(
55600 LedgerKeyConfigSetting::read_xdr(r)?,
55601 )))
55602 }),
55603 TypeVariant::LedgerKeyTtl => r.with_limited_depth(|r| {
55604 Ok(Self::LedgerKeyTtl(Box::new(LedgerKeyTtl::read_xdr(r)?)))
55605 }),
55606 TypeVariant::EnvelopeType => r.with_limited_depth(|r| {
55607 Ok(Self::EnvelopeType(Box::new(EnvelopeType::read_xdr(r)?)))
55608 }),
55609 TypeVariant::BucketListType => r.with_limited_depth(|r| {
55610 Ok(Self::BucketListType(Box::new(BucketListType::read_xdr(r)?)))
55611 }),
55612 TypeVariant::BucketEntryType => r.with_limited_depth(|r| {
55613 Ok(Self::BucketEntryType(Box::new(BucketEntryType::read_xdr(
55614 r,
55615 )?)))
55616 }),
55617 TypeVariant::HotArchiveBucketEntryType => r.with_limited_depth(|r| {
55618 Ok(Self::HotArchiveBucketEntryType(Box::new(
55619 HotArchiveBucketEntryType::read_xdr(r)?,
55620 )))
55621 }),
55622 TypeVariant::BucketMetadata => r.with_limited_depth(|r| {
55623 Ok(Self::BucketMetadata(Box::new(BucketMetadata::read_xdr(r)?)))
55624 }),
55625 TypeVariant::BucketMetadataExt => r.with_limited_depth(|r| {
55626 Ok(Self::BucketMetadataExt(Box::new(
55627 BucketMetadataExt::read_xdr(r)?,
55628 )))
55629 }),
55630 TypeVariant::BucketEntry => {
55631 r.with_limited_depth(|r| Ok(Self::BucketEntry(Box::new(BucketEntry::read_xdr(r)?))))
55632 }
55633 TypeVariant::HotArchiveBucketEntry => r.with_limited_depth(|r| {
55634 Ok(Self::HotArchiveBucketEntry(Box::new(
55635 HotArchiveBucketEntry::read_xdr(r)?,
55636 )))
55637 }),
55638 TypeVariant::UpgradeType => {
55639 r.with_limited_depth(|r| Ok(Self::UpgradeType(Box::new(UpgradeType::read_xdr(r)?))))
55640 }
55641 TypeVariant::StellarValueType => r.with_limited_depth(|r| {
55642 Ok(Self::StellarValueType(Box::new(
55643 StellarValueType::read_xdr(r)?,
55644 )))
55645 }),
55646 TypeVariant::LedgerCloseValueSignature => r.with_limited_depth(|r| {
55647 Ok(Self::LedgerCloseValueSignature(Box::new(
55648 LedgerCloseValueSignature::read_xdr(r)?,
55649 )))
55650 }),
55651 TypeVariant::StellarValue => r.with_limited_depth(|r| {
55652 Ok(Self::StellarValue(Box::new(StellarValue::read_xdr(r)?)))
55653 }),
55654 TypeVariant::StellarValueExt => r.with_limited_depth(|r| {
55655 Ok(Self::StellarValueExt(Box::new(StellarValueExt::read_xdr(
55656 r,
55657 )?)))
55658 }),
55659 TypeVariant::LedgerHeaderFlags => r.with_limited_depth(|r| {
55660 Ok(Self::LedgerHeaderFlags(Box::new(
55661 LedgerHeaderFlags::read_xdr(r)?,
55662 )))
55663 }),
55664 TypeVariant::LedgerHeaderExtensionV1 => r.with_limited_depth(|r| {
55665 Ok(Self::LedgerHeaderExtensionV1(Box::new(
55666 LedgerHeaderExtensionV1::read_xdr(r)?,
55667 )))
55668 }),
55669 TypeVariant::LedgerHeaderExtensionV1Ext => r.with_limited_depth(|r| {
55670 Ok(Self::LedgerHeaderExtensionV1Ext(Box::new(
55671 LedgerHeaderExtensionV1Ext::read_xdr(r)?,
55672 )))
55673 }),
55674 TypeVariant::LedgerHeader => r.with_limited_depth(|r| {
55675 Ok(Self::LedgerHeader(Box::new(LedgerHeader::read_xdr(r)?)))
55676 }),
55677 TypeVariant::LedgerHeaderExt => r.with_limited_depth(|r| {
55678 Ok(Self::LedgerHeaderExt(Box::new(LedgerHeaderExt::read_xdr(
55679 r,
55680 )?)))
55681 }),
55682 TypeVariant::LedgerUpgradeType => r.with_limited_depth(|r| {
55683 Ok(Self::LedgerUpgradeType(Box::new(
55684 LedgerUpgradeType::read_xdr(r)?,
55685 )))
55686 }),
55687 TypeVariant::ConfigUpgradeSetKey => r.with_limited_depth(|r| {
55688 Ok(Self::ConfigUpgradeSetKey(Box::new(
55689 ConfigUpgradeSetKey::read_xdr(r)?,
55690 )))
55691 }),
55692 TypeVariant::LedgerUpgrade => r.with_limited_depth(|r| {
55693 Ok(Self::LedgerUpgrade(Box::new(LedgerUpgrade::read_xdr(r)?)))
55694 }),
55695 TypeVariant::ConfigUpgradeSet => r.with_limited_depth(|r| {
55696 Ok(Self::ConfigUpgradeSet(Box::new(
55697 ConfigUpgradeSet::read_xdr(r)?,
55698 )))
55699 }),
55700 TypeVariant::TxSetComponentType => r.with_limited_depth(|r| {
55701 Ok(Self::TxSetComponentType(Box::new(
55702 TxSetComponentType::read_xdr(r)?,
55703 )))
55704 }),
55705 TypeVariant::DependentTxCluster => r.with_limited_depth(|r| {
55706 Ok(Self::DependentTxCluster(Box::new(
55707 DependentTxCluster::read_xdr(r)?,
55708 )))
55709 }),
55710 TypeVariant::ParallelTxExecutionStage => r.with_limited_depth(|r| {
55711 Ok(Self::ParallelTxExecutionStage(Box::new(
55712 ParallelTxExecutionStage::read_xdr(r)?,
55713 )))
55714 }),
55715 TypeVariant::ParallelTxsComponent => r.with_limited_depth(|r| {
55716 Ok(Self::ParallelTxsComponent(Box::new(
55717 ParallelTxsComponent::read_xdr(r)?,
55718 )))
55719 }),
55720 TypeVariant::TxSetComponent => r.with_limited_depth(|r| {
55721 Ok(Self::TxSetComponent(Box::new(TxSetComponent::read_xdr(r)?)))
55722 }),
55723 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => r.with_limited_depth(|r| {
55724 Ok(Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(
55725 TxSetComponentTxsMaybeDiscountedFee::read_xdr(r)?,
55726 )))
55727 }),
55728 TypeVariant::TransactionPhase => r.with_limited_depth(|r| {
55729 Ok(Self::TransactionPhase(Box::new(
55730 TransactionPhase::read_xdr(r)?,
55731 )))
55732 }),
55733 TypeVariant::TransactionSet => r.with_limited_depth(|r| {
55734 Ok(Self::TransactionSet(Box::new(TransactionSet::read_xdr(r)?)))
55735 }),
55736 TypeVariant::TransactionSetV1 => r.with_limited_depth(|r| {
55737 Ok(Self::TransactionSetV1(Box::new(
55738 TransactionSetV1::read_xdr(r)?,
55739 )))
55740 }),
55741 TypeVariant::GeneralizedTransactionSet => r.with_limited_depth(|r| {
55742 Ok(Self::GeneralizedTransactionSet(Box::new(
55743 GeneralizedTransactionSet::read_xdr(r)?,
55744 )))
55745 }),
55746 TypeVariant::TransactionResultPair => r.with_limited_depth(|r| {
55747 Ok(Self::TransactionResultPair(Box::new(
55748 TransactionResultPair::read_xdr(r)?,
55749 )))
55750 }),
55751 TypeVariant::TransactionResultSet => r.with_limited_depth(|r| {
55752 Ok(Self::TransactionResultSet(Box::new(
55753 TransactionResultSet::read_xdr(r)?,
55754 )))
55755 }),
55756 TypeVariant::TransactionHistoryEntry => r.with_limited_depth(|r| {
55757 Ok(Self::TransactionHistoryEntry(Box::new(
55758 TransactionHistoryEntry::read_xdr(r)?,
55759 )))
55760 }),
55761 TypeVariant::TransactionHistoryEntryExt => r.with_limited_depth(|r| {
55762 Ok(Self::TransactionHistoryEntryExt(Box::new(
55763 TransactionHistoryEntryExt::read_xdr(r)?,
55764 )))
55765 }),
55766 TypeVariant::TransactionHistoryResultEntry => r.with_limited_depth(|r| {
55767 Ok(Self::TransactionHistoryResultEntry(Box::new(
55768 TransactionHistoryResultEntry::read_xdr(r)?,
55769 )))
55770 }),
55771 TypeVariant::TransactionHistoryResultEntryExt => r.with_limited_depth(|r| {
55772 Ok(Self::TransactionHistoryResultEntryExt(Box::new(
55773 TransactionHistoryResultEntryExt::read_xdr(r)?,
55774 )))
55775 }),
55776 TypeVariant::LedgerHeaderHistoryEntry => r.with_limited_depth(|r| {
55777 Ok(Self::LedgerHeaderHistoryEntry(Box::new(
55778 LedgerHeaderHistoryEntry::read_xdr(r)?,
55779 )))
55780 }),
55781 TypeVariant::LedgerHeaderHistoryEntryExt => r.with_limited_depth(|r| {
55782 Ok(Self::LedgerHeaderHistoryEntryExt(Box::new(
55783 LedgerHeaderHistoryEntryExt::read_xdr(r)?,
55784 )))
55785 }),
55786 TypeVariant::LedgerScpMessages => r.with_limited_depth(|r| {
55787 Ok(Self::LedgerScpMessages(Box::new(
55788 LedgerScpMessages::read_xdr(r)?,
55789 )))
55790 }),
55791 TypeVariant::ScpHistoryEntryV0 => r.with_limited_depth(|r| {
55792 Ok(Self::ScpHistoryEntryV0(Box::new(
55793 ScpHistoryEntryV0::read_xdr(r)?,
55794 )))
55795 }),
55796 TypeVariant::ScpHistoryEntry => r.with_limited_depth(|r| {
55797 Ok(Self::ScpHistoryEntry(Box::new(ScpHistoryEntry::read_xdr(
55798 r,
55799 )?)))
55800 }),
55801 TypeVariant::LedgerEntryChangeType => r.with_limited_depth(|r| {
55802 Ok(Self::LedgerEntryChangeType(Box::new(
55803 LedgerEntryChangeType::read_xdr(r)?,
55804 )))
55805 }),
55806 TypeVariant::LedgerEntryChange => r.with_limited_depth(|r| {
55807 Ok(Self::LedgerEntryChange(Box::new(
55808 LedgerEntryChange::read_xdr(r)?,
55809 )))
55810 }),
55811 TypeVariant::LedgerEntryChanges => r.with_limited_depth(|r| {
55812 Ok(Self::LedgerEntryChanges(Box::new(
55813 LedgerEntryChanges::read_xdr(r)?,
55814 )))
55815 }),
55816 TypeVariant::OperationMeta => r.with_limited_depth(|r| {
55817 Ok(Self::OperationMeta(Box::new(OperationMeta::read_xdr(r)?)))
55818 }),
55819 TypeVariant::TransactionMetaV1 => r.with_limited_depth(|r| {
55820 Ok(Self::TransactionMetaV1(Box::new(
55821 TransactionMetaV1::read_xdr(r)?,
55822 )))
55823 }),
55824 TypeVariant::TransactionMetaV2 => r.with_limited_depth(|r| {
55825 Ok(Self::TransactionMetaV2(Box::new(
55826 TransactionMetaV2::read_xdr(r)?,
55827 )))
55828 }),
55829 TypeVariant::ContractEventType => r.with_limited_depth(|r| {
55830 Ok(Self::ContractEventType(Box::new(
55831 ContractEventType::read_xdr(r)?,
55832 )))
55833 }),
55834 TypeVariant::ContractEvent => r.with_limited_depth(|r| {
55835 Ok(Self::ContractEvent(Box::new(ContractEvent::read_xdr(r)?)))
55836 }),
55837 TypeVariant::ContractEventBody => r.with_limited_depth(|r| {
55838 Ok(Self::ContractEventBody(Box::new(
55839 ContractEventBody::read_xdr(r)?,
55840 )))
55841 }),
55842 TypeVariant::ContractEventV0 => r.with_limited_depth(|r| {
55843 Ok(Self::ContractEventV0(Box::new(ContractEventV0::read_xdr(
55844 r,
55845 )?)))
55846 }),
55847 TypeVariant::DiagnosticEvent => r.with_limited_depth(|r| {
55848 Ok(Self::DiagnosticEvent(Box::new(DiagnosticEvent::read_xdr(
55849 r,
55850 )?)))
55851 }),
55852 TypeVariant::SorobanTransactionMetaExtV1 => r.with_limited_depth(|r| {
55853 Ok(Self::SorobanTransactionMetaExtV1(Box::new(
55854 SorobanTransactionMetaExtV1::read_xdr(r)?,
55855 )))
55856 }),
55857 TypeVariant::SorobanTransactionMetaExt => r.with_limited_depth(|r| {
55858 Ok(Self::SorobanTransactionMetaExt(Box::new(
55859 SorobanTransactionMetaExt::read_xdr(r)?,
55860 )))
55861 }),
55862 TypeVariant::SorobanTransactionMeta => r.with_limited_depth(|r| {
55863 Ok(Self::SorobanTransactionMeta(Box::new(
55864 SorobanTransactionMeta::read_xdr(r)?,
55865 )))
55866 }),
55867 TypeVariant::TransactionMetaV3 => r.with_limited_depth(|r| {
55868 Ok(Self::TransactionMetaV3(Box::new(
55869 TransactionMetaV3::read_xdr(r)?,
55870 )))
55871 }),
55872 TypeVariant::OperationMetaV2 => r.with_limited_depth(|r| {
55873 Ok(Self::OperationMetaV2(Box::new(OperationMetaV2::read_xdr(
55874 r,
55875 )?)))
55876 }),
55877 TypeVariant::SorobanTransactionMetaV2 => r.with_limited_depth(|r| {
55878 Ok(Self::SorobanTransactionMetaV2(Box::new(
55879 SorobanTransactionMetaV2::read_xdr(r)?,
55880 )))
55881 }),
55882 TypeVariant::TransactionEventStage => r.with_limited_depth(|r| {
55883 Ok(Self::TransactionEventStage(Box::new(
55884 TransactionEventStage::read_xdr(r)?,
55885 )))
55886 }),
55887 TypeVariant::TransactionEvent => r.with_limited_depth(|r| {
55888 Ok(Self::TransactionEvent(Box::new(
55889 TransactionEvent::read_xdr(r)?,
55890 )))
55891 }),
55892 TypeVariant::TransactionMetaV4 => r.with_limited_depth(|r| {
55893 Ok(Self::TransactionMetaV4(Box::new(
55894 TransactionMetaV4::read_xdr(r)?,
55895 )))
55896 }),
55897 TypeVariant::InvokeHostFunctionSuccessPreImage => r.with_limited_depth(|r| {
55898 Ok(Self::InvokeHostFunctionSuccessPreImage(Box::new(
55899 InvokeHostFunctionSuccessPreImage::read_xdr(r)?,
55900 )))
55901 }),
55902 TypeVariant::TransactionMeta => r.with_limited_depth(|r| {
55903 Ok(Self::TransactionMeta(Box::new(TransactionMeta::read_xdr(
55904 r,
55905 )?)))
55906 }),
55907 TypeVariant::TransactionResultMeta => r.with_limited_depth(|r| {
55908 Ok(Self::TransactionResultMeta(Box::new(
55909 TransactionResultMeta::read_xdr(r)?,
55910 )))
55911 }),
55912 TypeVariant::TransactionResultMetaV1 => r.with_limited_depth(|r| {
55913 Ok(Self::TransactionResultMetaV1(Box::new(
55914 TransactionResultMetaV1::read_xdr(r)?,
55915 )))
55916 }),
55917 TypeVariant::UpgradeEntryMeta => r.with_limited_depth(|r| {
55918 Ok(Self::UpgradeEntryMeta(Box::new(
55919 UpgradeEntryMeta::read_xdr(r)?,
55920 )))
55921 }),
55922 TypeVariant::LedgerCloseMetaV0 => r.with_limited_depth(|r| {
55923 Ok(Self::LedgerCloseMetaV0(Box::new(
55924 LedgerCloseMetaV0::read_xdr(r)?,
55925 )))
55926 }),
55927 TypeVariant::LedgerCloseMetaExtV1 => r.with_limited_depth(|r| {
55928 Ok(Self::LedgerCloseMetaExtV1(Box::new(
55929 LedgerCloseMetaExtV1::read_xdr(r)?,
55930 )))
55931 }),
55932 TypeVariant::LedgerCloseMetaExt => r.with_limited_depth(|r| {
55933 Ok(Self::LedgerCloseMetaExt(Box::new(
55934 LedgerCloseMetaExt::read_xdr(r)?,
55935 )))
55936 }),
55937 TypeVariant::LedgerCloseMetaV1 => r.with_limited_depth(|r| {
55938 Ok(Self::LedgerCloseMetaV1(Box::new(
55939 LedgerCloseMetaV1::read_xdr(r)?,
55940 )))
55941 }),
55942 TypeVariant::LedgerCloseMetaV2 => r.with_limited_depth(|r| {
55943 Ok(Self::LedgerCloseMetaV2(Box::new(
55944 LedgerCloseMetaV2::read_xdr(r)?,
55945 )))
55946 }),
55947 TypeVariant::LedgerCloseMeta => r.with_limited_depth(|r| {
55948 Ok(Self::LedgerCloseMeta(Box::new(LedgerCloseMeta::read_xdr(
55949 r,
55950 )?)))
55951 }),
55952 TypeVariant::ErrorCode => {
55953 r.with_limited_depth(|r| Ok(Self::ErrorCode(Box::new(ErrorCode::read_xdr(r)?))))
55954 }
55955 TypeVariant::SError => {
55956 r.with_limited_depth(|r| Ok(Self::SError(Box::new(SError::read_xdr(r)?))))
55957 }
55958 TypeVariant::SendMore => {
55959 r.with_limited_depth(|r| Ok(Self::SendMore(Box::new(SendMore::read_xdr(r)?))))
55960 }
55961 TypeVariant::SendMoreExtended => r.with_limited_depth(|r| {
55962 Ok(Self::SendMoreExtended(Box::new(
55963 SendMoreExtended::read_xdr(r)?,
55964 )))
55965 }),
55966 TypeVariant::AuthCert => {
55967 r.with_limited_depth(|r| Ok(Self::AuthCert(Box::new(AuthCert::read_xdr(r)?))))
55968 }
55969 TypeVariant::Hello => {
55970 r.with_limited_depth(|r| Ok(Self::Hello(Box::new(Hello::read_xdr(r)?))))
55971 }
55972 TypeVariant::Auth => {
55973 r.with_limited_depth(|r| Ok(Self::Auth(Box::new(Auth::read_xdr(r)?))))
55974 }
55975 TypeVariant::IpAddrType => {
55976 r.with_limited_depth(|r| Ok(Self::IpAddrType(Box::new(IpAddrType::read_xdr(r)?))))
55977 }
55978 TypeVariant::PeerAddress => {
55979 r.with_limited_depth(|r| Ok(Self::PeerAddress(Box::new(PeerAddress::read_xdr(r)?))))
55980 }
55981 TypeVariant::PeerAddressIp => r.with_limited_depth(|r| {
55982 Ok(Self::PeerAddressIp(Box::new(PeerAddressIp::read_xdr(r)?)))
55983 }),
55984 TypeVariant::MessageType => {
55985 r.with_limited_depth(|r| Ok(Self::MessageType(Box::new(MessageType::read_xdr(r)?))))
55986 }
55987 TypeVariant::DontHave => {
55988 r.with_limited_depth(|r| Ok(Self::DontHave(Box::new(DontHave::read_xdr(r)?))))
55989 }
55990 TypeVariant::SurveyMessageCommandType => r.with_limited_depth(|r| {
55991 Ok(Self::SurveyMessageCommandType(Box::new(
55992 SurveyMessageCommandType::read_xdr(r)?,
55993 )))
55994 }),
55995 TypeVariant::SurveyMessageResponseType => r.with_limited_depth(|r| {
55996 Ok(Self::SurveyMessageResponseType(Box::new(
55997 SurveyMessageResponseType::read_xdr(r)?,
55998 )))
55999 }),
56000 TypeVariant::TimeSlicedSurveyStartCollectingMessage => r.with_limited_depth(|r| {
56001 Ok(Self::TimeSlicedSurveyStartCollectingMessage(Box::new(
56002 TimeSlicedSurveyStartCollectingMessage::read_xdr(r)?,
56003 )))
56004 }),
56005 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => {
56006 r.with_limited_depth(|r| {
56007 Ok(Self::SignedTimeSlicedSurveyStartCollectingMessage(
56008 Box::new(SignedTimeSlicedSurveyStartCollectingMessage::read_xdr(r)?),
56009 ))
56010 })
56011 }
56012 TypeVariant::TimeSlicedSurveyStopCollectingMessage => r.with_limited_depth(|r| {
56013 Ok(Self::TimeSlicedSurveyStopCollectingMessage(Box::new(
56014 TimeSlicedSurveyStopCollectingMessage::read_xdr(r)?,
56015 )))
56016 }),
56017 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => r.with_limited_depth(|r| {
56018 Ok(Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(
56019 SignedTimeSlicedSurveyStopCollectingMessage::read_xdr(r)?,
56020 )))
56021 }),
56022 TypeVariant::SurveyRequestMessage => r.with_limited_depth(|r| {
56023 Ok(Self::SurveyRequestMessage(Box::new(
56024 SurveyRequestMessage::read_xdr(r)?,
56025 )))
56026 }),
56027 TypeVariant::TimeSlicedSurveyRequestMessage => r.with_limited_depth(|r| {
56028 Ok(Self::TimeSlicedSurveyRequestMessage(Box::new(
56029 TimeSlicedSurveyRequestMessage::read_xdr(r)?,
56030 )))
56031 }),
56032 TypeVariant::SignedTimeSlicedSurveyRequestMessage => r.with_limited_depth(|r| {
56033 Ok(Self::SignedTimeSlicedSurveyRequestMessage(Box::new(
56034 SignedTimeSlicedSurveyRequestMessage::read_xdr(r)?,
56035 )))
56036 }),
56037 TypeVariant::EncryptedBody => r.with_limited_depth(|r| {
56038 Ok(Self::EncryptedBody(Box::new(EncryptedBody::read_xdr(r)?)))
56039 }),
56040 TypeVariant::SurveyResponseMessage => r.with_limited_depth(|r| {
56041 Ok(Self::SurveyResponseMessage(Box::new(
56042 SurveyResponseMessage::read_xdr(r)?,
56043 )))
56044 }),
56045 TypeVariant::TimeSlicedSurveyResponseMessage => r.with_limited_depth(|r| {
56046 Ok(Self::TimeSlicedSurveyResponseMessage(Box::new(
56047 TimeSlicedSurveyResponseMessage::read_xdr(r)?,
56048 )))
56049 }),
56050 TypeVariant::SignedTimeSlicedSurveyResponseMessage => r.with_limited_depth(|r| {
56051 Ok(Self::SignedTimeSlicedSurveyResponseMessage(Box::new(
56052 SignedTimeSlicedSurveyResponseMessage::read_xdr(r)?,
56053 )))
56054 }),
56055 TypeVariant::PeerStats => {
56056 r.with_limited_depth(|r| Ok(Self::PeerStats(Box::new(PeerStats::read_xdr(r)?))))
56057 }
56058 TypeVariant::TimeSlicedNodeData => r.with_limited_depth(|r| {
56059 Ok(Self::TimeSlicedNodeData(Box::new(
56060 TimeSlicedNodeData::read_xdr(r)?,
56061 )))
56062 }),
56063 TypeVariant::TimeSlicedPeerData => r.with_limited_depth(|r| {
56064 Ok(Self::TimeSlicedPeerData(Box::new(
56065 TimeSlicedPeerData::read_xdr(r)?,
56066 )))
56067 }),
56068 TypeVariant::TimeSlicedPeerDataList => r.with_limited_depth(|r| {
56069 Ok(Self::TimeSlicedPeerDataList(Box::new(
56070 TimeSlicedPeerDataList::read_xdr(r)?,
56071 )))
56072 }),
56073 TypeVariant::TopologyResponseBodyV2 => r.with_limited_depth(|r| {
56074 Ok(Self::TopologyResponseBodyV2(Box::new(
56075 TopologyResponseBodyV2::read_xdr(r)?,
56076 )))
56077 }),
56078 TypeVariant::SurveyResponseBody => r.with_limited_depth(|r| {
56079 Ok(Self::SurveyResponseBody(Box::new(
56080 SurveyResponseBody::read_xdr(r)?,
56081 )))
56082 }),
56083 TypeVariant::TxAdvertVector => r.with_limited_depth(|r| {
56084 Ok(Self::TxAdvertVector(Box::new(TxAdvertVector::read_xdr(r)?)))
56085 }),
56086 TypeVariant::FloodAdvert => {
56087 r.with_limited_depth(|r| Ok(Self::FloodAdvert(Box::new(FloodAdvert::read_xdr(r)?))))
56088 }
56089 TypeVariant::TxDemandVector => r.with_limited_depth(|r| {
56090 Ok(Self::TxDemandVector(Box::new(TxDemandVector::read_xdr(r)?)))
56091 }),
56092 TypeVariant::FloodDemand => {
56093 r.with_limited_depth(|r| Ok(Self::FloodDemand(Box::new(FloodDemand::read_xdr(r)?))))
56094 }
56095 TypeVariant::StellarMessage => r.with_limited_depth(|r| {
56096 Ok(Self::StellarMessage(Box::new(StellarMessage::read_xdr(r)?)))
56097 }),
56098 TypeVariant::AuthenticatedMessage => r.with_limited_depth(|r| {
56099 Ok(Self::AuthenticatedMessage(Box::new(
56100 AuthenticatedMessage::read_xdr(r)?,
56101 )))
56102 }),
56103 TypeVariant::AuthenticatedMessageV0 => r.with_limited_depth(|r| {
56104 Ok(Self::AuthenticatedMessageV0(Box::new(
56105 AuthenticatedMessageV0::read_xdr(r)?,
56106 )))
56107 }),
56108 TypeVariant::LiquidityPoolParameters => r.with_limited_depth(|r| {
56109 Ok(Self::LiquidityPoolParameters(Box::new(
56110 LiquidityPoolParameters::read_xdr(r)?,
56111 )))
56112 }),
56113 TypeVariant::MuxedAccount => r.with_limited_depth(|r| {
56114 Ok(Self::MuxedAccount(Box::new(MuxedAccount::read_xdr(r)?)))
56115 }),
56116 TypeVariant::MuxedAccountMed25519 => r.with_limited_depth(|r| {
56117 Ok(Self::MuxedAccountMed25519(Box::new(
56118 MuxedAccountMed25519::read_xdr(r)?,
56119 )))
56120 }),
56121 TypeVariant::DecoratedSignature => r.with_limited_depth(|r| {
56122 Ok(Self::DecoratedSignature(Box::new(
56123 DecoratedSignature::read_xdr(r)?,
56124 )))
56125 }),
56126 TypeVariant::OperationType => r.with_limited_depth(|r| {
56127 Ok(Self::OperationType(Box::new(OperationType::read_xdr(r)?)))
56128 }),
56129 TypeVariant::CreateAccountOp => r.with_limited_depth(|r| {
56130 Ok(Self::CreateAccountOp(Box::new(CreateAccountOp::read_xdr(
56131 r,
56132 )?)))
56133 }),
56134 TypeVariant::PaymentOp => {
56135 r.with_limited_depth(|r| Ok(Self::PaymentOp(Box::new(PaymentOp::read_xdr(r)?))))
56136 }
56137 TypeVariant::PathPaymentStrictReceiveOp => r.with_limited_depth(|r| {
56138 Ok(Self::PathPaymentStrictReceiveOp(Box::new(
56139 PathPaymentStrictReceiveOp::read_xdr(r)?,
56140 )))
56141 }),
56142 TypeVariant::PathPaymentStrictSendOp => r.with_limited_depth(|r| {
56143 Ok(Self::PathPaymentStrictSendOp(Box::new(
56144 PathPaymentStrictSendOp::read_xdr(r)?,
56145 )))
56146 }),
56147 TypeVariant::ManageSellOfferOp => r.with_limited_depth(|r| {
56148 Ok(Self::ManageSellOfferOp(Box::new(
56149 ManageSellOfferOp::read_xdr(r)?,
56150 )))
56151 }),
56152 TypeVariant::ManageBuyOfferOp => r.with_limited_depth(|r| {
56153 Ok(Self::ManageBuyOfferOp(Box::new(
56154 ManageBuyOfferOp::read_xdr(r)?,
56155 )))
56156 }),
56157 TypeVariant::CreatePassiveSellOfferOp => r.with_limited_depth(|r| {
56158 Ok(Self::CreatePassiveSellOfferOp(Box::new(
56159 CreatePassiveSellOfferOp::read_xdr(r)?,
56160 )))
56161 }),
56162 TypeVariant::SetOptionsOp => r.with_limited_depth(|r| {
56163 Ok(Self::SetOptionsOp(Box::new(SetOptionsOp::read_xdr(r)?)))
56164 }),
56165 TypeVariant::ChangeTrustAsset => r.with_limited_depth(|r| {
56166 Ok(Self::ChangeTrustAsset(Box::new(
56167 ChangeTrustAsset::read_xdr(r)?,
56168 )))
56169 }),
56170 TypeVariant::ChangeTrustOp => r.with_limited_depth(|r| {
56171 Ok(Self::ChangeTrustOp(Box::new(ChangeTrustOp::read_xdr(r)?)))
56172 }),
56173 TypeVariant::AllowTrustOp => r.with_limited_depth(|r| {
56174 Ok(Self::AllowTrustOp(Box::new(AllowTrustOp::read_xdr(r)?)))
56175 }),
56176 TypeVariant::ManageDataOp => r.with_limited_depth(|r| {
56177 Ok(Self::ManageDataOp(Box::new(ManageDataOp::read_xdr(r)?)))
56178 }),
56179 TypeVariant::BumpSequenceOp => r.with_limited_depth(|r| {
56180 Ok(Self::BumpSequenceOp(Box::new(BumpSequenceOp::read_xdr(r)?)))
56181 }),
56182 TypeVariant::CreateClaimableBalanceOp => r.with_limited_depth(|r| {
56183 Ok(Self::CreateClaimableBalanceOp(Box::new(
56184 CreateClaimableBalanceOp::read_xdr(r)?,
56185 )))
56186 }),
56187 TypeVariant::ClaimClaimableBalanceOp => r.with_limited_depth(|r| {
56188 Ok(Self::ClaimClaimableBalanceOp(Box::new(
56189 ClaimClaimableBalanceOp::read_xdr(r)?,
56190 )))
56191 }),
56192 TypeVariant::BeginSponsoringFutureReservesOp => r.with_limited_depth(|r| {
56193 Ok(Self::BeginSponsoringFutureReservesOp(Box::new(
56194 BeginSponsoringFutureReservesOp::read_xdr(r)?,
56195 )))
56196 }),
56197 TypeVariant::RevokeSponsorshipType => r.with_limited_depth(|r| {
56198 Ok(Self::RevokeSponsorshipType(Box::new(
56199 RevokeSponsorshipType::read_xdr(r)?,
56200 )))
56201 }),
56202 TypeVariant::RevokeSponsorshipOp => r.with_limited_depth(|r| {
56203 Ok(Self::RevokeSponsorshipOp(Box::new(
56204 RevokeSponsorshipOp::read_xdr(r)?,
56205 )))
56206 }),
56207 TypeVariant::RevokeSponsorshipOpSigner => r.with_limited_depth(|r| {
56208 Ok(Self::RevokeSponsorshipOpSigner(Box::new(
56209 RevokeSponsorshipOpSigner::read_xdr(r)?,
56210 )))
56211 }),
56212 TypeVariant::ClawbackOp => {
56213 r.with_limited_depth(|r| Ok(Self::ClawbackOp(Box::new(ClawbackOp::read_xdr(r)?))))
56214 }
56215 TypeVariant::ClawbackClaimableBalanceOp => r.with_limited_depth(|r| {
56216 Ok(Self::ClawbackClaimableBalanceOp(Box::new(
56217 ClawbackClaimableBalanceOp::read_xdr(r)?,
56218 )))
56219 }),
56220 TypeVariant::SetTrustLineFlagsOp => r.with_limited_depth(|r| {
56221 Ok(Self::SetTrustLineFlagsOp(Box::new(
56222 SetTrustLineFlagsOp::read_xdr(r)?,
56223 )))
56224 }),
56225 TypeVariant::LiquidityPoolDepositOp => r.with_limited_depth(|r| {
56226 Ok(Self::LiquidityPoolDepositOp(Box::new(
56227 LiquidityPoolDepositOp::read_xdr(r)?,
56228 )))
56229 }),
56230 TypeVariant::LiquidityPoolWithdrawOp => r.with_limited_depth(|r| {
56231 Ok(Self::LiquidityPoolWithdrawOp(Box::new(
56232 LiquidityPoolWithdrawOp::read_xdr(r)?,
56233 )))
56234 }),
56235 TypeVariant::HostFunctionType => r.with_limited_depth(|r| {
56236 Ok(Self::HostFunctionType(Box::new(
56237 HostFunctionType::read_xdr(r)?,
56238 )))
56239 }),
56240 TypeVariant::ContractIdPreimageType => r.with_limited_depth(|r| {
56241 Ok(Self::ContractIdPreimageType(Box::new(
56242 ContractIdPreimageType::read_xdr(r)?,
56243 )))
56244 }),
56245 TypeVariant::ContractIdPreimage => r.with_limited_depth(|r| {
56246 Ok(Self::ContractIdPreimage(Box::new(
56247 ContractIdPreimage::read_xdr(r)?,
56248 )))
56249 }),
56250 TypeVariant::ContractIdPreimageFromAddress => r.with_limited_depth(|r| {
56251 Ok(Self::ContractIdPreimageFromAddress(Box::new(
56252 ContractIdPreimageFromAddress::read_xdr(r)?,
56253 )))
56254 }),
56255 TypeVariant::CreateContractArgs => r.with_limited_depth(|r| {
56256 Ok(Self::CreateContractArgs(Box::new(
56257 CreateContractArgs::read_xdr(r)?,
56258 )))
56259 }),
56260 TypeVariant::CreateContractArgsV2 => r.with_limited_depth(|r| {
56261 Ok(Self::CreateContractArgsV2(Box::new(
56262 CreateContractArgsV2::read_xdr(r)?,
56263 )))
56264 }),
56265 TypeVariant::InvokeContractArgs => r.with_limited_depth(|r| {
56266 Ok(Self::InvokeContractArgs(Box::new(
56267 InvokeContractArgs::read_xdr(r)?,
56268 )))
56269 }),
56270 TypeVariant::HostFunction => r.with_limited_depth(|r| {
56271 Ok(Self::HostFunction(Box::new(HostFunction::read_xdr(r)?)))
56272 }),
56273 TypeVariant::SorobanAuthorizedFunctionType => r.with_limited_depth(|r| {
56274 Ok(Self::SorobanAuthorizedFunctionType(Box::new(
56275 SorobanAuthorizedFunctionType::read_xdr(r)?,
56276 )))
56277 }),
56278 TypeVariant::SorobanAuthorizedFunction => r.with_limited_depth(|r| {
56279 Ok(Self::SorobanAuthorizedFunction(Box::new(
56280 SorobanAuthorizedFunction::read_xdr(r)?,
56281 )))
56282 }),
56283 TypeVariant::SorobanAuthorizedInvocation => r.with_limited_depth(|r| {
56284 Ok(Self::SorobanAuthorizedInvocation(Box::new(
56285 SorobanAuthorizedInvocation::read_xdr(r)?,
56286 )))
56287 }),
56288 TypeVariant::SorobanAddressCredentials => r.with_limited_depth(|r| {
56289 Ok(Self::SorobanAddressCredentials(Box::new(
56290 SorobanAddressCredentials::read_xdr(r)?,
56291 )))
56292 }),
56293 TypeVariant::SorobanCredentialsType => r.with_limited_depth(|r| {
56294 Ok(Self::SorobanCredentialsType(Box::new(
56295 SorobanCredentialsType::read_xdr(r)?,
56296 )))
56297 }),
56298 TypeVariant::SorobanCredentials => r.with_limited_depth(|r| {
56299 Ok(Self::SorobanCredentials(Box::new(
56300 SorobanCredentials::read_xdr(r)?,
56301 )))
56302 }),
56303 TypeVariant::SorobanAuthorizationEntry => r.with_limited_depth(|r| {
56304 Ok(Self::SorobanAuthorizationEntry(Box::new(
56305 SorobanAuthorizationEntry::read_xdr(r)?,
56306 )))
56307 }),
56308 TypeVariant::SorobanAuthorizationEntries => r.with_limited_depth(|r| {
56309 Ok(Self::SorobanAuthorizationEntries(Box::new(
56310 SorobanAuthorizationEntries::read_xdr(r)?,
56311 )))
56312 }),
56313 TypeVariant::InvokeHostFunctionOp => r.with_limited_depth(|r| {
56314 Ok(Self::InvokeHostFunctionOp(Box::new(
56315 InvokeHostFunctionOp::read_xdr(r)?,
56316 )))
56317 }),
56318 TypeVariant::ExtendFootprintTtlOp => r.with_limited_depth(|r| {
56319 Ok(Self::ExtendFootprintTtlOp(Box::new(
56320 ExtendFootprintTtlOp::read_xdr(r)?,
56321 )))
56322 }),
56323 TypeVariant::RestoreFootprintOp => r.with_limited_depth(|r| {
56324 Ok(Self::RestoreFootprintOp(Box::new(
56325 RestoreFootprintOp::read_xdr(r)?,
56326 )))
56327 }),
56328 TypeVariant::Operation => {
56329 r.with_limited_depth(|r| Ok(Self::Operation(Box::new(Operation::read_xdr(r)?))))
56330 }
56331 TypeVariant::OperationBody => r.with_limited_depth(|r| {
56332 Ok(Self::OperationBody(Box::new(OperationBody::read_xdr(r)?)))
56333 }),
56334 TypeVariant::HashIdPreimage => r.with_limited_depth(|r| {
56335 Ok(Self::HashIdPreimage(Box::new(HashIdPreimage::read_xdr(r)?)))
56336 }),
56337 TypeVariant::HashIdPreimageOperationId => r.with_limited_depth(|r| {
56338 Ok(Self::HashIdPreimageOperationId(Box::new(
56339 HashIdPreimageOperationId::read_xdr(r)?,
56340 )))
56341 }),
56342 TypeVariant::HashIdPreimageRevokeId => r.with_limited_depth(|r| {
56343 Ok(Self::HashIdPreimageRevokeId(Box::new(
56344 HashIdPreimageRevokeId::read_xdr(r)?,
56345 )))
56346 }),
56347 TypeVariant::HashIdPreimageContractId => r.with_limited_depth(|r| {
56348 Ok(Self::HashIdPreimageContractId(Box::new(
56349 HashIdPreimageContractId::read_xdr(r)?,
56350 )))
56351 }),
56352 TypeVariant::HashIdPreimageSorobanAuthorization => r.with_limited_depth(|r| {
56353 Ok(Self::HashIdPreimageSorobanAuthorization(Box::new(
56354 HashIdPreimageSorobanAuthorization::read_xdr(r)?,
56355 )))
56356 }),
56357 TypeVariant::MemoType => {
56358 r.with_limited_depth(|r| Ok(Self::MemoType(Box::new(MemoType::read_xdr(r)?))))
56359 }
56360 TypeVariant::Memo => {
56361 r.with_limited_depth(|r| Ok(Self::Memo(Box::new(Memo::read_xdr(r)?))))
56362 }
56363 TypeVariant::TimeBounds => {
56364 r.with_limited_depth(|r| Ok(Self::TimeBounds(Box::new(TimeBounds::read_xdr(r)?))))
56365 }
56366 TypeVariant::LedgerBounds => r.with_limited_depth(|r| {
56367 Ok(Self::LedgerBounds(Box::new(LedgerBounds::read_xdr(r)?)))
56368 }),
56369 TypeVariant::PreconditionsV2 => r.with_limited_depth(|r| {
56370 Ok(Self::PreconditionsV2(Box::new(PreconditionsV2::read_xdr(
56371 r,
56372 )?)))
56373 }),
56374 TypeVariant::PreconditionType => r.with_limited_depth(|r| {
56375 Ok(Self::PreconditionType(Box::new(
56376 PreconditionType::read_xdr(r)?,
56377 )))
56378 }),
56379 TypeVariant::Preconditions => r.with_limited_depth(|r| {
56380 Ok(Self::Preconditions(Box::new(Preconditions::read_xdr(r)?)))
56381 }),
56382 TypeVariant::LedgerFootprint => r.with_limited_depth(|r| {
56383 Ok(Self::LedgerFootprint(Box::new(LedgerFootprint::read_xdr(
56384 r,
56385 )?)))
56386 }),
56387 TypeVariant::SorobanResources => r.with_limited_depth(|r| {
56388 Ok(Self::SorobanResources(Box::new(
56389 SorobanResources::read_xdr(r)?,
56390 )))
56391 }),
56392 TypeVariant::SorobanResourcesExtV0 => r.with_limited_depth(|r| {
56393 Ok(Self::SorobanResourcesExtV0(Box::new(
56394 SorobanResourcesExtV0::read_xdr(r)?,
56395 )))
56396 }),
56397 TypeVariant::SorobanTransactionData => r.with_limited_depth(|r| {
56398 Ok(Self::SorobanTransactionData(Box::new(
56399 SorobanTransactionData::read_xdr(r)?,
56400 )))
56401 }),
56402 TypeVariant::SorobanTransactionDataExt => r.with_limited_depth(|r| {
56403 Ok(Self::SorobanTransactionDataExt(Box::new(
56404 SorobanTransactionDataExt::read_xdr(r)?,
56405 )))
56406 }),
56407 TypeVariant::TransactionV0 => r.with_limited_depth(|r| {
56408 Ok(Self::TransactionV0(Box::new(TransactionV0::read_xdr(r)?)))
56409 }),
56410 TypeVariant::TransactionV0Ext => r.with_limited_depth(|r| {
56411 Ok(Self::TransactionV0Ext(Box::new(
56412 TransactionV0Ext::read_xdr(r)?,
56413 )))
56414 }),
56415 TypeVariant::TransactionV0Envelope => r.with_limited_depth(|r| {
56416 Ok(Self::TransactionV0Envelope(Box::new(
56417 TransactionV0Envelope::read_xdr(r)?,
56418 )))
56419 }),
56420 TypeVariant::Transaction => {
56421 r.with_limited_depth(|r| Ok(Self::Transaction(Box::new(Transaction::read_xdr(r)?))))
56422 }
56423 TypeVariant::TransactionExt => r.with_limited_depth(|r| {
56424 Ok(Self::TransactionExt(Box::new(TransactionExt::read_xdr(r)?)))
56425 }),
56426 TypeVariant::TransactionV1Envelope => r.with_limited_depth(|r| {
56427 Ok(Self::TransactionV1Envelope(Box::new(
56428 TransactionV1Envelope::read_xdr(r)?,
56429 )))
56430 }),
56431 TypeVariant::FeeBumpTransaction => r.with_limited_depth(|r| {
56432 Ok(Self::FeeBumpTransaction(Box::new(
56433 FeeBumpTransaction::read_xdr(r)?,
56434 )))
56435 }),
56436 TypeVariant::FeeBumpTransactionInnerTx => r.with_limited_depth(|r| {
56437 Ok(Self::FeeBumpTransactionInnerTx(Box::new(
56438 FeeBumpTransactionInnerTx::read_xdr(r)?,
56439 )))
56440 }),
56441 TypeVariant::FeeBumpTransactionExt => r.with_limited_depth(|r| {
56442 Ok(Self::FeeBumpTransactionExt(Box::new(
56443 FeeBumpTransactionExt::read_xdr(r)?,
56444 )))
56445 }),
56446 TypeVariant::FeeBumpTransactionEnvelope => r.with_limited_depth(|r| {
56447 Ok(Self::FeeBumpTransactionEnvelope(Box::new(
56448 FeeBumpTransactionEnvelope::read_xdr(r)?,
56449 )))
56450 }),
56451 TypeVariant::TransactionEnvelope => r.with_limited_depth(|r| {
56452 Ok(Self::TransactionEnvelope(Box::new(
56453 TransactionEnvelope::read_xdr(r)?,
56454 )))
56455 }),
56456 TypeVariant::TransactionSignaturePayload => r.with_limited_depth(|r| {
56457 Ok(Self::TransactionSignaturePayload(Box::new(
56458 TransactionSignaturePayload::read_xdr(r)?,
56459 )))
56460 }),
56461 TypeVariant::TransactionSignaturePayloadTaggedTransaction => {
56462 r.with_limited_depth(|r| {
56463 Ok(Self::TransactionSignaturePayloadTaggedTransaction(
56464 Box::new(TransactionSignaturePayloadTaggedTransaction::read_xdr(r)?),
56465 ))
56466 })
56467 }
56468 TypeVariant::ClaimAtomType => r.with_limited_depth(|r| {
56469 Ok(Self::ClaimAtomType(Box::new(ClaimAtomType::read_xdr(r)?)))
56470 }),
56471 TypeVariant::ClaimOfferAtomV0 => r.with_limited_depth(|r| {
56472 Ok(Self::ClaimOfferAtomV0(Box::new(
56473 ClaimOfferAtomV0::read_xdr(r)?,
56474 )))
56475 }),
56476 TypeVariant::ClaimOfferAtom => r.with_limited_depth(|r| {
56477 Ok(Self::ClaimOfferAtom(Box::new(ClaimOfferAtom::read_xdr(r)?)))
56478 }),
56479 TypeVariant::ClaimLiquidityAtom => r.with_limited_depth(|r| {
56480 Ok(Self::ClaimLiquidityAtom(Box::new(
56481 ClaimLiquidityAtom::read_xdr(r)?,
56482 )))
56483 }),
56484 TypeVariant::ClaimAtom => {
56485 r.with_limited_depth(|r| Ok(Self::ClaimAtom(Box::new(ClaimAtom::read_xdr(r)?))))
56486 }
56487 TypeVariant::CreateAccountResultCode => r.with_limited_depth(|r| {
56488 Ok(Self::CreateAccountResultCode(Box::new(
56489 CreateAccountResultCode::read_xdr(r)?,
56490 )))
56491 }),
56492 TypeVariant::CreateAccountResult => r.with_limited_depth(|r| {
56493 Ok(Self::CreateAccountResult(Box::new(
56494 CreateAccountResult::read_xdr(r)?,
56495 )))
56496 }),
56497 TypeVariant::PaymentResultCode => r.with_limited_depth(|r| {
56498 Ok(Self::PaymentResultCode(Box::new(
56499 PaymentResultCode::read_xdr(r)?,
56500 )))
56501 }),
56502 TypeVariant::PaymentResult => r.with_limited_depth(|r| {
56503 Ok(Self::PaymentResult(Box::new(PaymentResult::read_xdr(r)?)))
56504 }),
56505 TypeVariant::PathPaymentStrictReceiveResultCode => r.with_limited_depth(|r| {
56506 Ok(Self::PathPaymentStrictReceiveResultCode(Box::new(
56507 PathPaymentStrictReceiveResultCode::read_xdr(r)?,
56508 )))
56509 }),
56510 TypeVariant::SimplePaymentResult => r.with_limited_depth(|r| {
56511 Ok(Self::SimplePaymentResult(Box::new(
56512 SimplePaymentResult::read_xdr(r)?,
56513 )))
56514 }),
56515 TypeVariant::PathPaymentStrictReceiveResult => r.with_limited_depth(|r| {
56516 Ok(Self::PathPaymentStrictReceiveResult(Box::new(
56517 PathPaymentStrictReceiveResult::read_xdr(r)?,
56518 )))
56519 }),
56520 TypeVariant::PathPaymentStrictReceiveResultSuccess => r.with_limited_depth(|r| {
56521 Ok(Self::PathPaymentStrictReceiveResultSuccess(Box::new(
56522 PathPaymentStrictReceiveResultSuccess::read_xdr(r)?,
56523 )))
56524 }),
56525 TypeVariant::PathPaymentStrictSendResultCode => r.with_limited_depth(|r| {
56526 Ok(Self::PathPaymentStrictSendResultCode(Box::new(
56527 PathPaymentStrictSendResultCode::read_xdr(r)?,
56528 )))
56529 }),
56530 TypeVariant::PathPaymentStrictSendResult => r.with_limited_depth(|r| {
56531 Ok(Self::PathPaymentStrictSendResult(Box::new(
56532 PathPaymentStrictSendResult::read_xdr(r)?,
56533 )))
56534 }),
56535 TypeVariant::PathPaymentStrictSendResultSuccess => r.with_limited_depth(|r| {
56536 Ok(Self::PathPaymentStrictSendResultSuccess(Box::new(
56537 PathPaymentStrictSendResultSuccess::read_xdr(r)?,
56538 )))
56539 }),
56540 TypeVariant::ManageSellOfferResultCode => r.with_limited_depth(|r| {
56541 Ok(Self::ManageSellOfferResultCode(Box::new(
56542 ManageSellOfferResultCode::read_xdr(r)?,
56543 )))
56544 }),
56545 TypeVariant::ManageOfferEffect => r.with_limited_depth(|r| {
56546 Ok(Self::ManageOfferEffect(Box::new(
56547 ManageOfferEffect::read_xdr(r)?,
56548 )))
56549 }),
56550 TypeVariant::ManageOfferSuccessResult => r.with_limited_depth(|r| {
56551 Ok(Self::ManageOfferSuccessResult(Box::new(
56552 ManageOfferSuccessResult::read_xdr(r)?,
56553 )))
56554 }),
56555 TypeVariant::ManageOfferSuccessResultOffer => r.with_limited_depth(|r| {
56556 Ok(Self::ManageOfferSuccessResultOffer(Box::new(
56557 ManageOfferSuccessResultOffer::read_xdr(r)?,
56558 )))
56559 }),
56560 TypeVariant::ManageSellOfferResult => r.with_limited_depth(|r| {
56561 Ok(Self::ManageSellOfferResult(Box::new(
56562 ManageSellOfferResult::read_xdr(r)?,
56563 )))
56564 }),
56565 TypeVariant::ManageBuyOfferResultCode => r.with_limited_depth(|r| {
56566 Ok(Self::ManageBuyOfferResultCode(Box::new(
56567 ManageBuyOfferResultCode::read_xdr(r)?,
56568 )))
56569 }),
56570 TypeVariant::ManageBuyOfferResult => r.with_limited_depth(|r| {
56571 Ok(Self::ManageBuyOfferResult(Box::new(
56572 ManageBuyOfferResult::read_xdr(r)?,
56573 )))
56574 }),
56575 TypeVariant::SetOptionsResultCode => r.with_limited_depth(|r| {
56576 Ok(Self::SetOptionsResultCode(Box::new(
56577 SetOptionsResultCode::read_xdr(r)?,
56578 )))
56579 }),
56580 TypeVariant::SetOptionsResult => r.with_limited_depth(|r| {
56581 Ok(Self::SetOptionsResult(Box::new(
56582 SetOptionsResult::read_xdr(r)?,
56583 )))
56584 }),
56585 TypeVariant::ChangeTrustResultCode => r.with_limited_depth(|r| {
56586 Ok(Self::ChangeTrustResultCode(Box::new(
56587 ChangeTrustResultCode::read_xdr(r)?,
56588 )))
56589 }),
56590 TypeVariant::ChangeTrustResult => r.with_limited_depth(|r| {
56591 Ok(Self::ChangeTrustResult(Box::new(
56592 ChangeTrustResult::read_xdr(r)?,
56593 )))
56594 }),
56595 TypeVariant::AllowTrustResultCode => r.with_limited_depth(|r| {
56596 Ok(Self::AllowTrustResultCode(Box::new(
56597 AllowTrustResultCode::read_xdr(r)?,
56598 )))
56599 }),
56600 TypeVariant::AllowTrustResult => r.with_limited_depth(|r| {
56601 Ok(Self::AllowTrustResult(Box::new(
56602 AllowTrustResult::read_xdr(r)?,
56603 )))
56604 }),
56605 TypeVariant::AccountMergeResultCode => r.with_limited_depth(|r| {
56606 Ok(Self::AccountMergeResultCode(Box::new(
56607 AccountMergeResultCode::read_xdr(r)?,
56608 )))
56609 }),
56610 TypeVariant::AccountMergeResult => r.with_limited_depth(|r| {
56611 Ok(Self::AccountMergeResult(Box::new(
56612 AccountMergeResult::read_xdr(r)?,
56613 )))
56614 }),
56615 TypeVariant::InflationResultCode => r.with_limited_depth(|r| {
56616 Ok(Self::InflationResultCode(Box::new(
56617 InflationResultCode::read_xdr(r)?,
56618 )))
56619 }),
56620 TypeVariant::InflationPayout => r.with_limited_depth(|r| {
56621 Ok(Self::InflationPayout(Box::new(InflationPayout::read_xdr(
56622 r,
56623 )?)))
56624 }),
56625 TypeVariant::InflationResult => r.with_limited_depth(|r| {
56626 Ok(Self::InflationResult(Box::new(InflationResult::read_xdr(
56627 r,
56628 )?)))
56629 }),
56630 TypeVariant::ManageDataResultCode => r.with_limited_depth(|r| {
56631 Ok(Self::ManageDataResultCode(Box::new(
56632 ManageDataResultCode::read_xdr(r)?,
56633 )))
56634 }),
56635 TypeVariant::ManageDataResult => r.with_limited_depth(|r| {
56636 Ok(Self::ManageDataResult(Box::new(
56637 ManageDataResult::read_xdr(r)?,
56638 )))
56639 }),
56640 TypeVariant::BumpSequenceResultCode => r.with_limited_depth(|r| {
56641 Ok(Self::BumpSequenceResultCode(Box::new(
56642 BumpSequenceResultCode::read_xdr(r)?,
56643 )))
56644 }),
56645 TypeVariant::BumpSequenceResult => r.with_limited_depth(|r| {
56646 Ok(Self::BumpSequenceResult(Box::new(
56647 BumpSequenceResult::read_xdr(r)?,
56648 )))
56649 }),
56650 TypeVariant::CreateClaimableBalanceResultCode => r.with_limited_depth(|r| {
56651 Ok(Self::CreateClaimableBalanceResultCode(Box::new(
56652 CreateClaimableBalanceResultCode::read_xdr(r)?,
56653 )))
56654 }),
56655 TypeVariant::CreateClaimableBalanceResult => r.with_limited_depth(|r| {
56656 Ok(Self::CreateClaimableBalanceResult(Box::new(
56657 CreateClaimableBalanceResult::read_xdr(r)?,
56658 )))
56659 }),
56660 TypeVariant::ClaimClaimableBalanceResultCode => r.with_limited_depth(|r| {
56661 Ok(Self::ClaimClaimableBalanceResultCode(Box::new(
56662 ClaimClaimableBalanceResultCode::read_xdr(r)?,
56663 )))
56664 }),
56665 TypeVariant::ClaimClaimableBalanceResult => r.with_limited_depth(|r| {
56666 Ok(Self::ClaimClaimableBalanceResult(Box::new(
56667 ClaimClaimableBalanceResult::read_xdr(r)?,
56668 )))
56669 }),
56670 TypeVariant::BeginSponsoringFutureReservesResultCode => r.with_limited_depth(|r| {
56671 Ok(Self::BeginSponsoringFutureReservesResultCode(Box::new(
56672 BeginSponsoringFutureReservesResultCode::read_xdr(r)?,
56673 )))
56674 }),
56675 TypeVariant::BeginSponsoringFutureReservesResult => r.with_limited_depth(|r| {
56676 Ok(Self::BeginSponsoringFutureReservesResult(Box::new(
56677 BeginSponsoringFutureReservesResult::read_xdr(r)?,
56678 )))
56679 }),
56680 TypeVariant::EndSponsoringFutureReservesResultCode => r.with_limited_depth(|r| {
56681 Ok(Self::EndSponsoringFutureReservesResultCode(Box::new(
56682 EndSponsoringFutureReservesResultCode::read_xdr(r)?,
56683 )))
56684 }),
56685 TypeVariant::EndSponsoringFutureReservesResult => r.with_limited_depth(|r| {
56686 Ok(Self::EndSponsoringFutureReservesResult(Box::new(
56687 EndSponsoringFutureReservesResult::read_xdr(r)?,
56688 )))
56689 }),
56690 TypeVariant::RevokeSponsorshipResultCode => r.with_limited_depth(|r| {
56691 Ok(Self::RevokeSponsorshipResultCode(Box::new(
56692 RevokeSponsorshipResultCode::read_xdr(r)?,
56693 )))
56694 }),
56695 TypeVariant::RevokeSponsorshipResult => r.with_limited_depth(|r| {
56696 Ok(Self::RevokeSponsorshipResult(Box::new(
56697 RevokeSponsorshipResult::read_xdr(r)?,
56698 )))
56699 }),
56700 TypeVariant::ClawbackResultCode => r.with_limited_depth(|r| {
56701 Ok(Self::ClawbackResultCode(Box::new(
56702 ClawbackResultCode::read_xdr(r)?,
56703 )))
56704 }),
56705 TypeVariant::ClawbackResult => r.with_limited_depth(|r| {
56706 Ok(Self::ClawbackResult(Box::new(ClawbackResult::read_xdr(r)?)))
56707 }),
56708 TypeVariant::ClawbackClaimableBalanceResultCode => r.with_limited_depth(|r| {
56709 Ok(Self::ClawbackClaimableBalanceResultCode(Box::new(
56710 ClawbackClaimableBalanceResultCode::read_xdr(r)?,
56711 )))
56712 }),
56713 TypeVariant::ClawbackClaimableBalanceResult => r.with_limited_depth(|r| {
56714 Ok(Self::ClawbackClaimableBalanceResult(Box::new(
56715 ClawbackClaimableBalanceResult::read_xdr(r)?,
56716 )))
56717 }),
56718 TypeVariant::SetTrustLineFlagsResultCode => r.with_limited_depth(|r| {
56719 Ok(Self::SetTrustLineFlagsResultCode(Box::new(
56720 SetTrustLineFlagsResultCode::read_xdr(r)?,
56721 )))
56722 }),
56723 TypeVariant::SetTrustLineFlagsResult => r.with_limited_depth(|r| {
56724 Ok(Self::SetTrustLineFlagsResult(Box::new(
56725 SetTrustLineFlagsResult::read_xdr(r)?,
56726 )))
56727 }),
56728 TypeVariant::LiquidityPoolDepositResultCode => r.with_limited_depth(|r| {
56729 Ok(Self::LiquidityPoolDepositResultCode(Box::new(
56730 LiquidityPoolDepositResultCode::read_xdr(r)?,
56731 )))
56732 }),
56733 TypeVariant::LiquidityPoolDepositResult => r.with_limited_depth(|r| {
56734 Ok(Self::LiquidityPoolDepositResult(Box::new(
56735 LiquidityPoolDepositResult::read_xdr(r)?,
56736 )))
56737 }),
56738 TypeVariant::LiquidityPoolWithdrawResultCode => r.with_limited_depth(|r| {
56739 Ok(Self::LiquidityPoolWithdrawResultCode(Box::new(
56740 LiquidityPoolWithdrawResultCode::read_xdr(r)?,
56741 )))
56742 }),
56743 TypeVariant::LiquidityPoolWithdrawResult => r.with_limited_depth(|r| {
56744 Ok(Self::LiquidityPoolWithdrawResult(Box::new(
56745 LiquidityPoolWithdrawResult::read_xdr(r)?,
56746 )))
56747 }),
56748 TypeVariant::InvokeHostFunctionResultCode => r.with_limited_depth(|r| {
56749 Ok(Self::InvokeHostFunctionResultCode(Box::new(
56750 InvokeHostFunctionResultCode::read_xdr(r)?,
56751 )))
56752 }),
56753 TypeVariant::InvokeHostFunctionResult => r.with_limited_depth(|r| {
56754 Ok(Self::InvokeHostFunctionResult(Box::new(
56755 InvokeHostFunctionResult::read_xdr(r)?,
56756 )))
56757 }),
56758 TypeVariant::ExtendFootprintTtlResultCode => r.with_limited_depth(|r| {
56759 Ok(Self::ExtendFootprintTtlResultCode(Box::new(
56760 ExtendFootprintTtlResultCode::read_xdr(r)?,
56761 )))
56762 }),
56763 TypeVariant::ExtendFootprintTtlResult => r.with_limited_depth(|r| {
56764 Ok(Self::ExtendFootprintTtlResult(Box::new(
56765 ExtendFootprintTtlResult::read_xdr(r)?,
56766 )))
56767 }),
56768 TypeVariant::RestoreFootprintResultCode => r.with_limited_depth(|r| {
56769 Ok(Self::RestoreFootprintResultCode(Box::new(
56770 RestoreFootprintResultCode::read_xdr(r)?,
56771 )))
56772 }),
56773 TypeVariant::RestoreFootprintResult => r.with_limited_depth(|r| {
56774 Ok(Self::RestoreFootprintResult(Box::new(
56775 RestoreFootprintResult::read_xdr(r)?,
56776 )))
56777 }),
56778 TypeVariant::OperationResultCode => r.with_limited_depth(|r| {
56779 Ok(Self::OperationResultCode(Box::new(
56780 OperationResultCode::read_xdr(r)?,
56781 )))
56782 }),
56783 TypeVariant::OperationResult => r.with_limited_depth(|r| {
56784 Ok(Self::OperationResult(Box::new(OperationResult::read_xdr(
56785 r,
56786 )?)))
56787 }),
56788 TypeVariant::OperationResultTr => r.with_limited_depth(|r| {
56789 Ok(Self::OperationResultTr(Box::new(
56790 OperationResultTr::read_xdr(r)?,
56791 )))
56792 }),
56793 TypeVariant::TransactionResultCode => r.with_limited_depth(|r| {
56794 Ok(Self::TransactionResultCode(Box::new(
56795 TransactionResultCode::read_xdr(r)?,
56796 )))
56797 }),
56798 TypeVariant::InnerTransactionResult => r.with_limited_depth(|r| {
56799 Ok(Self::InnerTransactionResult(Box::new(
56800 InnerTransactionResult::read_xdr(r)?,
56801 )))
56802 }),
56803 TypeVariant::InnerTransactionResultResult => r.with_limited_depth(|r| {
56804 Ok(Self::InnerTransactionResultResult(Box::new(
56805 InnerTransactionResultResult::read_xdr(r)?,
56806 )))
56807 }),
56808 TypeVariant::InnerTransactionResultExt => r.with_limited_depth(|r| {
56809 Ok(Self::InnerTransactionResultExt(Box::new(
56810 InnerTransactionResultExt::read_xdr(r)?,
56811 )))
56812 }),
56813 TypeVariant::InnerTransactionResultPair => r.with_limited_depth(|r| {
56814 Ok(Self::InnerTransactionResultPair(Box::new(
56815 InnerTransactionResultPair::read_xdr(r)?,
56816 )))
56817 }),
56818 TypeVariant::TransactionResult => r.with_limited_depth(|r| {
56819 Ok(Self::TransactionResult(Box::new(
56820 TransactionResult::read_xdr(r)?,
56821 )))
56822 }),
56823 TypeVariant::TransactionResultResult => r.with_limited_depth(|r| {
56824 Ok(Self::TransactionResultResult(Box::new(
56825 TransactionResultResult::read_xdr(r)?,
56826 )))
56827 }),
56828 TypeVariant::TransactionResultExt => r.with_limited_depth(|r| {
56829 Ok(Self::TransactionResultExt(Box::new(
56830 TransactionResultExt::read_xdr(r)?,
56831 )))
56832 }),
56833 TypeVariant::Hash => {
56834 r.with_limited_depth(|r| Ok(Self::Hash(Box::new(Hash::read_xdr(r)?))))
56835 }
56836 TypeVariant::Uint256 => {
56837 r.with_limited_depth(|r| Ok(Self::Uint256(Box::new(Uint256::read_xdr(r)?))))
56838 }
56839 TypeVariant::Uint32 => {
56840 r.with_limited_depth(|r| Ok(Self::Uint32(Box::new(Uint32::read_xdr(r)?))))
56841 }
56842 TypeVariant::Int32 => {
56843 r.with_limited_depth(|r| Ok(Self::Int32(Box::new(Int32::read_xdr(r)?))))
56844 }
56845 TypeVariant::Uint64 => {
56846 r.with_limited_depth(|r| Ok(Self::Uint64(Box::new(Uint64::read_xdr(r)?))))
56847 }
56848 TypeVariant::Int64 => {
56849 r.with_limited_depth(|r| Ok(Self::Int64(Box::new(Int64::read_xdr(r)?))))
56850 }
56851 TypeVariant::TimePoint => {
56852 r.with_limited_depth(|r| Ok(Self::TimePoint(Box::new(TimePoint::read_xdr(r)?))))
56853 }
56854 TypeVariant::Duration => {
56855 r.with_limited_depth(|r| Ok(Self::Duration(Box::new(Duration::read_xdr(r)?))))
56856 }
56857 TypeVariant::ExtensionPoint => r.with_limited_depth(|r| {
56858 Ok(Self::ExtensionPoint(Box::new(ExtensionPoint::read_xdr(r)?)))
56859 }),
56860 TypeVariant::CryptoKeyType => r.with_limited_depth(|r| {
56861 Ok(Self::CryptoKeyType(Box::new(CryptoKeyType::read_xdr(r)?)))
56862 }),
56863 TypeVariant::PublicKeyType => r.with_limited_depth(|r| {
56864 Ok(Self::PublicKeyType(Box::new(PublicKeyType::read_xdr(r)?)))
56865 }),
56866 TypeVariant::SignerKeyType => r.with_limited_depth(|r| {
56867 Ok(Self::SignerKeyType(Box::new(SignerKeyType::read_xdr(r)?)))
56868 }),
56869 TypeVariant::PublicKey => {
56870 r.with_limited_depth(|r| Ok(Self::PublicKey(Box::new(PublicKey::read_xdr(r)?))))
56871 }
56872 TypeVariant::SignerKey => {
56873 r.with_limited_depth(|r| Ok(Self::SignerKey(Box::new(SignerKey::read_xdr(r)?))))
56874 }
56875 TypeVariant::SignerKeyEd25519SignedPayload => r.with_limited_depth(|r| {
56876 Ok(Self::SignerKeyEd25519SignedPayload(Box::new(
56877 SignerKeyEd25519SignedPayload::read_xdr(r)?,
56878 )))
56879 }),
56880 TypeVariant::Signature => {
56881 r.with_limited_depth(|r| Ok(Self::Signature(Box::new(Signature::read_xdr(r)?))))
56882 }
56883 TypeVariant::SignatureHint => r.with_limited_depth(|r| {
56884 Ok(Self::SignatureHint(Box::new(SignatureHint::read_xdr(r)?)))
56885 }),
56886 TypeVariant::NodeId => {
56887 r.with_limited_depth(|r| Ok(Self::NodeId(Box::new(NodeId::read_xdr(r)?))))
56888 }
56889 TypeVariant::AccountId => {
56890 r.with_limited_depth(|r| Ok(Self::AccountId(Box::new(AccountId::read_xdr(r)?))))
56891 }
56892 TypeVariant::ContractId => {
56893 r.with_limited_depth(|r| Ok(Self::ContractId(Box::new(ContractId::read_xdr(r)?))))
56894 }
56895 TypeVariant::Curve25519Secret => r.with_limited_depth(|r| {
56896 Ok(Self::Curve25519Secret(Box::new(
56897 Curve25519Secret::read_xdr(r)?,
56898 )))
56899 }),
56900 TypeVariant::Curve25519Public => r.with_limited_depth(|r| {
56901 Ok(Self::Curve25519Public(Box::new(
56902 Curve25519Public::read_xdr(r)?,
56903 )))
56904 }),
56905 TypeVariant::HmacSha256Key => r.with_limited_depth(|r| {
56906 Ok(Self::HmacSha256Key(Box::new(HmacSha256Key::read_xdr(r)?)))
56907 }),
56908 TypeVariant::HmacSha256Mac => r.with_limited_depth(|r| {
56909 Ok(Self::HmacSha256Mac(Box::new(HmacSha256Mac::read_xdr(r)?)))
56910 }),
56911 TypeVariant::ShortHashSeed => r.with_limited_depth(|r| {
56912 Ok(Self::ShortHashSeed(Box::new(ShortHashSeed::read_xdr(r)?)))
56913 }),
56914 TypeVariant::BinaryFuseFilterType => r.with_limited_depth(|r| {
56915 Ok(Self::BinaryFuseFilterType(Box::new(
56916 BinaryFuseFilterType::read_xdr(r)?,
56917 )))
56918 }),
56919 TypeVariant::SerializedBinaryFuseFilter => r.with_limited_depth(|r| {
56920 Ok(Self::SerializedBinaryFuseFilter(Box::new(
56921 SerializedBinaryFuseFilter::read_xdr(r)?,
56922 )))
56923 }),
56924 TypeVariant::PoolId => {
56925 r.with_limited_depth(|r| Ok(Self::PoolId(Box::new(PoolId::read_xdr(r)?))))
56926 }
56927 TypeVariant::ClaimableBalanceIdType => r.with_limited_depth(|r| {
56928 Ok(Self::ClaimableBalanceIdType(Box::new(
56929 ClaimableBalanceIdType::read_xdr(r)?,
56930 )))
56931 }),
56932 TypeVariant::ClaimableBalanceId => r.with_limited_depth(|r| {
56933 Ok(Self::ClaimableBalanceId(Box::new(
56934 ClaimableBalanceId::read_xdr(r)?,
56935 )))
56936 }),
56937 }
56938 }
56939
56940 #[cfg(feature = "base64")]
56941 pub fn read_xdr_base64<R: Read>(v: TypeVariant, r: &mut Limited<R>) -> Result<Self, Error> {
56942 let mut dec = Limited::new(
56943 base64::read::DecoderReader::new(
56944 SkipWhitespace::new(&mut r.inner),
56945 &base64::engine::general_purpose::STANDARD,
56946 ),
56947 r.limits.clone(),
56948 );
56949 let t = Self::read_xdr(v, &mut dec)?;
56950 Ok(t)
56951 }
56952
56953 #[cfg(feature = "std")]
56954 pub fn read_xdr_to_end<R: Read>(v: TypeVariant, r: &mut Limited<R>) -> Result<Self, Error> {
56955 let s = Self::read_xdr(v, r)?;
56956 if r.read(&mut [0u8; 1])? == 0 {
56959 Ok(s)
56960 } else {
56961 Err(Error::Invalid)
56962 }
56963 }
56964
56965 #[cfg(feature = "base64")]
56966 pub fn read_xdr_base64_to_end<R: Read>(
56967 v: TypeVariant,
56968 r: &mut Limited<R>,
56969 ) -> Result<Self, Error> {
56970 let mut dec = Limited::new(
56971 base64::read::DecoderReader::new(
56972 SkipWhitespace::new(&mut r.inner),
56973 &base64::engine::general_purpose::STANDARD,
56974 ),
56975 r.limits.clone(),
56976 );
56977 let t = Self::read_xdr_to_end(v, &mut dec)?;
56978 Ok(t)
56979 }
56980
56981 #[cfg(feature = "std")]
56982 #[allow(clippy::too_many_lines)]
56983 pub fn read_xdr_iter<R: Read>(
56984 v: TypeVariant,
56985 r: &mut Limited<R>,
56986 ) -> Box<dyn Iterator<Item = Result<Self, Error>> + '_> {
56987 match v {
56988 TypeVariant::Value => Box::new(
56989 ReadXdrIter::<_, Value>::new(&mut r.inner, r.limits.clone())
56990 .map(|r| r.map(|t| Self::Value(Box::new(t)))),
56991 ),
56992 TypeVariant::ScpBallot => Box::new(
56993 ReadXdrIter::<_, ScpBallot>::new(&mut r.inner, r.limits.clone())
56994 .map(|r| r.map(|t| Self::ScpBallot(Box::new(t)))),
56995 ),
56996 TypeVariant::ScpStatementType => Box::new(
56997 ReadXdrIter::<_, ScpStatementType>::new(&mut r.inner, r.limits.clone())
56998 .map(|r| r.map(|t| Self::ScpStatementType(Box::new(t)))),
56999 ),
57000 TypeVariant::ScpNomination => Box::new(
57001 ReadXdrIter::<_, ScpNomination>::new(&mut r.inner, r.limits.clone())
57002 .map(|r| r.map(|t| Self::ScpNomination(Box::new(t)))),
57003 ),
57004 TypeVariant::ScpStatement => Box::new(
57005 ReadXdrIter::<_, ScpStatement>::new(&mut r.inner, r.limits.clone())
57006 .map(|r| r.map(|t| Self::ScpStatement(Box::new(t)))),
57007 ),
57008 TypeVariant::ScpStatementPledges => Box::new(
57009 ReadXdrIter::<_, ScpStatementPledges>::new(&mut r.inner, r.limits.clone())
57010 .map(|r| r.map(|t| Self::ScpStatementPledges(Box::new(t)))),
57011 ),
57012 TypeVariant::ScpStatementPrepare => Box::new(
57013 ReadXdrIter::<_, ScpStatementPrepare>::new(&mut r.inner, r.limits.clone())
57014 .map(|r| r.map(|t| Self::ScpStatementPrepare(Box::new(t)))),
57015 ),
57016 TypeVariant::ScpStatementConfirm => Box::new(
57017 ReadXdrIter::<_, ScpStatementConfirm>::new(&mut r.inner, r.limits.clone())
57018 .map(|r| r.map(|t| Self::ScpStatementConfirm(Box::new(t)))),
57019 ),
57020 TypeVariant::ScpStatementExternalize => Box::new(
57021 ReadXdrIter::<_, ScpStatementExternalize>::new(&mut r.inner, r.limits.clone())
57022 .map(|r| r.map(|t| Self::ScpStatementExternalize(Box::new(t)))),
57023 ),
57024 TypeVariant::ScpEnvelope => Box::new(
57025 ReadXdrIter::<_, ScpEnvelope>::new(&mut r.inner, r.limits.clone())
57026 .map(|r| r.map(|t| Self::ScpEnvelope(Box::new(t)))),
57027 ),
57028 TypeVariant::ScpQuorumSet => Box::new(
57029 ReadXdrIter::<_, ScpQuorumSet>::new(&mut r.inner, r.limits.clone())
57030 .map(|r| r.map(|t| Self::ScpQuorumSet(Box::new(t)))),
57031 ),
57032 TypeVariant::ConfigSettingContractExecutionLanesV0 => Box::new(
57033 ReadXdrIter::<_, ConfigSettingContractExecutionLanesV0>::new(
57034 &mut r.inner,
57035 r.limits.clone(),
57036 )
57037 .map(|r| r.map(|t| Self::ConfigSettingContractExecutionLanesV0(Box::new(t)))),
57038 ),
57039 TypeVariant::ConfigSettingContractComputeV0 => Box::new(
57040 ReadXdrIter::<_, ConfigSettingContractComputeV0>::new(
57041 &mut r.inner,
57042 r.limits.clone(),
57043 )
57044 .map(|r| r.map(|t| Self::ConfigSettingContractComputeV0(Box::new(t)))),
57045 ),
57046 TypeVariant::ConfigSettingContractParallelComputeV0 => Box::new(
57047 ReadXdrIter::<_, ConfigSettingContractParallelComputeV0>::new(
57048 &mut r.inner,
57049 r.limits.clone(),
57050 )
57051 .map(|r| r.map(|t| Self::ConfigSettingContractParallelComputeV0(Box::new(t)))),
57052 ),
57053 TypeVariant::ConfigSettingContractLedgerCostV0 => Box::new(
57054 ReadXdrIter::<_, ConfigSettingContractLedgerCostV0>::new(
57055 &mut r.inner,
57056 r.limits.clone(),
57057 )
57058 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostV0(Box::new(t)))),
57059 ),
57060 TypeVariant::ConfigSettingContractLedgerCostExtV0 => Box::new(
57061 ReadXdrIter::<_, ConfigSettingContractLedgerCostExtV0>::new(
57062 &mut r.inner,
57063 r.limits.clone(),
57064 )
57065 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostExtV0(Box::new(t)))),
57066 ),
57067 TypeVariant::ConfigSettingContractHistoricalDataV0 => Box::new(
57068 ReadXdrIter::<_, ConfigSettingContractHistoricalDataV0>::new(
57069 &mut r.inner,
57070 r.limits.clone(),
57071 )
57072 .map(|r| r.map(|t| Self::ConfigSettingContractHistoricalDataV0(Box::new(t)))),
57073 ),
57074 TypeVariant::ConfigSettingContractEventsV0 => Box::new(
57075 ReadXdrIter::<_, ConfigSettingContractEventsV0>::new(
57076 &mut r.inner,
57077 r.limits.clone(),
57078 )
57079 .map(|r| r.map(|t| Self::ConfigSettingContractEventsV0(Box::new(t)))),
57080 ),
57081 TypeVariant::ConfigSettingContractBandwidthV0 => Box::new(
57082 ReadXdrIter::<_, ConfigSettingContractBandwidthV0>::new(
57083 &mut r.inner,
57084 r.limits.clone(),
57085 )
57086 .map(|r| r.map(|t| Self::ConfigSettingContractBandwidthV0(Box::new(t)))),
57087 ),
57088 TypeVariant::ContractCostType => Box::new(
57089 ReadXdrIter::<_, ContractCostType>::new(&mut r.inner, r.limits.clone())
57090 .map(|r| r.map(|t| Self::ContractCostType(Box::new(t)))),
57091 ),
57092 TypeVariant::ContractCostParamEntry => Box::new(
57093 ReadXdrIter::<_, ContractCostParamEntry>::new(&mut r.inner, r.limits.clone())
57094 .map(|r| r.map(|t| Self::ContractCostParamEntry(Box::new(t)))),
57095 ),
57096 TypeVariant::StateArchivalSettings => Box::new(
57097 ReadXdrIter::<_, StateArchivalSettings>::new(&mut r.inner, r.limits.clone())
57098 .map(|r| r.map(|t| Self::StateArchivalSettings(Box::new(t)))),
57099 ),
57100 TypeVariant::EvictionIterator => Box::new(
57101 ReadXdrIter::<_, EvictionIterator>::new(&mut r.inner, r.limits.clone())
57102 .map(|r| r.map(|t| Self::EvictionIterator(Box::new(t)))),
57103 ),
57104 TypeVariant::ConfigSettingScpTiming => Box::new(
57105 ReadXdrIter::<_, ConfigSettingScpTiming>::new(&mut r.inner, r.limits.clone())
57106 .map(|r| r.map(|t| Self::ConfigSettingScpTiming(Box::new(t)))),
57107 ),
57108 TypeVariant::ContractCostParams => Box::new(
57109 ReadXdrIter::<_, ContractCostParams>::new(&mut r.inner, r.limits.clone())
57110 .map(|r| r.map(|t| Self::ContractCostParams(Box::new(t)))),
57111 ),
57112 TypeVariant::ConfigSettingId => Box::new(
57113 ReadXdrIter::<_, ConfigSettingId>::new(&mut r.inner, r.limits.clone())
57114 .map(|r| r.map(|t| Self::ConfigSettingId(Box::new(t)))),
57115 ),
57116 TypeVariant::ConfigSettingEntry => Box::new(
57117 ReadXdrIter::<_, ConfigSettingEntry>::new(&mut r.inner, r.limits.clone())
57118 .map(|r| r.map(|t| Self::ConfigSettingEntry(Box::new(t)))),
57119 ),
57120 TypeVariant::ScEnvMetaKind => Box::new(
57121 ReadXdrIter::<_, ScEnvMetaKind>::new(&mut r.inner, r.limits.clone())
57122 .map(|r| r.map(|t| Self::ScEnvMetaKind(Box::new(t)))),
57123 ),
57124 TypeVariant::ScEnvMetaEntry => Box::new(
57125 ReadXdrIter::<_, ScEnvMetaEntry>::new(&mut r.inner, r.limits.clone())
57126 .map(|r| r.map(|t| Self::ScEnvMetaEntry(Box::new(t)))),
57127 ),
57128 TypeVariant::ScEnvMetaEntryInterfaceVersion => Box::new(
57129 ReadXdrIter::<_, ScEnvMetaEntryInterfaceVersion>::new(
57130 &mut r.inner,
57131 r.limits.clone(),
57132 )
57133 .map(|r| r.map(|t| Self::ScEnvMetaEntryInterfaceVersion(Box::new(t)))),
57134 ),
57135 TypeVariant::ScMetaV0 => Box::new(
57136 ReadXdrIter::<_, ScMetaV0>::new(&mut r.inner, r.limits.clone())
57137 .map(|r| r.map(|t| Self::ScMetaV0(Box::new(t)))),
57138 ),
57139 TypeVariant::ScMetaKind => Box::new(
57140 ReadXdrIter::<_, ScMetaKind>::new(&mut r.inner, r.limits.clone())
57141 .map(|r| r.map(|t| Self::ScMetaKind(Box::new(t)))),
57142 ),
57143 TypeVariant::ScMetaEntry => Box::new(
57144 ReadXdrIter::<_, ScMetaEntry>::new(&mut r.inner, r.limits.clone())
57145 .map(|r| r.map(|t| Self::ScMetaEntry(Box::new(t)))),
57146 ),
57147 TypeVariant::ScSpecType => Box::new(
57148 ReadXdrIter::<_, ScSpecType>::new(&mut r.inner, r.limits.clone())
57149 .map(|r| r.map(|t| Self::ScSpecType(Box::new(t)))),
57150 ),
57151 TypeVariant::ScSpecTypeOption => Box::new(
57152 ReadXdrIter::<_, ScSpecTypeOption>::new(&mut r.inner, r.limits.clone())
57153 .map(|r| r.map(|t| Self::ScSpecTypeOption(Box::new(t)))),
57154 ),
57155 TypeVariant::ScSpecTypeResult => Box::new(
57156 ReadXdrIter::<_, ScSpecTypeResult>::new(&mut r.inner, r.limits.clone())
57157 .map(|r| r.map(|t| Self::ScSpecTypeResult(Box::new(t)))),
57158 ),
57159 TypeVariant::ScSpecTypeVec => Box::new(
57160 ReadXdrIter::<_, ScSpecTypeVec>::new(&mut r.inner, r.limits.clone())
57161 .map(|r| r.map(|t| Self::ScSpecTypeVec(Box::new(t)))),
57162 ),
57163 TypeVariant::ScSpecTypeMap => Box::new(
57164 ReadXdrIter::<_, ScSpecTypeMap>::new(&mut r.inner, r.limits.clone())
57165 .map(|r| r.map(|t| Self::ScSpecTypeMap(Box::new(t)))),
57166 ),
57167 TypeVariant::ScSpecTypeTuple => Box::new(
57168 ReadXdrIter::<_, ScSpecTypeTuple>::new(&mut r.inner, r.limits.clone())
57169 .map(|r| r.map(|t| Self::ScSpecTypeTuple(Box::new(t)))),
57170 ),
57171 TypeVariant::ScSpecTypeBytesN => Box::new(
57172 ReadXdrIter::<_, ScSpecTypeBytesN>::new(&mut r.inner, r.limits.clone())
57173 .map(|r| r.map(|t| Self::ScSpecTypeBytesN(Box::new(t)))),
57174 ),
57175 TypeVariant::ScSpecTypeUdt => Box::new(
57176 ReadXdrIter::<_, ScSpecTypeUdt>::new(&mut r.inner, r.limits.clone())
57177 .map(|r| r.map(|t| Self::ScSpecTypeUdt(Box::new(t)))),
57178 ),
57179 TypeVariant::ScSpecTypeDef => Box::new(
57180 ReadXdrIter::<_, ScSpecTypeDef>::new(&mut r.inner, r.limits.clone())
57181 .map(|r| r.map(|t| Self::ScSpecTypeDef(Box::new(t)))),
57182 ),
57183 TypeVariant::ScSpecUdtStructFieldV0 => Box::new(
57184 ReadXdrIter::<_, ScSpecUdtStructFieldV0>::new(&mut r.inner, r.limits.clone())
57185 .map(|r| r.map(|t| Self::ScSpecUdtStructFieldV0(Box::new(t)))),
57186 ),
57187 TypeVariant::ScSpecUdtStructV0 => Box::new(
57188 ReadXdrIter::<_, ScSpecUdtStructV0>::new(&mut r.inner, r.limits.clone())
57189 .map(|r| r.map(|t| Self::ScSpecUdtStructV0(Box::new(t)))),
57190 ),
57191 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Box::new(
57192 ReadXdrIter::<_, ScSpecUdtUnionCaseVoidV0>::new(&mut r.inner, r.limits.clone())
57193 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseVoidV0(Box::new(t)))),
57194 ),
57195 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Box::new(
57196 ReadXdrIter::<_, ScSpecUdtUnionCaseTupleV0>::new(&mut r.inner, r.limits.clone())
57197 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseTupleV0(Box::new(t)))),
57198 ),
57199 TypeVariant::ScSpecUdtUnionCaseV0Kind => Box::new(
57200 ReadXdrIter::<_, ScSpecUdtUnionCaseV0Kind>::new(&mut r.inner, r.limits.clone())
57201 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0Kind(Box::new(t)))),
57202 ),
57203 TypeVariant::ScSpecUdtUnionCaseV0 => Box::new(
57204 ReadXdrIter::<_, ScSpecUdtUnionCaseV0>::new(&mut r.inner, r.limits.clone())
57205 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0(Box::new(t)))),
57206 ),
57207 TypeVariant::ScSpecUdtUnionV0 => Box::new(
57208 ReadXdrIter::<_, ScSpecUdtUnionV0>::new(&mut r.inner, r.limits.clone())
57209 .map(|r| r.map(|t| Self::ScSpecUdtUnionV0(Box::new(t)))),
57210 ),
57211 TypeVariant::ScSpecUdtEnumCaseV0 => Box::new(
57212 ReadXdrIter::<_, ScSpecUdtEnumCaseV0>::new(&mut r.inner, r.limits.clone())
57213 .map(|r| r.map(|t| Self::ScSpecUdtEnumCaseV0(Box::new(t)))),
57214 ),
57215 TypeVariant::ScSpecUdtEnumV0 => Box::new(
57216 ReadXdrIter::<_, ScSpecUdtEnumV0>::new(&mut r.inner, r.limits.clone())
57217 .map(|r| r.map(|t| Self::ScSpecUdtEnumV0(Box::new(t)))),
57218 ),
57219 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Box::new(
57220 ReadXdrIter::<_, ScSpecUdtErrorEnumCaseV0>::new(&mut r.inner, r.limits.clone())
57221 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumCaseV0(Box::new(t)))),
57222 ),
57223 TypeVariant::ScSpecUdtErrorEnumV0 => Box::new(
57224 ReadXdrIter::<_, ScSpecUdtErrorEnumV0>::new(&mut r.inner, r.limits.clone())
57225 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumV0(Box::new(t)))),
57226 ),
57227 TypeVariant::ScSpecFunctionInputV0 => Box::new(
57228 ReadXdrIter::<_, ScSpecFunctionInputV0>::new(&mut r.inner, r.limits.clone())
57229 .map(|r| r.map(|t| Self::ScSpecFunctionInputV0(Box::new(t)))),
57230 ),
57231 TypeVariant::ScSpecFunctionV0 => Box::new(
57232 ReadXdrIter::<_, ScSpecFunctionV0>::new(&mut r.inner, r.limits.clone())
57233 .map(|r| r.map(|t| Self::ScSpecFunctionV0(Box::new(t)))),
57234 ),
57235 TypeVariant::ScSpecEventParamLocationV0 => Box::new(
57236 ReadXdrIter::<_, ScSpecEventParamLocationV0>::new(&mut r.inner, r.limits.clone())
57237 .map(|r| r.map(|t| Self::ScSpecEventParamLocationV0(Box::new(t)))),
57238 ),
57239 TypeVariant::ScSpecEventParamV0 => Box::new(
57240 ReadXdrIter::<_, ScSpecEventParamV0>::new(&mut r.inner, r.limits.clone())
57241 .map(|r| r.map(|t| Self::ScSpecEventParamV0(Box::new(t)))),
57242 ),
57243 TypeVariant::ScSpecEventDataFormat => Box::new(
57244 ReadXdrIter::<_, ScSpecEventDataFormat>::new(&mut r.inner, r.limits.clone())
57245 .map(|r| r.map(|t| Self::ScSpecEventDataFormat(Box::new(t)))),
57246 ),
57247 TypeVariant::ScSpecEventV0 => Box::new(
57248 ReadXdrIter::<_, ScSpecEventV0>::new(&mut r.inner, r.limits.clone())
57249 .map(|r| r.map(|t| Self::ScSpecEventV0(Box::new(t)))),
57250 ),
57251 TypeVariant::ScSpecEntryKind => Box::new(
57252 ReadXdrIter::<_, ScSpecEntryKind>::new(&mut r.inner, r.limits.clone())
57253 .map(|r| r.map(|t| Self::ScSpecEntryKind(Box::new(t)))),
57254 ),
57255 TypeVariant::ScSpecEntry => Box::new(
57256 ReadXdrIter::<_, ScSpecEntry>::new(&mut r.inner, r.limits.clone())
57257 .map(|r| r.map(|t| Self::ScSpecEntry(Box::new(t)))),
57258 ),
57259 TypeVariant::ScValType => Box::new(
57260 ReadXdrIter::<_, ScValType>::new(&mut r.inner, r.limits.clone())
57261 .map(|r| r.map(|t| Self::ScValType(Box::new(t)))),
57262 ),
57263 TypeVariant::ScErrorType => Box::new(
57264 ReadXdrIter::<_, ScErrorType>::new(&mut r.inner, r.limits.clone())
57265 .map(|r| r.map(|t| Self::ScErrorType(Box::new(t)))),
57266 ),
57267 TypeVariant::ScErrorCode => Box::new(
57268 ReadXdrIter::<_, ScErrorCode>::new(&mut r.inner, r.limits.clone())
57269 .map(|r| r.map(|t| Self::ScErrorCode(Box::new(t)))),
57270 ),
57271 TypeVariant::ScError => Box::new(
57272 ReadXdrIter::<_, ScError>::new(&mut r.inner, r.limits.clone())
57273 .map(|r| r.map(|t| Self::ScError(Box::new(t)))),
57274 ),
57275 TypeVariant::UInt128Parts => Box::new(
57276 ReadXdrIter::<_, UInt128Parts>::new(&mut r.inner, r.limits.clone())
57277 .map(|r| r.map(|t| Self::UInt128Parts(Box::new(t)))),
57278 ),
57279 TypeVariant::Int128Parts => Box::new(
57280 ReadXdrIter::<_, Int128Parts>::new(&mut r.inner, r.limits.clone())
57281 .map(|r| r.map(|t| Self::Int128Parts(Box::new(t)))),
57282 ),
57283 TypeVariant::UInt256Parts => Box::new(
57284 ReadXdrIter::<_, UInt256Parts>::new(&mut r.inner, r.limits.clone())
57285 .map(|r| r.map(|t| Self::UInt256Parts(Box::new(t)))),
57286 ),
57287 TypeVariant::Int256Parts => Box::new(
57288 ReadXdrIter::<_, Int256Parts>::new(&mut r.inner, r.limits.clone())
57289 .map(|r| r.map(|t| Self::Int256Parts(Box::new(t)))),
57290 ),
57291 TypeVariant::ContractExecutableType => Box::new(
57292 ReadXdrIter::<_, ContractExecutableType>::new(&mut r.inner, r.limits.clone())
57293 .map(|r| r.map(|t| Self::ContractExecutableType(Box::new(t)))),
57294 ),
57295 TypeVariant::ContractExecutable => Box::new(
57296 ReadXdrIter::<_, ContractExecutable>::new(&mut r.inner, r.limits.clone())
57297 .map(|r| r.map(|t| Self::ContractExecutable(Box::new(t)))),
57298 ),
57299 TypeVariant::ScAddressType => Box::new(
57300 ReadXdrIter::<_, ScAddressType>::new(&mut r.inner, r.limits.clone())
57301 .map(|r| r.map(|t| Self::ScAddressType(Box::new(t)))),
57302 ),
57303 TypeVariant::MuxedEd25519Account => Box::new(
57304 ReadXdrIter::<_, MuxedEd25519Account>::new(&mut r.inner, r.limits.clone())
57305 .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t)))),
57306 ),
57307 TypeVariant::ScAddress => Box::new(
57308 ReadXdrIter::<_, ScAddress>::new(&mut r.inner, r.limits.clone())
57309 .map(|r| r.map(|t| Self::ScAddress(Box::new(t)))),
57310 ),
57311 TypeVariant::ScVec => Box::new(
57312 ReadXdrIter::<_, ScVec>::new(&mut r.inner, r.limits.clone())
57313 .map(|r| r.map(|t| Self::ScVec(Box::new(t)))),
57314 ),
57315 TypeVariant::ScMap => Box::new(
57316 ReadXdrIter::<_, ScMap>::new(&mut r.inner, r.limits.clone())
57317 .map(|r| r.map(|t| Self::ScMap(Box::new(t)))),
57318 ),
57319 TypeVariant::ScBytes => Box::new(
57320 ReadXdrIter::<_, ScBytes>::new(&mut r.inner, r.limits.clone())
57321 .map(|r| r.map(|t| Self::ScBytes(Box::new(t)))),
57322 ),
57323 TypeVariant::ScString => Box::new(
57324 ReadXdrIter::<_, ScString>::new(&mut r.inner, r.limits.clone())
57325 .map(|r| r.map(|t| Self::ScString(Box::new(t)))),
57326 ),
57327 TypeVariant::ScSymbol => Box::new(
57328 ReadXdrIter::<_, ScSymbol>::new(&mut r.inner, r.limits.clone())
57329 .map(|r| r.map(|t| Self::ScSymbol(Box::new(t)))),
57330 ),
57331 TypeVariant::ScNonceKey => Box::new(
57332 ReadXdrIter::<_, ScNonceKey>::new(&mut r.inner, r.limits.clone())
57333 .map(|r| r.map(|t| Self::ScNonceKey(Box::new(t)))),
57334 ),
57335 TypeVariant::ScContractInstance => Box::new(
57336 ReadXdrIter::<_, ScContractInstance>::new(&mut r.inner, r.limits.clone())
57337 .map(|r| r.map(|t| Self::ScContractInstance(Box::new(t)))),
57338 ),
57339 TypeVariant::ScVal => Box::new(
57340 ReadXdrIter::<_, ScVal>::new(&mut r.inner, r.limits.clone())
57341 .map(|r| r.map(|t| Self::ScVal(Box::new(t)))),
57342 ),
57343 TypeVariant::ScMapEntry => Box::new(
57344 ReadXdrIter::<_, ScMapEntry>::new(&mut r.inner, r.limits.clone())
57345 .map(|r| r.map(|t| Self::ScMapEntry(Box::new(t)))),
57346 ),
57347 TypeVariant::LedgerCloseMetaBatch => Box::new(
57348 ReadXdrIter::<_, LedgerCloseMetaBatch>::new(&mut r.inner, r.limits.clone())
57349 .map(|r| r.map(|t| Self::LedgerCloseMetaBatch(Box::new(t)))),
57350 ),
57351 TypeVariant::StoredTransactionSet => Box::new(
57352 ReadXdrIter::<_, StoredTransactionSet>::new(&mut r.inner, r.limits.clone())
57353 .map(|r| r.map(|t| Self::StoredTransactionSet(Box::new(t)))),
57354 ),
57355 TypeVariant::StoredDebugTransactionSet => Box::new(
57356 ReadXdrIter::<_, StoredDebugTransactionSet>::new(&mut r.inner, r.limits.clone())
57357 .map(|r| r.map(|t| Self::StoredDebugTransactionSet(Box::new(t)))),
57358 ),
57359 TypeVariant::PersistedScpStateV0 => Box::new(
57360 ReadXdrIter::<_, PersistedScpStateV0>::new(&mut r.inner, r.limits.clone())
57361 .map(|r| r.map(|t| Self::PersistedScpStateV0(Box::new(t)))),
57362 ),
57363 TypeVariant::PersistedScpStateV1 => Box::new(
57364 ReadXdrIter::<_, PersistedScpStateV1>::new(&mut r.inner, r.limits.clone())
57365 .map(|r| r.map(|t| Self::PersistedScpStateV1(Box::new(t)))),
57366 ),
57367 TypeVariant::PersistedScpState => Box::new(
57368 ReadXdrIter::<_, PersistedScpState>::new(&mut r.inner, r.limits.clone())
57369 .map(|r| r.map(|t| Self::PersistedScpState(Box::new(t)))),
57370 ),
57371 TypeVariant::Thresholds => Box::new(
57372 ReadXdrIter::<_, Thresholds>::new(&mut r.inner, r.limits.clone())
57373 .map(|r| r.map(|t| Self::Thresholds(Box::new(t)))),
57374 ),
57375 TypeVariant::String32 => Box::new(
57376 ReadXdrIter::<_, String32>::new(&mut r.inner, r.limits.clone())
57377 .map(|r| r.map(|t| Self::String32(Box::new(t)))),
57378 ),
57379 TypeVariant::String64 => Box::new(
57380 ReadXdrIter::<_, String64>::new(&mut r.inner, r.limits.clone())
57381 .map(|r| r.map(|t| Self::String64(Box::new(t)))),
57382 ),
57383 TypeVariant::SequenceNumber => Box::new(
57384 ReadXdrIter::<_, SequenceNumber>::new(&mut r.inner, r.limits.clone())
57385 .map(|r| r.map(|t| Self::SequenceNumber(Box::new(t)))),
57386 ),
57387 TypeVariant::DataValue => Box::new(
57388 ReadXdrIter::<_, DataValue>::new(&mut r.inner, r.limits.clone())
57389 .map(|r| r.map(|t| Self::DataValue(Box::new(t)))),
57390 ),
57391 TypeVariant::AssetCode4 => Box::new(
57392 ReadXdrIter::<_, AssetCode4>::new(&mut r.inner, r.limits.clone())
57393 .map(|r| r.map(|t| Self::AssetCode4(Box::new(t)))),
57394 ),
57395 TypeVariant::AssetCode12 => Box::new(
57396 ReadXdrIter::<_, AssetCode12>::new(&mut r.inner, r.limits.clone())
57397 .map(|r| r.map(|t| Self::AssetCode12(Box::new(t)))),
57398 ),
57399 TypeVariant::AssetType => Box::new(
57400 ReadXdrIter::<_, AssetType>::new(&mut r.inner, r.limits.clone())
57401 .map(|r| r.map(|t| Self::AssetType(Box::new(t)))),
57402 ),
57403 TypeVariant::AssetCode => Box::new(
57404 ReadXdrIter::<_, AssetCode>::new(&mut r.inner, r.limits.clone())
57405 .map(|r| r.map(|t| Self::AssetCode(Box::new(t)))),
57406 ),
57407 TypeVariant::AlphaNum4 => Box::new(
57408 ReadXdrIter::<_, AlphaNum4>::new(&mut r.inner, r.limits.clone())
57409 .map(|r| r.map(|t| Self::AlphaNum4(Box::new(t)))),
57410 ),
57411 TypeVariant::AlphaNum12 => Box::new(
57412 ReadXdrIter::<_, AlphaNum12>::new(&mut r.inner, r.limits.clone())
57413 .map(|r| r.map(|t| Self::AlphaNum12(Box::new(t)))),
57414 ),
57415 TypeVariant::Asset => Box::new(
57416 ReadXdrIter::<_, Asset>::new(&mut r.inner, r.limits.clone())
57417 .map(|r| r.map(|t| Self::Asset(Box::new(t)))),
57418 ),
57419 TypeVariant::Price => Box::new(
57420 ReadXdrIter::<_, Price>::new(&mut r.inner, r.limits.clone())
57421 .map(|r| r.map(|t| Self::Price(Box::new(t)))),
57422 ),
57423 TypeVariant::Liabilities => Box::new(
57424 ReadXdrIter::<_, Liabilities>::new(&mut r.inner, r.limits.clone())
57425 .map(|r| r.map(|t| Self::Liabilities(Box::new(t)))),
57426 ),
57427 TypeVariant::ThresholdIndexes => Box::new(
57428 ReadXdrIter::<_, ThresholdIndexes>::new(&mut r.inner, r.limits.clone())
57429 .map(|r| r.map(|t| Self::ThresholdIndexes(Box::new(t)))),
57430 ),
57431 TypeVariant::LedgerEntryType => Box::new(
57432 ReadXdrIter::<_, LedgerEntryType>::new(&mut r.inner, r.limits.clone())
57433 .map(|r| r.map(|t| Self::LedgerEntryType(Box::new(t)))),
57434 ),
57435 TypeVariant::Signer => Box::new(
57436 ReadXdrIter::<_, Signer>::new(&mut r.inner, r.limits.clone())
57437 .map(|r| r.map(|t| Self::Signer(Box::new(t)))),
57438 ),
57439 TypeVariant::AccountFlags => Box::new(
57440 ReadXdrIter::<_, AccountFlags>::new(&mut r.inner, r.limits.clone())
57441 .map(|r| r.map(|t| Self::AccountFlags(Box::new(t)))),
57442 ),
57443 TypeVariant::SponsorshipDescriptor => Box::new(
57444 ReadXdrIter::<_, SponsorshipDescriptor>::new(&mut r.inner, r.limits.clone())
57445 .map(|r| r.map(|t| Self::SponsorshipDescriptor(Box::new(t)))),
57446 ),
57447 TypeVariant::AccountEntryExtensionV3 => Box::new(
57448 ReadXdrIter::<_, AccountEntryExtensionV3>::new(&mut r.inner, r.limits.clone())
57449 .map(|r| r.map(|t| Self::AccountEntryExtensionV3(Box::new(t)))),
57450 ),
57451 TypeVariant::AccountEntryExtensionV2 => Box::new(
57452 ReadXdrIter::<_, AccountEntryExtensionV2>::new(&mut r.inner, r.limits.clone())
57453 .map(|r| r.map(|t| Self::AccountEntryExtensionV2(Box::new(t)))),
57454 ),
57455 TypeVariant::AccountEntryExtensionV2Ext => Box::new(
57456 ReadXdrIter::<_, AccountEntryExtensionV2Ext>::new(&mut r.inner, r.limits.clone())
57457 .map(|r| r.map(|t| Self::AccountEntryExtensionV2Ext(Box::new(t)))),
57458 ),
57459 TypeVariant::AccountEntryExtensionV1 => Box::new(
57460 ReadXdrIter::<_, AccountEntryExtensionV1>::new(&mut r.inner, r.limits.clone())
57461 .map(|r| r.map(|t| Self::AccountEntryExtensionV1(Box::new(t)))),
57462 ),
57463 TypeVariant::AccountEntryExtensionV1Ext => Box::new(
57464 ReadXdrIter::<_, AccountEntryExtensionV1Ext>::new(&mut r.inner, r.limits.clone())
57465 .map(|r| r.map(|t| Self::AccountEntryExtensionV1Ext(Box::new(t)))),
57466 ),
57467 TypeVariant::AccountEntry => Box::new(
57468 ReadXdrIter::<_, AccountEntry>::new(&mut r.inner, r.limits.clone())
57469 .map(|r| r.map(|t| Self::AccountEntry(Box::new(t)))),
57470 ),
57471 TypeVariant::AccountEntryExt => Box::new(
57472 ReadXdrIter::<_, AccountEntryExt>::new(&mut r.inner, r.limits.clone())
57473 .map(|r| r.map(|t| Self::AccountEntryExt(Box::new(t)))),
57474 ),
57475 TypeVariant::TrustLineFlags => Box::new(
57476 ReadXdrIter::<_, TrustLineFlags>::new(&mut r.inner, r.limits.clone())
57477 .map(|r| r.map(|t| Self::TrustLineFlags(Box::new(t)))),
57478 ),
57479 TypeVariant::LiquidityPoolType => Box::new(
57480 ReadXdrIter::<_, LiquidityPoolType>::new(&mut r.inner, r.limits.clone())
57481 .map(|r| r.map(|t| Self::LiquidityPoolType(Box::new(t)))),
57482 ),
57483 TypeVariant::TrustLineAsset => Box::new(
57484 ReadXdrIter::<_, TrustLineAsset>::new(&mut r.inner, r.limits.clone())
57485 .map(|r| r.map(|t| Self::TrustLineAsset(Box::new(t)))),
57486 ),
57487 TypeVariant::TrustLineEntryExtensionV2 => Box::new(
57488 ReadXdrIter::<_, TrustLineEntryExtensionV2>::new(&mut r.inner, r.limits.clone())
57489 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2(Box::new(t)))),
57490 ),
57491 TypeVariant::TrustLineEntryExtensionV2Ext => Box::new(
57492 ReadXdrIter::<_, TrustLineEntryExtensionV2Ext>::new(&mut r.inner, r.limits.clone())
57493 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2Ext(Box::new(t)))),
57494 ),
57495 TypeVariant::TrustLineEntry => Box::new(
57496 ReadXdrIter::<_, TrustLineEntry>::new(&mut r.inner, r.limits.clone())
57497 .map(|r| r.map(|t| Self::TrustLineEntry(Box::new(t)))),
57498 ),
57499 TypeVariant::TrustLineEntryExt => Box::new(
57500 ReadXdrIter::<_, TrustLineEntryExt>::new(&mut r.inner, r.limits.clone())
57501 .map(|r| r.map(|t| Self::TrustLineEntryExt(Box::new(t)))),
57502 ),
57503 TypeVariant::TrustLineEntryV1 => Box::new(
57504 ReadXdrIter::<_, TrustLineEntryV1>::new(&mut r.inner, r.limits.clone())
57505 .map(|r| r.map(|t| Self::TrustLineEntryV1(Box::new(t)))),
57506 ),
57507 TypeVariant::TrustLineEntryV1Ext => Box::new(
57508 ReadXdrIter::<_, TrustLineEntryV1Ext>::new(&mut r.inner, r.limits.clone())
57509 .map(|r| r.map(|t| Self::TrustLineEntryV1Ext(Box::new(t)))),
57510 ),
57511 TypeVariant::OfferEntryFlags => Box::new(
57512 ReadXdrIter::<_, OfferEntryFlags>::new(&mut r.inner, r.limits.clone())
57513 .map(|r| r.map(|t| Self::OfferEntryFlags(Box::new(t)))),
57514 ),
57515 TypeVariant::OfferEntry => Box::new(
57516 ReadXdrIter::<_, OfferEntry>::new(&mut r.inner, r.limits.clone())
57517 .map(|r| r.map(|t| Self::OfferEntry(Box::new(t)))),
57518 ),
57519 TypeVariant::OfferEntryExt => Box::new(
57520 ReadXdrIter::<_, OfferEntryExt>::new(&mut r.inner, r.limits.clone())
57521 .map(|r| r.map(|t| Self::OfferEntryExt(Box::new(t)))),
57522 ),
57523 TypeVariant::DataEntry => Box::new(
57524 ReadXdrIter::<_, DataEntry>::new(&mut r.inner, r.limits.clone())
57525 .map(|r| r.map(|t| Self::DataEntry(Box::new(t)))),
57526 ),
57527 TypeVariant::DataEntryExt => Box::new(
57528 ReadXdrIter::<_, DataEntryExt>::new(&mut r.inner, r.limits.clone())
57529 .map(|r| r.map(|t| Self::DataEntryExt(Box::new(t)))),
57530 ),
57531 TypeVariant::ClaimPredicateType => Box::new(
57532 ReadXdrIter::<_, ClaimPredicateType>::new(&mut r.inner, r.limits.clone())
57533 .map(|r| r.map(|t| Self::ClaimPredicateType(Box::new(t)))),
57534 ),
57535 TypeVariant::ClaimPredicate => Box::new(
57536 ReadXdrIter::<_, ClaimPredicate>::new(&mut r.inner, r.limits.clone())
57537 .map(|r| r.map(|t| Self::ClaimPredicate(Box::new(t)))),
57538 ),
57539 TypeVariant::ClaimantType => Box::new(
57540 ReadXdrIter::<_, ClaimantType>::new(&mut r.inner, r.limits.clone())
57541 .map(|r| r.map(|t| Self::ClaimantType(Box::new(t)))),
57542 ),
57543 TypeVariant::Claimant => Box::new(
57544 ReadXdrIter::<_, Claimant>::new(&mut r.inner, r.limits.clone())
57545 .map(|r| r.map(|t| Self::Claimant(Box::new(t)))),
57546 ),
57547 TypeVariant::ClaimantV0 => Box::new(
57548 ReadXdrIter::<_, ClaimantV0>::new(&mut r.inner, r.limits.clone())
57549 .map(|r| r.map(|t| Self::ClaimantV0(Box::new(t)))),
57550 ),
57551 TypeVariant::ClaimableBalanceFlags => Box::new(
57552 ReadXdrIter::<_, ClaimableBalanceFlags>::new(&mut r.inner, r.limits.clone())
57553 .map(|r| r.map(|t| Self::ClaimableBalanceFlags(Box::new(t)))),
57554 ),
57555 TypeVariant::ClaimableBalanceEntryExtensionV1 => Box::new(
57556 ReadXdrIter::<_, ClaimableBalanceEntryExtensionV1>::new(
57557 &mut r.inner,
57558 r.limits.clone(),
57559 )
57560 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1(Box::new(t)))),
57561 ),
57562 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => Box::new(
57563 ReadXdrIter::<_, ClaimableBalanceEntryExtensionV1Ext>::new(
57564 &mut r.inner,
57565 r.limits.clone(),
57566 )
57567 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(t)))),
57568 ),
57569 TypeVariant::ClaimableBalanceEntry => Box::new(
57570 ReadXdrIter::<_, ClaimableBalanceEntry>::new(&mut r.inner, r.limits.clone())
57571 .map(|r| r.map(|t| Self::ClaimableBalanceEntry(Box::new(t)))),
57572 ),
57573 TypeVariant::ClaimableBalanceEntryExt => Box::new(
57574 ReadXdrIter::<_, ClaimableBalanceEntryExt>::new(&mut r.inner, r.limits.clone())
57575 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExt(Box::new(t)))),
57576 ),
57577 TypeVariant::LiquidityPoolConstantProductParameters => Box::new(
57578 ReadXdrIter::<_, LiquidityPoolConstantProductParameters>::new(
57579 &mut r.inner,
57580 r.limits.clone(),
57581 )
57582 .map(|r| r.map(|t| Self::LiquidityPoolConstantProductParameters(Box::new(t)))),
57583 ),
57584 TypeVariant::LiquidityPoolEntry => Box::new(
57585 ReadXdrIter::<_, LiquidityPoolEntry>::new(&mut r.inner, r.limits.clone())
57586 .map(|r| r.map(|t| Self::LiquidityPoolEntry(Box::new(t)))),
57587 ),
57588 TypeVariant::LiquidityPoolEntryBody => Box::new(
57589 ReadXdrIter::<_, LiquidityPoolEntryBody>::new(&mut r.inner, r.limits.clone())
57590 .map(|r| r.map(|t| Self::LiquidityPoolEntryBody(Box::new(t)))),
57591 ),
57592 TypeVariant::LiquidityPoolEntryConstantProduct => Box::new(
57593 ReadXdrIter::<_, LiquidityPoolEntryConstantProduct>::new(
57594 &mut r.inner,
57595 r.limits.clone(),
57596 )
57597 .map(|r| r.map(|t| Self::LiquidityPoolEntryConstantProduct(Box::new(t)))),
57598 ),
57599 TypeVariant::ContractDataDurability => Box::new(
57600 ReadXdrIter::<_, ContractDataDurability>::new(&mut r.inner, r.limits.clone())
57601 .map(|r| r.map(|t| Self::ContractDataDurability(Box::new(t)))),
57602 ),
57603 TypeVariant::ContractDataEntry => Box::new(
57604 ReadXdrIter::<_, ContractDataEntry>::new(&mut r.inner, r.limits.clone())
57605 .map(|r| r.map(|t| Self::ContractDataEntry(Box::new(t)))),
57606 ),
57607 TypeVariant::ContractCodeCostInputs => Box::new(
57608 ReadXdrIter::<_, ContractCodeCostInputs>::new(&mut r.inner, r.limits.clone())
57609 .map(|r| r.map(|t| Self::ContractCodeCostInputs(Box::new(t)))),
57610 ),
57611 TypeVariant::ContractCodeEntry => Box::new(
57612 ReadXdrIter::<_, ContractCodeEntry>::new(&mut r.inner, r.limits.clone())
57613 .map(|r| r.map(|t| Self::ContractCodeEntry(Box::new(t)))),
57614 ),
57615 TypeVariant::ContractCodeEntryExt => Box::new(
57616 ReadXdrIter::<_, ContractCodeEntryExt>::new(&mut r.inner, r.limits.clone())
57617 .map(|r| r.map(|t| Self::ContractCodeEntryExt(Box::new(t)))),
57618 ),
57619 TypeVariant::ContractCodeEntryV1 => Box::new(
57620 ReadXdrIter::<_, ContractCodeEntryV1>::new(&mut r.inner, r.limits.clone())
57621 .map(|r| r.map(|t| Self::ContractCodeEntryV1(Box::new(t)))),
57622 ),
57623 TypeVariant::TtlEntry => Box::new(
57624 ReadXdrIter::<_, TtlEntry>::new(&mut r.inner, r.limits.clone())
57625 .map(|r| r.map(|t| Self::TtlEntry(Box::new(t)))),
57626 ),
57627 TypeVariant::LedgerEntryExtensionV1 => Box::new(
57628 ReadXdrIter::<_, LedgerEntryExtensionV1>::new(&mut r.inner, r.limits.clone())
57629 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1(Box::new(t)))),
57630 ),
57631 TypeVariant::LedgerEntryExtensionV1Ext => Box::new(
57632 ReadXdrIter::<_, LedgerEntryExtensionV1Ext>::new(&mut r.inner, r.limits.clone())
57633 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1Ext(Box::new(t)))),
57634 ),
57635 TypeVariant::LedgerEntry => Box::new(
57636 ReadXdrIter::<_, LedgerEntry>::new(&mut r.inner, r.limits.clone())
57637 .map(|r| r.map(|t| Self::LedgerEntry(Box::new(t)))),
57638 ),
57639 TypeVariant::LedgerEntryData => Box::new(
57640 ReadXdrIter::<_, LedgerEntryData>::new(&mut r.inner, r.limits.clone())
57641 .map(|r| r.map(|t| Self::LedgerEntryData(Box::new(t)))),
57642 ),
57643 TypeVariant::LedgerEntryExt => Box::new(
57644 ReadXdrIter::<_, LedgerEntryExt>::new(&mut r.inner, r.limits.clone())
57645 .map(|r| r.map(|t| Self::LedgerEntryExt(Box::new(t)))),
57646 ),
57647 TypeVariant::LedgerKey => Box::new(
57648 ReadXdrIter::<_, LedgerKey>::new(&mut r.inner, r.limits.clone())
57649 .map(|r| r.map(|t| Self::LedgerKey(Box::new(t)))),
57650 ),
57651 TypeVariant::LedgerKeyAccount => Box::new(
57652 ReadXdrIter::<_, LedgerKeyAccount>::new(&mut r.inner, r.limits.clone())
57653 .map(|r| r.map(|t| Self::LedgerKeyAccount(Box::new(t)))),
57654 ),
57655 TypeVariant::LedgerKeyTrustLine => Box::new(
57656 ReadXdrIter::<_, LedgerKeyTrustLine>::new(&mut r.inner, r.limits.clone())
57657 .map(|r| r.map(|t| Self::LedgerKeyTrustLine(Box::new(t)))),
57658 ),
57659 TypeVariant::LedgerKeyOffer => Box::new(
57660 ReadXdrIter::<_, LedgerKeyOffer>::new(&mut r.inner, r.limits.clone())
57661 .map(|r| r.map(|t| Self::LedgerKeyOffer(Box::new(t)))),
57662 ),
57663 TypeVariant::LedgerKeyData => Box::new(
57664 ReadXdrIter::<_, LedgerKeyData>::new(&mut r.inner, r.limits.clone())
57665 .map(|r| r.map(|t| Self::LedgerKeyData(Box::new(t)))),
57666 ),
57667 TypeVariant::LedgerKeyClaimableBalance => Box::new(
57668 ReadXdrIter::<_, LedgerKeyClaimableBalance>::new(&mut r.inner, r.limits.clone())
57669 .map(|r| r.map(|t| Self::LedgerKeyClaimableBalance(Box::new(t)))),
57670 ),
57671 TypeVariant::LedgerKeyLiquidityPool => Box::new(
57672 ReadXdrIter::<_, LedgerKeyLiquidityPool>::new(&mut r.inner, r.limits.clone())
57673 .map(|r| r.map(|t| Self::LedgerKeyLiquidityPool(Box::new(t)))),
57674 ),
57675 TypeVariant::LedgerKeyContractData => Box::new(
57676 ReadXdrIter::<_, LedgerKeyContractData>::new(&mut r.inner, r.limits.clone())
57677 .map(|r| r.map(|t| Self::LedgerKeyContractData(Box::new(t)))),
57678 ),
57679 TypeVariant::LedgerKeyContractCode => Box::new(
57680 ReadXdrIter::<_, LedgerKeyContractCode>::new(&mut r.inner, r.limits.clone())
57681 .map(|r| r.map(|t| Self::LedgerKeyContractCode(Box::new(t)))),
57682 ),
57683 TypeVariant::LedgerKeyConfigSetting => Box::new(
57684 ReadXdrIter::<_, LedgerKeyConfigSetting>::new(&mut r.inner, r.limits.clone())
57685 .map(|r| r.map(|t| Self::LedgerKeyConfigSetting(Box::new(t)))),
57686 ),
57687 TypeVariant::LedgerKeyTtl => Box::new(
57688 ReadXdrIter::<_, LedgerKeyTtl>::new(&mut r.inner, r.limits.clone())
57689 .map(|r| r.map(|t| Self::LedgerKeyTtl(Box::new(t)))),
57690 ),
57691 TypeVariant::EnvelopeType => Box::new(
57692 ReadXdrIter::<_, EnvelopeType>::new(&mut r.inner, r.limits.clone())
57693 .map(|r| r.map(|t| Self::EnvelopeType(Box::new(t)))),
57694 ),
57695 TypeVariant::BucketListType => Box::new(
57696 ReadXdrIter::<_, BucketListType>::new(&mut r.inner, r.limits.clone())
57697 .map(|r| r.map(|t| Self::BucketListType(Box::new(t)))),
57698 ),
57699 TypeVariant::BucketEntryType => Box::new(
57700 ReadXdrIter::<_, BucketEntryType>::new(&mut r.inner, r.limits.clone())
57701 .map(|r| r.map(|t| Self::BucketEntryType(Box::new(t)))),
57702 ),
57703 TypeVariant::HotArchiveBucketEntryType => Box::new(
57704 ReadXdrIter::<_, HotArchiveBucketEntryType>::new(&mut r.inner, r.limits.clone())
57705 .map(|r| r.map(|t| Self::HotArchiveBucketEntryType(Box::new(t)))),
57706 ),
57707 TypeVariant::BucketMetadata => Box::new(
57708 ReadXdrIter::<_, BucketMetadata>::new(&mut r.inner, r.limits.clone())
57709 .map(|r| r.map(|t| Self::BucketMetadata(Box::new(t)))),
57710 ),
57711 TypeVariant::BucketMetadataExt => Box::new(
57712 ReadXdrIter::<_, BucketMetadataExt>::new(&mut r.inner, r.limits.clone())
57713 .map(|r| r.map(|t| Self::BucketMetadataExt(Box::new(t)))),
57714 ),
57715 TypeVariant::BucketEntry => Box::new(
57716 ReadXdrIter::<_, BucketEntry>::new(&mut r.inner, r.limits.clone())
57717 .map(|r| r.map(|t| Self::BucketEntry(Box::new(t)))),
57718 ),
57719 TypeVariant::HotArchiveBucketEntry => Box::new(
57720 ReadXdrIter::<_, HotArchiveBucketEntry>::new(&mut r.inner, r.limits.clone())
57721 .map(|r| r.map(|t| Self::HotArchiveBucketEntry(Box::new(t)))),
57722 ),
57723 TypeVariant::UpgradeType => Box::new(
57724 ReadXdrIter::<_, UpgradeType>::new(&mut r.inner, r.limits.clone())
57725 .map(|r| r.map(|t| Self::UpgradeType(Box::new(t)))),
57726 ),
57727 TypeVariant::StellarValueType => Box::new(
57728 ReadXdrIter::<_, StellarValueType>::new(&mut r.inner, r.limits.clone())
57729 .map(|r| r.map(|t| Self::StellarValueType(Box::new(t)))),
57730 ),
57731 TypeVariant::LedgerCloseValueSignature => Box::new(
57732 ReadXdrIter::<_, LedgerCloseValueSignature>::new(&mut r.inner, r.limits.clone())
57733 .map(|r| r.map(|t| Self::LedgerCloseValueSignature(Box::new(t)))),
57734 ),
57735 TypeVariant::StellarValue => Box::new(
57736 ReadXdrIter::<_, StellarValue>::new(&mut r.inner, r.limits.clone())
57737 .map(|r| r.map(|t| Self::StellarValue(Box::new(t)))),
57738 ),
57739 TypeVariant::StellarValueExt => Box::new(
57740 ReadXdrIter::<_, StellarValueExt>::new(&mut r.inner, r.limits.clone())
57741 .map(|r| r.map(|t| Self::StellarValueExt(Box::new(t)))),
57742 ),
57743 TypeVariant::LedgerHeaderFlags => Box::new(
57744 ReadXdrIter::<_, LedgerHeaderFlags>::new(&mut r.inner, r.limits.clone())
57745 .map(|r| r.map(|t| Self::LedgerHeaderFlags(Box::new(t)))),
57746 ),
57747 TypeVariant::LedgerHeaderExtensionV1 => Box::new(
57748 ReadXdrIter::<_, LedgerHeaderExtensionV1>::new(&mut r.inner, r.limits.clone())
57749 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1(Box::new(t)))),
57750 ),
57751 TypeVariant::LedgerHeaderExtensionV1Ext => Box::new(
57752 ReadXdrIter::<_, LedgerHeaderExtensionV1Ext>::new(&mut r.inner, r.limits.clone())
57753 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1Ext(Box::new(t)))),
57754 ),
57755 TypeVariant::LedgerHeader => Box::new(
57756 ReadXdrIter::<_, LedgerHeader>::new(&mut r.inner, r.limits.clone())
57757 .map(|r| r.map(|t| Self::LedgerHeader(Box::new(t)))),
57758 ),
57759 TypeVariant::LedgerHeaderExt => Box::new(
57760 ReadXdrIter::<_, LedgerHeaderExt>::new(&mut r.inner, r.limits.clone())
57761 .map(|r| r.map(|t| Self::LedgerHeaderExt(Box::new(t)))),
57762 ),
57763 TypeVariant::LedgerUpgradeType => Box::new(
57764 ReadXdrIter::<_, LedgerUpgradeType>::new(&mut r.inner, r.limits.clone())
57765 .map(|r| r.map(|t| Self::LedgerUpgradeType(Box::new(t)))),
57766 ),
57767 TypeVariant::ConfigUpgradeSetKey => Box::new(
57768 ReadXdrIter::<_, ConfigUpgradeSetKey>::new(&mut r.inner, r.limits.clone())
57769 .map(|r| r.map(|t| Self::ConfigUpgradeSetKey(Box::new(t)))),
57770 ),
57771 TypeVariant::LedgerUpgrade => Box::new(
57772 ReadXdrIter::<_, LedgerUpgrade>::new(&mut r.inner, r.limits.clone())
57773 .map(|r| r.map(|t| Self::LedgerUpgrade(Box::new(t)))),
57774 ),
57775 TypeVariant::ConfigUpgradeSet => Box::new(
57776 ReadXdrIter::<_, ConfigUpgradeSet>::new(&mut r.inner, r.limits.clone())
57777 .map(|r| r.map(|t| Self::ConfigUpgradeSet(Box::new(t)))),
57778 ),
57779 TypeVariant::TxSetComponentType => Box::new(
57780 ReadXdrIter::<_, TxSetComponentType>::new(&mut r.inner, r.limits.clone())
57781 .map(|r| r.map(|t| Self::TxSetComponentType(Box::new(t)))),
57782 ),
57783 TypeVariant::DependentTxCluster => Box::new(
57784 ReadXdrIter::<_, DependentTxCluster>::new(&mut r.inner, r.limits.clone())
57785 .map(|r| r.map(|t| Self::DependentTxCluster(Box::new(t)))),
57786 ),
57787 TypeVariant::ParallelTxExecutionStage => Box::new(
57788 ReadXdrIter::<_, ParallelTxExecutionStage>::new(&mut r.inner, r.limits.clone())
57789 .map(|r| r.map(|t| Self::ParallelTxExecutionStage(Box::new(t)))),
57790 ),
57791 TypeVariant::ParallelTxsComponent => Box::new(
57792 ReadXdrIter::<_, ParallelTxsComponent>::new(&mut r.inner, r.limits.clone())
57793 .map(|r| r.map(|t| Self::ParallelTxsComponent(Box::new(t)))),
57794 ),
57795 TypeVariant::TxSetComponent => Box::new(
57796 ReadXdrIter::<_, TxSetComponent>::new(&mut r.inner, r.limits.clone())
57797 .map(|r| r.map(|t| Self::TxSetComponent(Box::new(t)))),
57798 ),
57799 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => Box::new(
57800 ReadXdrIter::<_, TxSetComponentTxsMaybeDiscountedFee>::new(
57801 &mut r.inner,
57802 r.limits.clone(),
57803 )
57804 .map(|r| r.map(|t| Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(t)))),
57805 ),
57806 TypeVariant::TransactionPhase => Box::new(
57807 ReadXdrIter::<_, TransactionPhase>::new(&mut r.inner, r.limits.clone())
57808 .map(|r| r.map(|t| Self::TransactionPhase(Box::new(t)))),
57809 ),
57810 TypeVariant::TransactionSet => Box::new(
57811 ReadXdrIter::<_, TransactionSet>::new(&mut r.inner, r.limits.clone())
57812 .map(|r| r.map(|t| Self::TransactionSet(Box::new(t)))),
57813 ),
57814 TypeVariant::TransactionSetV1 => Box::new(
57815 ReadXdrIter::<_, TransactionSetV1>::new(&mut r.inner, r.limits.clone())
57816 .map(|r| r.map(|t| Self::TransactionSetV1(Box::new(t)))),
57817 ),
57818 TypeVariant::GeneralizedTransactionSet => Box::new(
57819 ReadXdrIter::<_, GeneralizedTransactionSet>::new(&mut r.inner, r.limits.clone())
57820 .map(|r| r.map(|t| Self::GeneralizedTransactionSet(Box::new(t)))),
57821 ),
57822 TypeVariant::TransactionResultPair => Box::new(
57823 ReadXdrIter::<_, TransactionResultPair>::new(&mut r.inner, r.limits.clone())
57824 .map(|r| r.map(|t| Self::TransactionResultPair(Box::new(t)))),
57825 ),
57826 TypeVariant::TransactionResultSet => Box::new(
57827 ReadXdrIter::<_, TransactionResultSet>::new(&mut r.inner, r.limits.clone())
57828 .map(|r| r.map(|t| Self::TransactionResultSet(Box::new(t)))),
57829 ),
57830 TypeVariant::TransactionHistoryEntry => Box::new(
57831 ReadXdrIter::<_, TransactionHistoryEntry>::new(&mut r.inner, r.limits.clone())
57832 .map(|r| r.map(|t| Self::TransactionHistoryEntry(Box::new(t)))),
57833 ),
57834 TypeVariant::TransactionHistoryEntryExt => Box::new(
57835 ReadXdrIter::<_, TransactionHistoryEntryExt>::new(&mut r.inner, r.limits.clone())
57836 .map(|r| r.map(|t| Self::TransactionHistoryEntryExt(Box::new(t)))),
57837 ),
57838 TypeVariant::TransactionHistoryResultEntry => Box::new(
57839 ReadXdrIter::<_, TransactionHistoryResultEntry>::new(
57840 &mut r.inner,
57841 r.limits.clone(),
57842 )
57843 .map(|r| r.map(|t| Self::TransactionHistoryResultEntry(Box::new(t)))),
57844 ),
57845 TypeVariant::TransactionHistoryResultEntryExt => Box::new(
57846 ReadXdrIter::<_, TransactionHistoryResultEntryExt>::new(
57847 &mut r.inner,
57848 r.limits.clone(),
57849 )
57850 .map(|r| r.map(|t| Self::TransactionHistoryResultEntryExt(Box::new(t)))),
57851 ),
57852 TypeVariant::LedgerHeaderHistoryEntry => Box::new(
57853 ReadXdrIter::<_, LedgerHeaderHistoryEntry>::new(&mut r.inner, r.limits.clone())
57854 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntry(Box::new(t)))),
57855 ),
57856 TypeVariant::LedgerHeaderHistoryEntryExt => Box::new(
57857 ReadXdrIter::<_, LedgerHeaderHistoryEntryExt>::new(&mut r.inner, r.limits.clone())
57858 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntryExt(Box::new(t)))),
57859 ),
57860 TypeVariant::LedgerScpMessages => Box::new(
57861 ReadXdrIter::<_, LedgerScpMessages>::new(&mut r.inner, r.limits.clone())
57862 .map(|r| r.map(|t| Self::LedgerScpMessages(Box::new(t)))),
57863 ),
57864 TypeVariant::ScpHistoryEntryV0 => Box::new(
57865 ReadXdrIter::<_, ScpHistoryEntryV0>::new(&mut r.inner, r.limits.clone())
57866 .map(|r| r.map(|t| Self::ScpHistoryEntryV0(Box::new(t)))),
57867 ),
57868 TypeVariant::ScpHistoryEntry => Box::new(
57869 ReadXdrIter::<_, ScpHistoryEntry>::new(&mut r.inner, r.limits.clone())
57870 .map(|r| r.map(|t| Self::ScpHistoryEntry(Box::new(t)))),
57871 ),
57872 TypeVariant::LedgerEntryChangeType => Box::new(
57873 ReadXdrIter::<_, LedgerEntryChangeType>::new(&mut r.inner, r.limits.clone())
57874 .map(|r| r.map(|t| Self::LedgerEntryChangeType(Box::new(t)))),
57875 ),
57876 TypeVariant::LedgerEntryChange => Box::new(
57877 ReadXdrIter::<_, LedgerEntryChange>::new(&mut r.inner, r.limits.clone())
57878 .map(|r| r.map(|t| Self::LedgerEntryChange(Box::new(t)))),
57879 ),
57880 TypeVariant::LedgerEntryChanges => Box::new(
57881 ReadXdrIter::<_, LedgerEntryChanges>::new(&mut r.inner, r.limits.clone())
57882 .map(|r| r.map(|t| Self::LedgerEntryChanges(Box::new(t)))),
57883 ),
57884 TypeVariant::OperationMeta => Box::new(
57885 ReadXdrIter::<_, OperationMeta>::new(&mut r.inner, r.limits.clone())
57886 .map(|r| r.map(|t| Self::OperationMeta(Box::new(t)))),
57887 ),
57888 TypeVariant::TransactionMetaV1 => Box::new(
57889 ReadXdrIter::<_, TransactionMetaV1>::new(&mut r.inner, r.limits.clone())
57890 .map(|r| r.map(|t| Self::TransactionMetaV1(Box::new(t)))),
57891 ),
57892 TypeVariant::TransactionMetaV2 => Box::new(
57893 ReadXdrIter::<_, TransactionMetaV2>::new(&mut r.inner, r.limits.clone())
57894 .map(|r| r.map(|t| Self::TransactionMetaV2(Box::new(t)))),
57895 ),
57896 TypeVariant::ContractEventType => Box::new(
57897 ReadXdrIter::<_, ContractEventType>::new(&mut r.inner, r.limits.clone())
57898 .map(|r| r.map(|t| Self::ContractEventType(Box::new(t)))),
57899 ),
57900 TypeVariant::ContractEvent => Box::new(
57901 ReadXdrIter::<_, ContractEvent>::new(&mut r.inner, r.limits.clone())
57902 .map(|r| r.map(|t| Self::ContractEvent(Box::new(t)))),
57903 ),
57904 TypeVariant::ContractEventBody => Box::new(
57905 ReadXdrIter::<_, ContractEventBody>::new(&mut r.inner, r.limits.clone())
57906 .map(|r| r.map(|t| Self::ContractEventBody(Box::new(t)))),
57907 ),
57908 TypeVariant::ContractEventV0 => Box::new(
57909 ReadXdrIter::<_, ContractEventV0>::new(&mut r.inner, r.limits.clone())
57910 .map(|r| r.map(|t| Self::ContractEventV0(Box::new(t)))),
57911 ),
57912 TypeVariant::DiagnosticEvent => Box::new(
57913 ReadXdrIter::<_, DiagnosticEvent>::new(&mut r.inner, r.limits.clone())
57914 .map(|r| r.map(|t| Self::DiagnosticEvent(Box::new(t)))),
57915 ),
57916 TypeVariant::SorobanTransactionMetaExtV1 => Box::new(
57917 ReadXdrIter::<_, SorobanTransactionMetaExtV1>::new(&mut r.inner, r.limits.clone())
57918 .map(|r| r.map(|t| Self::SorobanTransactionMetaExtV1(Box::new(t)))),
57919 ),
57920 TypeVariant::SorobanTransactionMetaExt => Box::new(
57921 ReadXdrIter::<_, SorobanTransactionMetaExt>::new(&mut r.inner, r.limits.clone())
57922 .map(|r| r.map(|t| Self::SorobanTransactionMetaExt(Box::new(t)))),
57923 ),
57924 TypeVariant::SorobanTransactionMeta => Box::new(
57925 ReadXdrIter::<_, SorobanTransactionMeta>::new(&mut r.inner, r.limits.clone())
57926 .map(|r| r.map(|t| Self::SorobanTransactionMeta(Box::new(t)))),
57927 ),
57928 TypeVariant::TransactionMetaV3 => Box::new(
57929 ReadXdrIter::<_, TransactionMetaV3>::new(&mut r.inner, r.limits.clone())
57930 .map(|r| r.map(|t| Self::TransactionMetaV3(Box::new(t)))),
57931 ),
57932 TypeVariant::OperationMetaV2 => Box::new(
57933 ReadXdrIter::<_, OperationMetaV2>::new(&mut r.inner, r.limits.clone())
57934 .map(|r| r.map(|t| Self::OperationMetaV2(Box::new(t)))),
57935 ),
57936 TypeVariant::SorobanTransactionMetaV2 => Box::new(
57937 ReadXdrIter::<_, SorobanTransactionMetaV2>::new(&mut r.inner, r.limits.clone())
57938 .map(|r| r.map(|t| Self::SorobanTransactionMetaV2(Box::new(t)))),
57939 ),
57940 TypeVariant::TransactionEventStage => Box::new(
57941 ReadXdrIter::<_, TransactionEventStage>::new(&mut r.inner, r.limits.clone())
57942 .map(|r| r.map(|t| Self::TransactionEventStage(Box::new(t)))),
57943 ),
57944 TypeVariant::TransactionEvent => Box::new(
57945 ReadXdrIter::<_, TransactionEvent>::new(&mut r.inner, r.limits.clone())
57946 .map(|r| r.map(|t| Self::TransactionEvent(Box::new(t)))),
57947 ),
57948 TypeVariant::TransactionMetaV4 => Box::new(
57949 ReadXdrIter::<_, TransactionMetaV4>::new(&mut r.inner, r.limits.clone())
57950 .map(|r| r.map(|t| Self::TransactionMetaV4(Box::new(t)))),
57951 ),
57952 TypeVariant::InvokeHostFunctionSuccessPreImage => Box::new(
57953 ReadXdrIter::<_, InvokeHostFunctionSuccessPreImage>::new(
57954 &mut r.inner,
57955 r.limits.clone(),
57956 )
57957 .map(|r| r.map(|t| Self::InvokeHostFunctionSuccessPreImage(Box::new(t)))),
57958 ),
57959 TypeVariant::TransactionMeta => Box::new(
57960 ReadXdrIter::<_, TransactionMeta>::new(&mut r.inner, r.limits.clone())
57961 .map(|r| r.map(|t| Self::TransactionMeta(Box::new(t)))),
57962 ),
57963 TypeVariant::TransactionResultMeta => Box::new(
57964 ReadXdrIter::<_, TransactionResultMeta>::new(&mut r.inner, r.limits.clone())
57965 .map(|r| r.map(|t| Self::TransactionResultMeta(Box::new(t)))),
57966 ),
57967 TypeVariant::TransactionResultMetaV1 => Box::new(
57968 ReadXdrIter::<_, TransactionResultMetaV1>::new(&mut r.inner, r.limits.clone())
57969 .map(|r| r.map(|t| Self::TransactionResultMetaV1(Box::new(t)))),
57970 ),
57971 TypeVariant::UpgradeEntryMeta => Box::new(
57972 ReadXdrIter::<_, UpgradeEntryMeta>::new(&mut r.inner, r.limits.clone())
57973 .map(|r| r.map(|t| Self::UpgradeEntryMeta(Box::new(t)))),
57974 ),
57975 TypeVariant::LedgerCloseMetaV0 => Box::new(
57976 ReadXdrIter::<_, LedgerCloseMetaV0>::new(&mut r.inner, r.limits.clone())
57977 .map(|r| r.map(|t| Self::LedgerCloseMetaV0(Box::new(t)))),
57978 ),
57979 TypeVariant::LedgerCloseMetaExtV1 => Box::new(
57980 ReadXdrIter::<_, LedgerCloseMetaExtV1>::new(&mut r.inner, r.limits.clone())
57981 .map(|r| r.map(|t| Self::LedgerCloseMetaExtV1(Box::new(t)))),
57982 ),
57983 TypeVariant::LedgerCloseMetaExt => Box::new(
57984 ReadXdrIter::<_, LedgerCloseMetaExt>::new(&mut r.inner, r.limits.clone())
57985 .map(|r| r.map(|t| Self::LedgerCloseMetaExt(Box::new(t)))),
57986 ),
57987 TypeVariant::LedgerCloseMetaV1 => Box::new(
57988 ReadXdrIter::<_, LedgerCloseMetaV1>::new(&mut r.inner, r.limits.clone())
57989 .map(|r| r.map(|t| Self::LedgerCloseMetaV1(Box::new(t)))),
57990 ),
57991 TypeVariant::LedgerCloseMetaV2 => Box::new(
57992 ReadXdrIter::<_, LedgerCloseMetaV2>::new(&mut r.inner, r.limits.clone())
57993 .map(|r| r.map(|t| Self::LedgerCloseMetaV2(Box::new(t)))),
57994 ),
57995 TypeVariant::LedgerCloseMeta => Box::new(
57996 ReadXdrIter::<_, LedgerCloseMeta>::new(&mut r.inner, r.limits.clone())
57997 .map(|r| r.map(|t| Self::LedgerCloseMeta(Box::new(t)))),
57998 ),
57999 TypeVariant::ErrorCode => Box::new(
58000 ReadXdrIter::<_, ErrorCode>::new(&mut r.inner, r.limits.clone())
58001 .map(|r| r.map(|t| Self::ErrorCode(Box::new(t)))),
58002 ),
58003 TypeVariant::SError => Box::new(
58004 ReadXdrIter::<_, SError>::new(&mut r.inner, r.limits.clone())
58005 .map(|r| r.map(|t| Self::SError(Box::new(t)))),
58006 ),
58007 TypeVariant::SendMore => Box::new(
58008 ReadXdrIter::<_, SendMore>::new(&mut r.inner, r.limits.clone())
58009 .map(|r| r.map(|t| Self::SendMore(Box::new(t)))),
58010 ),
58011 TypeVariant::SendMoreExtended => Box::new(
58012 ReadXdrIter::<_, SendMoreExtended>::new(&mut r.inner, r.limits.clone())
58013 .map(|r| r.map(|t| Self::SendMoreExtended(Box::new(t)))),
58014 ),
58015 TypeVariant::AuthCert => Box::new(
58016 ReadXdrIter::<_, AuthCert>::new(&mut r.inner, r.limits.clone())
58017 .map(|r| r.map(|t| Self::AuthCert(Box::new(t)))),
58018 ),
58019 TypeVariant::Hello => Box::new(
58020 ReadXdrIter::<_, Hello>::new(&mut r.inner, r.limits.clone())
58021 .map(|r| r.map(|t| Self::Hello(Box::new(t)))),
58022 ),
58023 TypeVariant::Auth => Box::new(
58024 ReadXdrIter::<_, Auth>::new(&mut r.inner, r.limits.clone())
58025 .map(|r| r.map(|t| Self::Auth(Box::new(t)))),
58026 ),
58027 TypeVariant::IpAddrType => Box::new(
58028 ReadXdrIter::<_, IpAddrType>::new(&mut r.inner, r.limits.clone())
58029 .map(|r| r.map(|t| Self::IpAddrType(Box::new(t)))),
58030 ),
58031 TypeVariant::PeerAddress => Box::new(
58032 ReadXdrIter::<_, PeerAddress>::new(&mut r.inner, r.limits.clone())
58033 .map(|r| r.map(|t| Self::PeerAddress(Box::new(t)))),
58034 ),
58035 TypeVariant::PeerAddressIp => Box::new(
58036 ReadXdrIter::<_, PeerAddressIp>::new(&mut r.inner, r.limits.clone())
58037 .map(|r| r.map(|t| Self::PeerAddressIp(Box::new(t)))),
58038 ),
58039 TypeVariant::MessageType => Box::new(
58040 ReadXdrIter::<_, MessageType>::new(&mut r.inner, r.limits.clone())
58041 .map(|r| r.map(|t| Self::MessageType(Box::new(t)))),
58042 ),
58043 TypeVariant::DontHave => Box::new(
58044 ReadXdrIter::<_, DontHave>::new(&mut r.inner, r.limits.clone())
58045 .map(|r| r.map(|t| Self::DontHave(Box::new(t)))),
58046 ),
58047 TypeVariant::SurveyMessageCommandType => Box::new(
58048 ReadXdrIter::<_, SurveyMessageCommandType>::new(&mut r.inner, r.limits.clone())
58049 .map(|r| r.map(|t| Self::SurveyMessageCommandType(Box::new(t)))),
58050 ),
58051 TypeVariant::SurveyMessageResponseType => Box::new(
58052 ReadXdrIter::<_, SurveyMessageResponseType>::new(&mut r.inner, r.limits.clone())
58053 .map(|r| r.map(|t| Self::SurveyMessageResponseType(Box::new(t)))),
58054 ),
58055 TypeVariant::TimeSlicedSurveyStartCollectingMessage => Box::new(
58056 ReadXdrIter::<_, TimeSlicedSurveyStartCollectingMessage>::new(
58057 &mut r.inner,
58058 r.limits.clone(),
58059 )
58060 .map(|r| r.map(|t| Self::TimeSlicedSurveyStartCollectingMessage(Box::new(t)))),
58061 ),
58062 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => Box::new(
58063 ReadXdrIter::<_, SignedTimeSlicedSurveyStartCollectingMessage>::new(
58064 &mut r.inner,
58065 r.limits.clone(),
58066 )
58067 .map(|r| {
58068 r.map(|t| Self::SignedTimeSlicedSurveyStartCollectingMessage(Box::new(t)))
58069 }),
58070 ),
58071 TypeVariant::TimeSlicedSurveyStopCollectingMessage => Box::new(
58072 ReadXdrIter::<_, TimeSlicedSurveyStopCollectingMessage>::new(
58073 &mut r.inner,
58074 r.limits.clone(),
58075 )
58076 .map(|r| r.map(|t| Self::TimeSlicedSurveyStopCollectingMessage(Box::new(t)))),
58077 ),
58078 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => Box::new(
58079 ReadXdrIter::<_, SignedTimeSlicedSurveyStopCollectingMessage>::new(
58080 &mut r.inner,
58081 r.limits.clone(),
58082 )
58083 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(t)))),
58084 ),
58085 TypeVariant::SurveyRequestMessage => Box::new(
58086 ReadXdrIter::<_, SurveyRequestMessage>::new(&mut r.inner, r.limits.clone())
58087 .map(|r| r.map(|t| Self::SurveyRequestMessage(Box::new(t)))),
58088 ),
58089 TypeVariant::TimeSlicedSurveyRequestMessage => Box::new(
58090 ReadXdrIter::<_, TimeSlicedSurveyRequestMessage>::new(
58091 &mut r.inner,
58092 r.limits.clone(),
58093 )
58094 .map(|r| r.map(|t| Self::TimeSlicedSurveyRequestMessage(Box::new(t)))),
58095 ),
58096 TypeVariant::SignedTimeSlicedSurveyRequestMessage => Box::new(
58097 ReadXdrIter::<_, SignedTimeSlicedSurveyRequestMessage>::new(
58098 &mut r.inner,
58099 r.limits.clone(),
58100 )
58101 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyRequestMessage(Box::new(t)))),
58102 ),
58103 TypeVariant::EncryptedBody => Box::new(
58104 ReadXdrIter::<_, EncryptedBody>::new(&mut r.inner, r.limits.clone())
58105 .map(|r| r.map(|t| Self::EncryptedBody(Box::new(t)))),
58106 ),
58107 TypeVariant::SurveyResponseMessage => Box::new(
58108 ReadXdrIter::<_, SurveyResponseMessage>::new(&mut r.inner, r.limits.clone())
58109 .map(|r| r.map(|t| Self::SurveyResponseMessage(Box::new(t)))),
58110 ),
58111 TypeVariant::TimeSlicedSurveyResponseMessage => Box::new(
58112 ReadXdrIter::<_, TimeSlicedSurveyResponseMessage>::new(
58113 &mut r.inner,
58114 r.limits.clone(),
58115 )
58116 .map(|r| r.map(|t| Self::TimeSlicedSurveyResponseMessage(Box::new(t)))),
58117 ),
58118 TypeVariant::SignedTimeSlicedSurveyResponseMessage => Box::new(
58119 ReadXdrIter::<_, SignedTimeSlicedSurveyResponseMessage>::new(
58120 &mut r.inner,
58121 r.limits.clone(),
58122 )
58123 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyResponseMessage(Box::new(t)))),
58124 ),
58125 TypeVariant::PeerStats => Box::new(
58126 ReadXdrIter::<_, PeerStats>::new(&mut r.inner, r.limits.clone())
58127 .map(|r| r.map(|t| Self::PeerStats(Box::new(t)))),
58128 ),
58129 TypeVariant::TimeSlicedNodeData => Box::new(
58130 ReadXdrIter::<_, TimeSlicedNodeData>::new(&mut r.inner, r.limits.clone())
58131 .map(|r| r.map(|t| Self::TimeSlicedNodeData(Box::new(t)))),
58132 ),
58133 TypeVariant::TimeSlicedPeerData => Box::new(
58134 ReadXdrIter::<_, TimeSlicedPeerData>::new(&mut r.inner, r.limits.clone())
58135 .map(|r| r.map(|t| Self::TimeSlicedPeerData(Box::new(t)))),
58136 ),
58137 TypeVariant::TimeSlicedPeerDataList => Box::new(
58138 ReadXdrIter::<_, TimeSlicedPeerDataList>::new(&mut r.inner, r.limits.clone())
58139 .map(|r| r.map(|t| Self::TimeSlicedPeerDataList(Box::new(t)))),
58140 ),
58141 TypeVariant::TopologyResponseBodyV2 => Box::new(
58142 ReadXdrIter::<_, TopologyResponseBodyV2>::new(&mut r.inner, r.limits.clone())
58143 .map(|r| r.map(|t| Self::TopologyResponseBodyV2(Box::new(t)))),
58144 ),
58145 TypeVariant::SurveyResponseBody => Box::new(
58146 ReadXdrIter::<_, SurveyResponseBody>::new(&mut r.inner, r.limits.clone())
58147 .map(|r| r.map(|t| Self::SurveyResponseBody(Box::new(t)))),
58148 ),
58149 TypeVariant::TxAdvertVector => Box::new(
58150 ReadXdrIter::<_, TxAdvertVector>::new(&mut r.inner, r.limits.clone())
58151 .map(|r| r.map(|t| Self::TxAdvertVector(Box::new(t)))),
58152 ),
58153 TypeVariant::FloodAdvert => Box::new(
58154 ReadXdrIter::<_, FloodAdvert>::new(&mut r.inner, r.limits.clone())
58155 .map(|r| r.map(|t| Self::FloodAdvert(Box::new(t)))),
58156 ),
58157 TypeVariant::TxDemandVector => Box::new(
58158 ReadXdrIter::<_, TxDemandVector>::new(&mut r.inner, r.limits.clone())
58159 .map(|r| r.map(|t| Self::TxDemandVector(Box::new(t)))),
58160 ),
58161 TypeVariant::FloodDemand => Box::new(
58162 ReadXdrIter::<_, FloodDemand>::new(&mut r.inner, r.limits.clone())
58163 .map(|r| r.map(|t| Self::FloodDemand(Box::new(t)))),
58164 ),
58165 TypeVariant::StellarMessage => Box::new(
58166 ReadXdrIter::<_, StellarMessage>::new(&mut r.inner, r.limits.clone())
58167 .map(|r| r.map(|t| Self::StellarMessage(Box::new(t)))),
58168 ),
58169 TypeVariant::AuthenticatedMessage => Box::new(
58170 ReadXdrIter::<_, AuthenticatedMessage>::new(&mut r.inner, r.limits.clone())
58171 .map(|r| r.map(|t| Self::AuthenticatedMessage(Box::new(t)))),
58172 ),
58173 TypeVariant::AuthenticatedMessageV0 => Box::new(
58174 ReadXdrIter::<_, AuthenticatedMessageV0>::new(&mut r.inner, r.limits.clone())
58175 .map(|r| r.map(|t| Self::AuthenticatedMessageV0(Box::new(t)))),
58176 ),
58177 TypeVariant::LiquidityPoolParameters => Box::new(
58178 ReadXdrIter::<_, LiquidityPoolParameters>::new(&mut r.inner, r.limits.clone())
58179 .map(|r| r.map(|t| Self::LiquidityPoolParameters(Box::new(t)))),
58180 ),
58181 TypeVariant::MuxedAccount => Box::new(
58182 ReadXdrIter::<_, MuxedAccount>::new(&mut r.inner, r.limits.clone())
58183 .map(|r| r.map(|t| Self::MuxedAccount(Box::new(t)))),
58184 ),
58185 TypeVariant::MuxedAccountMed25519 => Box::new(
58186 ReadXdrIter::<_, MuxedAccountMed25519>::new(&mut r.inner, r.limits.clone())
58187 .map(|r| r.map(|t| Self::MuxedAccountMed25519(Box::new(t)))),
58188 ),
58189 TypeVariant::DecoratedSignature => Box::new(
58190 ReadXdrIter::<_, DecoratedSignature>::new(&mut r.inner, r.limits.clone())
58191 .map(|r| r.map(|t| Self::DecoratedSignature(Box::new(t)))),
58192 ),
58193 TypeVariant::OperationType => Box::new(
58194 ReadXdrIter::<_, OperationType>::new(&mut r.inner, r.limits.clone())
58195 .map(|r| r.map(|t| Self::OperationType(Box::new(t)))),
58196 ),
58197 TypeVariant::CreateAccountOp => Box::new(
58198 ReadXdrIter::<_, CreateAccountOp>::new(&mut r.inner, r.limits.clone())
58199 .map(|r| r.map(|t| Self::CreateAccountOp(Box::new(t)))),
58200 ),
58201 TypeVariant::PaymentOp => Box::new(
58202 ReadXdrIter::<_, PaymentOp>::new(&mut r.inner, r.limits.clone())
58203 .map(|r| r.map(|t| Self::PaymentOp(Box::new(t)))),
58204 ),
58205 TypeVariant::PathPaymentStrictReceiveOp => Box::new(
58206 ReadXdrIter::<_, PathPaymentStrictReceiveOp>::new(&mut r.inner, r.limits.clone())
58207 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveOp(Box::new(t)))),
58208 ),
58209 TypeVariant::PathPaymentStrictSendOp => Box::new(
58210 ReadXdrIter::<_, PathPaymentStrictSendOp>::new(&mut r.inner, r.limits.clone())
58211 .map(|r| r.map(|t| Self::PathPaymentStrictSendOp(Box::new(t)))),
58212 ),
58213 TypeVariant::ManageSellOfferOp => Box::new(
58214 ReadXdrIter::<_, ManageSellOfferOp>::new(&mut r.inner, r.limits.clone())
58215 .map(|r| r.map(|t| Self::ManageSellOfferOp(Box::new(t)))),
58216 ),
58217 TypeVariant::ManageBuyOfferOp => Box::new(
58218 ReadXdrIter::<_, ManageBuyOfferOp>::new(&mut r.inner, r.limits.clone())
58219 .map(|r| r.map(|t| Self::ManageBuyOfferOp(Box::new(t)))),
58220 ),
58221 TypeVariant::CreatePassiveSellOfferOp => Box::new(
58222 ReadXdrIter::<_, CreatePassiveSellOfferOp>::new(&mut r.inner, r.limits.clone())
58223 .map(|r| r.map(|t| Self::CreatePassiveSellOfferOp(Box::new(t)))),
58224 ),
58225 TypeVariant::SetOptionsOp => Box::new(
58226 ReadXdrIter::<_, SetOptionsOp>::new(&mut r.inner, r.limits.clone())
58227 .map(|r| r.map(|t| Self::SetOptionsOp(Box::new(t)))),
58228 ),
58229 TypeVariant::ChangeTrustAsset => Box::new(
58230 ReadXdrIter::<_, ChangeTrustAsset>::new(&mut r.inner, r.limits.clone())
58231 .map(|r| r.map(|t| Self::ChangeTrustAsset(Box::new(t)))),
58232 ),
58233 TypeVariant::ChangeTrustOp => Box::new(
58234 ReadXdrIter::<_, ChangeTrustOp>::new(&mut r.inner, r.limits.clone())
58235 .map(|r| r.map(|t| Self::ChangeTrustOp(Box::new(t)))),
58236 ),
58237 TypeVariant::AllowTrustOp => Box::new(
58238 ReadXdrIter::<_, AllowTrustOp>::new(&mut r.inner, r.limits.clone())
58239 .map(|r| r.map(|t| Self::AllowTrustOp(Box::new(t)))),
58240 ),
58241 TypeVariant::ManageDataOp => Box::new(
58242 ReadXdrIter::<_, ManageDataOp>::new(&mut r.inner, r.limits.clone())
58243 .map(|r| r.map(|t| Self::ManageDataOp(Box::new(t)))),
58244 ),
58245 TypeVariant::BumpSequenceOp => Box::new(
58246 ReadXdrIter::<_, BumpSequenceOp>::new(&mut r.inner, r.limits.clone())
58247 .map(|r| r.map(|t| Self::BumpSequenceOp(Box::new(t)))),
58248 ),
58249 TypeVariant::CreateClaimableBalanceOp => Box::new(
58250 ReadXdrIter::<_, CreateClaimableBalanceOp>::new(&mut r.inner, r.limits.clone())
58251 .map(|r| r.map(|t| Self::CreateClaimableBalanceOp(Box::new(t)))),
58252 ),
58253 TypeVariant::ClaimClaimableBalanceOp => Box::new(
58254 ReadXdrIter::<_, ClaimClaimableBalanceOp>::new(&mut r.inner, r.limits.clone())
58255 .map(|r| r.map(|t| Self::ClaimClaimableBalanceOp(Box::new(t)))),
58256 ),
58257 TypeVariant::BeginSponsoringFutureReservesOp => Box::new(
58258 ReadXdrIter::<_, BeginSponsoringFutureReservesOp>::new(
58259 &mut r.inner,
58260 r.limits.clone(),
58261 )
58262 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesOp(Box::new(t)))),
58263 ),
58264 TypeVariant::RevokeSponsorshipType => Box::new(
58265 ReadXdrIter::<_, RevokeSponsorshipType>::new(&mut r.inner, r.limits.clone())
58266 .map(|r| r.map(|t| Self::RevokeSponsorshipType(Box::new(t)))),
58267 ),
58268 TypeVariant::RevokeSponsorshipOp => Box::new(
58269 ReadXdrIter::<_, RevokeSponsorshipOp>::new(&mut r.inner, r.limits.clone())
58270 .map(|r| r.map(|t| Self::RevokeSponsorshipOp(Box::new(t)))),
58271 ),
58272 TypeVariant::RevokeSponsorshipOpSigner => Box::new(
58273 ReadXdrIter::<_, RevokeSponsorshipOpSigner>::new(&mut r.inner, r.limits.clone())
58274 .map(|r| r.map(|t| Self::RevokeSponsorshipOpSigner(Box::new(t)))),
58275 ),
58276 TypeVariant::ClawbackOp => Box::new(
58277 ReadXdrIter::<_, ClawbackOp>::new(&mut r.inner, r.limits.clone())
58278 .map(|r| r.map(|t| Self::ClawbackOp(Box::new(t)))),
58279 ),
58280 TypeVariant::ClawbackClaimableBalanceOp => Box::new(
58281 ReadXdrIter::<_, ClawbackClaimableBalanceOp>::new(&mut r.inner, r.limits.clone())
58282 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceOp(Box::new(t)))),
58283 ),
58284 TypeVariant::SetTrustLineFlagsOp => Box::new(
58285 ReadXdrIter::<_, SetTrustLineFlagsOp>::new(&mut r.inner, r.limits.clone())
58286 .map(|r| r.map(|t| Self::SetTrustLineFlagsOp(Box::new(t)))),
58287 ),
58288 TypeVariant::LiquidityPoolDepositOp => Box::new(
58289 ReadXdrIter::<_, LiquidityPoolDepositOp>::new(&mut r.inner, r.limits.clone())
58290 .map(|r| r.map(|t| Self::LiquidityPoolDepositOp(Box::new(t)))),
58291 ),
58292 TypeVariant::LiquidityPoolWithdrawOp => Box::new(
58293 ReadXdrIter::<_, LiquidityPoolWithdrawOp>::new(&mut r.inner, r.limits.clone())
58294 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawOp(Box::new(t)))),
58295 ),
58296 TypeVariant::HostFunctionType => Box::new(
58297 ReadXdrIter::<_, HostFunctionType>::new(&mut r.inner, r.limits.clone())
58298 .map(|r| r.map(|t| Self::HostFunctionType(Box::new(t)))),
58299 ),
58300 TypeVariant::ContractIdPreimageType => Box::new(
58301 ReadXdrIter::<_, ContractIdPreimageType>::new(&mut r.inner, r.limits.clone())
58302 .map(|r| r.map(|t| Self::ContractIdPreimageType(Box::new(t)))),
58303 ),
58304 TypeVariant::ContractIdPreimage => Box::new(
58305 ReadXdrIter::<_, ContractIdPreimage>::new(&mut r.inner, r.limits.clone())
58306 .map(|r| r.map(|t| Self::ContractIdPreimage(Box::new(t)))),
58307 ),
58308 TypeVariant::ContractIdPreimageFromAddress => Box::new(
58309 ReadXdrIter::<_, ContractIdPreimageFromAddress>::new(
58310 &mut r.inner,
58311 r.limits.clone(),
58312 )
58313 .map(|r| r.map(|t| Self::ContractIdPreimageFromAddress(Box::new(t)))),
58314 ),
58315 TypeVariant::CreateContractArgs => Box::new(
58316 ReadXdrIter::<_, CreateContractArgs>::new(&mut r.inner, r.limits.clone())
58317 .map(|r| r.map(|t| Self::CreateContractArgs(Box::new(t)))),
58318 ),
58319 TypeVariant::CreateContractArgsV2 => Box::new(
58320 ReadXdrIter::<_, CreateContractArgsV2>::new(&mut r.inner, r.limits.clone())
58321 .map(|r| r.map(|t| Self::CreateContractArgsV2(Box::new(t)))),
58322 ),
58323 TypeVariant::InvokeContractArgs => Box::new(
58324 ReadXdrIter::<_, InvokeContractArgs>::new(&mut r.inner, r.limits.clone())
58325 .map(|r| r.map(|t| Self::InvokeContractArgs(Box::new(t)))),
58326 ),
58327 TypeVariant::HostFunction => Box::new(
58328 ReadXdrIter::<_, HostFunction>::new(&mut r.inner, r.limits.clone())
58329 .map(|r| r.map(|t| Self::HostFunction(Box::new(t)))),
58330 ),
58331 TypeVariant::SorobanAuthorizedFunctionType => Box::new(
58332 ReadXdrIter::<_, SorobanAuthorizedFunctionType>::new(
58333 &mut r.inner,
58334 r.limits.clone(),
58335 )
58336 .map(|r| r.map(|t| Self::SorobanAuthorizedFunctionType(Box::new(t)))),
58337 ),
58338 TypeVariant::SorobanAuthorizedFunction => Box::new(
58339 ReadXdrIter::<_, SorobanAuthorizedFunction>::new(&mut r.inner, r.limits.clone())
58340 .map(|r| r.map(|t| Self::SorobanAuthorizedFunction(Box::new(t)))),
58341 ),
58342 TypeVariant::SorobanAuthorizedInvocation => Box::new(
58343 ReadXdrIter::<_, SorobanAuthorizedInvocation>::new(&mut r.inner, r.limits.clone())
58344 .map(|r| r.map(|t| Self::SorobanAuthorizedInvocation(Box::new(t)))),
58345 ),
58346 TypeVariant::SorobanAddressCredentials => Box::new(
58347 ReadXdrIter::<_, SorobanAddressCredentials>::new(&mut r.inner, r.limits.clone())
58348 .map(|r| r.map(|t| Self::SorobanAddressCredentials(Box::new(t)))),
58349 ),
58350 TypeVariant::SorobanCredentialsType => Box::new(
58351 ReadXdrIter::<_, SorobanCredentialsType>::new(&mut r.inner, r.limits.clone())
58352 .map(|r| r.map(|t| Self::SorobanCredentialsType(Box::new(t)))),
58353 ),
58354 TypeVariant::SorobanCredentials => Box::new(
58355 ReadXdrIter::<_, SorobanCredentials>::new(&mut r.inner, r.limits.clone())
58356 .map(|r| r.map(|t| Self::SorobanCredentials(Box::new(t)))),
58357 ),
58358 TypeVariant::SorobanAuthorizationEntry => Box::new(
58359 ReadXdrIter::<_, SorobanAuthorizationEntry>::new(&mut r.inner, r.limits.clone())
58360 .map(|r| r.map(|t| Self::SorobanAuthorizationEntry(Box::new(t)))),
58361 ),
58362 TypeVariant::SorobanAuthorizationEntries => Box::new(
58363 ReadXdrIter::<_, SorobanAuthorizationEntries>::new(&mut r.inner, r.limits.clone())
58364 .map(|r| r.map(|t| Self::SorobanAuthorizationEntries(Box::new(t)))),
58365 ),
58366 TypeVariant::InvokeHostFunctionOp => Box::new(
58367 ReadXdrIter::<_, InvokeHostFunctionOp>::new(&mut r.inner, r.limits.clone())
58368 .map(|r| r.map(|t| Self::InvokeHostFunctionOp(Box::new(t)))),
58369 ),
58370 TypeVariant::ExtendFootprintTtlOp => Box::new(
58371 ReadXdrIter::<_, ExtendFootprintTtlOp>::new(&mut r.inner, r.limits.clone())
58372 .map(|r| r.map(|t| Self::ExtendFootprintTtlOp(Box::new(t)))),
58373 ),
58374 TypeVariant::RestoreFootprintOp => Box::new(
58375 ReadXdrIter::<_, RestoreFootprintOp>::new(&mut r.inner, r.limits.clone())
58376 .map(|r| r.map(|t| Self::RestoreFootprintOp(Box::new(t)))),
58377 ),
58378 TypeVariant::Operation => Box::new(
58379 ReadXdrIter::<_, Operation>::new(&mut r.inner, r.limits.clone())
58380 .map(|r| r.map(|t| Self::Operation(Box::new(t)))),
58381 ),
58382 TypeVariant::OperationBody => Box::new(
58383 ReadXdrIter::<_, OperationBody>::new(&mut r.inner, r.limits.clone())
58384 .map(|r| r.map(|t| Self::OperationBody(Box::new(t)))),
58385 ),
58386 TypeVariant::HashIdPreimage => Box::new(
58387 ReadXdrIter::<_, HashIdPreimage>::new(&mut r.inner, r.limits.clone())
58388 .map(|r| r.map(|t| Self::HashIdPreimage(Box::new(t)))),
58389 ),
58390 TypeVariant::HashIdPreimageOperationId => Box::new(
58391 ReadXdrIter::<_, HashIdPreimageOperationId>::new(&mut r.inner, r.limits.clone())
58392 .map(|r| r.map(|t| Self::HashIdPreimageOperationId(Box::new(t)))),
58393 ),
58394 TypeVariant::HashIdPreimageRevokeId => Box::new(
58395 ReadXdrIter::<_, HashIdPreimageRevokeId>::new(&mut r.inner, r.limits.clone())
58396 .map(|r| r.map(|t| Self::HashIdPreimageRevokeId(Box::new(t)))),
58397 ),
58398 TypeVariant::HashIdPreimageContractId => Box::new(
58399 ReadXdrIter::<_, HashIdPreimageContractId>::new(&mut r.inner, r.limits.clone())
58400 .map(|r| r.map(|t| Self::HashIdPreimageContractId(Box::new(t)))),
58401 ),
58402 TypeVariant::HashIdPreimageSorobanAuthorization => Box::new(
58403 ReadXdrIter::<_, HashIdPreimageSorobanAuthorization>::new(
58404 &mut r.inner,
58405 r.limits.clone(),
58406 )
58407 .map(|r| r.map(|t| Self::HashIdPreimageSorobanAuthorization(Box::new(t)))),
58408 ),
58409 TypeVariant::MemoType => Box::new(
58410 ReadXdrIter::<_, MemoType>::new(&mut r.inner, r.limits.clone())
58411 .map(|r| r.map(|t| Self::MemoType(Box::new(t)))),
58412 ),
58413 TypeVariant::Memo => Box::new(
58414 ReadXdrIter::<_, Memo>::new(&mut r.inner, r.limits.clone())
58415 .map(|r| r.map(|t| Self::Memo(Box::new(t)))),
58416 ),
58417 TypeVariant::TimeBounds => Box::new(
58418 ReadXdrIter::<_, TimeBounds>::new(&mut r.inner, r.limits.clone())
58419 .map(|r| r.map(|t| Self::TimeBounds(Box::new(t)))),
58420 ),
58421 TypeVariant::LedgerBounds => Box::new(
58422 ReadXdrIter::<_, LedgerBounds>::new(&mut r.inner, r.limits.clone())
58423 .map(|r| r.map(|t| Self::LedgerBounds(Box::new(t)))),
58424 ),
58425 TypeVariant::PreconditionsV2 => Box::new(
58426 ReadXdrIter::<_, PreconditionsV2>::new(&mut r.inner, r.limits.clone())
58427 .map(|r| r.map(|t| Self::PreconditionsV2(Box::new(t)))),
58428 ),
58429 TypeVariant::PreconditionType => Box::new(
58430 ReadXdrIter::<_, PreconditionType>::new(&mut r.inner, r.limits.clone())
58431 .map(|r| r.map(|t| Self::PreconditionType(Box::new(t)))),
58432 ),
58433 TypeVariant::Preconditions => Box::new(
58434 ReadXdrIter::<_, Preconditions>::new(&mut r.inner, r.limits.clone())
58435 .map(|r| r.map(|t| Self::Preconditions(Box::new(t)))),
58436 ),
58437 TypeVariant::LedgerFootprint => Box::new(
58438 ReadXdrIter::<_, LedgerFootprint>::new(&mut r.inner, r.limits.clone())
58439 .map(|r| r.map(|t| Self::LedgerFootprint(Box::new(t)))),
58440 ),
58441 TypeVariant::SorobanResources => Box::new(
58442 ReadXdrIter::<_, SorobanResources>::new(&mut r.inner, r.limits.clone())
58443 .map(|r| r.map(|t| Self::SorobanResources(Box::new(t)))),
58444 ),
58445 TypeVariant::SorobanResourcesExtV0 => Box::new(
58446 ReadXdrIter::<_, SorobanResourcesExtV0>::new(&mut r.inner, r.limits.clone())
58447 .map(|r| r.map(|t| Self::SorobanResourcesExtV0(Box::new(t)))),
58448 ),
58449 TypeVariant::SorobanTransactionData => Box::new(
58450 ReadXdrIter::<_, SorobanTransactionData>::new(&mut r.inner, r.limits.clone())
58451 .map(|r| r.map(|t| Self::SorobanTransactionData(Box::new(t)))),
58452 ),
58453 TypeVariant::SorobanTransactionDataExt => Box::new(
58454 ReadXdrIter::<_, SorobanTransactionDataExt>::new(&mut r.inner, r.limits.clone())
58455 .map(|r| r.map(|t| Self::SorobanTransactionDataExt(Box::new(t)))),
58456 ),
58457 TypeVariant::TransactionV0 => Box::new(
58458 ReadXdrIter::<_, TransactionV0>::new(&mut r.inner, r.limits.clone())
58459 .map(|r| r.map(|t| Self::TransactionV0(Box::new(t)))),
58460 ),
58461 TypeVariant::TransactionV0Ext => Box::new(
58462 ReadXdrIter::<_, TransactionV0Ext>::new(&mut r.inner, r.limits.clone())
58463 .map(|r| r.map(|t| Self::TransactionV0Ext(Box::new(t)))),
58464 ),
58465 TypeVariant::TransactionV0Envelope => Box::new(
58466 ReadXdrIter::<_, TransactionV0Envelope>::new(&mut r.inner, r.limits.clone())
58467 .map(|r| r.map(|t| Self::TransactionV0Envelope(Box::new(t)))),
58468 ),
58469 TypeVariant::Transaction => Box::new(
58470 ReadXdrIter::<_, Transaction>::new(&mut r.inner, r.limits.clone())
58471 .map(|r| r.map(|t| Self::Transaction(Box::new(t)))),
58472 ),
58473 TypeVariant::TransactionExt => Box::new(
58474 ReadXdrIter::<_, TransactionExt>::new(&mut r.inner, r.limits.clone())
58475 .map(|r| r.map(|t| Self::TransactionExt(Box::new(t)))),
58476 ),
58477 TypeVariant::TransactionV1Envelope => Box::new(
58478 ReadXdrIter::<_, TransactionV1Envelope>::new(&mut r.inner, r.limits.clone())
58479 .map(|r| r.map(|t| Self::TransactionV1Envelope(Box::new(t)))),
58480 ),
58481 TypeVariant::FeeBumpTransaction => Box::new(
58482 ReadXdrIter::<_, FeeBumpTransaction>::new(&mut r.inner, r.limits.clone())
58483 .map(|r| r.map(|t| Self::FeeBumpTransaction(Box::new(t)))),
58484 ),
58485 TypeVariant::FeeBumpTransactionInnerTx => Box::new(
58486 ReadXdrIter::<_, FeeBumpTransactionInnerTx>::new(&mut r.inner, r.limits.clone())
58487 .map(|r| r.map(|t| Self::FeeBumpTransactionInnerTx(Box::new(t)))),
58488 ),
58489 TypeVariant::FeeBumpTransactionExt => Box::new(
58490 ReadXdrIter::<_, FeeBumpTransactionExt>::new(&mut r.inner, r.limits.clone())
58491 .map(|r| r.map(|t| Self::FeeBumpTransactionExt(Box::new(t)))),
58492 ),
58493 TypeVariant::FeeBumpTransactionEnvelope => Box::new(
58494 ReadXdrIter::<_, FeeBumpTransactionEnvelope>::new(&mut r.inner, r.limits.clone())
58495 .map(|r| r.map(|t| Self::FeeBumpTransactionEnvelope(Box::new(t)))),
58496 ),
58497 TypeVariant::TransactionEnvelope => Box::new(
58498 ReadXdrIter::<_, TransactionEnvelope>::new(&mut r.inner, r.limits.clone())
58499 .map(|r| r.map(|t| Self::TransactionEnvelope(Box::new(t)))),
58500 ),
58501 TypeVariant::TransactionSignaturePayload => Box::new(
58502 ReadXdrIter::<_, TransactionSignaturePayload>::new(&mut r.inner, r.limits.clone())
58503 .map(|r| r.map(|t| Self::TransactionSignaturePayload(Box::new(t)))),
58504 ),
58505 TypeVariant::TransactionSignaturePayloadTaggedTransaction => Box::new(
58506 ReadXdrIter::<_, TransactionSignaturePayloadTaggedTransaction>::new(
58507 &mut r.inner,
58508 r.limits.clone(),
58509 )
58510 .map(|r| {
58511 r.map(|t| Self::TransactionSignaturePayloadTaggedTransaction(Box::new(t)))
58512 }),
58513 ),
58514 TypeVariant::ClaimAtomType => Box::new(
58515 ReadXdrIter::<_, ClaimAtomType>::new(&mut r.inner, r.limits.clone())
58516 .map(|r| r.map(|t| Self::ClaimAtomType(Box::new(t)))),
58517 ),
58518 TypeVariant::ClaimOfferAtomV0 => Box::new(
58519 ReadXdrIter::<_, ClaimOfferAtomV0>::new(&mut r.inner, r.limits.clone())
58520 .map(|r| r.map(|t| Self::ClaimOfferAtomV0(Box::new(t)))),
58521 ),
58522 TypeVariant::ClaimOfferAtom => Box::new(
58523 ReadXdrIter::<_, ClaimOfferAtom>::new(&mut r.inner, r.limits.clone())
58524 .map(|r| r.map(|t| Self::ClaimOfferAtom(Box::new(t)))),
58525 ),
58526 TypeVariant::ClaimLiquidityAtom => Box::new(
58527 ReadXdrIter::<_, ClaimLiquidityAtom>::new(&mut r.inner, r.limits.clone())
58528 .map(|r| r.map(|t| Self::ClaimLiquidityAtom(Box::new(t)))),
58529 ),
58530 TypeVariant::ClaimAtom => Box::new(
58531 ReadXdrIter::<_, ClaimAtom>::new(&mut r.inner, r.limits.clone())
58532 .map(|r| r.map(|t| Self::ClaimAtom(Box::new(t)))),
58533 ),
58534 TypeVariant::CreateAccountResultCode => Box::new(
58535 ReadXdrIter::<_, CreateAccountResultCode>::new(&mut r.inner, r.limits.clone())
58536 .map(|r| r.map(|t| Self::CreateAccountResultCode(Box::new(t)))),
58537 ),
58538 TypeVariant::CreateAccountResult => Box::new(
58539 ReadXdrIter::<_, CreateAccountResult>::new(&mut r.inner, r.limits.clone())
58540 .map(|r| r.map(|t| Self::CreateAccountResult(Box::new(t)))),
58541 ),
58542 TypeVariant::PaymentResultCode => Box::new(
58543 ReadXdrIter::<_, PaymentResultCode>::new(&mut r.inner, r.limits.clone())
58544 .map(|r| r.map(|t| Self::PaymentResultCode(Box::new(t)))),
58545 ),
58546 TypeVariant::PaymentResult => Box::new(
58547 ReadXdrIter::<_, PaymentResult>::new(&mut r.inner, r.limits.clone())
58548 .map(|r| r.map(|t| Self::PaymentResult(Box::new(t)))),
58549 ),
58550 TypeVariant::PathPaymentStrictReceiveResultCode => Box::new(
58551 ReadXdrIter::<_, PathPaymentStrictReceiveResultCode>::new(
58552 &mut r.inner,
58553 r.limits.clone(),
58554 )
58555 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultCode(Box::new(t)))),
58556 ),
58557 TypeVariant::SimplePaymentResult => Box::new(
58558 ReadXdrIter::<_, SimplePaymentResult>::new(&mut r.inner, r.limits.clone())
58559 .map(|r| r.map(|t| Self::SimplePaymentResult(Box::new(t)))),
58560 ),
58561 TypeVariant::PathPaymentStrictReceiveResult => Box::new(
58562 ReadXdrIter::<_, PathPaymentStrictReceiveResult>::new(
58563 &mut r.inner,
58564 r.limits.clone(),
58565 )
58566 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResult(Box::new(t)))),
58567 ),
58568 TypeVariant::PathPaymentStrictReceiveResultSuccess => Box::new(
58569 ReadXdrIter::<_, PathPaymentStrictReceiveResultSuccess>::new(
58570 &mut r.inner,
58571 r.limits.clone(),
58572 )
58573 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultSuccess(Box::new(t)))),
58574 ),
58575 TypeVariant::PathPaymentStrictSendResultCode => Box::new(
58576 ReadXdrIter::<_, PathPaymentStrictSendResultCode>::new(
58577 &mut r.inner,
58578 r.limits.clone(),
58579 )
58580 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultCode(Box::new(t)))),
58581 ),
58582 TypeVariant::PathPaymentStrictSendResult => Box::new(
58583 ReadXdrIter::<_, PathPaymentStrictSendResult>::new(&mut r.inner, r.limits.clone())
58584 .map(|r| r.map(|t| Self::PathPaymentStrictSendResult(Box::new(t)))),
58585 ),
58586 TypeVariant::PathPaymentStrictSendResultSuccess => Box::new(
58587 ReadXdrIter::<_, PathPaymentStrictSendResultSuccess>::new(
58588 &mut r.inner,
58589 r.limits.clone(),
58590 )
58591 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultSuccess(Box::new(t)))),
58592 ),
58593 TypeVariant::ManageSellOfferResultCode => Box::new(
58594 ReadXdrIter::<_, ManageSellOfferResultCode>::new(&mut r.inner, r.limits.clone())
58595 .map(|r| r.map(|t| Self::ManageSellOfferResultCode(Box::new(t)))),
58596 ),
58597 TypeVariant::ManageOfferEffect => Box::new(
58598 ReadXdrIter::<_, ManageOfferEffect>::new(&mut r.inner, r.limits.clone())
58599 .map(|r| r.map(|t| Self::ManageOfferEffect(Box::new(t)))),
58600 ),
58601 TypeVariant::ManageOfferSuccessResult => Box::new(
58602 ReadXdrIter::<_, ManageOfferSuccessResult>::new(&mut r.inner, r.limits.clone())
58603 .map(|r| r.map(|t| Self::ManageOfferSuccessResult(Box::new(t)))),
58604 ),
58605 TypeVariant::ManageOfferSuccessResultOffer => Box::new(
58606 ReadXdrIter::<_, ManageOfferSuccessResultOffer>::new(
58607 &mut r.inner,
58608 r.limits.clone(),
58609 )
58610 .map(|r| r.map(|t| Self::ManageOfferSuccessResultOffer(Box::new(t)))),
58611 ),
58612 TypeVariant::ManageSellOfferResult => Box::new(
58613 ReadXdrIter::<_, ManageSellOfferResult>::new(&mut r.inner, r.limits.clone())
58614 .map(|r| r.map(|t| Self::ManageSellOfferResult(Box::new(t)))),
58615 ),
58616 TypeVariant::ManageBuyOfferResultCode => Box::new(
58617 ReadXdrIter::<_, ManageBuyOfferResultCode>::new(&mut r.inner, r.limits.clone())
58618 .map(|r| r.map(|t| Self::ManageBuyOfferResultCode(Box::new(t)))),
58619 ),
58620 TypeVariant::ManageBuyOfferResult => Box::new(
58621 ReadXdrIter::<_, ManageBuyOfferResult>::new(&mut r.inner, r.limits.clone())
58622 .map(|r| r.map(|t| Self::ManageBuyOfferResult(Box::new(t)))),
58623 ),
58624 TypeVariant::SetOptionsResultCode => Box::new(
58625 ReadXdrIter::<_, SetOptionsResultCode>::new(&mut r.inner, r.limits.clone())
58626 .map(|r| r.map(|t| Self::SetOptionsResultCode(Box::new(t)))),
58627 ),
58628 TypeVariant::SetOptionsResult => Box::new(
58629 ReadXdrIter::<_, SetOptionsResult>::new(&mut r.inner, r.limits.clone())
58630 .map(|r| r.map(|t| Self::SetOptionsResult(Box::new(t)))),
58631 ),
58632 TypeVariant::ChangeTrustResultCode => Box::new(
58633 ReadXdrIter::<_, ChangeTrustResultCode>::new(&mut r.inner, r.limits.clone())
58634 .map(|r| r.map(|t| Self::ChangeTrustResultCode(Box::new(t)))),
58635 ),
58636 TypeVariant::ChangeTrustResult => Box::new(
58637 ReadXdrIter::<_, ChangeTrustResult>::new(&mut r.inner, r.limits.clone())
58638 .map(|r| r.map(|t| Self::ChangeTrustResult(Box::new(t)))),
58639 ),
58640 TypeVariant::AllowTrustResultCode => Box::new(
58641 ReadXdrIter::<_, AllowTrustResultCode>::new(&mut r.inner, r.limits.clone())
58642 .map(|r| r.map(|t| Self::AllowTrustResultCode(Box::new(t)))),
58643 ),
58644 TypeVariant::AllowTrustResult => Box::new(
58645 ReadXdrIter::<_, AllowTrustResult>::new(&mut r.inner, r.limits.clone())
58646 .map(|r| r.map(|t| Self::AllowTrustResult(Box::new(t)))),
58647 ),
58648 TypeVariant::AccountMergeResultCode => Box::new(
58649 ReadXdrIter::<_, AccountMergeResultCode>::new(&mut r.inner, r.limits.clone())
58650 .map(|r| r.map(|t| Self::AccountMergeResultCode(Box::new(t)))),
58651 ),
58652 TypeVariant::AccountMergeResult => Box::new(
58653 ReadXdrIter::<_, AccountMergeResult>::new(&mut r.inner, r.limits.clone())
58654 .map(|r| r.map(|t| Self::AccountMergeResult(Box::new(t)))),
58655 ),
58656 TypeVariant::InflationResultCode => Box::new(
58657 ReadXdrIter::<_, InflationResultCode>::new(&mut r.inner, r.limits.clone())
58658 .map(|r| r.map(|t| Self::InflationResultCode(Box::new(t)))),
58659 ),
58660 TypeVariant::InflationPayout => Box::new(
58661 ReadXdrIter::<_, InflationPayout>::new(&mut r.inner, r.limits.clone())
58662 .map(|r| r.map(|t| Self::InflationPayout(Box::new(t)))),
58663 ),
58664 TypeVariant::InflationResult => Box::new(
58665 ReadXdrIter::<_, InflationResult>::new(&mut r.inner, r.limits.clone())
58666 .map(|r| r.map(|t| Self::InflationResult(Box::new(t)))),
58667 ),
58668 TypeVariant::ManageDataResultCode => Box::new(
58669 ReadXdrIter::<_, ManageDataResultCode>::new(&mut r.inner, r.limits.clone())
58670 .map(|r| r.map(|t| Self::ManageDataResultCode(Box::new(t)))),
58671 ),
58672 TypeVariant::ManageDataResult => Box::new(
58673 ReadXdrIter::<_, ManageDataResult>::new(&mut r.inner, r.limits.clone())
58674 .map(|r| r.map(|t| Self::ManageDataResult(Box::new(t)))),
58675 ),
58676 TypeVariant::BumpSequenceResultCode => Box::new(
58677 ReadXdrIter::<_, BumpSequenceResultCode>::new(&mut r.inner, r.limits.clone())
58678 .map(|r| r.map(|t| Self::BumpSequenceResultCode(Box::new(t)))),
58679 ),
58680 TypeVariant::BumpSequenceResult => Box::new(
58681 ReadXdrIter::<_, BumpSequenceResult>::new(&mut r.inner, r.limits.clone())
58682 .map(|r| r.map(|t| Self::BumpSequenceResult(Box::new(t)))),
58683 ),
58684 TypeVariant::CreateClaimableBalanceResultCode => Box::new(
58685 ReadXdrIter::<_, CreateClaimableBalanceResultCode>::new(
58686 &mut r.inner,
58687 r.limits.clone(),
58688 )
58689 .map(|r| r.map(|t| Self::CreateClaimableBalanceResultCode(Box::new(t)))),
58690 ),
58691 TypeVariant::CreateClaimableBalanceResult => Box::new(
58692 ReadXdrIter::<_, CreateClaimableBalanceResult>::new(&mut r.inner, r.limits.clone())
58693 .map(|r| r.map(|t| Self::CreateClaimableBalanceResult(Box::new(t)))),
58694 ),
58695 TypeVariant::ClaimClaimableBalanceResultCode => Box::new(
58696 ReadXdrIter::<_, ClaimClaimableBalanceResultCode>::new(
58697 &mut r.inner,
58698 r.limits.clone(),
58699 )
58700 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResultCode(Box::new(t)))),
58701 ),
58702 TypeVariant::ClaimClaimableBalanceResult => Box::new(
58703 ReadXdrIter::<_, ClaimClaimableBalanceResult>::new(&mut r.inner, r.limits.clone())
58704 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResult(Box::new(t)))),
58705 ),
58706 TypeVariant::BeginSponsoringFutureReservesResultCode => Box::new(
58707 ReadXdrIter::<_, BeginSponsoringFutureReservesResultCode>::new(
58708 &mut r.inner,
58709 r.limits.clone(),
58710 )
58711 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResultCode(Box::new(t)))),
58712 ),
58713 TypeVariant::BeginSponsoringFutureReservesResult => Box::new(
58714 ReadXdrIter::<_, BeginSponsoringFutureReservesResult>::new(
58715 &mut r.inner,
58716 r.limits.clone(),
58717 )
58718 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResult(Box::new(t)))),
58719 ),
58720 TypeVariant::EndSponsoringFutureReservesResultCode => Box::new(
58721 ReadXdrIter::<_, EndSponsoringFutureReservesResultCode>::new(
58722 &mut r.inner,
58723 r.limits.clone(),
58724 )
58725 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResultCode(Box::new(t)))),
58726 ),
58727 TypeVariant::EndSponsoringFutureReservesResult => Box::new(
58728 ReadXdrIter::<_, EndSponsoringFutureReservesResult>::new(
58729 &mut r.inner,
58730 r.limits.clone(),
58731 )
58732 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResult(Box::new(t)))),
58733 ),
58734 TypeVariant::RevokeSponsorshipResultCode => Box::new(
58735 ReadXdrIter::<_, RevokeSponsorshipResultCode>::new(&mut r.inner, r.limits.clone())
58736 .map(|r| r.map(|t| Self::RevokeSponsorshipResultCode(Box::new(t)))),
58737 ),
58738 TypeVariant::RevokeSponsorshipResult => Box::new(
58739 ReadXdrIter::<_, RevokeSponsorshipResult>::new(&mut r.inner, r.limits.clone())
58740 .map(|r| r.map(|t| Self::RevokeSponsorshipResult(Box::new(t)))),
58741 ),
58742 TypeVariant::ClawbackResultCode => Box::new(
58743 ReadXdrIter::<_, ClawbackResultCode>::new(&mut r.inner, r.limits.clone())
58744 .map(|r| r.map(|t| Self::ClawbackResultCode(Box::new(t)))),
58745 ),
58746 TypeVariant::ClawbackResult => Box::new(
58747 ReadXdrIter::<_, ClawbackResult>::new(&mut r.inner, r.limits.clone())
58748 .map(|r| r.map(|t| Self::ClawbackResult(Box::new(t)))),
58749 ),
58750 TypeVariant::ClawbackClaimableBalanceResultCode => Box::new(
58751 ReadXdrIter::<_, ClawbackClaimableBalanceResultCode>::new(
58752 &mut r.inner,
58753 r.limits.clone(),
58754 )
58755 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResultCode(Box::new(t)))),
58756 ),
58757 TypeVariant::ClawbackClaimableBalanceResult => Box::new(
58758 ReadXdrIter::<_, ClawbackClaimableBalanceResult>::new(
58759 &mut r.inner,
58760 r.limits.clone(),
58761 )
58762 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResult(Box::new(t)))),
58763 ),
58764 TypeVariant::SetTrustLineFlagsResultCode => Box::new(
58765 ReadXdrIter::<_, SetTrustLineFlagsResultCode>::new(&mut r.inner, r.limits.clone())
58766 .map(|r| r.map(|t| Self::SetTrustLineFlagsResultCode(Box::new(t)))),
58767 ),
58768 TypeVariant::SetTrustLineFlagsResult => Box::new(
58769 ReadXdrIter::<_, SetTrustLineFlagsResult>::new(&mut r.inner, r.limits.clone())
58770 .map(|r| r.map(|t| Self::SetTrustLineFlagsResult(Box::new(t)))),
58771 ),
58772 TypeVariant::LiquidityPoolDepositResultCode => Box::new(
58773 ReadXdrIter::<_, LiquidityPoolDepositResultCode>::new(
58774 &mut r.inner,
58775 r.limits.clone(),
58776 )
58777 .map(|r| r.map(|t| Self::LiquidityPoolDepositResultCode(Box::new(t)))),
58778 ),
58779 TypeVariant::LiquidityPoolDepositResult => Box::new(
58780 ReadXdrIter::<_, LiquidityPoolDepositResult>::new(&mut r.inner, r.limits.clone())
58781 .map(|r| r.map(|t| Self::LiquidityPoolDepositResult(Box::new(t)))),
58782 ),
58783 TypeVariant::LiquidityPoolWithdrawResultCode => Box::new(
58784 ReadXdrIter::<_, LiquidityPoolWithdrawResultCode>::new(
58785 &mut r.inner,
58786 r.limits.clone(),
58787 )
58788 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResultCode(Box::new(t)))),
58789 ),
58790 TypeVariant::LiquidityPoolWithdrawResult => Box::new(
58791 ReadXdrIter::<_, LiquidityPoolWithdrawResult>::new(&mut r.inner, r.limits.clone())
58792 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResult(Box::new(t)))),
58793 ),
58794 TypeVariant::InvokeHostFunctionResultCode => Box::new(
58795 ReadXdrIter::<_, InvokeHostFunctionResultCode>::new(&mut r.inner, r.limits.clone())
58796 .map(|r| r.map(|t| Self::InvokeHostFunctionResultCode(Box::new(t)))),
58797 ),
58798 TypeVariant::InvokeHostFunctionResult => Box::new(
58799 ReadXdrIter::<_, InvokeHostFunctionResult>::new(&mut r.inner, r.limits.clone())
58800 .map(|r| r.map(|t| Self::InvokeHostFunctionResult(Box::new(t)))),
58801 ),
58802 TypeVariant::ExtendFootprintTtlResultCode => Box::new(
58803 ReadXdrIter::<_, ExtendFootprintTtlResultCode>::new(&mut r.inner, r.limits.clone())
58804 .map(|r| r.map(|t| Self::ExtendFootprintTtlResultCode(Box::new(t)))),
58805 ),
58806 TypeVariant::ExtendFootprintTtlResult => Box::new(
58807 ReadXdrIter::<_, ExtendFootprintTtlResult>::new(&mut r.inner, r.limits.clone())
58808 .map(|r| r.map(|t| Self::ExtendFootprintTtlResult(Box::new(t)))),
58809 ),
58810 TypeVariant::RestoreFootprintResultCode => Box::new(
58811 ReadXdrIter::<_, RestoreFootprintResultCode>::new(&mut r.inner, r.limits.clone())
58812 .map(|r| r.map(|t| Self::RestoreFootprintResultCode(Box::new(t)))),
58813 ),
58814 TypeVariant::RestoreFootprintResult => Box::new(
58815 ReadXdrIter::<_, RestoreFootprintResult>::new(&mut r.inner, r.limits.clone())
58816 .map(|r| r.map(|t| Self::RestoreFootprintResult(Box::new(t)))),
58817 ),
58818 TypeVariant::OperationResultCode => Box::new(
58819 ReadXdrIter::<_, OperationResultCode>::new(&mut r.inner, r.limits.clone())
58820 .map(|r| r.map(|t| Self::OperationResultCode(Box::new(t)))),
58821 ),
58822 TypeVariant::OperationResult => Box::new(
58823 ReadXdrIter::<_, OperationResult>::new(&mut r.inner, r.limits.clone())
58824 .map(|r| r.map(|t| Self::OperationResult(Box::new(t)))),
58825 ),
58826 TypeVariant::OperationResultTr => Box::new(
58827 ReadXdrIter::<_, OperationResultTr>::new(&mut r.inner, r.limits.clone())
58828 .map(|r| r.map(|t| Self::OperationResultTr(Box::new(t)))),
58829 ),
58830 TypeVariant::TransactionResultCode => Box::new(
58831 ReadXdrIter::<_, TransactionResultCode>::new(&mut r.inner, r.limits.clone())
58832 .map(|r| r.map(|t| Self::TransactionResultCode(Box::new(t)))),
58833 ),
58834 TypeVariant::InnerTransactionResult => Box::new(
58835 ReadXdrIter::<_, InnerTransactionResult>::new(&mut r.inner, r.limits.clone())
58836 .map(|r| r.map(|t| Self::InnerTransactionResult(Box::new(t)))),
58837 ),
58838 TypeVariant::InnerTransactionResultResult => Box::new(
58839 ReadXdrIter::<_, InnerTransactionResultResult>::new(&mut r.inner, r.limits.clone())
58840 .map(|r| r.map(|t| Self::InnerTransactionResultResult(Box::new(t)))),
58841 ),
58842 TypeVariant::InnerTransactionResultExt => Box::new(
58843 ReadXdrIter::<_, InnerTransactionResultExt>::new(&mut r.inner, r.limits.clone())
58844 .map(|r| r.map(|t| Self::InnerTransactionResultExt(Box::new(t)))),
58845 ),
58846 TypeVariant::InnerTransactionResultPair => Box::new(
58847 ReadXdrIter::<_, InnerTransactionResultPair>::new(&mut r.inner, r.limits.clone())
58848 .map(|r| r.map(|t| Self::InnerTransactionResultPair(Box::new(t)))),
58849 ),
58850 TypeVariant::TransactionResult => Box::new(
58851 ReadXdrIter::<_, TransactionResult>::new(&mut r.inner, r.limits.clone())
58852 .map(|r| r.map(|t| Self::TransactionResult(Box::new(t)))),
58853 ),
58854 TypeVariant::TransactionResultResult => Box::new(
58855 ReadXdrIter::<_, TransactionResultResult>::new(&mut r.inner, r.limits.clone())
58856 .map(|r| r.map(|t| Self::TransactionResultResult(Box::new(t)))),
58857 ),
58858 TypeVariant::TransactionResultExt => Box::new(
58859 ReadXdrIter::<_, TransactionResultExt>::new(&mut r.inner, r.limits.clone())
58860 .map(|r| r.map(|t| Self::TransactionResultExt(Box::new(t)))),
58861 ),
58862 TypeVariant::Hash => Box::new(
58863 ReadXdrIter::<_, Hash>::new(&mut r.inner, r.limits.clone())
58864 .map(|r| r.map(|t| Self::Hash(Box::new(t)))),
58865 ),
58866 TypeVariant::Uint256 => Box::new(
58867 ReadXdrIter::<_, Uint256>::new(&mut r.inner, r.limits.clone())
58868 .map(|r| r.map(|t| Self::Uint256(Box::new(t)))),
58869 ),
58870 TypeVariant::Uint32 => Box::new(
58871 ReadXdrIter::<_, Uint32>::new(&mut r.inner, r.limits.clone())
58872 .map(|r| r.map(|t| Self::Uint32(Box::new(t)))),
58873 ),
58874 TypeVariant::Int32 => Box::new(
58875 ReadXdrIter::<_, Int32>::new(&mut r.inner, r.limits.clone())
58876 .map(|r| r.map(|t| Self::Int32(Box::new(t)))),
58877 ),
58878 TypeVariant::Uint64 => Box::new(
58879 ReadXdrIter::<_, Uint64>::new(&mut r.inner, r.limits.clone())
58880 .map(|r| r.map(|t| Self::Uint64(Box::new(t)))),
58881 ),
58882 TypeVariant::Int64 => Box::new(
58883 ReadXdrIter::<_, Int64>::new(&mut r.inner, r.limits.clone())
58884 .map(|r| r.map(|t| Self::Int64(Box::new(t)))),
58885 ),
58886 TypeVariant::TimePoint => Box::new(
58887 ReadXdrIter::<_, TimePoint>::new(&mut r.inner, r.limits.clone())
58888 .map(|r| r.map(|t| Self::TimePoint(Box::new(t)))),
58889 ),
58890 TypeVariant::Duration => Box::new(
58891 ReadXdrIter::<_, Duration>::new(&mut r.inner, r.limits.clone())
58892 .map(|r| r.map(|t| Self::Duration(Box::new(t)))),
58893 ),
58894 TypeVariant::ExtensionPoint => Box::new(
58895 ReadXdrIter::<_, ExtensionPoint>::new(&mut r.inner, r.limits.clone())
58896 .map(|r| r.map(|t| Self::ExtensionPoint(Box::new(t)))),
58897 ),
58898 TypeVariant::CryptoKeyType => Box::new(
58899 ReadXdrIter::<_, CryptoKeyType>::new(&mut r.inner, r.limits.clone())
58900 .map(|r| r.map(|t| Self::CryptoKeyType(Box::new(t)))),
58901 ),
58902 TypeVariant::PublicKeyType => Box::new(
58903 ReadXdrIter::<_, PublicKeyType>::new(&mut r.inner, r.limits.clone())
58904 .map(|r| r.map(|t| Self::PublicKeyType(Box::new(t)))),
58905 ),
58906 TypeVariant::SignerKeyType => Box::new(
58907 ReadXdrIter::<_, SignerKeyType>::new(&mut r.inner, r.limits.clone())
58908 .map(|r| r.map(|t| Self::SignerKeyType(Box::new(t)))),
58909 ),
58910 TypeVariant::PublicKey => Box::new(
58911 ReadXdrIter::<_, PublicKey>::new(&mut r.inner, r.limits.clone())
58912 .map(|r| r.map(|t| Self::PublicKey(Box::new(t)))),
58913 ),
58914 TypeVariant::SignerKey => Box::new(
58915 ReadXdrIter::<_, SignerKey>::new(&mut r.inner, r.limits.clone())
58916 .map(|r| r.map(|t| Self::SignerKey(Box::new(t)))),
58917 ),
58918 TypeVariant::SignerKeyEd25519SignedPayload => Box::new(
58919 ReadXdrIter::<_, SignerKeyEd25519SignedPayload>::new(
58920 &mut r.inner,
58921 r.limits.clone(),
58922 )
58923 .map(|r| r.map(|t| Self::SignerKeyEd25519SignedPayload(Box::new(t)))),
58924 ),
58925 TypeVariant::Signature => Box::new(
58926 ReadXdrIter::<_, Signature>::new(&mut r.inner, r.limits.clone())
58927 .map(|r| r.map(|t| Self::Signature(Box::new(t)))),
58928 ),
58929 TypeVariant::SignatureHint => Box::new(
58930 ReadXdrIter::<_, SignatureHint>::new(&mut r.inner, r.limits.clone())
58931 .map(|r| r.map(|t| Self::SignatureHint(Box::new(t)))),
58932 ),
58933 TypeVariant::NodeId => Box::new(
58934 ReadXdrIter::<_, NodeId>::new(&mut r.inner, r.limits.clone())
58935 .map(|r| r.map(|t| Self::NodeId(Box::new(t)))),
58936 ),
58937 TypeVariant::AccountId => Box::new(
58938 ReadXdrIter::<_, AccountId>::new(&mut r.inner, r.limits.clone())
58939 .map(|r| r.map(|t| Self::AccountId(Box::new(t)))),
58940 ),
58941 TypeVariant::ContractId => Box::new(
58942 ReadXdrIter::<_, ContractId>::new(&mut r.inner, r.limits.clone())
58943 .map(|r| r.map(|t| Self::ContractId(Box::new(t)))),
58944 ),
58945 TypeVariant::Curve25519Secret => Box::new(
58946 ReadXdrIter::<_, Curve25519Secret>::new(&mut r.inner, r.limits.clone())
58947 .map(|r| r.map(|t| Self::Curve25519Secret(Box::new(t)))),
58948 ),
58949 TypeVariant::Curve25519Public => Box::new(
58950 ReadXdrIter::<_, Curve25519Public>::new(&mut r.inner, r.limits.clone())
58951 .map(|r| r.map(|t| Self::Curve25519Public(Box::new(t)))),
58952 ),
58953 TypeVariant::HmacSha256Key => Box::new(
58954 ReadXdrIter::<_, HmacSha256Key>::new(&mut r.inner, r.limits.clone())
58955 .map(|r| r.map(|t| Self::HmacSha256Key(Box::new(t)))),
58956 ),
58957 TypeVariant::HmacSha256Mac => Box::new(
58958 ReadXdrIter::<_, HmacSha256Mac>::new(&mut r.inner, r.limits.clone())
58959 .map(|r| r.map(|t| Self::HmacSha256Mac(Box::new(t)))),
58960 ),
58961 TypeVariant::ShortHashSeed => Box::new(
58962 ReadXdrIter::<_, ShortHashSeed>::new(&mut r.inner, r.limits.clone())
58963 .map(|r| r.map(|t| Self::ShortHashSeed(Box::new(t)))),
58964 ),
58965 TypeVariant::BinaryFuseFilterType => Box::new(
58966 ReadXdrIter::<_, BinaryFuseFilterType>::new(&mut r.inner, r.limits.clone())
58967 .map(|r| r.map(|t| Self::BinaryFuseFilterType(Box::new(t)))),
58968 ),
58969 TypeVariant::SerializedBinaryFuseFilter => Box::new(
58970 ReadXdrIter::<_, SerializedBinaryFuseFilter>::new(&mut r.inner, r.limits.clone())
58971 .map(|r| r.map(|t| Self::SerializedBinaryFuseFilter(Box::new(t)))),
58972 ),
58973 TypeVariant::PoolId => Box::new(
58974 ReadXdrIter::<_, PoolId>::new(&mut r.inner, r.limits.clone())
58975 .map(|r| r.map(|t| Self::PoolId(Box::new(t)))),
58976 ),
58977 TypeVariant::ClaimableBalanceIdType => Box::new(
58978 ReadXdrIter::<_, ClaimableBalanceIdType>::new(&mut r.inner, r.limits.clone())
58979 .map(|r| r.map(|t| Self::ClaimableBalanceIdType(Box::new(t)))),
58980 ),
58981 TypeVariant::ClaimableBalanceId => Box::new(
58982 ReadXdrIter::<_, ClaimableBalanceId>::new(&mut r.inner, r.limits.clone())
58983 .map(|r| r.map(|t| Self::ClaimableBalanceId(Box::new(t)))),
58984 ),
58985 }
58986 }
58987
58988 #[cfg(feature = "std")]
58989 #[allow(clippy::too_many_lines)]
58990 pub fn read_xdr_framed_iter<R: Read>(
58991 v: TypeVariant,
58992 r: &mut Limited<R>,
58993 ) -> Box<dyn Iterator<Item = Result<Self, Error>> + '_> {
58994 match v {
58995 TypeVariant::Value => Box::new(
58996 ReadXdrIter::<_, Frame<Value>>::new(&mut r.inner, r.limits.clone())
58997 .map(|r| r.map(|t| Self::Value(Box::new(t.0)))),
58998 ),
58999 TypeVariant::ScpBallot => Box::new(
59000 ReadXdrIter::<_, Frame<ScpBallot>>::new(&mut r.inner, r.limits.clone())
59001 .map(|r| r.map(|t| Self::ScpBallot(Box::new(t.0)))),
59002 ),
59003 TypeVariant::ScpStatementType => Box::new(
59004 ReadXdrIter::<_, Frame<ScpStatementType>>::new(&mut r.inner, r.limits.clone())
59005 .map(|r| r.map(|t| Self::ScpStatementType(Box::new(t.0)))),
59006 ),
59007 TypeVariant::ScpNomination => Box::new(
59008 ReadXdrIter::<_, Frame<ScpNomination>>::new(&mut r.inner, r.limits.clone())
59009 .map(|r| r.map(|t| Self::ScpNomination(Box::new(t.0)))),
59010 ),
59011 TypeVariant::ScpStatement => Box::new(
59012 ReadXdrIter::<_, Frame<ScpStatement>>::new(&mut r.inner, r.limits.clone())
59013 .map(|r| r.map(|t| Self::ScpStatement(Box::new(t.0)))),
59014 ),
59015 TypeVariant::ScpStatementPledges => Box::new(
59016 ReadXdrIter::<_, Frame<ScpStatementPledges>>::new(&mut r.inner, r.limits.clone())
59017 .map(|r| r.map(|t| Self::ScpStatementPledges(Box::new(t.0)))),
59018 ),
59019 TypeVariant::ScpStatementPrepare => Box::new(
59020 ReadXdrIter::<_, Frame<ScpStatementPrepare>>::new(&mut r.inner, r.limits.clone())
59021 .map(|r| r.map(|t| Self::ScpStatementPrepare(Box::new(t.0)))),
59022 ),
59023 TypeVariant::ScpStatementConfirm => Box::new(
59024 ReadXdrIter::<_, Frame<ScpStatementConfirm>>::new(&mut r.inner, r.limits.clone())
59025 .map(|r| r.map(|t| Self::ScpStatementConfirm(Box::new(t.0)))),
59026 ),
59027 TypeVariant::ScpStatementExternalize => Box::new(
59028 ReadXdrIter::<_, Frame<ScpStatementExternalize>>::new(
59029 &mut r.inner,
59030 r.limits.clone(),
59031 )
59032 .map(|r| r.map(|t| Self::ScpStatementExternalize(Box::new(t.0)))),
59033 ),
59034 TypeVariant::ScpEnvelope => Box::new(
59035 ReadXdrIter::<_, Frame<ScpEnvelope>>::new(&mut r.inner, r.limits.clone())
59036 .map(|r| r.map(|t| Self::ScpEnvelope(Box::new(t.0)))),
59037 ),
59038 TypeVariant::ScpQuorumSet => Box::new(
59039 ReadXdrIter::<_, Frame<ScpQuorumSet>>::new(&mut r.inner, r.limits.clone())
59040 .map(|r| r.map(|t| Self::ScpQuorumSet(Box::new(t.0)))),
59041 ),
59042 TypeVariant::ConfigSettingContractExecutionLanesV0 => Box::new(
59043 ReadXdrIter::<_, Frame<ConfigSettingContractExecutionLanesV0>>::new(
59044 &mut r.inner,
59045 r.limits.clone(),
59046 )
59047 .map(|r| r.map(|t| Self::ConfigSettingContractExecutionLanesV0(Box::new(t.0)))),
59048 ),
59049 TypeVariant::ConfigSettingContractComputeV0 => Box::new(
59050 ReadXdrIter::<_, Frame<ConfigSettingContractComputeV0>>::new(
59051 &mut r.inner,
59052 r.limits.clone(),
59053 )
59054 .map(|r| r.map(|t| Self::ConfigSettingContractComputeV0(Box::new(t.0)))),
59055 ),
59056 TypeVariant::ConfigSettingContractParallelComputeV0 => Box::new(
59057 ReadXdrIter::<_, Frame<ConfigSettingContractParallelComputeV0>>::new(
59058 &mut r.inner,
59059 r.limits.clone(),
59060 )
59061 .map(|r| r.map(|t| Self::ConfigSettingContractParallelComputeV0(Box::new(t.0)))),
59062 ),
59063 TypeVariant::ConfigSettingContractLedgerCostV0 => Box::new(
59064 ReadXdrIter::<_, Frame<ConfigSettingContractLedgerCostV0>>::new(
59065 &mut r.inner,
59066 r.limits.clone(),
59067 )
59068 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostV0(Box::new(t.0)))),
59069 ),
59070 TypeVariant::ConfigSettingContractLedgerCostExtV0 => Box::new(
59071 ReadXdrIter::<_, Frame<ConfigSettingContractLedgerCostExtV0>>::new(
59072 &mut r.inner,
59073 r.limits.clone(),
59074 )
59075 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostExtV0(Box::new(t.0)))),
59076 ),
59077 TypeVariant::ConfigSettingContractHistoricalDataV0 => Box::new(
59078 ReadXdrIter::<_, Frame<ConfigSettingContractHistoricalDataV0>>::new(
59079 &mut r.inner,
59080 r.limits.clone(),
59081 )
59082 .map(|r| r.map(|t| Self::ConfigSettingContractHistoricalDataV0(Box::new(t.0)))),
59083 ),
59084 TypeVariant::ConfigSettingContractEventsV0 => Box::new(
59085 ReadXdrIter::<_, Frame<ConfigSettingContractEventsV0>>::new(
59086 &mut r.inner,
59087 r.limits.clone(),
59088 )
59089 .map(|r| r.map(|t| Self::ConfigSettingContractEventsV0(Box::new(t.0)))),
59090 ),
59091 TypeVariant::ConfigSettingContractBandwidthV0 => Box::new(
59092 ReadXdrIter::<_, Frame<ConfigSettingContractBandwidthV0>>::new(
59093 &mut r.inner,
59094 r.limits.clone(),
59095 )
59096 .map(|r| r.map(|t| Self::ConfigSettingContractBandwidthV0(Box::new(t.0)))),
59097 ),
59098 TypeVariant::ContractCostType => Box::new(
59099 ReadXdrIter::<_, Frame<ContractCostType>>::new(&mut r.inner, r.limits.clone())
59100 .map(|r| r.map(|t| Self::ContractCostType(Box::new(t.0)))),
59101 ),
59102 TypeVariant::ContractCostParamEntry => Box::new(
59103 ReadXdrIter::<_, Frame<ContractCostParamEntry>>::new(
59104 &mut r.inner,
59105 r.limits.clone(),
59106 )
59107 .map(|r| r.map(|t| Self::ContractCostParamEntry(Box::new(t.0)))),
59108 ),
59109 TypeVariant::StateArchivalSettings => Box::new(
59110 ReadXdrIter::<_, Frame<StateArchivalSettings>>::new(&mut r.inner, r.limits.clone())
59111 .map(|r| r.map(|t| Self::StateArchivalSettings(Box::new(t.0)))),
59112 ),
59113 TypeVariant::EvictionIterator => Box::new(
59114 ReadXdrIter::<_, Frame<EvictionIterator>>::new(&mut r.inner, r.limits.clone())
59115 .map(|r| r.map(|t| Self::EvictionIterator(Box::new(t.0)))),
59116 ),
59117 TypeVariant::ConfigSettingScpTiming => Box::new(
59118 ReadXdrIter::<_, Frame<ConfigSettingScpTiming>>::new(
59119 &mut r.inner,
59120 r.limits.clone(),
59121 )
59122 .map(|r| r.map(|t| Self::ConfigSettingScpTiming(Box::new(t.0)))),
59123 ),
59124 TypeVariant::ContractCostParams => Box::new(
59125 ReadXdrIter::<_, Frame<ContractCostParams>>::new(&mut r.inner, r.limits.clone())
59126 .map(|r| r.map(|t| Self::ContractCostParams(Box::new(t.0)))),
59127 ),
59128 TypeVariant::ConfigSettingId => Box::new(
59129 ReadXdrIter::<_, Frame<ConfigSettingId>>::new(&mut r.inner, r.limits.clone())
59130 .map(|r| r.map(|t| Self::ConfigSettingId(Box::new(t.0)))),
59131 ),
59132 TypeVariant::ConfigSettingEntry => Box::new(
59133 ReadXdrIter::<_, Frame<ConfigSettingEntry>>::new(&mut r.inner, r.limits.clone())
59134 .map(|r| r.map(|t| Self::ConfigSettingEntry(Box::new(t.0)))),
59135 ),
59136 TypeVariant::ScEnvMetaKind => Box::new(
59137 ReadXdrIter::<_, Frame<ScEnvMetaKind>>::new(&mut r.inner, r.limits.clone())
59138 .map(|r| r.map(|t| Self::ScEnvMetaKind(Box::new(t.0)))),
59139 ),
59140 TypeVariant::ScEnvMetaEntry => Box::new(
59141 ReadXdrIter::<_, Frame<ScEnvMetaEntry>>::new(&mut r.inner, r.limits.clone())
59142 .map(|r| r.map(|t| Self::ScEnvMetaEntry(Box::new(t.0)))),
59143 ),
59144 TypeVariant::ScEnvMetaEntryInterfaceVersion => Box::new(
59145 ReadXdrIter::<_, Frame<ScEnvMetaEntryInterfaceVersion>>::new(
59146 &mut r.inner,
59147 r.limits.clone(),
59148 )
59149 .map(|r| r.map(|t| Self::ScEnvMetaEntryInterfaceVersion(Box::new(t.0)))),
59150 ),
59151 TypeVariant::ScMetaV0 => Box::new(
59152 ReadXdrIter::<_, Frame<ScMetaV0>>::new(&mut r.inner, r.limits.clone())
59153 .map(|r| r.map(|t| Self::ScMetaV0(Box::new(t.0)))),
59154 ),
59155 TypeVariant::ScMetaKind => Box::new(
59156 ReadXdrIter::<_, Frame<ScMetaKind>>::new(&mut r.inner, r.limits.clone())
59157 .map(|r| r.map(|t| Self::ScMetaKind(Box::new(t.0)))),
59158 ),
59159 TypeVariant::ScMetaEntry => Box::new(
59160 ReadXdrIter::<_, Frame<ScMetaEntry>>::new(&mut r.inner, r.limits.clone())
59161 .map(|r| r.map(|t| Self::ScMetaEntry(Box::new(t.0)))),
59162 ),
59163 TypeVariant::ScSpecType => Box::new(
59164 ReadXdrIter::<_, Frame<ScSpecType>>::new(&mut r.inner, r.limits.clone())
59165 .map(|r| r.map(|t| Self::ScSpecType(Box::new(t.0)))),
59166 ),
59167 TypeVariant::ScSpecTypeOption => Box::new(
59168 ReadXdrIter::<_, Frame<ScSpecTypeOption>>::new(&mut r.inner, r.limits.clone())
59169 .map(|r| r.map(|t| Self::ScSpecTypeOption(Box::new(t.0)))),
59170 ),
59171 TypeVariant::ScSpecTypeResult => Box::new(
59172 ReadXdrIter::<_, Frame<ScSpecTypeResult>>::new(&mut r.inner, r.limits.clone())
59173 .map(|r| r.map(|t| Self::ScSpecTypeResult(Box::new(t.0)))),
59174 ),
59175 TypeVariant::ScSpecTypeVec => Box::new(
59176 ReadXdrIter::<_, Frame<ScSpecTypeVec>>::new(&mut r.inner, r.limits.clone())
59177 .map(|r| r.map(|t| Self::ScSpecTypeVec(Box::new(t.0)))),
59178 ),
59179 TypeVariant::ScSpecTypeMap => Box::new(
59180 ReadXdrIter::<_, Frame<ScSpecTypeMap>>::new(&mut r.inner, r.limits.clone())
59181 .map(|r| r.map(|t| Self::ScSpecTypeMap(Box::new(t.0)))),
59182 ),
59183 TypeVariant::ScSpecTypeTuple => Box::new(
59184 ReadXdrIter::<_, Frame<ScSpecTypeTuple>>::new(&mut r.inner, r.limits.clone())
59185 .map(|r| r.map(|t| Self::ScSpecTypeTuple(Box::new(t.0)))),
59186 ),
59187 TypeVariant::ScSpecTypeBytesN => Box::new(
59188 ReadXdrIter::<_, Frame<ScSpecTypeBytesN>>::new(&mut r.inner, r.limits.clone())
59189 .map(|r| r.map(|t| Self::ScSpecTypeBytesN(Box::new(t.0)))),
59190 ),
59191 TypeVariant::ScSpecTypeUdt => Box::new(
59192 ReadXdrIter::<_, Frame<ScSpecTypeUdt>>::new(&mut r.inner, r.limits.clone())
59193 .map(|r| r.map(|t| Self::ScSpecTypeUdt(Box::new(t.0)))),
59194 ),
59195 TypeVariant::ScSpecTypeDef => Box::new(
59196 ReadXdrIter::<_, Frame<ScSpecTypeDef>>::new(&mut r.inner, r.limits.clone())
59197 .map(|r| r.map(|t| Self::ScSpecTypeDef(Box::new(t.0)))),
59198 ),
59199 TypeVariant::ScSpecUdtStructFieldV0 => Box::new(
59200 ReadXdrIter::<_, Frame<ScSpecUdtStructFieldV0>>::new(
59201 &mut r.inner,
59202 r.limits.clone(),
59203 )
59204 .map(|r| r.map(|t| Self::ScSpecUdtStructFieldV0(Box::new(t.0)))),
59205 ),
59206 TypeVariant::ScSpecUdtStructV0 => Box::new(
59207 ReadXdrIter::<_, Frame<ScSpecUdtStructV0>>::new(&mut r.inner, r.limits.clone())
59208 .map(|r| r.map(|t| Self::ScSpecUdtStructV0(Box::new(t.0)))),
59209 ),
59210 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Box::new(
59211 ReadXdrIter::<_, Frame<ScSpecUdtUnionCaseVoidV0>>::new(
59212 &mut r.inner,
59213 r.limits.clone(),
59214 )
59215 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseVoidV0(Box::new(t.0)))),
59216 ),
59217 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Box::new(
59218 ReadXdrIter::<_, Frame<ScSpecUdtUnionCaseTupleV0>>::new(
59219 &mut r.inner,
59220 r.limits.clone(),
59221 )
59222 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseTupleV0(Box::new(t.0)))),
59223 ),
59224 TypeVariant::ScSpecUdtUnionCaseV0Kind => Box::new(
59225 ReadXdrIter::<_, Frame<ScSpecUdtUnionCaseV0Kind>>::new(
59226 &mut r.inner,
59227 r.limits.clone(),
59228 )
59229 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0Kind(Box::new(t.0)))),
59230 ),
59231 TypeVariant::ScSpecUdtUnionCaseV0 => Box::new(
59232 ReadXdrIter::<_, Frame<ScSpecUdtUnionCaseV0>>::new(&mut r.inner, r.limits.clone())
59233 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0(Box::new(t.0)))),
59234 ),
59235 TypeVariant::ScSpecUdtUnionV0 => Box::new(
59236 ReadXdrIter::<_, Frame<ScSpecUdtUnionV0>>::new(&mut r.inner, r.limits.clone())
59237 .map(|r| r.map(|t| Self::ScSpecUdtUnionV0(Box::new(t.0)))),
59238 ),
59239 TypeVariant::ScSpecUdtEnumCaseV0 => Box::new(
59240 ReadXdrIter::<_, Frame<ScSpecUdtEnumCaseV0>>::new(&mut r.inner, r.limits.clone())
59241 .map(|r| r.map(|t| Self::ScSpecUdtEnumCaseV0(Box::new(t.0)))),
59242 ),
59243 TypeVariant::ScSpecUdtEnumV0 => Box::new(
59244 ReadXdrIter::<_, Frame<ScSpecUdtEnumV0>>::new(&mut r.inner, r.limits.clone())
59245 .map(|r| r.map(|t| Self::ScSpecUdtEnumV0(Box::new(t.0)))),
59246 ),
59247 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Box::new(
59248 ReadXdrIter::<_, Frame<ScSpecUdtErrorEnumCaseV0>>::new(
59249 &mut r.inner,
59250 r.limits.clone(),
59251 )
59252 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumCaseV0(Box::new(t.0)))),
59253 ),
59254 TypeVariant::ScSpecUdtErrorEnumV0 => Box::new(
59255 ReadXdrIter::<_, Frame<ScSpecUdtErrorEnumV0>>::new(&mut r.inner, r.limits.clone())
59256 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumV0(Box::new(t.0)))),
59257 ),
59258 TypeVariant::ScSpecFunctionInputV0 => Box::new(
59259 ReadXdrIter::<_, Frame<ScSpecFunctionInputV0>>::new(&mut r.inner, r.limits.clone())
59260 .map(|r| r.map(|t| Self::ScSpecFunctionInputV0(Box::new(t.0)))),
59261 ),
59262 TypeVariant::ScSpecFunctionV0 => Box::new(
59263 ReadXdrIter::<_, Frame<ScSpecFunctionV0>>::new(&mut r.inner, r.limits.clone())
59264 .map(|r| r.map(|t| Self::ScSpecFunctionV0(Box::new(t.0)))),
59265 ),
59266 TypeVariant::ScSpecEventParamLocationV0 => Box::new(
59267 ReadXdrIter::<_, Frame<ScSpecEventParamLocationV0>>::new(
59268 &mut r.inner,
59269 r.limits.clone(),
59270 )
59271 .map(|r| r.map(|t| Self::ScSpecEventParamLocationV0(Box::new(t.0)))),
59272 ),
59273 TypeVariant::ScSpecEventParamV0 => Box::new(
59274 ReadXdrIter::<_, Frame<ScSpecEventParamV0>>::new(&mut r.inner, r.limits.clone())
59275 .map(|r| r.map(|t| Self::ScSpecEventParamV0(Box::new(t.0)))),
59276 ),
59277 TypeVariant::ScSpecEventDataFormat => Box::new(
59278 ReadXdrIter::<_, Frame<ScSpecEventDataFormat>>::new(&mut r.inner, r.limits.clone())
59279 .map(|r| r.map(|t| Self::ScSpecEventDataFormat(Box::new(t.0)))),
59280 ),
59281 TypeVariant::ScSpecEventV0 => Box::new(
59282 ReadXdrIter::<_, Frame<ScSpecEventV0>>::new(&mut r.inner, r.limits.clone())
59283 .map(|r| r.map(|t| Self::ScSpecEventV0(Box::new(t.0)))),
59284 ),
59285 TypeVariant::ScSpecEntryKind => Box::new(
59286 ReadXdrIter::<_, Frame<ScSpecEntryKind>>::new(&mut r.inner, r.limits.clone())
59287 .map(|r| r.map(|t| Self::ScSpecEntryKind(Box::new(t.0)))),
59288 ),
59289 TypeVariant::ScSpecEntry => Box::new(
59290 ReadXdrIter::<_, Frame<ScSpecEntry>>::new(&mut r.inner, r.limits.clone())
59291 .map(|r| r.map(|t| Self::ScSpecEntry(Box::new(t.0)))),
59292 ),
59293 TypeVariant::ScValType => Box::new(
59294 ReadXdrIter::<_, Frame<ScValType>>::new(&mut r.inner, r.limits.clone())
59295 .map(|r| r.map(|t| Self::ScValType(Box::new(t.0)))),
59296 ),
59297 TypeVariant::ScErrorType => Box::new(
59298 ReadXdrIter::<_, Frame<ScErrorType>>::new(&mut r.inner, r.limits.clone())
59299 .map(|r| r.map(|t| Self::ScErrorType(Box::new(t.0)))),
59300 ),
59301 TypeVariant::ScErrorCode => Box::new(
59302 ReadXdrIter::<_, Frame<ScErrorCode>>::new(&mut r.inner, r.limits.clone())
59303 .map(|r| r.map(|t| Self::ScErrorCode(Box::new(t.0)))),
59304 ),
59305 TypeVariant::ScError => Box::new(
59306 ReadXdrIter::<_, Frame<ScError>>::new(&mut r.inner, r.limits.clone())
59307 .map(|r| r.map(|t| Self::ScError(Box::new(t.0)))),
59308 ),
59309 TypeVariant::UInt128Parts => Box::new(
59310 ReadXdrIter::<_, Frame<UInt128Parts>>::new(&mut r.inner, r.limits.clone())
59311 .map(|r| r.map(|t| Self::UInt128Parts(Box::new(t.0)))),
59312 ),
59313 TypeVariant::Int128Parts => Box::new(
59314 ReadXdrIter::<_, Frame<Int128Parts>>::new(&mut r.inner, r.limits.clone())
59315 .map(|r| r.map(|t| Self::Int128Parts(Box::new(t.0)))),
59316 ),
59317 TypeVariant::UInt256Parts => Box::new(
59318 ReadXdrIter::<_, Frame<UInt256Parts>>::new(&mut r.inner, r.limits.clone())
59319 .map(|r| r.map(|t| Self::UInt256Parts(Box::new(t.0)))),
59320 ),
59321 TypeVariant::Int256Parts => Box::new(
59322 ReadXdrIter::<_, Frame<Int256Parts>>::new(&mut r.inner, r.limits.clone())
59323 .map(|r| r.map(|t| Self::Int256Parts(Box::new(t.0)))),
59324 ),
59325 TypeVariant::ContractExecutableType => Box::new(
59326 ReadXdrIter::<_, Frame<ContractExecutableType>>::new(
59327 &mut r.inner,
59328 r.limits.clone(),
59329 )
59330 .map(|r| r.map(|t| Self::ContractExecutableType(Box::new(t.0)))),
59331 ),
59332 TypeVariant::ContractExecutable => Box::new(
59333 ReadXdrIter::<_, Frame<ContractExecutable>>::new(&mut r.inner, r.limits.clone())
59334 .map(|r| r.map(|t| Self::ContractExecutable(Box::new(t.0)))),
59335 ),
59336 TypeVariant::ScAddressType => Box::new(
59337 ReadXdrIter::<_, Frame<ScAddressType>>::new(&mut r.inner, r.limits.clone())
59338 .map(|r| r.map(|t| Self::ScAddressType(Box::new(t.0)))),
59339 ),
59340 TypeVariant::MuxedEd25519Account => Box::new(
59341 ReadXdrIter::<_, Frame<MuxedEd25519Account>>::new(&mut r.inner, r.limits.clone())
59342 .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t.0)))),
59343 ),
59344 TypeVariant::ScAddress => Box::new(
59345 ReadXdrIter::<_, Frame<ScAddress>>::new(&mut r.inner, r.limits.clone())
59346 .map(|r| r.map(|t| Self::ScAddress(Box::new(t.0)))),
59347 ),
59348 TypeVariant::ScVec => Box::new(
59349 ReadXdrIter::<_, Frame<ScVec>>::new(&mut r.inner, r.limits.clone())
59350 .map(|r| r.map(|t| Self::ScVec(Box::new(t.0)))),
59351 ),
59352 TypeVariant::ScMap => Box::new(
59353 ReadXdrIter::<_, Frame<ScMap>>::new(&mut r.inner, r.limits.clone())
59354 .map(|r| r.map(|t| Self::ScMap(Box::new(t.0)))),
59355 ),
59356 TypeVariant::ScBytes => Box::new(
59357 ReadXdrIter::<_, Frame<ScBytes>>::new(&mut r.inner, r.limits.clone())
59358 .map(|r| r.map(|t| Self::ScBytes(Box::new(t.0)))),
59359 ),
59360 TypeVariant::ScString => Box::new(
59361 ReadXdrIter::<_, Frame<ScString>>::new(&mut r.inner, r.limits.clone())
59362 .map(|r| r.map(|t| Self::ScString(Box::new(t.0)))),
59363 ),
59364 TypeVariant::ScSymbol => Box::new(
59365 ReadXdrIter::<_, Frame<ScSymbol>>::new(&mut r.inner, r.limits.clone())
59366 .map(|r| r.map(|t| Self::ScSymbol(Box::new(t.0)))),
59367 ),
59368 TypeVariant::ScNonceKey => Box::new(
59369 ReadXdrIter::<_, Frame<ScNonceKey>>::new(&mut r.inner, r.limits.clone())
59370 .map(|r| r.map(|t| Self::ScNonceKey(Box::new(t.0)))),
59371 ),
59372 TypeVariant::ScContractInstance => Box::new(
59373 ReadXdrIter::<_, Frame<ScContractInstance>>::new(&mut r.inner, r.limits.clone())
59374 .map(|r| r.map(|t| Self::ScContractInstance(Box::new(t.0)))),
59375 ),
59376 TypeVariant::ScVal => Box::new(
59377 ReadXdrIter::<_, Frame<ScVal>>::new(&mut r.inner, r.limits.clone())
59378 .map(|r| r.map(|t| Self::ScVal(Box::new(t.0)))),
59379 ),
59380 TypeVariant::ScMapEntry => Box::new(
59381 ReadXdrIter::<_, Frame<ScMapEntry>>::new(&mut r.inner, r.limits.clone())
59382 .map(|r| r.map(|t| Self::ScMapEntry(Box::new(t.0)))),
59383 ),
59384 TypeVariant::LedgerCloseMetaBatch => Box::new(
59385 ReadXdrIter::<_, Frame<LedgerCloseMetaBatch>>::new(&mut r.inner, r.limits.clone())
59386 .map(|r| r.map(|t| Self::LedgerCloseMetaBatch(Box::new(t.0)))),
59387 ),
59388 TypeVariant::StoredTransactionSet => Box::new(
59389 ReadXdrIter::<_, Frame<StoredTransactionSet>>::new(&mut r.inner, r.limits.clone())
59390 .map(|r| r.map(|t| Self::StoredTransactionSet(Box::new(t.0)))),
59391 ),
59392 TypeVariant::StoredDebugTransactionSet => Box::new(
59393 ReadXdrIter::<_, Frame<StoredDebugTransactionSet>>::new(
59394 &mut r.inner,
59395 r.limits.clone(),
59396 )
59397 .map(|r| r.map(|t| Self::StoredDebugTransactionSet(Box::new(t.0)))),
59398 ),
59399 TypeVariant::PersistedScpStateV0 => Box::new(
59400 ReadXdrIter::<_, Frame<PersistedScpStateV0>>::new(&mut r.inner, r.limits.clone())
59401 .map(|r| r.map(|t| Self::PersistedScpStateV0(Box::new(t.0)))),
59402 ),
59403 TypeVariant::PersistedScpStateV1 => Box::new(
59404 ReadXdrIter::<_, Frame<PersistedScpStateV1>>::new(&mut r.inner, r.limits.clone())
59405 .map(|r| r.map(|t| Self::PersistedScpStateV1(Box::new(t.0)))),
59406 ),
59407 TypeVariant::PersistedScpState => Box::new(
59408 ReadXdrIter::<_, Frame<PersistedScpState>>::new(&mut r.inner, r.limits.clone())
59409 .map(|r| r.map(|t| Self::PersistedScpState(Box::new(t.0)))),
59410 ),
59411 TypeVariant::Thresholds => Box::new(
59412 ReadXdrIter::<_, Frame<Thresholds>>::new(&mut r.inner, r.limits.clone())
59413 .map(|r| r.map(|t| Self::Thresholds(Box::new(t.0)))),
59414 ),
59415 TypeVariant::String32 => Box::new(
59416 ReadXdrIter::<_, Frame<String32>>::new(&mut r.inner, r.limits.clone())
59417 .map(|r| r.map(|t| Self::String32(Box::new(t.0)))),
59418 ),
59419 TypeVariant::String64 => Box::new(
59420 ReadXdrIter::<_, Frame<String64>>::new(&mut r.inner, r.limits.clone())
59421 .map(|r| r.map(|t| Self::String64(Box::new(t.0)))),
59422 ),
59423 TypeVariant::SequenceNumber => Box::new(
59424 ReadXdrIter::<_, Frame<SequenceNumber>>::new(&mut r.inner, r.limits.clone())
59425 .map(|r| r.map(|t| Self::SequenceNumber(Box::new(t.0)))),
59426 ),
59427 TypeVariant::DataValue => Box::new(
59428 ReadXdrIter::<_, Frame<DataValue>>::new(&mut r.inner, r.limits.clone())
59429 .map(|r| r.map(|t| Self::DataValue(Box::new(t.0)))),
59430 ),
59431 TypeVariant::AssetCode4 => Box::new(
59432 ReadXdrIter::<_, Frame<AssetCode4>>::new(&mut r.inner, r.limits.clone())
59433 .map(|r| r.map(|t| Self::AssetCode4(Box::new(t.0)))),
59434 ),
59435 TypeVariant::AssetCode12 => Box::new(
59436 ReadXdrIter::<_, Frame<AssetCode12>>::new(&mut r.inner, r.limits.clone())
59437 .map(|r| r.map(|t| Self::AssetCode12(Box::new(t.0)))),
59438 ),
59439 TypeVariant::AssetType => Box::new(
59440 ReadXdrIter::<_, Frame<AssetType>>::new(&mut r.inner, r.limits.clone())
59441 .map(|r| r.map(|t| Self::AssetType(Box::new(t.0)))),
59442 ),
59443 TypeVariant::AssetCode => Box::new(
59444 ReadXdrIter::<_, Frame<AssetCode>>::new(&mut r.inner, r.limits.clone())
59445 .map(|r| r.map(|t| Self::AssetCode(Box::new(t.0)))),
59446 ),
59447 TypeVariant::AlphaNum4 => Box::new(
59448 ReadXdrIter::<_, Frame<AlphaNum4>>::new(&mut r.inner, r.limits.clone())
59449 .map(|r| r.map(|t| Self::AlphaNum4(Box::new(t.0)))),
59450 ),
59451 TypeVariant::AlphaNum12 => Box::new(
59452 ReadXdrIter::<_, Frame<AlphaNum12>>::new(&mut r.inner, r.limits.clone())
59453 .map(|r| r.map(|t| Self::AlphaNum12(Box::new(t.0)))),
59454 ),
59455 TypeVariant::Asset => Box::new(
59456 ReadXdrIter::<_, Frame<Asset>>::new(&mut r.inner, r.limits.clone())
59457 .map(|r| r.map(|t| Self::Asset(Box::new(t.0)))),
59458 ),
59459 TypeVariant::Price => Box::new(
59460 ReadXdrIter::<_, Frame<Price>>::new(&mut r.inner, r.limits.clone())
59461 .map(|r| r.map(|t| Self::Price(Box::new(t.0)))),
59462 ),
59463 TypeVariant::Liabilities => Box::new(
59464 ReadXdrIter::<_, Frame<Liabilities>>::new(&mut r.inner, r.limits.clone())
59465 .map(|r| r.map(|t| Self::Liabilities(Box::new(t.0)))),
59466 ),
59467 TypeVariant::ThresholdIndexes => Box::new(
59468 ReadXdrIter::<_, Frame<ThresholdIndexes>>::new(&mut r.inner, r.limits.clone())
59469 .map(|r| r.map(|t| Self::ThresholdIndexes(Box::new(t.0)))),
59470 ),
59471 TypeVariant::LedgerEntryType => Box::new(
59472 ReadXdrIter::<_, Frame<LedgerEntryType>>::new(&mut r.inner, r.limits.clone())
59473 .map(|r| r.map(|t| Self::LedgerEntryType(Box::new(t.0)))),
59474 ),
59475 TypeVariant::Signer => Box::new(
59476 ReadXdrIter::<_, Frame<Signer>>::new(&mut r.inner, r.limits.clone())
59477 .map(|r| r.map(|t| Self::Signer(Box::new(t.0)))),
59478 ),
59479 TypeVariant::AccountFlags => Box::new(
59480 ReadXdrIter::<_, Frame<AccountFlags>>::new(&mut r.inner, r.limits.clone())
59481 .map(|r| r.map(|t| Self::AccountFlags(Box::new(t.0)))),
59482 ),
59483 TypeVariant::SponsorshipDescriptor => Box::new(
59484 ReadXdrIter::<_, Frame<SponsorshipDescriptor>>::new(&mut r.inner, r.limits.clone())
59485 .map(|r| r.map(|t| Self::SponsorshipDescriptor(Box::new(t.0)))),
59486 ),
59487 TypeVariant::AccountEntryExtensionV3 => Box::new(
59488 ReadXdrIter::<_, Frame<AccountEntryExtensionV3>>::new(
59489 &mut r.inner,
59490 r.limits.clone(),
59491 )
59492 .map(|r| r.map(|t| Self::AccountEntryExtensionV3(Box::new(t.0)))),
59493 ),
59494 TypeVariant::AccountEntryExtensionV2 => Box::new(
59495 ReadXdrIter::<_, Frame<AccountEntryExtensionV2>>::new(
59496 &mut r.inner,
59497 r.limits.clone(),
59498 )
59499 .map(|r| r.map(|t| Self::AccountEntryExtensionV2(Box::new(t.0)))),
59500 ),
59501 TypeVariant::AccountEntryExtensionV2Ext => Box::new(
59502 ReadXdrIter::<_, Frame<AccountEntryExtensionV2Ext>>::new(
59503 &mut r.inner,
59504 r.limits.clone(),
59505 )
59506 .map(|r| r.map(|t| Self::AccountEntryExtensionV2Ext(Box::new(t.0)))),
59507 ),
59508 TypeVariant::AccountEntryExtensionV1 => Box::new(
59509 ReadXdrIter::<_, Frame<AccountEntryExtensionV1>>::new(
59510 &mut r.inner,
59511 r.limits.clone(),
59512 )
59513 .map(|r| r.map(|t| Self::AccountEntryExtensionV1(Box::new(t.0)))),
59514 ),
59515 TypeVariant::AccountEntryExtensionV1Ext => Box::new(
59516 ReadXdrIter::<_, Frame<AccountEntryExtensionV1Ext>>::new(
59517 &mut r.inner,
59518 r.limits.clone(),
59519 )
59520 .map(|r| r.map(|t| Self::AccountEntryExtensionV1Ext(Box::new(t.0)))),
59521 ),
59522 TypeVariant::AccountEntry => Box::new(
59523 ReadXdrIter::<_, Frame<AccountEntry>>::new(&mut r.inner, r.limits.clone())
59524 .map(|r| r.map(|t| Self::AccountEntry(Box::new(t.0)))),
59525 ),
59526 TypeVariant::AccountEntryExt => Box::new(
59527 ReadXdrIter::<_, Frame<AccountEntryExt>>::new(&mut r.inner, r.limits.clone())
59528 .map(|r| r.map(|t| Self::AccountEntryExt(Box::new(t.0)))),
59529 ),
59530 TypeVariant::TrustLineFlags => Box::new(
59531 ReadXdrIter::<_, Frame<TrustLineFlags>>::new(&mut r.inner, r.limits.clone())
59532 .map(|r| r.map(|t| Self::TrustLineFlags(Box::new(t.0)))),
59533 ),
59534 TypeVariant::LiquidityPoolType => Box::new(
59535 ReadXdrIter::<_, Frame<LiquidityPoolType>>::new(&mut r.inner, r.limits.clone())
59536 .map(|r| r.map(|t| Self::LiquidityPoolType(Box::new(t.0)))),
59537 ),
59538 TypeVariant::TrustLineAsset => Box::new(
59539 ReadXdrIter::<_, Frame<TrustLineAsset>>::new(&mut r.inner, r.limits.clone())
59540 .map(|r| r.map(|t| Self::TrustLineAsset(Box::new(t.0)))),
59541 ),
59542 TypeVariant::TrustLineEntryExtensionV2 => Box::new(
59543 ReadXdrIter::<_, Frame<TrustLineEntryExtensionV2>>::new(
59544 &mut r.inner,
59545 r.limits.clone(),
59546 )
59547 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2(Box::new(t.0)))),
59548 ),
59549 TypeVariant::TrustLineEntryExtensionV2Ext => Box::new(
59550 ReadXdrIter::<_, Frame<TrustLineEntryExtensionV2Ext>>::new(
59551 &mut r.inner,
59552 r.limits.clone(),
59553 )
59554 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2Ext(Box::new(t.0)))),
59555 ),
59556 TypeVariant::TrustLineEntry => Box::new(
59557 ReadXdrIter::<_, Frame<TrustLineEntry>>::new(&mut r.inner, r.limits.clone())
59558 .map(|r| r.map(|t| Self::TrustLineEntry(Box::new(t.0)))),
59559 ),
59560 TypeVariant::TrustLineEntryExt => Box::new(
59561 ReadXdrIter::<_, Frame<TrustLineEntryExt>>::new(&mut r.inner, r.limits.clone())
59562 .map(|r| r.map(|t| Self::TrustLineEntryExt(Box::new(t.0)))),
59563 ),
59564 TypeVariant::TrustLineEntryV1 => Box::new(
59565 ReadXdrIter::<_, Frame<TrustLineEntryV1>>::new(&mut r.inner, r.limits.clone())
59566 .map(|r| r.map(|t| Self::TrustLineEntryV1(Box::new(t.0)))),
59567 ),
59568 TypeVariant::TrustLineEntryV1Ext => Box::new(
59569 ReadXdrIter::<_, Frame<TrustLineEntryV1Ext>>::new(&mut r.inner, r.limits.clone())
59570 .map(|r| r.map(|t| Self::TrustLineEntryV1Ext(Box::new(t.0)))),
59571 ),
59572 TypeVariant::OfferEntryFlags => Box::new(
59573 ReadXdrIter::<_, Frame<OfferEntryFlags>>::new(&mut r.inner, r.limits.clone())
59574 .map(|r| r.map(|t| Self::OfferEntryFlags(Box::new(t.0)))),
59575 ),
59576 TypeVariant::OfferEntry => Box::new(
59577 ReadXdrIter::<_, Frame<OfferEntry>>::new(&mut r.inner, r.limits.clone())
59578 .map(|r| r.map(|t| Self::OfferEntry(Box::new(t.0)))),
59579 ),
59580 TypeVariant::OfferEntryExt => Box::new(
59581 ReadXdrIter::<_, Frame<OfferEntryExt>>::new(&mut r.inner, r.limits.clone())
59582 .map(|r| r.map(|t| Self::OfferEntryExt(Box::new(t.0)))),
59583 ),
59584 TypeVariant::DataEntry => Box::new(
59585 ReadXdrIter::<_, Frame<DataEntry>>::new(&mut r.inner, r.limits.clone())
59586 .map(|r| r.map(|t| Self::DataEntry(Box::new(t.0)))),
59587 ),
59588 TypeVariant::DataEntryExt => Box::new(
59589 ReadXdrIter::<_, Frame<DataEntryExt>>::new(&mut r.inner, r.limits.clone())
59590 .map(|r| r.map(|t| Self::DataEntryExt(Box::new(t.0)))),
59591 ),
59592 TypeVariant::ClaimPredicateType => Box::new(
59593 ReadXdrIter::<_, Frame<ClaimPredicateType>>::new(&mut r.inner, r.limits.clone())
59594 .map(|r| r.map(|t| Self::ClaimPredicateType(Box::new(t.0)))),
59595 ),
59596 TypeVariant::ClaimPredicate => Box::new(
59597 ReadXdrIter::<_, Frame<ClaimPredicate>>::new(&mut r.inner, r.limits.clone())
59598 .map(|r| r.map(|t| Self::ClaimPredicate(Box::new(t.0)))),
59599 ),
59600 TypeVariant::ClaimantType => Box::new(
59601 ReadXdrIter::<_, Frame<ClaimantType>>::new(&mut r.inner, r.limits.clone())
59602 .map(|r| r.map(|t| Self::ClaimantType(Box::new(t.0)))),
59603 ),
59604 TypeVariant::Claimant => Box::new(
59605 ReadXdrIter::<_, Frame<Claimant>>::new(&mut r.inner, r.limits.clone())
59606 .map(|r| r.map(|t| Self::Claimant(Box::new(t.0)))),
59607 ),
59608 TypeVariant::ClaimantV0 => Box::new(
59609 ReadXdrIter::<_, Frame<ClaimantV0>>::new(&mut r.inner, r.limits.clone())
59610 .map(|r| r.map(|t| Self::ClaimantV0(Box::new(t.0)))),
59611 ),
59612 TypeVariant::ClaimableBalanceFlags => Box::new(
59613 ReadXdrIter::<_, Frame<ClaimableBalanceFlags>>::new(&mut r.inner, r.limits.clone())
59614 .map(|r| r.map(|t| Self::ClaimableBalanceFlags(Box::new(t.0)))),
59615 ),
59616 TypeVariant::ClaimableBalanceEntryExtensionV1 => Box::new(
59617 ReadXdrIter::<_, Frame<ClaimableBalanceEntryExtensionV1>>::new(
59618 &mut r.inner,
59619 r.limits.clone(),
59620 )
59621 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1(Box::new(t.0)))),
59622 ),
59623 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => Box::new(
59624 ReadXdrIter::<_, Frame<ClaimableBalanceEntryExtensionV1Ext>>::new(
59625 &mut r.inner,
59626 r.limits.clone(),
59627 )
59628 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(t.0)))),
59629 ),
59630 TypeVariant::ClaimableBalanceEntry => Box::new(
59631 ReadXdrIter::<_, Frame<ClaimableBalanceEntry>>::new(&mut r.inner, r.limits.clone())
59632 .map(|r| r.map(|t| Self::ClaimableBalanceEntry(Box::new(t.0)))),
59633 ),
59634 TypeVariant::ClaimableBalanceEntryExt => Box::new(
59635 ReadXdrIter::<_, Frame<ClaimableBalanceEntryExt>>::new(
59636 &mut r.inner,
59637 r.limits.clone(),
59638 )
59639 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExt(Box::new(t.0)))),
59640 ),
59641 TypeVariant::LiquidityPoolConstantProductParameters => Box::new(
59642 ReadXdrIter::<_, Frame<LiquidityPoolConstantProductParameters>>::new(
59643 &mut r.inner,
59644 r.limits.clone(),
59645 )
59646 .map(|r| r.map(|t| Self::LiquidityPoolConstantProductParameters(Box::new(t.0)))),
59647 ),
59648 TypeVariant::LiquidityPoolEntry => Box::new(
59649 ReadXdrIter::<_, Frame<LiquidityPoolEntry>>::new(&mut r.inner, r.limits.clone())
59650 .map(|r| r.map(|t| Self::LiquidityPoolEntry(Box::new(t.0)))),
59651 ),
59652 TypeVariant::LiquidityPoolEntryBody => Box::new(
59653 ReadXdrIter::<_, Frame<LiquidityPoolEntryBody>>::new(
59654 &mut r.inner,
59655 r.limits.clone(),
59656 )
59657 .map(|r| r.map(|t| Self::LiquidityPoolEntryBody(Box::new(t.0)))),
59658 ),
59659 TypeVariant::LiquidityPoolEntryConstantProduct => Box::new(
59660 ReadXdrIter::<_, Frame<LiquidityPoolEntryConstantProduct>>::new(
59661 &mut r.inner,
59662 r.limits.clone(),
59663 )
59664 .map(|r| r.map(|t| Self::LiquidityPoolEntryConstantProduct(Box::new(t.0)))),
59665 ),
59666 TypeVariant::ContractDataDurability => Box::new(
59667 ReadXdrIter::<_, Frame<ContractDataDurability>>::new(
59668 &mut r.inner,
59669 r.limits.clone(),
59670 )
59671 .map(|r| r.map(|t| Self::ContractDataDurability(Box::new(t.0)))),
59672 ),
59673 TypeVariant::ContractDataEntry => Box::new(
59674 ReadXdrIter::<_, Frame<ContractDataEntry>>::new(&mut r.inner, r.limits.clone())
59675 .map(|r| r.map(|t| Self::ContractDataEntry(Box::new(t.0)))),
59676 ),
59677 TypeVariant::ContractCodeCostInputs => Box::new(
59678 ReadXdrIter::<_, Frame<ContractCodeCostInputs>>::new(
59679 &mut r.inner,
59680 r.limits.clone(),
59681 )
59682 .map(|r| r.map(|t| Self::ContractCodeCostInputs(Box::new(t.0)))),
59683 ),
59684 TypeVariant::ContractCodeEntry => Box::new(
59685 ReadXdrIter::<_, Frame<ContractCodeEntry>>::new(&mut r.inner, r.limits.clone())
59686 .map(|r| r.map(|t| Self::ContractCodeEntry(Box::new(t.0)))),
59687 ),
59688 TypeVariant::ContractCodeEntryExt => Box::new(
59689 ReadXdrIter::<_, Frame<ContractCodeEntryExt>>::new(&mut r.inner, r.limits.clone())
59690 .map(|r| r.map(|t| Self::ContractCodeEntryExt(Box::new(t.0)))),
59691 ),
59692 TypeVariant::ContractCodeEntryV1 => Box::new(
59693 ReadXdrIter::<_, Frame<ContractCodeEntryV1>>::new(&mut r.inner, r.limits.clone())
59694 .map(|r| r.map(|t| Self::ContractCodeEntryV1(Box::new(t.0)))),
59695 ),
59696 TypeVariant::TtlEntry => Box::new(
59697 ReadXdrIter::<_, Frame<TtlEntry>>::new(&mut r.inner, r.limits.clone())
59698 .map(|r| r.map(|t| Self::TtlEntry(Box::new(t.0)))),
59699 ),
59700 TypeVariant::LedgerEntryExtensionV1 => Box::new(
59701 ReadXdrIter::<_, Frame<LedgerEntryExtensionV1>>::new(
59702 &mut r.inner,
59703 r.limits.clone(),
59704 )
59705 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1(Box::new(t.0)))),
59706 ),
59707 TypeVariant::LedgerEntryExtensionV1Ext => Box::new(
59708 ReadXdrIter::<_, Frame<LedgerEntryExtensionV1Ext>>::new(
59709 &mut r.inner,
59710 r.limits.clone(),
59711 )
59712 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1Ext(Box::new(t.0)))),
59713 ),
59714 TypeVariant::LedgerEntry => Box::new(
59715 ReadXdrIter::<_, Frame<LedgerEntry>>::new(&mut r.inner, r.limits.clone())
59716 .map(|r| r.map(|t| Self::LedgerEntry(Box::new(t.0)))),
59717 ),
59718 TypeVariant::LedgerEntryData => Box::new(
59719 ReadXdrIter::<_, Frame<LedgerEntryData>>::new(&mut r.inner, r.limits.clone())
59720 .map(|r| r.map(|t| Self::LedgerEntryData(Box::new(t.0)))),
59721 ),
59722 TypeVariant::LedgerEntryExt => Box::new(
59723 ReadXdrIter::<_, Frame<LedgerEntryExt>>::new(&mut r.inner, r.limits.clone())
59724 .map(|r| r.map(|t| Self::LedgerEntryExt(Box::new(t.0)))),
59725 ),
59726 TypeVariant::LedgerKey => Box::new(
59727 ReadXdrIter::<_, Frame<LedgerKey>>::new(&mut r.inner, r.limits.clone())
59728 .map(|r| r.map(|t| Self::LedgerKey(Box::new(t.0)))),
59729 ),
59730 TypeVariant::LedgerKeyAccount => Box::new(
59731 ReadXdrIter::<_, Frame<LedgerKeyAccount>>::new(&mut r.inner, r.limits.clone())
59732 .map(|r| r.map(|t| Self::LedgerKeyAccount(Box::new(t.0)))),
59733 ),
59734 TypeVariant::LedgerKeyTrustLine => Box::new(
59735 ReadXdrIter::<_, Frame<LedgerKeyTrustLine>>::new(&mut r.inner, r.limits.clone())
59736 .map(|r| r.map(|t| Self::LedgerKeyTrustLine(Box::new(t.0)))),
59737 ),
59738 TypeVariant::LedgerKeyOffer => Box::new(
59739 ReadXdrIter::<_, Frame<LedgerKeyOffer>>::new(&mut r.inner, r.limits.clone())
59740 .map(|r| r.map(|t| Self::LedgerKeyOffer(Box::new(t.0)))),
59741 ),
59742 TypeVariant::LedgerKeyData => Box::new(
59743 ReadXdrIter::<_, Frame<LedgerKeyData>>::new(&mut r.inner, r.limits.clone())
59744 .map(|r| r.map(|t| Self::LedgerKeyData(Box::new(t.0)))),
59745 ),
59746 TypeVariant::LedgerKeyClaimableBalance => Box::new(
59747 ReadXdrIter::<_, Frame<LedgerKeyClaimableBalance>>::new(
59748 &mut r.inner,
59749 r.limits.clone(),
59750 )
59751 .map(|r| r.map(|t| Self::LedgerKeyClaimableBalance(Box::new(t.0)))),
59752 ),
59753 TypeVariant::LedgerKeyLiquidityPool => Box::new(
59754 ReadXdrIter::<_, Frame<LedgerKeyLiquidityPool>>::new(
59755 &mut r.inner,
59756 r.limits.clone(),
59757 )
59758 .map(|r| r.map(|t| Self::LedgerKeyLiquidityPool(Box::new(t.0)))),
59759 ),
59760 TypeVariant::LedgerKeyContractData => Box::new(
59761 ReadXdrIter::<_, Frame<LedgerKeyContractData>>::new(&mut r.inner, r.limits.clone())
59762 .map(|r| r.map(|t| Self::LedgerKeyContractData(Box::new(t.0)))),
59763 ),
59764 TypeVariant::LedgerKeyContractCode => Box::new(
59765 ReadXdrIter::<_, Frame<LedgerKeyContractCode>>::new(&mut r.inner, r.limits.clone())
59766 .map(|r| r.map(|t| Self::LedgerKeyContractCode(Box::new(t.0)))),
59767 ),
59768 TypeVariant::LedgerKeyConfigSetting => Box::new(
59769 ReadXdrIter::<_, Frame<LedgerKeyConfigSetting>>::new(
59770 &mut r.inner,
59771 r.limits.clone(),
59772 )
59773 .map(|r| r.map(|t| Self::LedgerKeyConfigSetting(Box::new(t.0)))),
59774 ),
59775 TypeVariant::LedgerKeyTtl => Box::new(
59776 ReadXdrIter::<_, Frame<LedgerKeyTtl>>::new(&mut r.inner, r.limits.clone())
59777 .map(|r| r.map(|t| Self::LedgerKeyTtl(Box::new(t.0)))),
59778 ),
59779 TypeVariant::EnvelopeType => Box::new(
59780 ReadXdrIter::<_, Frame<EnvelopeType>>::new(&mut r.inner, r.limits.clone())
59781 .map(|r| r.map(|t| Self::EnvelopeType(Box::new(t.0)))),
59782 ),
59783 TypeVariant::BucketListType => Box::new(
59784 ReadXdrIter::<_, Frame<BucketListType>>::new(&mut r.inner, r.limits.clone())
59785 .map(|r| r.map(|t| Self::BucketListType(Box::new(t.0)))),
59786 ),
59787 TypeVariant::BucketEntryType => Box::new(
59788 ReadXdrIter::<_, Frame<BucketEntryType>>::new(&mut r.inner, r.limits.clone())
59789 .map(|r| r.map(|t| Self::BucketEntryType(Box::new(t.0)))),
59790 ),
59791 TypeVariant::HotArchiveBucketEntryType => Box::new(
59792 ReadXdrIter::<_, Frame<HotArchiveBucketEntryType>>::new(
59793 &mut r.inner,
59794 r.limits.clone(),
59795 )
59796 .map(|r| r.map(|t| Self::HotArchiveBucketEntryType(Box::new(t.0)))),
59797 ),
59798 TypeVariant::BucketMetadata => Box::new(
59799 ReadXdrIter::<_, Frame<BucketMetadata>>::new(&mut r.inner, r.limits.clone())
59800 .map(|r| r.map(|t| Self::BucketMetadata(Box::new(t.0)))),
59801 ),
59802 TypeVariant::BucketMetadataExt => Box::new(
59803 ReadXdrIter::<_, Frame<BucketMetadataExt>>::new(&mut r.inner, r.limits.clone())
59804 .map(|r| r.map(|t| Self::BucketMetadataExt(Box::new(t.0)))),
59805 ),
59806 TypeVariant::BucketEntry => Box::new(
59807 ReadXdrIter::<_, Frame<BucketEntry>>::new(&mut r.inner, r.limits.clone())
59808 .map(|r| r.map(|t| Self::BucketEntry(Box::new(t.0)))),
59809 ),
59810 TypeVariant::HotArchiveBucketEntry => Box::new(
59811 ReadXdrIter::<_, Frame<HotArchiveBucketEntry>>::new(&mut r.inner, r.limits.clone())
59812 .map(|r| r.map(|t| Self::HotArchiveBucketEntry(Box::new(t.0)))),
59813 ),
59814 TypeVariant::UpgradeType => Box::new(
59815 ReadXdrIter::<_, Frame<UpgradeType>>::new(&mut r.inner, r.limits.clone())
59816 .map(|r| r.map(|t| Self::UpgradeType(Box::new(t.0)))),
59817 ),
59818 TypeVariant::StellarValueType => Box::new(
59819 ReadXdrIter::<_, Frame<StellarValueType>>::new(&mut r.inner, r.limits.clone())
59820 .map(|r| r.map(|t| Self::StellarValueType(Box::new(t.0)))),
59821 ),
59822 TypeVariant::LedgerCloseValueSignature => Box::new(
59823 ReadXdrIter::<_, Frame<LedgerCloseValueSignature>>::new(
59824 &mut r.inner,
59825 r.limits.clone(),
59826 )
59827 .map(|r| r.map(|t| Self::LedgerCloseValueSignature(Box::new(t.0)))),
59828 ),
59829 TypeVariant::StellarValue => Box::new(
59830 ReadXdrIter::<_, Frame<StellarValue>>::new(&mut r.inner, r.limits.clone())
59831 .map(|r| r.map(|t| Self::StellarValue(Box::new(t.0)))),
59832 ),
59833 TypeVariant::StellarValueExt => Box::new(
59834 ReadXdrIter::<_, Frame<StellarValueExt>>::new(&mut r.inner, r.limits.clone())
59835 .map(|r| r.map(|t| Self::StellarValueExt(Box::new(t.0)))),
59836 ),
59837 TypeVariant::LedgerHeaderFlags => Box::new(
59838 ReadXdrIter::<_, Frame<LedgerHeaderFlags>>::new(&mut r.inner, r.limits.clone())
59839 .map(|r| r.map(|t| Self::LedgerHeaderFlags(Box::new(t.0)))),
59840 ),
59841 TypeVariant::LedgerHeaderExtensionV1 => Box::new(
59842 ReadXdrIter::<_, Frame<LedgerHeaderExtensionV1>>::new(
59843 &mut r.inner,
59844 r.limits.clone(),
59845 )
59846 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1(Box::new(t.0)))),
59847 ),
59848 TypeVariant::LedgerHeaderExtensionV1Ext => Box::new(
59849 ReadXdrIter::<_, Frame<LedgerHeaderExtensionV1Ext>>::new(
59850 &mut r.inner,
59851 r.limits.clone(),
59852 )
59853 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1Ext(Box::new(t.0)))),
59854 ),
59855 TypeVariant::LedgerHeader => Box::new(
59856 ReadXdrIter::<_, Frame<LedgerHeader>>::new(&mut r.inner, r.limits.clone())
59857 .map(|r| r.map(|t| Self::LedgerHeader(Box::new(t.0)))),
59858 ),
59859 TypeVariant::LedgerHeaderExt => Box::new(
59860 ReadXdrIter::<_, Frame<LedgerHeaderExt>>::new(&mut r.inner, r.limits.clone())
59861 .map(|r| r.map(|t| Self::LedgerHeaderExt(Box::new(t.0)))),
59862 ),
59863 TypeVariant::LedgerUpgradeType => Box::new(
59864 ReadXdrIter::<_, Frame<LedgerUpgradeType>>::new(&mut r.inner, r.limits.clone())
59865 .map(|r| r.map(|t| Self::LedgerUpgradeType(Box::new(t.0)))),
59866 ),
59867 TypeVariant::ConfigUpgradeSetKey => Box::new(
59868 ReadXdrIter::<_, Frame<ConfigUpgradeSetKey>>::new(&mut r.inner, r.limits.clone())
59869 .map(|r| r.map(|t| Self::ConfigUpgradeSetKey(Box::new(t.0)))),
59870 ),
59871 TypeVariant::LedgerUpgrade => Box::new(
59872 ReadXdrIter::<_, Frame<LedgerUpgrade>>::new(&mut r.inner, r.limits.clone())
59873 .map(|r| r.map(|t| Self::LedgerUpgrade(Box::new(t.0)))),
59874 ),
59875 TypeVariant::ConfigUpgradeSet => Box::new(
59876 ReadXdrIter::<_, Frame<ConfigUpgradeSet>>::new(&mut r.inner, r.limits.clone())
59877 .map(|r| r.map(|t| Self::ConfigUpgradeSet(Box::new(t.0)))),
59878 ),
59879 TypeVariant::TxSetComponentType => Box::new(
59880 ReadXdrIter::<_, Frame<TxSetComponentType>>::new(&mut r.inner, r.limits.clone())
59881 .map(|r| r.map(|t| Self::TxSetComponentType(Box::new(t.0)))),
59882 ),
59883 TypeVariant::DependentTxCluster => Box::new(
59884 ReadXdrIter::<_, Frame<DependentTxCluster>>::new(&mut r.inner, r.limits.clone())
59885 .map(|r| r.map(|t| Self::DependentTxCluster(Box::new(t.0)))),
59886 ),
59887 TypeVariant::ParallelTxExecutionStage => Box::new(
59888 ReadXdrIter::<_, Frame<ParallelTxExecutionStage>>::new(
59889 &mut r.inner,
59890 r.limits.clone(),
59891 )
59892 .map(|r| r.map(|t| Self::ParallelTxExecutionStage(Box::new(t.0)))),
59893 ),
59894 TypeVariant::ParallelTxsComponent => Box::new(
59895 ReadXdrIter::<_, Frame<ParallelTxsComponent>>::new(&mut r.inner, r.limits.clone())
59896 .map(|r| r.map(|t| Self::ParallelTxsComponent(Box::new(t.0)))),
59897 ),
59898 TypeVariant::TxSetComponent => Box::new(
59899 ReadXdrIter::<_, Frame<TxSetComponent>>::new(&mut r.inner, r.limits.clone())
59900 .map(|r| r.map(|t| Self::TxSetComponent(Box::new(t.0)))),
59901 ),
59902 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => Box::new(
59903 ReadXdrIter::<_, Frame<TxSetComponentTxsMaybeDiscountedFee>>::new(
59904 &mut r.inner,
59905 r.limits.clone(),
59906 )
59907 .map(|r| r.map(|t| Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(t.0)))),
59908 ),
59909 TypeVariant::TransactionPhase => Box::new(
59910 ReadXdrIter::<_, Frame<TransactionPhase>>::new(&mut r.inner, r.limits.clone())
59911 .map(|r| r.map(|t| Self::TransactionPhase(Box::new(t.0)))),
59912 ),
59913 TypeVariant::TransactionSet => Box::new(
59914 ReadXdrIter::<_, Frame<TransactionSet>>::new(&mut r.inner, r.limits.clone())
59915 .map(|r| r.map(|t| Self::TransactionSet(Box::new(t.0)))),
59916 ),
59917 TypeVariant::TransactionSetV1 => Box::new(
59918 ReadXdrIter::<_, Frame<TransactionSetV1>>::new(&mut r.inner, r.limits.clone())
59919 .map(|r| r.map(|t| Self::TransactionSetV1(Box::new(t.0)))),
59920 ),
59921 TypeVariant::GeneralizedTransactionSet => Box::new(
59922 ReadXdrIter::<_, Frame<GeneralizedTransactionSet>>::new(
59923 &mut r.inner,
59924 r.limits.clone(),
59925 )
59926 .map(|r| r.map(|t| Self::GeneralizedTransactionSet(Box::new(t.0)))),
59927 ),
59928 TypeVariant::TransactionResultPair => Box::new(
59929 ReadXdrIter::<_, Frame<TransactionResultPair>>::new(&mut r.inner, r.limits.clone())
59930 .map(|r| r.map(|t| Self::TransactionResultPair(Box::new(t.0)))),
59931 ),
59932 TypeVariant::TransactionResultSet => Box::new(
59933 ReadXdrIter::<_, Frame<TransactionResultSet>>::new(&mut r.inner, r.limits.clone())
59934 .map(|r| r.map(|t| Self::TransactionResultSet(Box::new(t.0)))),
59935 ),
59936 TypeVariant::TransactionHistoryEntry => Box::new(
59937 ReadXdrIter::<_, Frame<TransactionHistoryEntry>>::new(
59938 &mut r.inner,
59939 r.limits.clone(),
59940 )
59941 .map(|r| r.map(|t| Self::TransactionHistoryEntry(Box::new(t.0)))),
59942 ),
59943 TypeVariant::TransactionHistoryEntryExt => Box::new(
59944 ReadXdrIter::<_, Frame<TransactionHistoryEntryExt>>::new(
59945 &mut r.inner,
59946 r.limits.clone(),
59947 )
59948 .map(|r| r.map(|t| Self::TransactionHistoryEntryExt(Box::new(t.0)))),
59949 ),
59950 TypeVariant::TransactionHistoryResultEntry => Box::new(
59951 ReadXdrIter::<_, Frame<TransactionHistoryResultEntry>>::new(
59952 &mut r.inner,
59953 r.limits.clone(),
59954 )
59955 .map(|r| r.map(|t| Self::TransactionHistoryResultEntry(Box::new(t.0)))),
59956 ),
59957 TypeVariant::TransactionHistoryResultEntryExt => Box::new(
59958 ReadXdrIter::<_, Frame<TransactionHistoryResultEntryExt>>::new(
59959 &mut r.inner,
59960 r.limits.clone(),
59961 )
59962 .map(|r| r.map(|t| Self::TransactionHistoryResultEntryExt(Box::new(t.0)))),
59963 ),
59964 TypeVariant::LedgerHeaderHistoryEntry => Box::new(
59965 ReadXdrIter::<_, Frame<LedgerHeaderHistoryEntry>>::new(
59966 &mut r.inner,
59967 r.limits.clone(),
59968 )
59969 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntry(Box::new(t.0)))),
59970 ),
59971 TypeVariant::LedgerHeaderHistoryEntryExt => Box::new(
59972 ReadXdrIter::<_, Frame<LedgerHeaderHistoryEntryExt>>::new(
59973 &mut r.inner,
59974 r.limits.clone(),
59975 )
59976 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntryExt(Box::new(t.0)))),
59977 ),
59978 TypeVariant::LedgerScpMessages => Box::new(
59979 ReadXdrIter::<_, Frame<LedgerScpMessages>>::new(&mut r.inner, r.limits.clone())
59980 .map(|r| r.map(|t| Self::LedgerScpMessages(Box::new(t.0)))),
59981 ),
59982 TypeVariant::ScpHistoryEntryV0 => Box::new(
59983 ReadXdrIter::<_, Frame<ScpHistoryEntryV0>>::new(&mut r.inner, r.limits.clone())
59984 .map(|r| r.map(|t| Self::ScpHistoryEntryV0(Box::new(t.0)))),
59985 ),
59986 TypeVariant::ScpHistoryEntry => Box::new(
59987 ReadXdrIter::<_, Frame<ScpHistoryEntry>>::new(&mut r.inner, r.limits.clone())
59988 .map(|r| r.map(|t| Self::ScpHistoryEntry(Box::new(t.0)))),
59989 ),
59990 TypeVariant::LedgerEntryChangeType => Box::new(
59991 ReadXdrIter::<_, Frame<LedgerEntryChangeType>>::new(&mut r.inner, r.limits.clone())
59992 .map(|r| r.map(|t| Self::LedgerEntryChangeType(Box::new(t.0)))),
59993 ),
59994 TypeVariant::LedgerEntryChange => Box::new(
59995 ReadXdrIter::<_, Frame<LedgerEntryChange>>::new(&mut r.inner, r.limits.clone())
59996 .map(|r| r.map(|t| Self::LedgerEntryChange(Box::new(t.0)))),
59997 ),
59998 TypeVariant::LedgerEntryChanges => Box::new(
59999 ReadXdrIter::<_, Frame<LedgerEntryChanges>>::new(&mut r.inner, r.limits.clone())
60000 .map(|r| r.map(|t| Self::LedgerEntryChanges(Box::new(t.0)))),
60001 ),
60002 TypeVariant::OperationMeta => Box::new(
60003 ReadXdrIter::<_, Frame<OperationMeta>>::new(&mut r.inner, r.limits.clone())
60004 .map(|r| r.map(|t| Self::OperationMeta(Box::new(t.0)))),
60005 ),
60006 TypeVariant::TransactionMetaV1 => Box::new(
60007 ReadXdrIter::<_, Frame<TransactionMetaV1>>::new(&mut r.inner, r.limits.clone())
60008 .map(|r| r.map(|t| Self::TransactionMetaV1(Box::new(t.0)))),
60009 ),
60010 TypeVariant::TransactionMetaV2 => Box::new(
60011 ReadXdrIter::<_, Frame<TransactionMetaV2>>::new(&mut r.inner, r.limits.clone())
60012 .map(|r| r.map(|t| Self::TransactionMetaV2(Box::new(t.0)))),
60013 ),
60014 TypeVariant::ContractEventType => Box::new(
60015 ReadXdrIter::<_, Frame<ContractEventType>>::new(&mut r.inner, r.limits.clone())
60016 .map(|r| r.map(|t| Self::ContractEventType(Box::new(t.0)))),
60017 ),
60018 TypeVariant::ContractEvent => Box::new(
60019 ReadXdrIter::<_, Frame<ContractEvent>>::new(&mut r.inner, r.limits.clone())
60020 .map(|r| r.map(|t| Self::ContractEvent(Box::new(t.0)))),
60021 ),
60022 TypeVariant::ContractEventBody => Box::new(
60023 ReadXdrIter::<_, Frame<ContractEventBody>>::new(&mut r.inner, r.limits.clone())
60024 .map(|r| r.map(|t| Self::ContractEventBody(Box::new(t.0)))),
60025 ),
60026 TypeVariant::ContractEventV0 => Box::new(
60027 ReadXdrIter::<_, Frame<ContractEventV0>>::new(&mut r.inner, r.limits.clone())
60028 .map(|r| r.map(|t| Self::ContractEventV0(Box::new(t.0)))),
60029 ),
60030 TypeVariant::DiagnosticEvent => Box::new(
60031 ReadXdrIter::<_, Frame<DiagnosticEvent>>::new(&mut r.inner, r.limits.clone())
60032 .map(|r| r.map(|t| Self::DiagnosticEvent(Box::new(t.0)))),
60033 ),
60034 TypeVariant::SorobanTransactionMetaExtV1 => Box::new(
60035 ReadXdrIter::<_, Frame<SorobanTransactionMetaExtV1>>::new(
60036 &mut r.inner,
60037 r.limits.clone(),
60038 )
60039 .map(|r| r.map(|t| Self::SorobanTransactionMetaExtV1(Box::new(t.0)))),
60040 ),
60041 TypeVariant::SorobanTransactionMetaExt => Box::new(
60042 ReadXdrIter::<_, Frame<SorobanTransactionMetaExt>>::new(
60043 &mut r.inner,
60044 r.limits.clone(),
60045 )
60046 .map(|r| r.map(|t| Self::SorobanTransactionMetaExt(Box::new(t.0)))),
60047 ),
60048 TypeVariant::SorobanTransactionMeta => Box::new(
60049 ReadXdrIter::<_, Frame<SorobanTransactionMeta>>::new(
60050 &mut r.inner,
60051 r.limits.clone(),
60052 )
60053 .map(|r| r.map(|t| Self::SorobanTransactionMeta(Box::new(t.0)))),
60054 ),
60055 TypeVariant::TransactionMetaV3 => Box::new(
60056 ReadXdrIter::<_, Frame<TransactionMetaV3>>::new(&mut r.inner, r.limits.clone())
60057 .map(|r| r.map(|t| Self::TransactionMetaV3(Box::new(t.0)))),
60058 ),
60059 TypeVariant::OperationMetaV2 => Box::new(
60060 ReadXdrIter::<_, Frame<OperationMetaV2>>::new(&mut r.inner, r.limits.clone())
60061 .map(|r| r.map(|t| Self::OperationMetaV2(Box::new(t.0)))),
60062 ),
60063 TypeVariant::SorobanTransactionMetaV2 => Box::new(
60064 ReadXdrIter::<_, Frame<SorobanTransactionMetaV2>>::new(
60065 &mut r.inner,
60066 r.limits.clone(),
60067 )
60068 .map(|r| r.map(|t| Self::SorobanTransactionMetaV2(Box::new(t.0)))),
60069 ),
60070 TypeVariant::TransactionEventStage => Box::new(
60071 ReadXdrIter::<_, Frame<TransactionEventStage>>::new(&mut r.inner, r.limits.clone())
60072 .map(|r| r.map(|t| Self::TransactionEventStage(Box::new(t.0)))),
60073 ),
60074 TypeVariant::TransactionEvent => Box::new(
60075 ReadXdrIter::<_, Frame<TransactionEvent>>::new(&mut r.inner, r.limits.clone())
60076 .map(|r| r.map(|t| Self::TransactionEvent(Box::new(t.0)))),
60077 ),
60078 TypeVariant::TransactionMetaV4 => Box::new(
60079 ReadXdrIter::<_, Frame<TransactionMetaV4>>::new(&mut r.inner, r.limits.clone())
60080 .map(|r| r.map(|t| Self::TransactionMetaV4(Box::new(t.0)))),
60081 ),
60082 TypeVariant::InvokeHostFunctionSuccessPreImage => Box::new(
60083 ReadXdrIter::<_, Frame<InvokeHostFunctionSuccessPreImage>>::new(
60084 &mut r.inner,
60085 r.limits.clone(),
60086 )
60087 .map(|r| r.map(|t| Self::InvokeHostFunctionSuccessPreImage(Box::new(t.0)))),
60088 ),
60089 TypeVariant::TransactionMeta => Box::new(
60090 ReadXdrIter::<_, Frame<TransactionMeta>>::new(&mut r.inner, r.limits.clone())
60091 .map(|r| r.map(|t| Self::TransactionMeta(Box::new(t.0)))),
60092 ),
60093 TypeVariant::TransactionResultMeta => Box::new(
60094 ReadXdrIter::<_, Frame<TransactionResultMeta>>::new(&mut r.inner, r.limits.clone())
60095 .map(|r| r.map(|t| Self::TransactionResultMeta(Box::new(t.0)))),
60096 ),
60097 TypeVariant::TransactionResultMetaV1 => Box::new(
60098 ReadXdrIter::<_, Frame<TransactionResultMetaV1>>::new(
60099 &mut r.inner,
60100 r.limits.clone(),
60101 )
60102 .map(|r| r.map(|t| Self::TransactionResultMetaV1(Box::new(t.0)))),
60103 ),
60104 TypeVariant::UpgradeEntryMeta => Box::new(
60105 ReadXdrIter::<_, Frame<UpgradeEntryMeta>>::new(&mut r.inner, r.limits.clone())
60106 .map(|r| r.map(|t| Self::UpgradeEntryMeta(Box::new(t.0)))),
60107 ),
60108 TypeVariant::LedgerCloseMetaV0 => Box::new(
60109 ReadXdrIter::<_, Frame<LedgerCloseMetaV0>>::new(&mut r.inner, r.limits.clone())
60110 .map(|r| r.map(|t| Self::LedgerCloseMetaV0(Box::new(t.0)))),
60111 ),
60112 TypeVariant::LedgerCloseMetaExtV1 => Box::new(
60113 ReadXdrIter::<_, Frame<LedgerCloseMetaExtV1>>::new(&mut r.inner, r.limits.clone())
60114 .map(|r| r.map(|t| Self::LedgerCloseMetaExtV1(Box::new(t.0)))),
60115 ),
60116 TypeVariant::LedgerCloseMetaExt => Box::new(
60117 ReadXdrIter::<_, Frame<LedgerCloseMetaExt>>::new(&mut r.inner, r.limits.clone())
60118 .map(|r| r.map(|t| Self::LedgerCloseMetaExt(Box::new(t.0)))),
60119 ),
60120 TypeVariant::LedgerCloseMetaV1 => Box::new(
60121 ReadXdrIter::<_, Frame<LedgerCloseMetaV1>>::new(&mut r.inner, r.limits.clone())
60122 .map(|r| r.map(|t| Self::LedgerCloseMetaV1(Box::new(t.0)))),
60123 ),
60124 TypeVariant::LedgerCloseMetaV2 => Box::new(
60125 ReadXdrIter::<_, Frame<LedgerCloseMetaV2>>::new(&mut r.inner, r.limits.clone())
60126 .map(|r| r.map(|t| Self::LedgerCloseMetaV2(Box::new(t.0)))),
60127 ),
60128 TypeVariant::LedgerCloseMeta => Box::new(
60129 ReadXdrIter::<_, Frame<LedgerCloseMeta>>::new(&mut r.inner, r.limits.clone())
60130 .map(|r| r.map(|t| Self::LedgerCloseMeta(Box::new(t.0)))),
60131 ),
60132 TypeVariant::ErrorCode => Box::new(
60133 ReadXdrIter::<_, Frame<ErrorCode>>::new(&mut r.inner, r.limits.clone())
60134 .map(|r| r.map(|t| Self::ErrorCode(Box::new(t.0)))),
60135 ),
60136 TypeVariant::SError => Box::new(
60137 ReadXdrIter::<_, Frame<SError>>::new(&mut r.inner, r.limits.clone())
60138 .map(|r| r.map(|t| Self::SError(Box::new(t.0)))),
60139 ),
60140 TypeVariant::SendMore => Box::new(
60141 ReadXdrIter::<_, Frame<SendMore>>::new(&mut r.inner, r.limits.clone())
60142 .map(|r| r.map(|t| Self::SendMore(Box::new(t.0)))),
60143 ),
60144 TypeVariant::SendMoreExtended => Box::new(
60145 ReadXdrIter::<_, Frame<SendMoreExtended>>::new(&mut r.inner, r.limits.clone())
60146 .map(|r| r.map(|t| Self::SendMoreExtended(Box::new(t.0)))),
60147 ),
60148 TypeVariant::AuthCert => Box::new(
60149 ReadXdrIter::<_, Frame<AuthCert>>::new(&mut r.inner, r.limits.clone())
60150 .map(|r| r.map(|t| Self::AuthCert(Box::new(t.0)))),
60151 ),
60152 TypeVariant::Hello => Box::new(
60153 ReadXdrIter::<_, Frame<Hello>>::new(&mut r.inner, r.limits.clone())
60154 .map(|r| r.map(|t| Self::Hello(Box::new(t.0)))),
60155 ),
60156 TypeVariant::Auth => Box::new(
60157 ReadXdrIter::<_, Frame<Auth>>::new(&mut r.inner, r.limits.clone())
60158 .map(|r| r.map(|t| Self::Auth(Box::new(t.0)))),
60159 ),
60160 TypeVariant::IpAddrType => Box::new(
60161 ReadXdrIter::<_, Frame<IpAddrType>>::new(&mut r.inner, r.limits.clone())
60162 .map(|r| r.map(|t| Self::IpAddrType(Box::new(t.0)))),
60163 ),
60164 TypeVariant::PeerAddress => Box::new(
60165 ReadXdrIter::<_, Frame<PeerAddress>>::new(&mut r.inner, r.limits.clone())
60166 .map(|r| r.map(|t| Self::PeerAddress(Box::new(t.0)))),
60167 ),
60168 TypeVariant::PeerAddressIp => Box::new(
60169 ReadXdrIter::<_, Frame<PeerAddressIp>>::new(&mut r.inner, r.limits.clone())
60170 .map(|r| r.map(|t| Self::PeerAddressIp(Box::new(t.0)))),
60171 ),
60172 TypeVariant::MessageType => Box::new(
60173 ReadXdrIter::<_, Frame<MessageType>>::new(&mut r.inner, r.limits.clone())
60174 .map(|r| r.map(|t| Self::MessageType(Box::new(t.0)))),
60175 ),
60176 TypeVariant::DontHave => Box::new(
60177 ReadXdrIter::<_, Frame<DontHave>>::new(&mut r.inner, r.limits.clone())
60178 .map(|r| r.map(|t| Self::DontHave(Box::new(t.0)))),
60179 ),
60180 TypeVariant::SurveyMessageCommandType => Box::new(
60181 ReadXdrIter::<_, Frame<SurveyMessageCommandType>>::new(
60182 &mut r.inner,
60183 r.limits.clone(),
60184 )
60185 .map(|r| r.map(|t| Self::SurveyMessageCommandType(Box::new(t.0)))),
60186 ),
60187 TypeVariant::SurveyMessageResponseType => Box::new(
60188 ReadXdrIter::<_, Frame<SurveyMessageResponseType>>::new(
60189 &mut r.inner,
60190 r.limits.clone(),
60191 )
60192 .map(|r| r.map(|t| Self::SurveyMessageResponseType(Box::new(t.0)))),
60193 ),
60194 TypeVariant::TimeSlicedSurveyStartCollectingMessage => Box::new(
60195 ReadXdrIter::<_, Frame<TimeSlicedSurveyStartCollectingMessage>>::new(
60196 &mut r.inner,
60197 r.limits.clone(),
60198 )
60199 .map(|r| r.map(|t| Self::TimeSlicedSurveyStartCollectingMessage(Box::new(t.0)))),
60200 ),
60201 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => Box::new(
60202 ReadXdrIter::<_, Frame<SignedTimeSlicedSurveyStartCollectingMessage>>::new(
60203 &mut r.inner,
60204 r.limits.clone(),
60205 )
60206 .map(|r| {
60207 r.map(|t| Self::SignedTimeSlicedSurveyStartCollectingMessage(Box::new(t.0)))
60208 }),
60209 ),
60210 TypeVariant::TimeSlicedSurveyStopCollectingMessage => Box::new(
60211 ReadXdrIter::<_, Frame<TimeSlicedSurveyStopCollectingMessage>>::new(
60212 &mut r.inner,
60213 r.limits.clone(),
60214 )
60215 .map(|r| r.map(|t| Self::TimeSlicedSurveyStopCollectingMessage(Box::new(t.0)))),
60216 ),
60217 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => Box::new(
60218 ReadXdrIter::<_, Frame<SignedTimeSlicedSurveyStopCollectingMessage>>::new(
60219 &mut r.inner,
60220 r.limits.clone(),
60221 )
60222 .map(|r| {
60223 r.map(|t| Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(t.0)))
60224 }),
60225 ),
60226 TypeVariant::SurveyRequestMessage => Box::new(
60227 ReadXdrIter::<_, Frame<SurveyRequestMessage>>::new(&mut r.inner, r.limits.clone())
60228 .map(|r| r.map(|t| Self::SurveyRequestMessage(Box::new(t.0)))),
60229 ),
60230 TypeVariant::TimeSlicedSurveyRequestMessage => Box::new(
60231 ReadXdrIter::<_, Frame<TimeSlicedSurveyRequestMessage>>::new(
60232 &mut r.inner,
60233 r.limits.clone(),
60234 )
60235 .map(|r| r.map(|t| Self::TimeSlicedSurveyRequestMessage(Box::new(t.0)))),
60236 ),
60237 TypeVariant::SignedTimeSlicedSurveyRequestMessage => Box::new(
60238 ReadXdrIter::<_, Frame<SignedTimeSlicedSurveyRequestMessage>>::new(
60239 &mut r.inner,
60240 r.limits.clone(),
60241 )
60242 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyRequestMessage(Box::new(t.0)))),
60243 ),
60244 TypeVariant::EncryptedBody => Box::new(
60245 ReadXdrIter::<_, Frame<EncryptedBody>>::new(&mut r.inner, r.limits.clone())
60246 .map(|r| r.map(|t| Self::EncryptedBody(Box::new(t.0)))),
60247 ),
60248 TypeVariant::SurveyResponseMessage => Box::new(
60249 ReadXdrIter::<_, Frame<SurveyResponseMessage>>::new(&mut r.inner, r.limits.clone())
60250 .map(|r| r.map(|t| Self::SurveyResponseMessage(Box::new(t.0)))),
60251 ),
60252 TypeVariant::TimeSlicedSurveyResponseMessage => Box::new(
60253 ReadXdrIter::<_, Frame<TimeSlicedSurveyResponseMessage>>::new(
60254 &mut r.inner,
60255 r.limits.clone(),
60256 )
60257 .map(|r| r.map(|t| Self::TimeSlicedSurveyResponseMessage(Box::new(t.0)))),
60258 ),
60259 TypeVariant::SignedTimeSlicedSurveyResponseMessage => Box::new(
60260 ReadXdrIter::<_, Frame<SignedTimeSlicedSurveyResponseMessage>>::new(
60261 &mut r.inner,
60262 r.limits.clone(),
60263 )
60264 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyResponseMessage(Box::new(t.0)))),
60265 ),
60266 TypeVariant::PeerStats => Box::new(
60267 ReadXdrIter::<_, Frame<PeerStats>>::new(&mut r.inner, r.limits.clone())
60268 .map(|r| r.map(|t| Self::PeerStats(Box::new(t.0)))),
60269 ),
60270 TypeVariant::TimeSlicedNodeData => Box::new(
60271 ReadXdrIter::<_, Frame<TimeSlicedNodeData>>::new(&mut r.inner, r.limits.clone())
60272 .map(|r| r.map(|t| Self::TimeSlicedNodeData(Box::new(t.0)))),
60273 ),
60274 TypeVariant::TimeSlicedPeerData => Box::new(
60275 ReadXdrIter::<_, Frame<TimeSlicedPeerData>>::new(&mut r.inner, r.limits.clone())
60276 .map(|r| r.map(|t| Self::TimeSlicedPeerData(Box::new(t.0)))),
60277 ),
60278 TypeVariant::TimeSlicedPeerDataList => Box::new(
60279 ReadXdrIter::<_, Frame<TimeSlicedPeerDataList>>::new(
60280 &mut r.inner,
60281 r.limits.clone(),
60282 )
60283 .map(|r| r.map(|t| Self::TimeSlicedPeerDataList(Box::new(t.0)))),
60284 ),
60285 TypeVariant::TopologyResponseBodyV2 => Box::new(
60286 ReadXdrIter::<_, Frame<TopologyResponseBodyV2>>::new(
60287 &mut r.inner,
60288 r.limits.clone(),
60289 )
60290 .map(|r| r.map(|t| Self::TopologyResponseBodyV2(Box::new(t.0)))),
60291 ),
60292 TypeVariant::SurveyResponseBody => Box::new(
60293 ReadXdrIter::<_, Frame<SurveyResponseBody>>::new(&mut r.inner, r.limits.clone())
60294 .map(|r| r.map(|t| Self::SurveyResponseBody(Box::new(t.0)))),
60295 ),
60296 TypeVariant::TxAdvertVector => Box::new(
60297 ReadXdrIter::<_, Frame<TxAdvertVector>>::new(&mut r.inner, r.limits.clone())
60298 .map(|r| r.map(|t| Self::TxAdvertVector(Box::new(t.0)))),
60299 ),
60300 TypeVariant::FloodAdvert => Box::new(
60301 ReadXdrIter::<_, Frame<FloodAdvert>>::new(&mut r.inner, r.limits.clone())
60302 .map(|r| r.map(|t| Self::FloodAdvert(Box::new(t.0)))),
60303 ),
60304 TypeVariant::TxDemandVector => Box::new(
60305 ReadXdrIter::<_, Frame<TxDemandVector>>::new(&mut r.inner, r.limits.clone())
60306 .map(|r| r.map(|t| Self::TxDemandVector(Box::new(t.0)))),
60307 ),
60308 TypeVariant::FloodDemand => Box::new(
60309 ReadXdrIter::<_, Frame<FloodDemand>>::new(&mut r.inner, r.limits.clone())
60310 .map(|r| r.map(|t| Self::FloodDemand(Box::new(t.0)))),
60311 ),
60312 TypeVariant::StellarMessage => Box::new(
60313 ReadXdrIter::<_, Frame<StellarMessage>>::new(&mut r.inner, r.limits.clone())
60314 .map(|r| r.map(|t| Self::StellarMessage(Box::new(t.0)))),
60315 ),
60316 TypeVariant::AuthenticatedMessage => Box::new(
60317 ReadXdrIter::<_, Frame<AuthenticatedMessage>>::new(&mut r.inner, r.limits.clone())
60318 .map(|r| r.map(|t| Self::AuthenticatedMessage(Box::new(t.0)))),
60319 ),
60320 TypeVariant::AuthenticatedMessageV0 => Box::new(
60321 ReadXdrIter::<_, Frame<AuthenticatedMessageV0>>::new(
60322 &mut r.inner,
60323 r.limits.clone(),
60324 )
60325 .map(|r| r.map(|t| Self::AuthenticatedMessageV0(Box::new(t.0)))),
60326 ),
60327 TypeVariant::LiquidityPoolParameters => Box::new(
60328 ReadXdrIter::<_, Frame<LiquidityPoolParameters>>::new(
60329 &mut r.inner,
60330 r.limits.clone(),
60331 )
60332 .map(|r| r.map(|t| Self::LiquidityPoolParameters(Box::new(t.0)))),
60333 ),
60334 TypeVariant::MuxedAccount => Box::new(
60335 ReadXdrIter::<_, Frame<MuxedAccount>>::new(&mut r.inner, r.limits.clone())
60336 .map(|r| r.map(|t| Self::MuxedAccount(Box::new(t.0)))),
60337 ),
60338 TypeVariant::MuxedAccountMed25519 => Box::new(
60339 ReadXdrIter::<_, Frame<MuxedAccountMed25519>>::new(&mut r.inner, r.limits.clone())
60340 .map(|r| r.map(|t| Self::MuxedAccountMed25519(Box::new(t.0)))),
60341 ),
60342 TypeVariant::DecoratedSignature => Box::new(
60343 ReadXdrIter::<_, Frame<DecoratedSignature>>::new(&mut r.inner, r.limits.clone())
60344 .map(|r| r.map(|t| Self::DecoratedSignature(Box::new(t.0)))),
60345 ),
60346 TypeVariant::OperationType => Box::new(
60347 ReadXdrIter::<_, Frame<OperationType>>::new(&mut r.inner, r.limits.clone())
60348 .map(|r| r.map(|t| Self::OperationType(Box::new(t.0)))),
60349 ),
60350 TypeVariant::CreateAccountOp => Box::new(
60351 ReadXdrIter::<_, Frame<CreateAccountOp>>::new(&mut r.inner, r.limits.clone())
60352 .map(|r| r.map(|t| Self::CreateAccountOp(Box::new(t.0)))),
60353 ),
60354 TypeVariant::PaymentOp => Box::new(
60355 ReadXdrIter::<_, Frame<PaymentOp>>::new(&mut r.inner, r.limits.clone())
60356 .map(|r| r.map(|t| Self::PaymentOp(Box::new(t.0)))),
60357 ),
60358 TypeVariant::PathPaymentStrictReceiveOp => Box::new(
60359 ReadXdrIter::<_, Frame<PathPaymentStrictReceiveOp>>::new(
60360 &mut r.inner,
60361 r.limits.clone(),
60362 )
60363 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveOp(Box::new(t.0)))),
60364 ),
60365 TypeVariant::PathPaymentStrictSendOp => Box::new(
60366 ReadXdrIter::<_, Frame<PathPaymentStrictSendOp>>::new(
60367 &mut r.inner,
60368 r.limits.clone(),
60369 )
60370 .map(|r| r.map(|t| Self::PathPaymentStrictSendOp(Box::new(t.0)))),
60371 ),
60372 TypeVariant::ManageSellOfferOp => Box::new(
60373 ReadXdrIter::<_, Frame<ManageSellOfferOp>>::new(&mut r.inner, r.limits.clone())
60374 .map(|r| r.map(|t| Self::ManageSellOfferOp(Box::new(t.0)))),
60375 ),
60376 TypeVariant::ManageBuyOfferOp => Box::new(
60377 ReadXdrIter::<_, Frame<ManageBuyOfferOp>>::new(&mut r.inner, r.limits.clone())
60378 .map(|r| r.map(|t| Self::ManageBuyOfferOp(Box::new(t.0)))),
60379 ),
60380 TypeVariant::CreatePassiveSellOfferOp => Box::new(
60381 ReadXdrIter::<_, Frame<CreatePassiveSellOfferOp>>::new(
60382 &mut r.inner,
60383 r.limits.clone(),
60384 )
60385 .map(|r| r.map(|t| Self::CreatePassiveSellOfferOp(Box::new(t.0)))),
60386 ),
60387 TypeVariant::SetOptionsOp => Box::new(
60388 ReadXdrIter::<_, Frame<SetOptionsOp>>::new(&mut r.inner, r.limits.clone())
60389 .map(|r| r.map(|t| Self::SetOptionsOp(Box::new(t.0)))),
60390 ),
60391 TypeVariant::ChangeTrustAsset => Box::new(
60392 ReadXdrIter::<_, Frame<ChangeTrustAsset>>::new(&mut r.inner, r.limits.clone())
60393 .map(|r| r.map(|t| Self::ChangeTrustAsset(Box::new(t.0)))),
60394 ),
60395 TypeVariant::ChangeTrustOp => Box::new(
60396 ReadXdrIter::<_, Frame<ChangeTrustOp>>::new(&mut r.inner, r.limits.clone())
60397 .map(|r| r.map(|t| Self::ChangeTrustOp(Box::new(t.0)))),
60398 ),
60399 TypeVariant::AllowTrustOp => Box::new(
60400 ReadXdrIter::<_, Frame<AllowTrustOp>>::new(&mut r.inner, r.limits.clone())
60401 .map(|r| r.map(|t| Self::AllowTrustOp(Box::new(t.0)))),
60402 ),
60403 TypeVariant::ManageDataOp => Box::new(
60404 ReadXdrIter::<_, Frame<ManageDataOp>>::new(&mut r.inner, r.limits.clone())
60405 .map(|r| r.map(|t| Self::ManageDataOp(Box::new(t.0)))),
60406 ),
60407 TypeVariant::BumpSequenceOp => Box::new(
60408 ReadXdrIter::<_, Frame<BumpSequenceOp>>::new(&mut r.inner, r.limits.clone())
60409 .map(|r| r.map(|t| Self::BumpSequenceOp(Box::new(t.0)))),
60410 ),
60411 TypeVariant::CreateClaimableBalanceOp => Box::new(
60412 ReadXdrIter::<_, Frame<CreateClaimableBalanceOp>>::new(
60413 &mut r.inner,
60414 r.limits.clone(),
60415 )
60416 .map(|r| r.map(|t| Self::CreateClaimableBalanceOp(Box::new(t.0)))),
60417 ),
60418 TypeVariant::ClaimClaimableBalanceOp => Box::new(
60419 ReadXdrIter::<_, Frame<ClaimClaimableBalanceOp>>::new(
60420 &mut r.inner,
60421 r.limits.clone(),
60422 )
60423 .map(|r| r.map(|t| Self::ClaimClaimableBalanceOp(Box::new(t.0)))),
60424 ),
60425 TypeVariant::BeginSponsoringFutureReservesOp => Box::new(
60426 ReadXdrIter::<_, Frame<BeginSponsoringFutureReservesOp>>::new(
60427 &mut r.inner,
60428 r.limits.clone(),
60429 )
60430 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesOp(Box::new(t.0)))),
60431 ),
60432 TypeVariant::RevokeSponsorshipType => Box::new(
60433 ReadXdrIter::<_, Frame<RevokeSponsorshipType>>::new(&mut r.inner, r.limits.clone())
60434 .map(|r| r.map(|t| Self::RevokeSponsorshipType(Box::new(t.0)))),
60435 ),
60436 TypeVariant::RevokeSponsorshipOp => Box::new(
60437 ReadXdrIter::<_, Frame<RevokeSponsorshipOp>>::new(&mut r.inner, r.limits.clone())
60438 .map(|r| r.map(|t| Self::RevokeSponsorshipOp(Box::new(t.0)))),
60439 ),
60440 TypeVariant::RevokeSponsorshipOpSigner => Box::new(
60441 ReadXdrIter::<_, Frame<RevokeSponsorshipOpSigner>>::new(
60442 &mut r.inner,
60443 r.limits.clone(),
60444 )
60445 .map(|r| r.map(|t| Self::RevokeSponsorshipOpSigner(Box::new(t.0)))),
60446 ),
60447 TypeVariant::ClawbackOp => Box::new(
60448 ReadXdrIter::<_, Frame<ClawbackOp>>::new(&mut r.inner, r.limits.clone())
60449 .map(|r| r.map(|t| Self::ClawbackOp(Box::new(t.0)))),
60450 ),
60451 TypeVariant::ClawbackClaimableBalanceOp => Box::new(
60452 ReadXdrIter::<_, Frame<ClawbackClaimableBalanceOp>>::new(
60453 &mut r.inner,
60454 r.limits.clone(),
60455 )
60456 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceOp(Box::new(t.0)))),
60457 ),
60458 TypeVariant::SetTrustLineFlagsOp => Box::new(
60459 ReadXdrIter::<_, Frame<SetTrustLineFlagsOp>>::new(&mut r.inner, r.limits.clone())
60460 .map(|r| r.map(|t| Self::SetTrustLineFlagsOp(Box::new(t.0)))),
60461 ),
60462 TypeVariant::LiquidityPoolDepositOp => Box::new(
60463 ReadXdrIter::<_, Frame<LiquidityPoolDepositOp>>::new(
60464 &mut r.inner,
60465 r.limits.clone(),
60466 )
60467 .map(|r| r.map(|t| Self::LiquidityPoolDepositOp(Box::new(t.0)))),
60468 ),
60469 TypeVariant::LiquidityPoolWithdrawOp => Box::new(
60470 ReadXdrIter::<_, Frame<LiquidityPoolWithdrawOp>>::new(
60471 &mut r.inner,
60472 r.limits.clone(),
60473 )
60474 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawOp(Box::new(t.0)))),
60475 ),
60476 TypeVariant::HostFunctionType => Box::new(
60477 ReadXdrIter::<_, Frame<HostFunctionType>>::new(&mut r.inner, r.limits.clone())
60478 .map(|r| r.map(|t| Self::HostFunctionType(Box::new(t.0)))),
60479 ),
60480 TypeVariant::ContractIdPreimageType => Box::new(
60481 ReadXdrIter::<_, Frame<ContractIdPreimageType>>::new(
60482 &mut r.inner,
60483 r.limits.clone(),
60484 )
60485 .map(|r| r.map(|t| Self::ContractIdPreimageType(Box::new(t.0)))),
60486 ),
60487 TypeVariant::ContractIdPreimage => Box::new(
60488 ReadXdrIter::<_, Frame<ContractIdPreimage>>::new(&mut r.inner, r.limits.clone())
60489 .map(|r| r.map(|t| Self::ContractIdPreimage(Box::new(t.0)))),
60490 ),
60491 TypeVariant::ContractIdPreimageFromAddress => Box::new(
60492 ReadXdrIter::<_, Frame<ContractIdPreimageFromAddress>>::new(
60493 &mut r.inner,
60494 r.limits.clone(),
60495 )
60496 .map(|r| r.map(|t| Self::ContractIdPreimageFromAddress(Box::new(t.0)))),
60497 ),
60498 TypeVariant::CreateContractArgs => Box::new(
60499 ReadXdrIter::<_, Frame<CreateContractArgs>>::new(&mut r.inner, r.limits.clone())
60500 .map(|r| r.map(|t| Self::CreateContractArgs(Box::new(t.0)))),
60501 ),
60502 TypeVariant::CreateContractArgsV2 => Box::new(
60503 ReadXdrIter::<_, Frame<CreateContractArgsV2>>::new(&mut r.inner, r.limits.clone())
60504 .map(|r| r.map(|t| Self::CreateContractArgsV2(Box::new(t.0)))),
60505 ),
60506 TypeVariant::InvokeContractArgs => Box::new(
60507 ReadXdrIter::<_, Frame<InvokeContractArgs>>::new(&mut r.inner, r.limits.clone())
60508 .map(|r| r.map(|t| Self::InvokeContractArgs(Box::new(t.0)))),
60509 ),
60510 TypeVariant::HostFunction => Box::new(
60511 ReadXdrIter::<_, Frame<HostFunction>>::new(&mut r.inner, r.limits.clone())
60512 .map(|r| r.map(|t| Self::HostFunction(Box::new(t.0)))),
60513 ),
60514 TypeVariant::SorobanAuthorizedFunctionType => Box::new(
60515 ReadXdrIter::<_, Frame<SorobanAuthorizedFunctionType>>::new(
60516 &mut r.inner,
60517 r.limits.clone(),
60518 )
60519 .map(|r| r.map(|t| Self::SorobanAuthorizedFunctionType(Box::new(t.0)))),
60520 ),
60521 TypeVariant::SorobanAuthorizedFunction => Box::new(
60522 ReadXdrIter::<_, Frame<SorobanAuthorizedFunction>>::new(
60523 &mut r.inner,
60524 r.limits.clone(),
60525 )
60526 .map(|r| r.map(|t| Self::SorobanAuthorizedFunction(Box::new(t.0)))),
60527 ),
60528 TypeVariant::SorobanAuthorizedInvocation => Box::new(
60529 ReadXdrIter::<_, Frame<SorobanAuthorizedInvocation>>::new(
60530 &mut r.inner,
60531 r.limits.clone(),
60532 )
60533 .map(|r| r.map(|t| Self::SorobanAuthorizedInvocation(Box::new(t.0)))),
60534 ),
60535 TypeVariant::SorobanAddressCredentials => Box::new(
60536 ReadXdrIter::<_, Frame<SorobanAddressCredentials>>::new(
60537 &mut r.inner,
60538 r.limits.clone(),
60539 )
60540 .map(|r| r.map(|t| Self::SorobanAddressCredentials(Box::new(t.0)))),
60541 ),
60542 TypeVariant::SorobanCredentialsType => Box::new(
60543 ReadXdrIter::<_, Frame<SorobanCredentialsType>>::new(
60544 &mut r.inner,
60545 r.limits.clone(),
60546 )
60547 .map(|r| r.map(|t| Self::SorobanCredentialsType(Box::new(t.0)))),
60548 ),
60549 TypeVariant::SorobanCredentials => Box::new(
60550 ReadXdrIter::<_, Frame<SorobanCredentials>>::new(&mut r.inner, r.limits.clone())
60551 .map(|r| r.map(|t| Self::SorobanCredentials(Box::new(t.0)))),
60552 ),
60553 TypeVariant::SorobanAuthorizationEntry => Box::new(
60554 ReadXdrIter::<_, Frame<SorobanAuthorizationEntry>>::new(
60555 &mut r.inner,
60556 r.limits.clone(),
60557 )
60558 .map(|r| r.map(|t| Self::SorobanAuthorizationEntry(Box::new(t.0)))),
60559 ),
60560 TypeVariant::SorobanAuthorizationEntries => Box::new(
60561 ReadXdrIter::<_, Frame<SorobanAuthorizationEntries>>::new(
60562 &mut r.inner,
60563 r.limits.clone(),
60564 )
60565 .map(|r| r.map(|t| Self::SorobanAuthorizationEntries(Box::new(t.0)))),
60566 ),
60567 TypeVariant::InvokeHostFunctionOp => Box::new(
60568 ReadXdrIter::<_, Frame<InvokeHostFunctionOp>>::new(&mut r.inner, r.limits.clone())
60569 .map(|r| r.map(|t| Self::InvokeHostFunctionOp(Box::new(t.0)))),
60570 ),
60571 TypeVariant::ExtendFootprintTtlOp => Box::new(
60572 ReadXdrIter::<_, Frame<ExtendFootprintTtlOp>>::new(&mut r.inner, r.limits.clone())
60573 .map(|r| r.map(|t| Self::ExtendFootprintTtlOp(Box::new(t.0)))),
60574 ),
60575 TypeVariant::RestoreFootprintOp => Box::new(
60576 ReadXdrIter::<_, Frame<RestoreFootprintOp>>::new(&mut r.inner, r.limits.clone())
60577 .map(|r| r.map(|t| Self::RestoreFootprintOp(Box::new(t.0)))),
60578 ),
60579 TypeVariant::Operation => Box::new(
60580 ReadXdrIter::<_, Frame<Operation>>::new(&mut r.inner, r.limits.clone())
60581 .map(|r| r.map(|t| Self::Operation(Box::new(t.0)))),
60582 ),
60583 TypeVariant::OperationBody => Box::new(
60584 ReadXdrIter::<_, Frame<OperationBody>>::new(&mut r.inner, r.limits.clone())
60585 .map(|r| r.map(|t| Self::OperationBody(Box::new(t.0)))),
60586 ),
60587 TypeVariant::HashIdPreimage => Box::new(
60588 ReadXdrIter::<_, Frame<HashIdPreimage>>::new(&mut r.inner, r.limits.clone())
60589 .map(|r| r.map(|t| Self::HashIdPreimage(Box::new(t.0)))),
60590 ),
60591 TypeVariant::HashIdPreimageOperationId => Box::new(
60592 ReadXdrIter::<_, Frame<HashIdPreimageOperationId>>::new(
60593 &mut r.inner,
60594 r.limits.clone(),
60595 )
60596 .map(|r| r.map(|t| Self::HashIdPreimageOperationId(Box::new(t.0)))),
60597 ),
60598 TypeVariant::HashIdPreimageRevokeId => Box::new(
60599 ReadXdrIter::<_, Frame<HashIdPreimageRevokeId>>::new(
60600 &mut r.inner,
60601 r.limits.clone(),
60602 )
60603 .map(|r| r.map(|t| Self::HashIdPreimageRevokeId(Box::new(t.0)))),
60604 ),
60605 TypeVariant::HashIdPreimageContractId => Box::new(
60606 ReadXdrIter::<_, Frame<HashIdPreimageContractId>>::new(
60607 &mut r.inner,
60608 r.limits.clone(),
60609 )
60610 .map(|r| r.map(|t| Self::HashIdPreimageContractId(Box::new(t.0)))),
60611 ),
60612 TypeVariant::HashIdPreimageSorobanAuthorization => Box::new(
60613 ReadXdrIter::<_, Frame<HashIdPreimageSorobanAuthorization>>::new(
60614 &mut r.inner,
60615 r.limits.clone(),
60616 )
60617 .map(|r| r.map(|t| Self::HashIdPreimageSorobanAuthorization(Box::new(t.0)))),
60618 ),
60619 TypeVariant::MemoType => Box::new(
60620 ReadXdrIter::<_, Frame<MemoType>>::new(&mut r.inner, r.limits.clone())
60621 .map(|r| r.map(|t| Self::MemoType(Box::new(t.0)))),
60622 ),
60623 TypeVariant::Memo => Box::new(
60624 ReadXdrIter::<_, Frame<Memo>>::new(&mut r.inner, r.limits.clone())
60625 .map(|r| r.map(|t| Self::Memo(Box::new(t.0)))),
60626 ),
60627 TypeVariant::TimeBounds => Box::new(
60628 ReadXdrIter::<_, Frame<TimeBounds>>::new(&mut r.inner, r.limits.clone())
60629 .map(|r| r.map(|t| Self::TimeBounds(Box::new(t.0)))),
60630 ),
60631 TypeVariant::LedgerBounds => Box::new(
60632 ReadXdrIter::<_, Frame<LedgerBounds>>::new(&mut r.inner, r.limits.clone())
60633 .map(|r| r.map(|t| Self::LedgerBounds(Box::new(t.0)))),
60634 ),
60635 TypeVariant::PreconditionsV2 => Box::new(
60636 ReadXdrIter::<_, Frame<PreconditionsV2>>::new(&mut r.inner, r.limits.clone())
60637 .map(|r| r.map(|t| Self::PreconditionsV2(Box::new(t.0)))),
60638 ),
60639 TypeVariant::PreconditionType => Box::new(
60640 ReadXdrIter::<_, Frame<PreconditionType>>::new(&mut r.inner, r.limits.clone())
60641 .map(|r| r.map(|t| Self::PreconditionType(Box::new(t.0)))),
60642 ),
60643 TypeVariant::Preconditions => Box::new(
60644 ReadXdrIter::<_, Frame<Preconditions>>::new(&mut r.inner, r.limits.clone())
60645 .map(|r| r.map(|t| Self::Preconditions(Box::new(t.0)))),
60646 ),
60647 TypeVariant::LedgerFootprint => Box::new(
60648 ReadXdrIter::<_, Frame<LedgerFootprint>>::new(&mut r.inner, r.limits.clone())
60649 .map(|r| r.map(|t| Self::LedgerFootprint(Box::new(t.0)))),
60650 ),
60651 TypeVariant::SorobanResources => Box::new(
60652 ReadXdrIter::<_, Frame<SorobanResources>>::new(&mut r.inner, r.limits.clone())
60653 .map(|r| r.map(|t| Self::SorobanResources(Box::new(t.0)))),
60654 ),
60655 TypeVariant::SorobanResourcesExtV0 => Box::new(
60656 ReadXdrIter::<_, Frame<SorobanResourcesExtV0>>::new(&mut r.inner, r.limits.clone())
60657 .map(|r| r.map(|t| Self::SorobanResourcesExtV0(Box::new(t.0)))),
60658 ),
60659 TypeVariant::SorobanTransactionData => Box::new(
60660 ReadXdrIter::<_, Frame<SorobanTransactionData>>::new(
60661 &mut r.inner,
60662 r.limits.clone(),
60663 )
60664 .map(|r| r.map(|t| Self::SorobanTransactionData(Box::new(t.0)))),
60665 ),
60666 TypeVariant::SorobanTransactionDataExt => Box::new(
60667 ReadXdrIter::<_, Frame<SorobanTransactionDataExt>>::new(
60668 &mut r.inner,
60669 r.limits.clone(),
60670 )
60671 .map(|r| r.map(|t| Self::SorobanTransactionDataExt(Box::new(t.0)))),
60672 ),
60673 TypeVariant::TransactionV0 => Box::new(
60674 ReadXdrIter::<_, Frame<TransactionV0>>::new(&mut r.inner, r.limits.clone())
60675 .map(|r| r.map(|t| Self::TransactionV0(Box::new(t.0)))),
60676 ),
60677 TypeVariant::TransactionV0Ext => Box::new(
60678 ReadXdrIter::<_, Frame<TransactionV0Ext>>::new(&mut r.inner, r.limits.clone())
60679 .map(|r| r.map(|t| Self::TransactionV0Ext(Box::new(t.0)))),
60680 ),
60681 TypeVariant::TransactionV0Envelope => Box::new(
60682 ReadXdrIter::<_, Frame<TransactionV0Envelope>>::new(&mut r.inner, r.limits.clone())
60683 .map(|r| r.map(|t| Self::TransactionV0Envelope(Box::new(t.0)))),
60684 ),
60685 TypeVariant::Transaction => Box::new(
60686 ReadXdrIter::<_, Frame<Transaction>>::new(&mut r.inner, r.limits.clone())
60687 .map(|r| r.map(|t| Self::Transaction(Box::new(t.0)))),
60688 ),
60689 TypeVariant::TransactionExt => Box::new(
60690 ReadXdrIter::<_, Frame<TransactionExt>>::new(&mut r.inner, r.limits.clone())
60691 .map(|r| r.map(|t| Self::TransactionExt(Box::new(t.0)))),
60692 ),
60693 TypeVariant::TransactionV1Envelope => Box::new(
60694 ReadXdrIter::<_, Frame<TransactionV1Envelope>>::new(&mut r.inner, r.limits.clone())
60695 .map(|r| r.map(|t| Self::TransactionV1Envelope(Box::new(t.0)))),
60696 ),
60697 TypeVariant::FeeBumpTransaction => Box::new(
60698 ReadXdrIter::<_, Frame<FeeBumpTransaction>>::new(&mut r.inner, r.limits.clone())
60699 .map(|r| r.map(|t| Self::FeeBumpTransaction(Box::new(t.0)))),
60700 ),
60701 TypeVariant::FeeBumpTransactionInnerTx => Box::new(
60702 ReadXdrIter::<_, Frame<FeeBumpTransactionInnerTx>>::new(
60703 &mut r.inner,
60704 r.limits.clone(),
60705 )
60706 .map(|r| r.map(|t| Self::FeeBumpTransactionInnerTx(Box::new(t.0)))),
60707 ),
60708 TypeVariant::FeeBumpTransactionExt => Box::new(
60709 ReadXdrIter::<_, Frame<FeeBumpTransactionExt>>::new(&mut r.inner, r.limits.clone())
60710 .map(|r| r.map(|t| Self::FeeBumpTransactionExt(Box::new(t.0)))),
60711 ),
60712 TypeVariant::FeeBumpTransactionEnvelope => Box::new(
60713 ReadXdrIter::<_, Frame<FeeBumpTransactionEnvelope>>::new(
60714 &mut r.inner,
60715 r.limits.clone(),
60716 )
60717 .map(|r| r.map(|t| Self::FeeBumpTransactionEnvelope(Box::new(t.0)))),
60718 ),
60719 TypeVariant::TransactionEnvelope => Box::new(
60720 ReadXdrIter::<_, Frame<TransactionEnvelope>>::new(&mut r.inner, r.limits.clone())
60721 .map(|r| r.map(|t| Self::TransactionEnvelope(Box::new(t.0)))),
60722 ),
60723 TypeVariant::TransactionSignaturePayload => Box::new(
60724 ReadXdrIter::<_, Frame<TransactionSignaturePayload>>::new(
60725 &mut r.inner,
60726 r.limits.clone(),
60727 )
60728 .map(|r| r.map(|t| Self::TransactionSignaturePayload(Box::new(t.0)))),
60729 ),
60730 TypeVariant::TransactionSignaturePayloadTaggedTransaction => Box::new(
60731 ReadXdrIter::<_, Frame<TransactionSignaturePayloadTaggedTransaction>>::new(
60732 &mut r.inner,
60733 r.limits.clone(),
60734 )
60735 .map(|r| {
60736 r.map(|t| Self::TransactionSignaturePayloadTaggedTransaction(Box::new(t.0)))
60737 }),
60738 ),
60739 TypeVariant::ClaimAtomType => Box::new(
60740 ReadXdrIter::<_, Frame<ClaimAtomType>>::new(&mut r.inner, r.limits.clone())
60741 .map(|r| r.map(|t| Self::ClaimAtomType(Box::new(t.0)))),
60742 ),
60743 TypeVariant::ClaimOfferAtomV0 => Box::new(
60744 ReadXdrIter::<_, Frame<ClaimOfferAtomV0>>::new(&mut r.inner, r.limits.clone())
60745 .map(|r| r.map(|t| Self::ClaimOfferAtomV0(Box::new(t.0)))),
60746 ),
60747 TypeVariant::ClaimOfferAtom => Box::new(
60748 ReadXdrIter::<_, Frame<ClaimOfferAtom>>::new(&mut r.inner, r.limits.clone())
60749 .map(|r| r.map(|t| Self::ClaimOfferAtom(Box::new(t.0)))),
60750 ),
60751 TypeVariant::ClaimLiquidityAtom => Box::new(
60752 ReadXdrIter::<_, Frame<ClaimLiquidityAtom>>::new(&mut r.inner, r.limits.clone())
60753 .map(|r| r.map(|t| Self::ClaimLiquidityAtom(Box::new(t.0)))),
60754 ),
60755 TypeVariant::ClaimAtom => Box::new(
60756 ReadXdrIter::<_, Frame<ClaimAtom>>::new(&mut r.inner, r.limits.clone())
60757 .map(|r| r.map(|t| Self::ClaimAtom(Box::new(t.0)))),
60758 ),
60759 TypeVariant::CreateAccountResultCode => Box::new(
60760 ReadXdrIter::<_, Frame<CreateAccountResultCode>>::new(
60761 &mut r.inner,
60762 r.limits.clone(),
60763 )
60764 .map(|r| r.map(|t| Self::CreateAccountResultCode(Box::new(t.0)))),
60765 ),
60766 TypeVariant::CreateAccountResult => Box::new(
60767 ReadXdrIter::<_, Frame<CreateAccountResult>>::new(&mut r.inner, r.limits.clone())
60768 .map(|r| r.map(|t| Self::CreateAccountResult(Box::new(t.0)))),
60769 ),
60770 TypeVariant::PaymentResultCode => Box::new(
60771 ReadXdrIter::<_, Frame<PaymentResultCode>>::new(&mut r.inner, r.limits.clone())
60772 .map(|r| r.map(|t| Self::PaymentResultCode(Box::new(t.0)))),
60773 ),
60774 TypeVariant::PaymentResult => Box::new(
60775 ReadXdrIter::<_, Frame<PaymentResult>>::new(&mut r.inner, r.limits.clone())
60776 .map(|r| r.map(|t| Self::PaymentResult(Box::new(t.0)))),
60777 ),
60778 TypeVariant::PathPaymentStrictReceiveResultCode => Box::new(
60779 ReadXdrIter::<_, Frame<PathPaymentStrictReceiveResultCode>>::new(
60780 &mut r.inner,
60781 r.limits.clone(),
60782 )
60783 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultCode(Box::new(t.0)))),
60784 ),
60785 TypeVariant::SimplePaymentResult => Box::new(
60786 ReadXdrIter::<_, Frame<SimplePaymentResult>>::new(&mut r.inner, r.limits.clone())
60787 .map(|r| r.map(|t| Self::SimplePaymentResult(Box::new(t.0)))),
60788 ),
60789 TypeVariant::PathPaymentStrictReceiveResult => Box::new(
60790 ReadXdrIter::<_, Frame<PathPaymentStrictReceiveResult>>::new(
60791 &mut r.inner,
60792 r.limits.clone(),
60793 )
60794 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResult(Box::new(t.0)))),
60795 ),
60796 TypeVariant::PathPaymentStrictReceiveResultSuccess => Box::new(
60797 ReadXdrIter::<_, Frame<PathPaymentStrictReceiveResultSuccess>>::new(
60798 &mut r.inner,
60799 r.limits.clone(),
60800 )
60801 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultSuccess(Box::new(t.0)))),
60802 ),
60803 TypeVariant::PathPaymentStrictSendResultCode => Box::new(
60804 ReadXdrIter::<_, Frame<PathPaymentStrictSendResultCode>>::new(
60805 &mut r.inner,
60806 r.limits.clone(),
60807 )
60808 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultCode(Box::new(t.0)))),
60809 ),
60810 TypeVariant::PathPaymentStrictSendResult => Box::new(
60811 ReadXdrIter::<_, Frame<PathPaymentStrictSendResult>>::new(
60812 &mut r.inner,
60813 r.limits.clone(),
60814 )
60815 .map(|r| r.map(|t| Self::PathPaymentStrictSendResult(Box::new(t.0)))),
60816 ),
60817 TypeVariant::PathPaymentStrictSendResultSuccess => Box::new(
60818 ReadXdrIter::<_, Frame<PathPaymentStrictSendResultSuccess>>::new(
60819 &mut r.inner,
60820 r.limits.clone(),
60821 )
60822 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultSuccess(Box::new(t.0)))),
60823 ),
60824 TypeVariant::ManageSellOfferResultCode => Box::new(
60825 ReadXdrIter::<_, Frame<ManageSellOfferResultCode>>::new(
60826 &mut r.inner,
60827 r.limits.clone(),
60828 )
60829 .map(|r| r.map(|t| Self::ManageSellOfferResultCode(Box::new(t.0)))),
60830 ),
60831 TypeVariant::ManageOfferEffect => Box::new(
60832 ReadXdrIter::<_, Frame<ManageOfferEffect>>::new(&mut r.inner, r.limits.clone())
60833 .map(|r| r.map(|t| Self::ManageOfferEffect(Box::new(t.0)))),
60834 ),
60835 TypeVariant::ManageOfferSuccessResult => Box::new(
60836 ReadXdrIter::<_, Frame<ManageOfferSuccessResult>>::new(
60837 &mut r.inner,
60838 r.limits.clone(),
60839 )
60840 .map(|r| r.map(|t| Self::ManageOfferSuccessResult(Box::new(t.0)))),
60841 ),
60842 TypeVariant::ManageOfferSuccessResultOffer => Box::new(
60843 ReadXdrIter::<_, Frame<ManageOfferSuccessResultOffer>>::new(
60844 &mut r.inner,
60845 r.limits.clone(),
60846 )
60847 .map(|r| r.map(|t| Self::ManageOfferSuccessResultOffer(Box::new(t.0)))),
60848 ),
60849 TypeVariant::ManageSellOfferResult => Box::new(
60850 ReadXdrIter::<_, Frame<ManageSellOfferResult>>::new(&mut r.inner, r.limits.clone())
60851 .map(|r| r.map(|t| Self::ManageSellOfferResult(Box::new(t.0)))),
60852 ),
60853 TypeVariant::ManageBuyOfferResultCode => Box::new(
60854 ReadXdrIter::<_, Frame<ManageBuyOfferResultCode>>::new(
60855 &mut r.inner,
60856 r.limits.clone(),
60857 )
60858 .map(|r| r.map(|t| Self::ManageBuyOfferResultCode(Box::new(t.0)))),
60859 ),
60860 TypeVariant::ManageBuyOfferResult => Box::new(
60861 ReadXdrIter::<_, Frame<ManageBuyOfferResult>>::new(&mut r.inner, r.limits.clone())
60862 .map(|r| r.map(|t| Self::ManageBuyOfferResult(Box::new(t.0)))),
60863 ),
60864 TypeVariant::SetOptionsResultCode => Box::new(
60865 ReadXdrIter::<_, Frame<SetOptionsResultCode>>::new(&mut r.inner, r.limits.clone())
60866 .map(|r| r.map(|t| Self::SetOptionsResultCode(Box::new(t.0)))),
60867 ),
60868 TypeVariant::SetOptionsResult => Box::new(
60869 ReadXdrIter::<_, Frame<SetOptionsResult>>::new(&mut r.inner, r.limits.clone())
60870 .map(|r| r.map(|t| Self::SetOptionsResult(Box::new(t.0)))),
60871 ),
60872 TypeVariant::ChangeTrustResultCode => Box::new(
60873 ReadXdrIter::<_, Frame<ChangeTrustResultCode>>::new(&mut r.inner, r.limits.clone())
60874 .map(|r| r.map(|t| Self::ChangeTrustResultCode(Box::new(t.0)))),
60875 ),
60876 TypeVariant::ChangeTrustResult => Box::new(
60877 ReadXdrIter::<_, Frame<ChangeTrustResult>>::new(&mut r.inner, r.limits.clone())
60878 .map(|r| r.map(|t| Self::ChangeTrustResult(Box::new(t.0)))),
60879 ),
60880 TypeVariant::AllowTrustResultCode => Box::new(
60881 ReadXdrIter::<_, Frame<AllowTrustResultCode>>::new(&mut r.inner, r.limits.clone())
60882 .map(|r| r.map(|t| Self::AllowTrustResultCode(Box::new(t.0)))),
60883 ),
60884 TypeVariant::AllowTrustResult => Box::new(
60885 ReadXdrIter::<_, Frame<AllowTrustResult>>::new(&mut r.inner, r.limits.clone())
60886 .map(|r| r.map(|t| Self::AllowTrustResult(Box::new(t.0)))),
60887 ),
60888 TypeVariant::AccountMergeResultCode => Box::new(
60889 ReadXdrIter::<_, Frame<AccountMergeResultCode>>::new(
60890 &mut r.inner,
60891 r.limits.clone(),
60892 )
60893 .map(|r| r.map(|t| Self::AccountMergeResultCode(Box::new(t.0)))),
60894 ),
60895 TypeVariant::AccountMergeResult => Box::new(
60896 ReadXdrIter::<_, Frame<AccountMergeResult>>::new(&mut r.inner, r.limits.clone())
60897 .map(|r| r.map(|t| Self::AccountMergeResult(Box::new(t.0)))),
60898 ),
60899 TypeVariant::InflationResultCode => Box::new(
60900 ReadXdrIter::<_, Frame<InflationResultCode>>::new(&mut r.inner, r.limits.clone())
60901 .map(|r| r.map(|t| Self::InflationResultCode(Box::new(t.0)))),
60902 ),
60903 TypeVariant::InflationPayout => Box::new(
60904 ReadXdrIter::<_, Frame<InflationPayout>>::new(&mut r.inner, r.limits.clone())
60905 .map(|r| r.map(|t| Self::InflationPayout(Box::new(t.0)))),
60906 ),
60907 TypeVariant::InflationResult => Box::new(
60908 ReadXdrIter::<_, Frame<InflationResult>>::new(&mut r.inner, r.limits.clone())
60909 .map(|r| r.map(|t| Self::InflationResult(Box::new(t.0)))),
60910 ),
60911 TypeVariant::ManageDataResultCode => Box::new(
60912 ReadXdrIter::<_, Frame<ManageDataResultCode>>::new(&mut r.inner, r.limits.clone())
60913 .map(|r| r.map(|t| Self::ManageDataResultCode(Box::new(t.0)))),
60914 ),
60915 TypeVariant::ManageDataResult => Box::new(
60916 ReadXdrIter::<_, Frame<ManageDataResult>>::new(&mut r.inner, r.limits.clone())
60917 .map(|r| r.map(|t| Self::ManageDataResult(Box::new(t.0)))),
60918 ),
60919 TypeVariant::BumpSequenceResultCode => Box::new(
60920 ReadXdrIter::<_, Frame<BumpSequenceResultCode>>::new(
60921 &mut r.inner,
60922 r.limits.clone(),
60923 )
60924 .map(|r| r.map(|t| Self::BumpSequenceResultCode(Box::new(t.0)))),
60925 ),
60926 TypeVariant::BumpSequenceResult => Box::new(
60927 ReadXdrIter::<_, Frame<BumpSequenceResult>>::new(&mut r.inner, r.limits.clone())
60928 .map(|r| r.map(|t| Self::BumpSequenceResult(Box::new(t.0)))),
60929 ),
60930 TypeVariant::CreateClaimableBalanceResultCode => Box::new(
60931 ReadXdrIter::<_, Frame<CreateClaimableBalanceResultCode>>::new(
60932 &mut r.inner,
60933 r.limits.clone(),
60934 )
60935 .map(|r| r.map(|t| Self::CreateClaimableBalanceResultCode(Box::new(t.0)))),
60936 ),
60937 TypeVariant::CreateClaimableBalanceResult => Box::new(
60938 ReadXdrIter::<_, Frame<CreateClaimableBalanceResult>>::new(
60939 &mut r.inner,
60940 r.limits.clone(),
60941 )
60942 .map(|r| r.map(|t| Self::CreateClaimableBalanceResult(Box::new(t.0)))),
60943 ),
60944 TypeVariant::ClaimClaimableBalanceResultCode => Box::new(
60945 ReadXdrIter::<_, Frame<ClaimClaimableBalanceResultCode>>::new(
60946 &mut r.inner,
60947 r.limits.clone(),
60948 )
60949 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResultCode(Box::new(t.0)))),
60950 ),
60951 TypeVariant::ClaimClaimableBalanceResult => Box::new(
60952 ReadXdrIter::<_, Frame<ClaimClaimableBalanceResult>>::new(
60953 &mut r.inner,
60954 r.limits.clone(),
60955 )
60956 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResult(Box::new(t.0)))),
60957 ),
60958 TypeVariant::BeginSponsoringFutureReservesResultCode => Box::new(
60959 ReadXdrIter::<_, Frame<BeginSponsoringFutureReservesResultCode>>::new(
60960 &mut r.inner,
60961 r.limits.clone(),
60962 )
60963 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResultCode(Box::new(t.0)))),
60964 ),
60965 TypeVariant::BeginSponsoringFutureReservesResult => Box::new(
60966 ReadXdrIter::<_, Frame<BeginSponsoringFutureReservesResult>>::new(
60967 &mut r.inner,
60968 r.limits.clone(),
60969 )
60970 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResult(Box::new(t.0)))),
60971 ),
60972 TypeVariant::EndSponsoringFutureReservesResultCode => Box::new(
60973 ReadXdrIter::<_, Frame<EndSponsoringFutureReservesResultCode>>::new(
60974 &mut r.inner,
60975 r.limits.clone(),
60976 )
60977 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResultCode(Box::new(t.0)))),
60978 ),
60979 TypeVariant::EndSponsoringFutureReservesResult => Box::new(
60980 ReadXdrIter::<_, Frame<EndSponsoringFutureReservesResult>>::new(
60981 &mut r.inner,
60982 r.limits.clone(),
60983 )
60984 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResult(Box::new(t.0)))),
60985 ),
60986 TypeVariant::RevokeSponsorshipResultCode => Box::new(
60987 ReadXdrIter::<_, Frame<RevokeSponsorshipResultCode>>::new(
60988 &mut r.inner,
60989 r.limits.clone(),
60990 )
60991 .map(|r| r.map(|t| Self::RevokeSponsorshipResultCode(Box::new(t.0)))),
60992 ),
60993 TypeVariant::RevokeSponsorshipResult => Box::new(
60994 ReadXdrIter::<_, Frame<RevokeSponsorshipResult>>::new(
60995 &mut r.inner,
60996 r.limits.clone(),
60997 )
60998 .map(|r| r.map(|t| Self::RevokeSponsorshipResult(Box::new(t.0)))),
60999 ),
61000 TypeVariant::ClawbackResultCode => Box::new(
61001 ReadXdrIter::<_, Frame<ClawbackResultCode>>::new(&mut r.inner, r.limits.clone())
61002 .map(|r| r.map(|t| Self::ClawbackResultCode(Box::new(t.0)))),
61003 ),
61004 TypeVariant::ClawbackResult => Box::new(
61005 ReadXdrIter::<_, Frame<ClawbackResult>>::new(&mut r.inner, r.limits.clone())
61006 .map(|r| r.map(|t| Self::ClawbackResult(Box::new(t.0)))),
61007 ),
61008 TypeVariant::ClawbackClaimableBalanceResultCode => Box::new(
61009 ReadXdrIter::<_, Frame<ClawbackClaimableBalanceResultCode>>::new(
61010 &mut r.inner,
61011 r.limits.clone(),
61012 )
61013 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResultCode(Box::new(t.0)))),
61014 ),
61015 TypeVariant::ClawbackClaimableBalanceResult => Box::new(
61016 ReadXdrIter::<_, Frame<ClawbackClaimableBalanceResult>>::new(
61017 &mut r.inner,
61018 r.limits.clone(),
61019 )
61020 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResult(Box::new(t.0)))),
61021 ),
61022 TypeVariant::SetTrustLineFlagsResultCode => Box::new(
61023 ReadXdrIter::<_, Frame<SetTrustLineFlagsResultCode>>::new(
61024 &mut r.inner,
61025 r.limits.clone(),
61026 )
61027 .map(|r| r.map(|t| Self::SetTrustLineFlagsResultCode(Box::new(t.0)))),
61028 ),
61029 TypeVariant::SetTrustLineFlagsResult => Box::new(
61030 ReadXdrIter::<_, Frame<SetTrustLineFlagsResult>>::new(
61031 &mut r.inner,
61032 r.limits.clone(),
61033 )
61034 .map(|r| r.map(|t| Self::SetTrustLineFlagsResult(Box::new(t.0)))),
61035 ),
61036 TypeVariant::LiquidityPoolDepositResultCode => Box::new(
61037 ReadXdrIter::<_, Frame<LiquidityPoolDepositResultCode>>::new(
61038 &mut r.inner,
61039 r.limits.clone(),
61040 )
61041 .map(|r| r.map(|t| Self::LiquidityPoolDepositResultCode(Box::new(t.0)))),
61042 ),
61043 TypeVariant::LiquidityPoolDepositResult => Box::new(
61044 ReadXdrIter::<_, Frame<LiquidityPoolDepositResult>>::new(
61045 &mut r.inner,
61046 r.limits.clone(),
61047 )
61048 .map(|r| r.map(|t| Self::LiquidityPoolDepositResult(Box::new(t.0)))),
61049 ),
61050 TypeVariant::LiquidityPoolWithdrawResultCode => Box::new(
61051 ReadXdrIter::<_, Frame<LiquidityPoolWithdrawResultCode>>::new(
61052 &mut r.inner,
61053 r.limits.clone(),
61054 )
61055 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResultCode(Box::new(t.0)))),
61056 ),
61057 TypeVariant::LiquidityPoolWithdrawResult => Box::new(
61058 ReadXdrIter::<_, Frame<LiquidityPoolWithdrawResult>>::new(
61059 &mut r.inner,
61060 r.limits.clone(),
61061 )
61062 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResult(Box::new(t.0)))),
61063 ),
61064 TypeVariant::InvokeHostFunctionResultCode => Box::new(
61065 ReadXdrIter::<_, Frame<InvokeHostFunctionResultCode>>::new(
61066 &mut r.inner,
61067 r.limits.clone(),
61068 )
61069 .map(|r| r.map(|t| Self::InvokeHostFunctionResultCode(Box::new(t.0)))),
61070 ),
61071 TypeVariant::InvokeHostFunctionResult => Box::new(
61072 ReadXdrIter::<_, Frame<InvokeHostFunctionResult>>::new(
61073 &mut r.inner,
61074 r.limits.clone(),
61075 )
61076 .map(|r| r.map(|t| Self::InvokeHostFunctionResult(Box::new(t.0)))),
61077 ),
61078 TypeVariant::ExtendFootprintTtlResultCode => Box::new(
61079 ReadXdrIter::<_, Frame<ExtendFootprintTtlResultCode>>::new(
61080 &mut r.inner,
61081 r.limits.clone(),
61082 )
61083 .map(|r| r.map(|t| Self::ExtendFootprintTtlResultCode(Box::new(t.0)))),
61084 ),
61085 TypeVariant::ExtendFootprintTtlResult => Box::new(
61086 ReadXdrIter::<_, Frame<ExtendFootprintTtlResult>>::new(
61087 &mut r.inner,
61088 r.limits.clone(),
61089 )
61090 .map(|r| r.map(|t| Self::ExtendFootprintTtlResult(Box::new(t.0)))),
61091 ),
61092 TypeVariant::RestoreFootprintResultCode => Box::new(
61093 ReadXdrIter::<_, Frame<RestoreFootprintResultCode>>::new(
61094 &mut r.inner,
61095 r.limits.clone(),
61096 )
61097 .map(|r| r.map(|t| Self::RestoreFootprintResultCode(Box::new(t.0)))),
61098 ),
61099 TypeVariant::RestoreFootprintResult => Box::new(
61100 ReadXdrIter::<_, Frame<RestoreFootprintResult>>::new(
61101 &mut r.inner,
61102 r.limits.clone(),
61103 )
61104 .map(|r| r.map(|t| Self::RestoreFootprintResult(Box::new(t.0)))),
61105 ),
61106 TypeVariant::OperationResultCode => Box::new(
61107 ReadXdrIter::<_, Frame<OperationResultCode>>::new(&mut r.inner, r.limits.clone())
61108 .map(|r| r.map(|t| Self::OperationResultCode(Box::new(t.0)))),
61109 ),
61110 TypeVariant::OperationResult => Box::new(
61111 ReadXdrIter::<_, Frame<OperationResult>>::new(&mut r.inner, r.limits.clone())
61112 .map(|r| r.map(|t| Self::OperationResult(Box::new(t.0)))),
61113 ),
61114 TypeVariant::OperationResultTr => Box::new(
61115 ReadXdrIter::<_, Frame<OperationResultTr>>::new(&mut r.inner, r.limits.clone())
61116 .map(|r| r.map(|t| Self::OperationResultTr(Box::new(t.0)))),
61117 ),
61118 TypeVariant::TransactionResultCode => Box::new(
61119 ReadXdrIter::<_, Frame<TransactionResultCode>>::new(&mut r.inner, r.limits.clone())
61120 .map(|r| r.map(|t| Self::TransactionResultCode(Box::new(t.0)))),
61121 ),
61122 TypeVariant::InnerTransactionResult => Box::new(
61123 ReadXdrIter::<_, Frame<InnerTransactionResult>>::new(
61124 &mut r.inner,
61125 r.limits.clone(),
61126 )
61127 .map(|r| r.map(|t| Self::InnerTransactionResult(Box::new(t.0)))),
61128 ),
61129 TypeVariant::InnerTransactionResultResult => Box::new(
61130 ReadXdrIter::<_, Frame<InnerTransactionResultResult>>::new(
61131 &mut r.inner,
61132 r.limits.clone(),
61133 )
61134 .map(|r| r.map(|t| Self::InnerTransactionResultResult(Box::new(t.0)))),
61135 ),
61136 TypeVariant::InnerTransactionResultExt => Box::new(
61137 ReadXdrIter::<_, Frame<InnerTransactionResultExt>>::new(
61138 &mut r.inner,
61139 r.limits.clone(),
61140 )
61141 .map(|r| r.map(|t| Self::InnerTransactionResultExt(Box::new(t.0)))),
61142 ),
61143 TypeVariant::InnerTransactionResultPair => Box::new(
61144 ReadXdrIter::<_, Frame<InnerTransactionResultPair>>::new(
61145 &mut r.inner,
61146 r.limits.clone(),
61147 )
61148 .map(|r| r.map(|t| Self::InnerTransactionResultPair(Box::new(t.0)))),
61149 ),
61150 TypeVariant::TransactionResult => Box::new(
61151 ReadXdrIter::<_, Frame<TransactionResult>>::new(&mut r.inner, r.limits.clone())
61152 .map(|r| r.map(|t| Self::TransactionResult(Box::new(t.0)))),
61153 ),
61154 TypeVariant::TransactionResultResult => Box::new(
61155 ReadXdrIter::<_, Frame<TransactionResultResult>>::new(
61156 &mut r.inner,
61157 r.limits.clone(),
61158 )
61159 .map(|r| r.map(|t| Self::TransactionResultResult(Box::new(t.0)))),
61160 ),
61161 TypeVariant::TransactionResultExt => Box::new(
61162 ReadXdrIter::<_, Frame<TransactionResultExt>>::new(&mut r.inner, r.limits.clone())
61163 .map(|r| r.map(|t| Self::TransactionResultExt(Box::new(t.0)))),
61164 ),
61165 TypeVariant::Hash => Box::new(
61166 ReadXdrIter::<_, Frame<Hash>>::new(&mut r.inner, r.limits.clone())
61167 .map(|r| r.map(|t| Self::Hash(Box::new(t.0)))),
61168 ),
61169 TypeVariant::Uint256 => Box::new(
61170 ReadXdrIter::<_, Frame<Uint256>>::new(&mut r.inner, r.limits.clone())
61171 .map(|r| r.map(|t| Self::Uint256(Box::new(t.0)))),
61172 ),
61173 TypeVariant::Uint32 => Box::new(
61174 ReadXdrIter::<_, Frame<Uint32>>::new(&mut r.inner, r.limits.clone())
61175 .map(|r| r.map(|t| Self::Uint32(Box::new(t.0)))),
61176 ),
61177 TypeVariant::Int32 => Box::new(
61178 ReadXdrIter::<_, Frame<Int32>>::new(&mut r.inner, r.limits.clone())
61179 .map(|r| r.map(|t| Self::Int32(Box::new(t.0)))),
61180 ),
61181 TypeVariant::Uint64 => Box::new(
61182 ReadXdrIter::<_, Frame<Uint64>>::new(&mut r.inner, r.limits.clone())
61183 .map(|r| r.map(|t| Self::Uint64(Box::new(t.0)))),
61184 ),
61185 TypeVariant::Int64 => Box::new(
61186 ReadXdrIter::<_, Frame<Int64>>::new(&mut r.inner, r.limits.clone())
61187 .map(|r| r.map(|t| Self::Int64(Box::new(t.0)))),
61188 ),
61189 TypeVariant::TimePoint => Box::new(
61190 ReadXdrIter::<_, Frame<TimePoint>>::new(&mut r.inner, r.limits.clone())
61191 .map(|r| r.map(|t| Self::TimePoint(Box::new(t.0)))),
61192 ),
61193 TypeVariant::Duration => Box::new(
61194 ReadXdrIter::<_, Frame<Duration>>::new(&mut r.inner, r.limits.clone())
61195 .map(|r| r.map(|t| Self::Duration(Box::new(t.0)))),
61196 ),
61197 TypeVariant::ExtensionPoint => Box::new(
61198 ReadXdrIter::<_, Frame<ExtensionPoint>>::new(&mut r.inner, r.limits.clone())
61199 .map(|r| r.map(|t| Self::ExtensionPoint(Box::new(t.0)))),
61200 ),
61201 TypeVariant::CryptoKeyType => Box::new(
61202 ReadXdrIter::<_, Frame<CryptoKeyType>>::new(&mut r.inner, r.limits.clone())
61203 .map(|r| r.map(|t| Self::CryptoKeyType(Box::new(t.0)))),
61204 ),
61205 TypeVariant::PublicKeyType => Box::new(
61206 ReadXdrIter::<_, Frame<PublicKeyType>>::new(&mut r.inner, r.limits.clone())
61207 .map(|r| r.map(|t| Self::PublicKeyType(Box::new(t.0)))),
61208 ),
61209 TypeVariant::SignerKeyType => Box::new(
61210 ReadXdrIter::<_, Frame<SignerKeyType>>::new(&mut r.inner, r.limits.clone())
61211 .map(|r| r.map(|t| Self::SignerKeyType(Box::new(t.0)))),
61212 ),
61213 TypeVariant::PublicKey => Box::new(
61214 ReadXdrIter::<_, Frame<PublicKey>>::new(&mut r.inner, r.limits.clone())
61215 .map(|r| r.map(|t| Self::PublicKey(Box::new(t.0)))),
61216 ),
61217 TypeVariant::SignerKey => Box::new(
61218 ReadXdrIter::<_, Frame<SignerKey>>::new(&mut r.inner, r.limits.clone())
61219 .map(|r| r.map(|t| Self::SignerKey(Box::new(t.0)))),
61220 ),
61221 TypeVariant::SignerKeyEd25519SignedPayload => Box::new(
61222 ReadXdrIter::<_, Frame<SignerKeyEd25519SignedPayload>>::new(
61223 &mut r.inner,
61224 r.limits.clone(),
61225 )
61226 .map(|r| r.map(|t| Self::SignerKeyEd25519SignedPayload(Box::new(t.0)))),
61227 ),
61228 TypeVariant::Signature => Box::new(
61229 ReadXdrIter::<_, Frame<Signature>>::new(&mut r.inner, r.limits.clone())
61230 .map(|r| r.map(|t| Self::Signature(Box::new(t.0)))),
61231 ),
61232 TypeVariant::SignatureHint => Box::new(
61233 ReadXdrIter::<_, Frame<SignatureHint>>::new(&mut r.inner, r.limits.clone())
61234 .map(|r| r.map(|t| Self::SignatureHint(Box::new(t.0)))),
61235 ),
61236 TypeVariant::NodeId => Box::new(
61237 ReadXdrIter::<_, Frame<NodeId>>::new(&mut r.inner, r.limits.clone())
61238 .map(|r| r.map(|t| Self::NodeId(Box::new(t.0)))),
61239 ),
61240 TypeVariant::AccountId => Box::new(
61241 ReadXdrIter::<_, Frame<AccountId>>::new(&mut r.inner, r.limits.clone())
61242 .map(|r| r.map(|t| Self::AccountId(Box::new(t.0)))),
61243 ),
61244 TypeVariant::ContractId => Box::new(
61245 ReadXdrIter::<_, Frame<ContractId>>::new(&mut r.inner, r.limits.clone())
61246 .map(|r| r.map(|t| Self::ContractId(Box::new(t.0)))),
61247 ),
61248 TypeVariant::Curve25519Secret => Box::new(
61249 ReadXdrIter::<_, Frame<Curve25519Secret>>::new(&mut r.inner, r.limits.clone())
61250 .map(|r| r.map(|t| Self::Curve25519Secret(Box::new(t.0)))),
61251 ),
61252 TypeVariant::Curve25519Public => Box::new(
61253 ReadXdrIter::<_, Frame<Curve25519Public>>::new(&mut r.inner, r.limits.clone())
61254 .map(|r| r.map(|t| Self::Curve25519Public(Box::new(t.0)))),
61255 ),
61256 TypeVariant::HmacSha256Key => Box::new(
61257 ReadXdrIter::<_, Frame<HmacSha256Key>>::new(&mut r.inner, r.limits.clone())
61258 .map(|r| r.map(|t| Self::HmacSha256Key(Box::new(t.0)))),
61259 ),
61260 TypeVariant::HmacSha256Mac => Box::new(
61261 ReadXdrIter::<_, Frame<HmacSha256Mac>>::new(&mut r.inner, r.limits.clone())
61262 .map(|r| r.map(|t| Self::HmacSha256Mac(Box::new(t.0)))),
61263 ),
61264 TypeVariant::ShortHashSeed => Box::new(
61265 ReadXdrIter::<_, Frame<ShortHashSeed>>::new(&mut r.inner, r.limits.clone())
61266 .map(|r| r.map(|t| Self::ShortHashSeed(Box::new(t.0)))),
61267 ),
61268 TypeVariant::BinaryFuseFilterType => Box::new(
61269 ReadXdrIter::<_, Frame<BinaryFuseFilterType>>::new(&mut r.inner, r.limits.clone())
61270 .map(|r| r.map(|t| Self::BinaryFuseFilterType(Box::new(t.0)))),
61271 ),
61272 TypeVariant::SerializedBinaryFuseFilter => Box::new(
61273 ReadXdrIter::<_, Frame<SerializedBinaryFuseFilter>>::new(
61274 &mut r.inner,
61275 r.limits.clone(),
61276 )
61277 .map(|r| r.map(|t| Self::SerializedBinaryFuseFilter(Box::new(t.0)))),
61278 ),
61279 TypeVariant::PoolId => Box::new(
61280 ReadXdrIter::<_, Frame<PoolId>>::new(&mut r.inner, r.limits.clone())
61281 .map(|r| r.map(|t| Self::PoolId(Box::new(t.0)))),
61282 ),
61283 TypeVariant::ClaimableBalanceIdType => Box::new(
61284 ReadXdrIter::<_, Frame<ClaimableBalanceIdType>>::new(
61285 &mut r.inner,
61286 r.limits.clone(),
61287 )
61288 .map(|r| r.map(|t| Self::ClaimableBalanceIdType(Box::new(t.0)))),
61289 ),
61290 TypeVariant::ClaimableBalanceId => Box::new(
61291 ReadXdrIter::<_, Frame<ClaimableBalanceId>>::new(&mut r.inner, r.limits.clone())
61292 .map(|r| r.map(|t| Self::ClaimableBalanceId(Box::new(t.0)))),
61293 ),
61294 }
61295 }
61296
61297 #[cfg(feature = "base64")]
61298 #[allow(clippy::too_many_lines)]
61299 pub fn read_xdr_base64_iter<R: Read>(
61300 v: TypeVariant,
61301 r: &mut Limited<R>,
61302 ) -> Box<dyn Iterator<Item = Result<Self, Error>> + '_> {
61303 let dec = base64::read::DecoderReader::new(
61304 SkipWhitespace::new(&mut r.inner),
61305 &base64::engine::general_purpose::STANDARD,
61306 );
61307 match v {
61308 TypeVariant::Value => Box::new(
61309 ReadXdrIter::<_, Value>::new(dec, r.limits.clone())
61310 .map(|r| r.map(|t| Self::Value(Box::new(t)))),
61311 ),
61312 TypeVariant::ScpBallot => Box::new(
61313 ReadXdrIter::<_, ScpBallot>::new(dec, r.limits.clone())
61314 .map(|r| r.map(|t| Self::ScpBallot(Box::new(t)))),
61315 ),
61316 TypeVariant::ScpStatementType => Box::new(
61317 ReadXdrIter::<_, ScpStatementType>::new(dec, r.limits.clone())
61318 .map(|r| r.map(|t| Self::ScpStatementType(Box::new(t)))),
61319 ),
61320 TypeVariant::ScpNomination => Box::new(
61321 ReadXdrIter::<_, ScpNomination>::new(dec, r.limits.clone())
61322 .map(|r| r.map(|t| Self::ScpNomination(Box::new(t)))),
61323 ),
61324 TypeVariant::ScpStatement => Box::new(
61325 ReadXdrIter::<_, ScpStatement>::new(dec, r.limits.clone())
61326 .map(|r| r.map(|t| Self::ScpStatement(Box::new(t)))),
61327 ),
61328 TypeVariant::ScpStatementPledges => Box::new(
61329 ReadXdrIter::<_, ScpStatementPledges>::new(dec, r.limits.clone())
61330 .map(|r| r.map(|t| Self::ScpStatementPledges(Box::new(t)))),
61331 ),
61332 TypeVariant::ScpStatementPrepare => Box::new(
61333 ReadXdrIter::<_, ScpStatementPrepare>::new(dec, r.limits.clone())
61334 .map(|r| r.map(|t| Self::ScpStatementPrepare(Box::new(t)))),
61335 ),
61336 TypeVariant::ScpStatementConfirm => Box::new(
61337 ReadXdrIter::<_, ScpStatementConfirm>::new(dec, r.limits.clone())
61338 .map(|r| r.map(|t| Self::ScpStatementConfirm(Box::new(t)))),
61339 ),
61340 TypeVariant::ScpStatementExternalize => Box::new(
61341 ReadXdrIter::<_, ScpStatementExternalize>::new(dec, r.limits.clone())
61342 .map(|r| r.map(|t| Self::ScpStatementExternalize(Box::new(t)))),
61343 ),
61344 TypeVariant::ScpEnvelope => Box::new(
61345 ReadXdrIter::<_, ScpEnvelope>::new(dec, r.limits.clone())
61346 .map(|r| r.map(|t| Self::ScpEnvelope(Box::new(t)))),
61347 ),
61348 TypeVariant::ScpQuorumSet => Box::new(
61349 ReadXdrIter::<_, ScpQuorumSet>::new(dec, r.limits.clone())
61350 .map(|r| r.map(|t| Self::ScpQuorumSet(Box::new(t)))),
61351 ),
61352 TypeVariant::ConfigSettingContractExecutionLanesV0 => Box::new(
61353 ReadXdrIter::<_, ConfigSettingContractExecutionLanesV0>::new(dec, r.limits.clone())
61354 .map(|r| r.map(|t| Self::ConfigSettingContractExecutionLanesV0(Box::new(t)))),
61355 ),
61356 TypeVariant::ConfigSettingContractComputeV0 => Box::new(
61357 ReadXdrIter::<_, ConfigSettingContractComputeV0>::new(dec, r.limits.clone())
61358 .map(|r| r.map(|t| Self::ConfigSettingContractComputeV0(Box::new(t)))),
61359 ),
61360 TypeVariant::ConfigSettingContractParallelComputeV0 => Box::new(
61361 ReadXdrIter::<_, ConfigSettingContractParallelComputeV0>::new(
61362 dec,
61363 r.limits.clone(),
61364 )
61365 .map(|r| r.map(|t| Self::ConfigSettingContractParallelComputeV0(Box::new(t)))),
61366 ),
61367 TypeVariant::ConfigSettingContractLedgerCostV0 => Box::new(
61368 ReadXdrIter::<_, ConfigSettingContractLedgerCostV0>::new(dec, r.limits.clone())
61369 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostV0(Box::new(t)))),
61370 ),
61371 TypeVariant::ConfigSettingContractLedgerCostExtV0 => Box::new(
61372 ReadXdrIter::<_, ConfigSettingContractLedgerCostExtV0>::new(dec, r.limits.clone())
61373 .map(|r| r.map(|t| Self::ConfigSettingContractLedgerCostExtV0(Box::new(t)))),
61374 ),
61375 TypeVariant::ConfigSettingContractHistoricalDataV0 => Box::new(
61376 ReadXdrIter::<_, ConfigSettingContractHistoricalDataV0>::new(dec, r.limits.clone())
61377 .map(|r| r.map(|t| Self::ConfigSettingContractHistoricalDataV0(Box::new(t)))),
61378 ),
61379 TypeVariant::ConfigSettingContractEventsV0 => Box::new(
61380 ReadXdrIter::<_, ConfigSettingContractEventsV0>::new(dec, r.limits.clone())
61381 .map(|r| r.map(|t| Self::ConfigSettingContractEventsV0(Box::new(t)))),
61382 ),
61383 TypeVariant::ConfigSettingContractBandwidthV0 => Box::new(
61384 ReadXdrIter::<_, ConfigSettingContractBandwidthV0>::new(dec, r.limits.clone())
61385 .map(|r| r.map(|t| Self::ConfigSettingContractBandwidthV0(Box::new(t)))),
61386 ),
61387 TypeVariant::ContractCostType => Box::new(
61388 ReadXdrIter::<_, ContractCostType>::new(dec, r.limits.clone())
61389 .map(|r| r.map(|t| Self::ContractCostType(Box::new(t)))),
61390 ),
61391 TypeVariant::ContractCostParamEntry => Box::new(
61392 ReadXdrIter::<_, ContractCostParamEntry>::new(dec, r.limits.clone())
61393 .map(|r| r.map(|t| Self::ContractCostParamEntry(Box::new(t)))),
61394 ),
61395 TypeVariant::StateArchivalSettings => Box::new(
61396 ReadXdrIter::<_, StateArchivalSettings>::new(dec, r.limits.clone())
61397 .map(|r| r.map(|t| Self::StateArchivalSettings(Box::new(t)))),
61398 ),
61399 TypeVariant::EvictionIterator => Box::new(
61400 ReadXdrIter::<_, EvictionIterator>::new(dec, r.limits.clone())
61401 .map(|r| r.map(|t| Self::EvictionIterator(Box::new(t)))),
61402 ),
61403 TypeVariant::ConfigSettingScpTiming => Box::new(
61404 ReadXdrIter::<_, ConfigSettingScpTiming>::new(dec, r.limits.clone())
61405 .map(|r| r.map(|t| Self::ConfigSettingScpTiming(Box::new(t)))),
61406 ),
61407 TypeVariant::ContractCostParams => Box::new(
61408 ReadXdrIter::<_, ContractCostParams>::new(dec, r.limits.clone())
61409 .map(|r| r.map(|t| Self::ContractCostParams(Box::new(t)))),
61410 ),
61411 TypeVariant::ConfigSettingId => Box::new(
61412 ReadXdrIter::<_, ConfigSettingId>::new(dec, r.limits.clone())
61413 .map(|r| r.map(|t| Self::ConfigSettingId(Box::new(t)))),
61414 ),
61415 TypeVariant::ConfigSettingEntry => Box::new(
61416 ReadXdrIter::<_, ConfigSettingEntry>::new(dec, r.limits.clone())
61417 .map(|r| r.map(|t| Self::ConfigSettingEntry(Box::new(t)))),
61418 ),
61419 TypeVariant::ScEnvMetaKind => Box::new(
61420 ReadXdrIter::<_, ScEnvMetaKind>::new(dec, r.limits.clone())
61421 .map(|r| r.map(|t| Self::ScEnvMetaKind(Box::new(t)))),
61422 ),
61423 TypeVariant::ScEnvMetaEntry => Box::new(
61424 ReadXdrIter::<_, ScEnvMetaEntry>::new(dec, r.limits.clone())
61425 .map(|r| r.map(|t| Self::ScEnvMetaEntry(Box::new(t)))),
61426 ),
61427 TypeVariant::ScEnvMetaEntryInterfaceVersion => Box::new(
61428 ReadXdrIter::<_, ScEnvMetaEntryInterfaceVersion>::new(dec, r.limits.clone())
61429 .map(|r| r.map(|t| Self::ScEnvMetaEntryInterfaceVersion(Box::new(t)))),
61430 ),
61431 TypeVariant::ScMetaV0 => Box::new(
61432 ReadXdrIter::<_, ScMetaV0>::new(dec, r.limits.clone())
61433 .map(|r| r.map(|t| Self::ScMetaV0(Box::new(t)))),
61434 ),
61435 TypeVariant::ScMetaKind => Box::new(
61436 ReadXdrIter::<_, ScMetaKind>::new(dec, r.limits.clone())
61437 .map(|r| r.map(|t| Self::ScMetaKind(Box::new(t)))),
61438 ),
61439 TypeVariant::ScMetaEntry => Box::new(
61440 ReadXdrIter::<_, ScMetaEntry>::new(dec, r.limits.clone())
61441 .map(|r| r.map(|t| Self::ScMetaEntry(Box::new(t)))),
61442 ),
61443 TypeVariant::ScSpecType => Box::new(
61444 ReadXdrIter::<_, ScSpecType>::new(dec, r.limits.clone())
61445 .map(|r| r.map(|t| Self::ScSpecType(Box::new(t)))),
61446 ),
61447 TypeVariant::ScSpecTypeOption => Box::new(
61448 ReadXdrIter::<_, ScSpecTypeOption>::new(dec, r.limits.clone())
61449 .map(|r| r.map(|t| Self::ScSpecTypeOption(Box::new(t)))),
61450 ),
61451 TypeVariant::ScSpecTypeResult => Box::new(
61452 ReadXdrIter::<_, ScSpecTypeResult>::new(dec, r.limits.clone())
61453 .map(|r| r.map(|t| Self::ScSpecTypeResult(Box::new(t)))),
61454 ),
61455 TypeVariant::ScSpecTypeVec => Box::new(
61456 ReadXdrIter::<_, ScSpecTypeVec>::new(dec, r.limits.clone())
61457 .map(|r| r.map(|t| Self::ScSpecTypeVec(Box::new(t)))),
61458 ),
61459 TypeVariant::ScSpecTypeMap => Box::new(
61460 ReadXdrIter::<_, ScSpecTypeMap>::new(dec, r.limits.clone())
61461 .map(|r| r.map(|t| Self::ScSpecTypeMap(Box::new(t)))),
61462 ),
61463 TypeVariant::ScSpecTypeTuple => Box::new(
61464 ReadXdrIter::<_, ScSpecTypeTuple>::new(dec, r.limits.clone())
61465 .map(|r| r.map(|t| Self::ScSpecTypeTuple(Box::new(t)))),
61466 ),
61467 TypeVariant::ScSpecTypeBytesN => Box::new(
61468 ReadXdrIter::<_, ScSpecTypeBytesN>::new(dec, r.limits.clone())
61469 .map(|r| r.map(|t| Self::ScSpecTypeBytesN(Box::new(t)))),
61470 ),
61471 TypeVariant::ScSpecTypeUdt => Box::new(
61472 ReadXdrIter::<_, ScSpecTypeUdt>::new(dec, r.limits.clone())
61473 .map(|r| r.map(|t| Self::ScSpecTypeUdt(Box::new(t)))),
61474 ),
61475 TypeVariant::ScSpecTypeDef => Box::new(
61476 ReadXdrIter::<_, ScSpecTypeDef>::new(dec, r.limits.clone())
61477 .map(|r| r.map(|t| Self::ScSpecTypeDef(Box::new(t)))),
61478 ),
61479 TypeVariant::ScSpecUdtStructFieldV0 => Box::new(
61480 ReadXdrIter::<_, ScSpecUdtStructFieldV0>::new(dec, r.limits.clone())
61481 .map(|r| r.map(|t| Self::ScSpecUdtStructFieldV0(Box::new(t)))),
61482 ),
61483 TypeVariant::ScSpecUdtStructV0 => Box::new(
61484 ReadXdrIter::<_, ScSpecUdtStructV0>::new(dec, r.limits.clone())
61485 .map(|r| r.map(|t| Self::ScSpecUdtStructV0(Box::new(t)))),
61486 ),
61487 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Box::new(
61488 ReadXdrIter::<_, ScSpecUdtUnionCaseVoidV0>::new(dec, r.limits.clone())
61489 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseVoidV0(Box::new(t)))),
61490 ),
61491 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Box::new(
61492 ReadXdrIter::<_, ScSpecUdtUnionCaseTupleV0>::new(dec, r.limits.clone())
61493 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseTupleV0(Box::new(t)))),
61494 ),
61495 TypeVariant::ScSpecUdtUnionCaseV0Kind => Box::new(
61496 ReadXdrIter::<_, ScSpecUdtUnionCaseV0Kind>::new(dec, r.limits.clone())
61497 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0Kind(Box::new(t)))),
61498 ),
61499 TypeVariant::ScSpecUdtUnionCaseV0 => Box::new(
61500 ReadXdrIter::<_, ScSpecUdtUnionCaseV0>::new(dec, r.limits.clone())
61501 .map(|r| r.map(|t| Self::ScSpecUdtUnionCaseV0(Box::new(t)))),
61502 ),
61503 TypeVariant::ScSpecUdtUnionV0 => Box::new(
61504 ReadXdrIter::<_, ScSpecUdtUnionV0>::new(dec, r.limits.clone())
61505 .map(|r| r.map(|t| Self::ScSpecUdtUnionV0(Box::new(t)))),
61506 ),
61507 TypeVariant::ScSpecUdtEnumCaseV0 => Box::new(
61508 ReadXdrIter::<_, ScSpecUdtEnumCaseV0>::new(dec, r.limits.clone())
61509 .map(|r| r.map(|t| Self::ScSpecUdtEnumCaseV0(Box::new(t)))),
61510 ),
61511 TypeVariant::ScSpecUdtEnumV0 => Box::new(
61512 ReadXdrIter::<_, ScSpecUdtEnumV0>::new(dec, r.limits.clone())
61513 .map(|r| r.map(|t| Self::ScSpecUdtEnumV0(Box::new(t)))),
61514 ),
61515 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Box::new(
61516 ReadXdrIter::<_, ScSpecUdtErrorEnumCaseV0>::new(dec, r.limits.clone())
61517 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumCaseV0(Box::new(t)))),
61518 ),
61519 TypeVariant::ScSpecUdtErrorEnumV0 => Box::new(
61520 ReadXdrIter::<_, ScSpecUdtErrorEnumV0>::new(dec, r.limits.clone())
61521 .map(|r| r.map(|t| Self::ScSpecUdtErrorEnumV0(Box::new(t)))),
61522 ),
61523 TypeVariant::ScSpecFunctionInputV0 => Box::new(
61524 ReadXdrIter::<_, ScSpecFunctionInputV0>::new(dec, r.limits.clone())
61525 .map(|r| r.map(|t| Self::ScSpecFunctionInputV0(Box::new(t)))),
61526 ),
61527 TypeVariant::ScSpecFunctionV0 => Box::new(
61528 ReadXdrIter::<_, ScSpecFunctionV0>::new(dec, r.limits.clone())
61529 .map(|r| r.map(|t| Self::ScSpecFunctionV0(Box::new(t)))),
61530 ),
61531 TypeVariant::ScSpecEventParamLocationV0 => Box::new(
61532 ReadXdrIter::<_, ScSpecEventParamLocationV0>::new(dec, r.limits.clone())
61533 .map(|r| r.map(|t| Self::ScSpecEventParamLocationV0(Box::new(t)))),
61534 ),
61535 TypeVariant::ScSpecEventParamV0 => Box::new(
61536 ReadXdrIter::<_, ScSpecEventParamV0>::new(dec, r.limits.clone())
61537 .map(|r| r.map(|t| Self::ScSpecEventParamV0(Box::new(t)))),
61538 ),
61539 TypeVariant::ScSpecEventDataFormat => Box::new(
61540 ReadXdrIter::<_, ScSpecEventDataFormat>::new(dec, r.limits.clone())
61541 .map(|r| r.map(|t| Self::ScSpecEventDataFormat(Box::new(t)))),
61542 ),
61543 TypeVariant::ScSpecEventV0 => Box::new(
61544 ReadXdrIter::<_, ScSpecEventV0>::new(dec, r.limits.clone())
61545 .map(|r| r.map(|t| Self::ScSpecEventV0(Box::new(t)))),
61546 ),
61547 TypeVariant::ScSpecEntryKind => Box::new(
61548 ReadXdrIter::<_, ScSpecEntryKind>::new(dec, r.limits.clone())
61549 .map(|r| r.map(|t| Self::ScSpecEntryKind(Box::new(t)))),
61550 ),
61551 TypeVariant::ScSpecEntry => Box::new(
61552 ReadXdrIter::<_, ScSpecEntry>::new(dec, r.limits.clone())
61553 .map(|r| r.map(|t| Self::ScSpecEntry(Box::new(t)))),
61554 ),
61555 TypeVariant::ScValType => Box::new(
61556 ReadXdrIter::<_, ScValType>::new(dec, r.limits.clone())
61557 .map(|r| r.map(|t| Self::ScValType(Box::new(t)))),
61558 ),
61559 TypeVariant::ScErrorType => Box::new(
61560 ReadXdrIter::<_, ScErrorType>::new(dec, r.limits.clone())
61561 .map(|r| r.map(|t| Self::ScErrorType(Box::new(t)))),
61562 ),
61563 TypeVariant::ScErrorCode => Box::new(
61564 ReadXdrIter::<_, ScErrorCode>::new(dec, r.limits.clone())
61565 .map(|r| r.map(|t| Self::ScErrorCode(Box::new(t)))),
61566 ),
61567 TypeVariant::ScError => Box::new(
61568 ReadXdrIter::<_, ScError>::new(dec, r.limits.clone())
61569 .map(|r| r.map(|t| Self::ScError(Box::new(t)))),
61570 ),
61571 TypeVariant::UInt128Parts => Box::new(
61572 ReadXdrIter::<_, UInt128Parts>::new(dec, r.limits.clone())
61573 .map(|r| r.map(|t| Self::UInt128Parts(Box::new(t)))),
61574 ),
61575 TypeVariant::Int128Parts => Box::new(
61576 ReadXdrIter::<_, Int128Parts>::new(dec, r.limits.clone())
61577 .map(|r| r.map(|t| Self::Int128Parts(Box::new(t)))),
61578 ),
61579 TypeVariant::UInt256Parts => Box::new(
61580 ReadXdrIter::<_, UInt256Parts>::new(dec, r.limits.clone())
61581 .map(|r| r.map(|t| Self::UInt256Parts(Box::new(t)))),
61582 ),
61583 TypeVariant::Int256Parts => Box::new(
61584 ReadXdrIter::<_, Int256Parts>::new(dec, r.limits.clone())
61585 .map(|r| r.map(|t| Self::Int256Parts(Box::new(t)))),
61586 ),
61587 TypeVariant::ContractExecutableType => Box::new(
61588 ReadXdrIter::<_, ContractExecutableType>::new(dec, r.limits.clone())
61589 .map(|r| r.map(|t| Self::ContractExecutableType(Box::new(t)))),
61590 ),
61591 TypeVariant::ContractExecutable => Box::new(
61592 ReadXdrIter::<_, ContractExecutable>::new(dec, r.limits.clone())
61593 .map(|r| r.map(|t| Self::ContractExecutable(Box::new(t)))),
61594 ),
61595 TypeVariant::ScAddressType => Box::new(
61596 ReadXdrIter::<_, ScAddressType>::new(dec, r.limits.clone())
61597 .map(|r| r.map(|t| Self::ScAddressType(Box::new(t)))),
61598 ),
61599 TypeVariant::MuxedEd25519Account => Box::new(
61600 ReadXdrIter::<_, MuxedEd25519Account>::new(dec, r.limits.clone())
61601 .map(|r| r.map(|t| Self::MuxedEd25519Account(Box::new(t)))),
61602 ),
61603 TypeVariant::ScAddress => Box::new(
61604 ReadXdrIter::<_, ScAddress>::new(dec, r.limits.clone())
61605 .map(|r| r.map(|t| Self::ScAddress(Box::new(t)))),
61606 ),
61607 TypeVariant::ScVec => Box::new(
61608 ReadXdrIter::<_, ScVec>::new(dec, r.limits.clone())
61609 .map(|r| r.map(|t| Self::ScVec(Box::new(t)))),
61610 ),
61611 TypeVariant::ScMap => Box::new(
61612 ReadXdrIter::<_, ScMap>::new(dec, r.limits.clone())
61613 .map(|r| r.map(|t| Self::ScMap(Box::new(t)))),
61614 ),
61615 TypeVariant::ScBytes => Box::new(
61616 ReadXdrIter::<_, ScBytes>::new(dec, r.limits.clone())
61617 .map(|r| r.map(|t| Self::ScBytes(Box::new(t)))),
61618 ),
61619 TypeVariant::ScString => Box::new(
61620 ReadXdrIter::<_, ScString>::new(dec, r.limits.clone())
61621 .map(|r| r.map(|t| Self::ScString(Box::new(t)))),
61622 ),
61623 TypeVariant::ScSymbol => Box::new(
61624 ReadXdrIter::<_, ScSymbol>::new(dec, r.limits.clone())
61625 .map(|r| r.map(|t| Self::ScSymbol(Box::new(t)))),
61626 ),
61627 TypeVariant::ScNonceKey => Box::new(
61628 ReadXdrIter::<_, ScNonceKey>::new(dec, r.limits.clone())
61629 .map(|r| r.map(|t| Self::ScNonceKey(Box::new(t)))),
61630 ),
61631 TypeVariant::ScContractInstance => Box::new(
61632 ReadXdrIter::<_, ScContractInstance>::new(dec, r.limits.clone())
61633 .map(|r| r.map(|t| Self::ScContractInstance(Box::new(t)))),
61634 ),
61635 TypeVariant::ScVal => Box::new(
61636 ReadXdrIter::<_, ScVal>::new(dec, r.limits.clone())
61637 .map(|r| r.map(|t| Self::ScVal(Box::new(t)))),
61638 ),
61639 TypeVariant::ScMapEntry => Box::new(
61640 ReadXdrIter::<_, ScMapEntry>::new(dec, r.limits.clone())
61641 .map(|r| r.map(|t| Self::ScMapEntry(Box::new(t)))),
61642 ),
61643 TypeVariant::LedgerCloseMetaBatch => Box::new(
61644 ReadXdrIter::<_, LedgerCloseMetaBatch>::new(dec, r.limits.clone())
61645 .map(|r| r.map(|t| Self::LedgerCloseMetaBatch(Box::new(t)))),
61646 ),
61647 TypeVariant::StoredTransactionSet => Box::new(
61648 ReadXdrIter::<_, StoredTransactionSet>::new(dec, r.limits.clone())
61649 .map(|r| r.map(|t| Self::StoredTransactionSet(Box::new(t)))),
61650 ),
61651 TypeVariant::StoredDebugTransactionSet => Box::new(
61652 ReadXdrIter::<_, StoredDebugTransactionSet>::new(dec, r.limits.clone())
61653 .map(|r| r.map(|t| Self::StoredDebugTransactionSet(Box::new(t)))),
61654 ),
61655 TypeVariant::PersistedScpStateV0 => Box::new(
61656 ReadXdrIter::<_, PersistedScpStateV0>::new(dec, r.limits.clone())
61657 .map(|r| r.map(|t| Self::PersistedScpStateV0(Box::new(t)))),
61658 ),
61659 TypeVariant::PersistedScpStateV1 => Box::new(
61660 ReadXdrIter::<_, PersistedScpStateV1>::new(dec, r.limits.clone())
61661 .map(|r| r.map(|t| Self::PersistedScpStateV1(Box::new(t)))),
61662 ),
61663 TypeVariant::PersistedScpState => Box::new(
61664 ReadXdrIter::<_, PersistedScpState>::new(dec, r.limits.clone())
61665 .map(|r| r.map(|t| Self::PersistedScpState(Box::new(t)))),
61666 ),
61667 TypeVariant::Thresholds => Box::new(
61668 ReadXdrIter::<_, Thresholds>::new(dec, r.limits.clone())
61669 .map(|r| r.map(|t| Self::Thresholds(Box::new(t)))),
61670 ),
61671 TypeVariant::String32 => Box::new(
61672 ReadXdrIter::<_, String32>::new(dec, r.limits.clone())
61673 .map(|r| r.map(|t| Self::String32(Box::new(t)))),
61674 ),
61675 TypeVariant::String64 => Box::new(
61676 ReadXdrIter::<_, String64>::new(dec, r.limits.clone())
61677 .map(|r| r.map(|t| Self::String64(Box::new(t)))),
61678 ),
61679 TypeVariant::SequenceNumber => Box::new(
61680 ReadXdrIter::<_, SequenceNumber>::new(dec, r.limits.clone())
61681 .map(|r| r.map(|t| Self::SequenceNumber(Box::new(t)))),
61682 ),
61683 TypeVariant::DataValue => Box::new(
61684 ReadXdrIter::<_, DataValue>::new(dec, r.limits.clone())
61685 .map(|r| r.map(|t| Self::DataValue(Box::new(t)))),
61686 ),
61687 TypeVariant::AssetCode4 => Box::new(
61688 ReadXdrIter::<_, AssetCode4>::new(dec, r.limits.clone())
61689 .map(|r| r.map(|t| Self::AssetCode4(Box::new(t)))),
61690 ),
61691 TypeVariant::AssetCode12 => Box::new(
61692 ReadXdrIter::<_, AssetCode12>::new(dec, r.limits.clone())
61693 .map(|r| r.map(|t| Self::AssetCode12(Box::new(t)))),
61694 ),
61695 TypeVariant::AssetType => Box::new(
61696 ReadXdrIter::<_, AssetType>::new(dec, r.limits.clone())
61697 .map(|r| r.map(|t| Self::AssetType(Box::new(t)))),
61698 ),
61699 TypeVariant::AssetCode => Box::new(
61700 ReadXdrIter::<_, AssetCode>::new(dec, r.limits.clone())
61701 .map(|r| r.map(|t| Self::AssetCode(Box::new(t)))),
61702 ),
61703 TypeVariant::AlphaNum4 => Box::new(
61704 ReadXdrIter::<_, AlphaNum4>::new(dec, r.limits.clone())
61705 .map(|r| r.map(|t| Self::AlphaNum4(Box::new(t)))),
61706 ),
61707 TypeVariant::AlphaNum12 => Box::new(
61708 ReadXdrIter::<_, AlphaNum12>::new(dec, r.limits.clone())
61709 .map(|r| r.map(|t| Self::AlphaNum12(Box::new(t)))),
61710 ),
61711 TypeVariant::Asset => Box::new(
61712 ReadXdrIter::<_, Asset>::new(dec, r.limits.clone())
61713 .map(|r| r.map(|t| Self::Asset(Box::new(t)))),
61714 ),
61715 TypeVariant::Price => Box::new(
61716 ReadXdrIter::<_, Price>::new(dec, r.limits.clone())
61717 .map(|r| r.map(|t| Self::Price(Box::new(t)))),
61718 ),
61719 TypeVariant::Liabilities => Box::new(
61720 ReadXdrIter::<_, Liabilities>::new(dec, r.limits.clone())
61721 .map(|r| r.map(|t| Self::Liabilities(Box::new(t)))),
61722 ),
61723 TypeVariant::ThresholdIndexes => Box::new(
61724 ReadXdrIter::<_, ThresholdIndexes>::new(dec, r.limits.clone())
61725 .map(|r| r.map(|t| Self::ThresholdIndexes(Box::new(t)))),
61726 ),
61727 TypeVariant::LedgerEntryType => Box::new(
61728 ReadXdrIter::<_, LedgerEntryType>::new(dec, r.limits.clone())
61729 .map(|r| r.map(|t| Self::LedgerEntryType(Box::new(t)))),
61730 ),
61731 TypeVariant::Signer => Box::new(
61732 ReadXdrIter::<_, Signer>::new(dec, r.limits.clone())
61733 .map(|r| r.map(|t| Self::Signer(Box::new(t)))),
61734 ),
61735 TypeVariant::AccountFlags => Box::new(
61736 ReadXdrIter::<_, AccountFlags>::new(dec, r.limits.clone())
61737 .map(|r| r.map(|t| Self::AccountFlags(Box::new(t)))),
61738 ),
61739 TypeVariant::SponsorshipDescriptor => Box::new(
61740 ReadXdrIter::<_, SponsorshipDescriptor>::new(dec, r.limits.clone())
61741 .map(|r| r.map(|t| Self::SponsorshipDescriptor(Box::new(t)))),
61742 ),
61743 TypeVariant::AccountEntryExtensionV3 => Box::new(
61744 ReadXdrIter::<_, AccountEntryExtensionV3>::new(dec, r.limits.clone())
61745 .map(|r| r.map(|t| Self::AccountEntryExtensionV3(Box::new(t)))),
61746 ),
61747 TypeVariant::AccountEntryExtensionV2 => Box::new(
61748 ReadXdrIter::<_, AccountEntryExtensionV2>::new(dec, r.limits.clone())
61749 .map(|r| r.map(|t| Self::AccountEntryExtensionV2(Box::new(t)))),
61750 ),
61751 TypeVariant::AccountEntryExtensionV2Ext => Box::new(
61752 ReadXdrIter::<_, AccountEntryExtensionV2Ext>::new(dec, r.limits.clone())
61753 .map(|r| r.map(|t| Self::AccountEntryExtensionV2Ext(Box::new(t)))),
61754 ),
61755 TypeVariant::AccountEntryExtensionV1 => Box::new(
61756 ReadXdrIter::<_, AccountEntryExtensionV1>::new(dec, r.limits.clone())
61757 .map(|r| r.map(|t| Self::AccountEntryExtensionV1(Box::new(t)))),
61758 ),
61759 TypeVariant::AccountEntryExtensionV1Ext => Box::new(
61760 ReadXdrIter::<_, AccountEntryExtensionV1Ext>::new(dec, r.limits.clone())
61761 .map(|r| r.map(|t| Self::AccountEntryExtensionV1Ext(Box::new(t)))),
61762 ),
61763 TypeVariant::AccountEntry => Box::new(
61764 ReadXdrIter::<_, AccountEntry>::new(dec, r.limits.clone())
61765 .map(|r| r.map(|t| Self::AccountEntry(Box::new(t)))),
61766 ),
61767 TypeVariant::AccountEntryExt => Box::new(
61768 ReadXdrIter::<_, AccountEntryExt>::new(dec, r.limits.clone())
61769 .map(|r| r.map(|t| Self::AccountEntryExt(Box::new(t)))),
61770 ),
61771 TypeVariant::TrustLineFlags => Box::new(
61772 ReadXdrIter::<_, TrustLineFlags>::new(dec, r.limits.clone())
61773 .map(|r| r.map(|t| Self::TrustLineFlags(Box::new(t)))),
61774 ),
61775 TypeVariant::LiquidityPoolType => Box::new(
61776 ReadXdrIter::<_, LiquidityPoolType>::new(dec, r.limits.clone())
61777 .map(|r| r.map(|t| Self::LiquidityPoolType(Box::new(t)))),
61778 ),
61779 TypeVariant::TrustLineAsset => Box::new(
61780 ReadXdrIter::<_, TrustLineAsset>::new(dec, r.limits.clone())
61781 .map(|r| r.map(|t| Self::TrustLineAsset(Box::new(t)))),
61782 ),
61783 TypeVariant::TrustLineEntryExtensionV2 => Box::new(
61784 ReadXdrIter::<_, TrustLineEntryExtensionV2>::new(dec, r.limits.clone())
61785 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2(Box::new(t)))),
61786 ),
61787 TypeVariant::TrustLineEntryExtensionV2Ext => Box::new(
61788 ReadXdrIter::<_, TrustLineEntryExtensionV2Ext>::new(dec, r.limits.clone())
61789 .map(|r| r.map(|t| Self::TrustLineEntryExtensionV2Ext(Box::new(t)))),
61790 ),
61791 TypeVariant::TrustLineEntry => Box::new(
61792 ReadXdrIter::<_, TrustLineEntry>::new(dec, r.limits.clone())
61793 .map(|r| r.map(|t| Self::TrustLineEntry(Box::new(t)))),
61794 ),
61795 TypeVariant::TrustLineEntryExt => Box::new(
61796 ReadXdrIter::<_, TrustLineEntryExt>::new(dec, r.limits.clone())
61797 .map(|r| r.map(|t| Self::TrustLineEntryExt(Box::new(t)))),
61798 ),
61799 TypeVariant::TrustLineEntryV1 => Box::new(
61800 ReadXdrIter::<_, TrustLineEntryV1>::new(dec, r.limits.clone())
61801 .map(|r| r.map(|t| Self::TrustLineEntryV1(Box::new(t)))),
61802 ),
61803 TypeVariant::TrustLineEntryV1Ext => Box::new(
61804 ReadXdrIter::<_, TrustLineEntryV1Ext>::new(dec, r.limits.clone())
61805 .map(|r| r.map(|t| Self::TrustLineEntryV1Ext(Box::new(t)))),
61806 ),
61807 TypeVariant::OfferEntryFlags => Box::new(
61808 ReadXdrIter::<_, OfferEntryFlags>::new(dec, r.limits.clone())
61809 .map(|r| r.map(|t| Self::OfferEntryFlags(Box::new(t)))),
61810 ),
61811 TypeVariant::OfferEntry => Box::new(
61812 ReadXdrIter::<_, OfferEntry>::new(dec, r.limits.clone())
61813 .map(|r| r.map(|t| Self::OfferEntry(Box::new(t)))),
61814 ),
61815 TypeVariant::OfferEntryExt => Box::new(
61816 ReadXdrIter::<_, OfferEntryExt>::new(dec, r.limits.clone())
61817 .map(|r| r.map(|t| Self::OfferEntryExt(Box::new(t)))),
61818 ),
61819 TypeVariant::DataEntry => Box::new(
61820 ReadXdrIter::<_, DataEntry>::new(dec, r.limits.clone())
61821 .map(|r| r.map(|t| Self::DataEntry(Box::new(t)))),
61822 ),
61823 TypeVariant::DataEntryExt => Box::new(
61824 ReadXdrIter::<_, DataEntryExt>::new(dec, r.limits.clone())
61825 .map(|r| r.map(|t| Self::DataEntryExt(Box::new(t)))),
61826 ),
61827 TypeVariant::ClaimPredicateType => Box::new(
61828 ReadXdrIter::<_, ClaimPredicateType>::new(dec, r.limits.clone())
61829 .map(|r| r.map(|t| Self::ClaimPredicateType(Box::new(t)))),
61830 ),
61831 TypeVariant::ClaimPredicate => Box::new(
61832 ReadXdrIter::<_, ClaimPredicate>::new(dec, r.limits.clone())
61833 .map(|r| r.map(|t| Self::ClaimPredicate(Box::new(t)))),
61834 ),
61835 TypeVariant::ClaimantType => Box::new(
61836 ReadXdrIter::<_, ClaimantType>::new(dec, r.limits.clone())
61837 .map(|r| r.map(|t| Self::ClaimantType(Box::new(t)))),
61838 ),
61839 TypeVariant::Claimant => Box::new(
61840 ReadXdrIter::<_, Claimant>::new(dec, r.limits.clone())
61841 .map(|r| r.map(|t| Self::Claimant(Box::new(t)))),
61842 ),
61843 TypeVariant::ClaimantV0 => Box::new(
61844 ReadXdrIter::<_, ClaimantV0>::new(dec, r.limits.clone())
61845 .map(|r| r.map(|t| Self::ClaimantV0(Box::new(t)))),
61846 ),
61847 TypeVariant::ClaimableBalanceFlags => Box::new(
61848 ReadXdrIter::<_, ClaimableBalanceFlags>::new(dec, r.limits.clone())
61849 .map(|r| r.map(|t| Self::ClaimableBalanceFlags(Box::new(t)))),
61850 ),
61851 TypeVariant::ClaimableBalanceEntryExtensionV1 => Box::new(
61852 ReadXdrIter::<_, ClaimableBalanceEntryExtensionV1>::new(dec, r.limits.clone())
61853 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1(Box::new(t)))),
61854 ),
61855 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => Box::new(
61856 ReadXdrIter::<_, ClaimableBalanceEntryExtensionV1Ext>::new(dec, r.limits.clone())
61857 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(t)))),
61858 ),
61859 TypeVariant::ClaimableBalanceEntry => Box::new(
61860 ReadXdrIter::<_, ClaimableBalanceEntry>::new(dec, r.limits.clone())
61861 .map(|r| r.map(|t| Self::ClaimableBalanceEntry(Box::new(t)))),
61862 ),
61863 TypeVariant::ClaimableBalanceEntryExt => Box::new(
61864 ReadXdrIter::<_, ClaimableBalanceEntryExt>::new(dec, r.limits.clone())
61865 .map(|r| r.map(|t| Self::ClaimableBalanceEntryExt(Box::new(t)))),
61866 ),
61867 TypeVariant::LiquidityPoolConstantProductParameters => Box::new(
61868 ReadXdrIter::<_, LiquidityPoolConstantProductParameters>::new(
61869 dec,
61870 r.limits.clone(),
61871 )
61872 .map(|r| r.map(|t| Self::LiquidityPoolConstantProductParameters(Box::new(t)))),
61873 ),
61874 TypeVariant::LiquidityPoolEntry => Box::new(
61875 ReadXdrIter::<_, LiquidityPoolEntry>::new(dec, r.limits.clone())
61876 .map(|r| r.map(|t| Self::LiquidityPoolEntry(Box::new(t)))),
61877 ),
61878 TypeVariant::LiquidityPoolEntryBody => Box::new(
61879 ReadXdrIter::<_, LiquidityPoolEntryBody>::new(dec, r.limits.clone())
61880 .map(|r| r.map(|t| Self::LiquidityPoolEntryBody(Box::new(t)))),
61881 ),
61882 TypeVariant::LiquidityPoolEntryConstantProduct => Box::new(
61883 ReadXdrIter::<_, LiquidityPoolEntryConstantProduct>::new(dec, r.limits.clone())
61884 .map(|r| r.map(|t| Self::LiquidityPoolEntryConstantProduct(Box::new(t)))),
61885 ),
61886 TypeVariant::ContractDataDurability => Box::new(
61887 ReadXdrIter::<_, ContractDataDurability>::new(dec, r.limits.clone())
61888 .map(|r| r.map(|t| Self::ContractDataDurability(Box::new(t)))),
61889 ),
61890 TypeVariant::ContractDataEntry => Box::new(
61891 ReadXdrIter::<_, ContractDataEntry>::new(dec, r.limits.clone())
61892 .map(|r| r.map(|t| Self::ContractDataEntry(Box::new(t)))),
61893 ),
61894 TypeVariant::ContractCodeCostInputs => Box::new(
61895 ReadXdrIter::<_, ContractCodeCostInputs>::new(dec, r.limits.clone())
61896 .map(|r| r.map(|t| Self::ContractCodeCostInputs(Box::new(t)))),
61897 ),
61898 TypeVariant::ContractCodeEntry => Box::new(
61899 ReadXdrIter::<_, ContractCodeEntry>::new(dec, r.limits.clone())
61900 .map(|r| r.map(|t| Self::ContractCodeEntry(Box::new(t)))),
61901 ),
61902 TypeVariant::ContractCodeEntryExt => Box::new(
61903 ReadXdrIter::<_, ContractCodeEntryExt>::new(dec, r.limits.clone())
61904 .map(|r| r.map(|t| Self::ContractCodeEntryExt(Box::new(t)))),
61905 ),
61906 TypeVariant::ContractCodeEntryV1 => Box::new(
61907 ReadXdrIter::<_, ContractCodeEntryV1>::new(dec, r.limits.clone())
61908 .map(|r| r.map(|t| Self::ContractCodeEntryV1(Box::new(t)))),
61909 ),
61910 TypeVariant::TtlEntry => Box::new(
61911 ReadXdrIter::<_, TtlEntry>::new(dec, r.limits.clone())
61912 .map(|r| r.map(|t| Self::TtlEntry(Box::new(t)))),
61913 ),
61914 TypeVariant::LedgerEntryExtensionV1 => Box::new(
61915 ReadXdrIter::<_, LedgerEntryExtensionV1>::new(dec, r.limits.clone())
61916 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1(Box::new(t)))),
61917 ),
61918 TypeVariant::LedgerEntryExtensionV1Ext => Box::new(
61919 ReadXdrIter::<_, LedgerEntryExtensionV1Ext>::new(dec, r.limits.clone())
61920 .map(|r| r.map(|t| Self::LedgerEntryExtensionV1Ext(Box::new(t)))),
61921 ),
61922 TypeVariant::LedgerEntry => Box::new(
61923 ReadXdrIter::<_, LedgerEntry>::new(dec, r.limits.clone())
61924 .map(|r| r.map(|t| Self::LedgerEntry(Box::new(t)))),
61925 ),
61926 TypeVariant::LedgerEntryData => Box::new(
61927 ReadXdrIter::<_, LedgerEntryData>::new(dec, r.limits.clone())
61928 .map(|r| r.map(|t| Self::LedgerEntryData(Box::new(t)))),
61929 ),
61930 TypeVariant::LedgerEntryExt => Box::new(
61931 ReadXdrIter::<_, LedgerEntryExt>::new(dec, r.limits.clone())
61932 .map(|r| r.map(|t| Self::LedgerEntryExt(Box::new(t)))),
61933 ),
61934 TypeVariant::LedgerKey => Box::new(
61935 ReadXdrIter::<_, LedgerKey>::new(dec, r.limits.clone())
61936 .map(|r| r.map(|t| Self::LedgerKey(Box::new(t)))),
61937 ),
61938 TypeVariant::LedgerKeyAccount => Box::new(
61939 ReadXdrIter::<_, LedgerKeyAccount>::new(dec, r.limits.clone())
61940 .map(|r| r.map(|t| Self::LedgerKeyAccount(Box::new(t)))),
61941 ),
61942 TypeVariant::LedgerKeyTrustLine => Box::new(
61943 ReadXdrIter::<_, LedgerKeyTrustLine>::new(dec, r.limits.clone())
61944 .map(|r| r.map(|t| Self::LedgerKeyTrustLine(Box::new(t)))),
61945 ),
61946 TypeVariant::LedgerKeyOffer => Box::new(
61947 ReadXdrIter::<_, LedgerKeyOffer>::new(dec, r.limits.clone())
61948 .map(|r| r.map(|t| Self::LedgerKeyOffer(Box::new(t)))),
61949 ),
61950 TypeVariant::LedgerKeyData => Box::new(
61951 ReadXdrIter::<_, LedgerKeyData>::new(dec, r.limits.clone())
61952 .map(|r| r.map(|t| Self::LedgerKeyData(Box::new(t)))),
61953 ),
61954 TypeVariant::LedgerKeyClaimableBalance => Box::new(
61955 ReadXdrIter::<_, LedgerKeyClaimableBalance>::new(dec, r.limits.clone())
61956 .map(|r| r.map(|t| Self::LedgerKeyClaimableBalance(Box::new(t)))),
61957 ),
61958 TypeVariant::LedgerKeyLiquidityPool => Box::new(
61959 ReadXdrIter::<_, LedgerKeyLiquidityPool>::new(dec, r.limits.clone())
61960 .map(|r| r.map(|t| Self::LedgerKeyLiquidityPool(Box::new(t)))),
61961 ),
61962 TypeVariant::LedgerKeyContractData => Box::new(
61963 ReadXdrIter::<_, LedgerKeyContractData>::new(dec, r.limits.clone())
61964 .map(|r| r.map(|t| Self::LedgerKeyContractData(Box::new(t)))),
61965 ),
61966 TypeVariant::LedgerKeyContractCode => Box::new(
61967 ReadXdrIter::<_, LedgerKeyContractCode>::new(dec, r.limits.clone())
61968 .map(|r| r.map(|t| Self::LedgerKeyContractCode(Box::new(t)))),
61969 ),
61970 TypeVariant::LedgerKeyConfigSetting => Box::new(
61971 ReadXdrIter::<_, LedgerKeyConfigSetting>::new(dec, r.limits.clone())
61972 .map(|r| r.map(|t| Self::LedgerKeyConfigSetting(Box::new(t)))),
61973 ),
61974 TypeVariant::LedgerKeyTtl => Box::new(
61975 ReadXdrIter::<_, LedgerKeyTtl>::new(dec, r.limits.clone())
61976 .map(|r| r.map(|t| Self::LedgerKeyTtl(Box::new(t)))),
61977 ),
61978 TypeVariant::EnvelopeType => Box::new(
61979 ReadXdrIter::<_, EnvelopeType>::new(dec, r.limits.clone())
61980 .map(|r| r.map(|t| Self::EnvelopeType(Box::new(t)))),
61981 ),
61982 TypeVariant::BucketListType => Box::new(
61983 ReadXdrIter::<_, BucketListType>::new(dec, r.limits.clone())
61984 .map(|r| r.map(|t| Self::BucketListType(Box::new(t)))),
61985 ),
61986 TypeVariant::BucketEntryType => Box::new(
61987 ReadXdrIter::<_, BucketEntryType>::new(dec, r.limits.clone())
61988 .map(|r| r.map(|t| Self::BucketEntryType(Box::new(t)))),
61989 ),
61990 TypeVariant::HotArchiveBucketEntryType => Box::new(
61991 ReadXdrIter::<_, HotArchiveBucketEntryType>::new(dec, r.limits.clone())
61992 .map(|r| r.map(|t| Self::HotArchiveBucketEntryType(Box::new(t)))),
61993 ),
61994 TypeVariant::BucketMetadata => Box::new(
61995 ReadXdrIter::<_, BucketMetadata>::new(dec, r.limits.clone())
61996 .map(|r| r.map(|t| Self::BucketMetadata(Box::new(t)))),
61997 ),
61998 TypeVariant::BucketMetadataExt => Box::new(
61999 ReadXdrIter::<_, BucketMetadataExt>::new(dec, r.limits.clone())
62000 .map(|r| r.map(|t| Self::BucketMetadataExt(Box::new(t)))),
62001 ),
62002 TypeVariant::BucketEntry => Box::new(
62003 ReadXdrIter::<_, BucketEntry>::new(dec, r.limits.clone())
62004 .map(|r| r.map(|t| Self::BucketEntry(Box::new(t)))),
62005 ),
62006 TypeVariant::HotArchiveBucketEntry => Box::new(
62007 ReadXdrIter::<_, HotArchiveBucketEntry>::new(dec, r.limits.clone())
62008 .map(|r| r.map(|t| Self::HotArchiveBucketEntry(Box::new(t)))),
62009 ),
62010 TypeVariant::UpgradeType => Box::new(
62011 ReadXdrIter::<_, UpgradeType>::new(dec, r.limits.clone())
62012 .map(|r| r.map(|t| Self::UpgradeType(Box::new(t)))),
62013 ),
62014 TypeVariant::StellarValueType => Box::new(
62015 ReadXdrIter::<_, StellarValueType>::new(dec, r.limits.clone())
62016 .map(|r| r.map(|t| Self::StellarValueType(Box::new(t)))),
62017 ),
62018 TypeVariant::LedgerCloseValueSignature => Box::new(
62019 ReadXdrIter::<_, LedgerCloseValueSignature>::new(dec, r.limits.clone())
62020 .map(|r| r.map(|t| Self::LedgerCloseValueSignature(Box::new(t)))),
62021 ),
62022 TypeVariant::StellarValue => Box::new(
62023 ReadXdrIter::<_, StellarValue>::new(dec, r.limits.clone())
62024 .map(|r| r.map(|t| Self::StellarValue(Box::new(t)))),
62025 ),
62026 TypeVariant::StellarValueExt => Box::new(
62027 ReadXdrIter::<_, StellarValueExt>::new(dec, r.limits.clone())
62028 .map(|r| r.map(|t| Self::StellarValueExt(Box::new(t)))),
62029 ),
62030 TypeVariant::LedgerHeaderFlags => Box::new(
62031 ReadXdrIter::<_, LedgerHeaderFlags>::new(dec, r.limits.clone())
62032 .map(|r| r.map(|t| Self::LedgerHeaderFlags(Box::new(t)))),
62033 ),
62034 TypeVariant::LedgerHeaderExtensionV1 => Box::new(
62035 ReadXdrIter::<_, LedgerHeaderExtensionV1>::new(dec, r.limits.clone())
62036 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1(Box::new(t)))),
62037 ),
62038 TypeVariant::LedgerHeaderExtensionV1Ext => Box::new(
62039 ReadXdrIter::<_, LedgerHeaderExtensionV1Ext>::new(dec, r.limits.clone())
62040 .map(|r| r.map(|t| Self::LedgerHeaderExtensionV1Ext(Box::new(t)))),
62041 ),
62042 TypeVariant::LedgerHeader => Box::new(
62043 ReadXdrIter::<_, LedgerHeader>::new(dec, r.limits.clone())
62044 .map(|r| r.map(|t| Self::LedgerHeader(Box::new(t)))),
62045 ),
62046 TypeVariant::LedgerHeaderExt => Box::new(
62047 ReadXdrIter::<_, LedgerHeaderExt>::new(dec, r.limits.clone())
62048 .map(|r| r.map(|t| Self::LedgerHeaderExt(Box::new(t)))),
62049 ),
62050 TypeVariant::LedgerUpgradeType => Box::new(
62051 ReadXdrIter::<_, LedgerUpgradeType>::new(dec, r.limits.clone())
62052 .map(|r| r.map(|t| Self::LedgerUpgradeType(Box::new(t)))),
62053 ),
62054 TypeVariant::ConfigUpgradeSetKey => Box::new(
62055 ReadXdrIter::<_, ConfigUpgradeSetKey>::new(dec, r.limits.clone())
62056 .map(|r| r.map(|t| Self::ConfigUpgradeSetKey(Box::new(t)))),
62057 ),
62058 TypeVariant::LedgerUpgrade => Box::new(
62059 ReadXdrIter::<_, LedgerUpgrade>::new(dec, r.limits.clone())
62060 .map(|r| r.map(|t| Self::LedgerUpgrade(Box::new(t)))),
62061 ),
62062 TypeVariant::ConfigUpgradeSet => Box::new(
62063 ReadXdrIter::<_, ConfigUpgradeSet>::new(dec, r.limits.clone())
62064 .map(|r| r.map(|t| Self::ConfigUpgradeSet(Box::new(t)))),
62065 ),
62066 TypeVariant::TxSetComponentType => Box::new(
62067 ReadXdrIter::<_, TxSetComponentType>::new(dec, r.limits.clone())
62068 .map(|r| r.map(|t| Self::TxSetComponentType(Box::new(t)))),
62069 ),
62070 TypeVariant::DependentTxCluster => Box::new(
62071 ReadXdrIter::<_, DependentTxCluster>::new(dec, r.limits.clone())
62072 .map(|r| r.map(|t| Self::DependentTxCluster(Box::new(t)))),
62073 ),
62074 TypeVariant::ParallelTxExecutionStage => Box::new(
62075 ReadXdrIter::<_, ParallelTxExecutionStage>::new(dec, r.limits.clone())
62076 .map(|r| r.map(|t| Self::ParallelTxExecutionStage(Box::new(t)))),
62077 ),
62078 TypeVariant::ParallelTxsComponent => Box::new(
62079 ReadXdrIter::<_, ParallelTxsComponent>::new(dec, r.limits.clone())
62080 .map(|r| r.map(|t| Self::ParallelTxsComponent(Box::new(t)))),
62081 ),
62082 TypeVariant::TxSetComponent => Box::new(
62083 ReadXdrIter::<_, TxSetComponent>::new(dec, r.limits.clone())
62084 .map(|r| r.map(|t| Self::TxSetComponent(Box::new(t)))),
62085 ),
62086 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => Box::new(
62087 ReadXdrIter::<_, TxSetComponentTxsMaybeDiscountedFee>::new(dec, r.limits.clone())
62088 .map(|r| r.map(|t| Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(t)))),
62089 ),
62090 TypeVariant::TransactionPhase => Box::new(
62091 ReadXdrIter::<_, TransactionPhase>::new(dec, r.limits.clone())
62092 .map(|r| r.map(|t| Self::TransactionPhase(Box::new(t)))),
62093 ),
62094 TypeVariant::TransactionSet => Box::new(
62095 ReadXdrIter::<_, TransactionSet>::new(dec, r.limits.clone())
62096 .map(|r| r.map(|t| Self::TransactionSet(Box::new(t)))),
62097 ),
62098 TypeVariant::TransactionSetV1 => Box::new(
62099 ReadXdrIter::<_, TransactionSetV1>::new(dec, r.limits.clone())
62100 .map(|r| r.map(|t| Self::TransactionSetV1(Box::new(t)))),
62101 ),
62102 TypeVariant::GeneralizedTransactionSet => Box::new(
62103 ReadXdrIter::<_, GeneralizedTransactionSet>::new(dec, r.limits.clone())
62104 .map(|r| r.map(|t| Self::GeneralizedTransactionSet(Box::new(t)))),
62105 ),
62106 TypeVariant::TransactionResultPair => Box::new(
62107 ReadXdrIter::<_, TransactionResultPair>::new(dec, r.limits.clone())
62108 .map(|r| r.map(|t| Self::TransactionResultPair(Box::new(t)))),
62109 ),
62110 TypeVariant::TransactionResultSet => Box::new(
62111 ReadXdrIter::<_, TransactionResultSet>::new(dec, r.limits.clone())
62112 .map(|r| r.map(|t| Self::TransactionResultSet(Box::new(t)))),
62113 ),
62114 TypeVariant::TransactionHistoryEntry => Box::new(
62115 ReadXdrIter::<_, TransactionHistoryEntry>::new(dec, r.limits.clone())
62116 .map(|r| r.map(|t| Self::TransactionHistoryEntry(Box::new(t)))),
62117 ),
62118 TypeVariant::TransactionHistoryEntryExt => Box::new(
62119 ReadXdrIter::<_, TransactionHistoryEntryExt>::new(dec, r.limits.clone())
62120 .map(|r| r.map(|t| Self::TransactionHistoryEntryExt(Box::new(t)))),
62121 ),
62122 TypeVariant::TransactionHistoryResultEntry => Box::new(
62123 ReadXdrIter::<_, TransactionHistoryResultEntry>::new(dec, r.limits.clone())
62124 .map(|r| r.map(|t| Self::TransactionHistoryResultEntry(Box::new(t)))),
62125 ),
62126 TypeVariant::TransactionHistoryResultEntryExt => Box::new(
62127 ReadXdrIter::<_, TransactionHistoryResultEntryExt>::new(dec, r.limits.clone())
62128 .map(|r| r.map(|t| Self::TransactionHistoryResultEntryExt(Box::new(t)))),
62129 ),
62130 TypeVariant::LedgerHeaderHistoryEntry => Box::new(
62131 ReadXdrIter::<_, LedgerHeaderHistoryEntry>::new(dec, r.limits.clone())
62132 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntry(Box::new(t)))),
62133 ),
62134 TypeVariant::LedgerHeaderHistoryEntryExt => Box::new(
62135 ReadXdrIter::<_, LedgerHeaderHistoryEntryExt>::new(dec, r.limits.clone())
62136 .map(|r| r.map(|t| Self::LedgerHeaderHistoryEntryExt(Box::new(t)))),
62137 ),
62138 TypeVariant::LedgerScpMessages => Box::new(
62139 ReadXdrIter::<_, LedgerScpMessages>::new(dec, r.limits.clone())
62140 .map(|r| r.map(|t| Self::LedgerScpMessages(Box::new(t)))),
62141 ),
62142 TypeVariant::ScpHistoryEntryV0 => Box::new(
62143 ReadXdrIter::<_, ScpHistoryEntryV0>::new(dec, r.limits.clone())
62144 .map(|r| r.map(|t| Self::ScpHistoryEntryV0(Box::new(t)))),
62145 ),
62146 TypeVariant::ScpHistoryEntry => Box::new(
62147 ReadXdrIter::<_, ScpHistoryEntry>::new(dec, r.limits.clone())
62148 .map(|r| r.map(|t| Self::ScpHistoryEntry(Box::new(t)))),
62149 ),
62150 TypeVariant::LedgerEntryChangeType => Box::new(
62151 ReadXdrIter::<_, LedgerEntryChangeType>::new(dec, r.limits.clone())
62152 .map(|r| r.map(|t| Self::LedgerEntryChangeType(Box::new(t)))),
62153 ),
62154 TypeVariant::LedgerEntryChange => Box::new(
62155 ReadXdrIter::<_, LedgerEntryChange>::new(dec, r.limits.clone())
62156 .map(|r| r.map(|t| Self::LedgerEntryChange(Box::new(t)))),
62157 ),
62158 TypeVariant::LedgerEntryChanges => Box::new(
62159 ReadXdrIter::<_, LedgerEntryChanges>::new(dec, r.limits.clone())
62160 .map(|r| r.map(|t| Self::LedgerEntryChanges(Box::new(t)))),
62161 ),
62162 TypeVariant::OperationMeta => Box::new(
62163 ReadXdrIter::<_, OperationMeta>::new(dec, r.limits.clone())
62164 .map(|r| r.map(|t| Self::OperationMeta(Box::new(t)))),
62165 ),
62166 TypeVariant::TransactionMetaV1 => Box::new(
62167 ReadXdrIter::<_, TransactionMetaV1>::new(dec, r.limits.clone())
62168 .map(|r| r.map(|t| Self::TransactionMetaV1(Box::new(t)))),
62169 ),
62170 TypeVariant::TransactionMetaV2 => Box::new(
62171 ReadXdrIter::<_, TransactionMetaV2>::new(dec, r.limits.clone())
62172 .map(|r| r.map(|t| Self::TransactionMetaV2(Box::new(t)))),
62173 ),
62174 TypeVariant::ContractEventType => Box::new(
62175 ReadXdrIter::<_, ContractEventType>::new(dec, r.limits.clone())
62176 .map(|r| r.map(|t| Self::ContractEventType(Box::new(t)))),
62177 ),
62178 TypeVariant::ContractEvent => Box::new(
62179 ReadXdrIter::<_, ContractEvent>::new(dec, r.limits.clone())
62180 .map(|r| r.map(|t| Self::ContractEvent(Box::new(t)))),
62181 ),
62182 TypeVariant::ContractEventBody => Box::new(
62183 ReadXdrIter::<_, ContractEventBody>::new(dec, r.limits.clone())
62184 .map(|r| r.map(|t| Self::ContractEventBody(Box::new(t)))),
62185 ),
62186 TypeVariant::ContractEventV0 => Box::new(
62187 ReadXdrIter::<_, ContractEventV0>::new(dec, r.limits.clone())
62188 .map(|r| r.map(|t| Self::ContractEventV0(Box::new(t)))),
62189 ),
62190 TypeVariant::DiagnosticEvent => Box::new(
62191 ReadXdrIter::<_, DiagnosticEvent>::new(dec, r.limits.clone())
62192 .map(|r| r.map(|t| Self::DiagnosticEvent(Box::new(t)))),
62193 ),
62194 TypeVariant::SorobanTransactionMetaExtV1 => Box::new(
62195 ReadXdrIter::<_, SorobanTransactionMetaExtV1>::new(dec, r.limits.clone())
62196 .map(|r| r.map(|t| Self::SorobanTransactionMetaExtV1(Box::new(t)))),
62197 ),
62198 TypeVariant::SorobanTransactionMetaExt => Box::new(
62199 ReadXdrIter::<_, SorobanTransactionMetaExt>::new(dec, r.limits.clone())
62200 .map(|r| r.map(|t| Self::SorobanTransactionMetaExt(Box::new(t)))),
62201 ),
62202 TypeVariant::SorobanTransactionMeta => Box::new(
62203 ReadXdrIter::<_, SorobanTransactionMeta>::new(dec, r.limits.clone())
62204 .map(|r| r.map(|t| Self::SorobanTransactionMeta(Box::new(t)))),
62205 ),
62206 TypeVariant::TransactionMetaV3 => Box::new(
62207 ReadXdrIter::<_, TransactionMetaV3>::new(dec, r.limits.clone())
62208 .map(|r| r.map(|t| Self::TransactionMetaV3(Box::new(t)))),
62209 ),
62210 TypeVariant::OperationMetaV2 => Box::new(
62211 ReadXdrIter::<_, OperationMetaV2>::new(dec, r.limits.clone())
62212 .map(|r| r.map(|t| Self::OperationMetaV2(Box::new(t)))),
62213 ),
62214 TypeVariant::SorobanTransactionMetaV2 => Box::new(
62215 ReadXdrIter::<_, SorobanTransactionMetaV2>::new(dec, r.limits.clone())
62216 .map(|r| r.map(|t| Self::SorobanTransactionMetaV2(Box::new(t)))),
62217 ),
62218 TypeVariant::TransactionEventStage => Box::new(
62219 ReadXdrIter::<_, TransactionEventStage>::new(dec, r.limits.clone())
62220 .map(|r| r.map(|t| Self::TransactionEventStage(Box::new(t)))),
62221 ),
62222 TypeVariant::TransactionEvent => Box::new(
62223 ReadXdrIter::<_, TransactionEvent>::new(dec, r.limits.clone())
62224 .map(|r| r.map(|t| Self::TransactionEvent(Box::new(t)))),
62225 ),
62226 TypeVariant::TransactionMetaV4 => Box::new(
62227 ReadXdrIter::<_, TransactionMetaV4>::new(dec, r.limits.clone())
62228 .map(|r| r.map(|t| Self::TransactionMetaV4(Box::new(t)))),
62229 ),
62230 TypeVariant::InvokeHostFunctionSuccessPreImage => Box::new(
62231 ReadXdrIter::<_, InvokeHostFunctionSuccessPreImage>::new(dec, r.limits.clone())
62232 .map(|r| r.map(|t| Self::InvokeHostFunctionSuccessPreImage(Box::new(t)))),
62233 ),
62234 TypeVariant::TransactionMeta => Box::new(
62235 ReadXdrIter::<_, TransactionMeta>::new(dec, r.limits.clone())
62236 .map(|r| r.map(|t| Self::TransactionMeta(Box::new(t)))),
62237 ),
62238 TypeVariant::TransactionResultMeta => Box::new(
62239 ReadXdrIter::<_, TransactionResultMeta>::new(dec, r.limits.clone())
62240 .map(|r| r.map(|t| Self::TransactionResultMeta(Box::new(t)))),
62241 ),
62242 TypeVariant::TransactionResultMetaV1 => Box::new(
62243 ReadXdrIter::<_, TransactionResultMetaV1>::new(dec, r.limits.clone())
62244 .map(|r| r.map(|t| Self::TransactionResultMetaV1(Box::new(t)))),
62245 ),
62246 TypeVariant::UpgradeEntryMeta => Box::new(
62247 ReadXdrIter::<_, UpgradeEntryMeta>::new(dec, r.limits.clone())
62248 .map(|r| r.map(|t| Self::UpgradeEntryMeta(Box::new(t)))),
62249 ),
62250 TypeVariant::LedgerCloseMetaV0 => Box::new(
62251 ReadXdrIter::<_, LedgerCloseMetaV0>::new(dec, r.limits.clone())
62252 .map(|r| r.map(|t| Self::LedgerCloseMetaV0(Box::new(t)))),
62253 ),
62254 TypeVariant::LedgerCloseMetaExtV1 => Box::new(
62255 ReadXdrIter::<_, LedgerCloseMetaExtV1>::new(dec, r.limits.clone())
62256 .map(|r| r.map(|t| Self::LedgerCloseMetaExtV1(Box::new(t)))),
62257 ),
62258 TypeVariant::LedgerCloseMetaExt => Box::new(
62259 ReadXdrIter::<_, LedgerCloseMetaExt>::new(dec, r.limits.clone())
62260 .map(|r| r.map(|t| Self::LedgerCloseMetaExt(Box::new(t)))),
62261 ),
62262 TypeVariant::LedgerCloseMetaV1 => Box::new(
62263 ReadXdrIter::<_, LedgerCloseMetaV1>::new(dec, r.limits.clone())
62264 .map(|r| r.map(|t| Self::LedgerCloseMetaV1(Box::new(t)))),
62265 ),
62266 TypeVariant::LedgerCloseMetaV2 => Box::new(
62267 ReadXdrIter::<_, LedgerCloseMetaV2>::new(dec, r.limits.clone())
62268 .map(|r| r.map(|t| Self::LedgerCloseMetaV2(Box::new(t)))),
62269 ),
62270 TypeVariant::LedgerCloseMeta => Box::new(
62271 ReadXdrIter::<_, LedgerCloseMeta>::new(dec, r.limits.clone())
62272 .map(|r| r.map(|t| Self::LedgerCloseMeta(Box::new(t)))),
62273 ),
62274 TypeVariant::ErrorCode => Box::new(
62275 ReadXdrIter::<_, ErrorCode>::new(dec, r.limits.clone())
62276 .map(|r| r.map(|t| Self::ErrorCode(Box::new(t)))),
62277 ),
62278 TypeVariant::SError => Box::new(
62279 ReadXdrIter::<_, SError>::new(dec, r.limits.clone())
62280 .map(|r| r.map(|t| Self::SError(Box::new(t)))),
62281 ),
62282 TypeVariant::SendMore => Box::new(
62283 ReadXdrIter::<_, SendMore>::new(dec, r.limits.clone())
62284 .map(|r| r.map(|t| Self::SendMore(Box::new(t)))),
62285 ),
62286 TypeVariant::SendMoreExtended => Box::new(
62287 ReadXdrIter::<_, SendMoreExtended>::new(dec, r.limits.clone())
62288 .map(|r| r.map(|t| Self::SendMoreExtended(Box::new(t)))),
62289 ),
62290 TypeVariant::AuthCert => Box::new(
62291 ReadXdrIter::<_, AuthCert>::new(dec, r.limits.clone())
62292 .map(|r| r.map(|t| Self::AuthCert(Box::new(t)))),
62293 ),
62294 TypeVariant::Hello => Box::new(
62295 ReadXdrIter::<_, Hello>::new(dec, r.limits.clone())
62296 .map(|r| r.map(|t| Self::Hello(Box::new(t)))),
62297 ),
62298 TypeVariant::Auth => Box::new(
62299 ReadXdrIter::<_, Auth>::new(dec, r.limits.clone())
62300 .map(|r| r.map(|t| Self::Auth(Box::new(t)))),
62301 ),
62302 TypeVariant::IpAddrType => Box::new(
62303 ReadXdrIter::<_, IpAddrType>::new(dec, r.limits.clone())
62304 .map(|r| r.map(|t| Self::IpAddrType(Box::new(t)))),
62305 ),
62306 TypeVariant::PeerAddress => Box::new(
62307 ReadXdrIter::<_, PeerAddress>::new(dec, r.limits.clone())
62308 .map(|r| r.map(|t| Self::PeerAddress(Box::new(t)))),
62309 ),
62310 TypeVariant::PeerAddressIp => Box::new(
62311 ReadXdrIter::<_, PeerAddressIp>::new(dec, r.limits.clone())
62312 .map(|r| r.map(|t| Self::PeerAddressIp(Box::new(t)))),
62313 ),
62314 TypeVariant::MessageType => Box::new(
62315 ReadXdrIter::<_, MessageType>::new(dec, r.limits.clone())
62316 .map(|r| r.map(|t| Self::MessageType(Box::new(t)))),
62317 ),
62318 TypeVariant::DontHave => Box::new(
62319 ReadXdrIter::<_, DontHave>::new(dec, r.limits.clone())
62320 .map(|r| r.map(|t| Self::DontHave(Box::new(t)))),
62321 ),
62322 TypeVariant::SurveyMessageCommandType => Box::new(
62323 ReadXdrIter::<_, SurveyMessageCommandType>::new(dec, r.limits.clone())
62324 .map(|r| r.map(|t| Self::SurveyMessageCommandType(Box::new(t)))),
62325 ),
62326 TypeVariant::SurveyMessageResponseType => Box::new(
62327 ReadXdrIter::<_, SurveyMessageResponseType>::new(dec, r.limits.clone())
62328 .map(|r| r.map(|t| Self::SurveyMessageResponseType(Box::new(t)))),
62329 ),
62330 TypeVariant::TimeSlicedSurveyStartCollectingMessage => Box::new(
62331 ReadXdrIter::<_, TimeSlicedSurveyStartCollectingMessage>::new(
62332 dec,
62333 r.limits.clone(),
62334 )
62335 .map(|r| r.map(|t| Self::TimeSlicedSurveyStartCollectingMessage(Box::new(t)))),
62336 ),
62337 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => Box::new(
62338 ReadXdrIter::<_, SignedTimeSlicedSurveyStartCollectingMessage>::new(
62339 dec,
62340 r.limits.clone(),
62341 )
62342 .map(|r| {
62343 r.map(|t| Self::SignedTimeSlicedSurveyStartCollectingMessage(Box::new(t)))
62344 }),
62345 ),
62346 TypeVariant::TimeSlicedSurveyStopCollectingMessage => Box::new(
62347 ReadXdrIter::<_, TimeSlicedSurveyStopCollectingMessage>::new(dec, r.limits.clone())
62348 .map(|r| r.map(|t| Self::TimeSlicedSurveyStopCollectingMessage(Box::new(t)))),
62349 ),
62350 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => Box::new(
62351 ReadXdrIter::<_, SignedTimeSlicedSurveyStopCollectingMessage>::new(
62352 dec,
62353 r.limits.clone(),
62354 )
62355 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(t)))),
62356 ),
62357 TypeVariant::SurveyRequestMessage => Box::new(
62358 ReadXdrIter::<_, SurveyRequestMessage>::new(dec, r.limits.clone())
62359 .map(|r| r.map(|t| Self::SurveyRequestMessage(Box::new(t)))),
62360 ),
62361 TypeVariant::TimeSlicedSurveyRequestMessage => Box::new(
62362 ReadXdrIter::<_, TimeSlicedSurveyRequestMessage>::new(dec, r.limits.clone())
62363 .map(|r| r.map(|t| Self::TimeSlicedSurveyRequestMessage(Box::new(t)))),
62364 ),
62365 TypeVariant::SignedTimeSlicedSurveyRequestMessage => Box::new(
62366 ReadXdrIter::<_, SignedTimeSlicedSurveyRequestMessage>::new(dec, r.limits.clone())
62367 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyRequestMessage(Box::new(t)))),
62368 ),
62369 TypeVariant::EncryptedBody => Box::new(
62370 ReadXdrIter::<_, EncryptedBody>::new(dec, r.limits.clone())
62371 .map(|r| r.map(|t| Self::EncryptedBody(Box::new(t)))),
62372 ),
62373 TypeVariant::SurveyResponseMessage => Box::new(
62374 ReadXdrIter::<_, SurveyResponseMessage>::new(dec, r.limits.clone())
62375 .map(|r| r.map(|t| Self::SurveyResponseMessage(Box::new(t)))),
62376 ),
62377 TypeVariant::TimeSlicedSurveyResponseMessage => Box::new(
62378 ReadXdrIter::<_, TimeSlicedSurveyResponseMessage>::new(dec, r.limits.clone())
62379 .map(|r| r.map(|t| Self::TimeSlicedSurveyResponseMessage(Box::new(t)))),
62380 ),
62381 TypeVariant::SignedTimeSlicedSurveyResponseMessage => Box::new(
62382 ReadXdrIter::<_, SignedTimeSlicedSurveyResponseMessage>::new(dec, r.limits.clone())
62383 .map(|r| r.map(|t| Self::SignedTimeSlicedSurveyResponseMessage(Box::new(t)))),
62384 ),
62385 TypeVariant::PeerStats => Box::new(
62386 ReadXdrIter::<_, PeerStats>::new(dec, r.limits.clone())
62387 .map(|r| r.map(|t| Self::PeerStats(Box::new(t)))),
62388 ),
62389 TypeVariant::TimeSlicedNodeData => Box::new(
62390 ReadXdrIter::<_, TimeSlicedNodeData>::new(dec, r.limits.clone())
62391 .map(|r| r.map(|t| Self::TimeSlicedNodeData(Box::new(t)))),
62392 ),
62393 TypeVariant::TimeSlicedPeerData => Box::new(
62394 ReadXdrIter::<_, TimeSlicedPeerData>::new(dec, r.limits.clone())
62395 .map(|r| r.map(|t| Self::TimeSlicedPeerData(Box::new(t)))),
62396 ),
62397 TypeVariant::TimeSlicedPeerDataList => Box::new(
62398 ReadXdrIter::<_, TimeSlicedPeerDataList>::new(dec, r.limits.clone())
62399 .map(|r| r.map(|t| Self::TimeSlicedPeerDataList(Box::new(t)))),
62400 ),
62401 TypeVariant::TopologyResponseBodyV2 => Box::new(
62402 ReadXdrIter::<_, TopologyResponseBodyV2>::new(dec, r.limits.clone())
62403 .map(|r| r.map(|t| Self::TopologyResponseBodyV2(Box::new(t)))),
62404 ),
62405 TypeVariant::SurveyResponseBody => Box::new(
62406 ReadXdrIter::<_, SurveyResponseBody>::new(dec, r.limits.clone())
62407 .map(|r| r.map(|t| Self::SurveyResponseBody(Box::new(t)))),
62408 ),
62409 TypeVariant::TxAdvertVector => Box::new(
62410 ReadXdrIter::<_, TxAdvertVector>::new(dec, r.limits.clone())
62411 .map(|r| r.map(|t| Self::TxAdvertVector(Box::new(t)))),
62412 ),
62413 TypeVariant::FloodAdvert => Box::new(
62414 ReadXdrIter::<_, FloodAdvert>::new(dec, r.limits.clone())
62415 .map(|r| r.map(|t| Self::FloodAdvert(Box::new(t)))),
62416 ),
62417 TypeVariant::TxDemandVector => Box::new(
62418 ReadXdrIter::<_, TxDemandVector>::new(dec, r.limits.clone())
62419 .map(|r| r.map(|t| Self::TxDemandVector(Box::new(t)))),
62420 ),
62421 TypeVariant::FloodDemand => Box::new(
62422 ReadXdrIter::<_, FloodDemand>::new(dec, r.limits.clone())
62423 .map(|r| r.map(|t| Self::FloodDemand(Box::new(t)))),
62424 ),
62425 TypeVariant::StellarMessage => Box::new(
62426 ReadXdrIter::<_, StellarMessage>::new(dec, r.limits.clone())
62427 .map(|r| r.map(|t| Self::StellarMessage(Box::new(t)))),
62428 ),
62429 TypeVariant::AuthenticatedMessage => Box::new(
62430 ReadXdrIter::<_, AuthenticatedMessage>::new(dec, r.limits.clone())
62431 .map(|r| r.map(|t| Self::AuthenticatedMessage(Box::new(t)))),
62432 ),
62433 TypeVariant::AuthenticatedMessageV0 => Box::new(
62434 ReadXdrIter::<_, AuthenticatedMessageV0>::new(dec, r.limits.clone())
62435 .map(|r| r.map(|t| Self::AuthenticatedMessageV0(Box::new(t)))),
62436 ),
62437 TypeVariant::LiquidityPoolParameters => Box::new(
62438 ReadXdrIter::<_, LiquidityPoolParameters>::new(dec, r.limits.clone())
62439 .map(|r| r.map(|t| Self::LiquidityPoolParameters(Box::new(t)))),
62440 ),
62441 TypeVariant::MuxedAccount => Box::new(
62442 ReadXdrIter::<_, MuxedAccount>::new(dec, r.limits.clone())
62443 .map(|r| r.map(|t| Self::MuxedAccount(Box::new(t)))),
62444 ),
62445 TypeVariant::MuxedAccountMed25519 => Box::new(
62446 ReadXdrIter::<_, MuxedAccountMed25519>::new(dec, r.limits.clone())
62447 .map(|r| r.map(|t| Self::MuxedAccountMed25519(Box::new(t)))),
62448 ),
62449 TypeVariant::DecoratedSignature => Box::new(
62450 ReadXdrIter::<_, DecoratedSignature>::new(dec, r.limits.clone())
62451 .map(|r| r.map(|t| Self::DecoratedSignature(Box::new(t)))),
62452 ),
62453 TypeVariant::OperationType => Box::new(
62454 ReadXdrIter::<_, OperationType>::new(dec, r.limits.clone())
62455 .map(|r| r.map(|t| Self::OperationType(Box::new(t)))),
62456 ),
62457 TypeVariant::CreateAccountOp => Box::new(
62458 ReadXdrIter::<_, CreateAccountOp>::new(dec, r.limits.clone())
62459 .map(|r| r.map(|t| Self::CreateAccountOp(Box::new(t)))),
62460 ),
62461 TypeVariant::PaymentOp => Box::new(
62462 ReadXdrIter::<_, PaymentOp>::new(dec, r.limits.clone())
62463 .map(|r| r.map(|t| Self::PaymentOp(Box::new(t)))),
62464 ),
62465 TypeVariant::PathPaymentStrictReceiveOp => Box::new(
62466 ReadXdrIter::<_, PathPaymentStrictReceiveOp>::new(dec, r.limits.clone())
62467 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveOp(Box::new(t)))),
62468 ),
62469 TypeVariant::PathPaymentStrictSendOp => Box::new(
62470 ReadXdrIter::<_, PathPaymentStrictSendOp>::new(dec, r.limits.clone())
62471 .map(|r| r.map(|t| Self::PathPaymentStrictSendOp(Box::new(t)))),
62472 ),
62473 TypeVariant::ManageSellOfferOp => Box::new(
62474 ReadXdrIter::<_, ManageSellOfferOp>::new(dec, r.limits.clone())
62475 .map(|r| r.map(|t| Self::ManageSellOfferOp(Box::new(t)))),
62476 ),
62477 TypeVariant::ManageBuyOfferOp => Box::new(
62478 ReadXdrIter::<_, ManageBuyOfferOp>::new(dec, r.limits.clone())
62479 .map(|r| r.map(|t| Self::ManageBuyOfferOp(Box::new(t)))),
62480 ),
62481 TypeVariant::CreatePassiveSellOfferOp => Box::new(
62482 ReadXdrIter::<_, CreatePassiveSellOfferOp>::new(dec, r.limits.clone())
62483 .map(|r| r.map(|t| Self::CreatePassiveSellOfferOp(Box::new(t)))),
62484 ),
62485 TypeVariant::SetOptionsOp => Box::new(
62486 ReadXdrIter::<_, SetOptionsOp>::new(dec, r.limits.clone())
62487 .map(|r| r.map(|t| Self::SetOptionsOp(Box::new(t)))),
62488 ),
62489 TypeVariant::ChangeTrustAsset => Box::new(
62490 ReadXdrIter::<_, ChangeTrustAsset>::new(dec, r.limits.clone())
62491 .map(|r| r.map(|t| Self::ChangeTrustAsset(Box::new(t)))),
62492 ),
62493 TypeVariant::ChangeTrustOp => Box::new(
62494 ReadXdrIter::<_, ChangeTrustOp>::new(dec, r.limits.clone())
62495 .map(|r| r.map(|t| Self::ChangeTrustOp(Box::new(t)))),
62496 ),
62497 TypeVariant::AllowTrustOp => Box::new(
62498 ReadXdrIter::<_, AllowTrustOp>::new(dec, r.limits.clone())
62499 .map(|r| r.map(|t| Self::AllowTrustOp(Box::new(t)))),
62500 ),
62501 TypeVariant::ManageDataOp => Box::new(
62502 ReadXdrIter::<_, ManageDataOp>::new(dec, r.limits.clone())
62503 .map(|r| r.map(|t| Self::ManageDataOp(Box::new(t)))),
62504 ),
62505 TypeVariant::BumpSequenceOp => Box::new(
62506 ReadXdrIter::<_, BumpSequenceOp>::new(dec, r.limits.clone())
62507 .map(|r| r.map(|t| Self::BumpSequenceOp(Box::new(t)))),
62508 ),
62509 TypeVariant::CreateClaimableBalanceOp => Box::new(
62510 ReadXdrIter::<_, CreateClaimableBalanceOp>::new(dec, r.limits.clone())
62511 .map(|r| r.map(|t| Self::CreateClaimableBalanceOp(Box::new(t)))),
62512 ),
62513 TypeVariant::ClaimClaimableBalanceOp => Box::new(
62514 ReadXdrIter::<_, ClaimClaimableBalanceOp>::new(dec, r.limits.clone())
62515 .map(|r| r.map(|t| Self::ClaimClaimableBalanceOp(Box::new(t)))),
62516 ),
62517 TypeVariant::BeginSponsoringFutureReservesOp => Box::new(
62518 ReadXdrIter::<_, BeginSponsoringFutureReservesOp>::new(dec, r.limits.clone())
62519 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesOp(Box::new(t)))),
62520 ),
62521 TypeVariant::RevokeSponsorshipType => Box::new(
62522 ReadXdrIter::<_, RevokeSponsorshipType>::new(dec, r.limits.clone())
62523 .map(|r| r.map(|t| Self::RevokeSponsorshipType(Box::new(t)))),
62524 ),
62525 TypeVariant::RevokeSponsorshipOp => Box::new(
62526 ReadXdrIter::<_, RevokeSponsorshipOp>::new(dec, r.limits.clone())
62527 .map(|r| r.map(|t| Self::RevokeSponsorshipOp(Box::new(t)))),
62528 ),
62529 TypeVariant::RevokeSponsorshipOpSigner => Box::new(
62530 ReadXdrIter::<_, RevokeSponsorshipOpSigner>::new(dec, r.limits.clone())
62531 .map(|r| r.map(|t| Self::RevokeSponsorshipOpSigner(Box::new(t)))),
62532 ),
62533 TypeVariant::ClawbackOp => Box::new(
62534 ReadXdrIter::<_, ClawbackOp>::new(dec, r.limits.clone())
62535 .map(|r| r.map(|t| Self::ClawbackOp(Box::new(t)))),
62536 ),
62537 TypeVariant::ClawbackClaimableBalanceOp => Box::new(
62538 ReadXdrIter::<_, ClawbackClaimableBalanceOp>::new(dec, r.limits.clone())
62539 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceOp(Box::new(t)))),
62540 ),
62541 TypeVariant::SetTrustLineFlagsOp => Box::new(
62542 ReadXdrIter::<_, SetTrustLineFlagsOp>::new(dec, r.limits.clone())
62543 .map(|r| r.map(|t| Self::SetTrustLineFlagsOp(Box::new(t)))),
62544 ),
62545 TypeVariant::LiquidityPoolDepositOp => Box::new(
62546 ReadXdrIter::<_, LiquidityPoolDepositOp>::new(dec, r.limits.clone())
62547 .map(|r| r.map(|t| Self::LiquidityPoolDepositOp(Box::new(t)))),
62548 ),
62549 TypeVariant::LiquidityPoolWithdrawOp => Box::new(
62550 ReadXdrIter::<_, LiquidityPoolWithdrawOp>::new(dec, r.limits.clone())
62551 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawOp(Box::new(t)))),
62552 ),
62553 TypeVariant::HostFunctionType => Box::new(
62554 ReadXdrIter::<_, HostFunctionType>::new(dec, r.limits.clone())
62555 .map(|r| r.map(|t| Self::HostFunctionType(Box::new(t)))),
62556 ),
62557 TypeVariant::ContractIdPreimageType => Box::new(
62558 ReadXdrIter::<_, ContractIdPreimageType>::new(dec, r.limits.clone())
62559 .map(|r| r.map(|t| Self::ContractIdPreimageType(Box::new(t)))),
62560 ),
62561 TypeVariant::ContractIdPreimage => Box::new(
62562 ReadXdrIter::<_, ContractIdPreimage>::new(dec, r.limits.clone())
62563 .map(|r| r.map(|t| Self::ContractIdPreimage(Box::new(t)))),
62564 ),
62565 TypeVariant::ContractIdPreimageFromAddress => Box::new(
62566 ReadXdrIter::<_, ContractIdPreimageFromAddress>::new(dec, r.limits.clone())
62567 .map(|r| r.map(|t| Self::ContractIdPreimageFromAddress(Box::new(t)))),
62568 ),
62569 TypeVariant::CreateContractArgs => Box::new(
62570 ReadXdrIter::<_, CreateContractArgs>::new(dec, r.limits.clone())
62571 .map(|r| r.map(|t| Self::CreateContractArgs(Box::new(t)))),
62572 ),
62573 TypeVariant::CreateContractArgsV2 => Box::new(
62574 ReadXdrIter::<_, CreateContractArgsV2>::new(dec, r.limits.clone())
62575 .map(|r| r.map(|t| Self::CreateContractArgsV2(Box::new(t)))),
62576 ),
62577 TypeVariant::InvokeContractArgs => Box::new(
62578 ReadXdrIter::<_, InvokeContractArgs>::new(dec, r.limits.clone())
62579 .map(|r| r.map(|t| Self::InvokeContractArgs(Box::new(t)))),
62580 ),
62581 TypeVariant::HostFunction => Box::new(
62582 ReadXdrIter::<_, HostFunction>::new(dec, r.limits.clone())
62583 .map(|r| r.map(|t| Self::HostFunction(Box::new(t)))),
62584 ),
62585 TypeVariant::SorobanAuthorizedFunctionType => Box::new(
62586 ReadXdrIter::<_, SorobanAuthorizedFunctionType>::new(dec, r.limits.clone())
62587 .map(|r| r.map(|t| Self::SorobanAuthorizedFunctionType(Box::new(t)))),
62588 ),
62589 TypeVariant::SorobanAuthorizedFunction => Box::new(
62590 ReadXdrIter::<_, SorobanAuthorizedFunction>::new(dec, r.limits.clone())
62591 .map(|r| r.map(|t| Self::SorobanAuthorizedFunction(Box::new(t)))),
62592 ),
62593 TypeVariant::SorobanAuthorizedInvocation => Box::new(
62594 ReadXdrIter::<_, SorobanAuthorizedInvocation>::new(dec, r.limits.clone())
62595 .map(|r| r.map(|t| Self::SorobanAuthorizedInvocation(Box::new(t)))),
62596 ),
62597 TypeVariant::SorobanAddressCredentials => Box::new(
62598 ReadXdrIter::<_, SorobanAddressCredentials>::new(dec, r.limits.clone())
62599 .map(|r| r.map(|t| Self::SorobanAddressCredentials(Box::new(t)))),
62600 ),
62601 TypeVariant::SorobanCredentialsType => Box::new(
62602 ReadXdrIter::<_, SorobanCredentialsType>::new(dec, r.limits.clone())
62603 .map(|r| r.map(|t| Self::SorobanCredentialsType(Box::new(t)))),
62604 ),
62605 TypeVariant::SorobanCredentials => Box::new(
62606 ReadXdrIter::<_, SorobanCredentials>::new(dec, r.limits.clone())
62607 .map(|r| r.map(|t| Self::SorobanCredentials(Box::new(t)))),
62608 ),
62609 TypeVariant::SorobanAuthorizationEntry => Box::new(
62610 ReadXdrIter::<_, SorobanAuthorizationEntry>::new(dec, r.limits.clone())
62611 .map(|r| r.map(|t| Self::SorobanAuthorizationEntry(Box::new(t)))),
62612 ),
62613 TypeVariant::SorobanAuthorizationEntries => Box::new(
62614 ReadXdrIter::<_, SorobanAuthorizationEntries>::new(dec, r.limits.clone())
62615 .map(|r| r.map(|t| Self::SorobanAuthorizationEntries(Box::new(t)))),
62616 ),
62617 TypeVariant::InvokeHostFunctionOp => Box::new(
62618 ReadXdrIter::<_, InvokeHostFunctionOp>::new(dec, r.limits.clone())
62619 .map(|r| r.map(|t| Self::InvokeHostFunctionOp(Box::new(t)))),
62620 ),
62621 TypeVariant::ExtendFootprintTtlOp => Box::new(
62622 ReadXdrIter::<_, ExtendFootprintTtlOp>::new(dec, r.limits.clone())
62623 .map(|r| r.map(|t| Self::ExtendFootprintTtlOp(Box::new(t)))),
62624 ),
62625 TypeVariant::RestoreFootprintOp => Box::new(
62626 ReadXdrIter::<_, RestoreFootprintOp>::new(dec, r.limits.clone())
62627 .map(|r| r.map(|t| Self::RestoreFootprintOp(Box::new(t)))),
62628 ),
62629 TypeVariant::Operation => Box::new(
62630 ReadXdrIter::<_, Operation>::new(dec, r.limits.clone())
62631 .map(|r| r.map(|t| Self::Operation(Box::new(t)))),
62632 ),
62633 TypeVariant::OperationBody => Box::new(
62634 ReadXdrIter::<_, OperationBody>::new(dec, r.limits.clone())
62635 .map(|r| r.map(|t| Self::OperationBody(Box::new(t)))),
62636 ),
62637 TypeVariant::HashIdPreimage => Box::new(
62638 ReadXdrIter::<_, HashIdPreimage>::new(dec, r.limits.clone())
62639 .map(|r| r.map(|t| Self::HashIdPreimage(Box::new(t)))),
62640 ),
62641 TypeVariant::HashIdPreimageOperationId => Box::new(
62642 ReadXdrIter::<_, HashIdPreimageOperationId>::new(dec, r.limits.clone())
62643 .map(|r| r.map(|t| Self::HashIdPreimageOperationId(Box::new(t)))),
62644 ),
62645 TypeVariant::HashIdPreimageRevokeId => Box::new(
62646 ReadXdrIter::<_, HashIdPreimageRevokeId>::new(dec, r.limits.clone())
62647 .map(|r| r.map(|t| Self::HashIdPreimageRevokeId(Box::new(t)))),
62648 ),
62649 TypeVariant::HashIdPreimageContractId => Box::new(
62650 ReadXdrIter::<_, HashIdPreimageContractId>::new(dec, r.limits.clone())
62651 .map(|r| r.map(|t| Self::HashIdPreimageContractId(Box::new(t)))),
62652 ),
62653 TypeVariant::HashIdPreimageSorobanAuthorization => Box::new(
62654 ReadXdrIter::<_, HashIdPreimageSorobanAuthorization>::new(dec, r.limits.clone())
62655 .map(|r| r.map(|t| Self::HashIdPreimageSorobanAuthorization(Box::new(t)))),
62656 ),
62657 TypeVariant::MemoType => Box::new(
62658 ReadXdrIter::<_, MemoType>::new(dec, r.limits.clone())
62659 .map(|r| r.map(|t| Self::MemoType(Box::new(t)))),
62660 ),
62661 TypeVariant::Memo => Box::new(
62662 ReadXdrIter::<_, Memo>::new(dec, r.limits.clone())
62663 .map(|r| r.map(|t| Self::Memo(Box::new(t)))),
62664 ),
62665 TypeVariant::TimeBounds => Box::new(
62666 ReadXdrIter::<_, TimeBounds>::new(dec, r.limits.clone())
62667 .map(|r| r.map(|t| Self::TimeBounds(Box::new(t)))),
62668 ),
62669 TypeVariant::LedgerBounds => Box::new(
62670 ReadXdrIter::<_, LedgerBounds>::new(dec, r.limits.clone())
62671 .map(|r| r.map(|t| Self::LedgerBounds(Box::new(t)))),
62672 ),
62673 TypeVariant::PreconditionsV2 => Box::new(
62674 ReadXdrIter::<_, PreconditionsV2>::new(dec, r.limits.clone())
62675 .map(|r| r.map(|t| Self::PreconditionsV2(Box::new(t)))),
62676 ),
62677 TypeVariant::PreconditionType => Box::new(
62678 ReadXdrIter::<_, PreconditionType>::new(dec, r.limits.clone())
62679 .map(|r| r.map(|t| Self::PreconditionType(Box::new(t)))),
62680 ),
62681 TypeVariant::Preconditions => Box::new(
62682 ReadXdrIter::<_, Preconditions>::new(dec, r.limits.clone())
62683 .map(|r| r.map(|t| Self::Preconditions(Box::new(t)))),
62684 ),
62685 TypeVariant::LedgerFootprint => Box::new(
62686 ReadXdrIter::<_, LedgerFootprint>::new(dec, r.limits.clone())
62687 .map(|r| r.map(|t| Self::LedgerFootprint(Box::new(t)))),
62688 ),
62689 TypeVariant::SorobanResources => Box::new(
62690 ReadXdrIter::<_, SorobanResources>::new(dec, r.limits.clone())
62691 .map(|r| r.map(|t| Self::SorobanResources(Box::new(t)))),
62692 ),
62693 TypeVariant::SorobanResourcesExtV0 => Box::new(
62694 ReadXdrIter::<_, SorobanResourcesExtV0>::new(dec, r.limits.clone())
62695 .map(|r| r.map(|t| Self::SorobanResourcesExtV0(Box::new(t)))),
62696 ),
62697 TypeVariant::SorobanTransactionData => Box::new(
62698 ReadXdrIter::<_, SorobanTransactionData>::new(dec, r.limits.clone())
62699 .map(|r| r.map(|t| Self::SorobanTransactionData(Box::new(t)))),
62700 ),
62701 TypeVariant::SorobanTransactionDataExt => Box::new(
62702 ReadXdrIter::<_, SorobanTransactionDataExt>::new(dec, r.limits.clone())
62703 .map(|r| r.map(|t| Self::SorobanTransactionDataExt(Box::new(t)))),
62704 ),
62705 TypeVariant::TransactionV0 => Box::new(
62706 ReadXdrIter::<_, TransactionV0>::new(dec, r.limits.clone())
62707 .map(|r| r.map(|t| Self::TransactionV0(Box::new(t)))),
62708 ),
62709 TypeVariant::TransactionV0Ext => Box::new(
62710 ReadXdrIter::<_, TransactionV0Ext>::new(dec, r.limits.clone())
62711 .map(|r| r.map(|t| Self::TransactionV0Ext(Box::new(t)))),
62712 ),
62713 TypeVariant::TransactionV0Envelope => Box::new(
62714 ReadXdrIter::<_, TransactionV0Envelope>::new(dec, r.limits.clone())
62715 .map(|r| r.map(|t| Self::TransactionV0Envelope(Box::new(t)))),
62716 ),
62717 TypeVariant::Transaction => Box::new(
62718 ReadXdrIter::<_, Transaction>::new(dec, r.limits.clone())
62719 .map(|r| r.map(|t| Self::Transaction(Box::new(t)))),
62720 ),
62721 TypeVariant::TransactionExt => Box::new(
62722 ReadXdrIter::<_, TransactionExt>::new(dec, r.limits.clone())
62723 .map(|r| r.map(|t| Self::TransactionExt(Box::new(t)))),
62724 ),
62725 TypeVariant::TransactionV1Envelope => Box::new(
62726 ReadXdrIter::<_, TransactionV1Envelope>::new(dec, r.limits.clone())
62727 .map(|r| r.map(|t| Self::TransactionV1Envelope(Box::new(t)))),
62728 ),
62729 TypeVariant::FeeBumpTransaction => Box::new(
62730 ReadXdrIter::<_, FeeBumpTransaction>::new(dec, r.limits.clone())
62731 .map(|r| r.map(|t| Self::FeeBumpTransaction(Box::new(t)))),
62732 ),
62733 TypeVariant::FeeBumpTransactionInnerTx => Box::new(
62734 ReadXdrIter::<_, FeeBumpTransactionInnerTx>::new(dec, r.limits.clone())
62735 .map(|r| r.map(|t| Self::FeeBumpTransactionInnerTx(Box::new(t)))),
62736 ),
62737 TypeVariant::FeeBumpTransactionExt => Box::new(
62738 ReadXdrIter::<_, FeeBumpTransactionExt>::new(dec, r.limits.clone())
62739 .map(|r| r.map(|t| Self::FeeBumpTransactionExt(Box::new(t)))),
62740 ),
62741 TypeVariant::FeeBumpTransactionEnvelope => Box::new(
62742 ReadXdrIter::<_, FeeBumpTransactionEnvelope>::new(dec, r.limits.clone())
62743 .map(|r| r.map(|t| Self::FeeBumpTransactionEnvelope(Box::new(t)))),
62744 ),
62745 TypeVariant::TransactionEnvelope => Box::new(
62746 ReadXdrIter::<_, TransactionEnvelope>::new(dec, r.limits.clone())
62747 .map(|r| r.map(|t| Self::TransactionEnvelope(Box::new(t)))),
62748 ),
62749 TypeVariant::TransactionSignaturePayload => Box::new(
62750 ReadXdrIter::<_, TransactionSignaturePayload>::new(dec, r.limits.clone())
62751 .map(|r| r.map(|t| Self::TransactionSignaturePayload(Box::new(t)))),
62752 ),
62753 TypeVariant::TransactionSignaturePayloadTaggedTransaction => Box::new(
62754 ReadXdrIter::<_, TransactionSignaturePayloadTaggedTransaction>::new(
62755 dec,
62756 r.limits.clone(),
62757 )
62758 .map(|r| {
62759 r.map(|t| Self::TransactionSignaturePayloadTaggedTransaction(Box::new(t)))
62760 }),
62761 ),
62762 TypeVariant::ClaimAtomType => Box::new(
62763 ReadXdrIter::<_, ClaimAtomType>::new(dec, r.limits.clone())
62764 .map(|r| r.map(|t| Self::ClaimAtomType(Box::new(t)))),
62765 ),
62766 TypeVariant::ClaimOfferAtomV0 => Box::new(
62767 ReadXdrIter::<_, ClaimOfferAtomV0>::new(dec, r.limits.clone())
62768 .map(|r| r.map(|t| Self::ClaimOfferAtomV0(Box::new(t)))),
62769 ),
62770 TypeVariant::ClaimOfferAtom => Box::new(
62771 ReadXdrIter::<_, ClaimOfferAtom>::new(dec, r.limits.clone())
62772 .map(|r| r.map(|t| Self::ClaimOfferAtom(Box::new(t)))),
62773 ),
62774 TypeVariant::ClaimLiquidityAtom => Box::new(
62775 ReadXdrIter::<_, ClaimLiquidityAtom>::new(dec, r.limits.clone())
62776 .map(|r| r.map(|t| Self::ClaimLiquidityAtom(Box::new(t)))),
62777 ),
62778 TypeVariant::ClaimAtom => Box::new(
62779 ReadXdrIter::<_, ClaimAtom>::new(dec, r.limits.clone())
62780 .map(|r| r.map(|t| Self::ClaimAtom(Box::new(t)))),
62781 ),
62782 TypeVariant::CreateAccountResultCode => Box::new(
62783 ReadXdrIter::<_, CreateAccountResultCode>::new(dec, r.limits.clone())
62784 .map(|r| r.map(|t| Self::CreateAccountResultCode(Box::new(t)))),
62785 ),
62786 TypeVariant::CreateAccountResult => Box::new(
62787 ReadXdrIter::<_, CreateAccountResult>::new(dec, r.limits.clone())
62788 .map(|r| r.map(|t| Self::CreateAccountResult(Box::new(t)))),
62789 ),
62790 TypeVariant::PaymentResultCode => Box::new(
62791 ReadXdrIter::<_, PaymentResultCode>::new(dec, r.limits.clone())
62792 .map(|r| r.map(|t| Self::PaymentResultCode(Box::new(t)))),
62793 ),
62794 TypeVariant::PaymentResult => Box::new(
62795 ReadXdrIter::<_, PaymentResult>::new(dec, r.limits.clone())
62796 .map(|r| r.map(|t| Self::PaymentResult(Box::new(t)))),
62797 ),
62798 TypeVariant::PathPaymentStrictReceiveResultCode => Box::new(
62799 ReadXdrIter::<_, PathPaymentStrictReceiveResultCode>::new(dec, r.limits.clone())
62800 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultCode(Box::new(t)))),
62801 ),
62802 TypeVariant::SimplePaymentResult => Box::new(
62803 ReadXdrIter::<_, SimplePaymentResult>::new(dec, r.limits.clone())
62804 .map(|r| r.map(|t| Self::SimplePaymentResult(Box::new(t)))),
62805 ),
62806 TypeVariant::PathPaymentStrictReceiveResult => Box::new(
62807 ReadXdrIter::<_, PathPaymentStrictReceiveResult>::new(dec, r.limits.clone())
62808 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResult(Box::new(t)))),
62809 ),
62810 TypeVariant::PathPaymentStrictReceiveResultSuccess => Box::new(
62811 ReadXdrIter::<_, PathPaymentStrictReceiveResultSuccess>::new(dec, r.limits.clone())
62812 .map(|r| r.map(|t| Self::PathPaymentStrictReceiveResultSuccess(Box::new(t)))),
62813 ),
62814 TypeVariant::PathPaymentStrictSendResultCode => Box::new(
62815 ReadXdrIter::<_, PathPaymentStrictSendResultCode>::new(dec, r.limits.clone())
62816 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultCode(Box::new(t)))),
62817 ),
62818 TypeVariant::PathPaymentStrictSendResult => Box::new(
62819 ReadXdrIter::<_, PathPaymentStrictSendResult>::new(dec, r.limits.clone())
62820 .map(|r| r.map(|t| Self::PathPaymentStrictSendResult(Box::new(t)))),
62821 ),
62822 TypeVariant::PathPaymentStrictSendResultSuccess => Box::new(
62823 ReadXdrIter::<_, PathPaymentStrictSendResultSuccess>::new(dec, r.limits.clone())
62824 .map(|r| r.map(|t| Self::PathPaymentStrictSendResultSuccess(Box::new(t)))),
62825 ),
62826 TypeVariant::ManageSellOfferResultCode => Box::new(
62827 ReadXdrIter::<_, ManageSellOfferResultCode>::new(dec, r.limits.clone())
62828 .map(|r| r.map(|t| Self::ManageSellOfferResultCode(Box::new(t)))),
62829 ),
62830 TypeVariant::ManageOfferEffect => Box::new(
62831 ReadXdrIter::<_, ManageOfferEffect>::new(dec, r.limits.clone())
62832 .map(|r| r.map(|t| Self::ManageOfferEffect(Box::new(t)))),
62833 ),
62834 TypeVariant::ManageOfferSuccessResult => Box::new(
62835 ReadXdrIter::<_, ManageOfferSuccessResult>::new(dec, r.limits.clone())
62836 .map(|r| r.map(|t| Self::ManageOfferSuccessResult(Box::new(t)))),
62837 ),
62838 TypeVariant::ManageOfferSuccessResultOffer => Box::new(
62839 ReadXdrIter::<_, ManageOfferSuccessResultOffer>::new(dec, r.limits.clone())
62840 .map(|r| r.map(|t| Self::ManageOfferSuccessResultOffer(Box::new(t)))),
62841 ),
62842 TypeVariant::ManageSellOfferResult => Box::new(
62843 ReadXdrIter::<_, ManageSellOfferResult>::new(dec, r.limits.clone())
62844 .map(|r| r.map(|t| Self::ManageSellOfferResult(Box::new(t)))),
62845 ),
62846 TypeVariant::ManageBuyOfferResultCode => Box::new(
62847 ReadXdrIter::<_, ManageBuyOfferResultCode>::new(dec, r.limits.clone())
62848 .map(|r| r.map(|t| Self::ManageBuyOfferResultCode(Box::new(t)))),
62849 ),
62850 TypeVariant::ManageBuyOfferResult => Box::new(
62851 ReadXdrIter::<_, ManageBuyOfferResult>::new(dec, r.limits.clone())
62852 .map(|r| r.map(|t| Self::ManageBuyOfferResult(Box::new(t)))),
62853 ),
62854 TypeVariant::SetOptionsResultCode => Box::new(
62855 ReadXdrIter::<_, SetOptionsResultCode>::new(dec, r.limits.clone())
62856 .map(|r| r.map(|t| Self::SetOptionsResultCode(Box::new(t)))),
62857 ),
62858 TypeVariant::SetOptionsResult => Box::new(
62859 ReadXdrIter::<_, SetOptionsResult>::new(dec, r.limits.clone())
62860 .map(|r| r.map(|t| Self::SetOptionsResult(Box::new(t)))),
62861 ),
62862 TypeVariant::ChangeTrustResultCode => Box::new(
62863 ReadXdrIter::<_, ChangeTrustResultCode>::new(dec, r.limits.clone())
62864 .map(|r| r.map(|t| Self::ChangeTrustResultCode(Box::new(t)))),
62865 ),
62866 TypeVariant::ChangeTrustResult => Box::new(
62867 ReadXdrIter::<_, ChangeTrustResult>::new(dec, r.limits.clone())
62868 .map(|r| r.map(|t| Self::ChangeTrustResult(Box::new(t)))),
62869 ),
62870 TypeVariant::AllowTrustResultCode => Box::new(
62871 ReadXdrIter::<_, AllowTrustResultCode>::new(dec, r.limits.clone())
62872 .map(|r| r.map(|t| Self::AllowTrustResultCode(Box::new(t)))),
62873 ),
62874 TypeVariant::AllowTrustResult => Box::new(
62875 ReadXdrIter::<_, AllowTrustResult>::new(dec, r.limits.clone())
62876 .map(|r| r.map(|t| Self::AllowTrustResult(Box::new(t)))),
62877 ),
62878 TypeVariant::AccountMergeResultCode => Box::new(
62879 ReadXdrIter::<_, AccountMergeResultCode>::new(dec, r.limits.clone())
62880 .map(|r| r.map(|t| Self::AccountMergeResultCode(Box::new(t)))),
62881 ),
62882 TypeVariant::AccountMergeResult => Box::new(
62883 ReadXdrIter::<_, AccountMergeResult>::new(dec, r.limits.clone())
62884 .map(|r| r.map(|t| Self::AccountMergeResult(Box::new(t)))),
62885 ),
62886 TypeVariant::InflationResultCode => Box::new(
62887 ReadXdrIter::<_, InflationResultCode>::new(dec, r.limits.clone())
62888 .map(|r| r.map(|t| Self::InflationResultCode(Box::new(t)))),
62889 ),
62890 TypeVariant::InflationPayout => Box::new(
62891 ReadXdrIter::<_, InflationPayout>::new(dec, r.limits.clone())
62892 .map(|r| r.map(|t| Self::InflationPayout(Box::new(t)))),
62893 ),
62894 TypeVariant::InflationResult => Box::new(
62895 ReadXdrIter::<_, InflationResult>::new(dec, r.limits.clone())
62896 .map(|r| r.map(|t| Self::InflationResult(Box::new(t)))),
62897 ),
62898 TypeVariant::ManageDataResultCode => Box::new(
62899 ReadXdrIter::<_, ManageDataResultCode>::new(dec, r.limits.clone())
62900 .map(|r| r.map(|t| Self::ManageDataResultCode(Box::new(t)))),
62901 ),
62902 TypeVariant::ManageDataResult => Box::new(
62903 ReadXdrIter::<_, ManageDataResult>::new(dec, r.limits.clone())
62904 .map(|r| r.map(|t| Self::ManageDataResult(Box::new(t)))),
62905 ),
62906 TypeVariant::BumpSequenceResultCode => Box::new(
62907 ReadXdrIter::<_, BumpSequenceResultCode>::new(dec, r.limits.clone())
62908 .map(|r| r.map(|t| Self::BumpSequenceResultCode(Box::new(t)))),
62909 ),
62910 TypeVariant::BumpSequenceResult => Box::new(
62911 ReadXdrIter::<_, BumpSequenceResult>::new(dec, r.limits.clone())
62912 .map(|r| r.map(|t| Self::BumpSequenceResult(Box::new(t)))),
62913 ),
62914 TypeVariant::CreateClaimableBalanceResultCode => Box::new(
62915 ReadXdrIter::<_, CreateClaimableBalanceResultCode>::new(dec, r.limits.clone())
62916 .map(|r| r.map(|t| Self::CreateClaimableBalanceResultCode(Box::new(t)))),
62917 ),
62918 TypeVariant::CreateClaimableBalanceResult => Box::new(
62919 ReadXdrIter::<_, CreateClaimableBalanceResult>::new(dec, r.limits.clone())
62920 .map(|r| r.map(|t| Self::CreateClaimableBalanceResult(Box::new(t)))),
62921 ),
62922 TypeVariant::ClaimClaimableBalanceResultCode => Box::new(
62923 ReadXdrIter::<_, ClaimClaimableBalanceResultCode>::new(dec, r.limits.clone())
62924 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResultCode(Box::new(t)))),
62925 ),
62926 TypeVariant::ClaimClaimableBalanceResult => Box::new(
62927 ReadXdrIter::<_, ClaimClaimableBalanceResult>::new(dec, r.limits.clone())
62928 .map(|r| r.map(|t| Self::ClaimClaimableBalanceResult(Box::new(t)))),
62929 ),
62930 TypeVariant::BeginSponsoringFutureReservesResultCode => Box::new(
62931 ReadXdrIter::<_, BeginSponsoringFutureReservesResultCode>::new(
62932 dec,
62933 r.limits.clone(),
62934 )
62935 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResultCode(Box::new(t)))),
62936 ),
62937 TypeVariant::BeginSponsoringFutureReservesResult => Box::new(
62938 ReadXdrIter::<_, BeginSponsoringFutureReservesResult>::new(dec, r.limits.clone())
62939 .map(|r| r.map(|t| Self::BeginSponsoringFutureReservesResult(Box::new(t)))),
62940 ),
62941 TypeVariant::EndSponsoringFutureReservesResultCode => Box::new(
62942 ReadXdrIter::<_, EndSponsoringFutureReservesResultCode>::new(dec, r.limits.clone())
62943 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResultCode(Box::new(t)))),
62944 ),
62945 TypeVariant::EndSponsoringFutureReservesResult => Box::new(
62946 ReadXdrIter::<_, EndSponsoringFutureReservesResult>::new(dec, r.limits.clone())
62947 .map(|r| r.map(|t| Self::EndSponsoringFutureReservesResult(Box::new(t)))),
62948 ),
62949 TypeVariant::RevokeSponsorshipResultCode => Box::new(
62950 ReadXdrIter::<_, RevokeSponsorshipResultCode>::new(dec, r.limits.clone())
62951 .map(|r| r.map(|t| Self::RevokeSponsorshipResultCode(Box::new(t)))),
62952 ),
62953 TypeVariant::RevokeSponsorshipResult => Box::new(
62954 ReadXdrIter::<_, RevokeSponsorshipResult>::new(dec, r.limits.clone())
62955 .map(|r| r.map(|t| Self::RevokeSponsorshipResult(Box::new(t)))),
62956 ),
62957 TypeVariant::ClawbackResultCode => Box::new(
62958 ReadXdrIter::<_, ClawbackResultCode>::new(dec, r.limits.clone())
62959 .map(|r| r.map(|t| Self::ClawbackResultCode(Box::new(t)))),
62960 ),
62961 TypeVariant::ClawbackResult => Box::new(
62962 ReadXdrIter::<_, ClawbackResult>::new(dec, r.limits.clone())
62963 .map(|r| r.map(|t| Self::ClawbackResult(Box::new(t)))),
62964 ),
62965 TypeVariant::ClawbackClaimableBalanceResultCode => Box::new(
62966 ReadXdrIter::<_, ClawbackClaimableBalanceResultCode>::new(dec, r.limits.clone())
62967 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResultCode(Box::new(t)))),
62968 ),
62969 TypeVariant::ClawbackClaimableBalanceResult => Box::new(
62970 ReadXdrIter::<_, ClawbackClaimableBalanceResult>::new(dec, r.limits.clone())
62971 .map(|r| r.map(|t| Self::ClawbackClaimableBalanceResult(Box::new(t)))),
62972 ),
62973 TypeVariant::SetTrustLineFlagsResultCode => Box::new(
62974 ReadXdrIter::<_, SetTrustLineFlagsResultCode>::new(dec, r.limits.clone())
62975 .map(|r| r.map(|t| Self::SetTrustLineFlagsResultCode(Box::new(t)))),
62976 ),
62977 TypeVariant::SetTrustLineFlagsResult => Box::new(
62978 ReadXdrIter::<_, SetTrustLineFlagsResult>::new(dec, r.limits.clone())
62979 .map(|r| r.map(|t| Self::SetTrustLineFlagsResult(Box::new(t)))),
62980 ),
62981 TypeVariant::LiquidityPoolDepositResultCode => Box::new(
62982 ReadXdrIter::<_, LiquidityPoolDepositResultCode>::new(dec, r.limits.clone())
62983 .map(|r| r.map(|t| Self::LiquidityPoolDepositResultCode(Box::new(t)))),
62984 ),
62985 TypeVariant::LiquidityPoolDepositResult => Box::new(
62986 ReadXdrIter::<_, LiquidityPoolDepositResult>::new(dec, r.limits.clone())
62987 .map(|r| r.map(|t| Self::LiquidityPoolDepositResult(Box::new(t)))),
62988 ),
62989 TypeVariant::LiquidityPoolWithdrawResultCode => Box::new(
62990 ReadXdrIter::<_, LiquidityPoolWithdrawResultCode>::new(dec, r.limits.clone())
62991 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResultCode(Box::new(t)))),
62992 ),
62993 TypeVariant::LiquidityPoolWithdrawResult => Box::new(
62994 ReadXdrIter::<_, LiquidityPoolWithdrawResult>::new(dec, r.limits.clone())
62995 .map(|r| r.map(|t| Self::LiquidityPoolWithdrawResult(Box::new(t)))),
62996 ),
62997 TypeVariant::InvokeHostFunctionResultCode => Box::new(
62998 ReadXdrIter::<_, InvokeHostFunctionResultCode>::new(dec, r.limits.clone())
62999 .map(|r| r.map(|t| Self::InvokeHostFunctionResultCode(Box::new(t)))),
63000 ),
63001 TypeVariant::InvokeHostFunctionResult => Box::new(
63002 ReadXdrIter::<_, InvokeHostFunctionResult>::new(dec, r.limits.clone())
63003 .map(|r| r.map(|t| Self::InvokeHostFunctionResult(Box::new(t)))),
63004 ),
63005 TypeVariant::ExtendFootprintTtlResultCode => Box::new(
63006 ReadXdrIter::<_, ExtendFootprintTtlResultCode>::new(dec, r.limits.clone())
63007 .map(|r| r.map(|t| Self::ExtendFootprintTtlResultCode(Box::new(t)))),
63008 ),
63009 TypeVariant::ExtendFootprintTtlResult => Box::new(
63010 ReadXdrIter::<_, ExtendFootprintTtlResult>::new(dec, r.limits.clone())
63011 .map(|r| r.map(|t| Self::ExtendFootprintTtlResult(Box::new(t)))),
63012 ),
63013 TypeVariant::RestoreFootprintResultCode => Box::new(
63014 ReadXdrIter::<_, RestoreFootprintResultCode>::new(dec, r.limits.clone())
63015 .map(|r| r.map(|t| Self::RestoreFootprintResultCode(Box::new(t)))),
63016 ),
63017 TypeVariant::RestoreFootprintResult => Box::new(
63018 ReadXdrIter::<_, RestoreFootprintResult>::new(dec, r.limits.clone())
63019 .map(|r| r.map(|t| Self::RestoreFootprintResult(Box::new(t)))),
63020 ),
63021 TypeVariant::OperationResultCode => Box::new(
63022 ReadXdrIter::<_, OperationResultCode>::new(dec, r.limits.clone())
63023 .map(|r| r.map(|t| Self::OperationResultCode(Box::new(t)))),
63024 ),
63025 TypeVariant::OperationResult => Box::new(
63026 ReadXdrIter::<_, OperationResult>::new(dec, r.limits.clone())
63027 .map(|r| r.map(|t| Self::OperationResult(Box::new(t)))),
63028 ),
63029 TypeVariant::OperationResultTr => Box::new(
63030 ReadXdrIter::<_, OperationResultTr>::new(dec, r.limits.clone())
63031 .map(|r| r.map(|t| Self::OperationResultTr(Box::new(t)))),
63032 ),
63033 TypeVariant::TransactionResultCode => Box::new(
63034 ReadXdrIter::<_, TransactionResultCode>::new(dec, r.limits.clone())
63035 .map(|r| r.map(|t| Self::TransactionResultCode(Box::new(t)))),
63036 ),
63037 TypeVariant::InnerTransactionResult => Box::new(
63038 ReadXdrIter::<_, InnerTransactionResult>::new(dec, r.limits.clone())
63039 .map(|r| r.map(|t| Self::InnerTransactionResult(Box::new(t)))),
63040 ),
63041 TypeVariant::InnerTransactionResultResult => Box::new(
63042 ReadXdrIter::<_, InnerTransactionResultResult>::new(dec, r.limits.clone())
63043 .map(|r| r.map(|t| Self::InnerTransactionResultResult(Box::new(t)))),
63044 ),
63045 TypeVariant::InnerTransactionResultExt => Box::new(
63046 ReadXdrIter::<_, InnerTransactionResultExt>::new(dec, r.limits.clone())
63047 .map(|r| r.map(|t| Self::InnerTransactionResultExt(Box::new(t)))),
63048 ),
63049 TypeVariant::InnerTransactionResultPair => Box::new(
63050 ReadXdrIter::<_, InnerTransactionResultPair>::new(dec, r.limits.clone())
63051 .map(|r| r.map(|t| Self::InnerTransactionResultPair(Box::new(t)))),
63052 ),
63053 TypeVariant::TransactionResult => Box::new(
63054 ReadXdrIter::<_, TransactionResult>::new(dec, r.limits.clone())
63055 .map(|r| r.map(|t| Self::TransactionResult(Box::new(t)))),
63056 ),
63057 TypeVariant::TransactionResultResult => Box::new(
63058 ReadXdrIter::<_, TransactionResultResult>::new(dec, r.limits.clone())
63059 .map(|r| r.map(|t| Self::TransactionResultResult(Box::new(t)))),
63060 ),
63061 TypeVariant::TransactionResultExt => Box::new(
63062 ReadXdrIter::<_, TransactionResultExt>::new(dec, r.limits.clone())
63063 .map(|r| r.map(|t| Self::TransactionResultExt(Box::new(t)))),
63064 ),
63065 TypeVariant::Hash => Box::new(
63066 ReadXdrIter::<_, Hash>::new(dec, r.limits.clone())
63067 .map(|r| r.map(|t| Self::Hash(Box::new(t)))),
63068 ),
63069 TypeVariant::Uint256 => Box::new(
63070 ReadXdrIter::<_, Uint256>::new(dec, r.limits.clone())
63071 .map(|r| r.map(|t| Self::Uint256(Box::new(t)))),
63072 ),
63073 TypeVariant::Uint32 => Box::new(
63074 ReadXdrIter::<_, Uint32>::new(dec, r.limits.clone())
63075 .map(|r| r.map(|t| Self::Uint32(Box::new(t)))),
63076 ),
63077 TypeVariant::Int32 => Box::new(
63078 ReadXdrIter::<_, Int32>::new(dec, r.limits.clone())
63079 .map(|r| r.map(|t| Self::Int32(Box::new(t)))),
63080 ),
63081 TypeVariant::Uint64 => Box::new(
63082 ReadXdrIter::<_, Uint64>::new(dec, r.limits.clone())
63083 .map(|r| r.map(|t| Self::Uint64(Box::new(t)))),
63084 ),
63085 TypeVariant::Int64 => Box::new(
63086 ReadXdrIter::<_, Int64>::new(dec, r.limits.clone())
63087 .map(|r| r.map(|t| Self::Int64(Box::new(t)))),
63088 ),
63089 TypeVariant::TimePoint => Box::new(
63090 ReadXdrIter::<_, TimePoint>::new(dec, r.limits.clone())
63091 .map(|r| r.map(|t| Self::TimePoint(Box::new(t)))),
63092 ),
63093 TypeVariant::Duration => Box::new(
63094 ReadXdrIter::<_, Duration>::new(dec, r.limits.clone())
63095 .map(|r| r.map(|t| Self::Duration(Box::new(t)))),
63096 ),
63097 TypeVariant::ExtensionPoint => Box::new(
63098 ReadXdrIter::<_, ExtensionPoint>::new(dec, r.limits.clone())
63099 .map(|r| r.map(|t| Self::ExtensionPoint(Box::new(t)))),
63100 ),
63101 TypeVariant::CryptoKeyType => Box::new(
63102 ReadXdrIter::<_, CryptoKeyType>::new(dec, r.limits.clone())
63103 .map(|r| r.map(|t| Self::CryptoKeyType(Box::new(t)))),
63104 ),
63105 TypeVariant::PublicKeyType => Box::new(
63106 ReadXdrIter::<_, PublicKeyType>::new(dec, r.limits.clone())
63107 .map(|r| r.map(|t| Self::PublicKeyType(Box::new(t)))),
63108 ),
63109 TypeVariant::SignerKeyType => Box::new(
63110 ReadXdrIter::<_, SignerKeyType>::new(dec, r.limits.clone())
63111 .map(|r| r.map(|t| Self::SignerKeyType(Box::new(t)))),
63112 ),
63113 TypeVariant::PublicKey => Box::new(
63114 ReadXdrIter::<_, PublicKey>::new(dec, r.limits.clone())
63115 .map(|r| r.map(|t| Self::PublicKey(Box::new(t)))),
63116 ),
63117 TypeVariant::SignerKey => Box::new(
63118 ReadXdrIter::<_, SignerKey>::new(dec, r.limits.clone())
63119 .map(|r| r.map(|t| Self::SignerKey(Box::new(t)))),
63120 ),
63121 TypeVariant::SignerKeyEd25519SignedPayload => Box::new(
63122 ReadXdrIter::<_, SignerKeyEd25519SignedPayload>::new(dec, r.limits.clone())
63123 .map(|r| r.map(|t| Self::SignerKeyEd25519SignedPayload(Box::new(t)))),
63124 ),
63125 TypeVariant::Signature => Box::new(
63126 ReadXdrIter::<_, Signature>::new(dec, r.limits.clone())
63127 .map(|r| r.map(|t| Self::Signature(Box::new(t)))),
63128 ),
63129 TypeVariant::SignatureHint => Box::new(
63130 ReadXdrIter::<_, SignatureHint>::new(dec, r.limits.clone())
63131 .map(|r| r.map(|t| Self::SignatureHint(Box::new(t)))),
63132 ),
63133 TypeVariant::NodeId => Box::new(
63134 ReadXdrIter::<_, NodeId>::new(dec, r.limits.clone())
63135 .map(|r| r.map(|t| Self::NodeId(Box::new(t)))),
63136 ),
63137 TypeVariant::AccountId => Box::new(
63138 ReadXdrIter::<_, AccountId>::new(dec, r.limits.clone())
63139 .map(|r| r.map(|t| Self::AccountId(Box::new(t)))),
63140 ),
63141 TypeVariant::ContractId => Box::new(
63142 ReadXdrIter::<_, ContractId>::new(dec, r.limits.clone())
63143 .map(|r| r.map(|t| Self::ContractId(Box::new(t)))),
63144 ),
63145 TypeVariant::Curve25519Secret => Box::new(
63146 ReadXdrIter::<_, Curve25519Secret>::new(dec, r.limits.clone())
63147 .map(|r| r.map(|t| Self::Curve25519Secret(Box::new(t)))),
63148 ),
63149 TypeVariant::Curve25519Public => Box::new(
63150 ReadXdrIter::<_, Curve25519Public>::new(dec, r.limits.clone())
63151 .map(|r| r.map(|t| Self::Curve25519Public(Box::new(t)))),
63152 ),
63153 TypeVariant::HmacSha256Key => Box::new(
63154 ReadXdrIter::<_, HmacSha256Key>::new(dec, r.limits.clone())
63155 .map(|r| r.map(|t| Self::HmacSha256Key(Box::new(t)))),
63156 ),
63157 TypeVariant::HmacSha256Mac => Box::new(
63158 ReadXdrIter::<_, HmacSha256Mac>::new(dec, r.limits.clone())
63159 .map(|r| r.map(|t| Self::HmacSha256Mac(Box::new(t)))),
63160 ),
63161 TypeVariant::ShortHashSeed => Box::new(
63162 ReadXdrIter::<_, ShortHashSeed>::new(dec, r.limits.clone())
63163 .map(|r| r.map(|t| Self::ShortHashSeed(Box::new(t)))),
63164 ),
63165 TypeVariant::BinaryFuseFilterType => Box::new(
63166 ReadXdrIter::<_, BinaryFuseFilterType>::new(dec, r.limits.clone())
63167 .map(|r| r.map(|t| Self::BinaryFuseFilterType(Box::new(t)))),
63168 ),
63169 TypeVariant::SerializedBinaryFuseFilter => Box::new(
63170 ReadXdrIter::<_, SerializedBinaryFuseFilter>::new(dec, r.limits.clone())
63171 .map(|r| r.map(|t| Self::SerializedBinaryFuseFilter(Box::new(t)))),
63172 ),
63173 TypeVariant::PoolId => Box::new(
63174 ReadXdrIter::<_, PoolId>::new(dec, r.limits.clone())
63175 .map(|r| r.map(|t| Self::PoolId(Box::new(t)))),
63176 ),
63177 TypeVariant::ClaimableBalanceIdType => Box::new(
63178 ReadXdrIter::<_, ClaimableBalanceIdType>::new(dec, r.limits.clone())
63179 .map(|r| r.map(|t| Self::ClaimableBalanceIdType(Box::new(t)))),
63180 ),
63181 TypeVariant::ClaimableBalanceId => Box::new(
63182 ReadXdrIter::<_, ClaimableBalanceId>::new(dec, r.limits.clone())
63183 .map(|r| r.map(|t| Self::ClaimableBalanceId(Box::new(t)))),
63184 ),
63185 }
63186 }
63187
63188 #[cfg(feature = "std")]
63189 pub fn from_xdr<B: AsRef<[u8]>>(
63190 v: TypeVariant,
63191 bytes: B,
63192 limits: Limits,
63193 ) -> Result<Self, Error> {
63194 let mut cursor = Limited::new(Cursor::new(bytes.as_ref()), limits);
63195 let t = Self::read_xdr_to_end(v, &mut cursor)?;
63196 Ok(t)
63197 }
63198
63199 #[cfg(feature = "base64")]
63200 pub fn from_xdr_base64(
63201 v: TypeVariant,
63202 b64: impl AsRef<[u8]>,
63203 limits: Limits,
63204 ) -> Result<Self, Error> {
63205 let mut dec = Limited::new(
63206 base64::read::DecoderReader::new(
63207 SkipWhitespace::new(Cursor::new(b64)),
63208 &base64::engine::general_purpose::STANDARD,
63209 ),
63210 limits,
63211 );
63212 let t = Self::read_xdr_to_end(v, &mut dec)?;
63213 Ok(t)
63214 }
63215
63216 #[cfg(all(feature = "std", feature = "serde_json"))]
63217 #[deprecated(note = "use from_json")]
63218 pub fn read_json(v: TypeVariant, r: impl Read) -> Result<Self, Error> {
63219 Self::from_json(v, r)
63220 }
63221
63222 #[cfg(all(feature = "std", feature = "serde_json"))]
63223 #[allow(clippy::too_many_lines)]
63224 pub fn from_json(v: TypeVariant, r: impl Read) -> Result<Self, Error> {
63225 match v {
63226 TypeVariant::Value => Ok(Self::Value(Box::new(serde_json::from_reader(r)?))),
63227 TypeVariant::ScpBallot => Ok(Self::ScpBallot(Box::new(serde_json::from_reader(r)?))),
63228 TypeVariant::ScpStatementType => Ok(Self::ScpStatementType(Box::new(
63229 serde_json::from_reader(r)?,
63230 ))),
63231 TypeVariant::ScpNomination => {
63232 Ok(Self::ScpNomination(Box::new(serde_json::from_reader(r)?)))
63233 }
63234 TypeVariant::ScpStatement => {
63235 Ok(Self::ScpStatement(Box::new(serde_json::from_reader(r)?)))
63236 }
63237 TypeVariant::ScpStatementPledges => Ok(Self::ScpStatementPledges(Box::new(
63238 serde_json::from_reader(r)?,
63239 ))),
63240 TypeVariant::ScpStatementPrepare => Ok(Self::ScpStatementPrepare(Box::new(
63241 serde_json::from_reader(r)?,
63242 ))),
63243 TypeVariant::ScpStatementConfirm => Ok(Self::ScpStatementConfirm(Box::new(
63244 serde_json::from_reader(r)?,
63245 ))),
63246 TypeVariant::ScpStatementExternalize => Ok(Self::ScpStatementExternalize(Box::new(
63247 serde_json::from_reader(r)?,
63248 ))),
63249 TypeVariant::ScpEnvelope => {
63250 Ok(Self::ScpEnvelope(Box::new(serde_json::from_reader(r)?)))
63251 }
63252 TypeVariant::ScpQuorumSet => {
63253 Ok(Self::ScpQuorumSet(Box::new(serde_json::from_reader(r)?)))
63254 }
63255 TypeVariant::ConfigSettingContractExecutionLanesV0 => Ok(
63256 Self::ConfigSettingContractExecutionLanesV0(Box::new(serde_json::from_reader(r)?)),
63257 ),
63258 TypeVariant::ConfigSettingContractComputeV0 => Ok(
63259 Self::ConfigSettingContractComputeV0(Box::new(serde_json::from_reader(r)?)),
63260 ),
63261 TypeVariant::ConfigSettingContractParallelComputeV0 => Ok(
63262 Self::ConfigSettingContractParallelComputeV0(Box::new(serde_json::from_reader(r)?)),
63263 ),
63264 TypeVariant::ConfigSettingContractLedgerCostV0 => Ok(
63265 Self::ConfigSettingContractLedgerCostV0(Box::new(serde_json::from_reader(r)?)),
63266 ),
63267 TypeVariant::ConfigSettingContractLedgerCostExtV0 => Ok(
63268 Self::ConfigSettingContractLedgerCostExtV0(Box::new(serde_json::from_reader(r)?)),
63269 ),
63270 TypeVariant::ConfigSettingContractHistoricalDataV0 => Ok(
63271 Self::ConfigSettingContractHistoricalDataV0(Box::new(serde_json::from_reader(r)?)),
63272 ),
63273 TypeVariant::ConfigSettingContractEventsV0 => Ok(Self::ConfigSettingContractEventsV0(
63274 Box::new(serde_json::from_reader(r)?),
63275 )),
63276 TypeVariant::ConfigSettingContractBandwidthV0 => Ok(
63277 Self::ConfigSettingContractBandwidthV0(Box::new(serde_json::from_reader(r)?)),
63278 ),
63279 TypeVariant::ContractCostType => Ok(Self::ContractCostType(Box::new(
63280 serde_json::from_reader(r)?,
63281 ))),
63282 TypeVariant::ContractCostParamEntry => Ok(Self::ContractCostParamEntry(Box::new(
63283 serde_json::from_reader(r)?,
63284 ))),
63285 TypeVariant::StateArchivalSettings => Ok(Self::StateArchivalSettings(Box::new(
63286 serde_json::from_reader(r)?,
63287 ))),
63288 TypeVariant::EvictionIterator => Ok(Self::EvictionIterator(Box::new(
63289 serde_json::from_reader(r)?,
63290 ))),
63291 TypeVariant::ConfigSettingScpTiming => Ok(Self::ConfigSettingScpTiming(Box::new(
63292 serde_json::from_reader(r)?,
63293 ))),
63294 TypeVariant::ContractCostParams => Ok(Self::ContractCostParams(Box::new(
63295 serde_json::from_reader(r)?,
63296 ))),
63297 TypeVariant::ConfigSettingId => {
63298 Ok(Self::ConfigSettingId(Box::new(serde_json::from_reader(r)?)))
63299 }
63300 TypeVariant::ConfigSettingEntry => Ok(Self::ConfigSettingEntry(Box::new(
63301 serde_json::from_reader(r)?,
63302 ))),
63303 TypeVariant::ScEnvMetaKind => {
63304 Ok(Self::ScEnvMetaKind(Box::new(serde_json::from_reader(r)?)))
63305 }
63306 TypeVariant::ScEnvMetaEntry => {
63307 Ok(Self::ScEnvMetaEntry(Box::new(serde_json::from_reader(r)?)))
63308 }
63309 TypeVariant::ScEnvMetaEntryInterfaceVersion => Ok(
63310 Self::ScEnvMetaEntryInterfaceVersion(Box::new(serde_json::from_reader(r)?)),
63311 ),
63312 TypeVariant::ScMetaV0 => Ok(Self::ScMetaV0(Box::new(serde_json::from_reader(r)?))),
63313 TypeVariant::ScMetaKind => Ok(Self::ScMetaKind(Box::new(serde_json::from_reader(r)?))),
63314 TypeVariant::ScMetaEntry => {
63315 Ok(Self::ScMetaEntry(Box::new(serde_json::from_reader(r)?)))
63316 }
63317 TypeVariant::ScSpecType => Ok(Self::ScSpecType(Box::new(serde_json::from_reader(r)?))),
63318 TypeVariant::ScSpecTypeOption => Ok(Self::ScSpecTypeOption(Box::new(
63319 serde_json::from_reader(r)?,
63320 ))),
63321 TypeVariant::ScSpecTypeResult => Ok(Self::ScSpecTypeResult(Box::new(
63322 serde_json::from_reader(r)?,
63323 ))),
63324 TypeVariant::ScSpecTypeVec => {
63325 Ok(Self::ScSpecTypeVec(Box::new(serde_json::from_reader(r)?)))
63326 }
63327 TypeVariant::ScSpecTypeMap => {
63328 Ok(Self::ScSpecTypeMap(Box::new(serde_json::from_reader(r)?)))
63329 }
63330 TypeVariant::ScSpecTypeTuple => {
63331 Ok(Self::ScSpecTypeTuple(Box::new(serde_json::from_reader(r)?)))
63332 }
63333 TypeVariant::ScSpecTypeBytesN => Ok(Self::ScSpecTypeBytesN(Box::new(
63334 serde_json::from_reader(r)?,
63335 ))),
63336 TypeVariant::ScSpecTypeUdt => {
63337 Ok(Self::ScSpecTypeUdt(Box::new(serde_json::from_reader(r)?)))
63338 }
63339 TypeVariant::ScSpecTypeDef => {
63340 Ok(Self::ScSpecTypeDef(Box::new(serde_json::from_reader(r)?)))
63341 }
63342 TypeVariant::ScSpecUdtStructFieldV0 => Ok(Self::ScSpecUdtStructFieldV0(Box::new(
63343 serde_json::from_reader(r)?,
63344 ))),
63345 TypeVariant::ScSpecUdtStructV0 => Ok(Self::ScSpecUdtStructV0(Box::new(
63346 serde_json::from_reader(r)?,
63347 ))),
63348 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Ok(Self::ScSpecUdtUnionCaseVoidV0(Box::new(
63349 serde_json::from_reader(r)?,
63350 ))),
63351 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Ok(Self::ScSpecUdtUnionCaseTupleV0(
63352 Box::new(serde_json::from_reader(r)?),
63353 )),
63354 TypeVariant::ScSpecUdtUnionCaseV0Kind => Ok(Self::ScSpecUdtUnionCaseV0Kind(Box::new(
63355 serde_json::from_reader(r)?,
63356 ))),
63357 TypeVariant::ScSpecUdtUnionCaseV0 => Ok(Self::ScSpecUdtUnionCaseV0(Box::new(
63358 serde_json::from_reader(r)?,
63359 ))),
63360 TypeVariant::ScSpecUdtUnionV0 => Ok(Self::ScSpecUdtUnionV0(Box::new(
63361 serde_json::from_reader(r)?,
63362 ))),
63363 TypeVariant::ScSpecUdtEnumCaseV0 => Ok(Self::ScSpecUdtEnumCaseV0(Box::new(
63364 serde_json::from_reader(r)?,
63365 ))),
63366 TypeVariant::ScSpecUdtEnumV0 => {
63367 Ok(Self::ScSpecUdtEnumV0(Box::new(serde_json::from_reader(r)?)))
63368 }
63369 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Ok(Self::ScSpecUdtErrorEnumCaseV0(Box::new(
63370 serde_json::from_reader(r)?,
63371 ))),
63372 TypeVariant::ScSpecUdtErrorEnumV0 => Ok(Self::ScSpecUdtErrorEnumV0(Box::new(
63373 serde_json::from_reader(r)?,
63374 ))),
63375 TypeVariant::ScSpecFunctionInputV0 => Ok(Self::ScSpecFunctionInputV0(Box::new(
63376 serde_json::from_reader(r)?,
63377 ))),
63378 TypeVariant::ScSpecFunctionV0 => Ok(Self::ScSpecFunctionV0(Box::new(
63379 serde_json::from_reader(r)?,
63380 ))),
63381 TypeVariant::ScSpecEventParamLocationV0 => Ok(Self::ScSpecEventParamLocationV0(
63382 Box::new(serde_json::from_reader(r)?),
63383 )),
63384 TypeVariant::ScSpecEventParamV0 => Ok(Self::ScSpecEventParamV0(Box::new(
63385 serde_json::from_reader(r)?,
63386 ))),
63387 TypeVariant::ScSpecEventDataFormat => Ok(Self::ScSpecEventDataFormat(Box::new(
63388 serde_json::from_reader(r)?,
63389 ))),
63390 TypeVariant::ScSpecEventV0 => {
63391 Ok(Self::ScSpecEventV0(Box::new(serde_json::from_reader(r)?)))
63392 }
63393 TypeVariant::ScSpecEntryKind => {
63394 Ok(Self::ScSpecEntryKind(Box::new(serde_json::from_reader(r)?)))
63395 }
63396 TypeVariant::ScSpecEntry => {
63397 Ok(Self::ScSpecEntry(Box::new(serde_json::from_reader(r)?)))
63398 }
63399 TypeVariant::ScValType => Ok(Self::ScValType(Box::new(serde_json::from_reader(r)?))),
63400 TypeVariant::ScErrorType => {
63401 Ok(Self::ScErrorType(Box::new(serde_json::from_reader(r)?)))
63402 }
63403 TypeVariant::ScErrorCode => {
63404 Ok(Self::ScErrorCode(Box::new(serde_json::from_reader(r)?)))
63405 }
63406 TypeVariant::ScError => Ok(Self::ScError(Box::new(serde_json::from_reader(r)?))),
63407 TypeVariant::UInt128Parts => {
63408 Ok(Self::UInt128Parts(Box::new(serde_json::from_reader(r)?)))
63409 }
63410 TypeVariant::Int128Parts => {
63411 Ok(Self::Int128Parts(Box::new(serde_json::from_reader(r)?)))
63412 }
63413 TypeVariant::UInt256Parts => {
63414 Ok(Self::UInt256Parts(Box::new(serde_json::from_reader(r)?)))
63415 }
63416 TypeVariant::Int256Parts => {
63417 Ok(Self::Int256Parts(Box::new(serde_json::from_reader(r)?)))
63418 }
63419 TypeVariant::ContractExecutableType => Ok(Self::ContractExecutableType(Box::new(
63420 serde_json::from_reader(r)?,
63421 ))),
63422 TypeVariant::ContractExecutable => Ok(Self::ContractExecutable(Box::new(
63423 serde_json::from_reader(r)?,
63424 ))),
63425 TypeVariant::ScAddressType => {
63426 Ok(Self::ScAddressType(Box::new(serde_json::from_reader(r)?)))
63427 }
63428 TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new(
63429 serde_json::from_reader(r)?,
63430 ))),
63431 TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new(serde_json::from_reader(r)?))),
63432 TypeVariant::ScVec => Ok(Self::ScVec(Box::new(serde_json::from_reader(r)?))),
63433 TypeVariant::ScMap => Ok(Self::ScMap(Box::new(serde_json::from_reader(r)?))),
63434 TypeVariant::ScBytes => Ok(Self::ScBytes(Box::new(serde_json::from_reader(r)?))),
63435 TypeVariant::ScString => Ok(Self::ScString(Box::new(serde_json::from_reader(r)?))),
63436 TypeVariant::ScSymbol => Ok(Self::ScSymbol(Box::new(serde_json::from_reader(r)?))),
63437 TypeVariant::ScNonceKey => Ok(Self::ScNonceKey(Box::new(serde_json::from_reader(r)?))),
63438 TypeVariant::ScContractInstance => Ok(Self::ScContractInstance(Box::new(
63439 serde_json::from_reader(r)?,
63440 ))),
63441 TypeVariant::ScVal => Ok(Self::ScVal(Box::new(serde_json::from_reader(r)?))),
63442 TypeVariant::ScMapEntry => Ok(Self::ScMapEntry(Box::new(serde_json::from_reader(r)?))),
63443 TypeVariant::LedgerCloseMetaBatch => Ok(Self::LedgerCloseMetaBatch(Box::new(
63444 serde_json::from_reader(r)?,
63445 ))),
63446 TypeVariant::StoredTransactionSet => Ok(Self::StoredTransactionSet(Box::new(
63447 serde_json::from_reader(r)?,
63448 ))),
63449 TypeVariant::StoredDebugTransactionSet => Ok(Self::StoredDebugTransactionSet(
63450 Box::new(serde_json::from_reader(r)?),
63451 )),
63452 TypeVariant::PersistedScpStateV0 => Ok(Self::PersistedScpStateV0(Box::new(
63453 serde_json::from_reader(r)?,
63454 ))),
63455 TypeVariant::PersistedScpStateV1 => Ok(Self::PersistedScpStateV1(Box::new(
63456 serde_json::from_reader(r)?,
63457 ))),
63458 TypeVariant::PersistedScpState => Ok(Self::PersistedScpState(Box::new(
63459 serde_json::from_reader(r)?,
63460 ))),
63461 TypeVariant::Thresholds => Ok(Self::Thresholds(Box::new(serde_json::from_reader(r)?))),
63462 TypeVariant::String32 => Ok(Self::String32(Box::new(serde_json::from_reader(r)?))),
63463 TypeVariant::String64 => Ok(Self::String64(Box::new(serde_json::from_reader(r)?))),
63464 TypeVariant::SequenceNumber => {
63465 Ok(Self::SequenceNumber(Box::new(serde_json::from_reader(r)?)))
63466 }
63467 TypeVariant::DataValue => Ok(Self::DataValue(Box::new(serde_json::from_reader(r)?))),
63468 TypeVariant::AssetCode4 => Ok(Self::AssetCode4(Box::new(serde_json::from_reader(r)?))),
63469 TypeVariant::AssetCode12 => {
63470 Ok(Self::AssetCode12(Box::new(serde_json::from_reader(r)?)))
63471 }
63472 TypeVariant::AssetType => Ok(Self::AssetType(Box::new(serde_json::from_reader(r)?))),
63473 TypeVariant::AssetCode => Ok(Self::AssetCode(Box::new(serde_json::from_reader(r)?))),
63474 TypeVariant::AlphaNum4 => Ok(Self::AlphaNum4(Box::new(serde_json::from_reader(r)?))),
63475 TypeVariant::AlphaNum12 => Ok(Self::AlphaNum12(Box::new(serde_json::from_reader(r)?))),
63476 TypeVariant::Asset => Ok(Self::Asset(Box::new(serde_json::from_reader(r)?))),
63477 TypeVariant::Price => Ok(Self::Price(Box::new(serde_json::from_reader(r)?))),
63478 TypeVariant::Liabilities => {
63479 Ok(Self::Liabilities(Box::new(serde_json::from_reader(r)?)))
63480 }
63481 TypeVariant::ThresholdIndexes => Ok(Self::ThresholdIndexes(Box::new(
63482 serde_json::from_reader(r)?,
63483 ))),
63484 TypeVariant::LedgerEntryType => {
63485 Ok(Self::LedgerEntryType(Box::new(serde_json::from_reader(r)?)))
63486 }
63487 TypeVariant::Signer => Ok(Self::Signer(Box::new(serde_json::from_reader(r)?))),
63488 TypeVariant::AccountFlags => {
63489 Ok(Self::AccountFlags(Box::new(serde_json::from_reader(r)?)))
63490 }
63491 TypeVariant::SponsorshipDescriptor => Ok(Self::SponsorshipDescriptor(Box::new(
63492 serde_json::from_reader(r)?,
63493 ))),
63494 TypeVariant::AccountEntryExtensionV3 => Ok(Self::AccountEntryExtensionV3(Box::new(
63495 serde_json::from_reader(r)?,
63496 ))),
63497 TypeVariant::AccountEntryExtensionV2 => Ok(Self::AccountEntryExtensionV2(Box::new(
63498 serde_json::from_reader(r)?,
63499 ))),
63500 TypeVariant::AccountEntryExtensionV2Ext => Ok(Self::AccountEntryExtensionV2Ext(
63501 Box::new(serde_json::from_reader(r)?),
63502 )),
63503 TypeVariant::AccountEntryExtensionV1 => Ok(Self::AccountEntryExtensionV1(Box::new(
63504 serde_json::from_reader(r)?,
63505 ))),
63506 TypeVariant::AccountEntryExtensionV1Ext => Ok(Self::AccountEntryExtensionV1Ext(
63507 Box::new(serde_json::from_reader(r)?),
63508 )),
63509 TypeVariant::AccountEntry => {
63510 Ok(Self::AccountEntry(Box::new(serde_json::from_reader(r)?)))
63511 }
63512 TypeVariant::AccountEntryExt => {
63513 Ok(Self::AccountEntryExt(Box::new(serde_json::from_reader(r)?)))
63514 }
63515 TypeVariant::TrustLineFlags => {
63516 Ok(Self::TrustLineFlags(Box::new(serde_json::from_reader(r)?)))
63517 }
63518 TypeVariant::LiquidityPoolType => Ok(Self::LiquidityPoolType(Box::new(
63519 serde_json::from_reader(r)?,
63520 ))),
63521 TypeVariant::TrustLineAsset => {
63522 Ok(Self::TrustLineAsset(Box::new(serde_json::from_reader(r)?)))
63523 }
63524 TypeVariant::TrustLineEntryExtensionV2 => Ok(Self::TrustLineEntryExtensionV2(
63525 Box::new(serde_json::from_reader(r)?),
63526 )),
63527 TypeVariant::TrustLineEntryExtensionV2Ext => Ok(Self::TrustLineEntryExtensionV2Ext(
63528 Box::new(serde_json::from_reader(r)?),
63529 )),
63530 TypeVariant::TrustLineEntry => {
63531 Ok(Self::TrustLineEntry(Box::new(serde_json::from_reader(r)?)))
63532 }
63533 TypeVariant::TrustLineEntryExt => Ok(Self::TrustLineEntryExt(Box::new(
63534 serde_json::from_reader(r)?,
63535 ))),
63536 TypeVariant::TrustLineEntryV1 => Ok(Self::TrustLineEntryV1(Box::new(
63537 serde_json::from_reader(r)?,
63538 ))),
63539 TypeVariant::TrustLineEntryV1Ext => Ok(Self::TrustLineEntryV1Ext(Box::new(
63540 serde_json::from_reader(r)?,
63541 ))),
63542 TypeVariant::OfferEntryFlags => {
63543 Ok(Self::OfferEntryFlags(Box::new(serde_json::from_reader(r)?)))
63544 }
63545 TypeVariant::OfferEntry => Ok(Self::OfferEntry(Box::new(serde_json::from_reader(r)?))),
63546 TypeVariant::OfferEntryExt => {
63547 Ok(Self::OfferEntryExt(Box::new(serde_json::from_reader(r)?)))
63548 }
63549 TypeVariant::DataEntry => Ok(Self::DataEntry(Box::new(serde_json::from_reader(r)?))),
63550 TypeVariant::DataEntryExt => {
63551 Ok(Self::DataEntryExt(Box::new(serde_json::from_reader(r)?)))
63552 }
63553 TypeVariant::ClaimPredicateType => Ok(Self::ClaimPredicateType(Box::new(
63554 serde_json::from_reader(r)?,
63555 ))),
63556 TypeVariant::ClaimPredicate => {
63557 Ok(Self::ClaimPredicate(Box::new(serde_json::from_reader(r)?)))
63558 }
63559 TypeVariant::ClaimantType => {
63560 Ok(Self::ClaimantType(Box::new(serde_json::from_reader(r)?)))
63561 }
63562 TypeVariant::Claimant => Ok(Self::Claimant(Box::new(serde_json::from_reader(r)?))),
63563 TypeVariant::ClaimantV0 => Ok(Self::ClaimantV0(Box::new(serde_json::from_reader(r)?))),
63564 TypeVariant::ClaimableBalanceFlags => Ok(Self::ClaimableBalanceFlags(Box::new(
63565 serde_json::from_reader(r)?,
63566 ))),
63567 TypeVariant::ClaimableBalanceEntryExtensionV1 => Ok(
63568 Self::ClaimableBalanceEntryExtensionV1(Box::new(serde_json::from_reader(r)?)),
63569 ),
63570 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => Ok(
63571 Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(serde_json::from_reader(r)?)),
63572 ),
63573 TypeVariant::ClaimableBalanceEntry => Ok(Self::ClaimableBalanceEntry(Box::new(
63574 serde_json::from_reader(r)?,
63575 ))),
63576 TypeVariant::ClaimableBalanceEntryExt => Ok(Self::ClaimableBalanceEntryExt(Box::new(
63577 serde_json::from_reader(r)?,
63578 ))),
63579 TypeVariant::LiquidityPoolConstantProductParameters => Ok(
63580 Self::LiquidityPoolConstantProductParameters(Box::new(serde_json::from_reader(r)?)),
63581 ),
63582 TypeVariant::LiquidityPoolEntry => Ok(Self::LiquidityPoolEntry(Box::new(
63583 serde_json::from_reader(r)?,
63584 ))),
63585 TypeVariant::LiquidityPoolEntryBody => Ok(Self::LiquidityPoolEntryBody(Box::new(
63586 serde_json::from_reader(r)?,
63587 ))),
63588 TypeVariant::LiquidityPoolEntryConstantProduct => Ok(
63589 Self::LiquidityPoolEntryConstantProduct(Box::new(serde_json::from_reader(r)?)),
63590 ),
63591 TypeVariant::ContractDataDurability => Ok(Self::ContractDataDurability(Box::new(
63592 serde_json::from_reader(r)?,
63593 ))),
63594 TypeVariant::ContractDataEntry => Ok(Self::ContractDataEntry(Box::new(
63595 serde_json::from_reader(r)?,
63596 ))),
63597 TypeVariant::ContractCodeCostInputs => Ok(Self::ContractCodeCostInputs(Box::new(
63598 serde_json::from_reader(r)?,
63599 ))),
63600 TypeVariant::ContractCodeEntry => Ok(Self::ContractCodeEntry(Box::new(
63601 serde_json::from_reader(r)?,
63602 ))),
63603 TypeVariant::ContractCodeEntryExt => Ok(Self::ContractCodeEntryExt(Box::new(
63604 serde_json::from_reader(r)?,
63605 ))),
63606 TypeVariant::ContractCodeEntryV1 => Ok(Self::ContractCodeEntryV1(Box::new(
63607 serde_json::from_reader(r)?,
63608 ))),
63609 TypeVariant::TtlEntry => Ok(Self::TtlEntry(Box::new(serde_json::from_reader(r)?))),
63610 TypeVariant::LedgerEntryExtensionV1 => Ok(Self::LedgerEntryExtensionV1(Box::new(
63611 serde_json::from_reader(r)?,
63612 ))),
63613 TypeVariant::LedgerEntryExtensionV1Ext => Ok(Self::LedgerEntryExtensionV1Ext(
63614 Box::new(serde_json::from_reader(r)?),
63615 )),
63616 TypeVariant::LedgerEntry => {
63617 Ok(Self::LedgerEntry(Box::new(serde_json::from_reader(r)?)))
63618 }
63619 TypeVariant::LedgerEntryData => {
63620 Ok(Self::LedgerEntryData(Box::new(serde_json::from_reader(r)?)))
63621 }
63622 TypeVariant::LedgerEntryExt => {
63623 Ok(Self::LedgerEntryExt(Box::new(serde_json::from_reader(r)?)))
63624 }
63625 TypeVariant::LedgerKey => Ok(Self::LedgerKey(Box::new(serde_json::from_reader(r)?))),
63626 TypeVariant::LedgerKeyAccount => Ok(Self::LedgerKeyAccount(Box::new(
63627 serde_json::from_reader(r)?,
63628 ))),
63629 TypeVariant::LedgerKeyTrustLine => Ok(Self::LedgerKeyTrustLine(Box::new(
63630 serde_json::from_reader(r)?,
63631 ))),
63632 TypeVariant::LedgerKeyOffer => {
63633 Ok(Self::LedgerKeyOffer(Box::new(serde_json::from_reader(r)?)))
63634 }
63635 TypeVariant::LedgerKeyData => {
63636 Ok(Self::LedgerKeyData(Box::new(serde_json::from_reader(r)?)))
63637 }
63638 TypeVariant::LedgerKeyClaimableBalance => Ok(Self::LedgerKeyClaimableBalance(
63639 Box::new(serde_json::from_reader(r)?),
63640 )),
63641 TypeVariant::LedgerKeyLiquidityPool => Ok(Self::LedgerKeyLiquidityPool(Box::new(
63642 serde_json::from_reader(r)?,
63643 ))),
63644 TypeVariant::LedgerKeyContractData => Ok(Self::LedgerKeyContractData(Box::new(
63645 serde_json::from_reader(r)?,
63646 ))),
63647 TypeVariant::LedgerKeyContractCode => Ok(Self::LedgerKeyContractCode(Box::new(
63648 serde_json::from_reader(r)?,
63649 ))),
63650 TypeVariant::LedgerKeyConfigSetting => Ok(Self::LedgerKeyConfigSetting(Box::new(
63651 serde_json::from_reader(r)?,
63652 ))),
63653 TypeVariant::LedgerKeyTtl => {
63654 Ok(Self::LedgerKeyTtl(Box::new(serde_json::from_reader(r)?)))
63655 }
63656 TypeVariant::EnvelopeType => {
63657 Ok(Self::EnvelopeType(Box::new(serde_json::from_reader(r)?)))
63658 }
63659 TypeVariant::BucketListType => {
63660 Ok(Self::BucketListType(Box::new(serde_json::from_reader(r)?)))
63661 }
63662 TypeVariant::BucketEntryType => {
63663 Ok(Self::BucketEntryType(Box::new(serde_json::from_reader(r)?)))
63664 }
63665 TypeVariant::HotArchiveBucketEntryType => Ok(Self::HotArchiveBucketEntryType(
63666 Box::new(serde_json::from_reader(r)?),
63667 )),
63668 TypeVariant::BucketMetadata => {
63669 Ok(Self::BucketMetadata(Box::new(serde_json::from_reader(r)?)))
63670 }
63671 TypeVariant::BucketMetadataExt => Ok(Self::BucketMetadataExt(Box::new(
63672 serde_json::from_reader(r)?,
63673 ))),
63674 TypeVariant::BucketEntry => {
63675 Ok(Self::BucketEntry(Box::new(serde_json::from_reader(r)?)))
63676 }
63677 TypeVariant::HotArchiveBucketEntry => Ok(Self::HotArchiveBucketEntry(Box::new(
63678 serde_json::from_reader(r)?,
63679 ))),
63680 TypeVariant::UpgradeType => {
63681 Ok(Self::UpgradeType(Box::new(serde_json::from_reader(r)?)))
63682 }
63683 TypeVariant::StellarValueType => Ok(Self::StellarValueType(Box::new(
63684 serde_json::from_reader(r)?,
63685 ))),
63686 TypeVariant::LedgerCloseValueSignature => Ok(Self::LedgerCloseValueSignature(
63687 Box::new(serde_json::from_reader(r)?),
63688 )),
63689 TypeVariant::StellarValue => {
63690 Ok(Self::StellarValue(Box::new(serde_json::from_reader(r)?)))
63691 }
63692 TypeVariant::StellarValueExt => {
63693 Ok(Self::StellarValueExt(Box::new(serde_json::from_reader(r)?)))
63694 }
63695 TypeVariant::LedgerHeaderFlags => Ok(Self::LedgerHeaderFlags(Box::new(
63696 serde_json::from_reader(r)?,
63697 ))),
63698 TypeVariant::LedgerHeaderExtensionV1 => Ok(Self::LedgerHeaderExtensionV1(Box::new(
63699 serde_json::from_reader(r)?,
63700 ))),
63701 TypeVariant::LedgerHeaderExtensionV1Ext => Ok(Self::LedgerHeaderExtensionV1Ext(
63702 Box::new(serde_json::from_reader(r)?),
63703 )),
63704 TypeVariant::LedgerHeader => {
63705 Ok(Self::LedgerHeader(Box::new(serde_json::from_reader(r)?)))
63706 }
63707 TypeVariant::LedgerHeaderExt => {
63708 Ok(Self::LedgerHeaderExt(Box::new(serde_json::from_reader(r)?)))
63709 }
63710 TypeVariant::LedgerUpgradeType => Ok(Self::LedgerUpgradeType(Box::new(
63711 serde_json::from_reader(r)?,
63712 ))),
63713 TypeVariant::ConfigUpgradeSetKey => Ok(Self::ConfigUpgradeSetKey(Box::new(
63714 serde_json::from_reader(r)?,
63715 ))),
63716 TypeVariant::LedgerUpgrade => {
63717 Ok(Self::LedgerUpgrade(Box::new(serde_json::from_reader(r)?)))
63718 }
63719 TypeVariant::ConfigUpgradeSet => Ok(Self::ConfigUpgradeSet(Box::new(
63720 serde_json::from_reader(r)?,
63721 ))),
63722 TypeVariant::TxSetComponentType => Ok(Self::TxSetComponentType(Box::new(
63723 serde_json::from_reader(r)?,
63724 ))),
63725 TypeVariant::DependentTxCluster => Ok(Self::DependentTxCluster(Box::new(
63726 serde_json::from_reader(r)?,
63727 ))),
63728 TypeVariant::ParallelTxExecutionStage => Ok(Self::ParallelTxExecutionStage(Box::new(
63729 serde_json::from_reader(r)?,
63730 ))),
63731 TypeVariant::ParallelTxsComponent => Ok(Self::ParallelTxsComponent(Box::new(
63732 serde_json::from_reader(r)?,
63733 ))),
63734 TypeVariant::TxSetComponent => {
63735 Ok(Self::TxSetComponent(Box::new(serde_json::from_reader(r)?)))
63736 }
63737 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => Ok(
63738 Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(serde_json::from_reader(r)?)),
63739 ),
63740 TypeVariant::TransactionPhase => Ok(Self::TransactionPhase(Box::new(
63741 serde_json::from_reader(r)?,
63742 ))),
63743 TypeVariant::TransactionSet => {
63744 Ok(Self::TransactionSet(Box::new(serde_json::from_reader(r)?)))
63745 }
63746 TypeVariant::TransactionSetV1 => Ok(Self::TransactionSetV1(Box::new(
63747 serde_json::from_reader(r)?,
63748 ))),
63749 TypeVariant::GeneralizedTransactionSet => Ok(Self::GeneralizedTransactionSet(
63750 Box::new(serde_json::from_reader(r)?),
63751 )),
63752 TypeVariant::TransactionResultPair => Ok(Self::TransactionResultPair(Box::new(
63753 serde_json::from_reader(r)?,
63754 ))),
63755 TypeVariant::TransactionResultSet => Ok(Self::TransactionResultSet(Box::new(
63756 serde_json::from_reader(r)?,
63757 ))),
63758 TypeVariant::TransactionHistoryEntry => Ok(Self::TransactionHistoryEntry(Box::new(
63759 serde_json::from_reader(r)?,
63760 ))),
63761 TypeVariant::TransactionHistoryEntryExt => Ok(Self::TransactionHistoryEntryExt(
63762 Box::new(serde_json::from_reader(r)?),
63763 )),
63764 TypeVariant::TransactionHistoryResultEntry => Ok(Self::TransactionHistoryResultEntry(
63765 Box::new(serde_json::from_reader(r)?),
63766 )),
63767 TypeVariant::TransactionHistoryResultEntryExt => Ok(
63768 Self::TransactionHistoryResultEntryExt(Box::new(serde_json::from_reader(r)?)),
63769 ),
63770 TypeVariant::LedgerHeaderHistoryEntry => Ok(Self::LedgerHeaderHistoryEntry(Box::new(
63771 serde_json::from_reader(r)?,
63772 ))),
63773 TypeVariant::LedgerHeaderHistoryEntryExt => Ok(Self::LedgerHeaderHistoryEntryExt(
63774 Box::new(serde_json::from_reader(r)?),
63775 )),
63776 TypeVariant::LedgerScpMessages => Ok(Self::LedgerScpMessages(Box::new(
63777 serde_json::from_reader(r)?,
63778 ))),
63779 TypeVariant::ScpHistoryEntryV0 => Ok(Self::ScpHistoryEntryV0(Box::new(
63780 serde_json::from_reader(r)?,
63781 ))),
63782 TypeVariant::ScpHistoryEntry => {
63783 Ok(Self::ScpHistoryEntry(Box::new(serde_json::from_reader(r)?)))
63784 }
63785 TypeVariant::LedgerEntryChangeType => Ok(Self::LedgerEntryChangeType(Box::new(
63786 serde_json::from_reader(r)?,
63787 ))),
63788 TypeVariant::LedgerEntryChange => Ok(Self::LedgerEntryChange(Box::new(
63789 serde_json::from_reader(r)?,
63790 ))),
63791 TypeVariant::LedgerEntryChanges => Ok(Self::LedgerEntryChanges(Box::new(
63792 serde_json::from_reader(r)?,
63793 ))),
63794 TypeVariant::OperationMeta => {
63795 Ok(Self::OperationMeta(Box::new(serde_json::from_reader(r)?)))
63796 }
63797 TypeVariant::TransactionMetaV1 => Ok(Self::TransactionMetaV1(Box::new(
63798 serde_json::from_reader(r)?,
63799 ))),
63800 TypeVariant::TransactionMetaV2 => Ok(Self::TransactionMetaV2(Box::new(
63801 serde_json::from_reader(r)?,
63802 ))),
63803 TypeVariant::ContractEventType => Ok(Self::ContractEventType(Box::new(
63804 serde_json::from_reader(r)?,
63805 ))),
63806 TypeVariant::ContractEvent => {
63807 Ok(Self::ContractEvent(Box::new(serde_json::from_reader(r)?)))
63808 }
63809 TypeVariant::ContractEventBody => Ok(Self::ContractEventBody(Box::new(
63810 serde_json::from_reader(r)?,
63811 ))),
63812 TypeVariant::ContractEventV0 => {
63813 Ok(Self::ContractEventV0(Box::new(serde_json::from_reader(r)?)))
63814 }
63815 TypeVariant::DiagnosticEvent => {
63816 Ok(Self::DiagnosticEvent(Box::new(serde_json::from_reader(r)?)))
63817 }
63818 TypeVariant::SorobanTransactionMetaExtV1 => Ok(Self::SorobanTransactionMetaExtV1(
63819 Box::new(serde_json::from_reader(r)?),
63820 )),
63821 TypeVariant::SorobanTransactionMetaExt => Ok(Self::SorobanTransactionMetaExt(
63822 Box::new(serde_json::from_reader(r)?),
63823 )),
63824 TypeVariant::SorobanTransactionMeta => Ok(Self::SorobanTransactionMeta(Box::new(
63825 serde_json::from_reader(r)?,
63826 ))),
63827 TypeVariant::TransactionMetaV3 => Ok(Self::TransactionMetaV3(Box::new(
63828 serde_json::from_reader(r)?,
63829 ))),
63830 TypeVariant::OperationMetaV2 => {
63831 Ok(Self::OperationMetaV2(Box::new(serde_json::from_reader(r)?)))
63832 }
63833 TypeVariant::SorobanTransactionMetaV2 => Ok(Self::SorobanTransactionMetaV2(Box::new(
63834 serde_json::from_reader(r)?,
63835 ))),
63836 TypeVariant::TransactionEventStage => Ok(Self::TransactionEventStage(Box::new(
63837 serde_json::from_reader(r)?,
63838 ))),
63839 TypeVariant::TransactionEvent => Ok(Self::TransactionEvent(Box::new(
63840 serde_json::from_reader(r)?,
63841 ))),
63842 TypeVariant::TransactionMetaV4 => Ok(Self::TransactionMetaV4(Box::new(
63843 serde_json::from_reader(r)?,
63844 ))),
63845 TypeVariant::InvokeHostFunctionSuccessPreImage => Ok(
63846 Self::InvokeHostFunctionSuccessPreImage(Box::new(serde_json::from_reader(r)?)),
63847 ),
63848 TypeVariant::TransactionMeta => {
63849 Ok(Self::TransactionMeta(Box::new(serde_json::from_reader(r)?)))
63850 }
63851 TypeVariant::TransactionResultMeta => Ok(Self::TransactionResultMeta(Box::new(
63852 serde_json::from_reader(r)?,
63853 ))),
63854 TypeVariant::TransactionResultMetaV1 => Ok(Self::TransactionResultMetaV1(Box::new(
63855 serde_json::from_reader(r)?,
63856 ))),
63857 TypeVariant::UpgradeEntryMeta => Ok(Self::UpgradeEntryMeta(Box::new(
63858 serde_json::from_reader(r)?,
63859 ))),
63860 TypeVariant::LedgerCloseMetaV0 => Ok(Self::LedgerCloseMetaV0(Box::new(
63861 serde_json::from_reader(r)?,
63862 ))),
63863 TypeVariant::LedgerCloseMetaExtV1 => Ok(Self::LedgerCloseMetaExtV1(Box::new(
63864 serde_json::from_reader(r)?,
63865 ))),
63866 TypeVariant::LedgerCloseMetaExt => Ok(Self::LedgerCloseMetaExt(Box::new(
63867 serde_json::from_reader(r)?,
63868 ))),
63869 TypeVariant::LedgerCloseMetaV1 => Ok(Self::LedgerCloseMetaV1(Box::new(
63870 serde_json::from_reader(r)?,
63871 ))),
63872 TypeVariant::LedgerCloseMetaV2 => Ok(Self::LedgerCloseMetaV2(Box::new(
63873 serde_json::from_reader(r)?,
63874 ))),
63875 TypeVariant::LedgerCloseMeta => {
63876 Ok(Self::LedgerCloseMeta(Box::new(serde_json::from_reader(r)?)))
63877 }
63878 TypeVariant::ErrorCode => Ok(Self::ErrorCode(Box::new(serde_json::from_reader(r)?))),
63879 TypeVariant::SError => Ok(Self::SError(Box::new(serde_json::from_reader(r)?))),
63880 TypeVariant::SendMore => Ok(Self::SendMore(Box::new(serde_json::from_reader(r)?))),
63881 TypeVariant::SendMoreExtended => Ok(Self::SendMoreExtended(Box::new(
63882 serde_json::from_reader(r)?,
63883 ))),
63884 TypeVariant::AuthCert => Ok(Self::AuthCert(Box::new(serde_json::from_reader(r)?))),
63885 TypeVariant::Hello => Ok(Self::Hello(Box::new(serde_json::from_reader(r)?))),
63886 TypeVariant::Auth => Ok(Self::Auth(Box::new(serde_json::from_reader(r)?))),
63887 TypeVariant::IpAddrType => Ok(Self::IpAddrType(Box::new(serde_json::from_reader(r)?))),
63888 TypeVariant::PeerAddress => {
63889 Ok(Self::PeerAddress(Box::new(serde_json::from_reader(r)?)))
63890 }
63891 TypeVariant::PeerAddressIp => {
63892 Ok(Self::PeerAddressIp(Box::new(serde_json::from_reader(r)?)))
63893 }
63894 TypeVariant::MessageType => {
63895 Ok(Self::MessageType(Box::new(serde_json::from_reader(r)?)))
63896 }
63897 TypeVariant::DontHave => Ok(Self::DontHave(Box::new(serde_json::from_reader(r)?))),
63898 TypeVariant::SurveyMessageCommandType => Ok(Self::SurveyMessageCommandType(Box::new(
63899 serde_json::from_reader(r)?,
63900 ))),
63901 TypeVariant::SurveyMessageResponseType => Ok(Self::SurveyMessageResponseType(
63902 Box::new(serde_json::from_reader(r)?),
63903 )),
63904 TypeVariant::TimeSlicedSurveyStartCollectingMessage => Ok(
63905 Self::TimeSlicedSurveyStartCollectingMessage(Box::new(serde_json::from_reader(r)?)),
63906 ),
63907 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => {
63908 Ok(Self::SignedTimeSlicedSurveyStartCollectingMessage(
63909 Box::new(serde_json::from_reader(r)?),
63910 ))
63911 }
63912 TypeVariant::TimeSlicedSurveyStopCollectingMessage => Ok(
63913 Self::TimeSlicedSurveyStopCollectingMessage(Box::new(serde_json::from_reader(r)?)),
63914 ),
63915 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => {
63916 Ok(Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(
63917 serde_json::from_reader(r)?,
63918 )))
63919 }
63920 TypeVariant::SurveyRequestMessage => Ok(Self::SurveyRequestMessage(Box::new(
63921 serde_json::from_reader(r)?,
63922 ))),
63923 TypeVariant::TimeSlicedSurveyRequestMessage => Ok(
63924 Self::TimeSlicedSurveyRequestMessage(Box::new(serde_json::from_reader(r)?)),
63925 ),
63926 TypeVariant::SignedTimeSlicedSurveyRequestMessage => Ok(
63927 Self::SignedTimeSlicedSurveyRequestMessage(Box::new(serde_json::from_reader(r)?)),
63928 ),
63929 TypeVariant::EncryptedBody => {
63930 Ok(Self::EncryptedBody(Box::new(serde_json::from_reader(r)?)))
63931 }
63932 TypeVariant::SurveyResponseMessage => Ok(Self::SurveyResponseMessage(Box::new(
63933 serde_json::from_reader(r)?,
63934 ))),
63935 TypeVariant::TimeSlicedSurveyResponseMessage => Ok(
63936 Self::TimeSlicedSurveyResponseMessage(Box::new(serde_json::from_reader(r)?)),
63937 ),
63938 TypeVariant::SignedTimeSlicedSurveyResponseMessage => Ok(
63939 Self::SignedTimeSlicedSurveyResponseMessage(Box::new(serde_json::from_reader(r)?)),
63940 ),
63941 TypeVariant::PeerStats => Ok(Self::PeerStats(Box::new(serde_json::from_reader(r)?))),
63942 TypeVariant::TimeSlicedNodeData => Ok(Self::TimeSlicedNodeData(Box::new(
63943 serde_json::from_reader(r)?,
63944 ))),
63945 TypeVariant::TimeSlicedPeerData => Ok(Self::TimeSlicedPeerData(Box::new(
63946 serde_json::from_reader(r)?,
63947 ))),
63948 TypeVariant::TimeSlicedPeerDataList => Ok(Self::TimeSlicedPeerDataList(Box::new(
63949 serde_json::from_reader(r)?,
63950 ))),
63951 TypeVariant::TopologyResponseBodyV2 => Ok(Self::TopologyResponseBodyV2(Box::new(
63952 serde_json::from_reader(r)?,
63953 ))),
63954 TypeVariant::SurveyResponseBody => Ok(Self::SurveyResponseBody(Box::new(
63955 serde_json::from_reader(r)?,
63956 ))),
63957 TypeVariant::TxAdvertVector => {
63958 Ok(Self::TxAdvertVector(Box::new(serde_json::from_reader(r)?)))
63959 }
63960 TypeVariant::FloodAdvert => {
63961 Ok(Self::FloodAdvert(Box::new(serde_json::from_reader(r)?)))
63962 }
63963 TypeVariant::TxDemandVector => {
63964 Ok(Self::TxDemandVector(Box::new(serde_json::from_reader(r)?)))
63965 }
63966 TypeVariant::FloodDemand => {
63967 Ok(Self::FloodDemand(Box::new(serde_json::from_reader(r)?)))
63968 }
63969 TypeVariant::StellarMessage => {
63970 Ok(Self::StellarMessage(Box::new(serde_json::from_reader(r)?)))
63971 }
63972 TypeVariant::AuthenticatedMessage => Ok(Self::AuthenticatedMessage(Box::new(
63973 serde_json::from_reader(r)?,
63974 ))),
63975 TypeVariant::AuthenticatedMessageV0 => Ok(Self::AuthenticatedMessageV0(Box::new(
63976 serde_json::from_reader(r)?,
63977 ))),
63978 TypeVariant::LiquidityPoolParameters => Ok(Self::LiquidityPoolParameters(Box::new(
63979 serde_json::from_reader(r)?,
63980 ))),
63981 TypeVariant::MuxedAccount => {
63982 Ok(Self::MuxedAccount(Box::new(serde_json::from_reader(r)?)))
63983 }
63984 TypeVariant::MuxedAccountMed25519 => Ok(Self::MuxedAccountMed25519(Box::new(
63985 serde_json::from_reader(r)?,
63986 ))),
63987 TypeVariant::DecoratedSignature => Ok(Self::DecoratedSignature(Box::new(
63988 serde_json::from_reader(r)?,
63989 ))),
63990 TypeVariant::OperationType => {
63991 Ok(Self::OperationType(Box::new(serde_json::from_reader(r)?)))
63992 }
63993 TypeVariant::CreateAccountOp => {
63994 Ok(Self::CreateAccountOp(Box::new(serde_json::from_reader(r)?)))
63995 }
63996 TypeVariant::PaymentOp => Ok(Self::PaymentOp(Box::new(serde_json::from_reader(r)?))),
63997 TypeVariant::PathPaymentStrictReceiveOp => Ok(Self::PathPaymentStrictReceiveOp(
63998 Box::new(serde_json::from_reader(r)?),
63999 )),
64000 TypeVariant::PathPaymentStrictSendOp => Ok(Self::PathPaymentStrictSendOp(Box::new(
64001 serde_json::from_reader(r)?,
64002 ))),
64003 TypeVariant::ManageSellOfferOp => Ok(Self::ManageSellOfferOp(Box::new(
64004 serde_json::from_reader(r)?,
64005 ))),
64006 TypeVariant::ManageBuyOfferOp => Ok(Self::ManageBuyOfferOp(Box::new(
64007 serde_json::from_reader(r)?,
64008 ))),
64009 TypeVariant::CreatePassiveSellOfferOp => Ok(Self::CreatePassiveSellOfferOp(Box::new(
64010 serde_json::from_reader(r)?,
64011 ))),
64012 TypeVariant::SetOptionsOp => {
64013 Ok(Self::SetOptionsOp(Box::new(serde_json::from_reader(r)?)))
64014 }
64015 TypeVariant::ChangeTrustAsset => Ok(Self::ChangeTrustAsset(Box::new(
64016 serde_json::from_reader(r)?,
64017 ))),
64018 TypeVariant::ChangeTrustOp => {
64019 Ok(Self::ChangeTrustOp(Box::new(serde_json::from_reader(r)?)))
64020 }
64021 TypeVariant::AllowTrustOp => {
64022 Ok(Self::AllowTrustOp(Box::new(serde_json::from_reader(r)?)))
64023 }
64024 TypeVariant::ManageDataOp => {
64025 Ok(Self::ManageDataOp(Box::new(serde_json::from_reader(r)?)))
64026 }
64027 TypeVariant::BumpSequenceOp => {
64028 Ok(Self::BumpSequenceOp(Box::new(serde_json::from_reader(r)?)))
64029 }
64030 TypeVariant::CreateClaimableBalanceOp => Ok(Self::CreateClaimableBalanceOp(Box::new(
64031 serde_json::from_reader(r)?,
64032 ))),
64033 TypeVariant::ClaimClaimableBalanceOp => Ok(Self::ClaimClaimableBalanceOp(Box::new(
64034 serde_json::from_reader(r)?,
64035 ))),
64036 TypeVariant::BeginSponsoringFutureReservesOp => Ok(
64037 Self::BeginSponsoringFutureReservesOp(Box::new(serde_json::from_reader(r)?)),
64038 ),
64039 TypeVariant::RevokeSponsorshipType => Ok(Self::RevokeSponsorshipType(Box::new(
64040 serde_json::from_reader(r)?,
64041 ))),
64042 TypeVariant::RevokeSponsorshipOp => Ok(Self::RevokeSponsorshipOp(Box::new(
64043 serde_json::from_reader(r)?,
64044 ))),
64045 TypeVariant::RevokeSponsorshipOpSigner => Ok(Self::RevokeSponsorshipOpSigner(
64046 Box::new(serde_json::from_reader(r)?),
64047 )),
64048 TypeVariant::ClawbackOp => Ok(Self::ClawbackOp(Box::new(serde_json::from_reader(r)?))),
64049 TypeVariant::ClawbackClaimableBalanceOp => Ok(Self::ClawbackClaimableBalanceOp(
64050 Box::new(serde_json::from_reader(r)?),
64051 )),
64052 TypeVariant::SetTrustLineFlagsOp => Ok(Self::SetTrustLineFlagsOp(Box::new(
64053 serde_json::from_reader(r)?,
64054 ))),
64055 TypeVariant::LiquidityPoolDepositOp => Ok(Self::LiquidityPoolDepositOp(Box::new(
64056 serde_json::from_reader(r)?,
64057 ))),
64058 TypeVariant::LiquidityPoolWithdrawOp => Ok(Self::LiquidityPoolWithdrawOp(Box::new(
64059 serde_json::from_reader(r)?,
64060 ))),
64061 TypeVariant::HostFunctionType => Ok(Self::HostFunctionType(Box::new(
64062 serde_json::from_reader(r)?,
64063 ))),
64064 TypeVariant::ContractIdPreimageType => Ok(Self::ContractIdPreimageType(Box::new(
64065 serde_json::from_reader(r)?,
64066 ))),
64067 TypeVariant::ContractIdPreimage => Ok(Self::ContractIdPreimage(Box::new(
64068 serde_json::from_reader(r)?,
64069 ))),
64070 TypeVariant::ContractIdPreimageFromAddress => Ok(Self::ContractIdPreimageFromAddress(
64071 Box::new(serde_json::from_reader(r)?),
64072 )),
64073 TypeVariant::CreateContractArgs => Ok(Self::CreateContractArgs(Box::new(
64074 serde_json::from_reader(r)?,
64075 ))),
64076 TypeVariant::CreateContractArgsV2 => Ok(Self::CreateContractArgsV2(Box::new(
64077 serde_json::from_reader(r)?,
64078 ))),
64079 TypeVariant::InvokeContractArgs => Ok(Self::InvokeContractArgs(Box::new(
64080 serde_json::from_reader(r)?,
64081 ))),
64082 TypeVariant::HostFunction => {
64083 Ok(Self::HostFunction(Box::new(serde_json::from_reader(r)?)))
64084 }
64085 TypeVariant::SorobanAuthorizedFunctionType => Ok(Self::SorobanAuthorizedFunctionType(
64086 Box::new(serde_json::from_reader(r)?),
64087 )),
64088 TypeVariant::SorobanAuthorizedFunction => Ok(Self::SorobanAuthorizedFunction(
64089 Box::new(serde_json::from_reader(r)?),
64090 )),
64091 TypeVariant::SorobanAuthorizedInvocation => Ok(Self::SorobanAuthorizedInvocation(
64092 Box::new(serde_json::from_reader(r)?),
64093 )),
64094 TypeVariant::SorobanAddressCredentials => Ok(Self::SorobanAddressCredentials(
64095 Box::new(serde_json::from_reader(r)?),
64096 )),
64097 TypeVariant::SorobanCredentialsType => Ok(Self::SorobanCredentialsType(Box::new(
64098 serde_json::from_reader(r)?,
64099 ))),
64100 TypeVariant::SorobanCredentials => Ok(Self::SorobanCredentials(Box::new(
64101 serde_json::from_reader(r)?,
64102 ))),
64103 TypeVariant::SorobanAuthorizationEntry => Ok(Self::SorobanAuthorizationEntry(
64104 Box::new(serde_json::from_reader(r)?),
64105 )),
64106 TypeVariant::SorobanAuthorizationEntries => Ok(Self::SorobanAuthorizationEntries(
64107 Box::new(serde_json::from_reader(r)?),
64108 )),
64109 TypeVariant::InvokeHostFunctionOp => Ok(Self::InvokeHostFunctionOp(Box::new(
64110 serde_json::from_reader(r)?,
64111 ))),
64112 TypeVariant::ExtendFootprintTtlOp => Ok(Self::ExtendFootprintTtlOp(Box::new(
64113 serde_json::from_reader(r)?,
64114 ))),
64115 TypeVariant::RestoreFootprintOp => Ok(Self::RestoreFootprintOp(Box::new(
64116 serde_json::from_reader(r)?,
64117 ))),
64118 TypeVariant::Operation => Ok(Self::Operation(Box::new(serde_json::from_reader(r)?))),
64119 TypeVariant::OperationBody => {
64120 Ok(Self::OperationBody(Box::new(serde_json::from_reader(r)?)))
64121 }
64122 TypeVariant::HashIdPreimage => {
64123 Ok(Self::HashIdPreimage(Box::new(serde_json::from_reader(r)?)))
64124 }
64125 TypeVariant::HashIdPreimageOperationId => Ok(Self::HashIdPreimageOperationId(
64126 Box::new(serde_json::from_reader(r)?),
64127 )),
64128 TypeVariant::HashIdPreimageRevokeId => Ok(Self::HashIdPreimageRevokeId(Box::new(
64129 serde_json::from_reader(r)?,
64130 ))),
64131 TypeVariant::HashIdPreimageContractId => Ok(Self::HashIdPreimageContractId(Box::new(
64132 serde_json::from_reader(r)?,
64133 ))),
64134 TypeVariant::HashIdPreimageSorobanAuthorization => Ok(
64135 Self::HashIdPreimageSorobanAuthorization(Box::new(serde_json::from_reader(r)?)),
64136 ),
64137 TypeVariant::MemoType => Ok(Self::MemoType(Box::new(serde_json::from_reader(r)?))),
64138 TypeVariant::Memo => Ok(Self::Memo(Box::new(serde_json::from_reader(r)?))),
64139 TypeVariant::TimeBounds => Ok(Self::TimeBounds(Box::new(serde_json::from_reader(r)?))),
64140 TypeVariant::LedgerBounds => {
64141 Ok(Self::LedgerBounds(Box::new(serde_json::from_reader(r)?)))
64142 }
64143 TypeVariant::PreconditionsV2 => {
64144 Ok(Self::PreconditionsV2(Box::new(serde_json::from_reader(r)?)))
64145 }
64146 TypeVariant::PreconditionType => Ok(Self::PreconditionType(Box::new(
64147 serde_json::from_reader(r)?,
64148 ))),
64149 TypeVariant::Preconditions => {
64150 Ok(Self::Preconditions(Box::new(serde_json::from_reader(r)?)))
64151 }
64152 TypeVariant::LedgerFootprint => {
64153 Ok(Self::LedgerFootprint(Box::new(serde_json::from_reader(r)?)))
64154 }
64155 TypeVariant::SorobanResources => Ok(Self::SorobanResources(Box::new(
64156 serde_json::from_reader(r)?,
64157 ))),
64158 TypeVariant::SorobanResourcesExtV0 => Ok(Self::SorobanResourcesExtV0(Box::new(
64159 serde_json::from_reader(r)?,
64160 ))),
64161 TypeVariant::SorobanTransactionData => Ok(Self::SorobanTransactionData(Box::new(
64162 serde_json::from_reader(r)?,
64163 ))),
64164 TypeVariant::SorobanTransactionDataExt => Ok(Self::SorobanTransactionDataExt(
64165 Box::new(serde_json::from_reader(r)?),
64166 )),
64167 TypeVariant::TransactionV0 => {
64168 Ok(Self::TransactionV0(Box::new(serde_json::from_reader(r)?)))
64169 }
64170 TypeVariant::TransactionV0Ext => Ok(Self::TransactionV0Ext(Box::new(
64171 serde_json::from_reader(r)?,
64172 ))),
64173 TypeVariant::TransactionV0Envelope => Ok(Self::TransactionV0Envelope(Box::new(
64174 serde_json::from_reader(r)?,
64175 ))),
64176 TypeVariant::Transaction => {
64177 Ok(Self::Transaction(Box::new(serde_json::from_reader(r)?)))
64178 }
64179 TypeVariant::TransactionExt => {
64180 Ok(Self::TransactionExt(Box::new(serde_json::from_reader(r)?)))
64181 }
64182 TypeVariant::TransactionV1Envelope => Ok(Self::TransactionV1Envelope(Box::new(
64183 serde_json::from_reader(r)?,
64184 ))),
64185 TypeVariant::FeeBumpTransaction => Ok(Self::FeeBumpTransaction(Box::new(
64186 serde_json::from_reader(r)?,
64187 ))),
64188 TypeVariant::FeeBumpTransactionInnerTx => Ok(Self::FeeBumpTransactionInnerTx(
64189 Box::new(serde_json::from_reader(r)?),
64190 )),
64191 TypeVariant::FeeBumpTransactionExt => Ok(Self::FeeBumpTransactionExt(Box::new(
64192 serde_json::from_reader(r)?,
64193 ))),
64194 TypeVariant::FeeBumpTransactionEnvelope => Ok(Self::FeeBumpTransactionEnvelope(
64195 Box::new(serde_json::from_reader(r)?),
64196 )),
64197 TypeVariant::TransactionEnvelope => Ok(Self::TransactionEnvelope(Box::new(
64198 serde_json::from_reader(r)?,
64199 ))),
64200 TypeVariant::TransactionSignaturePayload => Ok(Self::TransactionSignaturePayload(
64201 Box::new(serde_json::from_reader(r)?),
64202 )),
64203 TypeVariant::TransactionSignaturePayloadTaggedTransaction => {
64204 Ok(Self::TransactionSignaturePayloadTaggedTransaction(
64205 Box::new(serde_json::from_reader(r)?),
64206 ))
64207 }
64208 TypeVariant::ClaimAtomType => {
64209 Ok(Self::ClaimAtomType(Box::new(serde_json::from_reader(r)?)))
64210 }
64211 TypeVariant::ClaimOfferAtomV0 => Ok(Self::ClaimOfferAtomV0(Box::new(
64212 serde_json::from_reader(r)?,
64213 ))),
64214 TypeVariant::ClaimOfferAtom => {
64215 Ok(Self::ClaimOfferAtom(Box::new(serde_json::from_reader(r)?)))
64216 }
64217 TypeVariant::ClaimLiquidityAtom => Ok(Self::ClaimLiquidityAtom(Box::new(
64218 serde_json::from_reader(r)?,
64219 ))),
64220 TypeVariant::ClaimAtom => Ok(Self::ClaimAtom(Box::new(serde_json::from_reader(r)?))),
64221 TypeVariant::CreateAccountResultCode => Ok(Self::CreateAccountResultCode(Box::new(
64222 serde_json::from_reader(r)?,
64223 ))),
64224 TypeVariant::CreateAccountResult => Ok(Self::CreateAccountResult(Box::new(
64225 serde_json::from_reader(r)?,
64226 ))),
64227 TypeVariant::PaymentResultCode => Ok(Self::PaymentResultCode(Box::new(
64228 serde_json::from_reader(r)?,
64229 ))),
64230 TypeVariant::PaymentResult => {
64231 Ok(Self::PaymentResult(Box::new(serde_json::from_reader(r)?)))
64232 }
64233 TypeVariant::PathPaymentStrictReceiveResultCode => Ok(
64234 Self::PathPaymentStrictReceiveResultCode(Box::new(serde_json::from_reader(r)?)),
64235 ),
64236 TypeVariant::SimplePaymentResult => Ok(Self::SimplePaymentResult(Box::new(
64237 serde_json::from_reader(r)?,
64238 ))),
64239 TypeVariant::PathPaymentStrictReceiveResult => Ok(
64240 Self::PathPaymentStrictReceiveResult(Box::new(serde_json::from_reader(r)?)),
64241 ),
64242 TypeVariant::PathPaymentStrictReceiveResultSuccess => Ok(
64243 Self::PathPaymentStrictReceiveResultSuccess(Box::new(serde_json::from_reader(r)?)),
64244 ),
64245 TypeVariant::PathPaymentStrictSendResultCode => Ok(
64246 Self::PathPaymentStrictSendResultCode(Box::new(serde_json::from_reader(r)?)),
64247 ),
64248 TypeVariant::PathPaymentStrictSendResult => Ok(Self::PathPaymentStrictSendResult(
64249 Box::new(serde_json::from_reader(r)?),
64250 )),
64251 TypeVariant::PathPaymentStrictSendResultSuccess => Ok(
64252 Self::PathPaymentStrictSendResultSuccess(Box::new(serde_json::from_reader(r)?)),
64253 ),
64254 TypeVariant::ManageSellOfferResultCode => Ok(Self::ManageSellOfferResultCode(
64255 Box::new(serde_json::from_reader(r)?),
64256 )),
64257 TypeVariant::ManageOfferEffect => Ok(Self::ManageOfferEffect(Box::new(
64258 serde_json::from_reader(r)?,
64259 ))),
64260 TypeVariant::ManageOfferSuccessResult => Ok(Self::ManageOfferSuccessResult(Box::new(
64261 serde_json::from_reader(r)?,
64262 ))),
64263 TypeVariant::ManageOfferSuccessResultOffer => Ok(Self::ManageOfferSuccessResultOffer(
64264 Box::new(serde_json::from_reader(r)?),
64265 )),
64266 TypeVariant::ManageSellOfferResult => Ok(Self::ManageSellOfferResult(Box::new(
64267 serde_json::from_reader(r)?,
64268 ))),
64269 TypeVariant::ManageBuyOfferResultCode => Ok(Self::ManageBuyOfferResultCode(Box::new(
64270 serde_json::from_reader(r)?,
64271 ))),
64272 TypeVariant::ManageBuyOfferResult => Ok(Self::ManageBuyOfferResult(Box::new(
64273 serde_json::from_reader(r)?,
64274 ))),
64275 TypeVariant::SetOptionsResultCode => Ok(Self::SetOptionsResultCode(Box::new(
64276 serde_json::from_reader(r)?,
64277 ))),
64278 TypeVariant::SetOptionsResult => Ok(Self::SetOptionsResult(Box::new(
64279 serde_json::from_reader(r)?,
64280 ))),
64281 TypeVariant::ChangeTrustResultCode => Ok(Self::ChangeTrustResultCode(Box::new(
64282 serde_json::from_reader(r)?,
64283 ))),
64284 TypeVariant::ChangeTrustResult => Ok(Self::ChangeTrustResult(Box::new(
64285 serde_json::from_reader(r)?,
64286 ))),
64287 TypeVariant::AllowTrustResultCode => Ok(Self::AllowTrustResultCode(Box::new(
64288 serde_json::from_reader(r)?,
64289 ))),
64290 TypeVariant::AllowTrustResult => Ok(Self::AllowTrustResult(Box::new(
64291 serde_json::from_reader(r)?,
64292 ))),
64293 TypeVariant::AccountMergeResultCode => Ok(Self::AccountMergeResultCode(Box::new(
64294 serde_json::from_reader(r)?,
64295 ))),
64296 TypeVariant::AccountMergeResult => Ok(Self::AccountMergeResult(Box::new(
64297 serde_json::from_reader(r)?,
64298 ))),
64299 TypeVariant::InflationResultCode => Ok(Self::InflationResultCode(Box::new(
64300 serde_json::from_reader(r)?,
64301 ))),
64302 TypeVariant::InflationPayout => {
64303 Ok(Self::InflationPayout(Box::new(serde_json::from_reader(r)?)))
64304 }
64305 TypeVariant::InflationResult => {
64306 Ok(Self::InflationResult(Box::new(serde_json::from_reader(r)?)))
64307 }
64308 TypeVariant::ManageDataResultCode => Ok(Self::ManageDataResultCode(Box::new(
64309 serde_json::from_reader(r)?,
64310 ))),
64311 TypeVariant::ManageDataResult => Ok(Self::ManageDataResult(Box::new(
64312 serde_json::from_reader(r)?,
64313 ))),
64314 TypeVariant::BumpSequenceResultCode => Ok(Self::BumpSequenceResultCode(Box::new(
64315 serde_json::from_reader(r)?,
64316 ))),
64317 TypeVariant::BumpSequenceResult => Ok(Self::BumpSequenceResult(Box::new(
64318 serde_json::from_reader(r)?,
64319 ))),
64320 TypeVariant::CreateClaimableBalanceResultCode => Ok(
64321 Self::CreateClaimableBalanceResultCode(Box::new(serde_json::from_reader(r)?)),
64322 ),
64323 TypeVariant::CreateClaimableBalanceResult => Ok(Self::CreateClaimableBalanceResult(
64324 Box::new(serde_json::from_reader(r)?),
64325 )),
64326 TypeVariant::ClaimClaimableBalanceResultCode => Ok(
64327 Self::ClaimClaimableBalanceResultCode(Box::new(serde_json::from_reader(r)?)),
64328 ),
64329 TypeVariant::ClaimClaimableBalanceResult => Ok(Self::ClaimClaimableBalanceResult(
64330 Box::new(serde_json::from_reader(r)?),
64331 )),
64332 TypeVariant::BeginSponsoringFutureReservesResultCode => {
64333 Ok(Self::BeginSponsoringFutureReservesResultCode(Box::new(
64334 serde_json::from_reader(r)?,
64335 )))
64336 }
64337 TypeVariant::BeginSponsoringFutureReservesResult => Ok(
64338 Self::BeginSponsoringFutureReservesResult(Box::new(serde_json::from_reader(r)?)),
64339 ),
64340 TypeVariant::EndSponsoringFutureReservesResultCode => Ok(
64341 Self::EndSponsoringFutureReservesResultCode(Box::new(serde_json::from_reader(r)?)),
64342 ),
64343 TypeVariant::EndSponsoringFutureReservesResult => Ok(
64344 Self::EndSponsoringFutureReservesResult(Box::new(serde_json::from_reader(r)?)),
64345 ),
64346 TypeVariant::RevokeSponsorshipResultCode => Ok(Self::RevokeSponsorshipResultCode(
64347 Box::new(serde_json::from_reader(r)?),
64348 )),
64349 TypeVariant::RevokeSponsorshipResult => Ok(Self::RevokeSponsorshipResult(Box::new(
64350 serde_json::from_reader(r)?,
64351 ))),
64352 TypeVariant::ClawbackResultCode => Ok(Self::ClawbackResultCode(Box::new(
64353 serde_json::from_reader(r)?,
64354 ))),
64355 TypeVariant::ClawbackResult => {
64356 Ok(Self::ClawbackResult(Box::new(serde_json::from_reader(r)?)))
64357 }
64358 TypeVariant::ClawbackClaimableBalanceResultCode => Ok(
64359 Self::ClawbackClaimableBalanceResultCode(Box::new(serde_json::from_reader(r)?)),
64360 ),
64361 TypeVariant::ClawbackClaimableBalanceResult => Ok(
64362 Self::ClawbackClaimableBalanceResult(Box::new(serde_json::from_reader(r)?)),
64363 ),
64364 TypeVariant::SetTrustLineFlagsResultCode => Ok(Self::SetTrustLineFlagsResultCode(
64365 Box::new(serde_json::from_reader(r)?),
64366 )),
64367 TypeVariant::SetTrustLineFlagsResult => Ok(Self::SetTrustLineFlagsResult(Box::new(
64368 serde_json::from_reader(r)?,
64369 ))),
64370 TypeVariant::LiquidityPoolDepositResultCode => Ok(
64371 Self::LiquidityPoolDepositResultCode(Box::new(serde_json::from_reader(r)?)),
64372 ),
64373 TypeVariant::LiquidityPoolDepositResult => Ok(Self::LiquidityPoolDepositResult(
64374 Box::new(serde_json::from_reader(r)?),
64375 )),
64376 TypeVariant::LiquidityPoolWithdrawResultCode => Ok(
64377 Self::LiquidityPoolWithdrawResultCode(Box::new(serde_json::from_reader(r)?)),
64378 ),
64379 TypeVariant::LiquidityPoolWithdrawResult => Ok(Self::LiquidityPoolWithdrawResult(
64380 Box::new(serde_json::from_reader(r)?),
64381 )),
64382 TypeVariant::InvokeHostFunctionResultCode => Ok(Self::InvokeHostFunctionResultCode(
64383 Box::new(serde_json::from_reader(r)?),
64384 )),
64385 TypeVariant::InvokeHostFunctionResult => Ok(Self::InvokeHostFunctionResult(Box::new(
64386 serde_json::from_reader(r)?,
64387 ))),
64388 TypeVariant::ExtendFootprintTtlResultCode => Ok(Self::ExtendFootprintTtlResultCode(
64389 Box::new(serde_json::from_reader(r)?),
64390 )),
64391 TypeVariant::ExtendFootprintTtlResult => Ok(Self::ExtendFootprintTtlResult(Box::new(
64392 serde_json::from_reader(r)?,
64393 ))),
64394 TypeVariant::RestoreFootprintResultCode => Ok(Self::RestoreFootprintResultCode(
64395 Box::new(serde_json::from_reader(r)?),
64396 )),
64397 TypeVariant::RestoreFootprintResult => Ok(Self::RestoreFootprintResult(Box::new(
64398 serde_json::from_reader(r)?,
64399 ))),
64400 TypeVariant::OperationResultCode => Ok(Self::OperationResultCode(Box::new(
64401 serde_json::from_reader(r)?,
64402 ))),
64403 TypeVariant::OperationResult => {
64404 Ok(Self::OperationResult(Box::new(serde_json::from_reader(r)?)))
64405 }
64406 TypeVariant::OperationResultTr => Ok(Self::OperationResultTr(Box::new(
64407 serde_json::from_reader(r)?,
64408 ))),
64409 TypeVariant::TransactionResultCode => Ok(Self::TransactionResultCode(Box::new(
64410 serde_json::from_reader(r)?,
64411 ))),
64412 TypeVariant::InnerTransactionResult => Ok(Self::InnerTransactionResult(Box::new(
64413 serde_json::from_reader(r)?,
64414 ))),
64415 TypeVariant::InnerTransactionResultResult => Ok(Self::InnerTransactionResultResult(
64416 Box::new(serde_json::from_reader(r)?),
64417 )),
64418 TypeVariant::InnerTransactionResultExt => Ok(Self::InnerTransactionResultExt(
64419 Box::new(serde_json::from_reader(r)?),
64420 )),
64421 TypeVariant::InnerTransactionResultPair => Ok(Self::InnerTransactionResultPair(
64422 Box::new(serde_json::from_reader(r)?),
64423 )),
64424 TypeVariant::TransactionResult => Ok(Self::TransactionResult(Box::new(
64425 serde_json::from_reader(r)?,
64426 ))),
64427 TypeVariant::TransactionResultResult => Ok(Self::TransactionResultResult(Box::new(
64428 serde_json::from_reader(r)?,
64429 ))),
64430 TypeVariant::TransactionResultExt => Ok(Self::TransactionResultExt(Box::new(
64431 serde_json::from_reader(r)?,
64432 ))),
64433 TypeVariant::Hash => Ok(Self::Hash(Box::new(serde_json::from_reader(r)?))),
64434 TypeVariant::Uint256 => Ok(Self::Uint256(Box::new(serde_json::from_reader(r)?))),
64435 TypeVariant::Uint32 => Ok(Self::Uint32(Box::new(serde_json::from_reader(r)?))),
64436 TypeVariant::Int32 => Ok(Self::Int32(Box::new(serde_json::from_reader(r)?))),
64437 TypeVariant::Uint64 => Ok(Self::Uint64(Box::new(serde_json::from_reader(r)?))),
64438 TypeVariant::Int64 => Ok(Self::Int64(Box::new(serde_json::from_reader(r)?))),
64439 TypeVariant::TimePoint => Ok(Self::TimePoint(Box::new(serde_json::from_reader(r)?))),
64440 TypeVariant::Duration => Ok(Self::Duration(Box::new(serde_json::from_reader(r)?))),
64441 TypeVariant::ExtensionPoint => {
64442 Ok(Self::ExtensionPoint(Box::new(serde_json::from_reader(r)?)))
64443 }
64444 TypeVariant::CryptoKeyType => {
64445 Ok(Self::CryptoKeyType(Box::new(serde_json::from_reader(r)?)))
64446 }
64447 TypeVariant::PublicKeyType => {
64448 Ok(Self::PublicKeyType(Box::new(serde_json::from_reader(r)?)))
64449 }
64450 TypeVariant::SignerKeyType => {
64451 Ok(Self::SignerKeyType(Box::new(serde_json::from_reader(r)?)))
64452 }
64453 TypeVariant::PublicKey => Ok(Self::PublicKey(Box::new(serde_json::from_reader(r)?))),
64454 TypeVariant::SignerKey => Ok(Self::SignerKey(Box::new(serde_json::from_reader(r)?))),
64455 TypeVariant::SignerKeyEd25519SignedPayload => Ok(Self::SignerKeyEd25519SignedPayload(
64456 Box::new(serde_json::from_reader(r)?),
64457 )),
64458 TypeVariant::Signature => Ok(Self::Signature(Box::new(serde_json::from_reader(r)?))),
64459 TypeVariant::SignatureHint => {
64460 Ok(Self::SignatureHint(Box::new(serde_json::from_reader(r)?)))
64461 }
64462 TypeVariant::NodeId => Ok(Self::NodeId(Box::new(serde_json::from_reader(r)?))),
64463 TypeVariant::AccountId => Ok(Self::AccountId(Box::new(serde_json::from_reader(r)?))),
64464 TypeVariant::ContractId => Ok(Self::ContractId(Box::new(serde_json::from_reader(r)?))),
64465 TypeVariant::Curve25519Secret => Ok(Self::Curve25519Secret(Box::new(
64466 serde_json::from_reader(r)?,
64467 ))),
64468 TypeVariant::Curve25519Public => Ok(Self::Curve25519Public(Box::new(
64469 serde_json::from_reader(r)?,
64470 ))),
64471 TypeVariant::HmacSha256Key => {
64472 Ok(Self::HmacSha256Key(Box::new(serde_json::from_reader(r)?)))
64473 }
64474 TypeVariant::HmacSha256Mac => {
64475 Ok(Self::HmacSha256Mac(Box::new(serde_json::from_reader(r)?)))
64476 }
64477 TypeVariant::ShortHashSeed => {
64478 Ok(Self::ShortHashSeed(Box::new(serde_json::from_reader(r)?)))
64479 }
64480 TypeVariant::BinaryFuseFilterType => Ok(Self::BinaryFuseFilterType(Box::new(
64481 serde_json::from_reader(r)?,
64482 ))),
64483 TypeVariant::SerializedBinaryFuseFilter => Ok(Self::SerializedBinaryFuseFilter(
64484 Box::new(serde_json::from_reader(r)?),
64485 )),
64486 TypeVariant::PoolId => Ok(Self::PoolId(Box::new(serde_json::from_reader(r)?))),
64487 TypeVariant::ClaimableBalanceIdType => Ok(Self::ClaimableBalanceIdType(Box::new(
64488 serde_json::from_reader(r)?,
64489 ))),
64490 TypeVariant::ClaimableBalanceId => Ok(Self::ClaimableBalanceId(Box::new(
64491 serde_json::from_reader(r)?,
64492 ))),
64493 }
64494 }
64495
64496 #[cfg(all(feature = "std", feature = "serde_json"))]
64497 #[allow(clippy::too_many_lines)]
64498 pub fn deserialize_json<'r, R: serde_json::de::Read<'r>>(
64499 v: TypeVariant,
64500 r: &mut serde_json::de::Deserializer<R>,
64501 ) -> Result<Self, Error> {
64502 match v {
64503 TypeVariant::Value => Ok(Self::Value(Box::new(serde::de::Deserialize::deserialize(
64504 r,
64505 )?))),
64506 TypeVariant::ScpBallot => Ok(Self::ScpBallot(Box::new(
64507 serde::de::Deserialize::deserialize(r)?,
64508 ))),
64509 TypeVariant::ScpStatementType => Ok(Self::ScpStatementType(Box::new(
64510 serde::de::Deserialize::deserialize(r)?,
64511 ))),
64512 TypeVariant::ScpNomination => Ok(Self::ScpNomination(Box::new(
64513 serde::de::Deserialize::deserialize(r)?,
64514 ))),
64515 TypeVariant::ScpStatement => Ok(Self::ScpStatement(Box::new(
64516 serde::de::Deserialize::deserialize(r)?,
64517 ))),
64518 TypeVariant::ScpStatementPledges => Ok(Self::ScpStatementPledges(Box::new(
64519 serde::de::Deserialize::deserialize(r)?,
64520 ))),
64521 TypeVariant::ScpStatementPrepare => Ok(Self::ScpStatementPrepare(Box::new(
64522 serde::de::Deserialize::deserialize(r)?,
64523 ))),
64524 TypeVariant::ScpStatementConfirm => Ok(Self::ScpStatementConfirm(Box::new(
64525 serde::de::Deserialize::deserialize(r)?,
64526 ))),
64527 TypeVariant::ScpStatementExternalize => Ok(Self::ScpStatementExternalize(Box::new(
64528 serde::de::Deserialize::deserialize(r)?,
64529 ))),
64530 TypeVariant::ScpEnvelope => Ok(Self::ScpEnvelope(Box::new(
64531 serde::de::Deserialize::deserialize(r)?,
64532 ))),
64533 TypeVariant::ScpQuorumSet => Ok(Self::ScpQuorumSet(Box::new(
64534 serde::de::Deserialize::deserialize(r)?,
64535 ))),
64536 TypeVariant::ConfigSettingContractExecutionLanesV0 => {
64537 Ok(Self::ConfigSettingContractExecutionLanesV0(Box::new(
64538 serde::de::Deserialize::deserialize(r)?,
64539 )))
64540 }
64541 TypeVariant::ConfigSettingContractComputeV0 => {
64542 Ok(Self::ConfigSettingContractComputeV0(Box::new(
64543 serde::de::Deserialize::deserialize(r)?,
64544 )))
64545 }
64546 TypeVariant::ConfigSettingContractParallelComputeV0 => {
64547 Ok(Self::ConfigSettingContractParallelComputeV0(Box::new(
64548 serde::de::Deserialize::deserialize(r)?,
64549 )))
64550 }
64551 TypeVariant::ConfigSettingContractLedgerCostV0 => {
64552 Ok(Self::ConfigSettingContractLedgerCostV0(Box::new(
64553 serde::de::Deserialize::deserialize(r)?,
64554 )))
64555 }
64556 TypeVariant::ConfigSettingContractLedgerCostExtV0 => {
64557 Ok(Self::ConfigSettingContractLedgerCostExtV0(Box::new(
64558 serde::de::Deserialize::deserialize(r)?,
64559 )))
64560 }
64561 TypeVariant::ConfigSettingContractHistoricalDataV0 => {
64562 Ok(Self::ConfigSettingContractHistoricalDataV0(Box::new(
64563 serde::de::Deserialize::deserialize(r)?,
64564 )))
64565 }
64566 TypeVariant::ConfigSettingContractEventsV0 => Ok(Self::ConfigSettingContractEventsV0(
64567 Box::new(serde::de::Deserialize::deserialize(r)?),
64568 )),
64569 TypeVariant::ConfigSettingContractBandwidthV0 => {
64570 Ok(Self::ConfigSettingContractBandwidthV0(Box::new(
64571 serde::de::Deserialize::deserialize(r)?,
64572 )))
64573 }
64574 TypeVariant::ContractCostType => Ok(Self::ContractCostType(Box::new(
64575 serde::de::Deserialize::deserialize(r)?,
64576 ))),
64577 TypeVariant::ContractCostParamEntry => Ok(Self::ContractCostParamEntry(Box::new(
64578 serde::de::Deserialize::deserialize(r)?,
64579 ))),
64580 TypeVariant::StateArchivalSettings => Ok(Self::StateArchivalSettings(Box::new(
64581 serde::de::Deserialize::deserialize(r)?,
64582 ))),
64583 TypeVariant::EvictionIterator => Ok(Self::EvictionIterator(Box::new(
64584 serde::de::Deserialize::deserialize(r)?,
64585 ))),
64586 TypeVariant::ConfigSettingScpTiming => Ok(Self::ConfigSettingScpTiming(Box::new(
64587 serde::de::Deserialize::deserialize(r)?,
64588 ))),
64589 TypeVariant::ContractCostParams => Ok(Self::ContractCostParams(Box::new(
64590 serde::de::Deserialize::deserialize(r)?,
64591 ))),
64592 TypeVariant::ConfigSettingId => Ok(Self::ConfigSettingId(Box::new(
64593 serde::de::Deserialize::deserialize(r)?,
64594 ))),
64595 TypeVariant::ConfigSettingEntry => Ok(Self::ConfigSettingEntry(Box::new(
64596 serde::de::Deserialize::deserialize(r)?,
64597 ))),
64598 TypeVariant::ScEnvMetaKind => Ok(Self::ScEnvMetaKind(Box::new(
64599 serde::de::Deserialize::deserialize(r)?,
64600 ))),
64601 TypeVariant::ScEnvMetaEntry => Ok(Self::ScEnvMetaEntry(Box::new(
64602 serde::de::Deserialize::deserialize(r)?,
64603 ))),
64604 TypeVariant::ScEnvMetaEntryInterfaceVersion => {
64605 Ok(Self::ScEnvMetaEntryInterfaceVersion(Box::new(
64606 serde::de::Deserialize::deserialize(r)?,
64607 )))
64608 }
64609 TypeVariant::ScMetaV0 => Ok(Self::ScMetaV0(Box::new(
64610 serde::de::Deserialize::deserialize(r)?,
64611 ))),
64612 TypeVariant::ScMetaKind => Ok(Self::ScMetaKind(Box::new(
64613 serde::de::Deserialize::deserialize(r)?,
64614 ))),
64615 TypeVariant::ScMetaEntry => Ok(Self::ScMetaEntry(Box::new(
64616 serde::de::Deserialize::deserialize(r)?,
64617 ))),
64618 TypeVariant::ScSpecType => Ok(Self::ScSpecType(Box::new(
64619 serde::de::Deserialize::deserialize(r)?,
64620 ))),
64621 TypeVariant::ScSpecTypeOption => Ok(Self::ScSpecTypeOption(Box::new(
64622 serde::de::Deserialize::deserialize(r)?,
64623 ))),
64624 TypeVariant::ScSpecTypeResult => Ok(Self::ScSpecTypeResult(Box::new(
64625 serde::de::Deserialize::deserialize(r)?,
64626 ))),
64627 TypeVariant::ScSpecTypeVec => Ok(Self::ScSpecTypeVec(Box::new(
64628 serde::de::Deserialize::deserialize(r)?,
64629 ))),
64630 TypeVariant::ScSpecTypeMap => Ok(Self::ScSpecTypeMap(Box::new(
64631 serde::de::Deserialize::deserialize(r)?,
64632 ))),
64633 TypeVariant::ScSpecTypeTuple => Ok(Self::ScSpecTypeTuple(Box::new(
64634 serde::de::Deserialize::deserialize(r)?,
64635 ))),
64636 TypeVariant::ScSpecTypeBytesN => Ok(Self::ScSpecTypeBytesN(Box::new(
64637 serde::de::Deserialize::deserialize(r)?,
64638 ))),
64639 TypeVariant::ScSpecTypeUdt => Ok(Self::ScSpecTypeUdt(Box::new(
64640 serde::de::Deserialize::deserialize(r)?,
64641 ))),
64642 TypeVariant::ScSpecTypeDef => Ok(Self::ScSpecTypeDef(Box::new(
64643 serde::de::Deserialize::deserialize(r)?,
64644 ))),
64645 TypeVariant::ScSpecUdtStructFieldV0 => Ok(Self::ScSpecUdtStructFieldV0(Box::new(
64646 serde::de::Deserialize::deserialize(r)?,
64647 ))),
64648 TypeVariant::ScSpecUdtStructV0 => Ok(Self::ScSpecUdtStructV0(Box::new(
64649 serde::de::Deserialize::deserialize(r)?,
64650 ))),
64651 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Ok(Self::ScSpecUdtUnionCaseVoidV0(Box::new(
64652 serde::de::Deserialize::deserialize(r)?,
64653 ))),
64654 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Ok(Self::ScSpecUdtUnionCaseTupleV0(
64655 Box::new(serde::de::Deserialize::deserialize(r)?),
64656 )),
64657 TypeVariant::ScSpecUdtUnionCaseV0Kind => Ok(Self::ScSpecUdtUnionCaseV0Kind(Box::new(
64658 serde::de::Deserialize::deserialize(r)?,
64659 ))),
64660 TypeVariant::ScSpecUdtUnionCaseV0 => Ok(Self::ScSpecUdtUnionCaseV0(Box::new(
64661 serde::de::Deserialize::deserialize(r)?,
64662 ))),
64663 TypeVariant::ScSpecUdtUnionV0 => Ok(Self::ScSpecUdtUnionV0(Box::new(
64664 serde::de::Deserialize::deserialize(r)?,
64665 ))),
64666 TypeVariant::ScSpecUdtEnumCaseV0 => Ok(Self::ScSpecUdtEnumCaseV0(Box::new(
64667 serde::de::Deserialize::deserialize(r)?,
64668 ))),
64669 TypeVariant::ScSpecUdtEnumV0 => Ok(Self::ScSpecUdtEnumV0(Box::new(
64670 serde::de::Deserialize::deserialize(r)?,
64671 ))),
64672 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Ok(Self::ScSpecUdtErrorEnumCaseV0(Box::new(
64673 serde::de::Deserialize::deserialize(r)?,
64674 ))),
64675 TypeVariant::ScSpecUdtErrorEnumV0 => Ok(Self::ScSpecUdtErrorEnumV0(Box::new(
64676 serde::de::Deserialize::deserialize(r)?,
64677 ))),
64678 TypeVariant::ScSpecFunctionInputV0 => Ok(Self::ScSpecFunctionInputV0(Box::new(
64679 serde::de::Deserialize::deserialize(r)?,
64680 ))),
64681 TypeVariant::ScSpecFunctionV0 => Ok(Self::ScSpecFunctionV0(Box::new(
64682 serde::de::Deserialize::deserialize(r)?,
64683 ))),
64684 TypeVariant::ScSpecEventParamLocationV0 => Ok(Self::ScSpecEventParamLocationV0(
64685 Box::new(serde::de::Deserialize::deserialize(r)?),
64686 )),
64687 TypeVariant::ScSpecEventParamV0 => Ok(Self::ScSpecEventParamV0(Box::new(
64688 serde::de::Deserialize::deserialize(r)?,
64689 ))),
64690 TypeVariant::ScSpecEventDataFormat => Ok(Self::ScSpecEventDataFormat(Box::new(
64691 serde::de::Deserialize::deserialize(r)?,
64692 ))),
64693 TypeVariant::ScSpecEventV0 => Ok(Self::ScSpecEventV0(Box::new(
64694 serde::de::Deserialize::deserialize(r)?,
64695 ))),
64696 TypeVariant::ScSpecEntryKind => Ok(Self::ScSpecEntryKind(Box::new(
64697 serde::de::Deserialize::deserialize(r)?,
64698 ))),
64699 TypeVariant::ScSpecEntry => Ok(Self::ScSpecEntry(Box::new(
64700 serde::de::Deserialize::deserialize(r)?,
64701 ))),
64702 TypeVariant::ScValType => Ok(Self::ScValType(Box::new(
64703 serde::de::Deserialize::deserialize(r)?,
64704 ))),
64705 TypeVariant::ScErrorType => Ok(Self::ScErrorType(Box::new(
64706 serde::de::Deserialize::deserialize(r)?,
64707 ))),
64708 TypeVariant::ScErrorCode => Ok(Self::ScErrorCode(Box::new(
64709 serde::de::Deserialize::deserialize(r)?,
64710 ))),
64711 TypeVariant::ScError => Ok(Self::ScError(Box::new(
64712 serde::de::Deserialize::deserialize(r)?,
64713 ))),
64714 TypeVariant::UInt128Parts => Ok(Self::UInt128Parts(Box::new(
64715 serde::de::Deserialize::deserialize(r)?,
64716 ))),
64717 TypeVariant::Int128Parts => Ok(Self::Int128Parts(Box::new(
64718 serde::de::Deserialize::deserialize(r)?,
64719 ))),
64720 TypeVariant::UInt256Parts => Ok(Self::UInt256Parts(Box::new(
64721 serde::de::Deserialize::deserialize(r)?,
64722 ))),
64723 TypeVariant::Int256Parts => Ok(Self::Int256Parts(Box::new(
64724 serde::de::Deserialize::deserialize(r)?,
64725 ))),
64726 TypeVariant::ContractExecutableType => Ok(Self::ContractExecutableType(Box::new(
64727 serde::de::Deserialize::deserialize(r)?,
64728 ))),
64729 TypeVariant::ContractExecutable => Ok(Self::ContractExecutable(Box::new(
64730 serde::de::Deserialize::deserialize(r)?,
64731 ))),
64732 TypeVariant::ScAddressType => Ok(Self::ScAddressType(Box::new(
64733 serde::de::Deserialize::deserialize(r)?,
64734 ))),
64735 TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new(
64736 serde::de::Deserialize::deserialize(r)?,
64737 ))),
64738 TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new(
64739 serde::de::Deserialize::deserialize(r)?,
64740 ))),
64741 TypeVariant::ScVec => Ok(Self::ScVec(Box::new(serde::de::Deserialize::deserialize(
64742 r,
64743 )?))),
64744 TypeVariant::ScMap => Ok(Self::ScMap(Box::new(serde::de::Deserialize::deserialize(
64745 r,
64746 )?))),
64747 TypeVariant::ScBytes => Ok(Self::ScBytes(Box::new(
64748 serde::de::Deserialize::deserialize(r)?,
64749 ))),
64750 TypeVariant::ScString => Ok(Self::ScString(Box::new(
64751 serde::de::Deserialize::deserialize(r)?,
64752 ))),
64753 TypeVariant::ScSymbol => Ok(Self::ScSymbol(Box::new(
64754 serde::de::Deserialize::deserialize(r)?,
64755 ))),
64756 TypeVariant::ScNonceKey => Ok(Self::ScNonceKey(Box::new(
64757 serde::de::Deserialize::deserialize(r)?,
64758 ))),
64759 TypeVariant::ScContractInstance => Ok(Self::ScContractInstance(Box::new(
64760 serde::de::Deserialize::deserialize(r)?,
64761 ))),
64762 TypeVariant::ScVal => Ok(Self::ScVal(Box::new(serde::de::Deserialize::deserialize(
64763 r,
64764 )?))),
64765 TypeVariant::ScMapEntry => Ok(Self::ScMapEntry(Box::new(
64766 serde::de::Deserialize::deserialize(r)?,
64767 ))),
64768 TypeVariant::LedgerCloseMetaBatch => Ok(Self::LedgerCloseMetaBatch(Box::new(
64769 serde::de::Deserialize::deserialize(r)?,
64770 ))),
64771 TypeVariant::StoredTransactionSet => Ok(Self::StoredTransactionSet(Box::new(
64772 serde::de::Deserialize::deserialize(r)?,
64773 ))),
64774 TypeVariant::StoredDebugTransactionSet => Ok(Self::StoredDebugTransactionSet(
64775 Box::new(serde::de::Deserialize::deserialize(r)?),
64776 )),
64777 TypeVariant::PersistedScpStateV0 => Ok(Self::PersistedScpStateV0(Box::new(
64778 serde::de::Deserialize::deserialize(r)?,
64779 ))),
64780 TypeVariant::PersistedScpStateV1 => Ok(Self::PersistedScpStateV1(Box::new(
64781 serde::de::Deserialize::deserialize(r)?,
64782 ))),
64783 TypeVariant::PersistedScpState => Ok(Self::PersistedScpState(Box::new(
64784 serde::de::Deserialize::deserialize(r)?,
64785 ))),
64786 TypeVariant::Thresholds => Ok(Self::Thresholds(Box::new(
64787 serde::de::Deserialize::deserialize(r)?,
64788 ))),
64789 TypeVariant::String32 => Ok(Self::String32(Box::new(
64790 serde::de::Deserialize::deserialize(r)?,
64791 ))),
64792 TypeVariant::String64 => Ok(Self::String64(Box::new(
64793 serde::de::Deserialize::deserialize(r)?,
64794 ))),
64795 TypeVariant::SequenceNumber => Ok(Self::SequenceNumber(Box::new(
64796 serde::de::Deserialize::deserialize(r)?,
64797 ))),
64798 TypeVariant::DataValue => Ok(Self::DataValue(Box::new(
64799 serde::de::Deserialize::deserialize(r)?,
64800 ))),
64801 TypeVariant::AssetCode4 => Ok(Self::AssetCode4(Box::new(
64802 serde::de::Deserialize::deserialize(r)?,
64803 ))),
64804 TypeVariant::AssetCode12 => Ok(Self::AssetCode12(Box::new(
64805 serde::de::Deserialize::deserialize(r)?,
64806 ))),
64807 TypeVariant::AssetType => Ok(Self::AssetType(Box::new(
64808 serde::de::Deserialize::deserialize(r)?,
64809 ))),
64810 TypeVariant::AssetCode => Ok(Self::AssetCode(Box::new(
64811 serde::de::Deserialize::deserialize(r)?,
64812 ))),
64813 TypeVariant::AlphaNum4 => Ok(Self::AlphaNum4(Box::new(
64814 serde::de::Deserialize::deserialize(r)?,
64815 ))),
64816 TypeVariant::AlphaNum12 => Ok(Self::AlphaNum12(Box::new(
64817 serde::de::Deserialize::deserialize(r)?,
64818 ))),
64819 TypeVariant::Asset => Ok(Self::Asset(Box::new(serde::de::Deserialize::deserialize(
64820 r,
64821 )?))),
64822 TypeVariant::Price => Ok(Self::Price(Box::new(serde::de::Deserialize::deserialize(
64823 r,
64824 )?))),
64825 TypeVariant::Liabilities => Ok(Self::Liabilities(Box::new(
64826 serde::de::Deserialize::deserialize(r)?,
64827 ))),
64828 TypeVariant::ThresholdIndexes => Ok(Self::ThresholdIndexes(Box::new(
64829 serde::de::Deserialize::deserialize(r)?,
64830 ))),
64831 TypeVariant::LedgerEntryType => Ok(Self::LedgerEntryType(Box::new(
64832 serde::de::Deserialize::deserialize(r)?,
64833 ))),
64834 TypeVariant::Signer => Ok(Self::Signer(Box::new(serde::de::Deserialize::deserialize(
64835 r,
64836 )?))),
64837 TypeVariant::AccountFlags => Ok(Self::AccountFlags(Box::new(
64838 serde::de::Deserialize::deserialize(r)?,
64839 ))),
64840 TypeVariant::SponsorshipDescriptor => Ok(Self::SponsorshipDescriptor(Box::new(
64841 serde::de::Deserialize::deserialize(r)?,
64842 ))),
64843 TypeVariant::AccountEntryExtensionV3 => Ok(Self::AccountEntryExtensionV3(Box::new(
64844 serde::de::Deserialize::deserialize(r)?,
64845 ))),
64846 TypeVariant::AccountEntryExtensionV2 => Ok(Self::AccountEntryExtensionV2(Box::new(
64847 serde::de::Deserialize::deserialize(r)?,
64848 ))),
64849 TypeVariant::AccountEntryExtensionV2Ext => Ok(Self::AccountEntryExtensionV2Ext(
64850 Box::new(serde::de::Deserialize::deserialize(r)?),
64851 )),
64852 TypeVariant::AccountEntryExtensionV1 => Ok(Self::AccountEntryExtensionV1(Box::new(
64853 serde::de::Deserialize::deserialize(r)?,
64854 ))),
64855 TypeVariant::AccountEntryExtensionV1Ext => Ok(Self::AccountEntryExtensionV1Ext(
64856 Box::new(serde::de::Deserialize::deserialize(r)?),
64857 )),
64858 TypeVariant::AccountEntry => Ok(Self::AccountEntry(Box::new(
64859 serde::de::Deserialize::deserialize(r)?,
64860 ))),
64861 TypeVariant::AccountEntryExt => Ok(Self::AccountEntryExt(Box::new(
64862 serde::de::Deserialize::deserialize(r)?,
64863 ))),
64864 TypeVariant::TrustLineFlags => Ok(Self::TrustLineFlags(Box::new(
64865 serde::de::Deserialize::deserialize(r)?,
64866 ))),
64867 TypeVariant::LiquidityPoolType => Ok(Self::LiquidityPoolType(Box::new(
64868 serde::de::Deserialize::deserialize(r)?,
64869 ))),
64870 TypeVariant::TrustLineAsset => Ok(Self::TrustLineAsset(Box::new(
64871 serde::de::Deserialize::deserialize(r)?,
64872 ))),
64873 TypeVariant::TrustLineEntryExtensionV2 => Ok(Self::TrustLineEntryExtensionV2(
64874 Box::new(serde::de::Deserialize::deserialize(r)?),
64875 )),
64876 TypeVariant::TrustLineEntryExtensionV2Ext => Ok(Self::TrustLineEntryExtensionV2Ext(
64877 Box::new(serde::de::Deserialize::deserialize(r)?),
64878 )),
64879 TypeVariant::TrustLineEntry => Ok(Self::TrustLineEntry(Box::new(
64880 serde::de::Deserialize::deserialize(r)?,
64881 ))),
64882 TypeVariant::TrustLineEntryExt => Ok(Self::TrustLineEntryExt(Box::new(
64883 serde::de::Deserialize::deserialize(r)?,
64884 ))),
64885 TypeVariant::TrustLineEntryV1 => Ok(Self::TrustLineEntryV1(Box::new(
64886 serde::de::Deserialize::deserialize(r)?,
64887 ))),
64888 TypeVariant::TrustLineEntryV1Ext => Ok(Self::TrustLineEntryV1Ext(Box::new(
64889 serde::de::Deserialize::deserialize(r)?,
64890 ))),
64891 TypeVariant::OfferEntryFlags => Ok(Self::OfferEntryFlags(Box::new(
64892 serde::de::Deserialize::deserialize(r)?,
64893 ))),
64894 TypeVariant::OfferEntry => Ok(Self::OfferEntry(Box::new(
64895 serde::de::Deserialize::deserialize(r)?,
64896 ))),
64897 TypeVariant::OfferEntryExt => Ok(Self::OfferEntryExt(Box::new(
64898 serde::de::Deserialize::deserialize(r)?,
64899 ))),
64900 TypeVariant::DataEntry => Ok(Self::DataEntry(Box::new(
64901 serde::de::Deserialize::deserialize(r)?,
64902 ))),
64903 TypeVariant::DataEntryExt => Ok(Self::DataEntryExt(Box::new(
64904 serde::de::Deserialize::deserialize(r)?,
64905 ))),
64906 TypeVariant::ClaimPredicateType => Ok(Self::ClaimPredicateType(Box::new(
64907 serde::de::Deserialize::deserialize(r)?,
64908 ))),
64909 TypeVariant::ClaimPredicate => Ok(Self::ClaimPredicate(Box::new(
64910 serde::de::Deserialize::deserialize(r)?,
64911 ))),
64912 TypeVariant::ClaimantType => Ok(Self::ClaimantType(Box::new(
64913 serde::de::Deserialize::deserialize(r)?,
64914 ))),
64915 TypeVariant::Claimant => Ok(Self::Claimant(Box::new(
64916 serde::de::Deserialize::deserialize(r)?,
64917 ))),
64918 TypeVariant::ClaimantV0 => Ok(Self::ClaimantV0(Box::new(
64919 serde::de::Deserialize::deserialize(r)?,
64920 ))),
64921 TypeVariant::ClaimableBalanceFlags => Ok(Self::ClaimableBalanceFlags(Box::new(
64922 serde::de::Deserialize::deserialize(r)?,
64923 ))),
64924 TypeVariant::ClaimableBalanceEntryExtensionV1 => {
64925 Ok(Self::ClaimableBalanceEntryExtensionV1(Box::new(
64926 serde::de::Deserialize::deserialize(r)?,
64927 )))
64928 }
64929 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => {
64930 Ok(Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(
64931 serde::de::Deserialize::deserialize(r)?,
64932 )))
64933 }
64934 TypeVariant::ClaimableBalanceEntry => Ok(Self::ClaimableBalanceEntry(Box::new(
64935 serde::de::Deserialize::deserialize(r)?,
64936 ))),
64937 TypeVariant::ClaimableBalanceEntryExt => Ok(Self::ClaimableBalanceEntryExt(Box::new(
64938 serde::de::Deserialize::deserialize(r)?,
64939 ))),
64940 TypeVariant::LiquidityPoolConstantProductParameters => {
64941 Ok(Self::LiquidityPoolConstantProductParameters(Box::new(
64942 serde::de::Deserialize::deserialize(r)?,
64943 )))
64944 }
64945 TypeVariant::LiquidityPoolEntry => Ok(Self::LiquidityPoolEntry(Box::new(
64946 serde::de::Deserialize::deserialize(r)?,
64947 ))),
64948 TypeVariant::LiquidityPoolEntryBody => Ok(Self::LiquidityPoolEntryBody(Box::new(
64949 serde::de::Deserialize::deserialize(r)?,
64950 ))),
64951 TypeVariant::LiquidityPoolEntryConstantProduct => {
64952 Ok(Self::LiquidityPoolEntryConstantProduct(Box::new(
64953 serde::de::Deserialize::deserialize(r)?,
64954 )))
64955 }
64956 TypeVariant::ContractDataDurability => Ok(Self::ContractDataDurability(Box::new(
64957 serde::de::Deserialize::deserialize(r)?,
64958 ))),
64959 TypeVariant::ContractDataEntry => Ok(Self::ContractDataEntry(Box::new(
64960 serde::de::Deserialize::deserialize(r)?,
64961 ))),
64962 TypeVariant::ContractCodeCostInputs => Ok(Self::ContractCodeCostInputs(Box::new(
64963 serde::de::Deserialize::deserialize(r)?,
64964 ))),
64965 TypeVariant::ContractCodeEntry => Ok(Self::ContractCodeEntry(Box::new(
64966 serde::de::Deserialize::deserialize(r)?,
64967 ))),
64968 TypeVariant::ContractCodeEntryExt => Ok(Self::ContractCodeEntryExt(Box::new(
64969 serde::de::Deserialize::deserialize(r)?,
64970 ))),
64971 TypeVariant::ContractCodeEntryV1 => Ok(Self::ContractCodeEntryV1(Box::new(
64972 serde::de::Deserialize::deserialize(r)?,
64973 ))),
64974 TypeVariant::TtlEntry => Ok(Self::TtlEntry(Box::new(
64975 serde::de::Deserialize::deserialize(r)?,
64976 ))),
64977 TypeVariant::LedgerEntryExtensionV1 => Ok(Self::LedgerEntryExtensionV1(Box::new(
64978 serde::de::Deserialize::deserialize(r)?,
64979 ))),
64980 TypeVariant::LedgerEntryExtensionV1Ext => Ok(Self::LedgerEntryExtensionV1Ext(
64981 Box::new(serde::de::Deserialize::deserialize(r)?),
64982 )),
64983 TypeVariant::LedgerEntry => Ok(Self::LedgerEntry(Box::new(
64984 serde::de::Deserialize::deserialize(r)?,
64985 ))),
64986 TypeVariant::LedgerEntryData => Ok(Self::LedgerEntryData(Box::new(
64987 serde::de::Deserialize::deserialize(r)?,
64988 ))),
64989 TypeVariant::LedgerEntryExt => Ok(Self::LedgerEntryExt(Box::new(
64990 serde::de::Deserialize::deserialize(r)?,
64991 ))),
64992 TypeVariant::LedgerKey => Ok(Self::LedgerKey(Box::new(
64993 serde::de::Deserialize::deserialize(r)?,
64994 ))),
64995 TypeVariant::LedgerKeyAccount => Ok(Self::LedgerKeyAccount(Box::new(
64996 serde::de::Deserialize::deserialize(r)?,
64997 ))),
64998 TypeVariant::LedgerKeyTrustLine => Ok(Self::LedgerKeyTrustLine(Box::new(
64999 serde::de::Deserialize::deserialize(r)?,
65000 ))),
65001 TypeVariant::LedgerKeyOffer => Ok(Self::LedgerKeyOffer(Box::new(
65002 serde::de::Deserialize::deserialize(r)?,
65003 ))),
65004 TypeVariant::LedgerKeyData => Ok(Self::LedgerKeyData(Box::new(
65005 serde::de::Deserialize::deserialize(r)?,
65006 ))),
65007 TypeVariant::LedgerKeyClaimableBalance => Ok(Self::LedgerKeyClaimableBalance(
65008 Box::new(serde::de::Deserialize::deserialize(r)?),
65009 )),
65010 TypeVariant::LedgerKeyLiquidityPool => Ok(Self::LedgerKeyLiquidityPool(Box::new(
65011 serde::de::Deserialize::deserialize(r)?,
65012 ))),
65013 TypeVariant::LedgerKeyContractData => Ok(Self::LedgerKeyContractData(Box::new(
65014 serde::de::Deserialize::deserialize(r)?,
65015 ))),
65016 TypeVariant::LedgerKeyContractCode => Ok(Self::LedgerKeyContractCode(Box::new(
65017 serde::de::Deserialize::deserialize(r)?,
65018 ))),
65019 TypeVariant::LedgerKeyConfigSetting => Ok(Self::LedgerKeyConfigSetting(Box::new(
65020 serde::de::Deserialize::deserialize(r)?,
65021 ))),
65022 TypeVariant::LedgerKeyTtl => Ok(Self::LedgerKeyTtl(Box::new(
65023 serde::de::Deserialize::deserialize(r)?,
65024 ))),
65025 TypeVariant::EnvelopeType => Ok(Self::EnvelopeType(Box::new(
65026 serde::de::Deserialize::deserialize(r)?,
65027 ))),
65028 TypeVariant::BucketListType => Ok(Self::BucketListType(Box::new(
65029 serde::de::Deserialize::deserialize(r)?,
65030 ))),
65031 TypeVariant::BucketEntryType => Ok(Self::BucketEntryType(Box::new(
65032 serde::de::Deserialize::deserialize(r)?,
65033 ))),
65034 TypeVariant::HotArchiveBucketEntryType => Ok(Self::HotArchiveBucketEntryType(
65035 Box::new(serde::de::Deserialize::deserialize(r)?),
65036 )),
65037 TypeVariant::BucketMetadata => Ok(Self::BucketMetadata(Box::new(
65038 serde::de::Deserialize::deserialize(r)?,
65039 ))),
65040 TypeVariant::BucketMetadataExt => Ok(Self::BucketMetadataExt(Box::new(
65041 serde::de::Deserialize::deserialize(r)?,
65042 ))),
65043 TypeVariant::BucketEntry => Ok(Self::BucketEntry(Box::new(
65044 serde::de::Deserialize::deserialize(r)?,
65045 ))),
65046 TypeVariant::HotArchiveBucketEntry => Ok(Self::HotArchiveBucketEntry(Box::new(
65047 serde::de::Deserialize::deserialize(r)?,
65048 ))),
65049 TypeVariant::UpgradeType => Ok(Self::UpgradeType(Box::new(
65050 serde::de::Deserialize::deserialize(r)?,
65051 ))),
65052 TypeVariant::StellarValueType => Ok(Self::StellarValueType(Box::new(
65053 serde::de::Deserialize::deserialize(r)?,
65054 ))),
65055 TypeVariant::LedgerCloseValueSignature => Ok(Self::LedgerCloseValueSignature(
65056 Box::new(serde::de::Deserialize::deserialize(r)?),
65057 )),
65058 TypeVariant::StellarValue => Ok(Self::StellarValue(Box::new(
65059 serde::de::Deserialize::deserialize(r)?,
65060 ))),
65061 TypeVariant::StellarValueExt => Ok(Self::StellarValueExt(Box::new(
65062 serde::de::Deserialize::deserialize(r)?,
65063 ))),
65064 TypeVariant::LedgerHeaderFlags => Ok(Self::LedgerHeaderFlags(Box::new(
65065 serde::de::Deserialize::deserialize(r)?,
65066 ))),
65067 TypeVariant::LedgerHeaderExtensionV1 => Ok(Self::LedgerHeaderExtensionV1(Box::new(
65068 serde::de::Deserialize::deserialize(r)?,
65069 ))),
65070 TypeVariant::LedgerHeaderExtensionV1Ext => Ok(Self::LedgerHeaderExtensionV1Ext(
65071 Box::new(serde::de::Deserialize::deserialize(r)?),
65072 )),
65073 TypeVariant::LedgerHeader => Ok(Self::LedgerHeader(Box::new(
65074 serde::de::Deserialize::deserialize(r)?,
65075 ))),
65076 TypeVariant::LedgerHeaderExt => Ok(Self::LedgerHeaderExt(Box::new(
65077 serde::de::Deserialize::deserialize(r)?,
65078 ))),
65079 TypeVariant::LedgerUpgradeType => Ok(Self::LedgerUpgradeType(Box::new(
65080 serde::de::Deserialize::deserialize(r)?,
65081 ))),
65082 TypeVariant::ConfigUpgradeSetKey => Ok(Self::ConfigUpgradeSetKey(Box::new(
65083 serde::de::Deserialize::deserialize(r)?,
65084 ))),
65085 TypeVariant::LedgerUpgrade => Ok(Self::LedgerUpgrade(Box::new(
65086 serde::de::Deserialize::deserialize(r)?,
65087 ))),
65088 TypeVariant::ConfigUpgradeSet => Ok(Self::ConfigUpgradeSet(Box::new(
65089 serde::de::Deserialize::deserialize(r)?,
65090 ))),
65091 TypeVariant::TxSetComponentType => Ok(Self::TxSetComponentType(Box::new(
65092 serde::de::Deserialize::deserialize(r)?,
65093 ))),
65094 TypeVariant::DependentTxCluster => Ok(Self::DependentTxCluster(Box::new(
65095 serde::de::Deserialize::deserialize(r)?,
65096 ))),
65097 TypeVariant::ParallelTxExecutionStage => Ok(Self::ParallelTxExecutionStage(Box::new(
65098 serde::de::Deserialize::deserialize(r)?,
65099 ))),
65100 TypeVariant::ParallelTxsComponent => Ok(Self::ParallelTxsComponent(Box::new(
65101 serde::de::Deserialize::deserialize(r)?,
65102 ))),
65103 TypeVariant::TxSetComponent => Ok(Self::TxSetComponent(Box::new(
65104 serde::de::Deserialize::deserialize(r)?,
65105 ))),
65106 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => {
65107 Ok(Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(
65108 serde::de::Deserialize::deserialize(r)?,
65109 )))
65110 }
65111 TypeVariant::TransactionPhase => Ok(Self::TransactionPhase(Box::new(
65112 serde::de::Deserialize::deserialize(r)?,
65113 ))),
65114 TypeVariant::TransactionSet => Ok(Self::TransactionSet(Box::new(
65115 serde::de::Deserialize::deserialize(r)?,
65116 ))),
65117 TypeVariant::TransactionSetV1 => Ok(Self::TransactionSetV1(Box::new(
65118 serde::de::Deserialize::deserialize(r)?,
65119 ))),
65120 TypeVariant::GeneralizedTransactionSet => Ok(Self::GeneralizedTransactionSet(
65121 Box::new(serde::de::Deserialize::deserialize(r)?),
65122 )),
65123 TypeVariant::TransactionResultPair => Ok(Self::TransactionResultPair(Box::new(
65124 serde::de::Deserialize::deserialize(r)?,
65125 ))),
65126 TypeVariant::TransactionResultSet => Ok(Self::TransactionResultSet(Box::new(
65127 serde::de::Deserialize::deserialize(r)?,
65128 ))),
65129 TypeVariant::TransactionHistoryEntry => Ok(Self::TransactionHistoryEntry(Box::new(
65130 serde::de::Deserialize::deserialize(r)?,
65131 ))),
65132 TypeVariant::TransactionHistoryEntryExt => Ok(Self::TransactionHistoryEntryExt(
65133 Box::new(serde::de::Deserialize::deserialize(r)?),
65134 )),
65135 TypeVariant::TransactionHistoryResultEntry => Ok(Self::TransactionHistoryResultEntry(
65136 Box::new(serde::de::Deserialize::deserialize(r)?),
65137 )),
65138 TypeVariant::TransactionHistoryResultEntryExt => {
65139 Ok(Self::TransactionHistoryResultEntryExt(Box::new(
65140 serde::de::Deserialize::deserialize(r)?,
65141 )))
65142 }
65143 TypeVariant::LedgerHeaderHistoryEntry => Ok(Self::LedgerHeaderHistoryEntry(Box::new(
65144 serde::de::Deserialize::deserialize(r)?,
65145 ))),
65146 TypeVariant::LedgerHeaderHistoryEntryExt => Ok(Self::LedgerHeaderHistoryEntryExt(
65147 Box::new(serde::de::Deserialize::deserialize(r)?),
65148 )),
65149 TypeVariant::LedgerScpMessages => Ok(Self::LedgerScpMessages(Box::new(
65150 serde::de::Deserialize::deserialize(r)?,
65151 ))),
65152 TypeVariant::ScpHistoryEntryV0 => Ok(Self::ScpHistoryEntryV0(Box::new(
65153 serde::de::Deserialize::deserialize(r)?,
65154 ))),
65155 TypeVariant::ScpHistoryEntry => Ok(Self::ScpHistoryEntry(Box::new(
65156 serde::de::Deserialize::deserialize(r)?,
65157 ))),
65158 TypeVariant::LedgerEntryChangeType => Ok(Self::LedgerEntryChangeType(Box::new(
65159 serde::de::Deserialize::deserialize(r)?,
65160 ))),
65161 TypeVariant::LedgerEntryChange => Ok(Self::LedgerEntryChange(Box::new(
65162 serde::de::Deserialize::deserialize(r)?,
65163 ))),
65164 TypeVariant::LedgerEntryChanges => Ok(Self::LedgerEntryChanges(Box::new(
65165 serde::de::Deserialize::deserialize(r)?,
65166 ))),
65167 TypeVariant::OperationMeta => Ok(Self::OperationMeta(Box::new(
65168 serde::de::Deserialize::deserialize(r)?,
65169 ))),
65170 TypeVariant::TransactionMetaV1 => Ok(Self::TransactionMetaV1(Box::new(
65171 serde::de::Deserialize::deserialize(r)?,
65172 ))),
65173 TypeVariant::TransactionMetaV2 => Ok(Self::TransactionMetaV2(Box::new(
65174 serde::de::Deserialize::deserialize(r)?,
65175 ))),
65176 TypeVariant::ContractEventType => Ok(Self::ContractEventType(Box::new(
65177 serde::de::Deserialize::deserialize(r)?,
65178 ))),
65179 TypeVariant::ContractEvent => Ok(Self::ContractEvent(Box::new(
65180 serde::de::Deserialize::deserialize(r)?,
65181 ))),
65182 TypeVariant::ContractEventBody => Ok(Self::ContractEventBody(Box::new(
65183 serde::de::Deserialize::deserialize(r)?,
65184 ))),
65185 TypeVariant::ContractEventV0 => Ok(Self::ContractEventV0(Box::new(
65186 serde::de::Deserialize::deserialize(r)?,
65187 ))),
65188 TypeVariant::DiagnosticEvent => Ok(Self::DiagnosticEvent(Box::new(
65189 serde::de::Deserialize::deserialize(r)?,
65190 ))),
65191 TypeVariant::SorobanTransactionMetaExtV1 => Ok(Self::SorobanTransactionMetaExtV1(
65192 Box::new(serde::de::Deserialize::deserialize(r)?),
65193 )),
65194 TypeVariant::SorobanTransactionMetaExt => Ok(Self::SorobanTransactionMetaExt(
65195 Box::new(serde::de::Deserialize::deserialize(r)?),
65196 )),
65197 TypeVariant::SorobanTransactionMeta => Ok(Self::SorobanTransactionMeta(Box::new(
65198 serde::de::Deserialize::deserialize(r)?,
65199 ))),
65200 TypeVariant::TransactionMetaV3 => Ok(Self::TransactionMetaV3(Box::new(
65201 serde::de::Deserialize::deserialize(r)?,
65202 ))),
65203 TypeVariant::OperationMetaV2 => Ok(Self::OperationMetaV2(Box::new(
65204 serde::de::Deserialize::deserialize(r)?,
65205 ))),
65206 TypeVariant::SorobanTransactionMetaV2 => Ok(Self::SorobanTransactionMetaV2(Box::new(
65207 serde::de::Deserialize::deserialize(r)?,
65208 ))),
65209 TypeVariant::TransactionEventStage => Ok(Self::TransactionEventStage(Box::new(
65210 serde::de::Deserialize::deserialize(r)?,
65211 ))),
65212 TypeVariant::TransactionEvent => Ok(Self::TransactionEvent(Box::new(
65213 serde::de::Deserialize::deserialize(r)?,
65214 ))),
65215 TypeVariant::TransactionMetaV4 => Ok(Self::TransactionMetaV4(Box::new(
65216 serde::de::Deserialize::deserialize(r)?,
65217 ))),
65218 TypeVariant::InvokeHostFunctionSuccessPreImage => {
65219 Ok(Self::InvokeHostFunctionSuccessPreImage(Box::new(
65220 serde::de::Deserialize::deserialize(r)?,
65221 )))
65222 }
65223 TypeVariant::TransactionMeta => Ok(Self::TransactionMeta(Box::new(
65224 serde::de::Deserialize::deserialize(r)?,
65225 ))),
65226 TypeVariant::TransactionResultMeta => Ok(Self::TransactionResultMeta(Box::new(
65227 serde::de::Deserialize::deserialize(r)?,
65228 ))),
65229 TypeVariant::TransactionResultMetaV1 => Ok(Self::TransactionResultMetaV1(Box::new(
65230 serde::de::Deserialize::deserialize(r)?,
65231 ))),
65232 TypeVariant::UpgradeEntryMeta => Ok(Self::UpgradeEntryMeta(Box::new(
65233 serde::de::Deserialize::deserialize(r)?,
65234 ))),
65235 TypeVariant::LedgerCloseMetaV0 => Ok(Self::LedgerCloseMetaV0(Box::new(
65236 serde::de::Deserialize::deserialize(r)?,
65237 ))),
65238 TypeVariant::LedgerCloseMetaExtV1 => Ok(Self::LedgerCloseMetaExtV1(Box::new(
65239 serde::de::Deserialize::deserialize(r)?,
65240 ))),
65241 TypeVariant::LedgerCloseMetaExt => Ok(Self::LedgerCloseMetaExt(Box::new(
65242 serde::de::Deserialize::deserialize(r)?,
65243 ))),
65244 TypeVariant::LedgerCloseMetaV1 => Ok(Self::LedgerCloseMetaV1(Box::new(
65245 serde::de::Deserialize::deserialize(r)?,
65246 ))),
65247 TypeVariant::LedgerCloseMetaV2 => Ok(Self::LedgerCloseMetaV2(Box::new(
65248 serde::de::Deserialize::deserialize(r)?,
65249 ))),
65250 TypeVariant::LedgerCloseMeta => Ok(Self::LedgerCloseMeta(Box::new(
65251 serde::de::Deserialize::deserialize(r)?,
65252 ))),
65253 TypeVariant::ErrorCode => Ok(Self::ErrorCode(Box::new(
65254 serde::de::Deserialize::deserialize(r)?,
65255 ))),
65256 TypeVariant::SError => Ok(Self::SError(Box::new(serde::de::Deserialize::deserialize(
65257 r,
65258 )?))),
65259 TypeVariant::SendMore => Ok(Self::SendMore(Box::new(
65260 serde::de::Deserialize::deserialize(r)?,
65261 ))),
65262 TypeVariant::SendMoreExtended => Ok(Self::SendMoreExtended(Box::new(
65263 serde::de::Deserialize::deserialize(r)?,
65264 ))),
65265 TypeVariant::AuthCert => Ok(Self::AuthCert(Box::new(
65266 serde::de::Deserialize::deserialize(r)?,
65267 ))),
65268 TypeVariant::Hello => Ok(Self::Hello(Box::new(serde::de::Deserialize::deserialize(
65269 r,
65270 )?))),
65271 TypeVariant::Auth => Ok(Self::Auth(Box::new(serde::de::Deserialize::deserialize(
65272 r,
65273 )?))),
65274 TypeVariant::IpAddrType => Ok(Self::IpAddrType(Box::new(
65275 serde::de::Deserialize::deserialize(r)?,
65276 ))),
65277 TypeVariant::PeerAddress => Ok(Self::PeerAddress(Box::new(
65278 serde::de::Deserialize::deserialize(r)?,
65279 ))),
65280 TypeVariant::PeerAddressIp => Ok(Self::PeerAddressIp(Box::new(
65281 serde::de::Deserialize::deserialize(r)?,
65282 ))),
65283 TypeVariant::MessageType => Ok(Self::MessageType(Box::new(
65284 serde::de::Deserialize::deserialize(r)?,
65285 ))),
65286 TypeVariant::DontHave => Ok(Self::DontHave(Box::new(
65287 serde::de::Deserialize::deserialize(r)?,
65288 ))),
65289 TypeVariant::SurveyMessageCommandType => Ok(Self::SurveyMessageCommandType(Box::new(
65290 serde::de::Deserialize::deserialize(r)?,
65291 ))),
65292 TypeVariant::SurveyMessageResponseType => Ok(Self::SurveyMessageResponseType(
65293 Box::new(serde::de::Deserialize::deserialize(r)?),
65294 )),
65295 TypeVariant::TimeSlicedSurveyStartCollectingMessage => {
65296 Ok(Self::TimeSlicedSurveyStartCollectingMessage(Box::new(
65297 serde::de::Deserialize::deserialize(r)?,
65298 )))
65299 }
65300 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => {
65301 Ok(Self::SignedTimeSlicedSurveyStartCollectingMessage(
65302 Box::new(serde::de::Deserialize::deserialize(r)?),
65303 ))
65304 }
65305 TypeVariant::TimeSlicedSurveyStopCollectingMessage => {
65306 Ok(Self::TimeSlicedSurveyStopCollectingMessage(Box::new(
65307 serde::de::Deserialize::deserialize(r)?,
65308 )))
65309 }
65310 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => {
65311 Ok(Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(
65312 serde::de::Deserialize::deserialize(r)?,
65313 )))
65314 }
65315 TypeVariant::SurveyRequestMessage => Ok(Self::SurveyRequestMessage(Box::new(
65316 serde::de::Deserialize::deserialize(r)?,
65317 ))),
65318 TypeVariant::TimeSlicedSurveyRequestMessage => {
65319 Ok(Self::TimeSlicedSurveyRequestMessage(Box::new(
65320 serde::de::Deserialize::deserialize(r)?,
65321 )))
65322 }
65323 TypeVariant::SignedTimeSlicedSurveyRequestMessage => {
65324 Ok(Self::SignedTimeSlicedSurveyRequestMessage(Box::new(
65325 serde::de::Deserialize::deserialize(r)?,
65326 )))
65327 }
65328 TypeVariant::EncryptedBody => Ok(Self::EncryptedBody(Box::new(
65329 serde::de::Deserialize::deserialize(r)?,
65330 ))),
65331 TypeVariant::SurveyResponseMessage => Ok(Self::SurveyResponseMessage(Box::new(
65332 serde::de::Deserialize::deserialize(r)?,
65333 ))),
65334 TypeVariant::TimeSlicedSurveyResponseMessage => {
65335 Ok(Self::TimeSlicedSurveyResponseMessage(Box::new(
65336 serde::de::Deserialize::deserialize(r)?,
65337 )))
65338 }
65339 TypeVariant::SignedTimeSlicedSurveyResponseMessage => {
65340 Ok(Self::SignedTimeSlicedSurveyResponseMessage(Box::new(
65341 serde::de::Deserialize::deserialize(r)?,
65342 )))
65343 }
65344 TypeVariant::PeerStats => Ok(Self::PeerStats(Box::new(
65345 serde::de::Deserialize::deserialize(r)?,
65346 ))),
65347 TypeVariant::TimeSlicedNodeData => Ok(Self::TimeSlicedNodeData(Box::new(
65348 serde::de::Deserialize::deserialize(r)?,
65349 ))),
65350 TypeVariant::TimeSlicedPeerData => Ok(Self::TimeSlicedPeerData(Box::new(
65351 serde::de::Deserialize::deserialize(r)?,
65352 ))),
65353 TypeVariant::TimeSlicedPeerDataList => Ok(Self::TimeSlicedPeerDataList(Box::new(
65354 serde::de::Deserialize::deserialize(r)?,
65355 ))),
65356 TypeVariant::TopologyResponseBodyV2 => Ok(Self::TopologyResponseBodyV2(Box::new(
65357 serde::de::Deserialize::deserialize(r)?,
65358 ))),
65359 TypeVariant::SurveyResponseBody => Ok(Self::SurveyResponseBody(Box::new(
65360 serde::de::Deserialize::deserialize(r)?,
65361 ))),
65362 TypeVariant::TxAdvertVector => Ok(Self::TxAdvertVector(Box::new(
65363 serde::de::Deserialize::deserialize(r)?,
65364 ))),
65365 TypeVariant::FloodAdvert => Ok(Self::FloodAdvert(Box::new(
65366 serde::de::Deserialize::deserialize(r)?,
65367 ))),
65368 TypeVariant::TxDemandVector => Ok(Self::TxDemandVector(Box::new(
65369 serde::de::Deserialize::deserialize(r)?,
65370 ))),
65371 TypeVariant::FloodDemand => Ok(Self::FloodDemand(Box::new(
65372 serde::de::Deserialize::deserialize(r)?,
65373 ))),
65374 TypeVariant::StellarMessage => Ok(Self::StellarMessage(Box::new(
65375 serde::de::Deserialize::deserialize(r)?,
65376 ))),
65377 TypeVariant::AuthenticatedMessage => Ok(Self::AuthenticatedMessage(Box::new(
65378 serde::de::Deserialize::deserialize(r)?,
65379 ))),
65380 TypeVariant::AuthenticatedMessageV0 => Ok(Self::AuthenticatedMessageV0(Box::new(
65381 serde::de::Deserialize::deserialize(r)?,
65382 ))),
65383 TypeVariant::LiquidityPoolParameters => Ok(Self::LiquidityPoolParameters(Box::new(
65384 serde::de::Deserialize::deserialize(r)?,
65385 ))),
65386 TypeVariant::MuxedAccount => Ok(Self::MuxedAccount(Box::new(
65387 serde::de::Deserialize::deserialize(r)?,
65388 ))),
65389 TypeVariant::MuxedAccountMed25519 => Ok(Self::MuxedAccountMed25519(Box::new(
65390 serde::de::Deserialize::deserialize(r)?,
65391 ))),
65392 TypeVariant::DecoratedSignature => Ok(Self::DecoratedSignature(Box::new(
65393 serde::de::Deserialize::deserialize(r)?,
65394 ))),
65395 TypeVariant::OperationType => Ok(Self::OperationType(Box::new(
65396 serde::de::Deserialize::deserialize(r)?,
65397 ))),
65398 TypeVariant::CreateAccountOp => Ok(Self::CreateAccountOp(Box::new(
65399 serde::de::Deserialize::deserialize(r)?,
65400 ))),
65401 TypeVariant::PaymentOp => Ok(Self::PaymentOp(Box::new(
65402 serde::de::Deserialize::deserialize(r)?,
65403 ))),
65404 TypeVariant::PathPaymentStrictReceiveOp => Ok(Self::PathPaymentStrictReceiveOp(
65405 Box::new(serde::de::Deserialize::deserialize(r)?),
65406 )),
65407 TypeVariant::PathPaymentStrictSendOp => Ok(Self::PathPaymentStrictSendOp(Box::new(
65408 serde::de::Deserialize::deserialize(r)?,
65409 ))),
65410 TypeVariant::ManageSellOfferOp => Ok(Self::ManageSellOfferOp(Box::new(
65411 serde::de::Deserialize::deserialize(r)?,
65412 ))),
65413 TypeVariant::ManageBuyOfferOp => Ok(Self::ManageBuyOfferOp(Box::new(
65414 serde::de::Deserialize::deserialize(r)?,
65415 ))),
65416 TypeVariant::CreatePassiveSellOfferOp => Ok(Self::CreatePassiveSellOfferOp(Box::new(
65417 serde::de::Deserialize::deserialize(r)?,
65418 ))),
65419 TypeVariant::SetOptionsOp => Ok(Self::SetOptionsOp(Box::new(
65420 serde::de::Deserialize::deserialize(r)?,
65421 ))),
65422 TypeVariant::ChangeTrustAsset => Ok(Self::ChangeTrustAsset(Box::new(
65423 serde::de::Deserialize::deserialize(r)?,
65424 ))),
65425 TypeVariant::ChangeTrustOp => Ok(Self::ChangeTrustOp(Box::new(
65426 serde::de::Deserialize::deserialize(r)?,
65427 ))),
65428 TypeVariant::AllowTrustOp => Ok(Self::AllowTrustOp(Box::new(
65429 serde::de::Deserialize::deserialize(r)?,
65430 ))),
65431 TypeVariant::ManageDataOp => Ok(Self::ManageDataOp(Box::new(
65432 serde::de::Deserialize::deserialize(r)?,
65433 ))),
65434 TypeVariant::BumpSequenceOp => Ok(Self::BumpSequenceOp(Box::new(
65435 serde::de::Deserialize::deserialize(r)?,
65436 ))),
65437 TypeVariant::CreateClaimableBalanceOp => Ok(Self::CreateClaimableBalanceOp(Box::new(
65438 serde::de::Deserialize::deserialize(r)?,
65439 ))),
65440 TypeVariant::ClaimClaimableBalanceOp => Ok(Self::ClaimClaimableBalanceOp(Box::new(
65441 serde::de::Deserialize::deserialize(r)?,
65442 ))),
65443 TypeVariant::BeginSponsoringFutureReservesOp => {
65444 Ok(Self::BeginSponsoringFutureReservesOp(Box::new(
65445 serde::de::Deserialize::deserialize(r)?,
65446 )))
65447 }
65448 TypeVariant::RevokeSponsorshipType => Ok(Self::RevokeSponsorshipType(Box::new(
65449 serde::de::Deserialize::deserialize(r)?,
65450 ))),
65451 TypeVariant::RevokeSponsorshipOp => Ok(Self::RevokeSponsorshipOp(Box::new(
65452 serde::de::Deserialize::deserialize(r)?,
65453 ))),
65454 TypeVariant::RevokeSponsorshipOpSigner => Ok(Self::RevokeSponsorshipOpSigner(
65455 Box::new(serde::de::Deserialize::deserialize(r)?),
65456 )),
65457 TypeVariant::ClawbackOp => Ok(Self::ClawbackOp(Box::new(
65458 serde::de::Deserialize::deserialize(r)?,
65459 ))),
65460 TypeVariant::ClawbackClaimableBalanceOp => Ok(Self::ClawbackClaimableBalanceOp(
65461 Box::new(serde::de::Deserialize::deserialize(r)?),
65462 )),
65463 TypeVariant::SetTrustLineFlagsOp => Ok(Self::SetTrustLineFlagsOp(Box::new(
65464 serde::de::Deserialize::deserialize(r)?,
65465 ))),
65466 TypeVariant::LiquidityPoolDepositOp => Ok(Self::LiquidityPoolDepositOp(Box::new(
65467 serde::de::Deserialize::deserialize(r)?,
65468 ))),
65469 TypeVariant::LiquidityPoolWithdrawOp => Ok(Self::LiquidityPoolWithdrawOp(Box::new(
65470 serde::de::Deserialize::deserialize(r)?,
65471 ))),
65472 TypeVariant::HostFunctionType => Ok(Self::HostFunctionType(Box::new(
65473 serde::de::Deserialize::deserialize(r)?,
65474 ))),
65475 TypeVariant::ContractIdPreimageType => Ok(Self::ContractIdPreimageType(Box::new(
65476 serde::de::Deserialize::deserialize(r)?,
65477 ))),
65478 TypeVariant::ContractIdPreimage => Ok(Self::ContractIdPreimage(Box::new(
65479 serde::de::Deserialize::deserialize(r)?,
65480 ))),
65481 TypeVariant::ContractIdPreimageFromAddress => Ok(Self::ContractIdPreimageFromAddress(
65482 Box::new(serde::de::Deserialize::deserialize(r)?),
65483 )),
65484 TypeVariant::CreateContractArgs => Ok(Self::CreateContractArgs(Box::new(
65485 serde::de::Deserialize::deserialize(r)?,
65486 ))),
65487 TypeVariant::CreateContractArgsV2 => Ok(Self::CreateContractArgsV2(Box::new(
65488 serde::de::Deserialize::deserialize(r)?,
65489 ))),
65490 TypeVariant::InvokeContractArgs => Ok(Self::InvokeContractArgs(Box::new(
65491 serde::de::Deserialize::deserialize(r)?,
65492 ))),
65493 TypeVariant::HostFunction => Ok(Self::HostFunction(Box::new(
65494 serde::de::Deserialize::deserialize(r)?,
65495 ))),
65496 TypeVariant::SorobanAuthorizedFunctionType => Ok(Self::SorobanAuthorizedFunctionType(
65497 Box::new(serde::de::Deserialize::deserialize(r)?),
65498 )),
65499 TypeVariant::SorobanAuthorizedFunction => Ok(Self::SorobanAuthorizedFunction(
65500 Box::new(serde::de::Deserialize::deserialize(r)?),
65501 )),
65502 TypeVariant::SorobanAuthorizedInvocation => Ok(Self::SorobanAuthorizedInvocation(
65503 Box::new(serde::de::Deserialize::deserialize(r)?),
65504 )),
65505 TypeVariant::SorobanAddressCredentials => Ok(Self::SorobanAddressCredentials(
65506 Box::new(serde::de::Deserialize::deserialize(r)?),
65507 )),
65508 TypeVariant::SorobanCredentialsType => Ok(Self::SorobanCredentialsType(Box::new(
65509 serde::de::Deserialize::deserialize(r)?,
65510 ))),
65511 TypeVariant::SorobanCredentials => Ok(Self::SorobanCredentials(Box::new(
65512 serde::de::Deserialize::deserialize(r)?,
65513 ))),
65514 TypeVariant::SorobanAuthorizationEntry => Ok(Self::SorobanAuthorizationEntry(
65515 Box::new(serde::de::Deserialize::deserialize(r)?),
65516 )),
65517 TypeVariant::SorobanAuthorizationEntries => Ok(Self::SorobanAuthorizationEntries(
65518 Box::new(serde::de::Deserialize::deserialize(r)?),
65519 )),
65520 TypeVariant::InvokeHostFunctionOp => Ok(Self::InvokeHostFunctionOp(Box::new(
65521 serde::de::Deserialize::deserialize(r)?,
65522 ))),
65523 TypeVariant::ExtendFootprintTtlOp => Ok(Self::ExtendFootprintTtlOp(Box::new(
65524 serde::de::Deserialize::deserialize(r)?,
65525 ))),
65526 TypeVariant::RestoreFootprintOp => Ok(Self::RestoreFootprintOp(Box::new(
65527 serde::de::Deserialize::deserialize(r)?,
65528 ))),
65529 TypeVariant::Operation => Ok(Self::Operation(Box::new(
65530 serde::de::Deserialize::deserialize(r)?,
65531 ))),
65532 TypeVariant::OperationBody => Ok(Self::OperationBody(Box::new(
65533 serde::de::Deserialize::deserialize(r)?,
65534 ))),
65535 TypeVariant::HashIdPreimage => Ok(Self::HashIdPreimage(Box::new(
65536 serde::de::Deserialize::deserialize(r)?,
65537 ))),
65538 TypeVariant::HashIdPreimageOperationId => Ok(Self::HashIdPreimageOperationId(
65539 Box::new(serde::de::Deserialize::deserialize(r)?),
65540 )),
65541 TypeVariant::HashIdPreimageRevokeId => Ok(Self::HashIdPreimageRevokeId(Box::new(
65542 serde::de::Deserialize::deserialize(r)?,
65543 ))),
65544 TypeVariant::HashIdPreimageContractId => Ok(Self::HashIdPreimageContractId(Box::new(
65545 serde::de::Deserialize::deserialize(r)?,
65546 ))),
65547 TypeVariant::HashIdPreimageSorobanAuthorization => {
65548 Ok(Self::HashIdPreimageSorobanAuthorization(Box::new(
65549 serde::de::Deserialize::deserialize(r)?,
65550 )))
65551 }
65552 TypeVariant::MemoType => Ok(Self::MemoType(Box::new(
65553 serde::de::Deserialize::deserialize(r)?,
65554 ))),
65555 TypeVariant::Memo => Ok(Self::Memo(Box::new(serde::de::Deserialize::deserialize(
65556 r,
65557 )?))),
65558 TypeVariant::TimeBounds => Ok(Self::TimeBounds(Box::new(
65559 serde::de::Deserialize::deserialize(r)?,
65560 ))),
65561 TypeVariant::LedgerBounds => Ok(Self::LedgerBounds(Box::new(
65562 serde::de::Deserialize::deserialize(r)?,
65563 ))),
65564 TypeVariant::PreconditionsV2 => Ok(Self::PreconditionsV2(Box::new(
65565 serde::de::Deserialize::deserialize(r)?,
65566 ))),
65567 TypeVariant::PreconditionType => Ok(Self::PreconditionType(Box::new(
65568 serde::de::Deserialize::deserialize(r)?,
65569 ))),
65570 TypeVariant::Preconditions => Ok(Self::Preconditions(Box::new(
65571 serde::de::Deserialize::deserialize(r)?,
65572 ))),
65573 TypeVariant::LedgerFootprint => Ok(Self::LedgerFootprint(Box::new(
65574 serde::de::Deserialize::deserialize(r)?,
65575 ))),
65576 TypeVariant::SorobanResources => Ok(Self::SorobanResources(Box::new(
65577 serde::de::Deserialize::deserialize(r)?,
65578 ))),
65579 TypeVariant::SorobanResourcesExtV0 => Ok(Self::SorobanResourcesExtV0(Box::new(
65580 serde::de::Deserialize::deserialize(r)?,
65581 ))),
65582 TypeVariant::SorobanTransactionData => Ok(Self::SorobanTransactionData(Box::new(
65583 serde::de::Deserialize::deserialize(r)?,
65584 ))),
65585 TypeVariant::SorobanTransactionDataExt => Ok(Self::SorobanTransactionDataExt(
65586 Box::new(serde::de::Deserialize::deserialize(r)?),
65587 )),
65588 TypeVariant::TransactionV0 => Ok(Self::TransactionV0(Box::new(
65589 serde::de::Deserialize::deserialize(r)?,
65590 ))),
65591 TypeVariant::TransactionV0Ext => Ok(Self::TransactionV0Ext(Box::new(
65592 serde::de::Deserialize::deserialize(r)?,
65593 ))),
65594 TypeVariant::TransactionV0Envelope => Ok(Self::TransactionV0Envelope(Box::new(
65595 serde::de::Deserialize::deserialize(r)?,
65596 ))),
65597 TypeVariant::Transaction => Ok(Self::Transaction(Box::new(
65598 serde::de::Deserialize::deserialize(r)?,
65599 ))),
65600 TypeVariant::TransactionExt => Ok(Self::TransactionExt(Box::new(
65601 serde::de::Deserialize::deserialize(r)?,
65602 ))),
65603 TypeVariant::TransactionV1Envelope => Ok(Self::TransactionV1Envelope(Box::new(
65604 serde::de::Deserialize::deserialize(r)?,
65605 ))),
65606 TypeVariant::FeeBumpTransaction => Ok(Self::FeeBumpTransaction(Box::new(
65607 serde::de::Deserialize::deserialize(r)?,
65608 ))),
65609 TypeVariant::FeeBumpTransactionInnerTx => Ok(Self::FeeBumpTransactionInnerTx(
65610 Box::new(serde::de::Deserialize::deserialize(r)?),
65611 )),
65612 TypeVariant::FeeBumpTransactionExt => Ok(Self::FeeBumpTransactionExt(Box::new(
65613 serde::de::Deserialize::deserialize(r)?,
65614 ))),
65615 TypeVariant::FeeBumpTransactionEnvelope => Ok(Self::FeeBumpTransactionEnvelope(
65616 Box::new(serde::de::Deserialize::deserialize(r)?),
65617 )),
65618 TypeVariant::TransactionEnvelope => Ok(Self::TransactionEnvelope(Box::new(
65619 serde::de::Deserialize::deserialize(r)?,
65620 ))),
65621 TypeVariant::TransactionSignaturePayload => Ok(Self::TransactionSignaturePayload(
65622 Box::new(serde::de::Deserialize::deserialize(r)?),
65623 )),
65624 TypeVariant::TransactionSignaturePayloadTaggedTransaction => {
65625 Ok(Self::TransactionSignaturePayloadTaggedTransaction(
65626 Box::new(serde::de::Deserialize::deserialize(r)?),
65627 ))
65628 }
65629 TypeVariant::ClaimAtomType => Ok(Self::ClaimAtomType(Box::new(
65630 serde::de::Deserialize::deserialize(r)?,
65631 ))),
65632 TypeVariant::ClaimOfferAtomV0 => Ok(Self::ClaimOfferAtomV0(Box::new(
65633 serde::de::Deserialize::deserialize(r)?,
65634 ))),
65635 TypeVariant::ClaimOfferAtom => Ok(Self::ClaimOfferAtom(Box::new(
65636 serde::de::Deserialize::deserialize(r)?,
65637 ))),
65638 TypeVariant::ClaimLiquidityAtom => Ok(Self::ClaimLiquidityAtom(Box::new(
65639 serde::de::Deserialize::deserialize(r)?,
65640 ))),
65641 TypeVariant::ClaimAtom => Ok(Self::ClaimAtom(Box::new(
65642 serde::de::Deserialize::deserialize(r)?,
65643 ))),
65644 TypeVariant::CreateAccountResultCode => Ok(Self::CreateAccountResultCode(Box::new(
65645 serde::de::Deserialize::deserialize(r)?,
65646 ))),
65647 TypeVariant::CreateAccountResult => Ok(Self::CreateAccountResult(Box::new(
65648 serde::de::Deserialize::deserialize(r)?,
65649 ))),
65650 TypeVariant::PaymentResultCode => Ok(Self::PaymentResultCode(Box::new(
65651 serde::de::Deserialize::deserialize(r)?,
65652 ))),
65653 TypeVariant::PaymentResult => Ok(Self::PaymentResult(Box::new(
65654 serde::de::Deserialize::deserialize(r)?,
65655 ))),
65656 TypeVariant::PathPaymentStrictReceiveResultCode => {
65657 Ok(Self::PathPaymentStrictReceiveResultCode(Box::new(
65658 serde::de::Deserialize::deserialize(r)?,
65659 )))
65660 }
65661 TypeVariant::SimplePaymentResult => Ok(Self::SimplePaymentResult(Box::new(
65662 serde::de::Deserialize::deserialize(r)?,
65663 ))),
65664 TypeVariant::PathPaymentStrictReceiveResult => {
65665 Ok(Self::PathPaymentStrictReceiveResult(Box::new(
65666 serde::de::Deserialize::deserialize(r)?,
65667 )))
65668 }
65669 TypeVariant::PathPaymentStrictReceiveResultSuccess => {
65670 Ok(Self::PathPaymentStrictReceiveResultSuccess(Box::new(
65671 serde::de::Deserialize::deserialize(r)?,
65672 )))
65673 }
65674 TypeVariant::PathPaymentStrictSendResultCode => {
65675 Ok(Self::PathPaymentStrictSendResultCode(Box::new(
65676 serde::de::Deserialize::deserialize(r)?,
65677 )))
65678 }
65679 TypeVariant::PathPaymentStrictSendResult => Ok(Self::PathPaymentStrictSendResult(
65680 Box::new(serde::de::Deserialize::deserialize(r)?),
65681 )),
65682 TypeVariant::PathPaymentStrictSendResultSuccess => {
65683 Ok(Self::PathPaymentStrictSendResultSuccess(Box::new(
65684 serde::de::Deserialize::deserialize(r)?,
65685 )))
65686 }
65687 TypeVariant::ManageSellOfferResultCode => Ok(Self::ManageSellOfferResultCode(
65688 Box::new(serde::de::Deserialize::deserialize(r)?),
65689 )),
65690 TypeVariant::ManageOfferEffect => Ok(Self::ManageOfferEffect(Box::new(
65691 serde::de::Deserialize::deserialize(r)?,
65692 ))),
65693 TypeVariant::ManageOfferSuccessResult => Ok(Self::ManageOfferSuccessResult(Box::new(
65694 serde::de::Deserialize::deserialize(r)?,
65695 ))),
65696 TypeVariant::ManageOfferSuccessResultOffer => Ok(Self::ManageOfferSuccessResultOffer(
65697 Box::new(serde::de::Deserialize::deserialize(r)?),
65698 )),
65699 TypeVariant::ManageSellOfferResult => Ok(Self::ManageSellOfferResult(Box::new(
65700 serde::de::Deserialize::deserialize(r)?,
65701 ))),
65702 TypeVariant::ManageBuyOfferResultCode => Ok(Self::ManageBuyOfferResultCode(Box::new(
65703 serde::de::Deserialize::deserialize(r)?,
65704 ))),
65705 TypeVariant::ManageBuyOfferResult => Ok(Self::ManageBuyOfferResult(Box::new(
65706 serde::de::Deserialize::deserialize(r)?,
65707 ))),
65708 TypeVariant::SetOptionsResultCode => Ok(Self::SetOptionsResultCode(Box::new(
65709 serde::de::Deserialize::deserialize(r)?,
65710 ))),
65711 TypeVariant::SetOptionsResult => Ok(Self::SetOptionsResult(Box::new(
65712 serde::de::Deserialize::deserialize(r)?,
65713 ))),
65714 TypeVariant::ChangeTrustResultCode => Ok(Self::ChangeTrustResultCode(Box::new(
65715 serde::de::Deserialize::deserialize(r)?,
65716 ))),
65717 TypeVariant::ChangeTrustResult => Ok(Self::ChangeTrustResult(Box::new(
65718 serde::de::Deserialize::deserialize(r)?,
65719 ))),
65720 TypeVariant::AllowTrustResultCode => Ok(Self::AllowTrustResultCode(Box::new(
65721 serde::de::Deserialize::deserialize(r)?,
65722 ))),
65723 TypeVariant::AllowTrustResult => Ok(Self::AllowTrustResult(Box::new(
65724 serde::de::Deserialize::deserialize(r)?,
65725 ))),
65726 TypeVariant::AccountMergeResultCode => Ok(Self::AccountMergeResultCode(Box::new(
65727 serde::de::Deserialize::deserialize(r)?,
65728 ))),
65729 TypeVariant::AccountMergeResult => Ok(Self::AccountMergeResult(Box::new(
65730 serde::de::Deserialize::deserialize(r)?,
65731 ))),
65732 TypeVariant::InflationResultCode => Ok(Self::InflationResultCode(Box::new(
65733 serde::de::Deserialize::deserialize(r)?,
65734 ))),
65735 TypeVariant::InflationPayout => Ok(Self::InflationPayout(Box::new(
65736 serde::de::Deserialize::deserialize(r)?,
65737 ))),
65738 TypeVariant::InflationResult => Ok(Self::InflationResult(Box::new(
65739 serde::de::Deserialize::deserialize(r)?,
65740 ))),
65741 TypeVariant::ManageDataResultCode => Ok(Self::ManageDataResultCode(Box::new(
65742 serde::de::Deserialize::deserialize(r)?,
65743 ))),
65744 TypeVariant::ManageDataResult => Ok(Self::ManageDataResult(Box::new(
65745 serde::de::Deserialize::deserialize(r)?,
65746 ))),
65747 TypeVariant::BumpSequenceResultCode => Ok(Self::BumpSequenceResultCode(Box::new(
65748 serde::de::Deserialize::deserialize(r)?,
65749 ))),
65750 TypeVariant::BumpSequenceResult => Ok(Self::BumpSequenceResult(Box::new(
65751 serde::de::Deserialize::deserialize(r)?,
65752 ))),
65753 TypeVariant::CreateClaimableBalanceResultCode => {
65754 Ok(Self::CreateClaimableBalanceResultCode(Box::new(
65755 serde::de::Deserialize::deserialize(r)?,
65756 )))
65757 }
65758 TypeVariant::CreateClaimableBalanceResult => Ok(Self::CreateClaimableBalanceResult(
65759 Box::new(serde::de::Deserialize::deserialize(r)?),
65760 )),
65761 TypeVariant::ClaimClaimableBalanceResultCode => {
65762 Ok(Self::ClaimClaimableBalanceResultCode(Box::new(
65763 serde::de::Deserialize::deserialize(r)?,
65764 )))
65765 }
65766 TypeVariant::ClaimClaimableBalanceResult => Ok(Self::ClaimClaimableBalanceResult(
65767 Box::new(serde::de::Deserialize::deserialize(r)?),
65768 )),
65769 TypeVariant::BeginSponsoringFutureReservesResultCode => {
65770 Ok(Self::BeginSponsoringFutureReservesResultCode(Box::new(
65771 serde::de::Deserialize::deserialize(r)?,
65772 )))
65773 }
65774 TypeVariant::BeginSponsoringFutureReservesResult => {
65775 Ok(Self::BeginSponsoringFutureReservesResult(Box::new(
65776 serde::de::Deserialize::deserialize(r)?,
65777 )))
65778 }
65779 TypeVariant::EndSponsoringFutureReservesResultCode => {
65780 Ok(Self::EndSponsoringFutureReservesResultCode(Box::new(
65781 serde::de::Deserialize::deserialize(r)?,
65782 )))
65783 }
65784 TypeVariant::EndSponsoringFutureReservesResult => {
65785 Ok(Self::EndSponsoringFutureReservesResult(Box::new(
65786 serde::de::Deserialize::deserialize(r)?,
65787 )))
65788 }
65789 TypeVariant::RevokeSponsorshipResultCode => Ok(Self::RevokeSponsorshipResultCode(
65790 Box::new(serde::de::Deserialize::deserialize(r)?),
65791 )),
65792 TypeVariant::RevokeSponsorshipResult => Ok(Self::RevokeSponsorshipResult(Box::new(
65793 serde::de::Deserialize::deserialize(r)?,
65794 ))),
65795 TypeVariant::ClawbackResultCode => Ok(Self::ClawbackResultCode(Box::new(
65796 serde::de::Deserialize::deserialize(r)?,
65797 ))),
65798 TypeVariant::ClawbackResult => Ok(Self::ClawbackResult(Box::new(
65799 serde::de::Deserialize::deserialize(r)?,
65800 ))),
65801 TypeVariant::ClawbackClaimableBalanceResultCode => {
65802 Ok(Self::ClawbackClaimableBalanceResultCode(Box::new(
65803 serde::de::Deserialize::deserialize(r)?,
65804 )))
65805 }
65806 TypeVariant::ClawbackClaimableBalanceResult => {
65807 Ok(Self::ClawbackClaimableBalanceResult(Box::new(
65808 serde::de::Deserialize::deserialize(r)?,
65809 )))
65810 }
65811 TypeVariant::SetTrustLineFlagsResultCode => Ok(Self::SetTrustLineFlagsResultCode(
65812 Box::new(serde::de::Deserialize::deserialize(r)?),
65813 )),
65814 TypeVariant::SetTrustLineFlagsResult => Ok(Self::SetTrustLineFlagsResult(Box::new(
65815 serde::de::Deserialize::deserialize(r)?,
65816 ))),
65817 TypeVariant::LiquidityPoolDepositResultCode => {
65818 Ok(Self::LiquidityPoolDepositResultCode(Box::new(
65819 serde::de::Deserialize::deserialize(r)?,
65820 )))
65821 }
65822 TypeVariant::LiquidityPoolDepositResult => Ok(Self::LiquidityPoolDepositResult(
65823 Box::new(serde::de::Deserialize::deserialize(r)?),
65824 )),
65825 TypeVariant::LiquidityPoolWithdrawResultCode => {
65826 Ok(Self::LiquidityPoolWithdrawResultCode(Box::new(
65827 serde::de::Deserialize::deserialize(r)?,
65828 )))
65829 }
65830 TypeVariant::LiquidityPoolWithdrawResult => Ok(Self::LiquidityPoolWithdrawResult(
65831 Box::new(serde::de::Deserialize::deserialize(r)?),
65832 )),
65833 TypeVariant::InvokeHostFunctionResultCode => Ok(Self::InvokeHostFunctionResultCode(
65834 Box::new(serde::de::Deserialize::deserialize(r)?),
65835 )),
65836 TypeVariant::InvokeHostFunctionResult => Ok(Self::InvokeHostFunctionResult(Box::new(
65837 serde::de::Deserialize::deserialize(r)?,
65838 ))),
65839 TypeVariant::ExtendFootprintTtlResultCode => Ok(Self::ExtendFootprintTtlResultCode(
65840 Box::new(serde::de::Deserialize::deserialize(r)?),
65841 )),
65842 TypeVariant::ExtendFootprintTtlResult => Ok(Self::ExtendFootprintTtlResult(Box::new(
65843 serde::de::Deserialize::deserialize(r)?,
65844 ))),
65845 TypeVariant::RestoreFootprintResultCode => Ok(Self::RestoreFootprintResultCode(
65846 Box::new(serde::de::Deserialize::deserialize(r)?),
65847 )),
65848 TypeVariant::RestoreFootprintResult => Ok(Self::RestoreFootprintResult(Box::new(
65849 serde::de::Deserialize::deserialize(r)?,
65850 ))),
65851 TypeVariant::OperationResultCode => Ok(Self::OperationResultCode(Box::new(
65852 serde::de::Deserialize::deserialize(r)?,
65853 ))),
65854 TypeVariant::OperationResult => Ok(Self::OperationResult(Box::new(
65855 serde::de::Deserialize::deserialize(r)?,
65856 ))),
65857 TypeVariant::OperationResultTr => Ok(Self::OperationResultTr(Box::new(
65858 serde::de::Deserialize::deserialize(r)?,
65859 ))),
65860 TypeVariant::TransactionResultCode => Ok(Self::TransactionResultCode(Box::new(
65861 serde::de::Deserialize::deserialize(r)?,
65862 ))),
65863 TypeVariant::InnerTransactionResult => Ok(Self::InnerTransactionResult(Box::new(
65864 serde::de::Deserialize::deserialize(r)?,
65865 ))),
65866 TypeVariant::InnerTransactionResultResult => Ok(Self::InnerTransactionResultResult(
65867 Box::new(serde::de::Deserialize::deserialize(r)?),
65868 )),
65869 TypeVariant::InnerTransactionResultExt => Ok(Self::InnerTransactionResultExt(
65870 Box::new(serde::de::Deserialize::deserialize(r)?),
65871 )),
65872 TypeVariant::InnerTransactionResultPair => Ok(Self::InnerTransactionResultPair(
65873 Box::new(serde::de::Deserialize::deserialize(r)?),
65874 )),
65875 TypeVariant::TransactionResult => Ok(Self::TransactionResult(Box::new(
65876 serde::de::Deserialize::deserialize(r)?,
65877 ))),
65878 TypeVariant::TransactionResultResult => Ok(Self::TransactionResultResult(Box::new(
65879 serde::de::Deserialize::deserialize(r)?,
65880 ))),
65881 TypeVariant::TransactionResultExt => Ok(Self::TransactionResultExt(Box::new(
65882 serde::de::Deserialize::deserialize(r)?,
65883 ))),
65884 TypeVariant::Hash => Ok(Self::Hash(Box::new(serde::de::Deserialize::deserialize(
65885 r,
65886 )?))),
65887 TypeVariant::Uint256 => Ok(Self::Uint256(Box::new(
65888 serde::de::Deserialize::deserialize(r)?,
65889 ))),
65890 TypeVariant::Uint32 => Ok(Self::Uint32(Box::new(serde::de::Deserialize::deserialize(
65891 r,
65892 )?))),
65893 TypeVariant::Int32 => Ok(Self::Int32(Box::new(serde::de::Deserialize::deserialize(
65894 r,
65895 )?))),
65896 TypeVariant::Uint64 => Ok(Self::Uint64(Box::new(serde::de::Deserialize::deserialize(
65897 r,
65898 )?))),
65899 TypeVariant::Int64 => Ok(Self::Int64(Box::new(serde::de::Deserialize::deserialize(
65900 r,
65901 )?))),
65902 TypeVariant::TimePoint => Ok(Self::TimePoint(Box::new(
65903 serde::de::Deserialize::deserialize(r)?,
65904 ))),
65905 TypeVariant::Duration => Ok(Self::Duration(Box::new(
65906 serde::de::Deserialize::deserialize(r)?,
65907 ))),
65908 TypeVariant::ExtensionPoint => Ok(Self::ExtensionPoint(Box::new(
65909 serde::de::Deserialize::deserialize(r)?,
65910 ))),
65911 TypeVariant::CryptoKeyType => Ok(Self::CryptoKeyType(Box::new(
65912 serde::de::Deserialize::deserialize(r)?,
65913 ))),
65914 TypeVariant::PublicKeyType => Ok(Self::PublicKeyType(Box::new(
65915 serde::de::Deserialize::deserialize(r)?,
65916 ))),
65917 TypeVariant::SignerKeyType => Ok(Self::SignerKeyType(Box::new(
65918 serde::de::Deserialize::deserialize(r)?,
65919 ))),
65920 TypeVariant::PublicKey => Ok(Self::PublicKey(Box::new(
65921 serde::de::Deserialize::deserialize(r)?,
65922 ))),
65923 TypeVariant::SignerKey => Ok(Self::SignerKey(Box::new(
65924 serde::de::Deserialize::deserialize(r)?,
65925 ))),
65926 TypeVariant::SignerKeyEd25519SignedPayload => Ok(Self::SignerKeyEd25519SignedPayload(
65927 Box::new(serde::de::Deserialize::deserialize(r)?),
65928 )),
65929 TypeVariant::Signature => Ok(Self::Signature(Box::new(
65930 serde::de::Deserialize::deserialize(r)?,
65931 ))),
65932 TypeVariant::SignatureHint => Ok(Self::SignatureHint(Box::new(
65933 serde::de::Deserialize::deserialize(r)?,
65934 ))),
65935 TypeVariant::NodeId => Ok(Self::NodeId(Box::new(serde::de::Deserialize::deserialize(
65936 r,
65937 )?))),
65938 TypeVariant::AccountId => Ok(Self::AccountId(Box::new(
65939 serde::de::Deserialize::deserialize(r)?,
65940 ))),
65941 TypeVariant::ContractId => Ok(Self::ContractId(Box::new(
65942 serde::de::Deserialize::deserialize(r)?,
65943 ))),
65944 TypeVariant::Curve25519Secret => Ok(Self::Curve25519Secret(Box::new(
65945 serde::de::Deserialize::deserialize(r)?,
65946 ))),
65947 TypeVariant::Curve25519Public => Ok(Self::Curve25519Public(Box::new(
65948 serde::de::Deserialize::deserialize(r)?,
65949 ))),
65950 TypeVariant::HmacSha256Key => Ok(Self::HmacSha256Key(Box::new(
65951 serde::de::Deserialize::deserialize(r)?,
65952 ))),
65953 TypeVariant::HmacSha256Mac => Ok(Self::HmacSha256Mac(Box::new(
65954 serde::de::Deserialize::deserialize(r)?,
65955 ))),
65956 TypeVariant::ShortHashSeed => Ok(Self::ShortHashSeed(Box::new(
65957 serde::de::Deserialize::deserialize(r)?,
65958 ))),
65959 TypeVariant::BinaryFuseFilterType => Ok(Self::BinaryFuseFilterType(Box::new(
65960 serde::de::Deserialize::deserialize(r)?,
65961 ))),
65962 TypeVariant::SerializedBinaryFuseFilter => Ok(Self::SerializedBinaryFuseFilter(
65963 Box::new(serde::de::Deserialize::deserialize(r)?),
65964 )),
65965 TypeVariant::PoolId => Ok(Self::PoolId(Box::new(serde::de::Deserialize::deserialize(
65966 r,
65967 )?))),
65968 TypeVariant::ClaimableBalanceIdType => Ok(Self::ClaimableBalanceIdType(Box::new(
65969 serde::de::Deserialize::deserialize(r)?,
65970 ))),
65971 TypeVariant::ClaimableBalanceId => Ok(Self::ClaimableBalanceId(Box::new(
65972 serde::de::Deserialize::deserialize(r)?,
65973 ))),
65974 }
65975 }
65976
65977 #[cfg(feature = "arbitrary")]
65978 #[allow(clippy::too_many_lines)]
65979 pub fn arbitrary(v: TypeVariant, u: &mut arbitrary::Unstructured<'_>) -> Result<Self, Error> {
65980 match v {
65981 TypeVariant::Value => Ok(Self::Value(Box::new(Value::arbitrary(u)?))),
65982 TypeVariant::ScpBallot => Ok(Self::ScpBallot(Box::new(ScpBallot::arbitrary(u)?))),
65983 TypeVariant::ScpStatementType => Ok(Self::ScpStatementType(Box::new(
65984 ScpStatementType::arbitrary(u)?,
65985 ))),
65986 TypeVariant::ScpNomination => {
65987 Ok(Self::ScpNomination(Box::new(ScpNomination::arbitrary(u)?)))
65988 }
65989 TypeVariant::ScpStatement => {
65990 Ok(Self::ScpStatement(Box::new(ScpStatement::arbitrary(u)?)))
65991 }
65992 TypeVariant::ScpStatementPledges => Ok(Self::ScpStatementPledges(Box::new(
65993 ScpStatementPledges::arbitrary(u)?,
65994 ))),
65995 TypeVariant::ScpStatementPrepare => Ok(Self::ScpStatementPrepare(Box::new(
65996 ScpStatementPrepare::arbitrary(u)?,
65997 ))),
65998 TypeVariant::ScpStatementConfirm => Ok(Self::ScpStatementConfirm(Box::new(
65999 ScpStatementConfirm::arbitrary(u)?,
66000 ))),
66001 TypeVariant::ScpStatementExternalize => Ok(Self::ScpStatementExternalize(Box::new(
66002 ScpStatementExternalize::arbitrary(u)?,
66003 ))),
66004 TypeVariant::ScpEnvelope => Ok(Self::ScpEnvelope(Box::new(ScpEnvelope::arbitrary(u)?))),
66005 TypeVariant::ScpQuorumSet => {
66006 Ok(Self::ScpQuorumSet(Box::new(ScpQuorumSet::arbitrary(u)?)))
66007 }
66008 TypeVariant::ConfigSettingContractExecutionLanesV0 => {
66009 Ok(Self::ConfigSettingContractExecutionLanesV0(Box::new(
66010 ConfigSettingContractExecutionLanesV0::arbitrary(u)?,
66011 )))
66012 }
66013 TypeVariant::ConfigSettingContractComputeV0 => {
66014 Ok(Self::ConfigSettingContractComputeV0(Box::new(
66015 ConfigSettingContractComputeV0::arbitrary(u)?,
66016 )))
66017 }
66018 TypeVariant::ConfigSettingContractParallelComputeV0 => {
66019 Ok(Self::ConfigSettingContractParallelComputeV0(Box::new(
66020 ConfigSettingContractParallelComputeV0::arbitrary(u)?,
66021 )))
66022 }
66023 TypeVariant::ConfigSettingContractLedgerCostV0 => {
66024 Ok(Self::ConfigSettingContractLedgerCostV0(Box::new(
66025 ConfigSettingContractLedgerCostV0::arbitrary(u)?,
66026 )))
66027 }
66028 TypeVariant::ConfigSettingContractLedgerCostExtV0 => {
66029 Ok(Self::ConfigSettingContractLedgerCostExtV0(Box::new(
66030 ConfigSettingContractLedgerCostExtV0::arbitrary(u)?,
66031 )))
66032 }
66033 TypeVariant::ConfigSettingContractHistoricalDataV0 => {
66034 Ok(Self::ConfigSettingContractHistoricalDataV0(Box::new(
66035 ConfigSettingContractHistoricalDataV0::arbitrary(u)?,
66036 )))
66037 }
66038 TypeVariant::ConfigSettingContractEventsV0 => Ok(Self::ConfigSettingContractEventsV0(
66039 Box::new(ConfigSettingContractEventsV0::arbitrary(u)?),
66040 )),
66041 TypeVariant::ConfigSettingContractBandwidthV0 => {
66042 Ok(Self::ConfigSettingContractBandwidthV0(Box::new(
66043 ConfigSettingContractBandwidthV0::arbitrary(u)?,
66044 )))
66045 }
66046 TypeVariant::ContractCostType => Ok(Self::ContractCostType(Box::new(
66047 ContractCostType::arbitrary(u)?,
66048 ))),
66049 TypeVariant::ContractCostParamEntry => Ok(Self::ContractCostParamEntry(Box::new(
66050 ContractCostParamEntry::arbitrary(u)?,
66051 ))),
66052 TypeVariant::StateArchivalSettings => Ok(Self::StateArchivalSettings(Box::new(
66053 StateArchivalSettings::arbitrary(u)?,
66054 ))),
66055 TypeVariant::EvictionIterator => Ok(Self::EvictionIterator(Box::new(
66056 EvictionIterator::arbitrary(u)?,
66057 ))),
66058 TypeVariant::ConfigSettingScpTiming => Ok(Self::ConfigSettingScpTiming(Box::new(
66059 ConfigSettingScpTiming::arbitrary(u)?,
66060 ))),
66061 TypeVariant::ContractCostParams => Ok(Self::ContractCostParams(Box::new(
66062 ContractCostParams::arbitrary(u)?,
66063 ))),
66064 TypeVariant::ConfigSettingId => Ok(Self::ConfigSettingId(Box::new(
66065 ConfigSettingId::arbitrary(u)?,
66066 ))),
66067 TypeVariant::ConfigSettingEntry => Ok(Self::ConfigSettingEntry(Box::new(
66068 ConfigSettingEntry::arbitrary(u)?,
66069 ))),
66070 TypeVariant::ScEnvMetaKind => {
66071 Ok(Self::ScEnvMetaKind(Box::new(ScEnvMetaKind::arbitrary(u)?)))
66072 }
66073 TypeVariant::ScEnvMetaEntry => Ok(Self::ScEnvMetaEntry(Box::new(
66074 ScEnvMetaEntry::arbitrary(u)?,
66075 ))),
66076 TypeVariant::ScEnvMetaEntryInterfaceVersion => {
66077 Ok(Self::ScEnvMetaEntryInterfaceVersion(Box::new(
66078 ScEnvMetaEntryInterfaceVersion::arbitrary(u)?,
66079 )))
66080 }
66081 TypeVariant::ScMetaV0 => Ok(Self::ScMetaV0(Box::new(ScMetaV0::arbitrary(u)?))),
66082 TypeVariant::ScMetaKind => Ok(Self::ScMetaKind(Box::new(ScMetaKind::arbitrary(u)?))),
66083 TypeVariant::ScMetaEntry => Ok(Self::ScMetaEntry(Box::new(ScMetaEntry::arbitrary(u)?))),
66084 TypeVariant::ScSpecType => Ok(Self::ScSpecType(Box::new(ScSpecType::arbitrary(u)?))),
66085 TypeVariant::ScSpecTypeOption => Ok(Self::ScSpecTypeOption(Box::new(
66086 ScSpecTypeOption::arbitrary(u)?,
66087 ))),
66088 TypeVariant::ScSpecTypeResult => Ok(Self::ScSpecTypeResult(Box::new(
66089 ScSpecTypeResult::arbitrary(u)?,
66090 ))),
66091 TypeVariant::ScSpecTypeVec => {
66092 Ok(Self::ScSpecTypeVec(Box::new(ScSpecTypeVec::arbitrary(u)?)))
66093 }
66094 TypeVariant::ScSpecTypeMap => {
66095 Ok(Self::ScSpecTypeMap(Box::new(ScSpecTypeMap::arbitrary(u)?)))
66096 }
66097 TypeVariant::ScSpecTypeTuple => Ok(Self::ScSpecTypeTuple(Box::new(
66098 ScSpecTypeTuple::arbitrary(u)?,
66099 ))),
66100 TypeVariant::ScSpecTypeBytesN => Ok(Self::ScSpecTypeBytesN(Box::new(
66101 ScSpecTypeBytesN::arbitrary(u)?,
66102 ))),
66103 TypeVariant::ScSpecTypeUdt => {
66104 Ok(Self::ScSpecTypeUdt(Box::new(ScSpecTypeUdt::arbitrary(u)?)))
66105 }
66106 TypeVariant::ScSpecTypeDef => {
66107 Ok(Self::ScSpecTypeDef(Box::new(ScSpecTypeDef::arbitrary(u)?)))
66108 }
66109 TypeVariant::ScSpecUdtStructFieldV0 => Ok(Self::ScSpecUdtStructFieldV0(Box::new(
66110 ScSpecUdtStructFieldV0::arbitrary(u)?,
66111 ))),
66112 TypeVariant::ScSpecUdtStructV0 => Ok(Self::ScSpecUdtStructV0(Box::new(
66113 ScSpecUdtStructV0::arbitrary(u)?,
66114 ))),
66115 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Ok(Self::ScSpecUdtUnionCaseVoidV0(Box::new(
66116 ScSpecUdtUnionCaseVoidV0::arbitrary(u)?,
66117 ))),
66118 TypeVariant::ScSpecUdtUnionCaseTupleV0 => Ok(Self::ScSpecUdtUnionCaseTupleV0(
66119 Box::new(ScSpecUdtUnionCaseTupleV0::arbitrary(u)?),
66120 )),
66121 TypeVariant::ScSpecUdtUnionCaseV0Kind => Ok(Self::ScSpecUdtUnionCaseV0Kind(Box::new(
66122 ScSpecUdtUnionCaseV0Kind::arbitrary(u)?,
66123 ))),
66124 TypeVariant::ScSpecUdtUnionCaseV0 => Ok(Self::ScSpecUdtUnionCaseV0(Box::new(
66125 ScSpecUdtUnionCaseV0::arbitrary(u)?,
66126 ))),
66127 TypeVariant::ScSpecUdtUnionV0 => Ok(Self::ScSpecUdtUnionV0(Box::new(
66128 ScSpecUdtUnionV0::arbitrary(u)?,
66129 ))),
66130 TypeVariant::ScSpecUdtEnumCaseV0 => Ok(Self::ScSpecUdtEnumCaseV0(Box::new(
66131 ScSpecUdtEnumCaseV0::arbitrary(u)?,
66132 ))),
66133 TypeVariant::ScSpecUdtEnumV0 => Ok(Self::ScSpecUdtEnumV0(Box::new(
66134 ScSpecUdtEnumV0::arbitrary(u)?,
66135 ))),
66136 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Ok(Self::ScSpecUdtErrorEnumCaseV0(Box::new(
66137 ScSpecUdtErrorEnumCaseV0::arbitrary(u)?,
66138 ))),
66139 TypeVariant::ScSpecUdtErrorEnumV0 => Ok(Self::ScSpecUdtErrorEnumV0(Box::new(
66140 ScSpecUdtErrorEnumV0::arbitrary(u)?,
66141 ))),
66142 TypeVariant::ScSpecFunctionInputV0 => Ok(Self::ScSpecFunctionInputV0(Box::new(
66143 ScSpecFunctionInputV0::arbitrary(u)?,
66144 ))),
66145 TypeVariant::ScSpecFunctionV0 => Ok(Self::ScSpecFunctionV0(Box::new(
66146 ScSpecFunctionV0::arbitrary(u)?,
66147 ))),
66148 TypeVariant::ScSpecEventParamLocationV0 => Ok(Self::ScSpecEventParamLocationV0(
66149 Box::new(ScSpecEventParamLocationV0::arbitrary(u)?),
66150 )),
66151 TypeVariant::ScSpecEventParamV0 => Ok(Self::ScSpecEventParamV0(Box::new(
66152 ScSpecEventParamV0::arbitrary(u)?,
66153 ))),
66154 TypeVariant::ScSpecEventDataFormat => Ok(Self::ScSpecEventDataFormat(Box::new(
66155 ScSpecEventDataFormat::arbitrary(u)?,
66156 ))),
66157 TypeVariant::ScSpecEventV0 => {
66158 Ok(Self::ScSpecEventV0(Box::new(ScSpecEventV0::arbitrary(u)?)))
66159 }
66160 TypeVariant::ScSpecEntryKind => Ok(Self::ScSpecEntryKind(Box::new(
66161 ScSpecEntryKind::arbitrary(u)?,
66162 ))),
66163 TypeVariant::ScSpecEntry => Ok(Self::ScSpecEntry(Box::new(ScSpecEntry::arbitrary(u)?))),
66164 TypeVariant::ScValType => Ok(Self::ScValType(Box::new(ScValType::arbitrary(u)?))),
66165 TypeVariant::ScErrorType => Ok(Self::ScErrorType(Box::new(ScErrorType::arbitrary(u)?))),
66166 TypeVariant::ScErrorCode => Ok(Self::ScErrorCode(Box::new(ScErrorCode::arbitrary(u)?))),
66167 TypeVariant::ScError => Ok(Self::ScError(Box::new(ScError::arbitrary(u)?))),
66168 TypeVariant::UInt128Parts => {
66169 Ok(Self::UInt128Parts(Box::new(UInt128Parts::arbitrary(u)?)))
66170 }
66171 TypeVariant::Int128Parts => Ok(Self::Int128Parts(Box::new(Int128Parts::arbitrary(u)?))),
66172 TypeVariant::UInt256Parts => {
66173 Ok(Self::UInt256Parts(Box::new(UInt256Parts::arbitrary(u)?)))
66174 }
66175 TypeVariant::Int256Parts => Ok(Self::Int256Parts(Box::new(Int256Parts::arbitrary(u)?))),
66176 TypeVariant::ContractExecutableType => Ok(Self::ContractExecutableType(Box::new(
66177 ContractExecutableType::arbitrary(u)?,
66178 ))),
66179 TypeVariant::ContractExecutable => Ok(Self::ContractExecutable(Box::new(
66180 ContractExecutable::arbitrary(u)?,
66181 ))),
66182 TypeVariant::ScAddressType => {
66183 Ok(Self::ScAddressType(Box::new(ScAddressType::arbitrary(u)?)))
66184 }
66185 TypeVariant::MuxedEd25519Account => Ok(Self::MuxedEd25519Account(Box::new(
66186 MuxedEd25519Account::arbitrary(u)?,
66187 ))),
66188 TypeVariant::ScAddress => Ok(Self::ScAddress(Box::new(ScAddress::arbitrary(u)?))),
66189 TypeVariant::ScVec => Ok(Self::ScVec(Box::new(ScVec::arbitrary(u)?))),
66190 TypeVariant::ScMap => Ok(Self::ScMap(Box::new(ScMap::arbitrary(u)?))),
66191 TypeVariant::ScBytes => Ok(Self::ScBytes(Box::new(ScBytes::arbitrary(u)?))),
66192 TypeVariant::ScString => Ok(Self::ScString(Box::new(ScString::arbitrary(u)?))),
66193 TypeVariant::ScSymbol => Ok(Self::ScSymbol(Box::new(ScSymbol::arbitrary(u)?))),
66194 TypeVariant::ScNonceKey => Ok(Self::ScNonceKey(Box::new(ScNonceKey::arbitrary(u)?))),
66195 TypeVariant::ScContractInstance => Ok(Self::ScContractInstance(Box::new(
66196 ScContractInstance::arbitrary(u)?,
66197 ))),
66198 TypeVariant::ScVal => Ok(Self::ScVal(Box::new(ScVal::arbitrary(u)?))),
66199 TypeVariant::ScMapEntry => Ok(Self::ScMapEntry(Box::new(ScMapEntry::arbitrary(u)?))),
66200 TypeVariant::LedgerCloseMetaBatch => Ok(Self::LedgerCloseMetaBatch(Box::new(
66201 LedgerCloseMetaBatch::arbitrary(u)?,
66202 ))),
66203 TypeVariant::StoredTransactionSet => Ok(Self::StoredTransactionSet(Box::new(
66204 StoredTransactionSet::arbitrary(u)?,
66205 ))),
66206 TypeVariant::StoredDebugTransactionSet => Ok(Self::StoredDebugTransactionSet(
66207 Box::new(StoredDebugTransactionSet::arbitrary(u)?),
66208 )),
66209 TypeVariant::PersistedScpStateV0 => Ok(Self::PersistedScpStateV0(Box::new(
66210 PersistedScpStateV0::arbitrary(u)?,
66211 ))),
66212 TypeVariant::PersistedScpStateV1 => Ok(Self::PersistedScpStateV1(Box::new(
66213 PersistedScpStateV1::arbitrary(u)?,
66214 ))),
66215 TypeVariant::PersistedScpState => Ok(Self::PersistedScpState(Box::new(
66216 PersistedScpState::arbitrary(u)?,
66217 ))),
66218 TypeVariant::Thresholds => Ok(Self::Thresholds(Box::new(Thresholds::arbitrary(u)?))),
66219 TypeVariant::String32 => Ok(Self::String32(Box::new(String32::arbitrary(u)?))),
66220 TypeVariant::String64 => Ok(Self::String64(Box::new(String64::arbitrary(u)?))),
66221 TypeVariant::SequenceNumber => Ok(Self::SequenceNumber(Box::new(
66222 SequenceNumber::arbitrary(u)?,
66223 ))),
66224 TypeVariant::DataValue => Ok(Self::DataValue(Box::new(DataValue::arbitrary(u)?))),
66225 TypeVariant::AssetCode4 => Ok(Self::AssetCode4(Box::new(AssetCode4::arbitrary(u)?))),
66226 TypeVariant::AssetCode12 => Ok(Self::AssetCode12(Box::new(AssetCode12::arbitrary(u)?))),
66227 TypeVariant::AssetType => Ok(Self::AssetType(Box::new(AssetType::arbitrary(u)?))),
66228 TypeVariant::AssetCode => Ok(Self::AssetCode(Box::new(AssetCode::arbitrary(u)?))),
66229 TypeVariant::AlphaNum4 => Ok(Self::AlphaNum4(Box::new(AlphaNum4::arbitrary(u)?))),
66230 TypeVariant::AlphaNum12 => Ok(Self::AlphaNum12(Box::new(AlphaNum12::arbitrary(u)?))),
66231 TypeVariant::Asset => Ok(Self::Asset(Box::new(Asset::arbitrary(u)?))),
66232 TypeVariant::Price => Ok(Self::Price(Box::new(Price::arbitrary(u)?))),
66233 TypeVariant::Liabilities => Ok(Self::Liabilities(Box::new(Liabilities::arbitrary(u)?))),
66234 TypeVariant::ThresholdIndexes => Ok(Self::ThresholdIndexes(Box::new(
66235 ThresholdIndexes::arbitrary(u)?,
66236 ))),
66237 TypeVariant::LedgerEntryType => Ok(Self::LedgerEntryType(Box::new(
66238 LedgerEntryType::arbitrary(u)?,
66239 ))),
66240 TypeVariant::Signer => Ok(Self::Signer(Box::new(Signer::arbitrary(u)?))),
66241 TypeVariant::AccountFlags => {
66242 Ok(Self::AccountFlags(Box::new(AccountFlags::arbitrary(u)?)))
66243 }
66244 TypeVariant::SponsorshipDescriptor => Ok(Self::SponsorshipDescriptor(Box::new(
66245 SponsorshipDescriptor::arbitrary(u)?,
66246 ))),
66247 TypeVariant::AccountEntryExtensionV3 => Ok(Self::AccountEntryExtensionV3(Box::new(
66248 AccountEntryExtensionV3::arbitrary(u)?,
66249 ))),
66250 TypeVariant::AccountEntryExtensionV2 => Ok(Self::AccountEntryExtensionV2(Box::new(
66251 AccountEntryExtensionV2::arbitrary(u)?,
66252 ))),
66253 TypeVariant::AccountEntryExtensionV2Ext => Ok(Self::AccountEntryExtensionV2Ext(
66254 Box::new(AccountEntryExtensionV2Ext::arbitrary(u)?),
66255 )),
66256 TypeVariant::AccountEntryExtensionV1 => Ok(Self::AccountEntryExtensionV1(Box::new(
66257 AccountEntryExtensionV1::arbitrary(u)?,
66258 ))),
66259 TypeVariant::AccountEntryExtensionV1Ext => Ok(Self::AccountEntryExtensionV1Ext(
66260 Box::new(AccountEntryExtensionV1Ext::arbitrary(u)?),
66261 )),
66262 TypeVariant::AccountEntry => {
66263 Ok(Self::AccountEntry(Box::new(AccountEntry::arbitrary(u)?)))
66264 }
66265 TypeVariant::AccountEntryExt => Ok(Self::AccountEntryExt(Box::new(
66266 AccountEntryExt::arbitrary(u)?,
66267 ))),
66268 TypeVariant::TrustLineFlags => Ok(Self::TrustLineFlags(Box::new(
66269 TrustLineFlags::arbitrary(u)?,
66270 ))),
66271 TypeVariant::LiquidityPoolType => Ok(Self::LiquidityPoolType(Box::new(
66272 LiquidityPoolType::arbitrary(u)?,
66273 ))),
66274 TypeVariant::TrustLineAsset => Ok(Self::TrustLineAsset(Box::new(
66275 TrustLineAsset::arbitrary(u)?,
66276 ))),
66277 TypeVariant::TrustLineEntryExtensionV2 => Ok(Self::TrustLineEntryExtensionV2(
66278 Box::new(TrustLineEntryExtensionV2::arbitrary(u)?),
66279 )),
66280 TypeVariant::TrustLineEntryExtensionV2Ext => Ok(Self::TrustLineEntryExtensionV2Ext(
66281 Box::new(TrustLineEntryExtensionV2Ext::arbitrary(u)?),
66282 )),
66283 TypeVariant::TrustLineEntry => Ok(Self::TrustLineEntry(Box::new(
66284 TrustLineEntry::arbitrary(u)?,
66285 ))),
66286 TypeVariant::TrustLineEntryExt => Ok(Self::TrustLineEntryExt(Box::new(
66287 TrustLineEntryExt::arbitrary(u)?,
66288 ))),
66289 TypeVariant::TrustLineEntryV1 => Ok(Self::TrustLineEntryV1(Box::new(
66290 TrustLineEntryV1::arbitrary(u)?,
66291 ))),
66292 TypeVariant::TrustLineEntryV1Ext => Ok(Self::TrustLineEntryV1Ext(Box::new(
66293 TrustLineEntryV1Ext::arbitrary(u)?,
66294 ))),
66295 TypeVariant::OfferEntryFlags => Ok(Self::OfferEntryFlags(Box::new(
66296 OfferEntryFlags::arbitrary(u)?,
66297 ))),
66298 TypeVariant::OfferEntry => Ok(Self::OfferEntry(Box::new(OfferEntry::arbitrary(u)?))),
66299 TypeVariant::OfferEntryExt => {
66300 Ok(Self::OfferEntryExt(Box::new(OfferEntryExt::arbitrary(u)?)))
66301 }
66302 TypeVariant::DataEntry => Ok(Self::DataEntry(Box::new(DataEntry::arbitrary(u)?))),
66303 TypeVariant::DataEntryExt => {
66304 Ok(Self::DataEntryExt(Box::new(DataEntryExt::arbitrary(u)?)))
66305 }
66306 TypeVariant::ClaimPredicateType => Ok(Self::ClaimPredicateType(Box::new(
66307 ClaimPredicateType::arbitrary(u)?,
66308 ))),
66309 TypeVariant::ClaimPredicate => Ok(Self::ClaimPredicate(Box::new(
66310 ClaimPredicate::arbitrary(u)?,
66311 ))),
66312 TypeVariant::ClaimantType => {
66313 Ok(Self::ClaimantType(Box::new(ClaimantType::arbitrary(u)?)))
66314 }
66315 TypeVariant::Claimant => Ok(Self::Claimant(Box::new(Claimant::arbitrary(u)?))),
66316 TypeVariant::ClaimantV0 => Ok(Self::ClaimantV0(Box::new(ClaimantV0::arbitrary(u)?))),
66317 TypeVariant::ClaimableBalanceFlags => Ok(Self::ClaimableBalanceFlags(Box::new(
66318 ClaimableBalanceFlags::arbitrary(u)?,
66319 ))),
66320 TypeVariant::ClaimableBalanceEntryExtensionV1 => {
66321 Ok(Self::ClaimableBalanceEntryExtensionV1(Box::new(
66322 ClaimableBalanceEntryExtensionV1::arbitrary(u)?,
66323 )))
66324 }
66325 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => {
66326 Ok(Self::ClaimableBalanceEntryExtensionV1Ext(Box::new(
66327 ClaimableBalanceEntryExtensionV1Ext::arbitrary(u)?,
66328 )))
66329 }
66330 TypeVariant::ClaimableBalanceEntry => Ok(Self::ClaimableBalanceEntry(Box::new(
66331 ClaimableBalanceEntry::arbitrary(u)?,
66332 ))),
66333 TypeVariant::ClaimableBalanceEntryExt => Ok(Self::ClaimableBalanceEntryExt(Box::new(
66334 ClaimableBalanceEntryExt::arbitrary(u)?,
66335 ))),
66336 TypeVariant::LiquidityPoolConstantProductParameters => {
66337 Ok(Self::LiquidityPoolConstantProductParameters(Box::new(
66338 LiquidityPoolConstantProductParameters::arbitrary(u)?,
66339 )))
66340 }
66341 TypeVariant::LiquidityPoolEntry => Ok(Self::LiquidityPoolEntry(Box::new(
66342 LiquidityPoolEntry::arbitrary(u)?,
66343 ))),
66344 TypeVariant::LiquidityPoolEntryBody => Ok(Self::LiquidityPoolEntryBody(Box::new(
66345 LiquidityPoolEntryBody::arbitrary(u)?,
66346 ))),
66347 TypeVariant::LiquidityPoolEntryConstantProduct => {
66348 Ok(Self::LiquidityPoolEntryConstantProduct(Box::new(
66349 LiquidityPoolEntryConstantProduct::arbitrary(u)?,
66350 )))
66351 }
66352 TypeVariant::ContractDataDurability => Ok(Self::ContractDataDurability(Box::new(
66353 ContractDataDurability::arbitrary(u)?,
66354 ))),
66355 TypeVariant::ContractDataEntry => Ok(Self::ContractDataEntry(Box::new(
66356 ContractDataEntry::arbitrary(u)?,
66357 ))),
66358 TypeVariant::ContractCodeCostInputs => Ok(Self::ContractCodeCostInputs(Box::new(
66359 ContractCodeCostInputs::arbitrary(u)?,
66360 ))),
66361 TypeVariant::ContractCodeEntry => Ok(Self::ContractCodeEntry(Box::new(
66362 ContractCodeEntry::arbitrary(u)?,
66363 ))),
66364 TypeVariant::ContractCodeEntryExt => Ok(Self::ContractCodeEntryExt(Box::new(
66365 ContractCodeEntryExt::arbitrary(u)?,
66366 ))),
66367 TypeVariant::ContractCodeEntryV1 => Ok(Self::ContractCodeEntryV1(Box::new(
66368 ContractCodeEntryV1::arbitrary(u)?,
66369 ))),
66370 TypeVariant::TtlEntry => Ok(Self::TtlEntry(Box::new(TtlEntry::arbitrary(u)?))),
66371 TypeVariant::LedgerEntryExtensionV1 => Ok(Self::LedgerEntryExtensionV1(Box::new(
66372 LedgerEntryExtensionV1::arbitrary(u)?,
66373 ))),
66374 TypeVariant::LedgerEntryExtensionV1Ext => Ok(Self::LedgerEntryExtensionV1Ext(
66375 Box::new(LedgerEntryExtensionV1Ext::arbitrary(u)?),
66376 )),
66377 TypeVariant::LedgerEntry => Ok(Self::LedgerEntry(Box::new(LedgerEntry::arbitrary(u)?))),
66378 TypeVariant::LedgerEntryData => Ok(Self::LedgerEntryData(Box::new(
66379 LedgerEntryData::arbitrary(u)?,
66380 ))),
66381 TypeVariant::LedgerEntryExt => Ok(Self::LedgerEntryExt(Box::new(
66382 LedgerEntryExt::arbitrary(u)?,
66383 ))),
66384 TypeVariant::LedgerKey => Ok(Self::LedgerKey(Box::new(LedgerKey::arbitrary(u)?))),
66385 TypeVariant::LedgerKeyAccount => Ok(Self::LedgerKeyAccount(Box::new(
66386 LedgerKeyAccount::arbitrary(u)?,
66387 ))),
66388 TypeVariant::LedgerKeyTrustLine => Ok(Self::LedgerKeyTrustLine(Box::new(
66389 LedgerKeyTrustLine::arbitrary(u)?,
66390 ))),
66391 TypeVariant::LedgerKeyOffer => Ok(Self::LedgerKeyOffer(Box::new(
66392 LedgerKeyOffer::arbitrary(u)?,
66393 ))),
66394 TypeVariant::LedgerKeyData => {
66395 Ok(Self::LedgerKeyData(Box::new(LedgerKeyData::arbitrary(u)?)))
66396 }
66397 TypeVariant::LedgerKeyClaimableBalance => Ok(Self::LedgerKeyClaimableBalance(
66398 Box::new(LedgerKeyClaimableBalance::arbitrary(u)?),
66399 )),
66400 TypeVariant::LedgerKeyLiquidityPool => Ok(Self::LedgerKeyLiquidityPool(Box::new(
66401 LedgerKeyLiquidityPool::arbitrary(u)?,
66402 ))),
66403 TypeVariant::LedgerKeyContractData => Ok(Self::LedgerKeyContractData(Box::new(
66404 LedgerKeyContractData::arbitrary(u)?,
66405 ))),
66406 TypeVariant::LedgerKeyContractCode => Ok(Self::LedgerKeyContractCode(Box::new(
66407 LedgerKeyContractCode::arbitrary(u)?,
66408 ))),
66409 TypeVariant::LedgerKeyConfigSetting => Ok(Self::LedgerKeyConfigSetting(Box::new(
66410 LedgerKeyConfigSetting::arbitrary(u)?,
66411 ))),
66412 TypeVariant::LedgerKeyTtl => {
66413 Ok(Self::LedgerKeyTtl(Box::new(LedgerKeyTtl::arbitrary(u)?)))
66414 }
66415 TypeVariant::EnvelopeType => {
66416 Ok(Self::EnvelopeType(Box::new(EnvelopeType::arbitrary(u)?)))
66417 }
66418 TypeVariant::BucketListType => Ok(Self::BucketListType(Box::new(
66419 BucketListType::arbitrary(u)?,
66420 ))),
66421 TypeVariant::BucketEntryType => Ok(Self::BucketEntryType(Box::new(
66422 BucketEntryType::arbitrary(u)?,
66423 ))),
66424 TypeVariant::HotArchiveBucketEntryType => Ok(Self::HotArchiveBucketEntryType(
66425 Box::new(HotArchiveBucketEntryType::arbitrary(u)?),
66426 )),
66427 TypeVariant::BucketMetadata => Ok(Self::BucketMetadata(Box::new(
66428 BucketMetadata::arbitrary(u)?,
66429 ))),
66430 TypeVariant::BucketMetadataExt => Ok(Self::BucketMetadataExt(Box::new(
66431 BucketMetadataExt::arbitrary(u)?,
66432 ))),
66433 TypeVariant::BucketEntry => Ok(Self::BucketEntry(Box::new(BucketEntry::arbitrary(u)?))),
66434 TypeVariant::HotArchiveBucketEntry => Ok(Self::HotArchiveBucketEntry(Box::new(
66435 HotArchiveBucketEntry::arbitrary(u)?,
66436 ))),
66437 TypeVariant::UpgradeType => Ok(Self::UpgradeType(Box::new(UpgradeType::arbitrary(u)?))),
66438 TypeVariant::StellarValueType => Ok(Self::StellarValueType(Box::new(
66439 StellarValueType::arbitrary(u)?,
66440 ))),
66441 TypeVariant::LedgerCloseValueSignature => Ok(Self::LedgerCloseValueSignature(
66442 Box::new(LedgerCloseValueSignature::arbitrary(u)?),
66443 )),
66444 TypeVariant::StellarValue => {
66445 Ok(Self::StellarValue(Box::new(StellarValue::arbitrary(u)?)))
66446 }
66447 TypeVariant::StellarValueExt => Ok(Self::StellarValueExt(Box::new(
66448 StellarValueExt::arbitrary(u)?,
66449 ))),
66450 TypeVariant::LedgerHeaderFlags => Ok(Self::LedgerHeaderFlags(Box::new(
66451 LedgerHeaderFlags::arbitrary(u)?,
66452 ))),
66453 TypeVariant::LedgerHeaderExtensionV1 => Ok(Self::LedgerHeaderExtensionV1(Box::new(
66454 LedgerHeaderExtensionV1::arbitrary(u)?,
66455 ))),
66456 TypeVariant::LedgerHeaderExtensionV1Ext => Ok(Self::LedgerHeaderExtensionV1Ext(
66457 Box::new(LedgerHeaderExtensionV1Ext::arbitrary(u)?),
66458 )),
66459 TypeVariant::LedgerHeader => {
66460 Ok(Self::LedgerHeader(Box::new(LedgerHeader::arbitrary(u)?)))
66461 }
66462 TypeVariant::LedgerHeaderExt => Ok(Self::LedgerHeaderExt(Box::new(
66463 LedgerHeaderExt::arbitrary(u)?,
66464 ))),
66465 TypeVariant::LedgerUpgradeType => Ok(Self::LedgerUpgradeType(Box::new(
66466 LedgerUpgradeType::arbitrary(u)?,
66467 ))),
66468 TypeVariant::ConfigUpgradeSetKey => Ok(Self::ConfigUpgradeSetKey(Box::new(
66469 ConfigUpgradeSetKey::arbitrary(u)?,
66470 ))),
66471 TypeVariant::LedgerUpgrade => {
66472 Ok(Self::LedgerUpgrade(Box::new(LedgerUpgrade::arbitrary(u)?)))
66473 }
66474 TypeVariant::ConfigUpgradeSet => Ok(Self::ConfigUpgradeSet(Box::new(
66475 ConfigUpgradeSet::arbitrary(u)?,
66476 ))),
66477 TypeVariant::TxSetComponentType => Ok(Self::TxSetComponentType(Box::new(
66478 TxSetComponentType::arbitrary(u)?,
66479 ))),
66480 TypeVariant::DependentTxCluster => Ok(Self::DependentTxCluster(Box::new(
66481 DependentTxCluster::arbitrary(u)?,
66482 ))),
66483 TypeVariant::ParallelTxExecutionStage => Ok(Self::ParallelTxExecutionStage(Box::new(
66484 ParallelTxExecutionStage::arbitrary(u)?,
66485 ))),
66486 TypeVariant::ParallelTxsComponent => Ok(Self::ParallelTxsComponent(Box::new(
66487 ParallelTxsComponent::arbitrary(u)?,
66488 ))),
66489 TypeVariant::TxSetComponent => Ok(Self::TxSetComponent(Box::new(
66490 TxSetComponent::arbitrary(u)?,
66491 ))),
66492 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => {
66493 Ok(Self::TxSetComponentTxsMaybeDiscountedFee(Box::new(
66494 TxSetComponentTxsMaybeDiscountedFee::arbitrary(u)?,
66495 )))
66496 }
66497 TypeVariant::TransactionPhase => Ok(Self::TransactionPhase(Box::new(
66498 TransactionPhase::arbitrary(u)?,
66499 ))),
66500 TypeVariant::TransactionSet => Ok(Self::TransactionSet(Box::new(
66501 TransactionSet::arbitrary(u)?,
66502 ))),
66503 TypeVariant::TransactionSetV1 => Ok(Self::TransactionSetV1(Box::new(
66504 TransactionSetV1::arbitrary(u)?,
66505 ))),
66506 TypeVariant::GeneralizedTransactionSet => Ok(Self::GeneralizedTransactionSet(
66507 Box::new(GeneralizedTransactionSet::arbitrary(u)?),
66508 )),
66509 TypeVariant::TransactionResultPair => Ok(Self::TransactionResultPair(Box::new(
66510 TransactionResultPair::arbitrary(u)?,
66511 ))),
66512 TypeVariant::TransactionResultSet => Ok(Self::TransactionResultSet(Box::new(
66513 TransactionResultSet::arbitrary(u)?,
66514 ))),
66515 TypeVariant::TransactionHistoryEntry => Ok(Self::TransactionHistoryEntry(Box::new(
66516 TransactionHistoryEntry::arbitrary(u)?,
66517 ))),
66518 TypeVariant::TransactionHistoryEntryExt => Ok(Self::TransactionHistoryEntryExt(
66519 Box::new(TransactionHistoryEntryExt::arbitrary(u)?),
66520 )),
66521 TypeVariant::TransactionHistoryResultEntry => Ok(Self::TransactionHistoryResultEntry(
66522 Box::new(TransactionHistoryResultEntry::arbitrary(u)?),
66523 )),
66524 TypeVariant::TransactionHistoryResultEntryExt => {
66525 Ok(Self::TransactionHistoryResultEntryExt(Box::new(
66526 TransactionHistoryResultEntryExt::arbitrary(u)?,
66527 )))
66528 }
66529 TypeVariant::LedgerHeaderHistoryEntry => Ok(Self::LedgerHeaderHistoryEntry(Box::new(
66530 LedgerHeaderHistoryEntry::arbitrary(u)?,
66531 ))),
66532 TypeVariant::LedgerHeaderHistoryEntryExt => Ok(Self::LedgerHeaderHistoryEntryExt(
66533 Box::new(LedgerHeaderHistoryEntryExt::arbitrary(u)?),
66534 )),
66535 TypeVariant::LedgerScpMessages => Ok(Self::LedgerScpMessages(Box::new(
66536 LedgerScpMessages::arbitrary(u)?,
66537 ))),
66538 TypeVariant::ScpHistoryEntryV0 => Ok(Self::ScpHistoryEntryV0(Box::new(
66539 ScpHistoryEntryV0::arbitrary(u)?,
66540 ))),
66541 TypeVariant::ScpHistoryEntry => Ok(Self::ScpHistoryEntry(Box::new(
66542 ScpHistoryEntry::arbitrary(u)?,
66543 ))),
66544 TypeVariant::LedgerEntryChangeType => Ok(Self::LedgerEntryChangeType(Box::new(
66545 LedgerEntryChangeType::arbitrary(u)?,
66546 ))),
66547 TypeVariant::LedgerEntryChange => Ok(Self::LedgerEntryChange(Box::new(
66548 LedgerEntryChange::arbitrary(u)?,
66549 ))),
66550 TypeVariant::LedgerEntryChanges => Ok(Self::LedgerEntryChanges(Box::new(
66551 LedgerEntryChanges::arbitrary(u)?,
66552 ))),
66553 TypeVariant::OperationMeta => {
66554 Ok(Self::OperationMeta(Box::new(OperationMeta::arbitrary(u)?)))
66555 }
66556 TypeVariant::TransactionMetaV1 => Ok(Self::TransactionMetaV1(Box::new(
66557 TransactionMetaV1::arbitrary(u)?,
66558 ))),
66559 TypeVariant::TransactionMetaV2 => Ok(Self::TransactionMetaV2(Box::new(
66560 TransactionMetaV2::arbitrary(u)?,
66561 ))),
66562 TypeVariant::ContractEventType => Ok(Self::ContractEventType(Box::new(
66563 ContractEventType::arbitrary(u)?,
66564 ))),
66565 TypeVariant::ContractEvent => {
66566 Ok(Self::ContractEvent(Box::new(ContractEvent::arbitrary(u)?)))
66567 }
66568 TypeVariant::ContractEventBody => Ok(Self::ContractEventBody(Box::new(
66569 ContractEventBody::arbitrary(u)?,
66570 ))),
66571 TypeVariant::ContractEventV0 => Ok(Self::ContractEventV0(Box::new(
66572 ContractEventV0::arbitrary(u)?,
66573 ))),
66574 TypeVariant::DiagnosticEvent => Ok(Self::DiagnosticEvent(Box::new(
66575 DiagnosticEvent::arbitrary(u)?,
66576 ))),
66577 TypeVariant::SorobanTransactionMetaExtV1 => Ok(Self::SorobanTransactionMetaExtV1(
66578 Box::new(SorobanTransactionMetaExtV1::arbitrary(u)?),
66579 )),
66580 TypeVariant::SorobanTransactionMetaExt => Ok(Self::SorobanTransactionMetaExt(
66581 Box::new(SorobanTransactionMetaExt::arbitrary(u)?),
66582 )),
66583 TypeVariant::SorobanTransactionMeta => Ok(Self::SorobanTransactionMeta(Box::new(
66584 SorobanTransactionMeta::arbitrary(u)?,
66585 ))),
66586 TypeVariant::TransactionMetaV3 => Ok(Self::TransactionMetaV3(Box::new(
66587 TransactionMetaV3::arbitrary(u)?,
66588 ))),
66589 TypeVariant::OperationMetaV2 => Ok(Self::OperationMetaV2(Box::new(
66590 OperationMetaV2::arbitrary(u)?,
66591 ))),
66592 TypeVariant::SorobanTransactionMetaV2 => Ok(Self::SorobanTransactionMetaV2(Box::new(
66593 SorobanTransactionMetaV2::arbitrary(u)?,
66594 ))),
66595 TypeVariant::TransactionEventStage => Ok(Self::TransactionEventStage(Box::new(
66596 TransactionEventStage::arbitrary(u)?,
66597 ))),
66598 TypeVariant::TransactionEvent => Ok(Self::TransactionEvent(Box::new(
66599 TransactionEvent::arbitrary(u)?,
66600 ))),
66601 TypeVariant::TransactionMetaV4 => Ok(Self::TransactionMetaV4(Box::new(
66602 TransactionMetaV4::arbitrary(u)?,
66603 ))),
66604 TypeVariant::InvokeHostFunctionSuccessPreImage => {
66605 Ok(Self::InvokeHostFunctionSuccessPreImage(Box::new(
66606 InvokeHostFunctionSuccessPreImage::arbitrary(u)?,
66607 )))
66608 }
66609 TypeVariant::TransactionMeta => Ok(Self::TransactionMeta(Box::new(
66610 TransactionMeta::arbitrary(u)?,
66611 ))),
66612 TypeVariant::TransactionResultMeta => Ok(Self::TransactionResultMeta(Box::new(
66613 TransactionResultMeta::arbitrary(u)?,
66614 ))),
66615 TypeVariant::TransactionResultMetaV1 => Ok(Self::TransactionResultMetaV1(Box::new(
66616 TransactionResultMetaV1::arbitrary(u)?,
66617 ))),
66618 TypeVariant::UpgradeEntryMeta => Ok(Self::UpgradeEntryMeta(Box::new(
66619 UpgradeEntryMeta::arbitrary(u)?,
66620 ))),
66621 TypeVariant::LedgerCloseMetaV0 => Ok(Self::LedgerCloseMetaV0(Box::new(
66622 LedgerCloseMetaV0::arbitrary(u)?,
66623 ))),
66624 TypeVariant::LedgerCloseMetaExtV1 => Ok(Self::LedgerCloseMetaExtV1(Box::new(
66625 LedgerCloseMetaExtV1::arbitrary(u)?,
66626 ))),
66627 TypeVariant::LedgerCloseMetaExt => Ok(Self::LedgerCloseMetaExt(Box::new(
66628 LedgerCloseMetaExt::arbitrary(u)?,
66629 ))),
66630 TypeVariant::LedgerCloseMetaV1 => Ok(Self::LedgerCloseMetaV1(Box::new(
66631 LedgerCloseMetaV1::arbitrary(u)?,
66632 ))),
66633 TypeVariant::LedgerCloseMetaV2 => Ok(Self::LedgerCloseMetaV2(Box::new(
66634 LedgerCloseMetaV2::arbitrary(u)?,
66635 ))),
66636 TypeVariant::LedgerCloseMeta => Ok(Self::LedgerCloseMeta(Box::new(
66637 LedgerCloseMeta::arbitrary(u)?,
66638 ))),
66639 TypeVariant::ErrorCode => Ok(Self::ErrorCode(Box::new(ErrorCode::arbitrary(u)?))),
66640 TypeVariant::SError => Ok(Self::SError(Box::new(SError::arbitrary(u)?))),
66641 TypeVariant::SendMore => Ok(Self::SendMore(Box::new(SendMore::arbitrary(u)?))),
66642 TypeVariant::SendMoreExtended => Ok(Self::SendMoreExtended(Box::new(
66643 SendMoreExtended::arbitrary(u)?,
66644 ))),
66645 TypeVariant::AuthCert => Ok(Self::AuthCert(Box::new(AuthCert::arbitrary(u)?))),
66646 TypeVariant::Hello => Ok(Self::Hello(Box::new(Hello::arbitrary(u)?))),
66647 TypeVariant::Auth => Ok(Self::Auth(Box::new(Auth::arbitrary(u)?))),
66648 TypeVariant::IpAddrType => Ok(Self::IpAddrType(Box::new(IpAddrType::arbitrary(u)?))),
66649 TypeVariant::PeerAddress => Ok(Self::PeerAddress(Box::new(PeerAddress::arbitrary(u)?))),
66650 TypeVariant::PeerAddressIp => {
66651 Ok(Self::PeerAddressIp(Box::new(PeerAddressIp::arbitrary(u)?)))
66652 }
66653 TypeVariant::MessageType => Ok(Self::MessageType(Box::new(MessageType::arbitrary(u)?))),
66654 TypeVariant::DontHave => Ok(Self::DontHave(Box::new(DontHave::arbitrary(u)?))),
66655 TypeVariant::SurveyMessageCommandType => Ok(Self::SurveyMessageCommandType(Box::new(
66656 SurveyMessageCommandType::arbitrary(u)?,
66657 ))),
66658 TypeVariant::SurveyMessageResponseType => Ok(Self::SurveyMessageResponseType(
66659 Box::new(SurveyMessageResponseType::arbitrary(u)?),
66660 )),
66661 TypeVariant::TimeSlicedSurveyStartCollectingMessage => {
66662 Ok(Self::TimeSlicedSurveyStartCollectingMessage(Box::new(
66663 TimeSlicedSurveyStartCollectingMessage::arbitrary(u)?,
66664 )))
66665 }
66666 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => {
66667 Ok(Self::SignedTimeSlicedSurveyStartCollectingMessage(
66668 Box::new(SignedTimeSlicedSurveyStartCollectingMessage::arbitrary(u)?),
66669 ))
66670 }
66671 TypeVariant::TimeSlicedSurveyStopCollectingMessage => {
66672 Ok(Self::TimeSlicedSurveyStopCollectingMessage(Box::new(
66673 TimeSlicedSurveyStopCollectingMessage::arbitrary(u)?,
66674 )))
66675 }
66676 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => {
66677 Ok(Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::new(
66678 SignedTimeSlicedSurveyStopCollectingMessage::arbitrary(u)?,
66679 )))
66680 }
66681 TypeVariant::SurveyRequestMessage => Ok(Self::SurveyRequestMessage(Box::new(
66682 SurveyRequestMessage::arbitrary(u)?,
66683 ))),
66684 TypeVariant::TimeSlicedSurveyRequestMessage => {
66685 Ok(Self::TimeSlicedSurveyRequestMessage(Box::new(
66686 TimeSlicedSurveyRequestMessage::arbitrary(u)?,
66687 )))
66688 }
66689 TypeVariant::SignedTimeSlicedSurveyRequestMessage => {
66690 Ok(Self::SignedTimeSlicedSurveyRequestMessage(Box::new(
66691 SignedTimeSlicedSurveyRequestMessage::arbitrary(u)?,
66692 )))
66693 }
66694 TypeVariant::EncryptedBody => {
66695 Ok(Self::EncryptedBody(Box::new(EncryptedBody::arbitrary(u)?)))
66696 }
66697 TypeVariant::SurveyResponseMessage => Ok(Self::SurveyResponseMessage(Box::new(
66698 SurveyResponseMessage::arbitrary(u)?,
66699 ))),
66700 TypeVariant::TimeSlicedSurveyResponseMessage => {
66701 Ok(Self::TimeSlicedSurveyResponseMessage(Box::new(
66702 TimeSlicedSurveyResponseMessage::arbitrary(u)?,
66703 )))
66704 }
66705 TypeVariant::SignedTimeSlicedSurveyResponseMessage => {
66706 Ok(Self::SignedTimeSlicedSurveyResponseMessage(Box::new(
66707 SignedTimeSlicedSurveyResponseMessage::arbitrary(u)?,
66708 )))
66709 }
66710 TypeVariant::PeerStats => Ok(Self::PeerStats(Box::new(PeerStats::arbitrary(u)?))),
66711 TypeVariant::TimeSlicedNodeData => Ok(Self::TimeSlicedNodeData(Box::new(
66712 TimeSlicedNodeData::arbitrary(u)?,
66713 ))),
66714 TypeVariant::TimeSlicedPeerData => Ok(Self::TimeSlicedPeerData(Box::new(
66715 TimeSlicedPeerData::arbitrary(u)?,
66716 ))),
66717 TypeVariant::TimeSlicedPeerDataList => Ok(Self::TimeSlicedPeerDataList(Box::new(
66718 TimeSlicedPeerDataList::arbitrary(u)?,
66719 ))),
66720 TypeVariant::TopologyResponseBodyV2 => Ok(Self::TopologyResponseBodyV2(Box::new(
66721 TopologyResponseBodyV2::arbitrary(u)?,
66722 ))),
66723 TypeVariant::SurveyResponseBody => Ok(Self::SurveyResponseBody(Box::new(
66724 SurveyResponseBody::arbitrary(u)?,
66725 ))),
66726 TypeVariant::TxAdvertVector => Ok(Self::TxAdvertVector(Box::new(
66727 TxAdvertVector::arbitrary(u)?,
66728 ))),
66729 TypeVariant::FloodAdvert => Ok(Self::FloodAdvert(Box::new(FloodAdvert::arbitrary(u)?))),
66730 TypeVariant::TxDemandVector => Ok(Self::TxDemandVector(Box::new(
66731 TxDemandVector::arbitrary(u)?,
66732 ))),
66733 TypeVariant::FloodDemand => Ok(Self::FloodDemand(Box::new(FloodDemand::arbitrary(u)?))),
66734 TypeVariant::StellarMessage => Ok(Self::StellarMessage(Box::new(
66735 StellarMessage::arbitrary(u)?,
66736 ))),
66737 TypeVariant::AuthenticatedMessage => Ok(Self::AuthenticatedMessage(Box::new(
66738 AuthenticatedMessage::arbitrary(u)?,
66739 ))),
66740 TypeVariant::AuthenticatedMessageV0 => Ok(Self::AuthenticatedMessageV0(Box::new(
66741 AuthenticatedMessageV0::arbitrary(u)?,
66742 ))),
66743 TypeVariant::LiquidityPoolParameters => Ok(Self::LiquidityPoolParameters(Box::new(
66744 LiquidityPoolParameters::arbitrary(u)?,
66745 ))),
66746 TypeVariant::MuxedAccount => {
66747 Ok(Self::MuxedAccount(Box::new(MuxedAccount::arbitrary(u)?)))
66748 }
66749 TypeVariant::MuxedAccountMed25519 => Ok(Self::MuxedAccountMed25519(Box::new(
66750 MuxedAccountMed25519::arbitrary(u)?,
66751 ))),
66752 TypeVariant::DecoratedSignature => Ok(Self::DecoratedSignature(Box::new(
66753 DecoratedSignature::arbitrary(u)?,
66754 ))),
66755 TypeVariant::OperationType => {
66756 Ok(Self::OperationType(Box::new(OperationType::arbitrary(u)?)))
66757 }
66758 TypeVariant::CreateAccountOp => Ok(Self::CreateAccountOp(Box::new(
66759 CreateAccountOp::arbitrary(u)?,
66760 ))),
66761 TypeVariant::PaymentOp => Ok(Self::PaymentOp(Box::new(PaymentOp::arbitrary(u)?))),
66762 TypeVariant::PathPaymentStrictReceiveOp => Ok(Self::PathPaymentStrictReceiveOp(
66763 Box::new(PathPaymentStrictReceiveOp::arbitrary(u)?),
66764 )),
66765 TypeVariant::PathPaymentStrictSendOp => Ok(Self::PathPaymentStrictSendOp(Box::new(
66766 PathPaymentStrictSendOp::arbitrary(u)?,
66767 ))),
66768 TypeVariant::ManageSellOfferOp => Ok(Self::ManageSellOfferOp(Box::new(
66769 ManageSellOfferOp::arbitrary(u)?,
66770 ))),
66771 TypeVariant::ManageBuyOfferOp => Ok(Self::ManageBuyOfferOp(Box::new(
66772 ManageBuyOfferOp::arbitrary(u)?,
66773 ))),
66774 TypeVariant::CreatePassiveSellOfferOp => Ok(Self::CreatePassiveSellOfferOp(Box::new(
66775 CreatePassiveSellOfferOp::arbitrary(u)?,
66776 ))),
66777 TypeVariant::SetOptionsOp => {
66778 Ok(Self::SetOptionsOp(Box::new(SetOptionsOp::arbitrary(u)?)))
66779 }
66780 TypeVariant::ChangeTrustAsset => Ok(Self::ChangeTrustAsset(Box::new(
66781 ChangeTrustAsset::arbitrary(u)?,
66782 ))),
66783 TypeVariant::ChangeTrustOp => {
66784 Ok(Self::ChangeTrustOp(Box::new(ChangeTrustOp::arbitrary(u)?)))
66785 }
66786 TypeVariant::AllowTrustOp => {
66787 Ok(Self::AllowTrustOp(Box::new(AllowTrustOp::arbitrary(u)?)))
66788 }
66789 TypeVariant::ManageDataOp => {
66790 Ok(Self::ManageDataOp(Box::new(ManageDataOp::arbitrary(u)?)))
66791 }
66792 TypeVariant::BumpSequenceOp => Ok(Self::BumpSequenceOp(Box::new(
66793 BumpSequenceOp::arbitrary(u)?,
66794 ))),
66795 TypeVariant::CreateClaimableBalanceOp => Ok(Self::CreateClaimableBalanceOp(Box::new(
66796 CreateClaimableBalanceOp::arbitrary(u)?,
66797 ))),
66798 TypeVariant::ClaimClaimableBalanceOp => Ok(Self::ClaimClaimableBalanceOp(Box::new(
66799 ClaimClaimableBalanceOp::arbitrary(u)?,
66800 ))),
66801 TypeVariant::BeginSponsoringFutureReservesOp => {
66802 Ok(Self::BeginSponsoringFutureReservesOp(Box::new(
66803 BeginSponsoringFutureReservesOp::arbitrary(u)?,
66804 )))
66805 }
66806 TypeVariant::RevokeSponsorshipType => Ok(Self::RevokeSponsorshipType(Box::new(
66807 RevokeSponsorshipType::arbitrary(u)?,
66808 ))),
66809 TypeVariant::RevokeSponsorshipOp => Ok(Self::RevokeSponsorshipOp(Box::new(
66810 RevokeSponsorshipOp::arbitrary(u)?,
66811 ))),
66812 TypeVariant::RevokeSponsorshipOpSigner => Ok(Self::RevokeSponsorshipOpSigner(
66813 Box::new(RevokeSponsorshipOpSigner::arbitrary(u)?),
66814 )),
66815 TypeVariant::ClawbackOp => Ok(Self::ClawbackOp(Box::new(ClawbackOp::arbitrary(u)?))),
66816 TypeVariant::ClawbackClaimableBalanceOp => Ok(Self::ClawbackClaimableBalanceOp(
66817 Box::new(ClawbackClaimableBalanceOp::arbitrary(u)?),
66818 )),
66819 TypeVariant::SetTrustLineFlagsOp => Ok(Self::SetTrustLineFlagsOp(Box::new(
66820 SetTrustLineFlagsOp::arbitrary(u)?,
66821 ))),
66822 TypeVariant::LiquidityPoolDepositOp => Ok(Self::LiquidityPoolDepositOp(Box::new(
66823 LiquidityPoolDepositOp::arbitrary(u)?,
66824 ))),
66825 TypeVariant::LiquidityPoolWithdrawOp => Ok(Self::LiquidityPoolWithdrawOp(Box::new(
66826 LiquidityPoolWithdrawOp::arbitrary(u)?,
66827 ))),
66828 TypeVariant::HostFunctionType => Ok(Self::HostFunctionType(Box::new(
66829 HostFunctionType::arbitrary(u)?,
66830 ))),
66831 TypeVariant::ContractIdPreimageType => Ok(Self::ContractIdPreimageType(Box::new(
66832 ContractIdPreimageType::arbitrary(u)?,
66833 ))),
66834 TypeVariant::ContractIdPreimage => Ok(Self::ContractIdPreimage(Box::new(
66835 ContractIdPreimage::arbitrary(u)?,
66836 ))),
66837 TypeVariant::ContractIdPreimageFromAddress => Ok(Self::ContractIdPreimageFromAddress(
66838 Box::new(ContractIdPreimageFromAddress::arbitrary(u)?),
66839 )),
66840 TypeVariant::CreateContractArgs => Ok(Self::CreateContractArgs(Box::new(
66841 CreateContractArgs::arbitrary(u)?,
66842 ))),
66843 TypeVariant::CreateContractArgsV2 => Ok(Self::CreateContractArgsV2(Box::new(
66844 CreateContractArgsV2::arbitrary(u)?,
66845 ))),
66846 TypeVariant::InvokeContractArgs => Ok(Self::InvokeContractArgs(Box::new(
66847 InvokeContractArgs::arbitrary(u)?,
66848 ))),
66849 TypeVariant::HostFunction => {
66850 Ok(Self::HostFunction(Box::new(HostFunction::arbitrary(u)?)))
66851 }
66852 TypeVariant::SorobanAuthorizedFunctionType => Ok(Self::SorobanAuthorizedFunctionType(
66853 Box::new(SorobanAuthorizedFunctionType::arbitrary(u)?),
66854 )),
66855 TypeVariant::SorobanAuthorizedFunction => Ok(Self::SorobanAuthorizedFunction(
66856 Box::new(SorobanAuthorizedFunction::arbitrary(u)?),
66857 )),
66858 TypeVariant::SorobanAuthorizedInvocation => Ok(Self::SorobanAuthorizedInvocation(
66859 Box::new(SorobanAuthorizedInvocation::arbitrary(u)?),
66860 )),
66861 TypeVariant::SorobanAddressCredentials => Ok(Self::SorobanAddressCredentials(
66862 Box::new(SorobanAddressCredentials::arbitrary(u)?),
66863 )),
66864 TypeVariant::SorobanCredentialsType => Ok(Self::SorobanCredentialsType(Box::new(
66865 SorobanCredentialsType::arbitrary(u)?,
66866 ))),
66867 TypeVariant::SorobanCredentials => Ok(Self::SorobanCredentials(Box::new(
66868 SorobanCredentials::arbitrary(u)?,
66869 ))),
66870 TypeVariant::SorobanAuthorizationEntry => Ok(Self::SorobanAuthorizationEntry(
66871 Box::new(SorobanAuthorizationEntry::arbitrary(u)?),
66872 )),
66873 TypeVariant::SorobanAuthorizationEntries => Ok(Self::SorobanAuthorizationEntries(
66874 Box::new(SorobanAuthorizationEntries::arbitrary(u)?),
66875 )),
66876 TypeVariant::InvokeHostFunctionOp => Ok(Self::InvokeHostFunctionOp(Box::new(
66877 InvokeHostFunctionOp::arbitrary(u)?,
66878 ))),
66879 TypeVariant::ExtendFootprintTtlOp => Ok(Self::ExtendFootprintTtlOp(Box::new(
66880 ExtendFootprintTtlOp::arbitrary(u)?,
66881 ))),
66882 TypeVariant::RestoreFootprintOp => Ok(Self::RestoreFootprintOp(Box::new(
66883 RestoreFootprintOp::arbitrary(u)?,
66884 ))),
66885 TypeVariant::Operation => Ok(Self::Operation(Box::new(Operation::arbitrary(u)?))),
66886 TypeVariant::OperationBody => {
66887 Ok(Self::OperationBody(Box::new(OperationBody::arbitrary(u)?)))
66888 }
66889 TypeVariant::HashIdPreimage => Ok(Self::HashIdPreimage(Box::new(
66890 HashIdPreimage::arbitrary(u)?,
66891 ))),
66892 TypeVariant::HashIdPreimageOperationId => Ok(Self::HashIdPreimageOperationId(
66893 Box::new(HashIdPreimageOperationId::arbitrary(u)?),
66894 )),
66895 TypeVariant::HashIdPreimageRevokeId => Ok(Self::HashIdPreimageRevokeId(Box::new(
66896 HashIdPreimageRevokeId::arbitrary(u)?,
66897 ))),
66898 TypeVariant::HashIdPreimageContractId => Ok(Self::HashIdPreimageContractId(Box::new(
66899 HashIdPreimageContractId::arbitrary(u)?,
66900 ))),
66901 TypeVariant::HashIdPreimageSorobanAuthorization => {
66902 Ok(Self::HashIdPreimageSorobanAuthorization(Box::new(
66903 HashIdPreimageSorobanAuthorization::arbitrary(u)?,
66904 )))
66905 }
66906 TypeVariant::MemoType => Ok(Self::MemoType(Box::new(MemoType::arbitrary(u)?))),
66907 TypeVariant::Memo => Ok(Self::Memo(Box::new(Memo::arbitrary(u)?))),
66908 TypeVariant::TimeBounds => Ok(Self::TimeBounds(Box::new(TimeBounds::arbitrary(u)?))),
66909 TypeVariant::LedgerBounds => {
66910 Ok(Self::LedgerBounds(Box::new(LedgerBounds::arbitrary(u)?)))
66911 }
66912 TypeVariant::PreconditionsV2 => Ok(Self::PreconditionsV2(Box::new(
66913 PreconditionsV2::arbitrary(u)?,
66914 ))),
66915 TypeVariant::PreconditionType => Ok(Self::PreconditionType(Box::new(
66916 PreconditionType::arbitrary(u)?,
66917 ))),
66918 TypeVariant::Preconditions => {
66919 Ok(Self::Preconditions(Box::new(Preconditions::arbitrary(u)?)))
66920 }
66921 TypeVariant::LedgerFootprint => Ok(Self::LedgerFootprint(Box::new(
66922 LedgerFootprint::arbitrary(u)?,
66923 ))),
66924 TypeVariant::SorobanResources => Ok(Self::SorobanResources(Box::new(
66925 SorobanResources::arbitrary(u)?,
66926 ))),
66927 TypeVariant::SorobanResourcesExtV0 => Ok(Self::SorobanResourcesExtV0(Box::new(
66928 SorobanResourcesExtV0::arbitrary(u)?,
66929 ))),
66930 TypeVariant::SorobanTransactionData => Ok(Self::SorobanTransactionData(Box::new(
66931 SorobanTransactionData::arbitrary(u)?,
66932 ))),
66933 TypeVariant::SorobanTransactionDataExt => Ok(Self::SorobanTransactionDataExt(
66934 Box::new(SorobanTransactionDataExt::arbitrary(u)?),
66935 )),
66936 TypeVariant::TransactionV0 => {
66937 Ok(Self::TransactionV0(Box::new(TransactionV0::arbitrary(u)?)))
66938 }
66939 TypeVariant::TransactionV0Ext => Ok(Self::TransactionV0Ext(Box::new(
66940 TransactionV0Ext::arbitrary(u)?,
66941 ))),
66942 TypeVariant::TransactionV0Envelope => Ok(Self::TransactionV0Envelope(Box::new(
66943 TransactionV0Envelope::arbitrary(u)?,
66944 ))),
66945 TypeVariant::Transaction => Ok(Self::Transaction(Box::new(Transaction::arbitrary(u)?))),
66946 TypeVariant::TransactionExt => Ok(Self::TransactionExt(Box::new(
66947 TransactionExt::arbitrary(u)?,
66948 ))),
66949 TypeVariant::TransactionV1Envelope => Ok(Self::TransactionV1Envelope(Box::new(
66950 TransactionV1Envelope::arbitrary(u)?,
66951 ))),
66952 TypeVariant::FeeBumpTransaction => Ok(Self::FeeBumpTransaction(Box::new(
66953 FeeBumpTransaction::arbitrary(u)?,
66954 ))),
66955 TypeVariant::FeeBumpTransactionInnerTx => Ok(Self::FeeBumpTransactionInnerTx(
66956 Box::new(FeeBumpTransactionInnerTx::arbitrary(u)?),
66957 )),
66958 TypeVariant::FeeBumpTransactionExt => Ok(Self::FeeBumpTransactionExt(Box::new(
66959 FeeBumpTransactionExt::arbitrary(u)?,
66960 ))),
66961 TypeVariant::FeeBumpTransactionEnvelope => Ok(Self::FeeBumpTransactionEnvelope(
66962 Box::new(FeeBumpTransactionEnvelope::arbitrary(u)?),
66963 )),
66964 TypeVariant::TransactionEnvelope => Ok(Self::TransactionEnvelope(Box::new(
66965 TransactionEnvelope::arbitrary(u)?,
66966 ))),
66967 TypeVariant::TransactionSignaturePayload => Ok(Self::TransactionSignaturePayload(
66968 Box::new(TransactionSignaturePayload::arbitrary(u)?),
66969 )),
66970 TypeVariant::TransactionSignaturePayloadTaggedTransaction => {
66971 Ok(Self::TransactionSignaturePayloadTaggedTransaction(
66972 Box::new(TransactionSignaturePayloadTaggedTransaction::arbitrary(u)?),
66973 ))
66974 }
66975 TypeVariant::ClaimAtomType => {
66976 Ok(Self::ClaimAtomType(Box::new(ClaimAtomType::arbitrary(u)?)))
66977 }
66978 TypeVariant::ClaimOfferAtomV0 => Ok(Self::ClaimOfferAtomV0(Box::new(
66979 ClaimOfferAtomV0::arbitrary(u)?,
66980 ))),
66981 TypeVariant::ClaimOfferAtom => Ok(Self::ClaimOfferAtom(Box::new(
66982 ClaimOfferAtom::arbitrary(u)?,
66983 ))),
66984 TypeVariant::ClaimLiquidityAtom => Ok(Self::ClaimLiquidityAtom(Box::new(
66985 ClaimLiquidityAtom::arbitrary(u)?,
66986 ))),
66987 TypeVariant::ClaimAtom => Ok(Self::ClaimAtom(Box::new(ClaimAtom::arbitrary(u)?))),
66988 TypeVariant::CreateAccountResultCode => Ok(Self::CreateAccountResultCode(Box::new(
66989 CreateAccountResultCode::arbitrary(u)?,
66990 ))),
66991 TypeVariant::CreateAccountResult => Ok(Self::CreateAccountResult(Box::new(
66992 CreateAccountResult::arbitrary(u)?,
66993 ))),
66994 TypeVariant::PaymentResultCode => Ok(Self::PaymentResultCode(Box::new(
66995 PaymentResultCode::arbitrary(u)?,
66996 ))),
66997 TypeVariant::PaymentResult => {
66998 Ok(Self::PaymentResult(Box::new(PaymentResult::arbitrary(u)?)))
66999 }
67000 TypeVariant::PathPaymentStrictReceiveResultCode => {
67001 Ok(Self::PathPaymentStrictReceiveResultCode(Box::new(
67002 PathPaymentStrictReceiveResultCode::arbitrary(u)?,
67003 )))
67004 }
67005 TypeVariant::SimplePaymentResult => Ok(Self::SimplePaymentResult(Box::new(
67006 SimplePaymentResult::arbitrary(u)?,
67007 ))),
67008 TypeVariant::PathPaymentStrictReceiveResult => {
67009 Ok(Self::PathPaymentStrictReceiveResult(Box::new(
67010 PathPaymentStrictReceiveResult::arbitrary(u)?,
67011 )))
67012 }
67013 TypeVariant::PathPaymentStrictReceiveResultSuccess => {
67014 Ok(Self::PathPaymentStrictReceiveResultSuccess(Box::new(
67015 PathPaymentStrictReceiveResultSuccess::arbitrary(u)?,
67016 )))
67017 }
67018 TypeVariant::PathPaymentStrictSendResultCode => {
67019 Ok(Self::PathPaymentStrictSendResultCode(Box::new(
67020 PathPaymentStrictSendResultCode::arbitrary(u)?,
67021 )))
67022 }
67023 TypeVariant::PathPaymentStrictSendResult => Ok(Self::PathPaymentStrictSendResult(
67024 Box::new(PathPaymentStrictSendResult::arbitrary(u)?),
67025 )),
67026 TypeVariant::PathPaymentStrictSendResultSuccess => {
67027 Ok(Self::PathPaymentStrictSendResultSuccess(Box::new(
67028 PathPaymentStrictSendResultSuccess::arbitrary(u)?,
67029 )))
67030 }
67031 TypeVariant::ManageSellOfferResultCode => Ok(Self::ManageSellOfferResultCode(
67032 Box::new(ManageSellOfferResultCode::arbitrary(u)?),
67033 )),
67034 TypeVariant::ManageOfferEffect => Ok(Self::ManageOfferEffect(Box::new(
67035 ManageOfferEffect::arbitrary(u)?,
67036 ))),
67037 TypeVariant::ManageOfferSuccessResult => Ok(Self::ManageOfferSuccessResult(Box::new(
67038 ManageOfferSuccessResult::arbitrary(u)?,
67039 ))),
67040 TypeVariant::ManageOfferSuccessResultOffer => Ok(Self::ManageOfferSuccessResultOffer(
67041 Box::new(ManageOfferSuccessResultOffer::arbitrary(u)?),
67042 )),
67043 TypeVariant::ManageSellOfferResult => Ok(Self::ManageSellOfferResult(Box::new(
67044 ManageSellOfferResult::arbitrary(u)?,
67045 ))),
67046 TypeVariant::ManageBuyOfferResultCode => Ok(Self::ManageBuyOfferResultCode(Box::new(
67047 ManageBuyOfferResultCode::arbitrary(u)?,
67048 ))),
67049 TypeVariant::ManageBuyOfferResult => Ok(Self::ManageBuyOfferResult(Box::new(
67050 ManageBuyOfferResult::arbitrary(u)?,
67051 ))),
67052 TypeVariant::SetOptionsResultCode => Ok(Self::SetOptionsResultCode(Box::new(
67053 SetOptionsResultCode::arbitrary(u)?,
67054 ))),
67055 TypeVariant::SetOptionsResult => Ok(Self::SetOptionsResult(Box::new(
67056 SetOptionsResult::arbitrary(u)?,
67057 ))),
67058 TypeVariant::ChangeTrustResultCode => Ok(Self::ChangeTrustResultCode(Box::new(
67059 ChangeTrustResultCode::arbitrary(u)?,
67060 ))),
67061 TypeVariant::ChangeTrustResult => Ok(Self::ChangeTrustResult(Box::new(
67062 ChangeTrustResult::arbitrary(u)?,
67063 ))),
67064 TypeVariant::AllowTrustResultCode => Ok(Self::AllowTrustResultCode(Box::new(
67065 AllowTrustResultCode::arbitrary(u)?,
67066 ))),
67067 TypeVariant::AllowTrustResult => Ok(Self::AllowTrustResult(Box::new(
67068 AllowTrustResult::arbitrary(u)?,
67069 ))),
67070 TypeVariant::AccountMergeResultCode => Ok(Self::AccountMergeResultCode(Box::new(
67071 AccountMergeResultCode::arbitrary(u)?,
67072 ))),
67073 TypeVariant::AccountMergeResult => Ok(Self::AccountMergeResult(Box::new(
67074 AccountMergeResult::arbitrary(u)?,
67075 ))),
67076 TypeVariant::InflationResultCode => Ok(Self::InflationResultCode(Box::new(
67077 InflationResultCode::arbitrary(u)?,
67078 ))),
67079 TypeVariant::InflationPayout => Ok(Self::InflationPayout(Box::new(
67080 InflationPayout::arbitrary(u)?,
67081 ))),
67082 TypeVariant::InflationResult => Ok(Self::InflationResult(Box::new(
67083 InflationResult::arbitrary(u)?,
67084 ))),
67085 TypeVariant::ManageDataResultCode => Ok(Self::ManageDataResultCode(Box::new(
67086 ManageDataResultCode::arbitrary(u)?,
67087 ))),
67088 TypeVariant::ManageDataResult => Ok(Self::ManageDataResult(Box::new(
67089 ManageDataResult::arbitrary(u)?,
67090 ))),
67091 TypeVariant::BumpSequenceResultCode => Ok(Self::BumpSequenceResultCode(Box::new(
67092 BumpSequenceResultCode::arbitrary(u)?,
67093 ))),
67094 TypeVariant::BumpSequenceResult => Ok(Self::BumpSequenceResult(Box::new(
67095 BumpSequenceResult::arbitrary(u)?,
67096 ))),
67097 TypeVariant::CreateClaimableBalanceResultCode => {
67098 Ok(Self::CreateClaimableBalanceResultCode(Box::new(
67099 CreateClaimableBalanceResultCode::arbitrary(u)?,
67100 )))
67101 }
67102 TypeVariant::CreateClaimableBalanceResult => Ok(Self::CreateClaimableBalanceResult(
67103 Box::new(CreateClaimableBalanceResult::arbitrary(u)?),
67104 )),
67105 TypeVariant::ClaimClaimableBalanceResultCode => {
67106 Ok(Self::ClaimClaimableBalanceResultCode(Box::new(
67107 ClaimClaimableBalanceResultCode::arbitrary(u)?,
67108 )))
67109 }
67110 TypeVariant::ClaimClaimableBalanceResult => Ok(Self::ClaimClaimableBalanceResult(
67111 Box::new(ClaimClaimableBalanceResult::arbitrary(u)?),
67112 )),
67113 TypeVariant::BeginSponsoringFutureReservesResultCode => {
67114 Ok(Self::BeginSponsoringFutureReservesResultCode(Box::new(
67115 BeginSponsoringFutureReservesResultCode::arbitrary(u)?,
67116 )))
67117 }
67118 TypeVariant::BeginSponsoringFutureReservesResult => {
67119 Ok(Self::BeginSponsoringFutureReservesResult(Box::new(
67120 BeginSponsoringFutureReservesResult::arbitrary(u)?,
67121 )))
67122 }
67123 TypeVariant::EndSponsoringFutureReservesResultCode => {
67124 Ok(Self::EndSponsoringFutureReservesResultCode(Box::new(
67125 EndSponsoringFutureReservesResultCode::arbitrary(u)?,
67126 )))
67127 }
67128 TypeVariant::EndSponsoringFutureReservesResult => {
67129 Ok(Self::EndSponsoringFutureReservesResult(Box::new(
67130 EndSponsoringFutureReservesResult::arbitrary(u)?,
67131 )))
67132 }
67133 TypeVariant::RevokeSponsorshipResultCode => Ok(Self::RevokeSponsorshipResultCode(
67134 Box::new(RevokeSponsorshipResultCode::arbitrary(u)?),
67135 )),
67136 TypeVariant::RevokeSponsorshipResult => Ok(Self::RevokeSponsorshipResult(Box::new(
67137 RevokeSponsorshipResult::arbitrary(u)?,
67138 ))),
67139 TypeVariant::ClawbackResultCode => Ok(Self::ClawbackResultCode(Box::new(
67140 ClawbackResultCode::arbitrary(u)?,
67141 ))),
67142 TypeVariant::ClawbackResult => Ok(Self::ClawbackResult(Box::new(
67143 ClawbackResult::arbitrary(u)?,
67144 ))),
67145 TypeVariant::ClawbackClaimableBalanceResultCode => {
67146 Ok(Self::ClawbackClaimableBalanceResultCode(Box::new(
67147 ClawbackClaimableBalanceResultCode::arbitrary(u)?,
67148 )))
67149 }
67150 TypeVariant::ClawbackClaimableBalanceResult => {
67151 Ok(Self::ClawbackClaimableBalanceResult(Box::new(
67152 ClawbackClaimableBalanceResult::arbitrary(u)?,
67153 )))
67154 }
67155 TypeVariant::SetTrustLineFlagsResultCode => Ok(Self::SetTrustLineFlagsResultCode(
67156 Box::new(SetTrustLineFlagsResultCode::arbitrary(u)?),
67157 )),
67158 TypeVariant::SetTrustLineFlagsResult => Ok(Self::SetTrustLineFlagsResult(Box::new(
67159 SetTrustLineFlagsResult::arbitrary(u)?,
67160 ))),
67161 TypeVariant::LiquidityPoolDepositResultCode => {
67162 Ok(Self::LiquidityPoolDepositResultCode(Box::new(
67163 LiquidityPoolDepositResultCode::arbitrary(u)?,
67164 )))
67165 }
67166 TypeVariant::LiquidityPoolDepositResult => Ok(Self::LiquidityPoolDepositResult(
67167 Box::new(LiquidityPoolDepositResult::arbitrary(u)?),
67168 )),
67169 TypeVariant::LiquidityPoolWithdrawResultCode => {
67170 Ok(Self::LiquidityPoolWithdrawResultCode(Box::new(
67171 LiquidityPoolWithdrawResultCode::arbitrary(u)?,
67172 )))
67173 }
67174 TypeVariant::LiquidityPoolWithdrawResult => Ok(Self::LiquidityPoolWithdrawResult(
67175 Box::new(LiquidityPoolWithdrawResult::arbitrary(u)?),
67176 )),
67177 TypeVariant::InvokeHostFunctionResultCode => Ok(Self::InvokeHostFunctionResultCode(
67178 Box::new(InvokeHostFunctionResultCode::arbitrary(u)?),
67179 )),
67180 TypeVariant::InvokeHostFunctionResult => Ok(Self::InvokeHostFunctionResult(Box::new(
67181 InvokeHostFunctionResult::arbitrary(u)?,
67182 ))),
67183 TypeVariant::ExtendFootprintTtlResultCode => Ok(Self::ExtendFootprintTtlResultCode(
67184 Box::new(ExtendFootprintTtlResultCode::arbitrary(u)?),
67185 )),
67186 TypeVariant::ExtendFootprintTtlResult => Ok(Self::ExtendFootprintTtlResult(Box::new(
67187 ExtendFootprintTtlResult::arbitrary(u)?,
67188 ))),
67189 TypeVariant::RestoreFootprintResultCode => Ok(Self::RestoreFootprintResultCode(
67190 Box::new(RestoreFootprintResultCode::arbitrary(u)?),
67191 )),
67192 TypeVariant::RestoreFootprintResult => Ok(Self::RestoreFootprintResult(Box::new(
67193 RestoreFootprintResult::arbitrary(u)?,
67194 ))),
67195 TypeVariant::OperationResultCode => Ok(Self::OperationResultCode(Box::new(
67196 OperationResultCode::arbitrary(u)?,
67197 ))),
67198 TypeVariant::OperationResult => Ok(Self::OperationResult(Box::new(
67199 OperationResult::arbitrary(u)?,
67200 ))),
67201 TypeVariant::OperationResultTr => Ok(Self::OperationResultTr(Box::new(
67202 OperationResultTr::arbitrary(u)?,
67203 ))),
67204 TypeVariant::TransactionResultCode => Ok(Self::TransactionResultCode(Box::new(
67205 TransactionResultCode::arbitrary(u)?,
67206 ))),
67207 TypeVariant::InnerTransactionResult => Ok(Self::InnerTransactionResult(Box::new(
67208 InnerTransactionResult::arbitrary(u)?,
67209 ))),
67210 TypeVariant::InnerTransactionResultResult => Ok(Self::InnerTransactionResultResult(
67211 Box::new(InnerTransactionResultResult::arbitrary(u)?),
67212 )),
67213 TypeVariant::InnerTransactionResultExt => Ok(Self::InnerTransactionResultExt(
67214 Box::new(InnerTransactionResultExt::arbitrary(u)?),
67215 )),
67216 TypeVariant::InnerTransactionResultPair => Ok(Self::InnerTransactionResultPair(
67217 Box::new(InnerTransactionResultPair::arbitrary(u)?),
67218 )),
67219 TypeVariant::TransactionResult => Ok(Self::TransactionResult(Box::new(
67220 TransactionResult::arbitrary(u)?,
67221 ))),
67222 TypeVariant::TransactionResultResult => Ok(Self::TransactionResultResult(Box::new(
67223 TransactionResultResult::arbitrary(u)?,
67224 ))),
67225 TypeVariant::TransactionResultExt => Ok(Self::TransactionResultExt(Box::new(
67226 TransactionResultExt::arbitrary(u)?,
67227 ))),
67228 TypeVariant::Hash => Ok(Self::Hash(Box::new(Hash::arbitrary(u)?))),
67229 TypeVariant::Uint256 => Ok(Self::Uint256(Box::new(Uint256::arbitrary(u)?))),
67230 TypeVariant::Uint32 => Ok(Self::Uint32(Box::new(Uint32::arbitrary(u)?))),
67231 TypeVariant::Int32 => Ok(Self::Int32(Box::new(Int32::arbitrary(u)?))),
67232 TypeVariant::Uint64 => Ok(Self::Uint64(Box::new(Uint64::arbitrary(u)?))),
67233 TypeVariant::Int64 => Ok(Self::Int64(Box::new(Int64::arbitrary(u)?))),
67234 TypeVariant::TimePoint => Ok(Self::TimePoint(Box::new(TimePoint::arbitrary(u)?))),
67235 TypeVariant::Duration => Ok(Self::Duration(Box::new(Duration::arbitrary(u)?))),
67236 TypeVariant::ExtensionPoint => Ok(Self::ExtensionPoint(Box::new(
67237 ExtensionPoint::arbitrary(u)?,
67238 ))),
67239 TypeVariant::CryptoKeyType => {
67240 Ok(Self::CryptoKeyType(Box::new(CryptoKeyType::arbitrary(u)?)))
67241 }
67242 TypeVariant::PublicKeyType => {
67243 Ok(Self::PublicKeyType(Box::new(PublicKeyType::arbitrary(u)?)))
67244 }
67245 TypeVariant::SignerKeyType => {
67246 Ok(Self::SignerKeyType(Box::new(SignerKeyType::arbitrary(u)?)))
67247 }
67248 TypeVariant::PublicKey => Ok(Self::PublicKey(Box::new(PublicKey::arbitrary(u)?))),
67249 TypeVariant::SignerKey => Ok(Self::SignerKey(Box::new(SignerKey::arbitrary(u)?))),
67250 TypeVariant::SignerKeyEd25519SignedPayload => Ok(Self::SignerKeyEd25519SignedPayload(
67251 Box::new(SignerKeyEd25519SignedPayload::arbitrary(u)?),
67252 )),
67253 TypeVariant::Signature => Ok(Self::Signature(Box::new(Signature::arbitrary(u)?))),
67254 TypeVariant::SignatureHint => {
67255 Ok(Self::SignatureHint(Box::new(SignatureHint::arbitrary(u)?)))
67256 }
67257 TypeVariant::NodeId => Ok(Self::NodeId(Box::new(NodeId::arbitrary(u)?))),
67258 TypeVariant::AccountId => Ok(Self::AccountId(Box::new(AccountId::arbitrary(u)?))),
67259 TypeVariant::ContractId => Ok(Self::ContractId(Box::new(ContractId::arbitrary(u)?))),
67260 TypeVariant::Curve25519Secret => Ok(Self::Curve25519Secret(Box::new(
67261 Curve25519Secret::arbitrary(u)?,
67262 ))),
67263 TypeVariant::Curve25519Public => Ok(Self::Curve25519Public(Box::new(
67264 Curve25519Public::arbitrary(u)?,
67265 ))),
67266 TypeVariant::HmacSha256Key => {
67267 Ok(Self::HmacSha256Key(Box::new(HmacSha256Key::arbitrary(u)?)))
67268 }
67269 TypeVariant::HmacSha256Mac => {
67270 Ok(Self::HmacSha256Mac(Box::new(HmacSha256Mac::arbitrary(u)?)))
67271 }
67272 TypeVariant::ShortHashSeed => {
67273 Ok(Self::ShortHashSeed(Box::new(ShortHashSeed::arbitrary(u)?)))
67274 }
67275 TypeVariant::BinaryFuseFilterType => Ok(Self::BinaryFuseFilterType(Box::new(
67276 BinaryFuseFilterType::arbitrary(u)?,
67277 ))),
67278 TypeVariant::SerializedBinaryFuseFilter => Ok(Self::SerializedBinaryFuseFilter(
67279 Box::new(SerializedBinaryFuseFilter::arbitrary(u)?),
67280 )),
67281 TypeVariant::PoolId => Ok(Self::PoolId(Box::new(PoolId::arbitrary(u)?))),
67282 TypeVariant::ClaimableBalanceIdType => Ok(Self::ClaimableBalanceIdType(Box::new(
67283 ClaimableBalanceIdType::arbitrary(u)?,
67284 ))),
67285 TypeVariant::ClaimableBalanceId => Ok(Self::ClaimableBalanceId(Box::new(
67286 ClaimableBalanceId::arbitrary(u)?,
67287 ))),
67288 }
67289 }
67290
67291 #[cfg(feature = "alloc")]
67292 #[must_use]
67293 #[allow(clippy::too_many_lines)]
67294 pub fn default(v: TypeVariant) -> Self {
67295 match v {
67296 TypeVariant::Value => Self::Value(Box::default()),
67297 TypeVariant::ScpBallot => Self::ScpBallot(Box::default()),
67298 TypeVariant::ScpStatementType => Self::ScpStatementType(Box::default()),
67299 TypeVariant::ScpNomination => Self::ScpNomination(Box::default()),
67300 TypeVariant::ScpStatement => Self::ScpStatement(Box::default()),
67301 TypeVariant::ScpStatementPledges => Self::ScpStatementPledges(Box::default()),
67302 TypeVariant::ScpStatementPrepare => Self::ScpStatementPrepare(Box::default()),
67303 TypeVariant::ScpStatementConfirm => Self::ScpStatementConfirm(Box::default()),
67304 TypeVariant::ScpStatementExternalize => Self::ScpStatementExternalize(Box::default()),
67305 TypeVariant::ScpEnvelope => Self::ScpEnvelope(Box::default()),
67306 TypeVariant::ScpQuorumSet => Self::ScpQuorumSet(Box::default()),
67307 TypeVariant::ConfigSettingContractExecutionLanesV0 => {
67308 Self::ConfigSettingContractExecutionLanesV0(Box::default())
67309 }
67310 TypeVariant::ConfigSettingContractComputeV0 => {
67311 Self::ConfigSettingContractComputeV0(Box::default())
67312 }
67313 TypeVariant::ConfigSettingContractParallelComputeV0 => {
67314 Self::ConfigSettingContractParallelComputeV0(Box::default())
67315 }
67316 TypeVariant::ConfigSettingContractLedgerCostV0 => {
67317 Self::ConfigSettingContractLedgerCostV0(Box::default())
67318 }
67319 TypeVariant::ConfigSettingContractLedgerCostExtV0 => {
67320 Self::ConfigSettingContractLedgerCostExtV0(Box::default())
67321 }
67322 TypeVariant::ConfigSettingContractHistoricalDataV0 => {
67323 Self::ConfigSettingContractHistoricalDataV0(Box::default())
67324 }
67325 TypeVariant::ConfigSettingContractEventsV0 => {
67326 Self::ConfigSettingContractEventsV0(Box::default())
67327 }
67328 TypeVariant::ConfigSettingContractBandwidthV0 => {
67329 Self::ConfigSettingContractBandwidthV0(Box::default())
67330 }
67331 TypeVariant::ContractCostType => Self::ContractCostType(Box::default()),
67332 TypeVariant::ContractCostParamEntry => Self::ContractCostParamEntry(Box::default()),
67333 TypeVariant::StateArchivalSettings => Self::StateArchivalSettings(Box::default()),
67334 TypeVariant::EvictionIterator => Self::EvictionIterator(Box::default()),
67335 TypeVariant::ConfigSettingScpTiming => Self::ConfigSettingScpTiming(Box::default()),
67336 TypeVariant::ContractCostParams => Self::ContractCostParams(Box::default()),
67337 TypeVariant::ConfigSettingId => Self::ConfigSettingId(Box::default()),
67338 TypeVariant::ConfigSettingEntry => Self::ConfigSettingEntry(Box::default()),
67339 TypeVariant::ScEnvMetaKind => Self::ScEnvMetaKind(Box::default()),
67340 TypeVariant::ScEnvMetaEntry => Self::ScEnvMetaEntry(Box::default()),
67341 TypeVariant::ScEnvMetaEntryInterfaceVersion => {
67342 Self::ScEnvMetaEntryInterfaceVersion(Box::default())
67343 }
67344 TypeVariant::ScMetaV0 => Self::ScMetaV0(Box::default()),
67345 TypeVariant::ScMetaKind => Self::ScMetaKind(Box::default()),
67346 TypeVariant::ScMetaEntry => Self::ScMetaEntry(Box::default()),
67347 TypeVariant::ScSpecType => Self::ScSpecType(Box::default()),
67348 TypeVariant::ScSpecTypeOption => Self::ScSpecTypeOption(Box::default()),
67349 TypeVariant::ScSpecTypeResult => Self::ScSpecTypeResult(Box::default()),
67350 TypeVariant::ScSpecTypeVec => Self::ScSpecTypeVec(Box::default()),
67351 TypeVariant::ScSpecTypeMap => Self::ScSpecTypeMap(Box::default()),
67352 TypeVariant::ScSpecTypeTuple => Self::ScSpecTypeTuple(Box::default()),
67353 TypeVariant::ScSpecTypeBytesN => Self::ScSpecTypeBytesN(Box::default()),
67354 TypeVariant::ScSpecTypeUdt => Self::ScSpecTypeUdt(Box::default()),
67355 TypeVariant::ScSpecTypeDef => Self::ScSpecTypeDef(Box::default()),
67356 TypeVariant::ScSpecUdtStructFieldV0 => Self::ScSpecUdtStructFieldV0(Box::default()),
67357 TypeVariant::ScSpecUdtStructV0 => Self::ScSpecUdtStructV0(Box::default()),
67358 TypeVariant::ScSpecUdtUnionCaseVoidV0 => Self::ScSpecUdtUnionCaseVoidV0(Box::default()),
67359 TypeVariant::ScSpecUdtUnionCaseTupleV0 => {
67360 Self::ScSpecUdtUnionCaseTupleV0(Box::default())
67361 }
67362 TypeVariant::ScSpecUdtUnionCaseV0Kind => Self::ScSpecUdtUnionCaseV0Kind(Box::default()),
67363 TypeVariant::ScSpecUdtUnionCaseV0 => Self::ScSpecUdtUnionCaseV0(Box::default()),
67364 TypeVariant::ScSpecUdtUnionV0 => Self::ScSpecUdtUnionV0(Box::default()),
67365 TypeVariant::ScSpecUdtEnumCaseV0 => Self::ScSpecUdtEnumCaseV0(Box::default()),
67366 TypeVariant::ScSpecUdtEnumV0 => Self::ScSpecUdtEnumV0(Box::default()),
67367 TypeVariant::ScSpecUdtErrorEnumCaseV0 => Self::ScSpecUdtErrorEnumCaseV0(Box::default()),
67368 TypeVariant::ScSpecUdtErrorEnumV0 => Self::ScSpecUdtErrorEnumV0(Box::default()),
67369 TypeVariant::ScSpecFunctionInputV0 => Self::ScSpecFunctionInputV0(Box::default()),
67370 TypeVariant::ScSpecFunctionV0 => Self::ScSpecFunctionV0(Box::default()),
67371 TypeVariant::ScSpecEventParamLocationV0 => {
67372 Self::ScSpecEventParamLocationV0(Box::default())
67373 }
67374 TypeVariant::ScSpecEventParamV0 => Self::ScSpecEventParamV0(Box::default()),
67375 TypeVariant::ScSpecEventDataFormat => Self::ScSpecEventDataFormat(Box::default()),
67376 TypeVariant::ScSpecEventV0 => Self::ScSpecEventV0(Box::default()),
67377 TypeVariant::ScSpecEntryKind => Self::ScSpecEntryKind(Box::default()),
67378 TypeVariant::ScSpecEntry => Self::ScSpecEntry(Box::default()),
67379 TypeVariant::ScValType => Self::ScValType(Box::default()),
67380 TypeVariant::ScErrorType => Self::ScErrorType(Box::default()),
67381 TypeVariant::ScErrorCode => Self::ScErrorCode(Box::default()),
67382 TypeVariant::ScError => Self::ScError(Box::default()),
67383 TypeVariant::UInt128Parts => Self::UInt128Parts(Box::default()),
67384 TypeVariant::Int128Parts => Self::Int128Parts(Box::default()),
67385 TypeVariant::UInt256Parts => Self::UInt256Parts(Box::default()),
67386 TypeVariant::Int256Parts => Self::Int256Parts(Box::default()),
67387 TypeVariant::ContractExecutableType => Self::ContractExecutableType(Box::default()),
67388 TypeVariant::ContractExecutable => Self::ContractExecutable(Box::default()),
67389 TypeVariant::ScAddressType => Self::ScAddressType(Box::default()),
67390 TypeVariant::MuxedEd25519Account => Self::MuxedEd25519Account(Box::default()),
67391 TypeVariant::ScAddress => Self::ScAddress(Box::default()),
67392 TypeVariant::ScVec => Self::ScVec(Box::default()),
67393 TypeVariant::ScMap => Self::ScMap(Box::default()),
67394 TypeVariant::ScBytes => Self::ScBytes(Box::default()),
67395 TypeVariant::ScString => Self::ScString(Box::default()),
67396 TypeVariant::ScSymbol => Self::ScSymbol(Box::default()),
67397 TypeVariant::ScNonceKey => Self::ScNonceKey(Box::default()),
67398 TypeVariant::ScContractInstance => Self::ScContractInstance(Box::default()),
67399 TypeVariant::ScVal => Self::ScVal(Box::default()),
67400 TypeVariant::ScMapEntry => Self::ScMapEntry(Box::default()),
67401 TypeVariant::LedgerCloseMetaBatch => Self::LedgerCloseMetaBatch(Box::default()),
67402 TypeVariant::StoredTransactionSet => Self::StoredTransactionSet(Box::default()),
67403 TypeVariant::StoredDebugTransactionSet => {
67404 Self::StoredDebugTransactionSet(Box::default())
67405 }
67406 TypeVariant::PersistedScpStateV0 => Self::PersistedScpStateV0(Box::default()),
67407 TypeVariant::PersistedScpStateV1 => Self::PersistedScpStateV1(Box::default()),
67408 TypeVariant::PersistedScpState => Self::PersistedScpState(Box::default()),
67409 TypeVariant::Thresholds => Self::Thresholds(Box::default()),
67410 TypeVariant::String32 => Self::String32(Box::default()),
67411 TypeVariant::String64 => Self::String64(Box::default()),
67412 TypeVariant::SequenceNumber => Self::SequenceNumber(Box::default()),
67413 TypeVariant::DataValue => Self::DataValue(Box::default()),
67414 TypeVariant::AssetCode4 => Self::AssetCode4(Box::default()),
67415 TypeVariant::AssetCode12 => Self::AssetCode12(Box::default()),
67416 TypeVariant::AssetType => Self::AssetType(Box::default()),
67417 TypeVariant::AssetCode => Self::AssetCode(Box::default()),
67418 TypeVariant::AlphaNum4 => Self::AlphaNum4(Box::default()),
67419 TypeVariant::AlphaNum12 => Self::AlphaNum12(Box::default()),
67420 TypeVariant::Asset => Self::Asset(Box::default()),
67421 TypeVariant::Price => Self::Price(Box::default()),
67422 TypeVariant::Liabilities => Self::Liabilities(Box::default()),
67423 TypeVariant::ThresholdIndexes => Self::ThresholdIndexes(Box::default()),
67424 TypeVariant::LedgerEntryType => Self::LedgerEntryType(Box::default()),
67425 TypeVariant::Signer => Self::Signer(Box::default()),
67426 TypeVariant::AccountFlags => Self::AccountFlags(Box::default()),
67427 TypeVariant::SponsorshipDescriptor => Self::SponsorshipDescriptor(Box::default()),
67428 TypeVariant::AccountEntryExtensionV3 => Self::AccountEntryExtensionV3(Box::default()),
67429 TypeVariant::AccountEntryExtensionV2 => Self::AccountEntryExtensionV2(Box::default()),
67430 TypeVariant::AccountEntryExtensionV2Ext => {
67431 Self::AccountEntryExtensionV2Ext(Box::default())
67432 }
67433 TypeVariant::AccountEntryExtensionV1 => Self::AccountEntryExtensionV1(Box::default()),
67434 TypeVariant::AccountEntryExtensionV1Ext => {
67435 Self::AccountEntryExtensionV1Ext(Box::default())
67436 }
67437 TypeVariant::AccountEntry => Self::AccountEntry(Box::default()),
67438 TypeVariant::AccountEntryExt => Self::AccountEntryExt(Box::default()),
67439 TypeVariant::TrustLineFlags => Self::TrustLineFlags(Box::default()),
67440 TypeVariant::LiquidityPoolType => Self::LiquidityPoolType(Box::default()),
67441 TypeVariant::TrustLineAsset => Self::TrustLineAsset(Box::default()),
67442 TypeVariant::TrustLineEntryExtensionV2 => {
67443 Self::TrustLineEntryExtensionV2(Box::default())
67444 }
67445 TypeVariant::TrustLineEntryExtensionV2Ext => {
67446 Self::TrustLineEntryExtensionV2Ext(Box::default())
67447 }
67448 TypeVariant::TrustLineEntry => Self::TrustLineEntry(Box::default()),
67449 TypeVariant::TrustLineEntryExt => Self::TrustLineEntryExt(Box::default()),
67450 TypeVariant::TrustLineEntryV1 => Self::TrustLineEntryV1(Box::default()),
67451 TypeVariant::TrustLineEntryV1Ext => Self::TrustLineEntryV1Ext(Box::default()),
67452 TypeVariant::OfferEntryFlags => Self::OfferEntryFlags(Box::default()),
67453 TypeVariant::OfferEntry => Self::OfferEntry(Box::default()),
67454 TypeVariant::OfferEntryExt => Self::OfferEntryExt(Box::default()),
67455 TypeVariant::DataEntry => Self::DataEntry(Box::default()),
67456 TypeVariant::DataEntryExt => Self::DataEntryExt(Box::default()),
67457 TypeVariant::ClaimPredicateType => Self::ClaimPredicateType(Box::default()),
67458 TypeVariant::ClaimPredicate => Self::ClaimPredicate(Box::default()),
67459 TypeVariant::ClaimantType => Self::ClaimantType(Box::default()),
67460 TypeVariant::Claimant => Self::Claimant(Box::default()),
67461 TypeVariant::ClaimantV0 => Self::ClaimantV0(Box::default()),
67462 TypeVariant::ClaimableBalanceFlags => Self::ClaimableBalanceFlags(Box::default()),
67463 TypeVariant::ClaimableBalanceEntryExtensionV1 => {
67464 Self::ClaimableBalanceEntryExtensionV1(Box::default())
67465 }
67466 TypeVariant::ClaimableBalanceEntryExtensionV1Ext => {
67467 Self::ClaimableBalanceEntryExtensionV1Ext(Box::default())
67468 }
67469 TypeVariant::ClaimableBalanceEntry => Self::ClaimableBalanceEntry(Box::default()),
67470 TypeVariant::ClaimableBalanceEntryExt => Self::ClaimableBalanceEntryExt(Box::default()),
67471 TypeVariant::LiquidityPoolConstantProductParameters => {
67472 Self::LiquidityPoolConstantProductParameters(Box::default())
67473 }
67474 TypeVariant::LiquidityPoolEntry => Self::LiquidityPoolEntry(Box::default()),
67475 TypeVariant::LiquidityPoolEntryBody => Self::LiquidityPoolEntryBody(Box::default()),
67476 TypeVariant::LiquidityPoolEntryConstantProduct => {
67477 Self::LiquidityPoolEntryConstantProduct(Box::default())
67478 }
67479 TypeVariant::ContractDataDurability => Self::ContractDataDurability(Box::default()),
67480 TypeVariant::ContractDataEntry => Self::ContractDataEntry(Box::default()),
67481 TypeVariant::ContractCodeCostInputs => Self::ContractCodeCostInputs(Box::default()),
67482 TypeVariant::ContractCodeEntry => Self::ContractCodeEntry(Box::default()),
67483 TypeVariant::ContractCodeEntryExt => Self::ContractCodeEntryExt(Box::default()),
67484 TypeVariant::ContractCodeEntryV1 => Self::ContractCodeEntryV1(Box::default()),
67485 TypeVariant::TtlEntry => Self::TtlEntry(Box::default()),
67486 TypeVariant::LedgerEntryExtensionV1 => Self::LedgerEntryExtensionV1(Box::default()),
67487 TypeVariant::LedgerEntryExtensionV1Ext => {
67488 Self::LedgerEntryExtensionV1Ext(Box::default())
67489 }
67490 TypeVariant::LedgerEntry => Self::LedgerEntry(Box::default()),
67491 TypeVariant::LedgerEntryData => Self::LedgerEntryData(Box::default()),
67492 TypeVariant::LedgerEntryExt => Self::LedgerEntryExt(Box::default()),
67493 TypeVariant::LedgerKey => Self::LedgerKey(Box::default()),
67494 TypeVariant::LedgerKeyAccount => Self::LedgerKeyAccount(Box::default()),
67495 TypeVariant::LedgerKeyTrustLine => Self::LedgerKeyTrustLine(Box::default()),
67496 TypeVariant::LedgerKeyOffer => Self::LedgerKeyOffer(Box::default()),
67497 TypeVariant::LedgerKeyData => Self::LedgerKeyData(Box::default()),
67498 TypeVariant::LedgerKeyClaimableBalance => {
67499 Self::LedgerKeyClaimableBalance(Box::default())
67500 }
67501 TypeVariant::LedgerKeyLiquidityPool => Self::LedgerKeyLiquidityPool(Box::default()),
67502 TypeVariant::LedgerKeyContractData => Self::LedgerKeyContractData(Box::default()),
67503 TypeVariant::LedgerKeyContractCode => Self::LedgerKeyContractCode(Box::default()),
67504 TypeVariant::LedgerKeyConfigSetting => Self::LedgerKeyConfigSetting(Box::default()),
67505 TypeVariant::LedgerKeyTtl => Self::LedgerKeyTtl(Box::default()),
67506 TypeVariant::EnvelopeType => Self::EnvelopeType(Box::default()),
67507 TypeVariant::BucketListType => Self::BucketListType(Box::default()),
67508 TypeVariant::BucketEntryType => Self::BucketEntryType(Box::default()),
67509 TypeVariant::HotArchiveBucketEntryType => {
67510 Self::HotArchiveBucketEntryType(Box::default())
67511 }
67512 TypeVariant::BucketMetadata => Self::BucketMetadata(Box::default()),
67513 TypeVariant::BucketMetadataExt => Self::BucketMetadataExt(Box::default()),
67514 TypeVariant::BucketEntry => Self::BucketEntry(Box::default()),
67515 TypeVariant::HotArchiveBucketEntry => Self::HotArchiveBucketEntry(Box::default()),
67516 TypeVariant::UpgradeType => Self::UpgradeType(Box::default()),
67517 TypeVariant::StellarValueType => Self::StellarValueType(Box::default()),
67518 TypeVariant::LedgerCloseValueSignature => {
67519 Self::LedgerCloseValueSignature(Box::default())
67520 }
67521 TypeVariant::StellarValue => Self::StellarValue(Box::default()),
67522 TypeVariant::StellarValueExt => Self::StellarValueExt(Box::default()),
67523 TypeVariant::LedgerHeaderFlags => Self::LedgerHeaderFlags(Box::default()),
67524 TypeVariant::LedgerHeaderExtensionV1 => Self::LedgerHeaderExtensionV1(Box::default()),
67525 TypeVariant::LedgerHeaderExtensionV1Ext => {
67526 Self::LedgerHeaderExtensionV1Ext(Box::default())
67527 }
67528 TypeVariant::LedgerHeader => Self::LedgerHeader(Box::default()),
67529 TypeVariant::LedgerHeaderExt => Self::LedgerHeaderExt(Box::default()),
67530 TypeVariant::LedgerUpgradeType => Self::LedgerUpgradeType(Box::default()),
67531 TypeVariant::ConfigUpgradeSetKey => Self::ConfigUpgradeSetKey(Box::default()),
67532 TypeVariant::LedgerUpgrade => Self::LedgerUpgrade(Box::default()),
67533 TypeVariant::ConfigUpgradeSet => Self::ConfigUpgradeSet(Box::default()),
67534 TypeVariant::TxSetComponentType => Self::TxSetComponentType(Box::default()),
67535 TypeVariant::DependentTxCluster => Self::DependentTxCluster(Box::default()),
67536 TypeVariant::ParallelTxExecutionStage => Self::ParallelTxExecutionStage(Box::default()),
67537 TypeVariant::ParallelTxsComponent => Self::ParallelTxsComponent(Box::default()),
67538 TypeVariant::TxSetComponent => Self::TxSetComponent(Box::default()),
67539 TypeVariant::TxSetComponentTxsMaybeDiscountedFee => {
67540 Self::TxSetComponentTxsMaybeDiscountedFee(Box::default())
67541 }
67542 TypeVariant::TransactionPhase => Self::TransactionPhase(Box::default()),
67543 TypeVariant::TransactionSet => Self::TransactionSet(Box::default()),
67544 TypeVariant::TransactionSetV1 => Self::TransactionSetV1(Box::default()),
67545 TypeVariant::GeneralizedTransactionSet => {
67546 Self::GeneralizedTransactionSet(Box::default())
67547 }
67548 TypeVariant::TransactionResultPair => Self::TransactionResultPair(Box::default()),
67549 TypeVariant::TransactionResultSet => Self::TransactionResultSet(Box::default()),
67550 TypeVariant::TransactionHistoryEntry => Self::TransactionHistoryEntry(Box::default()),
67551 TypeVariant::TransactionHistoryEntryExt => {
67552 Self::TransactionHistoryEntryExt(Box::default())
67553 }
67554 TypeVariant::TransactionHistoryResultEntry => {
67555 Self::TransactionHistoryResultEntry(Box::default())
67556 }
67557 TypeVariant::TransactionHistoryResultEntryExt => {
67558 Self::TransactionHistoryResultEntryExt(Box::default())
67559 }
67560 TypeVariant::LedgerHeaderHistoryEntry => Self::LedgerHeaderHistoryEntry(Box::default()),
67561 TypeVariant::LedgerHeaderHistoryEntryExt => {
67562 Self::LedgerHeaderHistoryEntryExt(Box::default())
67563 }
67564 TypeVariant::LedgerScpMessages => Self::LedgerScpMessages(Box::default()),
67565 TypeVariant::ScpHistoryEntryV0 => Self::ScpHistoryEntryV0(Box::default()),
67566 TypeVariant::ScpHistoryEntry => Self::ScpHistoryEntry(Box::default()),
67567 TypeVariant::LedgerEntryChangeType => Self::LedgerEntryChangeType(Box::default()),
67568 TypeVariant::LedgerEntryChange => Self::LedgerEntryChange(Box::default()),
67569 TypeVariant::LedgerEntryChanges => Self::LedgerEntryChanges(Box::default()),
67570 TypeVariant::OperationMeta => Self::OperationMeta(Box::default()),
67571 TypeVariant::TransactionMetaV1 => Self::TransactionMetaV1(Box::default()),
67572 TypeVariant::TransactionMetaV2 => Self::TransactionMetaV2(Box::default()),
67573 TypeVariant::ContractEventType => Self::ContractEventType(Box::default()),
67574 TypeVariant::ContractEvent => Self::ContractEvent(Box::default()),
67575 TypeVariant::ContractEventBody => Self::ContractEventBody(Box::default()),
67576 TypeVariant::ContractEventV0 => Self::ContractEventV0(Box::default()),
67577 TypeVariant::DiagnosticEvent => Self::DiagnosticEvent(Box::default()),
67578 TypeVariant::SorobanTransactionMetaExtV1 => {
67579 Self::SorobanTransactionMetaExtV1(Box::default())
67580 }
67581 TypeVariant::SorobanTransactionMetaExt => {
67582 Self::SorobanTransactionMetaExt(Box::default())
67583 }
67584 TypeVariant::SorobanTransactionMeta => Self::SorobanTransactionMeta(Box::default()),
67585 TypeVariant::TransactionMetaV3 => Self::TransactionMetaV3(Box::default()),
67586 TypeVariant::OperationMetaV2 => Self::OperationMetaV2(Box::default()),
67587 TypeVariant::SorobanTransactionMetaV2 => Self::SorobanTransactionMetaV2(Box::default()),
67588 TypeVariant::TransactionEventStage => Self::TransactionEventStage(Box::default()),
67589 TypeVariant::TransactionEvent => Self::TransactionEvent(Box::default()),
67590 TypeVariant::TransactionMetaV4 => Self::TransactionMetaV4(Box::default()),
67591 TypeVariant::InvokeHostFunctionSuccessPreImage => {
67592 Self::InvokeHostFunctionSuccessPreImage(Box::default())
67593 }
67594 TypeVariant::TransactionMeta => Self::TransactionMeta(Box::default()),
67595 TypeVariant::TransactionResultMeta => Self::TransactionResultMeta(Box::default()),
67596 TypeVariant::TransactionResultMetaV1 => Self::TransactionResultMetaV1(Box::default()),
67597 TypeVariant::UpgradeEntryMeta => Self::UpgradeEntryMeta(Box::default()),
67598 TypeVariant::LedgerCloseMetaV0 => Self::LedgerCloseMetaV0(Box::default()),
67599 TypeVariant::LedgerCloseMetaExtV1 => Self::LedgerCloseMetaExtV1(Box::default()),
67600 TypeVariant::LedgerCloseMetaExt => Self::LedgerCloseMetaExt(Box::default()),
67601 TypeVariant::LedgerCloseMetaV1 => Self::LedgerCloseMetaV1(Box::default()),
67602 TypeVariant::LedgerCloseMetaV2 => Self::LedgerCloseMetaV2(Box::default()),
67603 TypeVariant::LedgerCloseMeta => Self::LedgerCloseMeta(Box::default()),
67604 TypeVariant::ErrorCode => Self::ErrorCode(Box::default()),
67605 TypeVariant::SError => Self::SError(Box::default()),
67606 TypeVariant::SendMore => Self::SendMore(Box::default()),
67607 TypeVariant::SendMoreExtended => Self::SendMoreExtended(Box::default()),
67608 TypeVariant::AuthCert => Self::AuthCert(Box::default()),
67609 TypeVariant::Hello => Self::Hello(Box::default()),
67610 TypeVariant::Auth => Self::Auth(Box::default()),
67611 TypeVariant::IpAddrType => Self::IpAddrType(Box::default()),
67612 TypeVariant::PeerAddress => Self::PeerAddress(Box::default()),
67613 TypeVariant::PeerAddressIp => Self::PeerAddressIp(Box::default()),
67614 TypeVariant::MessageType => Self::MessageType(Box::default()),
67615 TypeVariant::DontHave => Self::DontHave(Box::default()),
67616 TypeVariant::SurveyMessageCommandType => Self::SurveyMessageCommandType(Box::default()),
67617 TypeVariant::SurveyMessageResponseType => {
67618 Self::SurveyMessageResponseType(Box::default())
67619 }
67620 TypeVariant::TimeSlicedSurveyStartCollectingMessage => {
67621 Self::TimeSlicedSurveyStartCollectingMessage(Box::default())
67622 }
67623 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage => {
67624 Self::SignedTimeSlicedSurveyStartCollectingMessage(Box::default())
67625 }
67626 TypeVariant::TimeSlicedSurveyStopCollectingMessage => {
67627 Self::TimeSlicedSurveyStopCollectingMessage(Box::default())
67628 }
67629 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage => {
67630 Self::SignedTimeSlicedSurveyStopCollectingMessage(Box::default())
67631 }
67632 TypeVariant::SurveyRequestMessage => Self::SurveyRequestMessage(Box::default()),
67633 TypeVariant::TimeSlicedSurveyRequestMessage => {
67634 Self::TimeSlicedSurveyRequestMessage(Box::default())
67635 }
67636 TypeVariant::SignedTimeSlicedSurveyRequestMessage => {
67637 Self::SignedTimeSlicedSurveyRequestMessage(Box::default())
67638 }
67639 TypeVariant::EncryptedBody => Self::EncryptedBody(Box::default()),
67640 TypeVariant::SurveyResponseMessage => Self::SurveyResponseMessage(Box::default()),
67641 TypeVariant::TimeSlicedSurveyResponseMessage => {
67642 Self::TimeSlicedSurveyResponseMessage(Box::default())
67643 }
67644 TypeVariant::SignedTimeSlicedSurveyResponseMessage => {
67645 Self::SignedTimeSlicedSurveyResponseMessage(Box::default())
67646 }
67647 TypeVariant::PeerStats => Self::PeerStats(Box::default()),
67648 TypeVariant::TimeSlicedNodeData => Self::TimeSlicedNodeData(Box::default()),
67649 TypeVariant::TimeSlicedPeerData => Self::TimeSlicedPeerData(Box::default()),
67650 TypeVariant::TimeSlicedPeerDataList => Self::TimeSlicedPeerDataList(Box::default()),
67651 TypeVariant::TopologyResponseBodyV2 => Self::TopologyResponseBodyV2(Box::default()),
67652 TypeVariant::SurveyResponseBody => Self::SurveyResponseBody(Box::default()),
67653 TypeVariant::TxAdvertVector => Self::TxAdvertVector(Box::default()),
67654 TypeVariant::FloodAdvert => Self::FloodAdvert(Box::default()),
67655 TypeVariant::TxDemandVector => Self::TxDemandVector(Box::default()),
67656 TypeVariant::FloodDemand => Self::FloodDemand(Box::default()),
67657 TypeVariant::StellarMessage => Self::StellarMessage(Box::default()),
67658 TypeVariant::AuthenticatedMessage => Self::AuthenticatedMessage(Box::default()),
67659 TypeVariant::AuthenticatedMessageV0 => Self::AuthenticatedMessageV0(Box::default()),
67660 TypeVariant::LiquidityPoolParameters => Self::LiquidityPoolParameters(Box::default()),
67661 TypeVariant::MuxedAccount => Self::MuxedAccount(Box::default()),
67662 TypeVariant::MuxedAccountMed25519 => Self::MuxedAccountMed25519(Box::default()),
67663 TypeVariant::DecoratedSignature => Self::DecoratedSignature(Box::default()),
67664 TypeVariant::OperationType => Self::OperationType(Box::default()),
67665 TypeVariant::CreateAccountOp => Self::CreateAccountOp(Box::default()),
67666 TypeVariant::PaymentOp => Self::PaymentOp(Box::default()),
67667 TypeVariant::PathPaymentStrictReceiveOp => {
67668 Self::PathPaymentStrictReceiveOp(Box::default())
67669 }
67670 TypeVariant::PathPaymentStrictSendOp => Self::PathPaymentStrictSendOp(Box::default()),
67671 TypeVariant::ManageSellOfferOp => Self::ManageSellOfferOp(Box::default()),
67672 TypeVariant::ManageBuyOfferOp => Self::ManageBuyOfferOp(Box::default()),
67673 TypeVariant::CreatePassiveSellOfferOp => Self::CreatePassiveSellOfferOp(Box::default()),
67674 TypeVariant::SetOptionsOp => Self::SetOptionsOp(Box::default()),
67675 TypeVariant::ChangeTrustAsset => Self::ChangeTrustAsset(Box::default()),
67676 TypeVariant::ChangeTrustOp => Self::ChangeTrustOp(Box::default()),
67677 TypeVariant::AllowTrustOp => Self::AllowTrustOp(Box::default()),
67678 TypeVariant::ManageDataOp => Self::ManageDataOp(Box::default()),
67679 TypeVariant::BumpSequenceOp => Self::BumpSequenceOp(Box::default()),
67680 TypeVariant::CreateClaimableBalanceOp => Self::CreateClaimableBalanceOp(Box::default()),
67681 TypeVariant::ClaimClaimableBalanceOp => Self::ClaimClaimableBalanceOp(Box::default()),
67682 TypeVariant::BeginSponsoringFutureReservesOp => {
67683 Self::BeginSponsoringFutureReservesOp(Box::default())
67684 }
67685 TypeVariant::RevokeSponsorshipType => Self::RevokeSponsorshipType(Box::default()),
67686 TypeVariant::RevokeSponsorshipOp => Self::RevokeSponsorshipOp(Box::default()),
67687 TypeVariant::RevokeSponsorshipOpSigner => {
67688 Self::RevokeSponsorshipOpSigner(Box::default())
67689 }
67690 TypeVariant::ClawbackOp => Self::ClawbackOp(Box::default()),
67691 TypeVariant::ClawbackClaimableBalanceOp => {
67692 Self::ClawbackClaimableBalanceOp(Box::default())
67693 }
67694 TypeVariant::SetTrustLineFlagsOp => Self::SetTrustLineFlagsOp(Box::default()),
67695 TypeVariant::LiquidityPoolDepositOp => Self::LiquidityPoolDepositOp(Box::default()),
67696 TypeVariant::LiquidityPoolWithdrawOp => Self::LiquidityPoolWithdrawOp(Box::default()),
67697 TypeVariant::HostFunctionType => Self::HostFunctionType(Box::default()),
67698 TypeVariant::ContractIdPreimageType => Self::ContractIdPreimageType(Box::default()),
67699 TypeVariant::ContractIdPreimage => Self::ContractIdPreimage(Box::default()),
67700 TypeVariant::ContractIdPreimageFromAddress => {
67701 Self::ContractIdPreimageFromAddress(Box::default())
67702 }
67703 TypeVariant::CreateContractArgs => Self::CreateContractArgs(Box::default()),
67704 TypeVariant::CreateContractArgsV2 => Self::CreateContractArgsV2(Box::default()),
67705 TypeVariant::InvokeContractArgs => Self::InvokeContractArgs(Box::default()),
67706 TypeVariant::HostFunction => Self::HostFunction(Box::default()),
67707 TypeVariant::SorobanAuthorizedFunctionType => {
67708 Self::SorobanAuthorizedFunctionType(Box::default())
67709 }
67710 TypeVariant::SorobanAuthorizedFunction => {
67711 Self::SorobanAuthorizedFunction(Box::default())
67712 }
67713 TypeVariant::SorobanAuthorizedInvocation => {
67714 Self::SorobanAuthorizedInvocation(Box::default())
67715 }
67716 TypeVariant::SorobanAddressCredentials => {
67717 Self::SorobanAddressCredentials(Box::default())
67718 }
67719 TypeVariant::SorobanCredentialsType => Self::SorobanCredentialsType(Box::default()),
67720 TypeVariant::SorobanCredentials => Self::SorobanCredentials(Box::default()),
67721 TypeVariant::SorobanAuthorizationEntry => {
67722 Self::SorobanAuthorizationEntry(Box::default())
67723 }
67724 TypeVariant::SorobanAuthorizationEntries => {
67725 Self::SorobanAuthorizationEntries(Box::default())
67726 }
67727 TypeVariant::InvokeHostFunctionOp => Self::InvokeHostFunctionOp(Box::default()),
67728 TypeVariant::ExtendFootprintTtlOp => Self::ExtendFootprintTtlOp(Box::default()),
67729 TypeVariant::RestoreFootprintOp => Self::RestoreFootprintOp(Box::default()),
67730 TypeVariant::Operation => Self::Operation(Box::default()),
67731 TypeVariant::OperationBody => Self::OperationBody(Box::default()),
67732 TypeVariant::HashIdPreimage => Self::HashIdPreimage(Box::default()),
67733 TypeVariant::HashIdPreimageOperationId => {
67734 Self::HashIdPreimageOperationId(Box::default())
67735 }
67736 TypeVariant::HashIdPreimageRevokeId => Self::HashIdPreimageRevokeId(Box::default()),
67737 TypeVariant::HashIdPreimageContractId => Self::HashIdPreimageContractId(Box::default()),
67738 TypeVariant::HashIdPreimageSorobanAuthorization => {
67739 Self::HashIdPreimageSorobanAuthorization(Box::default())
67740 }
67741 TypeVariant::MemoType => Self::MemoType(Box::default()),
67742 TypeVariant::Memo => Self::Memo(Box::default()),
67743 TypeVariant::TimeBounds => Self::TimeBounds(Box::default()),
67744 TypeVariant::LedgerBounds => Self::LedgerBounds(Box::default()),
67745 TypeVariant::PreconditionsV2 => Self::PreconditionsV2(Box::default()),
67746 TypeVariant::PreconditionType => Self::PreconditionType(Box::default()),
67747 TypeVariant::Preconditions => Self::Preconditions(Box::default()),
67748 TypeVariant::LedgerFootprint => Self::LedgerFootprint(Box::default()),
67749 TypeVariant::SorobanResources => Self::SorobanResources(Box::default()),
67750 TypeVariant::SorobanResourcesExtV0 => Self::SorobanResourcesExtV0(Box::default()),
67751 TypeVariant::SorobanTransactionData => Self::SorobanTransactionData(Box::default()),
67752 TypeVariant::SorobanTransactionDataExt => {
67753 Self::SorobanTransactionDataExt(Box::default())
67754 }
67755 TypeVariant::TransactionV0 => Self::TransactionV0(Box::default()),
67756 TypeVariant::TransactionV0Ext => Self::TransactionV0Ext(Box::default()),
67757 TypeVariant::TransactionV0Envelope => Self::TransactionV0Envelope(Box::default()),
67758 TypeVariant::Transaction => Self::Transaction(Box::default()),
67759 TypeVariant::TransactionExt => Self::TransactionExt(Box::default()),
67760 TypeVariant::TransactionV1Envelope => Self::TransactionV1Envelope(Box::default()),
67761 TypeVariant::FeeBumpTransaction => Self::FeeBumpTransaction(Box::default()),
67762 TypeVariant::FeeBumpTransactionInnerTx => {
67763 Self::FeeBumpTransactionInnerTx(Box::default())
67764 }
67765 TypeVariant::FeeBumpTransactionExt => Self::FeeBumpTransactionExt(Box::default()),
67766 TypeVariant::FeeBumpTransactionEnvelope => {
67767 Self::FeeBumpTransactionEnvelope(Box::default())
67768 }
67769 TypeVariant::TransactionEnvelope => Self::TransactionEnvelope(Box::default()),
67770 TypeVariant::TransactionSignaturePayload => {
67771 Self::TransactionSignaturePayload(Box::default())
67772 }
67773 TypeVariant::TransactionSignaturePayloadTaggedTransaction => {
67774 Self::TransactionSignaturePayloadTaggedTransaction(Box::default())
67775 }
67776 TypeVariant::ClaimAtomType => Self::ClaimAtomType(Box::default()),
67777 TypeVariant::ClaimOfferAtomV0 => Self::ClaimOfferAtomV0(Box::default()),
67778 TypeVariant::ClaimOfferAtom => Self::ClaimOfferAtom(Box::default()),
67779 TypeVariant::ClaimLiquidityAtom => Self::ClaimLiquidityAtom(Box::default()),
67780 TypeVariant::ClaimAtom => Self::ClaimAtom(Box::default()),
67781 TypeVariant::CreateAccountResultCode => Self::CreateAccountResultCode(Box::default()),
67782 TypeVariant::CreateAccountResult => Self::CreateAccountResult(Box::default()),
67783 TypeVariant::PaymentResultCode => Self::PaymentResultCode(Box::default()),
67784 TypeVariant::PaymentResult => Self::PaymentResult(Box::default()),
67785 TypeVariant::PathPaymentStrictReceiveResultCode => {
67786 Self::PathPaymentStrictReceiveResultCode(Box::default())
67787 }
67788 TypeVariant::SimplePaymentResult => Self::SimplePaymentResult(Box::default()),
67789 TypeVariant::PathPaymentStrictReceiveResult => {
67790 Self::PathPaymentStrictReceiveResult(Box::default())
67791 }
67792 TypeVariant::PathPaymentStrictReceiveResultSuccess => {
67793 Self::PathPaymentStrictReceiveResultSuccess(Box::default())
67794 }
67795 TypeVariant::PathPaymentStrictSendResultCode => {
67796 Self::PathPaymentStrictSendResultCode(Box::default())
67797 }
67798 TypeVariant::PathPaymentStrictSendResult => {
67799 Self::PathPaymentStrictSendResult(Box::default())
67800 }
67801 TypeVariant::PathPaymentStrictSendResultSuccess => {
67802 Self::PathPaymentStrictSendResultSuccess(Box::default())
67803 }
67804 TypeVariant::ManageSellOfferResultCode => {
67805 Self::ManageSellOfferResultCode(Box::default())
67806 }
67807 TypeVariant::ManageOfferEffect => Self::ManageOfferEffect(Box::default()),
67808 TypeVariant::ManageOfferSuccessResult => Self::ManageOfferSuccessResult(Box::default()),
67809 TypeVariant::ManageOfferSuccessResultOffer => {
67810 Self::ManageOfferSuccessResultOffer(Box::default())
67811 }
67812 TypeVariant::ManageSellOfferResult => Self::ManageSellOfferResult(Box::default()),
67813 TypeVariant::ManageBuyOfferResultCode => Self::ManageBuyOfferResultCode(Box::default()),
67814 TypeVariant::ManageBuyOfferResult => Self::ManageBuyOfferResult(Box::default()),
67815 TypeVariant::SetOptionsResultCode => Self::SetOptionsResultCode(Box::default()),
67816 TypeVariant::SetOptionsResult => Self::SetOptionsResult(Box::default()),
67817 TypeVariant::ChangeTrustResultCode => Self::ChangeTrustResultCode(Box::default()),
67818 TypeVariant::ChangeTrustResult => Self::ChangeTrustResult(Box::default()),
67819 TypeVariant::AllowTrustResultCode => Self::AllowTrustResultCode(Box::default()),
67820 TypeVariant::AllowTrustResult => Self::AllowTrustResult(Box::default()),
67821 TypeVariant::AccountMergeResultCode => Self::AccountMergeResultCode(Box::default()),
67822 TypeVariant::AccountMergeResult => Self::AccountMergeResult(Box::default()),
67823 TypeVariant::InflationResultCode => Self::InflationResultCode(Box::default()),
67824 TypeVariant::InflationPayout => Self::InflationPayout(Box::default()),
67825 TypeVariant::InflationResult => Self::InflationResult(Box::default()),
67826 TypeVariant::ManageDataResultCode => Self::ManageDataResultCode(Box::default()),
67827 TypeVariant::ManageDataResult => Self::ManageDataResult(Box::default()),
67828 TypeVariant::BumpSequenceResultCode => Self::BumpSequenceResultCode(Box::default()),
67829 TypeVariant::BumpSequenceResult => Self::BumpSequenceResult(Box::default()),
67830 TypeVariant::CreateClaimableBalanceResultCode => {
67831 Self::CreateClaimableBalanceResultCode(Box::default())
67832 }
67833 TypeVariant::CreateClaimableBalanceResult => {
67834 Self::CreateClaimableBalanceResult(Box::default())
67835 }
67836 TypeVariant::ClaimClaimableBalanceResultCode => {
67837 Self::ClaimClaimableBalanceResultCode(Box::default())
67838 }
67839 TypeVariant::ClaimClaimableBalanceResult => {
67840 Self::ClaimClaimableBalanceResult(Box::default())
67841 }
67842 TypeVariant::BeginSponsoringFutureReservesResultCode => {
67843 Self::BeginSponsoringFutureReservesResultCode(Box::default())
67844 }
67845 TypeVariant::BeginSponsoringFutureReservesResult => {
67846 Self::BeginSponsoringFutureReservesResult(Box::default())
67847 }
67848 TypeVariant::EndSponsoringFutureReservesResultCode => {
67849 Self::EndSponsoringFutureReservesResultCode(Box::default())
67850 }
67851 TypeVariant::EndSponsoringFutureReservesResult => {
67852 Self::EndSponsoringFutureReservesResult(Box::default())
67853 }
67854 TypeVariant::RevokeSponsorshipResultCode => {
67855 Self::RevokeSponsorshipResultCode(Box::default())
67856 }
67857 TypeVariant::RevokeSponsorshipResult => Self::RevokeSponsorshipResult(Box::default()),
67858 TypeVariant::ClawbackResultCode => Self::ClawbackResultCode(Box::default()),
67859 TypeVariant::ClawbackResult => Self::ClawbackResult(Box::default()),
67860 TypeVariant::ClawbackClaimableBalanceResultCode => {
67861 Self::ClawbackClaimableBalanceResultCode(Box::default())
67862 }
67863 TypeVariant::ClawbackClaimableBalanceResult => {
67864 Self::ClawbackClaimableBalanceResult(Box::default())
67865 }
67866 TypeVariant::SetTrustLineFlagsResultCode => {
67867 Self::SetTrustLineFlagsResultCode(Box::default())
67868 }
67869 TypeVariant::SetTrustLineFlagsResult => Self::SetTrustLineFlagsResult(Box::default()),
67870 TypeVariant::LiquidityPoolDepositResultCode => {
67871 Self::LiquidityPoolDepositResultCode(Box::default())
67872 }
67873 TypeVariant::LiquidityPoolDepositResult => {
67874 Self::LiquidityPoolDepositResult(Box::default())
67875 }
67876 TypeVariant::LiquidityPoolWithdrawResultCode => {
67877 Self::LiquidityPoolWithdrawResultCode(Box::default())
67878 }
67879 TypeVariant::LiquidityPoolWithdrawResult => {
67880 Self::LiquidityPoolWithdrawResult(Box::default())
67881 }
67882 TypeVariant::InvokeHostFunctionResultCode => {
67883 Self::InvokeHostFunctionResultCode(Box::default())
67884 }
67885 TypeVariant::InvokeHostFunctionResult => Self::InvokeHostFunctionResult(Box::default()),
67886 TypeVariant::ExtendFootprintTtlResultCode => {
67887 Self::ExtendFootprintTtlResultCode(Box::default())
67888 }
67889 TypeVariant::ExtendFootprintTtlResult => Self::ExtendFootprintTtlResult(Box::default()),
67890 TypeVariant::RestoreFootprintResultCode => {
67891 Self::RestoreFootprintResultCode(Box::default())
67892 }
67893 TypeVariant::RestoreFootprintResult => Self::RestoreFootprintResult(Box::default()),
67894 TypeVariant::OperationResultCode => Self::OperationResultCode(Box::default()),
67895 TypeVariant::OperationResult => Self::OperationResult(Box::default()),
67896 TypeVariant::OperationResultTr => Self::OperationResultTr(Box::default()),
67897 TypeVariant::TransactionResultCode => Self::TransactionResultCode(Box::default()),
67898 TypeVariant::InnerTransactionResult => Self::InnerTransactionResult(Box::default()),
67899 TypeVariant::InnerTransactionResultResult => {
67900 Self::InnerTransactionResultResult(Box::default())
67901 }
67902 TypeVariant::InnerTransactionResultExt => {
67903 Self::InnerTransactionResultExt(Box::default())
67904 }
67905 TypeVariant::InnerTransactionResultPair => {
67906 Self::InnerTransactionResultPair(Box::default())
67907 }
67908 TypeVariant::TransactionResult => Self::TransactionResult(Box::default()),
67909 TypeVariant::TransactionResultResult => Self::TransactionResultResult(Box::default()),
67910 TypeVariant::TransactionResultExt => Self::TransactionResultExt(Box::default()),
67911 TypeVariant::Hash => Self::Hash(Box::default()),
67912 TypeVariant::Uint256 => Self::Uint256(Box::default()),
67913 TypeVariant::Uint32 => Self::Uint32(Box::default()),
67914 TypeVariant::Int32 => Self::Int32(Box::default()),
67915 TypeVariant::Uint64 => Self::Uint64(Box::default()),
67916 TypeVariant::Int64 => Self::Int64(Box::default()),
67917 TypeVariant::TimePoint => Self::TimePoint(Box::default()),
67918 TypeVariant::Duration => Self::Duration(Box::default()),
67919 TypeVariant::ExtensionPoint => Self::ExtensionPoint(Box::default()),
67920 TypeVariant::CryptoKeyType => Self::CryptoKeyType(Box::default()),
67921 TypeVariant::PublicKeyType => Self::PublicKeyType(Box::default()),
67922 TypeVariant::SignerKeyType => Self::SignerKeyType(Box::default()),
67923 TypeVariant::PublicKey => Self::PublicKey(Box::default()),
67924 TypeVariant::SignerKey => Self::SignerKey(Box::default()),
67925 TypeVariant::SignerKeyEd25519SignedPayload => {
67926 Self::SignerKeyEd25519SignedPayload(Box::default())
67927 }
67928 TypeVariant::Signature => Self::Signature(Box::default()),
67929 TypeVariant::SignatureHint => Self::SignatureHint(Box::default()),
67930 TypeVariant::NodeId => Self::NodeId(Box::default()),
67931 TypeVariant::AccountId => Self::AccountId(Box::default()),
67932 TypeVariant::ContractId => Self::ContractId(Box::default()),
67933 TypeVariant::Curve25519Secret => Self::Curve25519Secret(Box::default()),
67934 TypeVariant::Curve25519Public => Self::Curve25519Public(Box::default()),
67935 TypeVariant::HmacSha256Key => Self::HmacSha256Key(Box::default()),
67936 TypeVariant::HmacSha256Mac => Self::HmacSha256Mac(Box::default()),
67937 TypeVariant::ShortHashSeed => Self::ShortHashSeed(Box::default()),
67938 TypeVariant::BinaryFuseFilterType => Self::BinaryFuseFilterType(Box::default()),
67939 TypeVariant::SerializedBinaryFuseFilter => {
67940 Self::SerializedBinaryFuseFilter(Box::default())
67941 }
67942 TypeVariant::PoolId => Self::PoolId(Box::default()),
67943 TypeVariant::ClaimableBalanceIdType => Self::ClaimableBalanceIdType(Box::default()),
67944 TypeVariant::ClaimableBalanceId => Self::ClaimableBalanceId(Box::default()),
67945 }
67946 }
67947
67948 #[cfg(feature = "alloc")]
67949 #[must_use]
67950 #[allow(clippy::too_many_lines)]
67951 pub fn value(&self) -> &dyn core::any::Any {
67952 #[allow(clippy::match_same_arms)]
67953 match self {
67954 Self::Value(ref v) => v.as_ref(),
67955 Self::ScpBallot(ref v) => v.as_ref(),
67956 Self::ScpStatementType(ref v) => v.as_ref(),
67957 Self::ScpNomination(ref v) => v.as_ref(),
67958 Self::ScpStatement(ref v) => v.as_ref(),
67959 Self::ScpStatementPledges(ref v) => v.as_ref(),
67960 Self::ScpStatementPrepare(ref v) => v.as_ref(),
67961 Self::ScpStatementConfirm(ref v) => v.as_ref(),
67962 Self::ScpStatementExternalize(ref v) => v.as_ref(),
67963 Self::ScpEnvelope(ref v) => v.as_ref(),
67964 Self::ScpQuorumSet(ref v) => v.as_ref(),
67965 Self::ConfigSettingContractExecutionLanesV0(ref v) => v.as_ref(),
67966 Self::ConfigSettingContractComputeV0(ref v) => v.as_ref(),
67967 Self::ConfigSettingContractParallelComputeV0(ref v) => v.as_ref(),
67968 Self::ConfigSettingContractLedgerCostV0(ref v) => v.as_ref(),
67969 Self::ConfigSettingContractLedgerCostExtV0(ref v) => v.as_ref(),
67970 Self::ConfigSettingContractHistoricalDataV0(ref v) => v.as_ref(),
67971 Self::ConfigSettingContractEventsV0(ref v) => v.as_ref(),
67972 Self::ConfigSettingContractBandwidthV0(ref v) => v.as_ref(),
67973 Self::ContractCostType(ref v) => v.as_ref(),
67974 Self::ContractCostParamEntry(ref v) => v.as_ref(),
67975 Self::StateArchivalSettings(ref v) => v.as_ref(),
67976 Self::EvictionIterator(ref v) => v.as_ref(),
67977 Self::ConfigSettingScpTiming(ref v) => v.as_ref(),
67978 Self::ContractCostParams(ref v) => v.as_ref(),
67979 Self::ConfigSettingId(ref v) => v.as_ref(),
67980 Self::ConfigSettingEntry(ref v) => v.as_ref(),
67981 Self::ScEnvMetaKind(ref v) => v.as_ref(),
67982 Self::ScEnvMetaEntry(ref v) => v.as_ref(),
67983 Self::ScEnvMetaEntryInterfaceVersion(ref v) => v.as_ref(),
67984 Self::ScMetaV0(ref v) => v.as_ref(),
67985 Self::ScMetaKind(ref v) => v.as_ref(),
67986 Self::ScMetaEntry(ref v) => v.as_ref(),
67987 Self::ScSpecType(ref v) => v.as_ref(),
67988 Self::ScSpecTypeOption(ref v) => v.as_ref(),
67989 Self::ScSpecTypeResult(ref v) => v.as_ref(),
67990 Self::ScSpecTypeVec(ref v) => v.as_ref(),
67991 Self::ScSpecTypeMap(ref v) => v.as_ref(),
67992 Self::ScSpecTypeTuple(ref v) => v.as_ref(),
67993 Self::ScSpecTypeBytesN(ref v) => v.as_ref(),
67994 Self::ScSpecTypeUdt(ref v) => v.as_ref(),
67995 Self::ScSpecTypeDef(ref v) => v.as_ref(),
67996 Self::ScSpecUdtStructFieldV0(ref v) => v.as_ref(),
67997 Self::ScSpecUdtStructV0(ref v) => v.as_ref(),
67998 Self::ScSpecUdtUnionCaseVoidV0(ref v) => v.as_ref(),
67999 Self::ScSpecUdtUnionCaseTupleV0(ref v) => v.as_ref(),
68000 Self::ScSpecUdtUnionCaseV0Kind(ref v) => v.as_ref(),
68001 Self::ScSpecUdtUnionCaseV0(ref v) => v.as_ref(),
68002 Self::ScSpecUdtUnionV0(ref v) => v.as_ref(),
68003 Self::ScSpecUdtEnumCaseV0(ref v) => v.as_ref(),
68004 Self::ScSpecUdtEnumV0(ref v) => v.as_ref(),
68005 Self::ScSpecUdtErrorEnumCaseV0(ref v) => v.as_ref(),
68006 Self::ScSpecUdtErrorEnumV0(ref v) => v.as_ref(),
68007 Self::ScSpecFunctionInputV0(ref v) => v.as_ref(),
68008 Self::ScSpecFunctionV0(ref v) => v.as_ref(),
68009 Self::ScSpecEventParamLocationV0(ref v) => v.as_ref(),
68010 Self::ScSpecEventParamV0(ref v) => v.as_ref(),
68011 Self::ScSpecEventDataFormat(ref v) => v.as_ref(),
68012 Self::ScSpecEventV0(ref v) => v.as_ref(),
68013 Self::ScSpecEntryKind(ref v) => v.as_ref(),
68014 Self::ScSpecEntry(ref v) => v.as_ref(),
68015 Self::ScValType(ref v) => v.as_ref(),
68016 Self::ScErrorType(ref v) => v.as_ref(),
68017 Self::ScErrorCode(ref v) => v.as_ref(),
68018 Self::ScError(ref v) => v.as_ref(),
68019 Self::UInt128Parts(ref v) => v.as_ref(),
68020 Self::Int128Parts(ref v) => v.as_ref(),
68021 Self::UInt256Parts(ref v) => v.as_ref(),
68022 Self::Int256Parts(ref v) => v.as_ref(),
68023 Self::ContractExecutableType(ref v) => v.as_ref(),
68024 Self::ContractExecutable(ref v) => v.as_ref(),
68025 Self::ScAddressType(ref v) => v.as_ref(),
68026 Self::MuxedEd25519Account(ref v) => v.as_ref(),
68027 Self::ScAddress(ref v) => v.as_ref(),
68028 Self::ScVec(ref v) => v.as_ref(),
68029 Self::ScMap(ref v) => v.as_ref(),
68030 Self::ScBytes(ref v) => v.as_ref(),
68031 Self::ScString(ref v) => v.as_ref(),
68032 Self::ScSymbol(ref v) => v.as_ref(),
68033 Self::ScNonceKey(ref v) => v.as_ref(),
68034 Self::ScContractInstance(ref v) => v.as_ref(),
68035 Self::ScVal(ref v) => v.as_ref(),
68036 Self::ScMapEntry(ref v) => v.as_ref(),
68037 Self::LedgerCloseMetaBatch(ref v) => v.as_ref(),
68038 Self::StoredTransactionSet(ref v) => v.as_ref(),
68039 Self::StoredDebugTransactionSet(ref v) => v.as_ref(),
68040 Self::PersistedScpStateV0(ref v) => v.as_ref(),
68041 Self::PersistedScpStateV1(ref v) => v.as_ref(),
68042 Self::PersistedScpState(ref v) => v.as_ref(),
68043 Self::Thresholds(ref v) => v.as_ref(),
68044 Self::String32(ref v) => v.as_ref(),
68045 Self::String64(ref v) => v.as_ref(),
68046 Self::SequenceNumber(ref v) => v.as_ref(),
68047 Self::DataValue(ref v) => v.as_ref(),
68048 Self::AssetCode4(ref v) => v.as_ref(),
68049 Self::AssetCode12(ref v) => v.as_ref(),
68050 Self::AssetType(ref v) => v.as_ref(),
68051 Self::AssetCode(ref v) => v.as_ref(),
68052 Self::AlphaNum4(ref v) => v.as_ref(),
68053 Self::AlphaNum12(ref v) => v.as_ref(),
68054 Self::Asset(ref v) => v.as_ref(),
68055 Self::Price(ref v) => v.as_ref(),
68056 Self::Liabilities(ref v) => v.as_ref(),
68057 Self::ThresholdIndexes(ref v) => v.as_ref(),
68058 Self::LedgerEntryType(ref v) => v.as_ref(),
68059 Self::Signer(ref v) => v.as_ref(),
68060 Self::AccountFlags(ref v) => v.as_ref(),
68061 Self::SponsorshipDescriptor(ref v) => v.as_ref(),
68062 Self::AccountEntryExtensionV3(ref v) => v.as_ref(),
68063 Self::AccountEntryExtensionV2(ref v) => v.as_ref(),
68064 Self::AccountEntryExtensionV2Ext(ref v) => v.as_ref(),
68065 Self::AccountEntryExtensionV1(ref v) => v.as_ref(),
68066 Self::AccountEntryExtensionV1Ext(ref v) => v.as_ref(),
68067 Self::AccountEntry(ref v) => v.as_ref(),
68068 Self::AccountEntryExt(ref v) => v.as_ref(),
68069 Self::TrustLineFlags(ref v) => v.as_ref(),
68070 Self::LiquidityPoolType(ref v) => v.as_ref(),
68071 Self::TrustLineAsset(ref v) => v.as_ref(),
68072 Self::TrustLineEntryExtensionV2(ref v) => v.as_ref(),
68073 Self::TrustLineEntryExtensionV2Ext(ref v) => v.as_ref(),
68074 Self::TrustLineEntry(ref v) => v.as_ref(),
68075 Self::TrustLineEntryExt(ref v) => v.as_ref(),
68076 Self::TrustLineEntryV1(ref v) => v.as_ref(),
68077 Self::TrustLineEntryV1Ext(ref v) => v.as_ref(),
68078 Self::OfferEntryFlags(ref v) => v.as_ref(),
68079 Self::OfferEntry(ref v) => v.as_ref(),
68080 Self::OfferEntryExt(ref v) => v.as_ref(),
68081 Self::DataEntry(ref v) => v.as_ref(),
68082 Self::DataEntryExt(ref v) => v.as_ref(),
68083 Self::ClaimPredicateType(ref v) => v.as_ref(),
68084 Self::ClaimPredicate(ref v) => v.as_ref(),
68085 Self::ClaimantType(ref v) => v.as_ref(),
68086 Self::Claimant(ref v) => v.as_ref(),
68087 Self::ClaimantV0(ref v) => v.as_ref(),
68088 Self::ClaimableBalanceFlags(ref v) => v.as_ref(),
68089 Self::ClaimableBalanceEntryExtensionV1(ref v) => v.as_ref(),
68090 Self::ClaimableBalanceEntryExtensionV1Ext(ref v) => v.as_ref(),
68091 Self::ClaimableBalanceEntry(ref v) => v.as_ref(),
68092 Self::ClaimableBalanceEntryExt(ref v) => v.as_ref(),
68093 Self::LiquidityPoolConstantProductParameters(ref v) => v.as_ref(),
68094 Self::LiquidityPoolEntry(ref v) => v.as_ref(),
68095 Self::LiquidityPoolEntryBody(ref v) => v.as_ref(),
68096 Self::LiquidityPoolEntryConstantProduct(ref v) => v.as_ref(),
68097 Self::ContractDataDurability(ref v) => v.as_ref(),
68098 Self::ContractDataEntry(ref v) => v.as_ref(),
68099 Self::ContractCodeCostInputs(ref v) => v.as_ref(),
68100 Self::ContractCodeEntry(ref v) => v.as_ref(),
68101 Self::ContractCodeEntryExt(ref v) => v.as_ref(),
68102 Self::ContractCodeEntryV1(ref v) => v.as_ref(),
68103 Self::TtlEntry(ref v) => v.as_ref(),
68104 Self::LedgerEntryExtensionV1(ref v) => v.as_ref(),
68105 Self::LedgerEntryExtensionV1Ext(ref v) => v.as_ref(),
68106 Self::LedgerEntry(ref v) => v.as_ref(),
68107 Self::LedgerEntryData(ref v) => v.as_ref(),
68108 Self::LedgerEntryExt(ref v) => v.as_ref(),
68109 Self::LedgerKey(ref v) => v.as_ref(),
68110 Self::LedgerKeyAccount(ref v) => v.as_ref(),
68111 Self::LedgerKeyTrustLine(ref v) => v.as_ref(),
68112 Self::LedgerKeyOffer(ref v) => v.as_ref(),
68113 Self::LedgerKeyData(ref v) => v.as_ref(),
68114 Self::LedgerKeyClaimableBalance(ref v) => v.as_ref(),
68115 Self::LedgerKeyLiquidityPool(ref v) => v.as_ref(),
68116 Self::LedgerKeyContractData(ref v) => v.as_ref(),
68117 Self::LedgerKeyContractCode(ref v) => v.as_ref(),
68118 Self::LedgerKeyConfigSetting(ref v) => v.as_ref(),
68119 Self::LedgerKeyTtl(ref v) => v.as_ref(),
68120 Self::EnvelopeType(ref v) => v.as_ref(),
68121 Self::BucketListType(ref v) => v.as_ref(),
68122 Self::BucketEntryType(ref v) => v.as_ref(),
68123 Self::HotArchiveBucketEntryType(ref v) => v.as_ref(),
68124 Self::BucketMetadata(ref v) => v.as_ref(),
68125 Self::BucketMetadataExt(ref v) => v.as_ref(),
68126 Self::BucketEntry(ref v) => v.as_ref(),
68127 Self::HotArchiveBucketEntry(ref v) => v.as_ref(),
68128 Self::UpgradeType(ref v) => v.as_ref(),
68129 Self::StellarValueType(ref v) => v.as_ref(),
68130 Self::LedgerCloseValueSignature(ref v) => v.as_ref(),
68131 Self::StellarValue(ref v) => v.as_ref(),
68132 Self::StellarValueExt(ref v) => v.as_ref(),
68133 Self::LedgerHeaderFlags(ref v) => v.as_ref(),
68134 Self::LedgerHeaderExtensionV1(ref v) => v.as_ref(),
68135 Self::LedgerHeaderExtensionV1Ext(ref v) => v.as_ref(),
68136 Self::LedgerHeader(ref v) => v.as_ref(),
68137 Self::LedgerHeaderExt(ref v) => v.as_ref(),
68138 Self::LedgerUpgradeType(ref v) => v.as_ref(),
68139 Self::ConfigUpgradeSetKey(ref v) => v.as_ref(),
68140 Self::LedgerUpgrade(ref v) => v.as_ref(),
68141 Self::ConfigUpgradeSet(ref v) => v.as_ref(),
68142 Self::TxSetComponentType(ref v) => v.as_ref(),
68143 Self::DependentTxCluster(ref v) => v.as_ref(),
68144 Self::ParallelTxExecutionStage(ref v) => v.as_ref(),
68145 Self::ParallelTxsComponent(ref v) => v.as_ref(),
68146 Self::TxSetComponent(ref v) => v.as_ref(),
68147 Self::TxSetComponentTxsMaybeDiscountedFee(ref v) => v.as_ref(),
68148 Self::TransactionPhase(ref v) => v.as_ref(),
68149 Self::TransactionSet(ref v) => v.as_ref(),
68150 Self::TransactionSetV1(ref v) => v.as_ref(),
68151 Self::GeneralizedTransactionSet(ref v) => v.as_ref(),
68152 Self::TransactionResultPair(ref v) => v.as_ref(),
68153 Self::TransactionResultSet(ref v) => v.as_ref(),
68154 Self::TransactionHistoryEntry(ref v) => v.as_ref(),
68155 Self::TransactionHistoryEntryExt(ref v) => v.as_ref(),
68156 Self::TransactionHistoryResultEntry(ref v) => v.as_ref(),
68157 Self::TransactionHistoryResultEntryExt(ref v) => v.as_ref(),
68158 Self::LedgerHeaderHistoryEntry(ref v) => v.as_ref(),
68159 Self::LedgerHeaderHistoryEntryExt(ref v) => v.as_ref(),
68160 Self::LedgerScpMessages(ref v) => v.as_ref(),
68161 Self::ScpHistoryEntryV0(ref v) => v.as_ref(),
68162 Self::ScpHistoryEntry(ref v) => v.as_ref(),
68163 Self::LedgerEntryChangeType(ref v) => v.as_ref(),
68164 Self::LedgerEntryChange(ref v) => v.as_ref(),
68165 Self::LedgerEntryChanges(ref v) => v.as_ref(),
68166 Self::OperationMeta(ref v) => v.as_ref(),
68167 Self::TransactionMetaV1(ref v) => v.as_ref(),
68168 Self::TransactionMetaV2(ref v) => v.as_ref(),
68169 Self::ContractEventType(ref v) => v.as_ref(),
68170 Self::ContractEvent(ref v) => v.as_ref(),
68171 Self::ContractEventBody(ref v) => v.as_ref(),
68172 Self::ContractEventV0(ref v) => v.as_ref(),
68173 Self::DiagnosticEvent(ref v) => v.as_ref(),
68174 Self::SorobanTransactionMetaExtV1(ref v) => v.as_ref(),
68175 Self::SorobanTransactionMetaExt(ref v) => v.as_ref(),
68176 Self::SorobanTransactionMeta(ref v) => v.as_ref(),
68177 Self::TransactionMetaV3(ref v) => v.as_ref(),
68178 Self::OperationMetaV2(ref v) => v.as_ref(),
68179 Self::SorobanTransactionMetaV2(ref v) => v.as_ref(),
68180 Self::TransactionEventStage(ref v) => v.as_ref(),
68181 Self::TransactionEvent(ref v) => v.as_ref(),
68182 Self::TransactionMetaV4(ref v) => v.as_ref(),
68183 Self::InvokeHostFunctionSuccessPreImage(ref v) => v.as_ref(),
68184 Self::TransactionMeta(ref v) => v.as_ref(),
68185 Self::TransactionResultMeta(ref v) => v.as_ref(),
68186 Self::TransactionResultMetaV1(ref v) => v.as_ref(),
68187 Self::UpgradeEntryMeta(ref v) => v.as_ref(),
68188 Self::LedgerCloseMetaV0(ref v) => v.as_ref(),
68189 Self::LedgerCloseMetaExtV1(ref v) => v.as_ref(),
68190 Self::LedgerCloseMetaExt(ref v) => v.as_ref(),
68191 Self::LedgerCloseMetaV1(ref v) => v.as_ref(),
68192 Self::LedgerCloseMetaV2(ref v) => v.as_ref(),
68193 Self::LedgerCloseMeta(ref v) => v.as_ref(),
68194 Self::ErrorCode(ref v) => v.as_ref(),
68195 Self::SError(ref v) => v.as_ref(),
68196 Self::SendMore(ref v) => v.as_ref(),
68197 Self::SendMoreExtended(ref v) => v.as_ref(),
68198 Self::AuthCert(ref v) => v.as_ref(),
68199 Self::Hello(ref v) => v.as_ref(),
68200 Self::Auth(ref v) => v.as_ref(),
68201 Self::IpAddrType(ref v) => v.as_ref(),
68202 Self::PeerAddress(ref v) => v.as_ref(),
68203 Self::PeerAddressIp(ref v) => v.as_ref(),
68204 Self::MessageType(ref v) => v.as_ref(),
68205 Self::DontHave(ref v) => v.as_ref(),
68206 Self::SurveyMessageCommandType(ref v) => v.as_ref(),
68207 Self::SurveyMessageResponseType(ref v) => v.as_ref(),
68208 Self::TimeSlicedSurveyStartCollectingMessage(ref v) => v.as_ref(),
68209 Self::SignedTimeSlicedSurveyStartCollectingMessage(ref v) => v.as_ref(),
68210 Self::TimeSlicedSurveyStopCollectingMessage(ref v) => v.as_ref(),
68211 Self::SignedTimeSlicedSurveyStopCollectingMessage(ref v) => v.as_ref(),
68212 Self::SurveyRequestMessage(ref v) => v.as_ref(),
68213 Self::TimeSlicedSurveyRequestMessage(ref v) => v.as_ref(),
68214 Self::SignedTimeSlicedSurveyRequestMessage(ref v) => v.as_ref(),
68215 Self::EncryptedBody(ref v) => v.as_ref(),
68216 Self::SurveyResponseMessage(ref v) => v.as_ref(),
68217 Self::TimeSlicedSurveyResponseMessage(ref v) => v.as_ref(),
68218 Self::SignedTimeSlicedSurveyResponseMessage(ref v) => v.as_ref(),
68219 Self::PeerStats(ref v) => v.as_ref(),
68220 Self::TimeSlicedNodeData(ref v) => v.as_ref(),
68221 Self::TimeSlicedPeerData(ref v) => v.as_ref(),
68222 Self::TimeSlicedPeerDataList(ref v) => v.as_ref(),
68223 Self::TopologyResponseBodyV2(ref v) => v.as_ref(),
68224 Self::SurveyResponseBody(ref v) => v.as_ref(),
68225 Self::TxAdvertVector(ref v) => v.as_ref(),
68226 Self::FloodAdvert(ref v) => v.as_ref(),
68227 Self::TxDemandVector(ref v) => v.as_ref(),
68228 Self::FloodDemand(ref v) => v.as_ref(),
68229 Self::StellarMessage(ref v) => v.as_ref(),
68230 Self::AuthenticatedMessage(ref v) => v.as_ref(),
68231 Self::AuthenticatedMessageV0(ref v) => v.as_ref(),
68232 Self::LiquidityPoolParameters(ref v) => v.as_ref(),
68233 Self::MuxedAccount(ref v) => v.as_ref(),
68234 Self::MuxedAccountMed25519(ref v) => v.as_ref(),
68235 Self::DecoratedSignature(ref v) => v.as_ref(),
68236 Self::OperationType(ref v) => v.as_ref(),
68237 Self::CreateAccountOp(ref v) => v.as_ref(),
68238 Self::PaymentOp(ref v) => v.as_ref(),
68239 Self::PathPaymentStrictReceiveOp(ref v) => v.as_ref(),
68240 Self::PathPaymentStrictSendOp(ref v) => v.as_ref(),
68241 Self::ManageSellOfferOp(ref v) => v.as_ref(),
68242 Self::ManageBuyOfferOp(ref v) => v.as_ref(),
68243 Self::CreatePassiveSellOfferOp(ref v) => v.as_ref(),
68244 Self::SetOptionsOp(ref v) => v.as_ref(),
68245 Self::ChangeTrustAsset(ref v) => v.as_ref(),
68246 Self::ChangeTrustOp(ref v) => v.as_ref(),
68247 Self::AllowTrustOp(ref v) => v.as_ref(),
68248 Self::ManageDataOp(ref v) => v.as_ref(),
68249 Self::BumpSequenceOp(ref v) => v.as_ref(),
68250 Self::CreateClaimableBalanceOp(ref v) => v.as_ref(),
68251 Self::ClaimClaimableBalanceOp(ref v) => v.as_ref(),
68252 Self::BeginSponsoringFutureReservesOp(ref v) => v.as_ref(),
68253 Self::RevokeSponsorshipType(ref v) => v.as_ref(),
68254 Self::RevokeSponsorshipOp(ref v) => v.as_ref(),
68255 Self::RevokeSponsorshipOpSigner(ref v) => v.as_ref(),
68256 Self::ClawbackOp(ref v) => v.as_ref(),
68257 Self::ClawbackClaimableBalanceOp(ref v) => v.as_ref(),
68258 Self::SetTrustLineFlagsOp(ref v) => v.as_ref(),
68259 Self::LiquidityPoolDepositOp(ref v) => v.as_ref(),
68260 Self::LiquidityPoolWithdrawOp(ref v) => v.as_ref(),
68261 Self::HostFunctionType(ref v) => v.as_ref(),
68262 Self::ContractIdPreimageType(ref v) => v.as_ref(),
68263 Self::ContractIdPreimage(ref v) => v.as_ref(),
68264 Self::ContractIdPreimageFromAddress(ref v) => v.as_ref(),
68265 Self::CreateContractArgs(ref v) => v.as_ref(),
68266 Self::CreateContractArgsV2(ref v) => v.as_ref(),
68267 Self::InvokeContractArgs(ref v) => v.as_ref(),
68268 Self::HostFunction(ref v) => v.as_ref(),
68269 Self::SorobanAuthorizedFunctionType(ref v) => v.as_ref(),
68270 Self::SorobanAuthorizedFunction(ref v) => v.as_ref(),
68271 Self::SorobanAuthorizedInvocation(ref v) => v.as_ref(),
68272 Self::SorobanAddressCredentials(ref v) => v.as_ref(),
68273 Self::SorobanCredentialsType(ref v) => v.as_ref(),
68274 Self::SorobanCredentials(ref v) => v.as_ref(),
68275 Self::SorobanAuthorizationEntry(ref v) => v.as_ref(),
68276 Self::SorobanAuthorizationEntries(ref v) => v.as_ref(),
68277 Self::InvokeHostFunctionOp(ref v) => v.as_ref(),
68278 Self::ExtendFootprintTtlOp(ref v) => v.as_ref(),
68279 Self::RestoreFootprintOp(ref v) => v.as_ref(),
68280 Self::Operation(ref v) => v.as_ref(),
68281 Self::OperationBody(ref v) => v.as_ref(),
68282 Self::HashIdPreimage(ref v) => v.as_ref(),
68283 Self::HashIdPreimageOperationId(ref v) => v.as_ref(),
68284 Self::HashIdPreimageRevokeId(ref v) => v.as_ref(),
68285 Self::HashIdPreimageContractId(ref v) => v.as_ref(),
68286 Self::HashIdPreimageSorobanAuthorization(ref v) => v.as_ref(),
68287 Self::MemoType(ref v) => v.as_ref(),
68288 Self::Memo(ref v) => v.as_ref(),
68289 Self::TimeBounds(ref v) => v.as_ref(),
68290 Self::LedgerBounds(ref v) => v.as_ref(),
68291 Self::PreconditionsV2(ref v) => v.as_ref(),
68292 Self::PreconditionType(ref v) => v.as_ref(),
68293 Self::Preconditions(ref v) => v.as_ref(),
68294 Self::LedgerFootprint(ref v) => v.as_ref(),
68295 Self::SorobanResources(ref v) => v.as_ref(),
68296 Self::SorobanResourcesExtV0(ref v) => v.as_ref(),
68297 Self::SorobanTransactionData(ref v) => v.as_ref(),
68298 Self::SorobanTransactionDataExt(ref v) => v.as_ref(),
68299 Self::TransactionV0(ref v) => v.as_ref(),
68300 Self::TransactionV0Ext(ref v) => v.as_ref(),
68301 Self::TransactionV0Envelope(ref v) => v.as_ref(),
68302 Self::Transaction(ref v) => v.as_ref(),
68303 Self::TransactionExt(ref v) => v.as_ref(),
68304 Self::TransactionV1Envelope(ref v) => v.as_ref(),
68305 Self::FeeBumpTransaction(ref v) => v.as_ref(),
68306 Self::FeeBumpTransactionInnerTx(ref v) => v.as_ref(),
68307 Self::FeeBumpTransactionExt(ref v) => v.as_ref(),
68308 Self::FeeBumpTransactionEnvelope(ref v) => v.as_ref(),
68309 Self::TransactionEnvelope(ref v) => v.as_ref(),
68310 Self::TransactionSignaturePayload(ref v) => v.as_ref(),
68311 Self::TransactionSignaturePayloadTaggedTransaction(ref v) => v.as_ref(),
68312 Self::ClaimAtomType(ref v) => v.as_ref(),
68313 Self::ClaimOfferAtomV0(ref v) => v.as_ref(),
68314 Self::ClaimOfferAtom(ref v) => v.as_ref(),
68315 Self::ClaimLiquidityAtom(ref v) => v.as_ref(),
68316 Self::ClaimAtom(ref v) => v.as_ref(),
68317 Self::CreateAccountResultCode(ref v) => v.as_ref(),
68318 Self::CreateAccountResult(ref v) => v.as_ref(),
68319 Self::PaymentResultCode(ref v) => v.as_ref(),
68320 Self::PaymentResult(ref v) => v.as_ref(),
68321 Self::PathPaymentStrictReceiveResultCode(ref v) => v.as_ref(),
68322 Self::SimplePaymentResult(ref v) => v.as_ref(),
68323 Self::PathPaymentStrictReceiveResult(ref v) => v.as_ref(),
68324 Self::PathPaymentStrictReceiveResultSuccess(ref v) => v.as_ref(),
68325 Self::PathPaymentStrictSendResultCode(ref v) => v.as_ref(),
68326 Self::PathPaymentStrictSendResult(ref v) => v.as_ref(),
68327 Self::PathPaymentStrictSendResultSuccess(ref v) => v.as_ref(),
68328 Self::ManageSellOfferResultCode(ref v) => v.as_ref(),
68329 Self::ManageOfferEffect(ref v) => v.as_ref(),
68330 Self::ManageOfferSuccessResult(ref v) => v.as_ref(),
68331 Self::ManageOfferSuccessResultOffer(ref v) => v.as_ref(),
68332 Self::ManageSellOfferResult(ref v) => v.as_ref(),
68333 Self::ManageBuyOfferResultCode(ref v) => v.as_ref(),
68334 Self::ManageBuyOfferResult(ref v) => v.as_ref(),
68335 Self::SetOptionsResultCode(ref v) => v.as_ref(),
68336 Self::SetOptionsResult(ref v) => v.as_ref(),
68337 Self::ChangeTrustResultCode(ref v) => v.as_ref(),
68338 Self::ChangeTrustResult(ref v) => v.as_ref(),
68339 Self::AllowTrustResultCode(ref v) => v.as_ref(),
68340 Self::AllowTrustResult(ref v) => v.as_ref(),
68341 Self::AccountMergeResultCode(ref v) => v.as_ref(),
68342 Self::AccountMergeResult(ref v) => v.as_ref(),
68343 Self::InflationResultCode(ref v) => v.as_ref(),
68344 Self::InflationPayout(ref v) => v.as_ref(),
68345 Self::InflationResult(ref v) => v.as_ref(),
68346 Self::ManageDataResultCode(ref v) => v.as_ref(),
68347 Self::ManageDataResult(ref v) => v.as_ref(),
68348 Self::BumpSequenceResultCode(ref v) => v.as_ref(),
68349 Self::BumpSequenceResult(ref v) => v.as_ref(),
68350 Self::CreateClaimableBalanceResultCode(ref v) => v.as_ref(),
68351 Self::CreateClaimableBalanceResult(ref v) => v.as_ref(),
68352 Self::ClaimClaimableBalanceResultCode(ref v) => v.as_ref(),
68353 Self::ClaimClaimableBalanceResult(ref v) => v.as_ref(),
68354 Self::BeginSponsoringFutureReservesResultCode(ref v) => v.as_ref(),
68355 Self::BeginSponsoringFutureReservesResult(ref v) => v.as_ref(),
68356 Self::EndSponsoringFutureReservesResultCode(ref v) => v.as_ref(),
68357 Self::EndSponsoringFutureReservesResult(ref v) => v.as_ref(),
68358 Self::RevokeSponsorshipResultCode(ref v) => v.as_ref(),
68359 Self::RevokeSponsorshipResult(ref v) => v.as_ref(),
68360 Self::ClawbackResultCode(ref v) => v.as_ref(),
68361 Self::ClawbackResult(ref v) => v.as_ref(),
68362 Self::ClawbackClaimableBalanceResultCode(ref v) => v.as_ref(),
68363 Self::ClawbackClaimableBalanceResult(ref v) => v.as_ref(),
68364 Self::SetTrustLineFlagsResultCode(ref v) => v.as_ref(),
68365 Self::SetTrustLineFlagsResult(ref v) => v.as_ref(),
68366 Self::LiquidityPoolDepositResultCode(ref v) => v.as_ref(),
68367 Self::LiquidityPoolDepositResult(ref v) => v.as_ref(),
68368 Self::LiquidityPoolWithdrawResultCode(ref v) => v.as_ref(),
68369 Self::LiquidityPoolWithdrawResult(ref v) => v.as_ref(),
68370 Self::InvokeHostFunctionResultCode(ref v) => v.as_ref(),
68371 Self::InvokeHostFunctionResult(ref v) => v.as_ref(),
68372 Self::ExtendFootprintTtlResultCode(ref v) => v.as_ref(),
68373 Self::ExtendFootprintTtlResult(ref v) => v.as_ref(),
68374 Self::RestoreFootprintResultCode(ref v) => v.as_ref(),
68375 Self::RestoreFootprintResult(ref v) => v.as_ref(),
68376 Self::OperationResultCode(ref v) => v.as_ref(),
68377 Self::OperationResult(ref v) => v.as_ref(),
68378 Self::OperationResultTr(ref v) => v.as_ref(),
68379 Self::TransactionResultCode(ref v) => v.as_ref(),
68380 Self::InnerTransactionResult(ref v) => v.as_ref(),
68381 Self::InnerTransactionResultResult(ref v) => v.as_ref(),
68382 Self::InnerTransactionResultExt(ref v) => v.as_ref(),
68383 Self::InnerTransactionResultPair(ref v) => v.as_ref(),
68384 Self::TransactionResult(ref v) => v.as_ref(),
68385 Self::TransactionResultResult(ref v) => v.as_ref(),
68386 Self::TransactionResultExt(ref v) => v.as_ref(),
68387 Self::Hash(ref v) => v.as_ref(),
68388 Self::Uint256(ref v) => v.as_ref(),
68389 Self::Uint32(ref v) => v.as_ref(),
68390 Self::Int32(ref v) => v.as_ref(),
68391 Self::Uint64(ref v) => v.as_ref(),
68392 Self::Int64(ref v) => v.as_ref(),
68393 Self::TimePoint(ref v) => v.as_ref(),
68394 Self::Duration(ref v) => v.as_ref(),
68395 Self::ExtensionPoint(ref v) => v.as_ref(),
68396 Self::CryptoKeyType(ref v) => v.as_ref(),
68397 Self::PublicKeyType(ref v) => v.as_ref(),
68398 Self::SignerKeyType(ref v) => v.as_ref(),
68399 Self::PublicKey(ref v) => v.as_ref(),
68400 Self::SignerKey(ref v) => v.as_ref(),
68401 Self::SignerKeyEd25519SignedPayload(ref v) => v.as_ref(),
68402 Self::Signature(ref v) => v.as_ref(),
68403 Self::SignatureHint(ref v) => v.as_ref(),
68404 Self::NodeId(ref v) => v.as_ref(),
68405 Self::AccountId(ref v) => v.as_ref(),
68406 Self::ContractId(ref v) => v.as_ref(),
68407 Self::Curve25519Secret(ref v) => v.as_ref(),
68408 Self::Curve25519Public(ref v) => v.as_ref(),
68409 Self::HmacSha256Key(ref v) => v.as_ref(),
68410 Self::HmacSha256Mac(ref v) => v.as_ref(),
68411 Self::ShortHashSeed(ref v) => v.as_ref(),
68412 Self::BinaryFuseFilterType(ref v) => v.as_ref(),
68413 Self::SerializedBinaryFuseFilter(ref v) => v.as_ref(),
68414 Self::PoolId(ref v) => v.as_ref(),
68415 Self::ClaimableBalanceIdType(ref v) => v.as_ref(),
68416 Self::ClaimableBalanceId(ref v) => v.as_ref(),
68417 }
68418 }
68419
68420 #[must_use]
68421 #[allow(clippy::too_many_lines)]
68422 pub const fn name(&self) -> &'static str {
68423 match self {
68424 Self::Value(_) => "Value",
68425 Self::ScpBallot(_) => "ScpBallot",
68426 Self::ScpStatementType(_) => "ScpStatementType",
68427 Self::ScpNomination(_) => "ScpNomination",
68428 Self::ScpStatement(_) => "ScpStatement",
68429 Self::ScpStatementPledges(_) => "ScpStatementPledges",
68430 Self::ScpStatementPrepare(_) => "ScpStatementPrepare",
68431 Self::ScpStatementConfirm(_) => "ScpStatementConfirm",
68432 Self::ScpStatementExternalize(_) => "ScpStatementExternalize",
68433 Self::ScpEnvelope(_) => "ScpEnvelope",
68434 Self::ScpQuorumSet(_) => "ScpQuorumSet",
68435 Self::ConfigSettingContractExecutionLanesV0(_) => {
68436 "ConfigSettingContractExecutionLanesV0"
68437 }
68438 Self::ConfigSettingContractComputeV0(_) => "ConfigSettingContractComputeV0",
68439 Self::ConfigSettingContractParallelComputeV0(_) => {
68440 "ConfigSettingContractParallelComputeV0"
68441 }
68442 Self::ConfigSettingContractLedgerCostV0(_) => "ConfigSettingContractLedgerCostV0",
68443 Self::ConfigSettingContractLedgerCostExtV0(_) => "ConfigSettingContractLedgerCostExtV0",
68444 Self::ConfigSettingContractHistoricalDataV0(_) => {
68445 "ConfigSettingContractHistoricalDataV0"
68446 }
68447 Self::ConfigSettingContractEventsV0(_) => "ConfigSettingContractEventsV0",
68448 Self::ConfigSettingContractBandwidthV0(_) => "ConfigSettingContractBandwidthV0",
68449 Self::ContractCostType(_) => "ContractCostType",
68450 Self::ContractCostParamEntry(_) => "ContractCostParamEntry",
68451 Self::StateArchivalSettings(_) => "StateArchivalSettings",
68452 Self::EvictionIterator(_) => "EvictionIterator",
68453 Self::ConfigSettingScpTiming(_) => "ConfigSettingScpTiming",
68454 Self::ContractCostParams(_) => "ContractCostParams",
68455 Self::ConfigSettingId(_) => "ConfigSettingId",
68456 Self::ConfigSettingEntry(_) => "ConfigSettingEntry",
68457 Self::ScEnvMetaKind(_) => "ScEnvMetaKind",
68458 Self::ScEnvMetaEntry(_) => "ScEnvMetaEntry",
68459 Self::ScEnvMetaEntryInterfaceVersion(_) => "ScEnvMetaEntryInterfaceVersion",
68460 Self::ScMetaV0(_) => "ScMetaV0",
68461 Self::ScMetaKind(_) => "ScMetaKind",
68462 Self::ScMetaEntry(_) => "ScMetaEntry",
68463 Self::ScSpecType(_) => "ScSpecType",
68464 Self::ScSpecTypeOption(_) => "ScSpecTypeOption",
68465 Self::ScSpecTypeResult(_) => "ScSpecTypeResult",
68466 Self::ScSpecTypeVec(_) => "ScSpecTypeVec",
68467 Self::ScSpecTypeMap(_) => "ScSpecTypeMap",
68468 Self::ScSpecTypeTuple(_) => "ScSpecTypeTuple",
68469 Self::ScSpecTypeBytesN(_) => "ScSpecTypeBytesN",
68470 Self::ScSpecTypeUdt(_) => "ScSpecTypeUdt",
68471 Self::ScSpecTypeDef(_) => "ScSpecTypeDef",
68472 Self::ScSpecUdtStructFieldV0(_) => "ScSpecUdtStructFieldV0",
68473 Self::ScSpecUdtStructV0(_) => "ScSpecUdtStructV0",
68474 Self::ScSpecUdtUnionCaseVoidV0(_) => "ScSpecUdtUnionCaseVoidV0",
68475 Self::ScSpecUdtUnionCaseTupleV0(_) => "ScSpecUdtUnionCaseTupleV0",
68476 Self::ScSpecUdtUnionCaseV0Kind(_) => "ScSpecUdtUnionCaseV0Kind",
68477 Self::ScSpecUdtUnionCaseV0(_) => "ScSpecUdtUnionCaseV0",
68478 Self::ScSpecUdtUnionV0(_) => "ScSpecUdtUnionV0",
68479 Self::ScSpecUdtEnumCaseV0(_) => "ScSpecUdtEnumCaseV0",
68480 Self::ScSpecUdtEnumV0(_) => "ScSpecUdtEnumV0",
68481 Self::ScSpecUdtErrorEnumCaseV0(_) => "ScSpecUdtErrorEnumCaseV0",
68482 Self::ScSpecUdtErrorEnumV0(_) => "ScSpecUdtErrorEnumV0",
68483 Self::ScSpecFunctionInputV0(_) => "ScSpecFunctionInputV0",
68484 Self::ScSpecFunctionV0(_) => "ScSpecFunctionV0",
68485 Self::ScSpecEventParamLocationV0(_) => "ScSpecEventParamLocationV0",
68486 Self::ScSpecEventParamV0(_) => "ScSpecEventParamV0",
68487 Self::ScSpecEventDataFormat(_) => "ScSpecEventDataFormat",
68488 Self::ScSpecEventV0(_) => "ScSpecEventV0",
68489 Self::ScSpecEntryKind(_) => "ScSpecEntryKind",
68490 Self::ScSpecEntry(_) => "ScSpecEntry",
68491 Self::ScValType(_) => "ScValType",
68492 Self::ScErrorType(_) => "ScErrorType",
68493 Self::ScErrorCode(_) => "ScErrorCode",
68494 Self::ScError(_) => "ScError",
68495 Self::UInt128Parts(_) => "UInt128Parts",
68496 Self::Int128Parts(_) => "Int128Parts",
68497 Self::UInt256Parts(_) => "UInt256Parts",
68498 Self::Int256Parts(_) => "Int256Parts",
68499 Self::ContractExecutableType(_) => "ContractExecutableType",
68500 Self::ContractExecutable(_) => "ContractExecutable",
68501 Self::ScAddressType(_) => "ScAddressType",
68502 Self::MuxedEd25519Account(_) => "MuxedEd25519Account",
68503 Self::ScAddress(_) => "ScAddress",
68504 Self::ScVec(_) => "ScVec",
68505 Self::ScMap(_) => "ScMap",
68506 Self::ScBytes(_) => "ScBytes",
68507 Self::ScString(_) => "ScString",
68508 Self::ScSymbol(_) => "ScSymbol",
68509 Self::ScNonceKey(_) => "ScNonceKey",
68510 Self::ScContractInstance(_) => "ScContractInstance",
68511 Self::ScVal(_) => "ScVal",
68512 Self::ScMapEntry(_) => "ScMapEntry",
68513 Self::LedgerCloseMetaBatch(_) => "LedgerCloseMetaBatch",
68514 Self::StoredTransactionSet(_) => "StoredTransactionSet",
68515 Self::StoredDebugTransactionSet(_) => "StoredDebugTransactionSet",
68516 Self::PersistedScpStateV0(_) => "PersistedScpStateV0",
68517 Self::PersistedScpStateV1(_) => "PersistedScpStateV1",
68518 Self::PersistedScpState(_) => "PersistedScpState",
68519 Self::Thresholds(_) => "Thresholds",
68520 Self::String32(_) => "String32",
68521 Self::String64(_) => "String64",
68522 Self::SequenceNumber(_) => "SequenceNumber",
68523 Self::DataValue(_) => "DataValue",
68524 Self::AssetCode4(_) => "AssetCode4",
68525 Self::AssetCode12(_) => "AssetCode12",
68526 Self::AssetType(_) => "AssetType",
68527 Self::AssetCode(_) => "AssetCode",
68528 Self::AlphaNum4(_) => "AlphaNum4",
68529 Self::AlphaNum12(_) => "AlphaNum12",
68530 Self::Asset(_) => "Asset",
68531 Self::Price(_) => "Price",
68532 Self::Liabilities(_) => "Liabilities",
68533 Self::ThresholdIndexes(_) => "ThresholdIndexes",
68534 Self::LedgerEntryType(_) => "LedgerEntryType",
68535 Self::Signer(_) => "Signer",
68536 Self::AccountFlags(_) => "AccountFlags",
68537 Self::SponsorshipDescriptor(_) => "SponsorshipDescriptor",
68538 Self::AccountEntryExtensionV3(_) => "AccountEntryExtensionV3",
68539 Self::AccountEntryExtensionV2(_) => "AccountEntryExtensionV2",
68540 Self::AccountEntryExtensionV2Ext(_) => "AccountEntryExtensionV2Ext",
68541 Self::AccountEntryExtensionV1(_) => "AccountEntryExtensionV1",
68542 Self::AccountEntryExtensionV1Ext(_) => "AccountEntryExtensionV1Ext",
68543 Self::AccountEntry(_) => "AccountEntry",
68544 Self::AccountEntryExt(_) => "AccountEntryExt",
68545 Self::TrustLineFlags(_) => "TrustLineFlags",
68546 Self::LiquidityPoolType(_) => "LiquidityPoolType",
68547 Self::TrustLineAsset(_) => "TrustLineAsset",
68548 Self::TrustLineEntryExtensionV2(_) => "TrustLineEntryExtensionV2",
68549 Self::TrustLineEntryExtensionV2Ext(_) => "TrustLineEntryExtensionV2Ext",
68550 Self::TrustLineEntry(_) => "TrustLineEntry",
68551 Self::TrustLineEntryExt(_) => "TrustLineEntryExt",
68552 Self::TrustLineEntryV1(_) => "TrustLineEntryV1",
68553 Self::TrustLineEntryV1Ext(_) => "TrustLineEntryV1Ext",
68554 Self::OfferEntryFlags(_) => "OfferEntryFlags",
68555 Self::OfferEntry(_) => "OfferEntry",
68556 Self::OfferEntryExt(_) => "OfferEntryExt",
68557 Self::DataEntry(_) => "DataEntry",
68558 Self::DataEntryExt(_) => "DataEntryExt",
68559 Self::ClaimPredicateType(_) => "ClaimPredicateType",
68560 Self::ClaimPredicate(_) => "ClaimPredicate",
68561 Self::ClaimantType(_) => "ClaimantType",
68562 Self::Claimant(_) => "Claimant",
68563 Self::ClaimantV0(_) => "ClaimantV0",
68564 Self::ClaimableBalanceFlags(_) => "ClaimableBalanceFlags",
68565 Self::ClaimableBalanceEntryExtensionV1(_) => "ClaimableBalanceEntryExtensionV1",
68566 Self::ClaimableBalanceEntryExtensionV1Ext(_) => "ClaimableBalanceEntryExtensionV1Ext",
68567 Self::ClaimableBalanceEntry(_) => "ClaimableBalanceEntry",
68568 Self::ClaimableBalanceEntryExt(_) => "ClaimableBalanceEntryExt",
68569 Self::LiquidityPoolConstantProductParameters(_) => {
68570 "LiquidityPoolConstantProductParameters"
68571 }
68572 Self::LiquidityPoolEntry(_) => "LiquidityPoolEntry",
68573 Self::LiquidityPoolEntryBody(_) => "LiquidityPoolEntryBody",
68574 Self::LiquidityPoolEntryConstantProduct(_) => "LiquidityPoolEntryConstantProduct",
68575 Self::ContractDataDurability(_) => "ContractDataDurability",
68576 Self::ContractDataEntry(_) => "ContractDataEntry",
68577 Self::ContractCodeCostInputs(_) => "ContractCodeCostInputs",
68578 Self::ContractCodeEntry(_) => "ContractCodeEntry",
68579 Self::ContractCodeEntryExt(_) => "ContractCodeEntryExt",
68580 Self::ContractCodeEntryV1(_) => "ContractCodeEntryV1",
68581 Self::TtlEntry(_) => "TtlEntry",
68582 Self::LedgerEntryExtensionV1(_) => "LedgerEntryExtensionV1",
68583 Self::LedgerEntryExtensionV1Ext(_) => "LedgerEntryExtensionV1Ext",
68584 Self::LedgerEntry(_) => "LedgerEntry",
68585 Self::LedgerEntryData(_) => "LedgerEntryData",
68586 Self::LedgerEntryExt(_) => "LedgerEntryExt",
68587 Self::LedgerKey(_) => "LedgerKey",
68588 Self::LedgerKeyAccount(_) => "LedgerKeyAccount",
68589 Self::LedgerKeyTrustLine(_) => "LedgerKeyTrustLine",
68590 Self::LedgerKeyOffer(_) => "LedgerKeyOffer",
68591 Self::LedgerKeyData(_) => "LedgerKeyData",
68592 Self::LedgerKeyClaimableBalance(_) => "LedgerKeyClaimableBalance",
68593 Self::LedgerKeyLiquidityPool(_) => "LedgerKeyLiquidityPool",
68594 Self::LedgerKeyContractData(_) => "LedgerKeyContractData",
68595 Self::LedgerKeyContractCode(_) => "LedgerKeyContractCode",
68596 Self::LedgerKeyConfigSetting(_) => "LedgerKeyConfigSetting",
68597 Self::LedgerKeyTtl(_) => "LedgerKeyTtl",
68598 Self::EnvelopeType(_) => "EnvelopeType",
68599 Self::BucketListType(_) => "BucketListType",
68600 Self::BucketEntryType(_) => "BucketEntryType",
68601 Self::HotArchiveBucketEntryType(_) => "HotArchiveBucketEntryType",
68602 Self::BucketMetadata(_) => "BucketMetadata",
68603 Self::BucketMetadataExt(_) => "BucketMetadataExt",
68604 Self::BucketEntry(_) => "BucketEntry",
68605 Self::HotArchiveBucketEntry(_) => "HotArchiveBucketEntry",
68606 Self::UpgradeType(_) => "UpgradeType",
68607 Self::StellarValueType(_) => "StellarValueType",
68608 Self::LedgerCloseValueSignature(_) => "LedgerCloseValueSignature",
68609 Self::StellarValue(_) => "StellarValue",
68610 Self::StellarValueExt(_) => "StellarValueExt",
68611 Self::LedgerHeaderFlags(_) => "LedgerHeaderFlags",
68612 Self::LedgerHeaderExtensionV1(_) => "LedgerHeaderExtensionV1",
68613 Self::LedgerHeaderExtensionV1Ext(_) => "LedgerHeaderExtensionV1Ext",
68614 Self::LedgerHeader(_) => "LedgerHeader",
68615 Self::LedgerHeaderExt(_) => "LedgerHeaderExt",
68616 Self::LedgerUpgradeType(_) => "LedgerUpgradeType",
68617 Self::ConfigUpgradeSetKey(_) => "ConfigUpgradeSetKey",
68618 Self::LedgerUpgrade(_) => "LedgerUpgrade",
68619 Self::ConfigUpgradeSet(_) => "ConfigUpgradeSet",
68620 Self::TxSetComponentType(_) => "TxSetComponentType",
68621 Self::DependentTxCluster(_) => "DependentTxCluster",
68622 Self::ParallelTxExecutionStage(_) => "ParallelTxExecutionStage",
68623 Self::ParallelTxsComponent(_) => "ParallelTxsComponent",
68624 Self::TxSetComponent(_) => "TxSetComponent",
68625 Self::TxSetComponentTxsMaybeDiscountedFee(_) => "TxSetComponentTxsMaybeDiscountedFee",
68626 Self::TransactionPhase(_) => "TransactionPhase",
68627 Self::TransactionSet(_) => "TransactionSet",
68628 Self::TransactionSetV1(_) => "TransactionSetV1",
68629 Self::GeneralizedTransactionSet(_) => "GeneralizedTransactionSet",
68630 Self::TransactionResultPair(_) => "TransactionResultPair",
68631 Self::TransactionResultSet(_) => "TransactionResultSet",
68632 Self::TransactionHistoryEntry(_) => "TransactionHistoryEntry",
68633 Self::TransactionHistoryEntryExt(_) => "TransactionHistoryEntryExt",
68634 Self::TransactionHistoryResultEntry(_) => "TransactionHistoryResultEntry",
68635 Self::TransactionHistoryResultEntryExt(_) => "TransactionHistoryResultEntryExt",
68636 Self::LedgerHeaderHistoryEntry(_) => "LedgerHeaderHistoryEntry",
68637 Self::LedgerHeaderHistoryEntryExt(_) => "LedgerHeaderHistoryEntryExt",
68638 Self::LedgerScpMessages(_) => "LedgerScpMessages",
68639 Self::ScpHistoryEntryV0(_) => "ScpHistoryEntryV0",
68640 Self::ScpHistoryEntry(_) => "ScpHistoryEntry",
68641 Self::LedgerEntryChangeType(_) => "LedgerEntryChangeType",
68642 Self::LedgerEntryChange(_) => "LedgerEntryChange",
68643 Self::LedgerEntryChanges(_) => "LedgerEntryChanges",
68644 Self::OperationMeta(_) => "OperationMeta",
68645 Self::TransactionMetaV1(_) => "TransactionMetaV1",
68646 Self::TransactionMetaV2(_) => "TransactionMetaV2",
68647 Self::ContractEventType(_) => "ContractEventType",
68648 Self::ContractEvent(_) => "ContractEvent",
68649 Self::ContractEventBody(_) => "ContractEventBody",
68650 Self::ContractEventV0(_) => "ContractEventV0",
68651 Self::DiagnosticEvent(_) => "DiagnosticEvent",
68652 Self::SorobanTransactionMetaExtV1(_) => "SorobanTransactionMetaExtV1",
68653 Self::SorobanTransactionMetaExt(_) => "SorobanTransactionMetaExt",
68654 Self::SorobanTransactionMeta(_) => "SorobanTransactionMeta",
68655 Self::TransactionMetaV3(_) => "TransactionMetaV3",
68656 Self::OperationMetaV2(_) => "OperationMetaV2",
68657 Self::SorobanTransactionMetaV2(_) => "SorobanTransactionMetaV2",
68658 Self::TransactionEventStage(_) => "TransactionEventStage",
68659 Self::TransactionEvent(_) => "TransactionEvent",
68660 Self::TransactionMetaV4(_) => "TransactionMetaV4",
68661 Self::InvokeHostFunctionSuccessPreImage(_) => "InvokeHostFunctionSuccessPreImage",
68662 Self::TransactionMeta(_) => "TransactionMeta",
68663 Self::TransactionResultMeta(_) => "TransactionResultMeta",
68664 Self::TransactionResultMetaV1(_) => "TransactionResultMetaV1",
68665 Self::UpgradeEntryMeta(_) => "UpgradeEntryMeta",
68666 Self::LedgerCloseMetaV0(_) => "LedgerCloseMetaV0",
68667 Self::LedgerCloseMetaExtV1(_) => "LedgerCloseMetaExtV1",
68668 Self::LedgerCloseMetaExt(_) => "LedgerCloseMetaExt",
68669 Self::LedgerCloseMetaV1(_) => "LedgerCloseMetaV1",
68670 Self::LedgerCloseMetaV2(_) => "LedgerCloseMetaV2",
68671 Self::LedgerCloseMeta(_) => "LedgerCloseMeta",
68672 Self::ErrorCode(_) => "ErrorCode",
68673 Self::SError(_) => "SError",
68674 Self::SendMore(_) => "SendMore",
68675 Self::SendMoreExtended(_) => "SendMoreExtended",
68676 Self::AuthCert(_) => "AuthCert",
68677 Self::Hello(_) => "Hello",
68678 Self::Auth(_) => "Auth",
68679 Self::IpAddrType(_) => "IpAddrType",
68680 Self::PeerAddress(_) => "PeerAddress",
68681 Self::PeerAddressIp(_) => "PeerAddressIp",
68682 Self::MessageType(_) => "MessageType",
68683 Self::DontHave(_) => "DontHave",
68684 Self::SurveyMessageCommandType(_) => "SurveyMessageCommandType",
68685 Self::SurveyMessageResponseType(_) => "SurveyMessageResponseType",
68686 Self::TimeSlicedSurveyStartCollectingMessage(_) => {
68687 "TimeSlicedSurveyStartCollectingMessage"
68688 }
68689 Self::SignedTimeSlicedSurveyStartCollectingMessage(_) => {
68690 "SignedTimeSlicedSurveyStartCollectingMessage"
68691 }
68692 Self::TimeSlicedSurveyStopCollectingMessage(_) => {
68693 "TimeSlicedSurveyStopCollectingMessage"
68694 }
68695 Self::SignedTimeSlicedSurveyStopCollectingMessage(_) => {
68696 "SignedTimeSlicedSurveyStopCollectingMessage"
68697 }
68698 Self::SurveyRequestMessage(_) => "SurveyRequestMessage",
68699 Self::TimeSlicedSurveyRequestMessage(_) => "TimeSlicedSurveyRequestMessage",
68700 Self::SignedTimeSlicedSurveyRequestMessage(_) => "SignedTimeSlicedSurveyRequestMessage",
68701 Self::EncryptedBody(_) => "EncryptedBody",
68702 Self::SurveyResponseMessage(_) => "SurveyResponseMessage",
68703 Self::TimeSlicedSurveyResponseMessage(_) => "TimeSlicedSurveyResponseMessage",
68704 Self::SignedTimeSlicedSurveyResponseMessage(_) => {
68705 "SignedTimeSlicedSurveyResponseMessage"
68706 }
68707 Self::PeerStats(_) => "PeerStats",
68708 Self::TimeSlicedNodeData(_) => "TimeSlicedNodeData",
68709 Self::TimeSlicedPeerData(_) => "TimeSlicedPeerData",
68710 Self::TimeSlicedPeerDataList(_) => "TimeSlicedPeerDataList",
68711 Self::TopologyResponseBodyV2(_) => "TopologyResponseBodyV2",
68712 Self::SurveyResponseBody(_) => "SurveyResponseBody",
68713 Self::TxAdvertVector(_) => "TxAdvertVector",
68714 Self::FloodAdvert(_) => "FloodAdvert",
68715 Self::TxDemandVector(_) => "TxDemandVector",
68716 Self::FloodDemand(_) => "FloodDemand",
68717 Self::StellarMessage(_) => "StellarMessage",
68718 Self::AuthenticatedMessage(_) => "AuthenticatedMessage",
68719 Self::AuthenticatedMessageV0(_) => "AuthenticatedMessageV0",
68720 Self::LiquidityPoolParameters(_) => "LiquidityPoolParameters",
68721 Self::MuxedAccount(_) => "MuxedAccount",
68722 Self::MuxedAccountMed25519(_) => "MuxedAccountMed25519",
68723 Self::DecoratedSignature(_) => "DecoratedSignature",
68724 Self::OperationType(_) => "OperationType",
68725 Self::CreateAccountOp(_) => "CreateAccountOp",
68726 Self::PaymentOp(_) => "PaymentOp",
68727 Self::PathPaymentStrictReceiveOp(_) => "PathPaymentStrictReceiveOp",
68728 Self::PathPaymentStrictSendOp(_) => "PathPaymentStrictSendOp",
68729 Self::ManageSellOfferOp(_) => "ManageSellOfferOp",
68730 Self::ManageBuyOfferOp(_) => "ManageBuyOfferOp",
68731 Self::CreatePassiveSellOfferOp(_) => "CreatePassiveSellOfferOp",
68732 Self::SetOptionsOp(_) => "SetOptionsOp",
68733 Self::ChangeTrustAsset(_) => "ChangeTrustAsset",
68734 Self::ChangeTrustOp(_) => "ChangeTrustOp",
68735 Self::AllowTrustOp(_) => "AllowTrustOp",
68736 Self::ManageDataOp(_) => "ManageDataOp",
68737 Self::BumpSequenceOp(_) => "BumpSequenceOp",
68738 Self::CreateClaimableBalanceOp(_) => "CreateClaimableBalanceOp",
68739 Self::ClaimClaimableBalanceOp(_) => "ClaimClaimableBalanceOp",
68740 Self::BeginSponsoringFutureReservesOp(_) => "BeginSponsoringFutureReservesOp",
68741 Self::RevokeSponsorshipType(_) => "RevokeSponsorshipType",
68742 Self::RevokeSponsorshipOp(_) => "RevokeSponsorshipOp",
68743 Self::RevokeSponsorshipOpSigner(_) => "RevokeSponsorshipOpSigner",
68744 Self::ClawbackOp(_) => "ClawbackOp",
68745 Self::ClawbackClaimableBalanceOp(_) => "ClawbackClaimableBalanceOp",
68746 Self::SetTrustLineFlagsOp(_) => "SetTrustLineFlagsOp",
68747 Self::LiquidityPoolDepositOp(_) => "LiquidityPoolDepositOp",
68748 Self::LiquidityPoolWithdrawOp(_) => "LiquidityPoolWithdrawOp",
68749 Self::HostFunctionType(_) => "HostFunctionType",
68750 Self::ContractIdPreimageType(_) => "ContractIdPreimageType",
68751 Self::ContractIdPreimage(_) => "ContractIdPreimage",
68752 Self::ContractIdPreimageFromAddress(_) => "ContractIdPreimageFromAddress",
68753 Self::CreateContractArgs(_) => "CreateContractArgs",
68754 Self::CreateContractArgsV2(_) => "CreateContractArgsV2",
68755 Self::InvokeContractArgs(_) => "InvokeContractArgs",
68756 Self::HostFunction(_) => "HostFunction",
68757 Self::SorobanAuthorizedFunctionType(_) => "SorobanAuthorizedFunctionType",
68758 Self::SorobanAuthorizedFunction(_) => "SorobanAuthorizedFunction",
68759 Self::SorobanAuthorizedInvocation(_) => "SorobanAuthorizedInvocation",
68760 Self::SorobanAddressCredentials(_) => "SorobanAddressCredentials",
68761 Self::SorobanCredentialsType(_) => "SorobanCredentialsType",
68762 Self::SorobanCredentials(_) => "SorobanCredentials",
68763 Self::SorobanAuthorizationEntry(_) => "SorobanAuthorizationEntry",
68764 Self::SorobanAuthorizationEntries(_) => "SorobanAuthorizationEntries",
68765 Self::InvokeHostFunctionOp(_) => "InvokeHostFunctionOp",
68766 Self::ExtendFootprintTtlOp(_) => "ExtendFootprintTtlOp",
68767 Self::RestoreFootprintOp(_) => "RestoreFootprintOp",
68768 Self::Operation(_) => "Operation",
68769 Self::OperationBody(_) => "OperationBody",
68770 Self::HashIdPreimage(_) => "HashIdPreimage",
68771 Self::HashIdPreimageOperationId(_) => "HashIdPreimageOperationId",
68772 Self::HashIdPreimageRevokeId(_) => "HashIdPreimageRevokeId",
68773 Self::HashIdPreimageContractId(_) => "HashIdPreimageContractId",
68774 Self::HashIdPreimageSorobanAuthorization(_) => "HashIdPreimageSorobanAuthorization",
68775 Self::MemoType(_) => "MemoType",
68776 Self::Memo(_) => "Memo",
68777 Self::TimeBounds(_) => "TimeBounds",
68778 Self::LedgerBounds(_) => "LedgerBounds",
68779 Self::PreconditionsV2(_) => "PreconditionsV2",
68780 Self::PreconditionType(_) => "PreconditionType",
68781 Self::Preconditions(_) => "Preconditions",
68782 Self::LedgerFootprint(_) => "LedgerFootprint",
68783 Self::SorobanResources(_) => "SorobanResources",
68784 Self::SorobanResourcesExtV0(_) => "SorobanResourcesExtV0",
68785 Self::SorobanTransactionData(_) => "SorobanTransactionData",
68786 Self::SorobanTransactionDataExt(_) => "SorobanTransactionDataExt",
68787 Self::TransactionV0(_) => "TransactionV0",
68788 Self::TransactionV0Ext(_) => "TransactionV0Ext",
68789 Self::TransactionV0Envelope(_) => "TransactionV0Envelope",
68790 Self::Transaction(_) => "Transaction",
68791 Self::TransactionExt(_) => "TransactionExt",
68792 Self::TransactionV1Envelope(_) => "TransactionV1Envelope",
68793 Self::FeeBumpTransaction(_) => "FeeBumpTransaction",
68794 Self::FeeBumpTransactionInnerTx(_) => "FeeBumpTransactionInnerTx",
68795 Self::FeeBumpTransactionExt(_) => "FeeBumpTransactionExt",
68796 Self::FeeBumpTransactionEnvelope(_) => "FeeBumpTransactionEnvelope",
68797 Self::TransactionEnvelope(_) => "TransactionEnvelope",
68798 Self::TransactionSignaturePayload(_) => "TransactionSignaturePayload",
68799 Self::TransactionSignaturePayloadTaggedTransaction(_) => {
68800 "TransactionSignaturePayloadTaggedTransaction"
68801 }
68802 Self::ClaimAtomType(_) => "ClaimAtomType",
68803 Self::ClaimOfferAtomV0(_) => "ClaimOfferAtomV0",
68804 Self::ClaimOfferAtom(_) => "ClaimOfferAtom",
68805 Self::ClaimLiquidityAtom(_) => "ClaimLiquidityAtom",
68806 Self::ClaimAtom(_) => "ClaimAtom",
68807 Self::CreateAccountResultCode(_) => "CreateAccountResultCode",
68808 Self::CreateAccountResult(_) => "CreateAccountResult",
68809 Self::PaymentResultCode(_) => "PaymentResultCode",
68810 Self::PaymentResult(_) => "PaymentResult",
68811 Self::PathPaymentStrictReceiveResultCode(_) => "PathPaymentStrictReceiveResultCode",
68812 Self::SimplePaymentResult(_) => "SimplePaymentResult",
68813 Self::PathPaymentStrictReceiveResult(_) => "PathPaymentStrictReceiveResult",
68814 Self::PathPaymentStrictReceiveResultSuccess(_) => {
68815 "PathPaymentStrictReceiveResultSuccess"
68816 }
68817 Self::PathPaymentStrictSendResultCode(_) => "PathPaymentStrictSendResultCode",
68818 Self::PathPaymentStrictSendResult(_) => "PathPaymentStrictSendResult",
68819 Self::PathPaymentStrictSendResultSuccess(_) => "PathPaymentStrictSendResultSuccess",
68820 Self::ManageSellOfferResultCode(_) => "ManageSellOfferResultCode",
68821 Self::ManageOfferEffect(_) => "ManageOfferEffect",
68822 Self::ManageOfferSuccessResult(_) => "ManageOfferSuccessResult",
68823 Self::ManageOfferSuccessResultOffer(_) => "ManageOfferSuccessResultOffer",
68824 Self::ManageSellOfferResult(_) => "ManageSellOfferResult",
68825 Self::ManageBuyOfferResultCode(_) => "ManageBuyOfferResultCode",
68826 Self::ManageBuyOfferResult(_) => "ManageBuyOfferResult",
68827 Self::SetOptionsResultCode(_) => "SetOptionsResultCode",
68828 Self::SetOptionsResult(_) => "SetOptionsResult",
68829 Self::ChangeTrustResultCode(_) => "ChangeTrustResultCode",
68830 Self::ChangeTrustResult(_) => "ChangeTrustResult",
68831 Self::AllowTrustResultCode(_) => "AllowTrustResultCode",
68832 Self::AllowTrustResult(_) => "AllowTrustResult",
68833 Self::AccountMergeResultCode(_) => "AccountMergeResultCode",
68834 Self::AccountMergeResult(_) => "AccountMergeResult",
68835 Self::InflationResultCode(_) => "InflationResultCode",
68836 Self::InflationPayout(_) => "InflationPayout",
68837 Self::InflationResult(_) => "InflationResult",
68838 Self::ManageDataResultCode(_) => "ManageDataResultCode",
68839 Self::ManageDataResult(_) => "ManageDataResult",
68840 Self::BumpSequenceResultCode(_) => "BumpSequenceResultCode",
68841 Self::BumpSequenceResult(_) => "BumpSequenceResult",
68842 Self::CreateClaimableBalanceResultCode(_) => "CreateClaimableBalanceResultCode",
68843 Self::CreateClaimableBalanceResult(_) => "CreateClaimableBalanceResult",
68844 Self::ClaimClaimableBalanceResultCode(_) => "ClaimClaimableBalanceResultCode",
68845 Self::ClaimClaimableBalanceResult(_) => "ClaimClaimableBalanceResult",
68846 Self::BeginSponsoringFutureReservesResultCode(_) => {
68847 "BeginSponsoringFutureReservesResultCode"
68848 }
68849 Self::BeginSponsoringFutureReservesResult(_) => "BeginSponsoringFutureReservesResult",
68850 Self::EndSponsoringFutureReservesResultCode(_) => {
68851 "EndSponsoringFutureReservesResultCode"
68852 }
68853 Self::EndSponsoringFutureReservesResult(_) => "EndSponsoringFutureReservesResult",
68854 Self::RevokeSponsorshipResultCode(_) => "RevokeSponsorshipResultCode",
68855 Self::RevokeSponsorshipResult(_) => "RevokeSponsorshipResult",
68856 Self::ClawbackResultCode(_) => "ClawbackResultCode",
68857 Self::ClawbackResult(_) => "ClawbackResult",
68858 Self::ClawbackClaimableBalanceResultCode(_) => "ClawbackClaimableBalanceResultCode",
68859 Self::ClawbackClaimableBalanceResult(_) => "ClawbackClaimableBalanceResult",
68860 Self::SetTrustLineFlagsResultCode(_) => "SetTrustLineFlagsResultCode",
68861 Self::SetTrustLineFlagsResult(_) => "SetTrustLineFlagsResult",
68862 Self::LiquidityPoolDepositResultCode(_) => "LiquidityPoolDepositResultCode",
68863 Self::LiquidityPoolDepositResult(_) => "LiquidityPoolDepositResult",
68864 Self::LiquidityPoolWithdrawResultCode(_) => "LiquidityPoolWithdrawResultCode",
68865 Self::LiquidityPoolWithdrawResult(_) => "LiquidityPoolWithdrawResult",
68866 Self::InvokeHostFunctionResultCode(_) => "InvokeHostFunctionResultCode",
68867 Self::InvokeHostFunctionResult(_) => "InvokeHostFunctionResult",
68868 Self::ExtendFootprintTtlResultCode(_) => "ExtendFootprintTtlResultCode",
68869 Self::ExtendFootprintTtlResult(_) => "ExtendFootprintTtlResult",
68870 Self::RestoreFootprintResultCode(_) => "RestoreFootprintResultCode",
68871 Self::RestoreFootprintResult(_) => "RestoreFootprintResult",
68872 Self::OperationResultCode(_) => "OperationResultCode",
68873 Self::OperationResult(_) => "OperationResult",
68874 Self::OperationResultTr(_) => "OperationResultTr",
68875 Self::TransactionResultCode(_) => "TransactionResultCode",
68876 Self::InnerTransactionResult(_) => "InnerTransactionResult",
68877 Self::InnerTransactionResultResult(_) => "InnerTransactionResultResult",
68878 Self::InnerTransactionResultExt(_) => "InnerTransactionResultExt",
68879 Self::InnerTransactionResultPair(_) => "InnerTransactionResultPair",
68880 Self::TransactionResult(_) => "TransactionResult",
68881 Self::TransactionResultResult(_) => "TransactionResultResult",
68882 Self::TransactionResultExt(_) => "TransactionResultExt",
68883 Self::Hash(_) => "Hash",
68884 Self::Uint256(_) => "Uint256",
68885 Self::Uint32(_) => "Uint32",
68886 Self::Int32(_) => "Int32",
68887 Self::Uint64(_) => "Uint64",
68888 Self::Int64(_) => "Int64",
68889 Self::TimePoint(_) => "TimePoint",
68890 Self::Duration(_) => "Duration",
68891 Self::ExtensionPoint(_) => "ExtensionPoint",
68892 Self::CryptoKeyType(_) => "CryptoKeyType",
68893 Self::PublicKeyType(_) => "PublicKeyType",
68894 Self::SignerKeyType(_) => "SignerKeyType",
68895 Self::PublicKey(_) => "PublicKey",
68896 Self::SignerKey(_) => "SignerKey",
68897 Self::SignerKeyEd25519SignedPayload(_) => "SignerKeyEd25519SignedPayload",
68898 Self::Signature(_) => "Signature",
68899 Self::SignatureHint(_) => "SignatureHint",
68900 Self::NodeId(_) => "NodeId",
68901 Self::AccountId(_) => "AccountId",
68902 Self::ContractId(_) => "ContractId",
68903 Self::Curve25519Secret(_) => "Curve25519Secret",
68904 Self::Curve25519Public(_) => "Curve25519Public",
68905 Self::HmacSha256Key(_) => "HmacSha256Key",
68906 Self::HmacSha256Mac(_) => "HmacSha256Mac",
68907 Self::ShortHashSeed(_) => "ShortHashSeed",
68908 Self::BinaryFuseFilterType(_) => "BinaryFuseFilterType",
68909 Self::SerializedBinaryFuseFilter(_) => "SerializedBinaryFuseFilter",
68910 Self::PoolId(_) => "PoolId",
68911 Self::ClaimableBalanceIdType(_) => "ClaimableBalanceIdType",
68912 Self::ClaimableBalanceId(_) => "ClaimableBalanceId",
68913 }
68914 }
68915
68916 #[must_use]
68917 #[allow(clippy::too_many_lines)]
68918 pub const fn variants() -> [TypeVariant; 463] {
68919 Self::VARIANTS
68920 }
68921
68922 #[must_use]
68923 #[allow(clippy::too_many_lines)]
68924 pub const fn variant(&self) -> TypeVariant {
68925 match self {
68926 Self::Value(_) => TypeVariant::Value,
68927 Self::ScpBallot(_) => TypeVariant::ScpBallot,
68928 Self::ScpStatementType(_) => TypeVariant::ScpStatementType,
68929 Self::ScpNomination(_) => TypeVariant::ScpNomination,
68930 Self::ScpStatement(_) => TypeVariant::ScpStatement,
68931 Self::ScpStatementPledges(_) => TypeVariant::ScpStatementPledges,
68932 Self::ScpStatementPrepare(_) => TypeVariant::ScpStatementPrepare,
68933 Self::ScpStatementConfirm(_) => TypeVariant::ScpStatementConfirm,
68934 Self::ScpStatementExternalize(_) => TypeVariant::ScpStatementExternalize,
68935 Self::ScpEnvelope(_) => TypeVariant::ScpEnvelope,
68936 Self::ScpQuorumSet(_) => TypeVariant::ScpQuorumSet,
68937 Self::ConfigSettingContractExecutionLanesV0(_) => {
68938 TypeVariant::ConfigSettingContractExecutionLanesV0
68939 }
68940 Self::ConfigSettingContractComputeV0(_) => TypeVariant::ConfigSettingContractComputeV0,
68941 Self::ConfigSettingContractParallelComputeV0(_) => {
68942 TypeVariant::ConfigSettingContractParallelComputeV0
68943 }
68944 Self::ConfigSettingContractLedgerCostV0(_) => {
68945 TypeVariant::ConfigSettingContractLedgerCostV0
68946 }
68947 Self::ConfigSettingContractLedgerCostExtV0(_) => {
68948 TypeVariant::ConfigSettingContractLedgerCostExtV0
68949 }
68950 Self::ConfigSettingContractHistoricalDataV0(_) => {
68951 TypeVariant::ConfigSettingContractHistoricalDataV0
68952 }
68953 Self::ConfigSettingContractEventsV0(_) => TypeVariant::ConfigSettingContractEventsV0,
68954 Self::ConfigSettingContractBandwidthV0(_) => {
68955 TypeVariant::ConfigSettingContractBandwidthV0
68956 }
68957 Self::ContractCostType(_) => TypeVariant::ContractCostType,
68958 Self::ContractCostParamEntry(_) => TypeVariant::ContractCostParamEntry,
68959 Self::StateArchivalSettings(_) => TypeVariant::StateArchivalSettings,
68960 Self::EvictionIterator(_) => TypeVariant::EvictionIterator,
68961 Self::ConfigSettingScpTiming(_) => TypeVariant::ConfigSettingScpTiming,
68962 Self::ContractCostParams(_) => TypeVariant::ContractCostParams,
68963 Self::ConfigSettingId(_) => TypeVariant::ConfigSettingId,
68964 Self::ConfigSettingEntry(_) => TypeVariant::ConfigSettingEntry,
68965 Self::ScEnvMetaKind(_) => TypeVariant::ScEnvMetaKind,
68966 Self::ScEnvMetaEntry(_) => TypeVariant::ScEnvMetaEntry,
68967 Self::ScEnvMetaEntryInterfaceVersion(_) => TypeVariant::ScEnvMetaEntryInterfaceVersion,
68968 Self::ScMetaV0(_) => TypeVariant::ScMetaV0,
68969 Self::ScMetaKind(_) => TypeVariant::ScMetaKind,
68970 Self::ScMetaEntry(_) => TypeVariant::ScMetaEntry,
68971 Self::ScSpecType(_) => TypeVariant::ScSpecType,
68972 Self::ScSpecTypeOption(_) => TypeVariant::ScSpecTypeOption,
68973 Self::ScSpecTypeResult(_) => TypeVariant::ScSpecTypeResult,
68974 Self::ScSpecTypeVec(_) => TypeVariant::ScSpecTypeVec,
68975 Self::ScSpecTypeMap(_) => TypeVariant::ScSpecTypeMap,
68976 Self::ScSpecTypeTuple(_) => TypeVariant::ScSpecTypeTuple,
68977 Self::ScSpecTypeBytesN(_) => TypeVariant::ScSpecTypeBytesN,
68978 Self::ScSpecTypeUdt(_) => TypeVariant::ScSpecTypeUdt,
68979 Self::ScSpecTypeDef(_) => TypeVariant::ScSpecTypeDef,
68980 Self::ScSpecUdtStructFieldV0(_) => TypeVariant::ScSpecUdtStructFieldV0,
68981 Self::ScSpecUdtStructV0(_) => TypeVariant::ScSpecUdtStructV0,
68982 Self::ScSpecUdtUnionCaseVoidV0(_) => TypeVariant::ScSpecUdtUnionCaseVoidV0,
68983 Self::ScSpecUdtUnionCaseTupleV0(_) => TypeVariant::ScSpecUdtUnionCaseTupleV0,
68984 Self::ScSpecUdtUnionCaseV0Kind(_) => TypeVariant::ScSpecUdtUnionCaseV0Kind,
68985 Self::ScSpecUdtUnionCaseV0(_) => TypeVariant::ScSpecUdtUnionCaseV0,
68986 Self::ScSpecUdtUnionV0(_) => TypeVariant::ScSpecUdtUnionV0,
68987 Self::ScSpecUdtEnumCaseV0(_) => TypeVariant::ScSpecUdtEnumCaseV0,
68988 Self::ScSpecUdtEnumV0(_) => TypeVariant::ScSpecUdtEnumV0,
68989 Self::ScSpecUdtErrorEnumCaseV0(_) => TypeVariant::ScSpecUdtErrorEnumCaseV0,
68990 Self::ScSpecUdtErrorEnumV0(_) => TypeVariant::ScSpecUdtErrorEnumV0,
68991 Self::ScSpecFunctionInputV0(_) => TypeVariant::ScSpecFunctionInputV0,
68992 Self::ScSpecFunctionV0(_) => TypeVariant::ScSpecFunctionV0,
68993 Self::ScSpecEventParamLocationV0(_) => TypeVariant::ScSpecEventParamLocationV0,
68994 Self::ScSpecEventParamV0(_) => TypeVariant::ScSpecEventParamV0,
68995 Self::ScSpecEventDataFormat(_) => TypeVariant::ScSpecEventDataFormat,
68996 Self::ScSpecEventV0(_) => TypeVariant::ScSpecEventV0,
68997 Self::ScSpecEntryKind(_) => TypeVariant::ScSpecEntryKind,
68998 Self::ScSpecEntry(_) => TypeVariant::ScSpecEntry,
68999 Self::ScValType(_) => TypeVariant::ScValType,
69000 Self::ScErrorType(_) => TypeVariant::ScErrorType,
69001 Self::ScErrorCode(_) => TypeVariant::ScErrorCode,
69002 Self::ScError(_) => TypeVariant::ScError,
69003 Self::UInt128Parts(_) => TypeVariant::UInt128Parts,
69004 Self::Int128Parts(_) => TypeVariant::Int128Parts,
69005 Self::UInt256Parts(_) => TypeVariant::UInt256Parts,
69006 Self::Int256Parts(_) => TypeVariant::Int256Parts,
69007 Self::ContractExecutableType(_) => TypeVariant::ContractExecutableType,
69008 Self::ContractExecutable(_) => TypeVariant::ContractExecutable,
69009 Self::ScAddressType(_) => TypeVariant::ScAddressType,
69010 Self::MuxedEd25519Account(_) => TypeVariant::MuxedEd25519Account,
69011 Self::ScAddress(_) => TypeVariant::ScAddress,
69012 Self::ScVec(_) => TypeVariant::ScVec,
69013 Self::ScMap(_) => TypeVariant::ScMap,
69014 Self::ScBytes(_) => TypeVariant::ScBytes,
69015 Self::ScString(_) => TypeVariant::ScString,
69016 Self::ScSymbol(_) => TypeVariant::ScSymbol,
69017 Self::ScNonceKey(_) => TypeVariant::ScNonceKey,
69018 Self::ScContractInstance(_) => TypeVariant::ScContractInstance,
69019 Self::ScVal(_) => TypeVariant::ScVal,
69020 Self::ScMapEntry(_) => TypeVariant::ScMapEntry,
69021 Self::LedgerCloseMetaBatch(_) => TypeVariant::LedgerCloseMetaBatch,
69022 Self::StoredTransactionSet(_) => TypeVariant::StoredTransactionSet,
69023 Self::StoredDebugTransactionSet(_) => TypeVariant::StoredDebugTransactionSet,
69024 Self::PersistedScpStateV0(_) => TypeVariant::PersistedScpStateV0,
69025 Self::PersistedScpStateV1(_) => TypeVariant::PersistedScpStateV1,
69026 Self::PersistedScpState(_) => TypeVariant::PersistedScpState,
69027 Self::Thresholds(_) => TypeVariant::Thresholds,
69028 Self::String32(_) => TypeVariant::String32,
69029 Self::String64(_) => TypeVariant::String64,
69030 Self::SequenceNumber(_) => TypeVariant::SequenceNumber,
69031 Self::DataValue(_) => TypeVariant::DataValue,
69032 Self::AssetCode4(_) => TypeVariant::AssetCode4,
69033 Self::AssetCode12(_) => TypeVariant::AssetCode12,
69034 Self::AssetType(_) => TypeVariant::AssetType,
69035 Self::AssetCode(_) => TypeVariant::AssetCode,
69036 Self::AlphaNum4(_) => TypeVariant::AlphaNum4,
69037 Self::AlphaNum12(_) => TypeVariant::AlphaNum12,
69038 Self::Asset(_) => TypeVariant::Asset,
69039 Self::Price(_) => TypeVariant::Price,
69040 Self::Liabilities(_) => TypeVariant::Liabilities,
69041 Self::ThresholdIndexes(_) => TypeVariant::ThresholdIndexes,
69042 Self::LedgerEntryType(_) => TypeVariant::LedgerEntryType,
69043 Self::Signer(_) => TypeVariant::Signer,
69044 Self::AccountFlags(_) => TypeVariant::AccountFlags,
69045 Self::SponsorshipDescriptor(_) => TypeVariant::SponsorshipDescriptor,
69046 Self::AccountEntryExtensionV3(_) => TypeVariant::AccountEntryExtensionV3,
69047 Self::AccountEntryExtensionV2(_) => TypeVariant::AccountEntryExtensionV2,
69048 Self::AccountEntryExtensionV2Ext(_) => TypeVariant::AccountEntryExtensionV2Ext,
69049 Self::AccountEntryExtensionV1(_) => TypeVariant::AccountEntryExtensionV1,
69050 Self::AccountEntryExtensionV1Ext(_) => TypeVariant::AccountEntryExtensionV1Ext,
69051 Self::AccountEntry(_) => TypeVariant::AccountEntry,
69052 Self::AccountEntryExt(_) => TypeVariant::AccountEntryExt,
69053 Self::TrustLineFlags(_) => TypeVariant::TrustLineFlags,
69054 Self::LiquidityPoolType(_) => TypeVariant::LiquidityPoolType,
69055 Self::TrustLineAsset(_) => TypeVariant::TrustLineAsset,
69056 Self::TrustLineEntryExtensionV2(_) => TypeVariant::TrustLineEntryExtensionV2,
69057 Self::TrustLineEntryExtensionV2Ext(_) => TypeVariant::TrustLineEntryExtensionV2Ext,
69058 Self::TrustLineEntry(_) => TypeVariant::TrustLineEntry,
69059 Self::TrustLineEntryExt(_) => TypeVariant::TrustLineEntryExt,
69060 Self::TrustLineEntryV1(_) => TypeVariant::TrustLineEntryV1,
69061 Self::TrustLineEntryV1Ext(_) => TypeVariant::TrustLineEntryV1Ext,
69062 Self::OfferEntryFlags(_) => TypeVariant::OfferEntryFlags,
69063 Self::OfferEntry(_) => TypeVariant::OfferEntry,
69064 Self::OfferEntryExt(_) => TypeVariant::OfferEntryExt,
69065 Self::DataEntry(_) => TypeVariant::DataEntry,
69066 Self::DataEntryExt(_) => TypeVariant::DataEntryExt,
69067 Self::ClaimPredicateType(_) => TypeVariant::ClaimPredicateType,
69068 Self::ClaimPredicate(_) => TypeVariant::ClaimPredicate,
69069 Self::ClaimantType(_) => TypeVariant::ClaimantType,
69070 Self::Claimant(_) => TypeVariant::Claimant,
69071 Self::ClaimantV0(_) => TypeVariant::ClaimantV0,
69072 Self::ClaimableBalanceFlags(_) => TypeVariant::ClaimableBalanceFlags,
69073 Self::ClaimableBalanceEntryExtensionV1(_) => {
69074 TypeVariant::ClaimableBalanceEntryExtensionV1
69075 }
69076 Self::ClaimableBalanceEntryExtensionV1Ext(_) => {
69077 TypeVariant::ClaimableBalanceEntryExtensionV1Ext
69078 }
69079 Self::ClaimableBalanceEntry(_) => TypeVariant::ClaimableBalanceEntry,
69080 Self::ClaimableBalanceEntryExt(_) => TypeVariant::ClaimableBalanceEntryExt,
69081 Self::LiquidityPoolConstantProductParameters(_) => {
69082 TypeVariant::LiquidityPoolConstantProductParameters
69083 }
69084 Self::LiquidityPoolEntry(_) => TypeVariant::LiquidityPoolEntry,
69085 Self::LiquidityPoolEntryBody(_) => TypeVariant::LiquidityPoolEntryBody,
69086 Self::LiquidityPoolEntryConstantProduct(_) => {
69087 TypeVariant::LiquidityPoolEntryConstantProduct
69088 }
69089 Self::ContractDataDurability(_) => TypeVariant::ContractDataDurability,
69090 Self::ContractDataEntry(_) => TypeVariant::ContractDataEntry,
69091 Self::ContractCodeCostInputs(_) => TypeVariant::ContractCodeCostInputs,
69092 Self::ContractCodeEntry(_) => TypeVariant::ContractCodeEntry,
69093 Self::ContractCodeEntryExt(_) => TypeVariant::ContractCodeEntryExt,
69094 Self::ContractCodeEntryV1(_) => TypeVariant::ContractCodeEntryV1,
69095 Self::TtlEntry(_) => TypeVariant::TtlEntry,
69096 Self::LedgerEntryExtensionV1(_) => TypeVariant::LedgerEntryExtensionV1,
69097 Self::LedgerEntryExtensionV1Ext(_) => TypeVariant::LedgerEntryExtensionV1Ext,
69098 Self::LedgerEntry(_) => TypeVariant::LedgerEntry,
69099 Self::LedgerEntryData(_) => TypeVariant::LedgerEntryData,
69100 Self::LedgerEntryExt(_) => TypeVariant::LedgerEntryExt,
69101 Self::LedgerKey(_) => TypeVariant::LedgerKey,
69102 Self::LedgerKeyAccount(_) => TypeVariant::LedgerKeyAccount,
69103 Self::LedgerKeyTrustLine(_) => TypeVariant::LedgerKeyTrustLine,
69104 Self::LedgerKeyOffer(_) => TypeVariant::LedgerKeyOffer,
69105 Self::LedgerKeyData(_) => TypeVariant::LedgerKeyData,
69106 Self::LedgerKeyClaimableBalance(_) => TypeVariant::LedgerKeyClaimableBalance,
69107 Self::LedgerKeyLiquidityPool(_) => TypeVariant::LedgerKeyLiquidityPool,
69108 Self::LedgerKeyContractData(_) => TypeVariant::LedgerKeyContractData,
69109 Self::LedgerKeyContractCode(_) => TypeVariant::LedgerKeyContractCode,
69110 Self::LedgerKeyConfigSetting(_) => TypeVariant::LedgerKeyConfigSetting,
69111 Self::LedgerKeyTtl(_) => TypeVariant::LedgerKeyTtl,
69112 Self::EnvelopeType(_) => TypeVariant::EnvelopeType,
69113 Self::BucketListType(_) => TypeVariant::BucketListType,
69114 Self::BucketEntryType(_) => TypeVariant::BucketEntryType,
69115 Self::HotArchiveBucketEntryType(_) => TypeVariant::HotArchiveBucketEntryType,
69116 Self::BucketMetadata(_) => TypeVariant::BucketMetadata,
69117 Self::BucketMetadataExt(_) => TypeVariant::BucketMetadataExt,
69118 Self::BucketEntry(_) => TypeVariant::BucketEntry,
69119 Self::HotArchiveBucketEntry(_) => TypeVariant::HotArchiveBucketEntry,
69120 Self::UpgradeType(_) => TypeVariant::UpgradeType,
69121 Self::StellarValueType(_) => TypeVariant::StellarValueType,
69122 Self::LedgerCloseValueSignature(_) => TypeVariant::LedgerCloseValueSignature,
69123 Self::StellarValue(_) => TypeVariant::StellarValue,
69124 Self::StellarValueExt(_) => TypeVariant::StellarValueExt,
69125 Self::LedgerHeaderFlags(_) => TypeVariant::LedgerHeaderFlags,
69126 Self::LedgerHeaderExtensionV1(_) => TypeVariant::LedgerHeaderExtensionV1,
69127 Self::LedgerHeaderExtensionV1Ext(_) => TypeVariant::LedgerHeaderExtensionV1Ext,
69128 Self::LedgerHeader(_) => TypeVariant::LedgerHeader,
69129 Self::LedgerHeaderExt(_) => TypeVariant::LedgerHeaderExt,
69130 Self::LedgerUpgradeType(_) => TypeVariant::LedgerUpgradeType,
69131 Self::ConfigUpgradeSetKey(_) => TypeVariant::ConfigUpgradeSetKey,
69132 Self::LedgerUpgrade(_) => TypeVariant::LedgerUpgrade,
69133 Self::ConfigUpgradeSet(_) => TypeVariant::ConfigUpgradeSet,
69134 Self::TxSetComponentType(_) => TypeVariant::TxSetComponentType,
69135 Self::DependentTxCluster(_) => TypeVariant::DependentTxCluster,
69136 Self::ParallelTxExecutionStage(_) => TypeVariant::ParallelTxExecutionStage,
69137 Self::ParallelTxsComponent(_) => TypeVariant::ParallelTxsComponent,
69138 Self::TxSetComponent(_) => TypeVariant::TxSetComponent,
69139 Self::TxSetComponentTxsMaybeDiscountedFee(_) => {
69140 TypeVariant::TxSetComponentTxsMaybeDiscountedFee
69141 }
69142 Self::TransactionPhase(_) => TypeVariant::TransactionPhase,
69143 Self::TransactionSet(_) => TypeVariant::TransactionSet,
69144 Self::TransactionSetV1(_) => TypeVariant::TransactionSetV1,
69145 Self::GeneralizedTransactionSet(_) => TypeVariant::GeneralizedTransactionSet,
69146 Self::TransactionResultPair(_) => TypeVariant::TransactionResultPair,
69147 Self::TransactionResultSet(_) => TypeVariant::TransactionResultSet,
69148 Self::TransactionHistoryEntry(_) => TypeVariant::TransactionHistoryEntry,
69149 Self::TransactionHistoryEntryExt(_) => TypeVariant::TransactionHistoryEntryExt,
69150 Self::TransactionHistoryResultEntry(_) => TypeVariant::TransactionHistoryResultEntry,
69151 Self::TransactionHistoryResultEntryExt(_) => {
69152 TypeVariant::TransactionHistoryResultEntryExt
69153 }
69154 Self::LedgerHeaderHistoryEntry(_) => TypeVariant::LedgerHeaderHistoryEntry,
69155 Self::LedgerHeaderHistoryEntryExt(_) => TypeVariant::LedgerHeaderHistoryEntryExt,
69156 Self::LedgerScpMessages(_) => TypeVariant::LedgerScpMessages,
69157 Self::ScpHistoryEntryV0(_) => TypeVariant::ScpHistoryEntryV0,
69158 Self::ScpHistoryEntry(_) => TypeVariant::ScpHistoryEntry,
69159 Self::LedgerEntryChangeType(_) => TypeVariant::LedgerEntryChangeType,
69160 Self::LedgerEntryChange(_) => TypeVariant::LedgerEntryChange,
69161 Self::LedgerEntryChanges(_) => TypeVariant::LedgerEntryChanges,
69162 Self::OperationMeta(_) => TypeVariant::OperationMeta,
69163 Self::TransactionMetaV1(_) => TypeVariant::TransactionMetaV1,
69164 Self::TransactionMetaV2(_) => TypeVariant::TransactionMetaV2,
69165 Self::ContractEventType(_) => TypeVariant::ContractEventType,
69166 Self::ContractEvent(_) => TypeVariant::ContractEvent,
69167 Self::ContractEventBody(_) => TypeVariant::ContractEventBody,
69168 Self::ContractEventV0(_) => TypeVariant::ContractEventV0,
69169 Self::DiagnosticEvent(_) => TypeVariant::DiagnosticEvent,
69170 Self::SorobanTransactionMetaExtV1(_) => TypeVariant::SorobanTransactionMetaExtV1,
69171 Self::SorobanTransactionMetaExt(_) => TypeVariant::SorobanTransactionMetaExt,
69172 Self::SorobanTransactionMeta(_) => TypeVariant::SorobanTransactionMeta,
69173 Self::TransactionMetaV3(_) => TypeVariant::TransactionMetaV3,
69174 Self::OperationMetaV2(_) => TypeVariant::OperationMetaV2,
69175 Self::SorobanTransactionMetaV2(_) => TypeVariant::SorobanTransactionMetaV2,
69176 Self::TransactionEventStage(_) => TypeVariant::TransactionEventStage,
69177 Self::TransactionEvent(_) => TypeVariant::TransactionEvent,
69178 Self::TransactionMetaV4(_) => TypeVariant::TransactionMetaV4,
69179 Self::InvokeHostFunctionSuccessPreImage(_) => {
69180 TypeVariant::InvokeHostFunctionSuccessPreImage
69181 }
69182 Self::TransactionMeta(_) => TypeVariant::TransactionMeta,
69183 Self::TransactionResultMeta(_) => TypeVariant::TransactionResultMeta,
69184 Self::TransactionResultMetaV1(_) => TypeVariant::TransactionResultMetaV1,
69185 Self::UpgradeEntryMeta(_) => TypeVariant::UpgradeEntryMeta,
69186 Self::LedgerCloseMetaV0(_) => TypeVariant::LedgerCloseMetaV0,
69187 Self::LedgerCloseMetaExtV1(_) => TypeVariant::LedgerCloseMetaExtV1,
69188 Self::LedgerCloseMetaExt(_) => TypeVariant::LedgerCloseMetaExt,
69189 Self::LedgerCloseMetaV1(_) => TypeVariant::LedgerCloseMetaV1,
69190 Self::LedgerCloseMetaV2(_) => TypeVariant::LedgerCloseMetaV2,
69191 Self::LedgerCloseMeta(_) => TypeVariant::LedgerCloseMeta,
69192 Self::ErrorCode(_) => TypeVariant::ErrorCode,
69193 Self::SError(_) => TypeVariant::SError,
69194 Self::SendMore(_) => TypeVariant::SendMore,
69195 Self::SendMoreExtended(_) => TypeVariant::SendMoreExtended,
69196 Self::AuthCert(_) => TypeVariant::AuthCert,
69197 Self::Hello(_) => TypeVariant::Hello,
69198 Self::Auth(_) => TypeVariant::Auth,
69199 Self::IpAddrType(_) => TypeVariant::IpAddrType,
69200 Self::PeerAddress(_) => TypeVariant::PeerAddress,
69201 Self::PeerAddressIp(_) => TypeVariant::PeerAddressIp,
69202 Self::MessageType(_) => TypeVariant::MessageType,
69203 Self::DontHave(_) => TypeVariant::DontHave,
69204 Self::SurveyMessageCommandType(_) => TypeVariant::SurveyMessageCommandType,
69205 Self::SurveyMessageResponseType(_) => TypeVariant::SurveyMessageResponseType,
69206 Self::TimeSlicedSurveyStartCollectingMessage(_) => {
69207 TypeVariant::TimeSlicedSurveyStartCollectingMessage
69208 }
69209 Self::SignedTimeSlicedSurveyStartCollectingMessage(_) => {
69210 TypeVariant::SignedTimeSlicedSurveyStartCollectingMessage
69211 }
69212 Self::TimeSlicedSurveyStopCollectingMessage(_) => {
69213 TypeVariant::TimeSlicedSurveyStopCollectingMessage
69214 }
69215 Self::SignedTimeSlicedSurveyStopCollectingMessage(_) => {
69216 TypeVariant::SignedTimeSlicedSurveyStopCollectingMessage
69217 }
69218 Self::SurveyRequestMessage(_) => TypeVariant::SurveyRequestMessage,
69219 Self::TimeSlicedSurveyRequestMessage(_) => TypeVariant::TimeSlicedSurveyRequestMessage,
69220 Self::SignedTimeSlicedSurveyRequestMessage(_) => {
69221 TypeVariant::SignedTimeSlicedSurveyRequestMessage
69222 }
69223 Self::EncryptedBody(_) => TypeVariant::EncryptedBody,
69224 Self::SurveyResponseMessage(_) => TypeVariant::SurveyResponseMessage,
69225 Self::TimeSlicedSurveyResponseMessage(_) => {
69226 TypeVariant::TimeSlicedSurveyResponseMessage
69227 }
69228 Self::SignedTimeSlicedSurveyResponseMessage(_) => {
69229 TypeVariant::SignedTimeSlicedSurveyResponseMessage
69230 }
69231 Self::PeerStats(_) => TypeVariant::PeerStats,
69232 Self::TimeSlicedNodeData(_) => TypeVariant::TimeSlicedNodeData,
69233 Self::TimeSlicedPeerData(_) => TypeVariant::TimeSlicedPeerData,
69234 Self::TimeSlicedPeerDataList(_) => TypeVariant::TimeSlicedPeerDataList,
69235 Self::TopologyResponseBodyV2(_) => TypeVariant::TopologyResponseBodyV2,
69236 Self::SurveyResponseBody(_) => TypeVariant::SurveyResponseBody,
69237 Self::TxAdvertVector(_) => TypeVariant::TxAdvertVector,
69238 Self::FloodAdvert(_) => TypeVariant::FloodAdvert,
69239 Self::TxDemandVector(_) => TypeVariant::TxDemandVector,
69240 Self::FloodDemand(_) => TypeVariant::FloodDemand,
69241 Self::StellarMessage(_) => TypeVariant::StellarMessage,
69242 Self::AuthenticatedMessage(_) => TypeVariant::AuthenticatedMessage,
69243 Self::AuthenticatedMessageV0(_) => TypeVariant::AuthenticatedMessageV0,
69244 Self::LiquidityPoolParameters(_) => TypeVariant::LiquidityPoolParameters,
69245 Self::MuxedAccount(_) => TypeVariant::MuxedAccount,
69246 Self::MuxedAccountMed25519(_) => TypeVariant::MuxedAccountMed25519,
69247 Self::DecoratedSignature(_) => TypeVariant::DecoratedSignature,
69248 Self::OperationType(_) => TypeVariant::OperationType,
69249 Self::CreateAccountOp(_) => TypeVariant::CreateAccountOp,
69250 Self::PaymentOp(_) => TypeVariant::PaymentOp,
69251 Self::PathPaymentStrictReceiveOp(_) => TypeVariant::PathPaymentStrictReceiveOp,
69252 Self::PathPaymentStrictSendOp(_) => TypeVariant::PathPaymentStrictSendOp,
69253 Self::ManageSellOfferOp(_) => TypeVariant::ManageSellOfferOp,
69254 Self::ManageBuyOfferOp(_) => TypeVariant::ManageBuyOfferOp,
69255 Self::CreatePassiveSellOfferOp(_) => TypeVariant::CreatePassiveSellOfferOp,
69256 Self::SetOptionsOp(_) => TypeVariant::SetOptionsOp,
69257 Self::ChangeTrustAsset(_) => TypeVariant::ChangeTrustAsset,
69258 Self::ChangeTrustOp(_) => TypeVariant::ChangeTrustOp,
69259 Self::AllowTrustOp(_) => TypeVariant::AllowTrustOp,
69260 Self::ManageDataOp(_) => TypeVariant::ManageDataOp,
69261 Self::BumpSequenceOp(_) => TypeVariant::BumpSequenceOp,
69262 Self::CreateClaimableBalanceOp(_) => TypeVariant::CreateClaimableBalanceOp,
69263 Self::ClaimClaimableBalanceOp(_) => TypeVariant::ClaimClaimableBalanceOp,
69264 Self::BeginSponsoringFutureReservesOp(_) => {
69265 TypeVariant::BeginSponsoringFutureReservesOp
69266 }
69267 Self::RevokeSponsorshipType(_) => TypeVariant::RevokeSponsorshipType,
69268 Self::RevokeSponsorshipOp(_) => TypeVariant::RevokeSponsorshipOp,
69269 Self::RevokeSponsorshipOpSigner(_) => TypeVariant::RevokeSponsorshipOpSigner,
69270 Self::ClawbackOp(_) => TypeVariant::ClawbackOp,
69271 Self::ClawbackClaimableBalanceOp(_) => TypeVariant::ClawbackClaimableBalanceOp,
69272 Self::SetTrustLineFlagsOp(_) => TypeVariant::SetTrustLineFlagsOp,
69273 Self::LiquidityPoolDepositOp(_) => TypeVariant::LiquidityPoolDepositOp,
69274 Self::LiquidityPoolWithdrawOp(_) => TypeVariant::LiquidityPoolWithdrawOp,
69275 Self::HostFunctionType(_) => TypeVariant::HostFunctionType,
69276 Self::ContractIdPreimageType(_) => TypeVariant::ContractIdPreimageType,
69277 Self::ContractIdPreimage(_) => TypeVariant::ContractIdPreimage,
69278 Self::ContractIdPreimageFromAddress(_) => TypeVariant::ContractIdPreimageFromAddress,
69279 Self::CreateContractArgs(_) => TypeVariant::CreateContractArgs,
69280 Self::CreateContractArgsV2(_) => TypeVariant::CreateContractArgsV2,
69281 Self::InvokeContractArgs(_) => TypeVariant::InvokeContractArgs,
69282 Self::HostFunction(_) => TypeVariant::HostFunction,
69283 Self::SorobanAuthorizedFunctionType(_) => TypeVariant::SorobanAuthorizedFunctionType,
69284 Self::SorobanAuthorizedFunction(_) => TypeVariant::SorobanAuthorizedFunction,
69285 Self::SorobanAuthorizedInvocation(_) => TypeVariant::SorobanAuthorizedInvocation,
69286 Self::SorobanAddressCredentials(_) => TypeVariant::SorobanAddressCredentials,
69287 Self::SorobanCredentialsType(_) => TypeVariant::SorobanCredentialsType,
69288 Self::SorobanCredentials(_) => TypeVariant::SorobanCredentials,
69289 Self::SorobanAuthorizationEntry(_) => TypeVariant::SorobanAuthorizationEntry,
69290 Self::SorobanAuthorizationEntries(_) => TypeVariant::SorobanAuthorizationEntries,
69291 Self::InvokeHostFunctionOp(_) => TypeVariant::InvokeHostFunctionOp,
69292 Self::ExtendFootprintTtlOp(_) => TypeVariant::ExtendFootprintTtlOp,
69293 Self::RestoreFootprintOp(_) => TypeVariant::RestoreFootprintOp,
69294 Self::Operation(_) => TypeVariant::Operation,
69295 Self::OperationBody(_) => TypeVariant::OperationBody,
69296 Self::HashIdPreimage(_) => TypeVariant::HashIdPreimage,
69297 Self::HashIdPreimageOperationId(_) => TypeVariant::HashIdPreimageOperationId,
69298 Self::HashIdPreimageRevokeId(_) => TypeVariant::HashIdPreimageRevokeId,
69299 Self::HashIdPreimageContractId(_) => TypeVariant::HashIdPreimageContractId,
69300 Self::HashIdPreimageSorobanAuthorization(_) => {
69301 TypeVariant::HashIdPreimageSorobanAuthorization
69302 }
69303 Self::MemoType(_) => TypeVariant::MemoType,
69304 Self::Memo(_) => TypeVariant::Memo,
69305 Self::TimeBounds(_) => TypeVariant::TimeBounds,
69306 Self::LedgerBounds(_) => TypeVariant::LedgerBounds,
69307 Self::PreconditionsV2(_) => TypeVariant::PreconditionsV2,
69308 Self::PreconditionType(_) => TypeVariant::PreconditionType,
69309 Self::Preconditions(_) => TypeVariant::Preconditions,
69310 Self::LedgerFootprint(_) => TypeVariant::LedgerFootprint,
69311 Self::SorobanResources(_) => TypeVariant::SorobanResources,
69312 Self::SorobanResourcesExtV0(_) => TypeVariant::SorobanResourcesExtV0,
69313 Self::SorobanTransactionData(_) => TypeVariant::SorobanTransactionData,
69314 Self::SorobanTransactionDataExt(_) => TypeVariant::SorobanTransactionDataExt,
69315 Self::TransactionV0(_) => TypeVariant::TransactionV0,
69316 Self::TransactionV0Ext(_) => TypeVariant::TransactionV0Ext,
69317 Self::TransactionV0Envelope(_) => TypeVariant::TransactionV0Envelope,
69318 Self::Transaction(_) => TypeVariant::Transaction,
69319 Self::TransactionExt(_) => TypeVariant::TransactionExt,
69320 Self::TransactionV1Envelope(_) => TypeVariant::TransactionV1Envelope,
69321 Self::FeeBumpTransaction(_) => TypeVariant::FeeBumpTransaction,
69322 Self::FeeBumpTransactionInnerTx(_) => TypeVariant::FeeBumpTransactionInnerTx,
69323 Self::FeeBumpTransactionExt(_) => TypeVariant::FeeBumpTransactionExt,
69324 Self::FeeBumpTransactionEnvelope(_) => TypeVariant::FeeBumpTransactionEnvelope,
69325 Self::TransactionEnvelope(_) => TypeVariant::TransactionEnvelope,
69326 Self::TransactionSignaturePayload(_) => TypeVariant::TransactionSignaturePayload,
69327 Self::TransactionSignaturePayloadTaggedTransaction(_) => {
69328 TypeVariant::TransactionSignaturePayloadTaggedTransaction
69329 }
69330 Self::ClaimAtomType(_) => TypeVariant::ClaimAtomType,
69331 Self::ClaimOfferAtomV0(_) => TypeVariant::ClaimOfferAtomV0,
69332 Self::ClaimOfferAtom(_) => TypeVariant::ClaimOfferAtom,
69333 Self::ClaimLiquidityAtom(_) => TypeVariant::ClaimLiquidityAtom,
69334 Self::ClaimAtom(_) => TypeVariant::ClaimAtom,
69335 Self::CreateAccountResultCode(_) => TypeVariant::CreateAccountResultCode,
69336 Self::CreateAccountResult(_) => TypeVariant::CreateAccountResult,
69337 Self::PaymentResultCode(_) => TypeVariant::PaymentResultCode,
69338 Self::PaymentResult(_) => TypeVariant::PaymentResult,
69339 Self::PathPaymentStrictReceiveResultCode(_) => {
69340 TypeVariant::PathPaymentStrictReceiveResultCode
69341 }
69342 Self::SimplePaymentResult(_) => TypeVariant::SimplePaymentResult,
69343 Self::PathPaymentStrictReceiveResult(_) => TypeVariant::PathPaymentStrictReceiveResult,
69344 Self::PathPaymentStrictReceiveResultSuccess(_) => {
69345 TypeVariant::PathPaymentStrictReceiveResultSuccess
69346 }
69347 Self::PathPaymentStrictSendResultCode(_) => {
69348 TypeVariant::PathPaymentStrictSendResultCode
69349 }
69350 Self::PathPaymentStrictSendResult(_) => TypeVariant::PathPaymentStrictSendResult,
69351 Self::PathPaymentStrictSendResultSuccess(_) => {
69352 TypeVariant::PathPaymentStrictSendResultSuccess
69353 }
69354 Self::ManageSellOfferResultCode(_) => TypeVariant::ManageSellOfferResultCode,
69355 Self::ManageOfferEffect(_) => TypeVariant::ManageOfferEffect,
69356 Self::ManageOfferSuccessResult(_) => TypeVariant::ManageOfferSuccessResult,
69357 Self::ManageOfferSuccessResultOffer(_) => TypeVariant::ManageOfferSuccessResultOffer,
69358 Self::ManageSellOfferResult(_) => TypeVariant::ManageSellOfferResult,
69359 Self::ManageBuyOfferResultCode(_) => TypeVariant::ManageBuyOfferResultCode,
69360 Self::ManageBuyOfferResult(_) => TypeVariant::ManageBuyOfferResult,
69361 Self::SetOptionsResultCode(_) => TypeVariant::SetOptionsResultCode,
69362 Self::SetOptionsResult(_) => TypeVariant::SetOptionsResult,
69363 Self::ChangeTrustResultCode(_) => TypeVariant::ChangeTrustResultCode,
69364 Self::ChangeTrustResult(_) => TypeVariant::ChangeTrustResult,
69365 Self::AllowTrustResultCode(_) => TypeVariant::AllowTrustResultCode,
69366 Self::AllowTrustResult(_) => TypeVariant::AllowTrustResult,
69367 Self::AccountMergeResultCode(_) => TypeVariant::AccountMergeResultCode,
69368 Self::AccountMergeResult(_) => TypeVariant::AccountMergeResult,
69369 Self::InflationResultCode(_) => TypeVariant::InflationResultCode,
69370 Self::InflationPayout(_) => TypeVariant::InflationPayout,
69371 Self::InflationResult(_) => TypeVariant::InflationResult,
69372 Self::ManageDataResultCode(_) => TypeVariant::ManageDataResultCode,
69373 Self::ManageDataResult(_) => TypeVariant::ManageDataResult,
69374 Self::BumpSequenceResultCode(_) => TypeVariant::BumpSequenceResultCode,
69375 Self::BumpSequenceResult(_) => TypeVariant::BumpSequenceResult,
69376 Self::CreateClaimableBalanceResultCode(_) => {
69377 TypeVariant::CreateClaimableBalanceResultCode
69378 }
69379 Self::CreateClaimableBalanceResult(_) => TypeVariant::CreateClaimableBalanceResult,
69380 Self::ClaimClaimableBalanceResultCode(_) => {
69381 TypeVariant::ClaimClaimableBalanceResultCode
69382 }
69383 Self::ClaimClaimableBalanceResult(_) => TypeVariant::ClaimClaimableBalanceResult,
69384 Self::BeginSponsoringFutureReservesResultCode(_) => {
69385 TypeVariant::BeginSponsoringFutureReservesResultCode
69386 }
69387 Self::BeginSponsoringFutureReservesResult(_) => {
69388 TypeVariant::BeginSponsoringFutureReservesResult
69389 }
69390 Self::EndSponsoringFutureReservesResultCode(_) => {
69391 TypeVariant::EndSponsoringFutureReservesResultCode
69392 }
69393 Self::EndSponsoringFutureReservesResult(_) => {
69394 TypeVariant::EndSponsoringFutureReservesResult
69395 }
69396 Self::RevokeSponsorshipResultCode(_) => TypeVariant::RevokeSponsorshipResultCode,
69397 Self::RevokeSponsorshipResult(_) => TypeVariant::RevokeSponsorshipResult,
69398 Self::ClawbackResultCode(_) => TypeVariant::ClawbackResultCode,
69399 Self::ClawbackResult(_) => TypeVariant::ClawbackResult,
69400 Self::ClawbackClaimableBalanceResultCode(_) => {
69401 TypeVariant::ClawbackClaimableBalanceResultCode
69402 }
69403 Self::ClawbackClaimableBalanceResult(_) => TypeVariant::ClawbackClaimableBalanceResult,
69404 Self::SetTrustLineFlagsResultCode(_) => TypeVariant::SetTrustLineFlagsResultCode,
69405 Self::SetTrustLineFlagsResult(_) => TypeVariant::SetTrustLineFlagsResult,
69406 Self::LiquidityPoolDepositResultCode(_) => TypeVariant::LiquidityPoolDepositResultCode,
69407 Self::LiquidityPoolDepositResult(_) => TypeVariant::LiquidityPoolDepositResult,
69408 Self::LiquidityPoolWithdrawResultCode(_) => {
69409 TypeVariant::LiquidityPoolWithdrawResultCode
69410 }
69411 Self::LiquidityPoolWithdrawResult(_) => TypeVariant::LiquidityPoolWithdrawResult,
69412 Self::InvokeHostFunctionResultCode(_) => TypeVariant::InvokeHostFunctionResultCode,
69413 Self::InvokeHostFunctionResult(_) => TypeVariant::InvokeHostFunctionResult,
69414 Self::ExtendFootprintTtlResultCode(_) => TypeVariant::ExtendFootprintTtlResultCode,
69415 Self::ExtendFootprintTtlResult(_) => TypeVariant::ExtendFootprintTtlResult,
69416 Self::RestoreFootprintResultCode(_) => TypeVariant::RestoreFootprintResultCode,
69417 Self::RestoreFootprintResult(_) => TypeVariant::RestoreFootprintResult,
69418 Self::OperationResultCode(_) => TypeVariant::OperationResultCode,
69419 Self::OperationResult(_) => TypeVariant::OperationResult,
69420 Self::OperationResultTr(_) => TypeVariant::OperationResultTr,
69421 Self::TransactionResultCode(_) => TypeVariant::TransactionResultCode,
69422 Self::InnerTransactionResult(_) => TypeVariant::InnerTransactionResult,
69423 Self::InnerTransactionResultResult(_) => TypeVariant::InnerTransactionResultResult,
69424 Self::InnerTransactionResultExt(_) => TypeVariant::InnerTransactionResultExt,
69425 Self::InnerTransactionResultPair(_) => TypeVariant::InnerTransactionResultPair,
69426 Self::TransactionResult(_) => TypeVariant::TransactionResult,
69427 Self::TransactionResultResult(_) => TypeVariant::TransactionResultResult,
69428 Self::TransactionResultExt(_) => TypeVariant::TransactionResultExt,
69429 Self::Hash(_) => TypeVariant::Hash,
69430 Self::Uint256(_) => TypeVariant::Uint256,
69431 Self::Uint32(_) => TypeVariant::Uint32,
69432 Self::Int32(_) => TypeVariant::Int32,
69433 Self::Uint64(_) => TypeVariant::Uint64,
69434 Self::Int64(_) => TypeVariant::Int64,
69435 Self::TimePoint(_) => TypeVariant::TimePoint,
69436 Self::Duration(_) => TypeVariant::Duration,
69437 Self::ExtensionPoint(_) => TypeVariant::ExtensionPoint,
69438 Self::CryptoKeyType(_) => TypeVariant::CryptoKeyType,
69439 Self::PublicKeyType(_) => TypeVariant::PublicKeyType,
69440 Self::SignerKeyType(_) => TypeVariant::SignerKeyType,
69441 Self::PublicKey(_) => TypeVariant::PublicKey,
69442 Self::SignerKey(_) => TypeVariant::SignerKey,
69443 Self::SignerKeyEd25519SignedPayload(_) => TypeVariant::SignerKeyEd25519SignedPayload,
69444 Self::Signature(_) => TypeVariant::Signature,
69445 Self::SignatureHint(_) => TypeVariant::SignatureHint,
69446 Self::NodeId(_) => TypeVariant::NodeId,
69447 Self::AccountId(_) => TypeVariant::AccountId,
69448 Self::ContractId(_) => TypeVariant::ContractId,
69449 Self::Curve25519Secret(_) => TypeVariant::Curve25519Secret,
69450 Self::Curve25519Public(_) => TypeVariant::Curve25519Public,
69451 Self::HmacSha256Key(_) => TypeVariant::HmacSha256Key,
69452 Self::HmacSha256Mac(_) => TypeVariant::HmacSha256Mac,
69453 Self::ShortHashSeed(_) => TypeVariant::ShortHashSeed,
69454 Self::BinaryFuseFilterType(_) => TypeVariant::BinaryFuseFilterType,
69455 Self::SerializedBinaryFuseFilter(_) => TypeVariant::SerializedBinaryFuseFilter,
69456 Self::PoolId(_) => TypeVariant::PoolId,
69457 Self::ClaimableBalanceIdType(_) => TypeVariant::ClaimableBalanceIdType,
69458 Self::ClaimableBalanceId(_) => TypeVariant::ClaimableBalanceId,
69459 }
69460 }
69461}
69462
69463impl Name for Type {
69464 #[must_use]
69465 fn name(&self) -> &'static str {
69466 Self::name(self)
69467 }
69468}
69469
69470impl Variants<TypeVariant> for Type {
69471 fn variants() -> slice::Iter<'static, TypeVariant> {
69472 Self::VARIANTS.iter()
69473 }
69474}
69475
69476impl WriteXdr for Type {
69477 #[cfg(feature = "std")]
69478 #[allow(clippy::too_many_lines)]
69479 fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
69480 match self {
69481 Self::Value(v) => v.write_xdr(w),
69482 Self::ScpBallot(v) => v.write_xdr(w),
69483 Self::ScpStatementType(v) => v.write_xdr(w),
69484 Self::ScpNomination(v) => v.write_xdr(w),
69485 Self::ScpStatement(v) => v.write_xdr(w),
69486 Self::ScpStatementPledges(v) => v.write_xdr(w),
69487 Self::ScpStatementPrepare(v) => v.write_xdr(w),
69488 Self::ScpStatementConfirm(v) => v.write_xdr(w),
69489 Self::ScpStatementExternalize(v) => v.write_xdr(w),
69490 Self::ScpEnvelope(v) => v.write_xdr(w),
69491 Self::ScpQuorumSet(v) => v.write_xdr(w),
69492 Self::ConfigSettingContractExecutionLanesV0(v) => v.write_xdr(w),
69493 Self::ConfigSettingContractComputeV0(v) => v.write_xdr(w),
69494 Self::ConfigSettingContractParallelComputeV0(v) => v.write_xdr(w),
69495 Self::ConfigSettingContractLedgerCostV0(v) => v.write_xdr(w),
69496 Self::ConfigSettingContractLedgerCostExtV0(v) => v.write_xdr(w),
69497 Self::ConfigSettingContractHistoricalDataV0(v) => v.write_xdr(w),
69498 Self::ConfigSettingContractEventsV0(v) => v.write_xdr(w),
69499 Self::ConfigSettingContractBandwidthV0(v) => v.write_xdr(w),
69500 Self::ContractCostType(v) => v.write_xdr(w),
69501 Self::ContractCostParamEntry(v) => v.write_xdr(w),
69502 Self::StateArchivalSettings(v) => v.write_xdr(w),
69503 Self::EvictionIterator(v) => v.write_xdr(w),
69504 Self::ConfigSettingScpTiming(v) => v.write_xdr(w),
69505 Self::ContractCostParams(v) => v.write_xdr(w),
69506 Self::ConfigSettingId(v) => v.write_xdr(w),
69507 Self::ConfigSettingEntry(v) => v.write_xdr(w),
69508 Self::ScEnvMetaKind(v) => v.write_xdr(w),
69509 Self::ScEnvMetaEntry(v) => v.write_xdr(w),
69510 Self::ScEnvMetaEntryInterfaceVersion(v) => v.write_xdr(w),
69511 Self::ScMetaV0(v) => v.write_xdr(w),
69512 Self::ScMetaKind(v) => v.write_xdr(w),
69513 Self::ScMetaEntry(v) => v.write_xdr(w),
69514 Self::ScSpecType(v) => v.write_xdr(w),
69515 Self::ScSpecTypeOption(v) => v.write_xdr(w),
69516 Self::ScSpecTypeResult(v) => v.write_xdr(w),
69517 Self::ScSpecTypeVec(v) => v.write_xdr(w),
69518 Self::ScSpecTypeMap(v) => v.write_xdr(w),
69519 Self::ScSpecTypeTuple(v) => v.write_xdr(w),
69520 Self::ScSpecTypeBytesN(v) => v.write_xdr(w),
69521 Self::ScSpecTypeUdt(v) => v.write_xdr(w),
69522 Self::ScSpecTypeDef(v) => v.write_xdr(w),
69523 Self::ScSpecUdtStructFieldV0(v) => v.write_xdr(w),
69524 Self::ScSpecUdtStructV0(v) => v.write_xdr(w),
69525 Self::ScSpecUdtUnionCaseVoidV0(v) => v.write_xdr(w),
69526 Self::ScSpecUdtUnionCaseTupleV0(v) => v.write_xdr(w),
69527 Self::ScSpecUdtUnionCaseV0Kind(v) => v.write_xdr(w),
69528 Self::ScSpecUdtUnionCaseV0(v) => v.write_xdr(w),
69529 Self::ScSpecUdtUnionV0(v) => v.write_xdr(w),
69530 Self::ScSpecUdtEnumCaseV0(v) => v.write_xdr(w),
69531 Self::ScSpecUdtEnumV0(v) => v.write_xdr(w),
69532 Self::ScSpecUdtErrorEnumCaseV0(v) => v.write_xdr(w),
69533 Self::ScSpecUdtErrorEnumV0(v) => v.write_xdr(w),
69534 Self::ScSpecFunctionInputV0(v) => v.write_xdr(w),
69535 Self::ScSpecFunctionV0(v) => v.write_xdr(w),
69536 Self::ScSpecEventParamLocationV0(v) => v.write_xdr(w),
69537 Self::ScSpecEventParamV0(v) => v.write_xdr(w),
69538 Self::ScSpecEventDataFormat(v) => v.write_xdr(w),
69539 Self::ScSpecEventV0(v) => v.write_xdr(w),
69540 Self::ScSpecEntryKind(v) => v.write_xdr(w),
69541 Self::ScSpecEntry(v) => v.write_xdr(w),
69542 Self::ScValType(v) => v.write_xdr(w),
69543 Self::ScErrorType(v) => v.write_xdr(w),
69544 Self::ScErrorCode(v) => v.write_xdr(w),
69545 Self::ScError(v) => v.write_xdr(w),
69546 Self::UInt128Parts(v) => v.write_xdr(w),
69547 Self::Int128Parts(v) => v.write_xdr(w),
69548 Self::UInt256Parts(v) => v.write_xdr(w),
69549 Self::Int256Parts(v) => v.write_xdr(w),
69550 Self::ContractExecutableType(v) => v.write_xdr(w),
69551 Self::ContractExecutable(v) => v.write_xdr(w),
69552 Self::ScAddressType(v) => v.write_xdr(w),
69553 Self::MuxedEd25519Account(v) => v.write_xdr(w),
69554 Self::ScAddress(v) => v.write_xdr(w),
69555 Self::ScVec(v) => v.write_xdr(w),
69556 Self::ScMap(v) => v.write_xdr(w),
69557 Self::ScBytes(v) => v.write_xdr(w),
69558 Self::ScString(v) => v.write_xdr(w),
69559 Self::ScSymbol(v) => v.write_xdr(w),
69560 Self::ScNonceKey(v) => v.write_xdr(w),
69561 Self::ScContractInstance(v) => v.write_xdr(w),
69562 Self::ScVal(v) => v.write_xdr(w),
69563 Self::ScMapEntry(v) => v.write_xdr(w),
69564 Self::LedgerCloseMetaBatch(v) => v.write_xdr(w),
69565 Self::StoredTransactionSet(v) => v.write_xdr(w),
69566 Self::StoredDebugTransactionSet(v) => v.write_xdr(w),
69567 Self::PersistedScpStateV0(v) => v.write_xdr(w),
69568 Self::PersistedScpStateV1(v) => v.write_xdr(w),
69569 Self::PersistedScpState(v) => v.write_xdr(w),
69570 Self::Thresholds(v) => v.write_xdr(w),
69571 Self::String32(v) => v.write_xdr(w),
69572 Self::String64(v) => v.write_xdr(w),
69573 Self::SequenceNumber(v) => v.write_xdr(w),
69574 Self::DataValue(v) => v.write_xdr(w),
69575 Self::AssetCode4(v) => v.write_xdr(w),
69576 Self::AssetCode12(v) => v.write_xdr(w),
69577 Self::AssetType(v) => v.write_xdr(w),
69578 Self::AssetCode(v) => v.write_xdr(w),
69579 Self::AlphaNum4(v) => v.write_xdr(w),
69580 Self::AlphaNum12(v) => v.write_xdr(w),
69581 Self::Asset(v) => v.write_xdr(w),
69582 Self::Price(v) => v.write_xdr(w),
69583 Self::Liabilities(v) => v.write_xdr(w),
69584 Self::ThresholdIndexes(v) => v.write_xdr(w),
69585 Self::LedgerEntryType(v) => v.write_xdr(w),
69586 Self::Signer(v) => v.write_xdr(w),
69587 Self::AccountFlags(v) => v.write_xdr(w),
69588 Self::SponsorshipDescriptor(v) => v.write_xdr(w),
69589 Self::AccountEntryExtensionV3(v) => v.write_xdr(w),
69590 Self::AccountEntryExtensionV2(v) => v.write_xdr(w),
69591 Self::AccountEntryExtensionV2Ext(v) => v.write_xdr(w),
69592 Self::AccountEntryExtensionV1(v) => v.write_xdr(w),
69593 Self::AccountEntryExtensionV1Ext(v) => v.write_xdr(w),
69594 Self::AccountEntry(v) => v.write_xdr(w),
69595 Self::AccountEntryExt(v) => v.write_xdr(w),
69596 Self::TrustLineFlags(v) => v.write_xdr(w),
69597 Self::LiquidityPoolType(v) => v.write_xdr(w),
69598 Self::TrustLineAsset(v) => v.write_xdr(w),
69599 Self::TrustLineEntryExtensionV2(v) => v.write_xdr(w),
69600 Self::TrustLineEntryExtensionV2Ext(v) => v.write_xdr(w),
69601 Self::TrustLineEntry(v) => v.write_xdr(w),
69602 Self::TrustLineEntryExt(v) => v.write_xdr(w),
69603 Self::TrustLineEntryV1(v) => v.write_xdr(w),
69604 Self::TrustLineEntryV1Ext(v) => v.write_xdr(w),
69605 Self::OfferEntryFlags(v) => v.write_xdr(w),
69606 Self::OfferEntry(v) => v.write_xdr(w),
69607 Self::OfferEntryExt(v) => v.write_xdr(w),
69608 Self::DataEntry(v) => v.write_xdr(w),
69609 Self::DataEntryExt(v) => v.write_xdr(w),
69610 Self::ClaimPredicateType(v) => v.write_xdr(w),
69611 Self::ClaimPredicate(v) => v.write_xdr(w),
69612 Self::ClaimantType(v) => v.write_xdr(w),
69613 Self::Claimant(v) => v.write_xdr(w),
69614 Self::ClaimantV0(v) => v.write_xdr(w),
69615 Self::ClaimableBalanceFlags(v) => v.write_xdr(w),
69616 Self::ClaimableBalanceEntryExtensionV1(v) => v.write_xdr(w),
69617 Self::ClaimableBalanceEntryExtensionV1Ext(v) => v.write_xdr(w),
69618 Self::ClaimableBalanceEntry(v) => v.write_xdr(w),
69619 Self::ClaimableBalanceEntryExt(v) => v.write_xdr(w),
69620 Self::LiquidityPoolConstantProductParameters(v) => v.write_xdr(w),
69621 Self::LiquidityPoolEntry(v) => v.write_xdr(w),
69622 Self::LiquidityPoolEntryBody(v) => v.write_xdr(w),
69623 Self::LiquidityPoolEntryConstantProduct(v) => v.write_xdr(w),
69624 Self::ContractDataDurability(v) => v.write_xdr(w),
69625 Self::ContractDataEntry(v) => v.write_xdr(w),
69626 Self::ContractCodeCostInputs(v) => v.write_xdr(w),
69627 Self::ContractCodeEntry(v) => v.write_xdr(w),
69628 Self::ContractCodeEntryExt(v) => v.write_xdr(w),
69629 Self::ContractCodeEntryV1(v) => v.write_xdr(w),
69630 Self::TtlEntry(v) => v.write_xdr(w),
69631 Self::LedgerEntryExtensionV1(v) => v.write_xdr(w),
69632 Self::LedgerEntryExtensionV1Ext(v) => v.write_xdr(w),
69633 Self::LedgerEntry(v) => v.write_xdr(w),
69634 Self::LedgerEntryData(v) => v.write_xdr(w),
69635 Self::LedgerEntryExt(v) => v.write_xdr(w),
69636 Self::LedgerKey(v) => v.write_xdr(w),
69637 Self::LedgerKeyAccount(v) => v.write_xdr(w),
69638 Self::LedgerKeyTrustLine(v) => v.write_xdr(w),
69639 Self::LedgerKeyOffer(v) => v.write_xdr(w),
69640 Self::LedgerKeyData(v) => v.write_xdr(w),
69641 Self::LedgerKeyClaimableBalance(v) => v.write_xdr(w),
69642 Self::LedgerKeyLiquidityPool(v) => v.write_xdr(w),
69643 Self::LedgerKeyContractData(v) => v.write_xdr(w),
69644 Self::LedgerKeyContractCode(v) => v.write_xdr(w),
69645 Self::LedgerKeyConfigSetting(v) => v.write_xdr(w),
69646 Self::LedgerKeyTtl(v) => v.write_xdr(w),
69647 Self::EnvelopeType(v) => v.write_xdr(w),
69648 Self::BucketListType(v) => v.write_xdr(w),
69649 Self::BucketEntryType(v) => v.write_xdr(w),
69650 Self::HotArchiveBucketEntryType(v) => v.write_xdr(w),
69651 Self::BucketMetadata(v) => v.write_xdr(w),
69652 Self::BucketMetadataExt(v) => v.write_xdr(w),
69653 Self::BucketEntry(v) => v.write_xdr(w),
69654 Self::HotArchiveBucketEntry(v) => v.write_xdr(w),
69655 Self::UpgradeType(v) => v.write_xdr(w),
69656 Self::StellarValueType(v) => v.write_xdr(w),
69657 Self::LedgerCloseValueSignature(v) => v.write_xdr(w),
69658 Self::StellarValue(v) => v.write_xdr(w),
69659 Self::StellarValueExt(v) => v.write_xdr(w),
69660 Self::LedgerHeaderFlags(v) => v.write_xdr(w),
69661 Self::LedgerHeaderExtensionV1(v) => v.write_xdr(w),
69662 Self::LedgerHeaderExtensionV1Ext(v) => v.write_xdr(w),
69663 Self::LedgerHeader(v) => v.write_xdr(w),
69664 Self::LedgerHeaderExt(v) => v.write_xdr(w),
69665 Self::LedgerUpgradeType(v) => v.write_xdr(w),
69666 Self::ConfigUpgradeSetKey(v) => v.write_xdr(w),
69667 Self::LedgerUpgrade(v) => v.write_xdr(w),
69668 Self::ConfigUpgradeSet(v) => v.write_xdr(w),
69669 Self::TxSetComponentType(v) => v.write_xdr(w),
69670 Self::DependentTxCluster(v) => v.write_xdr(w),
69671 Self::ParallelTxExecutionStage(v) => v.write_xdr(w),
69672 Self::ParallelTxsComponent(v) => v.write_xdr(w),
69673 Self::TxSetComponent(v) => v.write_xdr(w),
69674 Self::TxSetComponentTxsMaybeDiscountedFee(v) => v.write_xdr(w),
69675 Self::TransactionPhase(v) => v.write_xdr(w),
69676 Self::TransactionSet(v) => v.write_xdr(w),
69677 Self::TransactionSetV1(v) => v.write_xdr(w),
69678 Self::GeneralizedTransactionSet(v) => v.write_xdr(w),
69679 Self::TransactionResultPair(v) => v.write_xdr(w),
69680 Self::TransactionResultSet(v) => v.write_xdr(w),
69681 Self::TransactionHistoryEntry(v) => v.write_xdr(w),
69682 Self::TransactionHistoryEntryExt(v) => v.write_xdr(w),
69683 Self::TransactionHistoryResultEntry(v) => v.write_xdr(w),
69684 Self::TransactionHistoryResultEntryExt(v) => v.write_xdr(w),
69685 Self::LedgerHeaderHistoryEntry(v) => v.write_xdr(w),
69686 Self::LedgerHeaderHistoryEntryExt(v) => v.write_xdr(w),
69687 Self::LedgerScpMessages(v) => v.write_xdr(w),
69688 Self::ScpHistoryEntryV0(v) => v.write_xdr(w),
69689 Self::ScpHistoryEntry(v) => v.write_xdr(w),
69690 Self::LedgerEntryChangeType(v) => v.write_xdr(w),
69691 Self::LedgerEntryChange(v) => v.write_xdr(w),
69692 Self::LedgerEntryChanges(v) => v.write_xdr(w),
69693 Self::OperationMeta(v) => v.write_xdr(w),
69694 Self::TransactionMetaV1(v) => v.write_xdr(w),
69695 Self::TransactionMetaV2(v) => v.write_xdr(w),
69696 Self::ContractEventType(v) => v.write_xdr(w),
69697 Self::ContractEvent(v) => v.write_xdr(w),
69698 Self::ContractEventBody(v) => v.write_xdr(w),
69699 Self::ContractEventV0(v) => v.write_xdr(w),
69700 Self::DiagnosticEvent(v) => v.write_xdr(w),
69701 Self::SorobanTransactionMetaExtV1(v) => v.write_xdr(w),
69702 Self::SorobanTransactionMetaExt(v) => v.write_xdr(w),
69703 Self::SorobanTransactionMeta(v) => v.write_xdr(w),
69704 Self::TransactionMetaV3(v) => v.write_xdr(w),
69705 Self::OperationMetaV2(v) => v.write_xdr(w),
69706 Self::SorobanTransactionMetaV2(v) => v.write_xdr(w),
69707 Self::TransactionEventStage(v) => v.write_xdr(w),
69708 Self::TransactionEvent(v) => v.write_xdr(w),
69709 Self::TransactionMetaV4(v) => v.write_xdr(w),
69710 Self::InvokeHostFunctionSuccessPreImage(v) => v.write_xdr(w),
69711 Self::TransactionMeta(v) => v.write_xdr(w),
69712 Self::TransactionResultMeta(v) => v.write_xdr(w),
69713 Self::TransactionResultMetaV1(v) => v.write_xdr(w),
69714 Self::UpgradeEntryMeta(v) => v.write_xdr(w),
69715 Self::LedgerCloseMetaV0(v) => v.write_xdr(w),
69716 Self::LedgerCloseMetaExtV1(v) => v.write_xdr(w),
69717 Self::LedgerCloseMetaExt(v) => v.write_xdr(w),
69718 Self::LedgerCloseMetaV1(v) => v.write_xdr(w),
69719 Self::LedgerCloseMetaV2(v) => v.write_xdr(w),
69720 Self::LedgerCloseMeta(v) => v.write_xdr(w),
69721 Self::ErrorCode(v) => v.write_xdr(w),
69722 Self::SError(v) => v.write_xdr(w),
69723 Self::SendMore(v) => v.write_xdr(w),
69724 Self::SendMoreExtended(v) => v.write_xdr(w),
69725 Self::AuthCert(v) => v.write_xdr(w),
69726 Self::Hello(v) => v.write_xdr(w),
69727 Self::Auth(v) => v.write_xdr(w),
69728 Self::IpAddrType(v) => v.write_xdr(w),
69729 Self::PeerAddress(v) => v.write_xdr(w),
69730 Self::PeerAddressIp(v) => v.write_xdr(w),
69731 Self::MessageType(v) => v.write_xdr(w),
69732 Self::DontHave(v) => v.write_xdr(w),
69733 Self::SurveyMessageCommandType(v) => v.write_xdr(w),
69734 Self::SurveyMessageResponseType(v) => v.write_xdr(w),
69735 Self::TimeSlicedSurveyStartCollectingMessage(v) => v.write_xdr(w),
69736 Self::SignedTimeSlicedSurveyStartCollectingMessage(v) => v.write_xdr(w),
69737 Self::TimeSlicedSurveyStopCollectingMessage(v) => v.write_xdr(w),
69738 Self::SignedTimeSlicedSurveyStopCollectingMessage(v) => v.write_xdr(w),
69739 Self::SurveyRequestMessage(v) => v.write_xdr(w),
69740 Self::TimeSlicedSurveyRequestMessage(v) => v.write_xdr(w),
69741 Self::SignedTimeSlicedSurveyRequestMessage(v) => v.write_xdr(w),
69742 Self::EncryptedBody(v) => v.write_xdr(w),
69743 Self::SurveyResponseMessage(v) => v.write_xdr(w),
69744 Self::TimeSlicedSurveyResponseMessage(v) => v.write_xdr(w),
69745 Self::SignedTimeSlicedSurveyResponseMessage(v) => v.write_xdr(w),
69746 Self::PeerStats(v) => v.write_xdr(w),
69747 Self::TimeSlicedNodeData(v) => v.write_xdr(w),
69748 Self::TimeSlicedPeerData(v) => v.write_xdr(w),
69749 Self::TimeSlicedPeerDataList(v) => v.write_xdr(w),
69750 Self::TopologyResponseBodyV2(v) => v.write_xdr(w),
69751 Self::SurveyResponseBody(v) => v.write_xdr(w),
69752 Self::TxAdvertVector(v) => v.write_xdr(w),
69753 Self::FloodAdvert(v) => v.write_xdr(w),
69754 Self::TxDemandVector(v) => v.write_xdr(w),
69755 Self::FloodDemand(v) => v.write_xdr(w),
69756 Self::StellarMessage(v) => v.write_xdr(w),
69757 Self::AuthenticatedMessage(v) => v.write_xdr(w),
69758 Self::AuthenticatedMessageV0(v) => v.write_xdr(w),
69759 Self::LiquidityPoolParameters(v) => v.write_xdr(w),
69760 Self::MuxedAccount(v) => v.write_xdr(w),
69761 Self::MuxedAccountMed25519(v) => v.write_xdr(w),
69762 Self::DecoratedSignature(v) => v.write_xdr(w),
69763 Self::OperationType(v) => v.write_xdr(w),
69764 Self::CreateAccountOp(v) => v.write_xdr(w),
69765 Self::PaymentOp(v) => v.write_xdr(w),
69766 Self::PathPaymentStrictReceiveOp(v) => v.write_xdr(w),
69767 Self::PathPaymentStrictSendOp(v) => v.write_xdr(w),
69768 Self::ManageSellOfferOp(v) => v.write_xdr(w),
69769 Self::ManageBuyOfferOp(v) => v.write_xdr(w),
69770 Self::CreatePassiveSellOfferOp(v) => v.write_xdr(w),
69771 Self::SetOptionsOp(v) => v.write_xdr(w),
69772 Self::ChangeTrustAsset(v) => v.write_xdr(w),
69773 Self::ChangeTrustOp(v) => v.write_xdr(w),
69774 Self::AllowTrustOp(v) => v.write_xdr(w),
69775 Self::ManageDataOp(v) => v.write_xdr(w),
69776 Self::BumpSequenceOp(v) => v.write_xdr(w),
69777 Self::CreateClaimableBalanceOp(v) => v.write_xdr(w),
69778 Self::ClaimClaimableBalanceOp(v) => v.write_xdr(w),
69779 Self::BeginSponsoringFutureReservesOp(v) => v.write_xdr(w),
69780 Self::RevokeSponsorshipType(v) => v.write_xdr(w),
69781 Self::RevokeSponsorshipOp(v) => v.write_xdr(w),
69782 Self::RevokeSponsorshipOpSigner(v) => v.write_xdr(w),
69783 Self::ClawbackOp(v) => v.write_xdr(w),
69784 Self::ClawbackClaimableBalanceOp(v) => v.write_xdr(w),
69785 Self::SetTrustLineFlagsOp(v) => v.write_xdr(w),
69786 Self::LiquidityPoolDepositOp(v) => v.write_xdr(w),
69787 Self::LiquidityPoolWithdrawOp(v) => v.write_xdr(w),
69788 Self::HostFunctionType(v) => v.write_xdr(w),
69789 Self::ContractIdPreimageType(v) => v.write_xdr(w),
69790 Self::ContractIdPreimage(v) => v.write_xdr(w),
69791 Self::ContractIdPreimageFromAddress(v) => v.write_xdr(w),
69792 Self::CreateContractArgs(v) => v.write_xdr(w),
69793 Self::CreateContractArgsV2(v) => v.write_xdr(w),
69794 Self::InvokeContractArgs(v) => v.write_xdr(w),
69795 Self::HostFunction(v) => v.write_xdr(w),
69796 Self::SorobanAuthorizedFunctionType(v) => v.write_xdr(w),
69797 Self::SorobanAuthorizedFunction(v) => v.write_xdr(w),
69798 Self::SorobanAuthorizedInvocation(v) => v.write_xdr(w),
69799 Self::SorobanAddressCredentials(v) => v.write_xdr(w),
69800 Self::SorobanCredentialsType(v) => v.write_xdr(w),
69801 Self::SorobanCredentials(v) => v.write_xdr(w),
69802 Self::SorobanAuthorizationEntry(v) => v.write_xdr(w),
69803 Self::SorobanAuthorizationEntries(v) => v.write_xdr(w),
69804 Self::InvokeHostFunctionOp(v) => v.write_xdr(w),
69805 Self::ExtendFootprintTtlOp(v) => v.write_xdr(w),
69806 Self::RestoreFootprintOp(v) => v.write_xdr(w),
69807 Self::Operation(v) => v.write_xdr(w),
69808 Self::OperationBody(v) => v.write_xdr(w),
69809 Self::HashIdPreimage(v) => v.write_xdr(w),
69810 Self::HashIdPreimageOperationId(v) => v.write_xdr(w),
69811 Self::HashIdPreimageRevokeId(v) => v.write_xdr(w),
69812 Self::HashIdPreimageContractId(v) => v.write_xdr(w),
69813 Self::HashIdPreimageSorobanAuthorization(v) => v.write_xdr(w),
69814 Self::MemoType(v) => v.write_xdr(w),
69815 Self::Memo(v) => v.write_xdr(w),
69816 Self::TimeBounds(v) => v.write_xdr(w),
69817 Self::LedgerBounds(v) => v.write_xdr(w),
69818 Self::PreconditionsV2(v) => v.write_xdr(w),
69819 Self::PreconditionType(v) => v.write_xdr(w),
69820 Self::Preconditions(v) => v.write_xdr(w),
69821 Self::LedgerFootprint(v) => v.write_xdr(w),
69822 Self::SorobanResources(v) => v.write_xdr(w),
69823 Self::SorobanResourcesExtV0(v) => v.write_xdr(w),
69824 Self::SorobanTransactionData(v) => v.write_xdr(w),
69825 Self::SorobanTransactionDataExt(v) => v.write_xdr(w),
69826 Self::TransactionV0(v) => v.write_xdr(w),
69827 Self::TransactionV0Ext(v) => v.write_xdr(w),
69828 Self::TransactionV0Envelope(v) => v.write_xdr(w),
69829 Self::Transaction(v) => v.write_xdr(w),
69830 Self::TransactionExt(v) => v.write_xdr(w),
69831 Self::TransactionV1Envelope(v) => v.write_xdr(w),
69832 Self::FeeBumpTransaction(v) => v.write_xdr(w),
69833 Self::FeeBumpTransactionInnerTx(v) => v.write_xdr(w),
69834 Self::FeeBumpTransactionExt(v) => v.write_xdr(w),
69835 Self::FeeBumpTransactionEnvelope(v) => v.write_xdr(w),
69836 Self::TransactionEnvelope(v) => v.write_xdr(w),
69837 Self::TransactionSignaturePayload(v) => v.write_xdr(w),
69838 Self::TransactionSignaturePayloadTaggedTransaction(v) => v.write_xdr(w),
69839 Self::ClaimAtomType(v) => v.write_xdr(w),
69840 Self::ClaimOfferAtomV0(v) => v.write_xdr(w),
69841 Self::ClaimOfferAtom(v) => v.write_xdr(w),
69842 Self::ClaimLiquidityAtom(v) => v.write_xdr(w),
69843 Self::ClaimAtom(v) => v.write_xdr(w),
69844 Self::CreateAccountResultCode(v) => v.write_xdr(w),
69845 Self::CreateAccountResult(v) => v.write_xdr(w),
69846 Self::PaymentResultCode(v) => v.write_xdr(w),
69847 Self::PaymentResult(v) => v.write_xdr(w),
69848 Self::PathPaymentStrictReceiveResultCode(v) => v.write_xdr(w),
69849 Self::SimplePaymentResult(v) => v.write_xdr(w),
69850 Self::PathPaymentStrictReceiveResult(v) => v.write_xdr(w),
69851 Self::PathPaymentStrictReceiveResultSuccess(v) => v.write_xdr(w),
69852 Self::PathPaymentStrictSendResultCode(v) => v.write_xdr(w),
69853 Self::PathPaymentStrictSendResult(v) => v.write_xdr(w),
69854 Self::PathPaymentStrictSendResultSuccess(v) => v.write_xdr(w),
69855 Self::ManageSellOfferResultCode(v) => v.write_xdr(w),
69856 Self::ManageOfferEffect(v) => v.write_xdr(w),
69857 Self::ManageOfferSuccessResult(v) => v.write_xdr(w),
69858 Self::ManageOfferSuccessResultOffer(v) => v.write_xdr(w),
69859 Self::ManageSellOfferResult(v) => v.write_xdr(w),
69860 Self::ManageBuyOfferResultCode(v) => v.write_xdr(w),
69861 Self::ManageBuyOfferResult(v) => v.write_xdr(w),
69862 Self::SetOptionsResultCode(v) => v.write_xdr(w),
69863 Self::SetOptionsResult(v) => v.write_xdr(w),
69864 Self::ChangeTrustResultCode(v) => v.write_xdr(w),
69865 Self::ChangeTrustResult(v) => v.write_xdr(w),
69866 Self::AllowTrustResultCode(v) => v.write_xdr(w),
69867 Self::AllowTrustResult(v) => v.write_xdr(w),
69868 Self::AccountMergeResultCode(v) => v.write_xdr(w),
69869 Self::AccountMergeResult(v) => v.write_xdr(w),
69870 Self::InflationResultCode(v) => v.write_xdr(w),
69871 Self::InflationPayout(v) => v.write_xdr(w),
69872 Self::InflationResult(v) => v.write_xdr(w),
69873 Self::ManageDataResultCode(v) => v.write_xdr(w),
69874 Self::ManageDataResult(v) => v.write_xdr(w),
69875 Self::BumpSequenceResultCode(v) => v.write_xdr(w),
69876 Self::BumpSequenceResult(v) => v.write_xdr(w),
69877 Self::CreateClaimableBalanceResultCode(v) => v.write_xdr(w),
69878 Self::CreateClaimableBalanceResult(v) => v.write_xdr(w),
69879 Self::ClaimClaimableBalanceResultCode(v) => v.write_xdr(w),
69880 Self::ClaimClaimableBalanceResult(v) => v.write_xdr(w),
69881 Self::BeginSponsoringFutureReservesResultCode(v) => v.write_xdr(w),
69882 Self::BeginSponsoringFutureReservesResult(v) => v.write_xdr(w),
69883 Self::EndSponsoringFutureReservesResultCode(v) => v.write_xdr(w),
69884 Self::EndSponsoringFutureReservesResult(v) => v.write_xdr(w),
69885 Self::RevokeSponsorshipResultCode(v) => v.write_xdr(w),
69886 Self::RevokeSponsorshipResult(v) => v.write_xdr(w),
69887 Self::ClawbackResultCode(v) => v.write_xdr(w),
69888 Self::ClawbackResult(v) => v.write_xdr(w),
69889 Self::ClawbackClaimableBalanceResultCode(v) => v.write_xdr(w),
69890 Self::ClawbackClaimableBalanceResult(v) => v.write_xdr(w),
69891 Self::SetTrustLineFlagsResultCode(v) => v.write_xdr(w),
69892 Self::SetTrustLineFlagsResult(v) => v.write_xdr(w),
69893 Self::LiquidityPoolDepositResultCode(v) => v.write_xdr(w),
69894 Self::LiquidityPoolDepositResult(v) => v.write_xdr(w),
69895 Self::LiquidityPoolWithdrawResultCode(v) => v.write_xdr(w),
69896 Self::LiquidityPoolWithdrawResult(v) => v.write_xdr(w),
69897 Self::InvokeHostFunctionResultCode(v) => v.write_xdr(w),
69898 Self::InvokeHostFunctionResult(v) => v.write_xdr(w),
69899 Self::ExtendFootprintTtlResultCode(v) => v.write_xdr(w),
69900 Self::ExtendFootprintTtlResult(v) => v.write_xdr(w),
69901 Self::RestoreFootprintResultCode(v) => v.write_xdr(w),
69902 Self::RestoreFootprintResult(v) => v.write_xdr(w),
69903 Self::OperationResultCode(v) => v.write_xdr(w),
69904 Self::OperationResult(v) => v.write_xdr(w),
69905 Self::OperationResultTr(v) => v.write_xdr(w),
69906 Self::TransactionResultCode(v) => v.write_xdr(w),
69907 Self::InnerTransactionResult(v) => v.write_xdr(w),
69908 Self::InnerTransactionResultResult(v) => v.write_xdr(w),
69909 Self::InnerTransactionResultExt(v) => v.write_xdr(w),
69910 Self::InnerTransactionResultPair(v) => v.write_xdr(w),
69911 Self::TransactionResult(v) => v.write_xdr(w),
69912 Self::TransactionResultResult(v) => v.write_xdr(w),
69913 Self::TransactionResultExt(v) => v.write_xdr(w),
69914 Self::Hash(v) => v.write_xdr(w),
69915 Self::Uint256(v) => v.write_xdr(w),
69916 Self::Uint32(v) => v.write_xdr(w),
69917 Self::Int32(v) => v.write_xdr(w),
69918 Self::Uint64(v) => v.write_xdr(w),
69919 Self::Int64(v) => v.write_xdr(w),
69920 Self::TimePoint(v) => v.write_xdr(w),
69921 Self::Duration(v) => v.write_xdr(w),
69922 Self::ExtensionPoint(v) => v.write_xdr(w),
69923 Self::CryptoKeyType(v) => v.write_xdr(w),
69924 Self::PublicKeyType(v) => v.write_xdr(w),
69925 Self::SignerKeyType(v) => v.write_xdr(w),
69926 Self::PublicKey(v) => v.write_xdr(w),
69927 Self::SignerKey(v) => v.write_xdr(w),
69928 Self::SignerKeyEd25519SignedPayload(v) => v.write_xdr(w),
69929 Self::Signature(v) => v.write_xdr(w),
69930 Self::SignatureHint(v) => v.write_xdr(w),
69931 Self::NodeId(v) => v.write_xdr(w),
69932 Self::AccountId(v) => v.write_xdr(w),
69933 Self::ContractId(v) => v.write_xdr(w),
69934 Self::Curve25519Secret(v) => v.write_xdr(w),
69935 Self::Curve25519Public(v) => v.write_xdr(w),
69936 Self::HmacSha256Key(v) => v.write_xdr(w),
69937 Self::HmacSha256Mac(v) => v.write_xdr(w),
69938 Self::ShortHashSeed(v) => v.write_xdr(w),
69939 Self::BinaryFuseFilterType(v) => v.write_xdr(w),
69940 Self::SerializedBinaryFuseFilter(v) => v.write_xdr(w),
69941 Self::PoolId(v) => v.write_xdr(w),
69942 Self::ClaimableBalanceIdType(v) => v.write_xdr(w),
69943 Self::ClaimableBalanceId(v) => v.write_xdr(w),
69944 }
69945 }
69946}