1#[allow(unused_imports)]
8use super::compound_types::{
9    LimitedString, LimitedVarArray, LimitedVarOpaque, UnlimitedString, UnlimitedVarArray, UnlimitedVarOpaque,
10};
11#[allow(unused_imports)]
12use super::streams::{DecodeError, ReadStream, WriteStream};
13#[allow(unused_imports)]
14use super::xdr_codec::XdrCodec;
15#[allow(unused_imports)]
16use core::convert::AsRef;
17#[allow(unused_imports)]
18use sp_std::{boxed::Box, prelude::*};
19
20#[allow(dead_code)]
22pub const CONTRACT_COST_COUNT_LIMIT: i32 = 1024;
23#[allow(dead_code)]
25pub const SC_SPEC_DOC_LIMIT: i32 = 1024;
26#[allow(dead_code)]
28pub const SCSYMBOL_LIMIT: i32 = 32;
29#[allow(dead_code)]
31pub const MASK_ACCOUNT_FLAGS: i32 = 7;
32#[allow(dead_code)]
34pub const MASK_ACCOUNT_FLAGS_V17: i32 = 15;
35#[allow(dead_code)]
37pub const MAX_SIGNERS: i32 = 20;
38#[allow(dead_code)]
40pub const MASK_TRUSTLINE_FLAGS: i32 = 1;
41#[allow(dead_code)]
43pub const MASK_TRUSTLINE_FLAGS_V13: i32 = 3;
44#[allow(dead_code)]
46pub const MASK_TRUSTLINE_FLAGS_V17: i32 = 7;
47#[allow(dead_code)]
49pub const MASK_OFFERENTRY_FLAGS: i32 = 1;
50#[allow(dead_code)]
52pub const MASK_CLAIMABLE_BALANCE_FLAGS: i32 = 1;
53#[allow(dead_code)]
55pub const MASK_LEDGER_HEADER_FLAGS: i32 = 7;
56#[allow(dead_code)]
58pub const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED: i32 = 200;
59#[allow(dead_code)]
61pub const TX_ADVERT_VECTOR_MAX_SIZE: i32 = 1000;
62#[allow(dead_code)]
64pub const TX_DEMAND_VECTOR_MAX_SIZE: i32 = 1000;
65#[allow(dead_code)]
67pub const MAX_OPS_PER_TX: i32 = 100;
68#[allow(dead_code)]
70pub const LIQUIDITY_POOL_FEE_V18: i32 = 30;
71
72#[allow(dead_code)]
74#[cfg(feature = "all-types")]
75pub type Value = UnlimitedVarOpaque;
76
77#[allow(dead_code)]
79#[cfg(feature = "all-types")]
80#[derive(Debug, Clone, Eq, PartialEq)]
81pub struct ScpBallot {
82    pub counter: Uint32,
83    pub value: Value,
84}
85
86#[cfg(feature = "all-types")]
87impl XdrCodec for ScpBallot {
88    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
89        self.counter.to_xdr_buffered(write_stream);
90        self.value.to_xdr_buffered(write_stream);
91    }
92
93    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
94        Ok(ScpBallot {
95            counter: Uint32::from_xdr_buffered(read_stream)?,
96            value: Value::from_xdr_buffered(read_stream)?,
97        })
98    }
99}
100
101#[allow(dead_code)]
103#[cfg(feature = "all-types")]
104#[derive(Debug, Copy, Clone, Eq, PartialEq)]
105pub enum ScpStatementType {
106    ScpStPrepare = 0,
107    ScpStConfirm = 1,
108    ScpStExternalize = 2,
109    ScpStNominate = 3,
110}
111
112#[cfg(feature = "all-types")]
113impl XdrCodec for ScpStatementType {
114    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
115        let value = *self as i32;
116        value.to_xdr_buffered(write_stream);
117    }
118
119    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
120        let enum_value = i32::from_xdr_buffered(read_stream)?;
121        match enum_value {
122            0 => Ok(ScpStatementType::ScpStPrepare),
123            1 => Ok(ScpStatementType::ScpStConfirm),
124            2 => Ok(ScpStatementType::ScpStExternalize),
125            3 => Ok(ScpStatementType::ScpStNominate),
126            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
127        }
128    }
129}
130
131#[allow(dead_code)]
133#[cfg(feature = "all-types")]
134#[derive(Debug, Clone, Eq, PartialEq)]
135pub struct ScpNomination {
136    pub quorum_set_hash: Hash,
137    pub votes: UnlimitedVarArray<Value>,
138    pub accepted: UnlimitedVarArray<Value>,
139}
140
141#[cfg(feature = "all-types")]
142impl XdrCodec for ScpNomination {
143    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
144        self.quorum_set_hash.to_xdr_buffered(write_stream);
145        self.votes.to_xdr_buffered(write_stream);
146        self.accepted.to_xdr_buffered(write_stream);
147    }
148
149    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
150        Ok(ScpNomination {
151            quorum_set_hash: Hash::from_xdr_buffered(read_stream)?,
152            votes: UnlimitedVarArray::<Value>::from_xdr_buffered(read_stream)?,
153            accepted: UnlimitedVarArray::<Value>::from_xdr_buffered(read_stream)?,
154        })
155    }
156}
157
158#[allow(dead_code)]
160#[cfg(feature = "all-types")]
161#[derive(Debug, Clone, Eq, PartialEq)]
162pub struct ScpStatementPrepare {
163    pub quorum_set_hash: Hash,
164    pub ballot: ScpBallot,
165    pub prepared: Option<ScpBallot>,
166    pub prepared_prime: Option<ScpBallot>,
167    pub n_c: Uint32,
168    pub n_h: Uint32,
169}
170
171#[cfg(feature = "all-types")]
172impl XdrCodec for ScpStatementPrepare {
173    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
174        self.quorum_set_hash.to_xdr_buffered(write_stream);
175        self.ballot.to_xdr_buffered(write_stream);
176        self.prepared.to_xdr_buffered(write_stream);
177        self.prepared_prime.to_xdr_buffered(write_stream);
178        self.n_c.to_xdr_buffered(write_stream);
179        self.n_h.to_xdr_buffered(write_stream);
180    }
181
182    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
183        Ok(ScpStatementPrepare {
184            quorum_set_hash: Hash::from_xdr_buffered(read_stream)?,
185            ballot: ScpBallot::from_xdr_buffered(read_stream)?,
186            prepared: Option::<ScpBallot>::from_xdr_buffered(read_stream)?,
187            prepared_prime: Option::<ScpBallot>::from_xdr_buffered(read_stream)?,
188            n_c: Uint32::from_xdr_buffered(read_stream)?,
189            n_h: Uint32::from_xdr_buffered(read_stream)?,
190        })
191    }
192}
193
194#[allow(dead_code)]
196#[cfg(feature = "all-types")]
197#[derive(Debug, Clone, Eq, PartialEq)]
198pub struct ScpStatementConfirm {
199    pub ballot: ScpBallot,
200    pub n_prepared: Uint32,
201    pub n_commit: Uint32,
202    pub n_h: Uint32,
203    pub quorum_set_hash: Hash,
204}
205
206#[cfg(feature = "all-types")]
207impl XdrCodec for ScpStatementConfirm {
208    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
209        self.ballot.to_xdr_buffered(write_stream);
210        self.n_prepared.to_xdr_buffered(write_stream);
211        self.n_commit.to_xdr_buffered(write_stream);
212        self.n_h.to_xdr_buffered(write_stream);
213        self.quorum_set_hash.to_xdr_buffered(write_stream);
214    }
215
216    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
217        Ok(ScpStatementConfirm {
218            ballot: ScpBallot::from_xdr_buffered(read_stream)?,
219            n_prepared: Uint32::from_xdr_buffered(read_stream)?,
220            n_commit: Uint32::from_xdr_buffered(read_stream)?,
221            n_h: Uint32::from_xdr_buffered(read_stream)?,
222            quorum_set_hash: Hash::from_xdr_buffered(read_stream)?,
223        })
224    }
225}
226
227#[allow(dead_code)]
229#[cfg(feature = "all-types")]
230#[derive(Debug, Clone, Eq, PartialEq)]
231pub struct ScpStatementExternalize {
232    pub commit: ScpBallot,
233    pub n_h: Uint32,
234    pub commit_quorum_set_hash: Hash,
235}
236
237#[cfg(feature = "all-types")]
238impl XdrCodec for ScpStatementExternalize {
239    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
240        self.commit.to_xdr_buffered(write_stream);
241        self.n_h.to_xdr_buffered(write_stream);
242        self.commit_quorum_set_hash.to_xdr_buffered(write_stream);
243    }
244
245    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
246        Ok(ScpStatementExternalize {
247            commit: ScpBallot::from_xdr_buffered(read_stream)?,
248            n_h: Uint32::from_xdr_buffered(read_stream)?,
249            commit_quorum_set_hash: Hash::from_xdr_buffered(read_stream)?,
250        })
251    }
252}
253
254#[allow(dead_code)]
256#[cfg(feature = "all-types")]
257#[derive(Debug, Clone, Eq, PartialEq)]
258pub struct ScpStatement {
259    pub node_id: NodeId,
260    pub slot_index: Uint64,
261    pub pledges: ScpStatementPledges,
262}
263
264#[cfg(feature = "all-types")]
265impl XdrCodec for ScpStatement {
266    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
267        self.node_id.to_xdr_buffered(write_stream);
268        self.slot_index.to_xdr_buffered(write_stream);
269        self.pledges.to_xdr_buffered(write_stream);
270    }
271
272    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
273        Ok(ScpStatement {
274            node_id: NodeId::from_xdr_buffered(read_stream)?,
275            slot_index: Uint64::from_xdr_buffered(read_stream)?,
276            pledges: ScpStatementPledges::from_xdr_buffered(read_stream)?,
277        })
278    }
279}
280
281#[allow(dead_code)]
283#[cfg(feature = "all-types")]
284#[derive(Debug, Clone, Eq, PartialEq)]
285pub struct ScpEnvelope {
286    pub statement: ScpStatement,
287    pub signature: Signature,
288}
289
290#[cfg(feature = "all-types")]
291impl XdrCodec for ScpEnvelope {
292    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
293        self.statement.to_xdr_buffered(write_stream);
294        self.signature.to_xdr_buffered(write_stream);
295    }
296
297    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
298        Ok(ScpEnvelope {
299            statement: ScpStatement::from_xdr_buffered(read_stream)?,
300            signature: Signature::from_xdr_buffered(read_stream)?,
301        })
302    }
303}
304
305#[allow(dead_code)]
307#[cfg(feature = "all-types")]
308#[derive(Debug, Clone, Eq, PartialEq)]
309pub struct ScpQuorumSet {
310    pub threshold: Uint32,
311    pub validators: UnlimitedVarArray<NodeId>,
312    pub inner_sets: UnlimitedVarArray<ScpQuorumSet>,
313}
314
315#[cfg(feature = "all-types")]
316impl XdrCodec for ScpQuorumSet {
317    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
318        self.threshold.to_xdr_buffered(write_stream);
319        self.validators.to_xdr_buffered(write_stream);
320        self.inner_sets.to_xdr_buffered(write_stream);
321    }
322
323    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
324        Ok(ScpQuorumSet {
325            threshold: Uint32::from_xdr_buffered(read_stream)?,
326            validators: UnlimitedVarArray::<NodeId>::from_xdr_buffered(read_stream)?,
327            inner_sets: UnlimitedVarArray::<ScpQuorumSet>::from_xdr_buffered(read_stream)?,
328        })
329    }
330}
331
332#[allow(dead_code)]
334#[derive(Debug, Clone, Eq, PartialEq)]
335pub struct ConfigSettingContractExecutionLanesV0 {
336    pub ledger_max_tx_count: Uint32,
337}
338
339impl XdrCodec for ConfigSettingContractExecutionLanesV0 {
340    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
341        self.ledger_max_tx_count.to_xdr_buffered(write_stream);
342    }
343
344    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
345        Ok(ConfigSettingContractExecutionLanesV0 { ledger_max_tx_count: Uint32::from_xdr_buffered(read_stream)? })
346    }
347}
348
349#[allow(dead_code)]
351#[derive(Debug, Clone, Eq, PartialEq)]
352pub struct ConfigSettingContractComputeV0 {
353    pub ledger_max_instructions: Int64,
354    pub tx_max_instructions: Int64,
355    pub fee_rate_per_instructions_increment: Int64,
356    pub tx_memory_limit: Uint32,
357}
358
359impl XdrCodec for ConfigSettingContractComputeV0 {
360    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
361        self.ledger_max_instructions.to_xdr_buffered(write_stream);
362        self.tx_max_instructions.to_xdr_buffered(write_stream);
363        self.fee_rate_per_instructions_increment.to_xdr_buffered(write_stream);
364        self.tx_memory_limit.to_xdr_buffered(write_stream);
365    }
366
367    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
368        Ok(ConfigSettingContractComputeV0 {
369            ledger_max_instructions: Int64::from_xdr_buffered(read_stream)?,
370            tx_max_instructions: Int64::from_xdr_buffered(read_stream)?,
371            fee_rate_per_instructions_increment: Int64::from_xdr_buffered(read_stream)?,
372            tx_memory_limit: Uint32::from_xdr_buffered(read_stream)?,
373        })
374    }
375}
376
377#[allow(dead_code)]
379#[derive(Debug, Clone, Eq, PartialEq)]
380pub struct ConfigSettingContractLedgerCostV0 {
381    pub ledger_max_read_ledger_entries: Uint32,
382    pub ledger_max_read_bytes: Uint32,
383    pub ledger_max_write_ledger_entries: Uint32,
384    pub ledger_max_write_bytes: Uint32,
385    pub tx_max_read_ledger_entries: Uint32,
386    pub tx_max_read_bytes: Uint32,
387    pub tx_max_write_ledger_entries: Uint32,
388    pub tx_max_write_bytes: Uint32,
389    pub fee_read_ledger_entry: Int64,
390    pub fee_write_ledger_entry: Int64,
391    pub fee_read1_kb: Int64,
392    pub bucket_list_target_size_bytes: Int64,
393    pub write_fee1_kb_bucket_list_low: Int64,
394    pub write_fee1_kb_bucket_list_high: Int64,
395    pub bucket_list_write_fee_growth_factor: Uint32,
396}
397
398impl XdrCodec for ConfigSettingContractLedgerCostV0 {
399    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
400        self.ledger_max_read_ledger_entries.to_xdr_buffered(write_stream);
401        self.ledger_max_read_bytes.to_xdr_buffered(write_stream);
402        self.ledger_max_write_ledger_entries.to_xdr_buffered(write_stream);
403        self.ledger_max_write_bytes.to_xdr_buffered(write_stream);
404        self.tx_max_read_ledger_entries.to_xdr_buffered(write_stream);
405        self.tx_max_read_bytes.to_xdr_buffered(write_stream);
406        self.tx_max_write_ledger_entries.to_xdr_buffered(write_stream);
407        self.tx_max_write_bytes.to_xdr_buffered(write_stream);
408        self.fee_read_ledger_entry.to_xdr_buffered(write_stream);
409        self.fee_write_ledger_entry.to_xdr_buffered(write_stream);
410        self.fee_read1_kb.to_xdr_buffered(write_stream);
411        self.bucket_list_target_size_bytes.to_xdr_buffered(write_stream);
412        self.write_fee1_kb_bucket_list_low.to_xdr_buffered(write_stream);
413        self.write_fee1_kb_bucket_list_high.to_xdr_buffered(write_stream);
414        self.bucket_list_write_fee_growth_factor.to_xdr_buffered(write_stream);
415    }
416
417    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
418        Ok(ConfigSettingContractLedgerCostV0 {
419            ledger_max_read_ledger_entries: Uint32::from_xdr_buffered(read_stream)?,
420            ledger_max_read_bytes: Uint32::from_xdr_buffered(read_stream)?,
421            ledger_max_write_ledger_entries: Uint32::from_xdr_buffered(read_stream)?,
422            ledger_max_write_bytes: Uint32::from_xdr_buffered(read_stream)?,
423            tx_max_read_ledger_entries: Uint32::from_xdr_buffered(read_stream)?,
424            tx_max_read_bytes: Uint32::from_xdr_buffered(read_stream)?,
425            tx_max_write_ledger_entries: Uint32::from_xdr_buffered(read_stream)?,
426            tx_max_write_bytes: Uint32::from_xdr_buffered(read_stream)?,
427            fee_read_ledger_entry: Int64::from_xdr_buffered(read_stream)?,
428            fee_write_ledger_entry: Int64::from_xdr_buffered(read_stream)?,
429            fee_read1_kb: Int64::from_xdr_buffered(read_stream)?,
430            bucket_list_target_size_bytes: Int64::from_xdr_buffered(read_stream)?,
431            write_fee1_kb_bucket_list_low: Int64::from_xdr_buffered(read_stream)?,
432            write_fee1_kb_bucket_list_high: Int64::from_xdr_buffered(read_stream)?,
433            bucket_list_write_fee_growth_factor: Uint32::from_xdr_buffered(read_stream)?,
434        })
435    }
436}
437
438#[allow(dead_code)]
440#[derive(Debug, Clone, Eq, PartialEq)]
441pub struct ConfigSettingContractHistoricalDataV0 {
442    pub fee_historical1_kb: Int64,
443}
444
445impl XdrCodec for ConfigSettingContractHistoricalDataV0 {
446    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
447        self.fee_historical1_kb.to_xdr_buffered(write_stream);
448    }
449
450    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
451        Ok(ConfigSettingContractHistoricalDataV0 { fee_historical1_kb: Int64::from_xdr_buffered(read_stream)? })
452    }
453}
454
455#[allow(dead_code)]
457#[derive(Debug, Clone, Eq, PartialEq)]
458pub struct ConfigSettingContractEventsV0 {
459    pub tx_max_contract_events_size_bytes: Uint32,
460    pub fee_contract_events1_kb: Int64,
461}
462
463impl XdrCodec for ConfigSettingContractEventsV0 {
464    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
465        self.tx_max_contract_events_size_bytes.to_xdr_buffered(write_stream);
466        self.fee_contract_events1_kb.to_xdr_buffered(write_stream);
467    }
468
469    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
470        Ok(ConfigSettingContractEventsV0 {
471            tx_max_contract_events_size_bytes: Uint32::from_xdr_buffered(read_stream)?,
472            fee_contract_events1_kb: Int64::from_xdr_buffered(read_stream)?,
473        })
474    }
475}
476
477#[allow(dead_code)]
479#[derive(Debug, Clone, Eq, PartialEq)]
480pub struct ConfigSettingContractBandwidthV0 {
481    pub ledger_max_txs_size_bytes: Uint32,
482    pub tx_max_size_bytes: Uint32,
483    pub fee_tx_size1_kb: Int64,
484}
485
486impl XdrCodec for ConfigSettingContractBandwidthV0 {
487    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
488        self.ledger_max_txs_size_bytes.to_xdr_buffered(write_stream);
489        self.tx_max_size_bytes.to_xdr_buffered(write_stream);
490        self.fee_tx_size1_kb.to_xdr_buffered(write_stream);
491    }
492
493    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
494        Ok(ConfigSettingContractBandwidthV0 {
495            ledger_max_txs_size_bytes: Uint32::from_xdr_buffered(read_stream)?,
496            tx_max_size_bytes: Uint32::from_xdr_buffered(read_stream)?,
497            fee_tx_size1_kb: Int64::from_xdr_buffered(read_stream)?,
498        })
499    }
500}
501
502#[allow(dead_code)]
504#[cfg(feature = "all-types")]
505#[derive(Debug, Copy, Clone, Eq, PartialEq)]
506pub enum ContractCostType {
507    WasmInsnExec = 0,
508    MemAlloc = 1,
509    MemCpy = 2,
510    MemCmp = 3,
511    DispatchHostFunction = 4,
512    VisitObject = 5,
513    ValSer = 6,
514    ValDeser = 7,
515    ComputeSha256Hash = 8,
516    ComputeEd25519PubKey = 9,
517    VerifyEd25519Sig = 10,
518    VmInstantiation = 11,
519    VmCachedInstantiation = 12,
520    InvokeVmFunction = 13,
521    ComputeKeccak256Hash = 14,
522    DecodeEcdsaCurve256Sig = 15,
523    RecoverEcdsaSecp256k1Key = 16,
524    Int256AddSub = 17,
525    Int256Mul = 18,
526    Int256Div = 19,
527    Int256Pow = 20,
528    Int256Shift = 21,
529    ChaCha20DrawBytes = 22,
530    ParseWasmInstructions = 23,
531    ParseWasmFunctions = 24,
532    ParseWasmGlobals = 25,
533    ParseWasmTableEntries = 26,
534    ParseWasmTypes = 27,
535    ParseWasmDataSegments = 28,
536    ParseWasmElemSegments = 29,
537    ParseWasmImports = 30,
538    ParseWasmExports = 31,
539    ParseWasmDataSegmentBytes = 32,
540    InstantiateWasmInstructions = 33,
541    InstantiateWasmFunctions = 34,
542    InstantiateWasmGlobals = 35,
543    InstantiateWasmTableEntries = 36,
544    InstantiateWasmTypes = 37,
545    InstantiateWasmDataSegments = 38,
546    InstantiateWasmElemSegments = 39,
547    InstantiateWasmImports = 40,
548    InstantiateWasmExports = 41,
549    InstantiateWasmDataSegmentBytes = 42,
550    Sec1DecodePointUncompressed = 43,
551    VerifyEcdsaSecp256r1Sig = 44,
552}
553
554#[cfg(feature = "all-types")]
555impl XdrCodec for ContractCostType {
556    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
557        let value = *self as i32;
558        value.to_xdr_buffered(write_stream);
559    }
560
561    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
562        let enum_value = i32::from_xdr_buffered(read_stream)?;
563        match enum_value {
564            0 => Ok(ContractCostType::WasmInsnExec),
565            1 => Ok(ContractCostType::MemAlloc),
566            2 => Ok(ContractCostType::MemCpy),
567            3 => Ok(ContractCostType::MemCmp),
568            4 => Ok(ContractCostType::DispatchHostFunction),
569            5 => Ok(ContractCostType::VisitObject),
570            6 => Ok(ContractCostType::ValSer),
571            7 => Ok(ContractCostType::ValDeser),
572            8 => Ok(ContractCostType::ComputeSha256Hash),
573            9 => Ok(ContractCostType::ComputeEd25519PubKey),
574            10 => Ok(ContractCostType::VerifyEd25519Sig),
575            11 => Ok(ContractCostType::VmInstantiation),
576            12 => Ok(ContractCostType::VmCachedInstantiation),
577            13 => Ok(ContractCostType::InvokeVmFunction),
578            14 => Ok(ContractCostType::ComputeKeccak256Hash),
579            15 => Ok(ContractCostType::DecodeEcdsaCurve256Sig),
580            16 => Ok(ContractCostType::RecoverEcdsaSecp256k1Key),
581            17 => Ok(ContractCostType::Int256AddSub),
582            18 => Ok(ContractCostType::Int256Mul),
583            19 => Ok(ContractCostType::Int256Div),
584            20 => Ok(ContractCostType::Int256Pow),
585            21 => Ok(ContractCostType::Int256Shift),
586            22 => Ok(ContractCostType::ChaCha20DrawBytes),
587            23 => Ok(ContractCostType::ParseWasmInstructions),
588            24 => Ok(ContractCostType::ParseWasmFunctions),
589            25 => Ok(ContractCostType::ParseWasmGlobals),
590            26 => Ok(ContractCostType::ParseWasmTableEntries),
591            27 => Ok(ContractCostType::ParseWasmTypes),
592            28 => Ok(ContractCostType::ParseWasmDataSegments),
593            29 => Ok(ContractCostType::ParseWasmElemSegments),
594            30 => Ok(ContractCostType::ParseWasmImports),
595            31 => Ok(ContractCostType::ParseWasmExports),
596            32 => Ok(ContractCostType::ParseWasmDataSegmentBytes),
597            33 => Ok(ContractCostType::InstantiateWasmInstructions),
598            34 => Ok(ContractCostType::InstantiateWasmFunctions),
599            35 => Ok(ContractCostType::InstantiateWasmGlobals),
600            36 => Ok(ContractCostType::InstantiateWasmTableEntries),
601            37 => Ok(ContractCostType::InstantiateWasmTypes),
602            38 => Ok(ContractCostType::InstantiateWasmDataSegments),
603            39 => Ok(ContractCostType::InstantiateWasmElemSegments),
604            40 => Ok(ContractCostType::InstantiateWasmImports),
605            41 => Ok(ContractCostType::InstantiateWasmExports),
606            42 => Ok(ContractCostType::InstantiateWasmDataSegmentBytes),
607            43 => Ok(ContractCostType::Sec1DecodePointUncompressed),
608            44 => Ok(ContractCostType::VerifyEcdsaSecp256r1Sig),
609            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
610        }
611    }
612}
613
614#[allow(dead_code)]
616#[derive(Debug, Clone, Eq, PartialEq)]
617pub struct ContractCostParamEntry {
618    pub ext: ExtensionPoint,
619    pub const_term: Int64,
620    pub linear_term: Int64,
621}
622
623impl XdrCodec for ContractCostParamEntry {
624    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
625        self.ext.to_xdr_buffered(write_stream);
626        self.const_term.to_xdr_buffered(write_stream);
627        self.linear_term.to_xdr_buffered(write_stream);
628    }
629
630    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
631        Ok(ContractCostParamEntry {
632            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
633            const_term: Int64::from_xdr_buffered(read_stream)?,
634            linear_term: Int64::from_xdr_buffered(read_stream)?,
635        })
636    }
637}
638
639#[allow(dead_code)]
641#[derive(Debug, Clone, Eq, PartialEq)]
642pub struct StateArchivalSettings {
643    pub max_entry_ttl: Uint32,
644    pub min_temporary_ttl: Uint32,
645    pub min_persistent_ttl: Uint32,
646    pub persistent_rent_rate_denominator: Int64,
647    pub temp_rent_rate_denominator: Int64,
648    pub max_entries_to_archive: Uint32,
649    pub bucket_list_size_window_sample_size: Uint32,
650    pub bucket_list_window_sample_period: Uint32,
651    pub eviction_scan_size: Uint32,
652    pub starting_eviction_scan_level: Uint32,
653}
654
655impl XdrCodec for StateArchivalSettings {
656    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
657        self.max_entry_ttl.to_xdr_buffered(write_stream);
658        self.min_temporary_ttl.to_xdr_buffered(write_stream);
659        self.min_persistent_ttl.to_xdr_buffered(write_stream);
660        self.persistent_rent_rate_denominator.to_xdr_buffered(write_stream);
661        self.temp_rent_rate_denominator.to_xdr_buffered(write_stream);
662        self.max_entries_to_archive.to_xdr_buffered(write_stream);
663        self.bucket_list_size_window_sample_size.to_xdr_buffered(write_stream);
664        self.bucket_list_window_sample_period.to_xdr_buffered(write_stream);
665        self.eviction_scan_size.to_xdr_buffered(write_stream);
666        self.starting_eviction_scan_level.to_xdr_buffered(write_stream);
667    }
668
669    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
670        Ok(StateArchivalSettings {
671            max_entry_ttl: Uint32::from_xdr_buffered(read_stream)?,
672            min_temporary_ttl: Uint32::from_xdr_buffered(read_stream)?,
673            min_persistent_ttl: Uint32::from_xdr_buffered(read_stream)?,
674            persistent_rent_rate_denominator: Int64::from_xdr_buffered(read_stream)?,
675            temp_rent_rate_denominator: Int64::from_xdr_buffered(read_stream)?,
676            max_entries_to_archive: Uint32::from_xdr_buffered(read_stream)?,
677            bucket_list_size_window_sample_size: Uint32::from_xdr_buffered(read_stream)?,
678            bucket_list_window_sample_period: Uint32::from_xdr_buffered(read_stream)?,
679            eviction_scan_size: Uint32::from_xdr_buffered(read_stream)?,
680            starting_eviction_scan_level: Uint32::from_xdr_buffered(read_stream)?,
681        })
682    }
683}
684
685#[allow(dead_code)]
687#[derive(Debug, Clone, Eq, PartialEq)]
688pub struct EvictionIterator {
689    pub bucket_list_level: Uint32,
690    pub is_curr_bucket: bool,
691    pub bucket_file_offset: Uint64,
692}
693
694impl XdrCodec for EvictionIterator {
695    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
696        self.bucket_list_level.to_xdr_buffered(write_stream);
697        self.is_curr_bucket.to_xdr_buffered(write_stream);
698        self.bucket_file_offset.to_xdr_buffered(write_stream);
699    }
700
701    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
702        Ok(EvictionIterator {
703            bucket_list_level: Uint32::from_xdr_buffered(read_stream)?,
704            is_curr_bucket: bool::from_xdr_buffered(read_stream)?,
705            bucket_file_offset: Uint64::from_xdr_buffered(read_stream)?,
706        })
707    }
708}
709
710#[allow(dead_code)]
712pub type ContractCostParams = LimitedVarArray<ContractCostParamEntry, CONTRACT_COST_COUNT_LIMIT>;
713
714#[allow(dead_code)]
716#[derive(Debug, Copy, Clone, Eq, PartialEq)]
717pub enum ConfigSettingId {
718    ConfigSettingContractMaxSizeBytes = 0,
719    ConfigSettingContractComputeV0 = 1,
720    ConfigSettingContractLedgerCostV0 = 2,
721    ConfigSettingContractHistoricalDataV0 = 3,
722    ConfigSettingContractEventsV0 = 4,
723    ConfigSettingContractBandwidthV0 = 5,
724    ConfigSettingContractCostParamsCpuInstructions = 6,
725    ConfigSettingContractCostParamsMemoryBytes = 7,
726    ConfigSettingContractDataKeySizeBytes = 8,
727    ConfigSettingContractDataEntrySizeBytes = 9,
728    ConfigSettingStateArchival = 10,
729    ConfigSettingContractExecutionLanes = 11,
730    ConfigSettingBucketlistSizeWindow = 12,
731    ConfigSettingEvictionIterator = 13,
732}
733
734impl XdrCodec for ConfigSettingId {
735    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
736        let value = *self as i32;
737        value.to_xdr_buffered(write_stream);
738    }
739
740    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
741        let enum_value = i32::from_xdr_buffered(read_stream)?;
742        match enum_value {
743            0 => Ok(ConfigSettingId::ConfigSettingContractMaxSizeBytes),
744            1 => Ok(ConfigSettingId::ConfigSettingContractComputeV0),
745            2 => Ok(ConfigSettingId::ConfigSettingContractLedgerCostV0),
746            3 => Ok(ConfigSettingId::ConfigSettingContractHistoricalDataV0),
747            4 => Ok(ConfigSettingId::ConfigSettingContractEventsV0),
748            5 => Ok(ConfigSettingId::ConfigSettingContractBandwidthV0),
749            6 => Ok(ConfigSettingId::ConfigSettingContractCostParamsCpuInstructions),
750            7 => Ok(ConfigSettingId::ConfigSettingContractCostParamsMemoryBytes),
751            8 => Ok(ConfigSettingId::ConfigSettingContractDataKeySizeBytes),
752            9 => Ok(ConfigSettingId::ConfigSettingContractDataEntrySizeBytes),
753            10 => Ok(ConfigSettingId::ConfigSettingStateArchival),
754            11 => Ok(ConfigSettingId::ConfigSettingContractExecutionLanes),
755            12 => Ok(ConfigSettingId::ConfigSettingBucketlistSizeWindow),
756            13 => Ok(ConfigSettingId::ConfigSettingEvictionIterator),
757            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
758        }
759    }
760}
761
762#[allow(dead_code)]
764#[cfg(feature = "all-types")]
765#[derive(Debug, Copy, Clone, Eq, PartialEq)]
766pub enum ScEnvMetaKind {
767    ScEnvMetaKindInterfaceVersion = 0,
768}
769
770#[cfg(feature = "all-types")]
771impl XdrCodec for ScEnvMetaKind {
772    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
773        let value = *self as i32;
774        value.to_xdr_buffered(write_stream);
775    }
776
777    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
778        let enum_value = i32::from_xdr_buffered(read_stream)?;
779        match enum_value {
780            0 => Ok(ScEnvMetaKind::ScEnvMetaKindInterfaceVersion),
781            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
782        }
783    }
784}
785
786#[allow(dead_code)]
788#[cfg(feature = "all-types")]
789#[derive(Debug, Clone, Eq, PartialEq)]
790pub struct ScMetaV0 {
791    pub key: UnlimitedString,
792    pub val: UnlimitedString,
793}
794
795#[cfg(feature = "all-types")]
796impl XdrCodec for ScMetaV0 {
797    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
798        self.key.to_xdr_buffered(write_stream);
799        self.val.to_xdr_buffered(write_stream);
800    }
801
802    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
803        Ok(ScMetaV0 {
804            key: UnlimitedString::from_xdr_buffered(read_stream)?,
805            val: UnlimitedString::from_xdr_buffered(read_stream)?,
806        })
807    }
808}
809
810#[allow(dead_code)]
812#[cfg(feature = "all-types")]
813#[derive(Debug, Copy, Clone, Eq, PartialEq)]
814pub enum ScMetaKind {
815    ScMetaV0 = 0,
816}
817
818#[cfg(feature = "all-types")]
819impl XdrCodec for ScMetaKind {
820    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
821        let value = *self as i32;
822        value.to_xdr_buffered(write_stream);
823    }
824
825    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
826        let enum_value = i32::from_xdr_buffered(read_stream)?;
827        match enum_value {
828            0 => Ok(ScMetaKind::ScMetaV0),
829            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
830        }
831    }
832}
833
834#[allow(dead_code)]
836#[cfg(feature = "all-types")]
837#[derive(Debug, Copy, Clone, Eq, PartialEq)]
838pub enum ScSpecType {
839    ScSpecTypeVal = 0,
840    ScSpecTypeBool = 1,
841    ScSpecTypeVoid = 2,
842    ScSpecTypeError = 3,
843    ScSpecTypeU32 = 4,
844    ScSpecTypeI32 = 5,
845    ScSpecTypeU64 = 6,
846    ScSpecTypeI64 = 7,
847    ScSpecTypeTimepoint = 8,
848    ScSpecTypeDuration = 9,
849    ScSpecTypeU128 = 10,
850    ScSpecTypeI128 = 11,
851    ScSpecTypeU256 = 12,
852    ScSpecTypeI256 = 13,
853    ScSpecTypeBytes = 14,
854    ScSpecTypeString = 16,
855    ScSpecTypeSymbol = 17,
856    ScSpecTypeAddress = 19,
857    ScSpecTypeOption = 1000,
858    ScSpecTypeResult = 1001,
859    ScSpecTypeVec = 1002,
860    ScSpecTypeMap = 1004,
861    ScSpecTypeTuple = 1005,
862    ScSpecTypeBytesN = 1006,
863    ScSpecTypeUdt = 2000,
864}
865
866#[cfg(feature = "all-types")]
867impl XdrCodec for ScSpecType {
868    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
869        let value = *self as i32;
870        value.to_xdr_buffered(write_stream);
871    }
872
873    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
874        let enum_value = i32::from_xdr_buffered(read_stream)?;
875        match enum_value {
876            0 => Ok(ScSpecType::ScSpecTypeVal),
877            1 => Ok(ScSpecType::ScSpecTypeBool),
878            2 => Ok(ScSpecType::ScSpecTypeVoid),
879            3 => Ok(ScSpecType::ScSpecTypeError),
880            4 => Ok(ScSpecType::ScSpecTypeU32),
881            5 => Ok(ScSpecType::ScSpecTypeI32),
882            6 => Ok(ScSpecType::ScSpecTypeU64),
883            7 => Ok(ScSpecType::ScSpecTypeI64),
884            8 => Ok(ScSpecType::ScSpecTypeTimepoint),
885            9 => Ok(ScSpecType::ScSpecTypeDuration),
886            10 => Ok(ScSpecType::ScSpecTypeU128),
887            11 => Ok(ScSpecType::ScSpecTypeI128),
888            12 => Ok(ScSpecType::ScSpecTypeU256),
889            13 => Ok(ScSpecType::ScSpecTypeI256),
890            14 => Ok(ScSpecType::ScSpecTypeBytes),
891            16 => Ok(ScSpecType::ScSpecTypeString),
892            17 => Ok(ScSpecType::ScSpecTypeSymbol),
893            19 => Ok(ScSpecType::ScSpecTypeAddress),
894            1000 => Ok(ScSpecType::ScSpecTypeOption),
895            1001 => Ok(ScSpecType::ScSpecTypeResult),
896            1002 => Ok(ScSpecType::ScSpecTypeVec),
897            1004 => Ok(ScSpecType::ScSpecTypeMap),
898            1005 => Ok(ScSpecType::ScSpecTypeTuple),
899            1006 => Ok(ScSpecType::ScSpecTypeBytesN),
900            2000 => Ok(ScSpecType::ScSpecTypeUdt),
901            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
902        }
903    }
904}
905
906#[allow(dead_code)]
908#[cfg(feature = "all-types")]
909#[derive(Debug, Clone, Eq, PartialEq)]
910pub struct ScSpecTypeOption {
911    pub value_type: Box<ScSpecTypeDef>,
912}
913
914#[cfg(feature = "all-types")]
915impl XdrCodec for ScSpecTypeOption {
916    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
917        self.value_type.to_xdr_buffered(write_stream);
918    }
919
920    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
921        Ok(ScSpecTypeOption { value_type: Box::new(ScSpecTypeDef::from_xdr_buffered(read_stream)?) })
922    }
923}
924
925#[allow(dead_code)]
927#[cfg(feature = "all-types")]
928#[derive(Debug, Clone, Eq, PartialEq)]
929pub struct ScSpecTypeResult {
930    pub ok_type: Box<ScSpecTypeDef>,
931    pub error_type: ScSpecTypeDef,
932}
933
934#[cfg(feature = "all-types")]
935impl XdrCodec for ScSpecTypeResult {
936    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
937        self.ok_type.to_xdr_buffered(write_stream);
938        self.error_type.to_xdr_buffered(write_stream);
939    }
940
941    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
942        Ok(ScSpecTypeResult {
943            ok_type: Box::new(ScSpecTypeDef::from_xdr_buffered(read_stream)?),
944            error_type: ScSpecTypeDef::from_xdr_buffered(read_stream)?,
945        })
946    }
947}
948
949#[allow(dead_code)]
951#[cfg(feature = "all-types")]
952#[derive(Debug, Clone, Eq, PartialEq)]
953pub struct ScSpecTypeVec {
954    pub element_type: Box<ScSpecTypeDef>,
955}
956
957#[cfg(feature = "all-types")]
958impl XdrCodec for ScSpecTypeVec {
959    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
960        self.element_type.to_xdr_buffered(write_stream);
961    }
962
963    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
964        Ok(ScSpecTypeVec { element_type: Box::new(ScSpecTypeDef::from_xdr_buffered(read_stream)?) })
965    }
966}
967
968#[allow(dead_code)]
970#[cfg(feature = "all-types")]
971#[derive(Debug, Clone, Eq, PartialEq)]
972pub struct ScSpecTypeMap {
973    pub key_type: Box<ScSpecTypeDef>,
974    pub value_type: ScSpecTypeDef,
975}
976
977#[cfg(feature = "all-types")]
978impl XdrCodec for ScSpecTypeMap {
979    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
980        self.key_type.to_xdr_buffered(write_stream);
981        self.value_type.to_xdr_buffered(write_stream);
982    }
983
984    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
985        Ok(ScSpecTypeMap {
986            key_type: Box::new(ScSpecTypeDef::from_xdr_buffered(read_stream)?),
987            value_type: ScSpecTypeDef::from_xdr_buffered(read_stream)?,
988        })
989    }
990}
991
992#[allow(dead_code)]
994#[cfg(feature = "all-types")]
995#[derive(Debug, Clone, Eq, PartialEq)]
996pub struct ScSpecTypeTuple {
997    pub value_types: Box<LimitedVarArray<ScSpecTypeDef, 12>>,
998}
999
1000#[cfg(feature = "all-types")]
1001impl XdrCodec for ScSpecTypeTuple {
1002    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1003        self.value_types.to_xdr_buffered(write_stream);
1004    }
1005
1006    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1007        Ok(ScSpecTypeTuple {
1008            value_types: Box::new(LimitedVarArray::<ScSpecTypeDef, 12>::from_xdr_buffered(read_stream)?),
1009        })
1010    }
1011}
1012
1013#[allow(dead_code)]
1015#[cfg(feature = "all-types")]
1016#[derive(Debug, Clone, Eq, PartialEq)]
1017pub struct ScSpecTypeBytesN {
1018    pub n: Box<Uint32>,
1019}
1020
1021#[cfg(feature = "all-types")]
1022impl XdrCodec for ScSpecTypeBytesN {
1023    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1024        self.n.to_xdr_buffered(write_stream);
1025    }
1026
1027    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1028        Ok(ScSpecTypeBytesN { n: Box::new(Uint32::from_xdr_buffered(read_stream)?) })
1029    }
1030}
1031
1032#[allow(dead_code)]
1034#[cfg(feature = "all-types")]
1035#[derive(Debug, Clone, Eq, PartialEq)]
1036pub struct ScSpecTypeUdt {
1037    pub name: Box<LimitedString<60>>,
1038}
1039
1040#[cfg(feature = "all-types")]
1041impl XdrCodec for ScSpecTypeUdt {
1042    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1043        self.name.to_xdr_buffered(write_stream);
1044    }
1045
1046    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1047        Ok(ScSpecTypeUdt { name: Box::new(LimitedString::<60>::from_xdr_buffered(read_stream)?) })
1048    }
1049}
1050
1051#[allow(dead_code)]
1053#[cfg(feature = "all-types")]
1054#[derive(Debug, Clone, Eq, PartialEq)]
1055pub struct ScSpecUdtStructFieldV0 {
1056    pub doc: LimitedString<1024>,
1057    pub name: LimitedString<30>,
1058    pub type_: ScSpecTypeDef,
1059}
1060
1061#[cfg(feature = "all-types")]
1062impl XdrCodec for ScSpecUdtStructFieldV0 {
1063    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1064        self.doc.to_xdr_buffered(write_stream);
1065        self.name.to_xdr_buffered(write_stream);
1066        self.type_.to_xdr_buffered(write_stream);
1067    }
1068
1069    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1070        Ok(ScSpecUdtStructFieldV0 {
1071            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1072            name: LimitedString::<30>::from_xdr_buffered(read_stream)?,
1073            type_: ScSpecTypeDef::from_xdr_buffered(read_stream)?,
1074        })
1075    }
1076}
1077
1078#[allow(dead_code)]
1080#[cfg(feature = "all-types")]
1081#[derive(Debug, Clone, Eq, PartialEq)]
1082pub struct ScSpecUdtStructV0 {
1083    pub doc: LimitedString<1024>,
1084    pub lib: LimitedString<80>,
1085    pub name: LimitedString<60>,
1086    pub fields: LimitedVarArray<ScSpecUdtStructFieldV0, 40>,
1087}
1088
1089#[cfg(feature = "all-types")]
1090impl XdrCodec for ScSpecUdtStructV0 {
1091    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1092        self.doc.to_xdr_buffered(write_stream);
1093        self.lib.to_xdr_buffered(write_stream);
1094        self.name.to_xdr_buffered(write_stream);
1095        self.fields.to_xdr_buffered(write_stream);
1096    }
1097
1098    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1099        Ok(ScSpecUdtStructV0 {
1100            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1101            lib: LimitedString::<80>::from_xdr_buffered(read_stream)?,
1102            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1103            fields: LimitedVarArray::<ScSpecUdtStructFieldV0, 40>::from_xdr_buffered(read_stream)?,
1104        })
1105    }
1106}
1107
1108#[allow(dead_code)]
1110#[cfg(feature = "all-types")]
1111#[derive(Debug, Clone, Eq, PartialEq)]
1112pub struct ScSpecUdtUnionCaseVoidV0 {
1113    pub doc: LimitedString<1024>,
1114    pub name: LimitedString<60>,
1115}
1116
1117#[cfg(feature = "all-types")]
1118impl XdrCodec for ScSpecUdtUnionCaseVoidV0 {
1119    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1120        self.doc.to_xdr_buffered(write_stream);
1121        self.name.to_xdr_buffered(write_stream);
1122    }
1123
1124    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1125        Ok(ScSpecUdtUnionCaseVoidV0 {
1126            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1127            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1128        })
1129    }
1130}
1131
1132#[allow(dead_code)]
1134#[cfg(feature = "all-types")]
1135#[derive(Debug, Clone, Eq, PartialEq)]
1136pub struct ScSpecUdtUnionCaseTupleV0 {
1137    pub doc: LimitedString<1024>,
1138    pub name: LimitedString<60>,
1139    pub type_: LimitedVarArray<ScSpecTypeDef, 12>,
1140}
1141
1142#[cfg(feature = "all-types")]
1143impl XdrCodec for ScSpecUdtUnionCaseTupleV0 {
1144    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1145        self.doc.to_xdr_buffered(write_stream);
1146        self.name.to_xdr_buffered(write_stream);
1147        self.type_.to_xdr_buffered(write_stream);
1148    }
1149
1150    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1151        Ok(ScSpecUdtUnionCaseTupleV0 {
1152            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1153            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1154            type_: LimitedVarArray::<ScSpecTypeDef, 12>::from_xdr_buffered(read_stream)?,
1155        })
1156    }
1157}
1158
1159#[allow(dead_code)]
1161#[cfg(feature = "all-types")]
1162#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1163pub enum ScSpecUdtUnionCaseV0Kind {
1164    ScSpecUdtUnionCaseVoidV0 = 0,
1165    ScSpecUdtUnionCaseTupleV0 = 1,
1166}
1167
1168#[cfg(feature = "all-types")]
1169impl XdrCodec for ScSpecUdtUnionCaseV0Kind {
1170    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1171        let value = *self as i32;
1172        value.to_xdr_buffered(write_stream);
1173    }
1174
1175    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1176        let enum_value = i32::from_xdr_buffered(read_stream)?;
1177        match enum_value {
1178            0 => Ok(ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseVoidV0),
1179            1 => Ok(ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseTupleV0),
1180            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1181        }
1182    }
1183}
1184
1185#[allow(dead_code)]
1187#[cfg(feature = "all-types")]
1188#[derive(Debug, Clone, Eq, PartialEq)]
1189pub struct ScSpecUdtUnionV0 {
1190    pub doc: LimitedString<1024>,
1191    pub lib: LimitedString<80>,
1192    pub name: LimitedString<60>,
1193    pub cases: LimitedVarArray<ScSpecUdtUnionCaseV0, 50>,
1194}
1195
1196#[cfg(feature = "all-types")]
1197impl XdrCodec for ScSpecUdtUnionV0 {
1198    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1199        self.doc.to_xdr_buffered(write_stream);
1200        self.lib.to_xdr_buffered(write_stream);
1201        self.name.to_xdr_buffered(write_stream);
1202        self.cases.to_xdr_buffered(write_stream);
1203    }
1204
1205    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1206        Ok(ScSpecUdtUnionV0 {
1207            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1208            lib: LimitedString::<80>::from_xdr_buffered(read_stream)?,
1209            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1210            cases: LimitedVarArray::<ScSpecUdtUnionCaseV0, 50>::from_xdr_buffered(read_stream)?,
1211        })
1212    }
1213}
1214
1215#[allow(dead_code)]
1217#[cfg(feature = "all-types")]
1218#[derive(Debug, Clone, Eq, PartialEq)]
1219pub struct ScSpecUdtEnumCaseV0 {
1220    pub doc: LimitedString<1024>,
1221    pub name: LimitedString<60>,
1222    pub value: Uint32,
1223}
1224
1225#[cfg(feature = "all-types")]
1226impl XdrCodec for ScSpecUdtEnumCaseV0 {
1227    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1228        self.doc.to_xdr_buffered(write_stream);
1229        self.name.to_xdr_buffered(write_stream);
1230        self.value.to_xdr_buffered(write_stream);
1231    }
1232
1233    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1234        Ok(ScSpecUdtEnumCaseV0 {
1235            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1236            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1237            value: Uint32::from_xdr_buffered(read_stream)?,
1238        })
1239    }
1240}
1241
1242#[allow(dead_code)]
1244#[cfg(feature = "all-types")]
1245#[derive(Debug, Clone, Eq, PartialEq)]
1246pub struct ScSpecUdtEnumV0 {
1247    pub doc: LimitedString<1024>,
1248    pub lib: LimitedString<80>,
1249    pub name: LimitedString<60>,
1250    pub cases: LimitedVarArray<ScSpecUdtEnumCaseV0, 50>,
1251}
1252
1253#[cfg(feature = "all-types")]
1254impl XdrCodec for ScSpecUdtEnumV0 {
1255    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1256        self.doc.to_xdr_buffered(write_stream);
1257        self.lib.to_xdr_buffered(write_stream);
1258        self.name.to_xdr_buffered(write_stream);
1259        self.cases.to_xdr_buffered(write_stream);
1260    }
1261
1262    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1263        Ok(ScSpecUdtEnumV0 {
1264            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1265            lib: LimitedString::<80>::from_xdr_buffered(read_stream)?,
1266            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1267            cases: LimitedVarArray::<ScSpecUdtEnumCaseV0, 50>::from_xdr_buffered(read_stream)?,
1268        })
1269    }
1270}
1271
1272#[allow(dead_code)]
1274#[cfg(feature = "all-types")]
1275#[derive(Debug, Clone, Eq, PartialEq)]
1276pub struct ScSpecUdtErrorEnumCaseV0 {
1277    pub doc: LimitedString<1024>,
1278    pub name: LimitedString<60>,
1279    pub value: Uint32,
1280}
1281
1282#[cfg(feature = "all-types")]
1283impl XdrCodec for ScSpecUdtErrorEnumCaseV0 {
1284    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1285        self.doc.to_xdr_buffered(write_stream);
1286        self.name.to_xdr_buffered(write_stream);
1287        self.value.to_xdr_buffered(write_stream);
1288    }
1289
1290    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1291        Ok(ScSpecUdtErrorEnumCaseV0 {
1292            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1293            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1294            value: Uint32::from_xdr_buffered(read_stream)?,
1295        })
1296    }
1297}
1298
1299#[allow(dead_code)]
1301#[cfg(feature = "all-types")]
1302#[derive(Debug, Clone, Eq, PartialEq)]
1303pub struct ScSpecUdtErrorEnumV0 {
1304    pub doc: LimitedString<1024>,
1305    pub lib: LimitedString<80>,
1306    pub name: LimitedString<60>,
1307    pub cases: LimitedVarArray<ScSpecUdtErrorEnumCaseV0, 50>,
1308}
1309
1310#[cfg(feature = "all-types")]
1311impl XdrCodec for ScSpecUdtErrorEnumV0 {
1312    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1313        self.doc.to_xdr_buffered(write_stream);
1314        self.lib.to_xdr_buffered(write_stream);
1315        self.name.to_xdr_buffered(write_stream);
1316        self.cases.to_xdr_buffered(write_stream);
1317    }
1318
1319    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1320        Ok(ScSpecUdtErrorEnumV0 {
1321            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1322            lib: LimitedString::<80>::from_xdr_buffered(read_stream)?,
1323            name: LimitedString::<60>::from_xdr_buffered(read_stream)?,
1324            cases: LimitedVarArray::<ScSpecUdtErrorEnumCaseV0, 50>::from_xdr_buffered(read_stream)?,
1325        })
1326    }
1327}
1328
1329#[allow(dead_code)]
1331#[cfg(feature = "all-types")]
1332#[derive(Debug, Clone, Eq, PartialEq)]
1333pub struct ScSpecFunctionInputV0 {
1334    pub doc: LimitedString<1024>,
1335    pub name: LimitedString<30>,
1336    pub type_: ScSpecTypeDef,
1337}
1338
1339#[cfg(feature = "all-types")]
1340impl XdrCodec for ScSpecFunctionInputV0 {
1341    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1342        self.doc.to_xdr_buffered(write_stream);
1343        self.name.to_xdr_buffered(write_stream);
1344        self.type_.to_xdr_buffered(write_stream);
1345    }
1346
1347    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1348        Ok(ScSpecFunctionInputV0 {
1349            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1350            name: LimitedString::<30>::from_xdr_buffered(read_stream)?,
1351            type_: ScSpecTypeDef::from_xdr_buffered(read_stream)?,
1352        })
1353    }
1354}
1355
1356#[allow(dead_code)]
1358#[cfg(feature = "all-types")]
1359#[derive(Debug, Clone, Eq, PartialEq)]
1360pub struct ScSpecFunctionV0 {
1361    pub doc: LimitedString<1024>,
1362    pub name: ScSymbol,
1363    pub inputs: LimitedVarArray<ScSpecFunctionInputV0, 10>,
1364    pub outputs: LimitedVarArray<ScSpecTypeDef, 1>,
1365}
1366
1367#[cfg(feature = "all-types")]
1368impl XdrCodec for ScSpecFunctionV0 {
1369    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1370        self.doc.to_xdr_buffered(write_stream);
1371        self.name.to_xdr_buffered(write_stream);
1372        self.inputs.to_xdr_buffered(write_stream);
1373        self.outputs.to_xdr_buffered(write_stream);
1374    }
1375
1376    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1377        Ok(ScSpecFunctionV0 {
1378            doc: LimitedString::<1024>::from_xdr_buffered(read_stream)?,
1379            name: ScSymbol::from_xdr_buffered(read_stream)?,
1380            inputs: LimitedVarArray::<ScSpecFunctionInputV0, 10>::from_xdr_buffered(read_stream)?,
1381            outputs: LimitedVarArray::<ScSpecTypeDef, 1>::from_xdr_buffered(read_stream)?,
1382        })
1383    }
1384}
1385
1386#[allow(dead_code)]
1388#[cfg(feature = "all-types")]
1389#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1390pub enum ScSpecEntryKind {
1391    ScSpecEntryFunctionV0 = 0,
1392    ScSpecEntryUdtStructV0 = 1,
1393    ScSpecEntryUdtUnionV0 = 2,
1394    ScSpecEntryUdtEnumV0 = 3,
1395    ScSpecEntryUdtErrorEnumV0 = 4,
1396}
1397
1398#[cfg(feature = "all-types")]
1399impl XdrCodec for ScSpecEntryKind {
1400    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1401        let value = *self as i32;
1402        value.to_xdr_buffered(write_stream);
1403    }
1404
1405    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1406        let enum_value = i32::from_xdr_buffered(read_stream)?;
1407        match enum_value {
1408            0 => Ok(ScSpecEntryKind::ScSpecEntryFunctionV0),
1409            1 => Ok(ScSpecEntryKind::ScSpecEntryUdtStructV0),
1410            2 => Ok(ScSpecEntryKind::ScSpecEntryUdtUnionV0),
1411            3 => Ok(ScSpecEntryKind::ScSpecEntryUdtEnumV0),
1412            4 => Ok(ScSpecEntryKind::ScSpecEntryUdtErrorEnumV0),
1413            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1414        }
1415    }
1416}
1417
1418#[allow(dead_code)]
1420#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1421pub enum ScValType {
1422    ScvBool = 0,
1423    ScvVoid = 1,
1424    ScvError = 2,
1425    ScvU32 = 3,
1426    ScvI32 = 4,
1427    ScvU64 = 5,
1428    ScvI64 = 6,
1429    ScvTimepoint = 7,
1430    ScvDuration = 8,
1431    ScvU128 = 9,
1432    ScvI128 = 10,
1433    ScvU256 = 11,
1434    ScvI256 = 12,
1435    ScvBytes = 13,
1436    ScvString = 14,
1437    ScvSymbol = 15,
1438    ScvVec = 16,
1439    ScvMap = 17,
1440    ScvAddress = 18,
1441    ScvContractInstance = 19,
1442    ScvLedgerKeyContractInstance = 20,
1443    ScvLedgerKeyNonce = 21,
1444}
1445
1446impl XdrCodec for ScValType {
1447    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1448        let value = *self as i32;
1449        value.to_xdr_buffered(write_stream);
1450    }
1451
1452    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1453        let enum_value = i32::from_xdr_buffered(read_stream)?;
1454        match enum_value {
1455            0 => Ok(ScValType::ScvBool),
1456            1 => Ok(ScValType::ScvVoid),
1457            2 => Ok(ScValType::ScvError),
1458            3 => Ok(ScValType::ScvU32),
1459            4 => Ok(ScValType::ScvI32),
1460            5 => Ok(ScValType::ScvU64),
1461            6 => Ok(ScValType::ScvI64),
1462            7 => Ok(ScValType::ScvTimepoint),
1463            8 => Ok(ScValType::ScvDuration),
1464            9 => Ok(ScValType::ScvU128),
1465            10 => Ok(ScValType::ScvI128),
1466            11 => Ok(ScValType::ScvU256),
1467            12 => Ok(ScValType::ScvI256),
1468            13 => Ok(ScValType::ScvBytes),
1469            14 => Ok(ScValType::ScvString),
1470            15 => Ok(ScValType::ScvSymbol),
1471            16 => Ok(ScValType::ScvVec),
1472            17 => Ok(ScValType::ScvMap),
1473            18 => Ok(ScValType::ScvAddress),
1474            19 => Ok(ScValType::ScvContractInstance),
1475            20 => Ok(ScValType::ScvLedgerKeyContractInstance),
1476            21 => Ok(ScValType::ScvLedgerKeyNonce),
1477            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1478        }
1479    }
1480}
1481
1482#[allow(dead_code)]
1484#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1485pub enum ScErrorType {
1486    SceContract = 0,
1487    SceWasmVm = 1,
1488    SceContext = 2,
1489    SceStorage = 3,
1490    SceObject = 4,
1491    SceCrypto = 5,
1492    SceEvents = 6,
1493    SceBudget = 7,
1494    SceValue = 8,
1495    SceAuth = 9,
1496}
1497
1498impl XdrCodec for ScErrorType {
1499    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1500        let value = *self as i32;
1501        value.to_xdr_buffered(write_stream);
1502    }
1503
1504    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1505        let enum_value = i32::from_xdr_buffered(read_stream)?;
1506        match enum_value {
1507            0 => Ok(ScErrorType::SceContract),
1508            1 => Ok(ScErrorType::SceWasmVm),
1509            2 => Ok(ScErrorType::SceContext),
1510            3 => Ok(ScErrorType::SceStorage),
1511            4 => Ok(ScErrorType::SceObject),
1512            5 => Ok(ScErrorType::SceCrypto),
1513            6 => Ok(ScErrorType::SceEvents),
1514            7 => Ok(ScErrorType::SceBudget),
1515            8 => Ok(ScErrorType::SceValue),
1516            9 => Ok(ScErrorType::SceAuth),
1517            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1518        }
1519    }
1520}
1521
1522#[allow(dead_code)]
1524#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1525pub enum ScErrorCode {
1526    ScecArithDomain = 0,
1527    ScecIndexBounds = 1,
1528    ScecInvalidInput = 2,
1529    ScecMissingValue = 3,
1530    ScecExistingValue = 4,
1531    ScecExceededLimit = 5,
1532    ScecInvalidAction = 6,
1533    ScecInternalError = 7,
1534    ScecUnexpectedType = 8,
1535    ScecUnexpectedSize = 9,
1536}
1537
1538impl XdrCodec for ScErrorCode {
1539    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1540        let value = *self as i32;
1541        value.to_xdr_buffered(write_stream);
1542    }
1543
1544    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1545        let enum_value = i32::from_xdr_buffered(read_stream)?;
1546        match enum_value {
1547            0 => Ok(ScErrorCode::ScecArithDomain),
1548            1 => Ok(ScErrorCode::ScecIndexBounds),
1549            2 => Ok(ScErrorCode::ScecInvalidInput),
1550            3 => Ok(ScErrorCode::ScecMissingValue),
1551            4 => Ok(ScErrorCode::ScecExistingValue),
1552            5 => Ok(ScErrorCode::ScecExceededLimit),
1553            6 => Ok(ScErrorCode::ScecInvalidAction),
1554            7 => Ok(ScErrorCode::ScecInternalError),
1555            8 => Ok(ScErrorCode::ScecUnexpectedType),
1556            9 => Ok(ScErrorCode::ScecUnexpectedSize),
1557            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1558        }
1559    }
1560}
1561
1562#[allow(dead_code)]
1564#[derive(Debug, Clone, Eq, PartialEq)]
1565pub struct UInt128Parts {
1566    pub hi: Uint64,
1567    pub lo: Uint64,
1568}
1569
1570impl XdrCodec for UInt128Parts {
1571    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1572        self.hi.to_xdr_buffered(write_stream);
1573        self.lo.to_xdr_buffered(write_stream);
1574    }
1575
1576    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1577        Ok(UInt128Parts { hi: Uint64::from_xdr_buffered(read_stream)?, lo: Uint64::from_xdr_buffered(read_stream)? })
1578    }
1579}
1580
1581#[allow(dead_code)]
1583#[derive(Debug, Clone, Eq, PartialEq)]
1584pub struct Int128Parts {
1585    pub hi: Int64,
1586    pub lo: Uint64,
1587}
1588
1589impl XdrCodec for Int128Parts {
1590    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1591        self.hi.to_xdr_buffered(write_stream);
1592        self.lo.to_xdr_buffered(write_stream);
1593    }
1594
1595    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1596        Ok(Int128Parts { hi: Int64::from_xdr_buffered(read_stream)?, lo: Uint64::from_xdr_buffered(read_stream)? })
1597    }
1598}
1599
1600#[allow(dead_code)]
1602#[derive(Debug, Clone, Eq, PartialEq)]
1603pub struct UInt256Parts {
1604    pub hi_hi: Uint64,
1605    pub hi_lo: Uint64,
1606    pub lo_hi: Uint64,
1607    pub lo_lo: Uint64,
1608}
1609
1610impl XdrCodec for UInt256Parts {
1611    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1612        self.hi_hi.to_xdr_buffered(write_stream);
1613        self.hi_lo.to_xdr_buffered(write_stream);
1614        self.lo_hi.to_xdr_buffered(write_stream);
1615        self.lo_lo.to_xdr_buffered(write_stream);
1616    }
1617
1618    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1619        Ok(UInt256Parts {
1620            hi_hi: Uint64::from_xdr_buffered(read_stream)?,
1621            hi_lo: Uint64::from_xdr_buffered(read_stream)?,
1622            lo_hi: Uint64::from_xdr_buffered(read_stream)?,
1623            lo_lo: Uint64::from_xdr_buffered(read_stream)?,
1624        })
1625    }
1626}
1627
1628#[allow(dead_code)]
1630#[derive(Debug, Clone, Eq, PartialEq)]
1631pub struct Int256Parts {
1632    pub hi_hi: Int64,
1633    pub hi_lo: Uint64,
1634    pub lo_hi: Uint64,
1635    pub lo_lo: Uint64,
1636}
1637
1638impl XdrCodec for Int256Parts {
1639    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1640        self.hi_hi.to_xdr_buffered(write_stream);
1641        self.hi_lo.to_xdr_buffered(write_stream);
1642        self.lo_hi.to_xdr_buffered(write_stream);
1643        self.lo_lo.to_xdr_buffered(write_stream);
1644    }
1645
1646    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1647        Ok(Int256Parts {
1648            hi_hi: Int64::from_xdr_buffered(read_stream)?,
1649            hi_lo: Uint64::from_xdr_buffered(read_stream)?,
1650            lo_hi: Uint64::from_xdr_buffered(read_stream)?,
1651            lo_lo: Uint64::from_xdr_buffered(read_stream)?,
1652        })
1653    }
1654}
1655
1656#[allow(dead_code)]
1658#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1659pub enum ContractExecutableType {
1660    ContractExecutableWasm = 0,
1661    ContractExecutableStellarAsset = 1,
1662}
1663
1664impl XdrCodec for ContractExecutableType {
1665    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1666        let value = *self as i32;
1667        value.to_xdr_buffered(write_stream);
1668    }
1669
1670    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1671        let enum_value = i32::from_xdr_buffered(read_stream)?;
1672        match enum_value {
1673            0 => Ok(ContractExecutableType::ContractExecutableWasm),
1674            1 => Ok(ContractExecutableType::ContractExecutableStellarAsset),
1675            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1676        }
1677    }
1678}
1679
1680#[allow(dead_code)]
1682#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1683pub enum ScAddressType {
1684    ScAddressTypeAccount = 0,
1685    ScAddressTypeContract = 1,
1686}
1687
1688impl XdrCodec for ScAddressType {
1689    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1690        let value = *self as i32;
1691        value.to_xdr_buffered(write_stream);
1692    }
1693
1694    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1695        let enum_value = i32::from_xdr_buffered(read_stream)?;
1696        match enum_value {
1697            0 => Ok(ScAddressType::ScAddressTypeAccount),
1698            1 => Ok(ScAddressType::ScAddressTypeContract),
1699            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1700        }
1701    }
1702}
1703
1704#[allow(dead_code)]
1706pub type ScVec = UnlimitedVarArray<ScVal>;
1707
1708#[allow(dead_code)]
1710pub type ScMap = UnlimitedVarArray<ScMapEntry>;
1711
1712#[allow(dead_code)]
1714pub type ScBytes = UnlimitedVarOpaque;
1715
1716#[allow(dead_code)]
1718pub type ScString = UnlimitedString;
1719
1720#[allow(dead_code)]
1722pub type ScSymbol = LimitedString<32>;
1723
1724#[allow(dead_code)]
1726#[derive(Debug, Clone, Eq, PartialEq)]
1727pub struct ScNonceKey {
1728    pub nonce: Int64,
1729}
1730
1731impl XdrCodec for ScNonceKey {
1732    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1733        self.nonce.to_xdr_buffered(write_stream);
1734    }
1735
1736    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1737        Ok(ScNonceKey { nonce: Int64::from_xdr_buffered(read_stream)? })
1738    }
1739}
1740
1741#[allow(dead_code)]
1743#[derive(Debug, Clone, Eq, PartialEq)]
1744pub struct ScContractInstance {
1745    pub executable: ContractExecutable,
1746    pub storage: Option<ScMap>,
1747}
1748
1749impl XdrCodec for ScContractInstance {
1750    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1751        self.executable.to_xdr_buffered(write_stream);
1752        self.storage.to_xdr_buffered(write_stream);
1753    }
1754
1755    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1756        Ok(ScContractInstance {
1757            executable: ContractExecutable::from_xdr_buffered(read_stream)?,
1758            storage: Option::<ScMap>::from_xdr_buffered(read_stream)?,
1759        })
1760    }
1761}
1762
1763#[allow(dead_code)]
1765#[derive(Debug, Clone, Eq, PartialEq)]
1766pub struct ScMapEntry {
1767    pub key: ScVal,
1768    pub val: ScVal,
1769}
1770
1771impl XdrCodec for ScMapEntry {
1772    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1773        self.key.to_xdr_buffered(write_stream);
1774        self.val.to_xdr_buffered(write_stream);
1775    }
1776
1777    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1778        Ok(ScMapEntry { key: ScVal::from_xdr_buffered(read_stream)?, val: ScVal::from_xdr_buffered(read_stream)? })
1779    }
1780}
1781
1782#[allow(dead_code)]
1784#[cfg(feature = "all-types")]
1785#[derive(Debug, Clone, Eq, PartialEq)]
1786pub struct StoredDebugTransactionSet {
1787    pub tx_set: StoredTransactionSet,
1788    pub ledger_seq: Uint32,
1789    pub scp_value: StellarValue,
1790}
1791
1792#[cfg(feature = "all-types")]
1793impl XdrCodec for StoredDebugTransactionSet {
1794    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1795        self.tx_set.to_xdr_buffered(write_stream);
1796        self.ledger_seq.to_xdr_buffered(write_stream);
1797        self.scp_value.to_xdr_buffered(write_stream);
1798    }
1799
1800    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1801        Ok(StoredDebugTransactionSet {
1802            tx_set: StoredTransactionSet::from_xdr_buffered(read_stream)?,
1803            ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
1804            scp_value: StellarValue::from_xdr_buffered(read_stream)?,
1805        })
1806    }
1807}
1808
1809#[allow(dead_code)]
1811#[cfg(feature = "all-types")]
1812#[derive(Debug, Clone, Eq, PartialEq)]
1813pub struct PersistedScpStateV0 {
1814    pub scp_envelopes: UnlimitedVarArray<ScpEnvelope>,
1815    pub quorum_sets: UnlimitedVarArray<ScpQuorumSet>,
1816    pub tx_sets: UnlimitedVarArray<StoredTransactionSet>,
1817}
1818
1819#[cfg(feature = "all-types")]
1820impl XdrCodec for PersistedScpStateV0 {
1821    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1822        self.scp_envelopes.to_xdr_buffered(write_stream);
1823        self.quorum_sets.to_xdr_buffered(write_stream);
1824        self.tx_sets.to_xdr_buffered(write_stream);
1825    }
1826
1827    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1828        Ok(PersistedScpStateV0 {
1829            scp_envelopes: UnlimitedVarArray::<ScpEnvelope>::from_xdr_buffered(read_stream)?,
1830            quorum_sets: UnlimitedVarArray::<ScpQuorumSet>::from_xdr_buffered(read_stream)?,
1831            tx_sets: UnlimitedVarArray::<StoredTransactionSet>::from_xdr_buffered(read_stream)?,
1832        })
1833    }
1834}
1835
1836#[allow(dead_code)]
1838#[cfg(feature = "all-types")]
1839#[derive(Debug, Clone, Eq, PartialEq)]
1840pub struct PersistedScpStateV1 {
1841    pub scp_envelopes: UnlimitedVarArray<ScpEnvelope>,
1842    pub quorum_sets: UnlimitedVarArray<ScpQuorumSet>,
1843}
1844
1845#[cfg(feature = "all-types")]
1846impl XdrCodec for PersistedScpStateV1 {
1847    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1848        self.scp_envelopes.to_xdr_buffered(write_stream);
1849        self.quorum_sets.to_xdr_buffered(write_stream);
1850    }
1851
1852    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1853        Ok(PersistedScpStateV1 {
1854            scp_envelopes: UnlimitedVarArray::<ScpEnvelope>::from_xdr_buffered(read_stream)?,
1855            quorum_sets: UnlimitedVarArray::<ScpQuorumSet>::from_xdr_buffered(read_stream)?,
1856        })
1857    }
1858}
1859
1860#[allow(dead_code)]
1862pub type Thresholds = [u8; 4];
1863
1864#[allow(dead_code)]
1866pub type String32 = LimitedString<32>;
1867
1868#[allow(dead_code)]
1870pub type String64 = LimitedString<64>;
1871
1872#[allow(dead_code)]
1874pub type SequenceNumber = Int64;
1875
1876#[allow(dead_code)]
1878pub type DataValue = LimitedVarOpaque<64>;
1879
1880#[allow(dead_code)]
1882pub type PoolId = Hash;
1883
1884#[allow(dead_code)]
1886pub type AssetCode4 = [u8; 4];
1887
1888#[allow(dead_code)]
1890pub type AssetCode12 = [u8; 12];
1891
1892#[allow(dead_code)]
1894#[derive(Debug, Copy, Clone, Eq, PartialEq)]
1895pub enum AssetType {
1896    AssetTypeNative = 0,
1897    AssetTypeCreditAlphanum4 = 1,
1898    AssetTypeCreditAlphanum12 = 2,
1899    AssetTypePoolShare = 3,
1900}
1901
1902impl XdrCodec for AssetType {
1903    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1904        let value = *self as i32;
1905        value.to_xdr_buffered(write_stream);
1906    }
1907
1908    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1909        let enum_value = i32::from_xdr_buffered(read_stream)?;
1910        match enum_value {
1911            0 => Ok(AssetType::AssetTypeNative),
1912            1 => Ok(AssetType::AssetTypeCreditAlphanum4),
1913            2 => Ok(AssetType::AssetTypeCreditAlphanum12),
1914            3 => Ok(AssetType::AssetTypePoolShare),
1915            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
1916        }
1917    }
1918}
1919
1920#[allow(dead_code)]
1922#[derive(Debug, Clone, Eq, PartialEq)]
1923pub struct AlphaNum4 {
1924    pub asset_code: AssetCode4,
1925    pub issuer: AccountId,
1926}
1927
1928impl XdrCodec for AlphaNum4 {
1929    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1930        self.asset_code.to_xdr_buffered(write_stream);
1931        self.issuer.to_xdr_buffered(write_stream);
1932    }
1933
1934    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1935        Ok(AlphaNum4 {
1936            asset_code: AssetCode4::from_xdr_buffered(read_stream)?,
1937            issuer: AccountId::from_xdr_buffered(read_stream)?,
1938        })
1939    }
1940}
1941
1942#[allow(dead_code)]
1944#[derive(Debug, Clone, Eq, PartialEq)]
1945pub struct AlphaNum12 {
1946    pub asset_code: AssetCode12,
1947    pub issuer: AccountId,
1948}
1949
1950impl XdrCodec for AlphaNum12 {
1951    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1952        self.asset_code.to_xdr_buffered(write_stream);
1953        self.issuer.to_xdr_buffered(write_stream);
1954    }
1955
1956    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1957        Ok(AlphaNum12 {
1958            asset_code: AssetCode12::from_xdr_buffered(read_stream)?,
1959            issuer: AccountId::from_xdr_buffered(read_stream)?,
1960        })
1961    }
1962}
1963
1964#[allow(dead_code)]
1966#[derive(Debug, Clone, Eq, PartialEq)]
1967pub struct Price {
1968    pub n: Int32,
1969    pub d: Int32,
1970}
1971
1972impl XdrCodec for Price {
1973    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1974        self.n.to_xdr_buffered(write_stream);
1975        self.d.to_xdr_buffered(write_stream);
1976    }
1977
1978    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1979        Ok(Price { n: Int32::from_xdr_buffered(read_stream)?, d: Int32::from_xdr_buffered(read_stream)? })
1980    }
1981}
1982
1983#[allow(dead_code)]
1985#[derive(Debug, Clone, Eq, PartialEq)]
1986pub struct Liabilities {
1987    pub buying: Int64,
1988    pub selling: Int64,
1989}
1990
1991impl XdrCodec for Liabilities {
1992    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
1993        self.buying.to_xdr_buffered(write_stream);
1994        self.selling.to_xdr_buffered(write_stream);
1995    }
1996
1997    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
1998        Ok(Liabilities {
1999            buying: Int64::from_xdr_buffered(read_stream)?,
2000            selling: Int64::from_xdr_buffered(read_stream)?,
2001        })
2002    }
2003}
2004
2005#[allow(dead_code)]
2007#[cfg(feature = "all-types")]
2008#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2009pub enum ThresholdIndices {
2010    ThresholdMasterWeight = 0,
2011    ThresholdLow = 1,
2012    ThresholdMed = 2,
2013    ThresholdHigh = 3,
2014}
2015
2016#[cfg(feature = "all-types")]
2017impl XdrCodec for ThresholdIndices {
2018    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2019        let value = *self as i32;
2020        value.to_xdr_buffered(write_stream);
2021    }
2022
2023    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2024        let enum_value = i32::from_xdr_buffered(read_stream)?;
2025        match enum_value {
2026            0 => Ok(ThresholdIndices::ThresholdMasterWeight),
2027            1 => Ok(ThresholdIndices::ThresholdLow),
2028            2 => Ok(ThresholdIndices::ThresholdMed),
2029            3 => Ok(ThresholdIndices::ThresholdHigh),
2030            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2031        }
2032    }
2033}
2034
2035#[allow(dead_code)]
2037#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2038pub enum LedgerEntryType {
2039    Account = 0,
2040    Trustline = 1,
2041    Offer = 2,
2042    Data = 3,
2043    ClaimableBalance = 4,
2044    LiquidityPool = 5,
2045    ContractData = 6,
2046    ContractCode = 7,
2047    ConfigSetting = 8,
2048    Ttl = 9,
2049}
2050
2051impl XdrCodec for LedgerEntryType {
2052    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2053        let value = *self as i32;
2054        value.to_xdr_buffered(write_stream);
2055    }
2056
2057    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2058        let enum_value = i32::from_xdr_buffered(read_stream)?;
2059        match enum_value {
2060            0 => Ok(LedgerEntryType::Account),
2061            1 => Ok(LedgerEntryType::Trustline),
2062            2 => Ok(LedgerEntryType::Offer),
2063            3 => Ok(LedgerEntryType::Data),
2064            4 => Ok(LedgerEntryType::ClaimableBalance),
2065            5 => Ok(LedgerEntryType::LiquidityPool),
2066            6 => Ok(LedgerEntryType::ContractData),
2067            7 => Ok(LedgerEntryType::ContractCode),
2068            8 => Ok(LedgerEntryType::ConfigSetting),
2069            9 => Ok(LedgerEntryType::Ttl),
2070            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2071        }
2072    }
2073}
2074
2075#[allow(dead_code)]
2077#[derive(Debug, Clone, Eq, PartialEq)]
2078pub struct Signer {
2079    pub key: SignerKey,
2080    pub weight: Uint32,
2081}
2082
2083impl XdrCodec for Signer {
2084    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2085        self.key.to_xdr_buffered(write_stream);
2086        self.weight.to_xdr_buffered(write_stream);
2087    }
2088
2089    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2090        Ok(Signer { key: SignerKey::from_xdr_buffered(read_stream)?, weight: Uint32::from_xdr_buffered(read_stream)? })
2091    }
2092}
2093
2094#[allow(dead_code)]
2096#[cfg(feature = "all-types")]
2097#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2098pub enum AccountFlags {
2099    AuthRequiredFlag = 1,
2100    AuthRevocableFlag = 2,
2101    AuthImmutableFlag = 4,
2102    AuthClawbackEnabledFlag = 8,
2103}
2104
2105#[cfg(feature = "all-types")]
2106impl XdrCodec for AccountFlags {
2107    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2108        let value = *self as i32;
2109        value.to_xdr_buffered(write_stream);
2110    }
2111
2112    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2113        let enum_value = i32::from_xdr_buffered(read_stream)?;
2114        match enum_value {
2115            1 => Ok(AccountFlags::AuthRequiredFlag),
2116            2 => Ok(AccountFlags::AuthRevocableFlag),
2117            4 => Ok(AccountFlags::AuthImmutableFlag),
2118            8 => Ok(AccountFlags::AuthClawbackEnabledFlag),
2119            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2120        }
2121    }
2122}
2123
2124#[allow(dead_code)]
2126pub type SponsorshipDescriptor = Option<AccountId>;
2127
2128#[allow(dead_code)]
2130#[derive(Debug, Clone, Eq, PartialEq)]
2131pub struct AccountEntryExtensionV3 {
2132    pub ext: ExtensionPoint,
2133    pub seq_ledger: Uint32,
2134    pub seq_time: TimePoint,
2135}
2136
2137impl XdrCodec for AccountEntryExtensionV3 {
2138    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2139        self.ext.to_xdr_buffered(write_stream);
2140        self.seq_ledger.to_xdr_buffered(write_stream);
2141        self.seq_time.to_xdr_buffered(write_stream);
2142    }
2143
2144    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2145        Ok(AccountEntryExtensionV3 {
2146            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
2147            seq_ledger: Uint32::from_xdr_buffered(read_stream)?,
2148            seq_time: TimePoint::from_xdr_buffered(read_stream)?,
2149        })
2150    }
2151}
2152
2153#[allow(dead_code)]
2155#[derive(Debug, Clone, Eq, PartialEq)]
2156pub struct AccountEntryExtensionV2 {
2157    pub num_sponsored: Uint32,
2158    pub num_sponsoring: Uint32,
2159    pub signer_sponsoring_i_ds: LimitedVarArray<SponsorshipDescriptor, MAX_SIGNERS>,
2160    pub ext: AccountEntryExtensionV2Ext,
2161}
2162
2163impl XdrCodec for AccountEntryExtensionV2 {
2164    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2165        self.num_sponsored.to_xdr_buffered(write_stream);
2166        self.num_sponsoring.to_xdr_buffered(write_stream);
2167        self.signer_sponsoring_i_ds.to_xdr_buffered(write_stream);
2168        self.ext.to_xdr_buffered(write_stream);
2169    }
2170
2171    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2172        Ok(AccountEntryExtensionV2 {
2173            num_sponsored: Uint32::from_xdr_buffered(read_stream)?,
2174            num_sponsoring: Uint32::from_xdr_buffered(read_stream)?,
2175            signer_sponsoring_i_ds: LimitedVarArray::<SponsorshipDescriptor, MAX_SIGNERS>::from_xdr_buffered(
2176                read_stream,
2177            )?,
2178            ext: AccountEntryExtensionV2Ext::from_xdr_buffered(read_stream)?,
2179        })
2180    }
2181}
2182
2183#[allow(dead_code)]
2185#[derive(Debug, Clone, Eq, PartialEq)]
2186pub struct AccountEntryExtensionV1 {
2187    pub liabilities: Liabilities,
2188    pub ext: AccountEntryExtensionV1Ext,
2189}
2190
2191impl XdrCodec for AccountEntryExtensionV1 {
2192    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2193        self.liabilities.to_xdr_buffered(write_stream);
2194        self.ext.to_xdr_buffered(write_stream);
2195    }
2196
2197    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2198        Ok(AccountEntryExtensionV1 {
2199            liabilities: Liabilities::from_xdr_buffered(read_stream)?,
2200            ext: AccountEntryExtensionV1Ext::from_xdr_buffered(read_stream)?,
2201        })
2202    }
2203}
2204
2205#[allow(dead_code)]
2207#[derive(Debug, Clone, Eq, PartialEq)]
2208pub struct AccountEntry {
2209    pub account_id: AccountId,
2210    pub balance: Int64,
2211    pub seq_num: SequenceNumber,
2212    pub num_sub_entries: Uint32,
2213    pub inflation_dest: Option<AccountId>,
2214    pub flags: Uint32,
2215    pub home_domain: String32,
2216    pub thresholds: Thresholds,
2217    pub signers: LimitedVarArray<Signer, MAX_SIGNERS>,
2218    pub ext: AccountEntryExt,
2219}
2220
2221impl XdrCodec for AccountEntry {
2222    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2223        self.account_id.to_xdr_buffered(write_stream);
2224        self.balance.to_xdr_buffered(write_stream);
2225        self.seq_num.to_xdr_buffered(write_stream);
2226        self.num_sub_entries.to_xdr_buffered(write_stream);
2227        self.inflation_dest.to_xdr_buffered(write_stream);
2228        self.flags.to_xdr_buffered(write_stream);
2229        self.home_domain.to_xdr_buffered(write_stream);
2230        self.thresholds.to_xdr_buffered(write_stream);
2231        self.signers.to_xdr_buffered(write_stream);
2232        self.ext.to_xdr_buffered(write_stream);
2233    }
2234
2235    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2236        Ok(AccountEntry {
2237            account_id: AccountId::from_xdr_buffered(read_stream)?,
2238            balance: Int64::from_xdr_buffered(read_stream)?,
2239            seq_num: SequenceNumber::from_xdr_buffered(read_stream)?,
2240            num_sub_entries: Uint32::from_xdr_buffered(read_stream)?,
2241            inflation_dest: Option::<AccountId>::from_xdr_buffered(read_stream)?,
2242            flags: Uint32::from_xdr_buffered(read_stream)?,
2243            home_domain: String32::from_xdr_buffered(read_stream)?,
2244            thresholds: Thresholds::from_xdr_buffered(read_stream)?,
2245            signers: LimitedVarArray::<Signer, MAX_SIGNERS>::from_xdr_buffered(read_stream)?,
2246            ext: AccountEntryExt::from_xdr_buffered(read_stream)?,
2247        })
2248    }
2249}
2250
2251#[allow(dead_code)]
2253#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2254pub enum TrustLineFlags {
2255    AuthorizedFlag = 1,
2256    AuthorizedToMaintainLiabilitiesFlag = 2,
2257    TrustlineClawbackEnabledFlag = 4,
2258}
2259
2260impl XdrCodec for TrustLineFlags {
2261    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2262        let value = *self as i32;
2263        value.to_xdr_buffered(write_stream);
2264    }
2265
2266    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2267        let enum_value = i32::from_xdr_buffered(read_stream)?;
2268        match enum_value {
2269            1 => Ok(TrustLineFlags::AuthorizedFlag),
2270            2 => Ok(TrustLineFlags::AuthorizedToMaintainLiabilitiesFlag),
2271            4 => Ok(TrustLineFlags::TrustlineClawbackEnabledFlag),
2272            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2273        }
2274    }
2275}
2276
2277#[allow(dead_code)]
2279#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2280pub enum LiquidityPoolType {
2281    LiquidityPoolConstantProduct = 0,
2282}
2283
2284impl XdrCodec for LiquidityPoolType {
2285    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2286        let value = *self as i32;
2287        value.to_xdr_buffered(write_stream);
2288    }
2289
2290    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2291        let enum_value = i32::from_xdr_buffered(read_stream)?;
2292        match enum_value {
2293            0 => Ok(LiquidityPoolType::LiquidityPoolConstantProduct),
2294            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2295        }
2296    }
2297}
2298
2299#[allow(dead_code)]
2301#[derive(Debug, Clone, Eq, PartialEq)]
2302pub struct TrustLineEntryExtensionV2 {
2303    pub liquidity_pool_use_count: Int32,
2304    pub ext: TrustLineEntryExtensionV2Ext,
2305}
2306
2307impl XdrCodec for TrustLineEntryExtensionV2 {
2308    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2309        self.liquidity_pool_use_count.to_xdr_buffered(write_stream);
2310        self.ext.to_xdr_buffered(write_stream);
2311    }
2312
2313    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2314        Ok(TrustLineEntryExtensionV2 {
2315            liquidity_pool_use_count: Int32::from_xdr_buffered(read_stream)?,
2316            ext: TrustLineEntryExtensionV2Ext::from_xdr_buffered(read_stream)?,
2317        })
2318    }
2319}
2320
2321#[allow(dead_code)]
2323#[derive(Debug, Clone, Eq, PartialEq)]
2324pub struct TrustLineEntryV1 {
2325    pub liabilities: Liabilities,
2326    pub ext: TrustLineEntryV1Ext,
2327}
2328
2329impl XdrCodec for TrustLineEntryV1 {
2330    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2331        self.liabilities.to_xdr_buffered(write_stream);
2332        self.ext.to_xdr_buffered(write_stream);
2333    }
2334
2335    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2336        Ok(TrustLineEntryV1 {
2337            liabilities: Liabilities::from_xdr_buffered(read_stream)?,
2338            ext: TrustLineEntryV1Ext::from_xdr_buffered(read_stream)?,
2339        })
2340    }
2341}
2342
2343#[allow(dead_code)]
2345#[derive(Debug, Clone, Eq, PartialEq)]
2346pub struct TrustLineEntry {
2347    pub account_id: AccountId,
2348    pub asset: TrustLineAsset,
2349    pub balance: Int64,
2350    pub limit: Int64,
2351    pub flags: Uint32,
2352    pub ext: TrustLineEntryExt,
2353}
2354
2355impl XdrCodec for TrustLineEntry {
2356    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2357        self.account_id.to_xdr_buffered(write_stream);
2358        self.asset.to_xdr_buffered(write_stream);
2359        self.balance.to_xdr_buffered(write_stream);
2360        self.limit.to_xdr_buffered(write_stream);
2361        self.flags.to_xdr_buffered(write_stream);
2362        self.ext.to_xdr_buffered(write_stream);
2363    }
2364
2365    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2366        Ok(TrustLineEntry {
2367            account_id: AccountId::from_xdr_buffered(read_stream)?,
2368            asset: TrustLineAsset::from_xdr_buffered(read_stream)?,
2369            balance: Int64::from_xdr_buffered(read_stream)?,
2370            limit: Int64::from_xdr_buffered(read_stream)?,
2371            flags: Uint32::from_xdr_buffered(read_stream)?,
2372            ext: TrustLineEntryExt::from_xdr_buffered(read_stream)?,
2373        })
2374    }
2375}
2376
2377#[allow(dead_code)]
2379#[cfg(feature = "all-types")]
2380#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2381pub enum OfferEntryFlags {
2382    PassiveFlag = 1,
2383}
2384
2385#[cfg(feature = "all-types")]
2386impl XdrCodec for OfferEntryFlags {
2387    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2388        let value = *self as i32;
2389        value.to_xdr_buffered(write_stream);
2390    }
2391
2392    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2393        let enum_value = i32::from_xdr_buffered(read_stream)?;
2394        match enum_value {
2395            1 => Ok(OfferEntryFlags::PassiveFlag),
2396            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2397        }
2398    }
2399}
2400
2401#[allow(dead_code)]
2403#[derive(Debug, Clone, Eq, PartialEq)]
2404pub struct OfferEntry {
2405    pub seller_id: AccountId,
2406    pub offer_id: Int64,
2407    pub selling: Asset,
2408    pub buying: Asset,
2409    pub amount: Int64,
2410    pub price: Price,
2411    pub flags: Uint32,
2412    pub ext: OfferEntryExt,
2413}
2414
2415impl XdrCodec for OfferEntry {
2416    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2417        self.seller_id.to_xdr_buffered(write_stream);
2418        self.offer_id.to_xdr_buffered(write_stream);
2419        self.selling.to_xdr_buffered(write_stream);
2420        self.buying.to_xdr_buffered(write_stream);
2421        self.amount.to_xdr_buffered(write_stream);
2422        self.price.to_xdr_buffered(write_stream);
2423        self.flags.to_xdr_buffered(write_stream);
2424        self.ext.to_xdr_buffered(write_stream);
2425    }
2426
2427    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2428        Ok(OfferEntry {
2429            seller_id: AccountId::from_xdr_buffered(read_stream)?,
2430            offer_id: Int64::from_xdr_buffered(read_stream)?,
2431            selling: Asset::from_xdr_buffered(read_stream)?,
2432            buying: Asset::from_xdr_buffered(read_stream)?,
2433            amount: Int64::from_xdr_buffered(read_stream)?,
2434            price: Price::from_xdr_buffered(read_stream)?,
2435            flags: Uint32::from_xdr_buffered(read_stream)?,
2436            ext: OfferEntryExt::from_xdr_buffered(read_stream)?,
2437        })
2438    }
2439}
2440
2441#[allow(dead_code)]
2443#[derive(Debug, Clone, Eq, PartialEq)]
2444pub struct DataEntry {
2445    pub account_id: AccountId,
2446    pub data_name: String64,
2447    pub data_value: DataValue,
2448    pub ext: DataEntryExt,
2449}
2450
2451impl XdrCodec for DataEntry {
2452    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2453        self.account_id.to_xdr_buffered(write_stream);
2454        self.data_name.to_xdr_buffered(write_stream);
2455        self.data_value.to_xdr_buffered(write_stream);
2456        self.ext.to_xdr_buffered(write_stream);
2457    }
2458
2459    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2460        Ok(DataEntry {
2461            account_id: AccountId::from_xdr_buffered(read_stream)?,
2462            data_name: String64::from_xdr_buffered(read_stream)?,
2463            data_value: DataValue::from_xdr_buffered(read_stream)?,
2464            ext: DataEntryExt::from_xdr_buffered(read_stream)?,
2465        })
2466    }
2467}
2468
2469#[allow(dead_code)]
2471#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2472pub enum ClaimPredicateType {
2473    ClaimPredicateUnconditional = 0,
2474    ClaimPredicateAnd = 1,
2475    ClaimPredicateOr = 2,
2476    ClaimPredicateNot = 3,
2477    ClaimPredicateBeforeAbsoluteTime = 4,
2478    ClaimPredicateBeforeRelativeTime = 5,
2479}
2480
2481impl XdrCodec for ClaimPredicateType {
2482    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2483        let value = *self as i32;
2484        value.to_xdr_buffered(write_stream);
2485    }
2486
2487    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2488        let enum_value = i32::from_xdr_buffered(read_stream)?;
2489        match enum_value {
2490            0 => Ok(ClaimPredicateType::ClaimPredicateUnconditional),
2491            1 => Ok(ClaimPredicateType::ClaimPredicateAnd),
2492            2 => Ok(ClaimPredicateType::ClaimPredicateOr),
2493            3 => Ok(ClaimPredicateType::ClaimPredicateNot),
2494            4 => Ok(ClaimPredicateType::ClaimPredicateBeforeAbsoluteTime),
2495            5 => Ok(ClaimPredicateType::ClaimPredicateBeforeRelativeTime),
2496            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2497        }
2498    }
2499}
2500
2501#[allow(dead_code)]
2503#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2504pub enum ClaimantType {
2505    ClaimantTypeV0 = 0,
2506}
2507
2508impl XdrCodec for ClaimantType {
2509    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2510        let value = *self as i32;
2511        value.to_xdr_buffered(write_stream);
2512    }
2513
2514    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2515        let enum_value = i32::from_xdr_buffered(read_stream)?;
2516        match enum_value {
2517            0 => Ok(ClaimantType::ClaimantTypeV0),
2518            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2519        }
2520    }
2521}
2522
2523#[allow(dead_code)]
2525#[derive(Debug, Clone, Eq, PartialEq)]
2526pub struct ClaimantV0 {
2527    pub destination: AccountId,
2528    pub predicate: ClaimPredicate,
2529}
2530
2531impl XdrCodec for ClaimantV0 {
2532    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2533        self.destination.to_xdr_buffered(write_stream);
2534        self.predicate.to_xdr_buffered(write_stream);
2535    }
2536
2537    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2538        Ok(ClaimantV0 {
2539            destination: AccountId::from_xdr_buffered(read_stream)?,
2540            predicate: ClaimPredicate::from_xdr_buffered(read_stream)?,
2541        })
2542    }
2543}
2544
2545#[allow(dead_code)]
2547#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2548pub enum ClaimableBalanceIdType {
2549    ClaimableBalanceIdTypeV0 = 0,
2550}
2551
2552impl XdrCodec for ClaimableBalanceIdType {
2553    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2554        let value = *self as i32;
2555        value.to_xdr_buffered(write_stream);
2556    }
2557
2558    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2559        let enum_value = i32::from_xdr_buffered(read_stream)?;
2560        match enum_value {
2561            0 => Ok(ClaimableBalanceIdType::ClaimableBalanceIdTypeV0),
2562            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2563        }
2564    }
2565}
2566
2567#[allow(dead_code)]
2569#[cfg(feature = "all-types")]
2570#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2571pub enum ClaimableBalanceFlags {
2572    ClaimableBalanceClawbackEnabledFlag = 1,
2573}
2574
2575#[cfg(feature = "all-types")]
2576impl XdrCodec for ClaimableBalanceFlags {
2577    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2578        let value = *self as i32;
2579        value.to_xdr_buffered(write_stream);
2580    }
2581
2582    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2583        let enum_value = i32::from_xdr_buffered(read_stream)?;
2584        match enum_value {
2585            1 => Ok(ClaimableBalanceFlags::ClaimableBalanceClawbackEnabledFlag),
2586            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2587        }
2588    }
2589}
2590
2591#[allow(dead_code)]
2593#[derive(Debug, Clone, Eq, PartialEq)]
2594pub struct ClaimableBalanceEntryExtensionV1 {
2595    pub ext: ClaimableBalanceEntryExtensionV1Ext,
2596    pub flags: Uint32,
2597}
2598
2599impl XdrCodec for ClaimableBalanceEntryExtensionV1 {
2600    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2601        self.ext.to_xdr_buffered(write_stream);
2602        self.flags.to_xdr_buffered(write_stream);
2603    }
2604
2605    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2606        Ok(ClaimableBalanceEntryExtensionV1 {
2607            ext: ClaimableBalanceEntryExtensionV1Ext::from_xdr_buffered(read_stream)?,
2608            flags: Uint32::from_xdr_buffered(read_stream)?,
2609        })
2610    }
2611}
2612
2613#[allow(dead_code)]
2615#[derive(Debug, Clone, Eq, PartialEq)]
2616pub struct ClaimableBalanceEntry {
2617    pub balance_id: ClaimableBalanceId,
2618    pub claimants: LimitedVarArray<Claimant, 10>,
2619    pub asset: Asset,
2620    pub amount: Int64,
2621    pub ext: ClaimableBalanceEntryExt,
2622}
2623
2624impl XdrCodec for ClaimableBalanceEntry {
2625    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2626        self.balance_id.to_xdr_buffered(write_stream);
2627        self.claimants.to_xdr_buffered(write_stream);
2628        self.asset.to_xdr_buffered(write_stream);
2629        self.amount.to_xdr_buffered(write_stream);
2630        self.ext.to_xdr_buffered(write_stream);
2631    }
2632
2633    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2634        Ok(ClaimableBalanceEntry {
2635            balance_id: ClaimableBalanceId::from_xdr_buffered(read_stream)?,
2636            claimants: LimitedVarArray::<Claimant, 10>::from_xdr_buffered(read_stream)?,
2637            asset: Asset::from_xdr_buffered(read_stream)?,
2638            amount: Int64::from_xdr_buffered(read_stream)?,
2639            ext: ClaimableBalanceEntryExt::from_xdr_buffered(read_stream)?,
2640        })
2641    }
2642}
2643
2644#[allow(dead_code)]
2646#[derive(Debug, Clone, Eq, PartialEq)]
2647pub struct LiquidityPoolConstantProductParameters {
2648    pub asset_a: Asset,
2649    pub asset_b: Asset,
2650    pub fee: Int32,
2651}
2652
2653impl XdrCodec for LiquidityPoolConstantProductParameters {
2654    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2655        self.asset_a.to_xdr_buffered(write_stream);
2656        self.asset_b.to_xdr_buffered(write_stream);
2657        self.fee.to_xdr_buffered(write_stream);
2658    }
2659
2660    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2661        Ok(LiquidityPoolConstantProductParameters {
2662            asset_a: Asset::from_xdr_buffered(read_stream)?,
2663            asset_b: Asset::from_xdr_buffered(read_stream)?,
2664            fee: Int32::from_xdr_buffered(read_stream)?,
2665        })
2666    }
2667}
2668
2669#[allow(dead_code)]
2671#[derive(Debug, Clone, Eq, PartialEq)]
2672pub struct LiquidityPoolEntryConstantProduct {
2673    pub params: LiquidityPoolConstantProductParameters,
2674    pub reserve_a: Int64,
2675    pub reserve_b: Int64,
2676    pub total_pool_shares: Int64,
2677    pub pool_shares_trust_line_count: Int64,
2678}
2679
2680impl XdrCodec for LiquidityPoolEntryConstantProduct {
2681    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2682        self.params.to_xdr_buffered(write_stream);
2683        self.reserve_a.to_xdr_buffered(write_stream);
2684        self.reserve_b.to_xdr_buffered(write_stream);
2685        self.total_pool_shares.to_xdr_buffered(write_stream);
2686        self.pool_shares_trust_line_count.to_xdr_buffered(write_stream);
2687    }
2688
2689    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2690        Ok(LiquidityPoolEntryConstantProduct {
2691            params: LiquidityPoolConstantProductParameters::from_xdr_buffered(read_stream)?,
2692            reserve_a: Int64::from_xdr_buffered(read_stream)?,
2693            reserve_b: Int64::from_xdr_buffered(read_stream)?,
2694            total_pool_shares: Int64::from_xdr_buffered(read_stream)?,
2695            pool_shares_trust_line_count: Int64::from_xdr_buffered(read_stream)?,
2696        })
2697    }
2698}
2699
2700#[allow(dead_code)]
2702#[derive(Debug, Clone, Eq, PartialEq)]
2703pub struct LiquidityPoolEntry {
2704    pub liquidity_pool_id: PoolId,
2705    pub body: LiquidityPoolEntryBody,
2706}
2707
2708impl XdrCodec for LiquidityPoolEntry {
2709    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2710        self.liquidity_pool_id.to_xdr_buffered(write_stream);
2711        self.body.to_xdr_buffered(write_stream);
2712    }
2713
2714    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2715        Ok(LiquidityPoolEntry {
2716            liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)?,
2717            body: LiquidityPoolEntryBody::from_xdr_buffered(read_stream)?,
2718        })
2719    }
2720}
2721
2722#[allow(dead_code)]
2724#[derive(Debug, Copy, Clone, Eq, PartialEq)]
2725pub enum ContractDataDurability {
2726    Temporary = 0,
2727    Persistent = 1,
2728}
2729
2730impl XdrCodec for ContractDataDurability {
2731    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2732        let value = *self as i32;
2733        value.to_xdr_buffered(write_stream);
2734    }
2735
2736    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2737        let enum_value = i32::from_xdr_buffered(read_stream)?;
2738        match enum_value {
2739            0 => Ok(ContractDataDurability::Temporary),
2740            1 => Ok(ContractDataDurability::Persistent),
2741            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
2742        }
2743    }
2744}
2745
2746#[allow(dead_code)]
2748#[derive(Debug, Clone, Eq, PartialEq)]
2749pub struct ContractDataEntry {
2750    pub ext: ExtensionPoint,
2751    pub contract: ScAddress,
2752    pub key: ScVal,
2753    pub durability: ContractDataDurability,
2754    pub val: ScVal,
2755}
2756
2757impl XdrCodec for ContractDataEntry {
2758    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2759        self.ext.to_xdr_buffered(write_stream);
2760        self.contract.to_xdr_buffered(write_stream);
2761        self.key.to_xdr_buffered(write_stream);
2762        self.durability.to_xdr_buffered(write_stream);
2763        self.val.to_xdr_buffered(write_stream);
2764    }
2765
2766    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2767        Ok(ContractDataEntry {
2768            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
2769            contract: ScAddress::from_xdr_buffered(read_stream)?,
2770            key: ScVal::from_xdr_buffered(read_stream)?,
2771            durability: ContractDataDurability::from_xdr_buffered(read_stream)?,
2772            val: ScVal::from_xdr_buffered(read_stream)?,
2773        })
2774    }
2775}
2776
2777#[allow(dead_code)]
2779#[derive(Debug, Clone, Eq, PartialEq)]
2780pub struct ContractCodeCostInputs {
2781    pub ext: ExtensionPoint,
2782    pub n_instructions: Uint32,
2783    pub n_functions: Uint32,
2784    pub n_globals: Uint32,
2785    pub n_table_entries: Uint32,
2786    pub n_types: Uint32,
2787    pub n_data_segments: Uint32,
2788    pub n_elem_segments: Uint32,
2789    pub n_imports: Uint32,
2790    pub n_exports: Uint32,
2791    pub n_data_segment_bytes: Uint32,
2792}
2793
2794impl XdrCodec for ContractCodeCostInputs {
2795    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2796        self.ext.to_xdr_buffered(write_stream);
2797        self.n_instructions.to_xdr_buffered(write_stream);
2798        self.n_functions.to_xdr_buffered(write_stream);
2799        self.n_globals.to_xdr_buffered(write_stream);
2800        self.n_table_entries.to_xdr_buffered(write_stream);
2801        self.n_types.to_xdr_buffered(write_stream);
2802        self.n_data_segments.to_xdr_buffered(write_stream);
2803        self.n_elem_segments.to_xdr_buffered(write_stream);
2804        self.n_imports.to_xdr_buffered(write_stream);
2805        self.n_exports.to_xdr_buffered(write_stream);
2806        self.n_data_segment_bytes.to_xdr_buffered(write_stream);
2807    }
2808
2809    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2810        Ok(ContractCodeCostInputs {
2811            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
2812            n_instructions: Uint32::from_xdr_buffered(read_stream)?,
2813            n_functions: Uint32::from_xdr_buffered(read_stream)?,
2814            n_globals: Uint32::from_xdr_buffered(read_stream)?,
2815            n_table_entries: Uint32::from_xdr_buffered(read_stream)?,
2816            n_types: Uint32::from_xdr_buffered(read_stream)?,
2817            n_data_segments: Uint32::from_xdr_buffered(read_stream)?,
2818            n_elem_segments: Uint32::from_xdr_buffered(read_stream)?,
2819            n_imports: Uint32::from_xdr_buffered(read_stream)?,
2820            n_exports: Uint32::from_xdr_buffered(read_stream)?,
2821            n_data_segment_bytes: Uint32::from_xdr_buffered(read_stream)?,
2822        })
2823    }
2824}
2825
2826#[allow(dead_code)]
2828#[derive(Debug, Clone, Eq, PartialEq)]
2829pub struct ContractCodeEntryV1 {
2830    pub ext: ExtensionPoint,
2831    pub cost_inputs: ContractCodeCostInputs,
2832}
2833
2834impl XdrCodec for ContractCodeEntryV1 {
2835    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2836        self.ext.to_xdr_buffered(write_stream);
2837        self.cost_inputs.to_xdr_buffered(write_stream);
2838    }
2839
2840    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2841        Ok(ContractCodeEntryV1 {
2842            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
2843            cost_inputs: ContractCodeCostInputs::from_xdr_buffered(read_stream)?,
2844        })
2845    }
2846}
2847
2848#[allow(dead_code)]
2850#[derive(Debug, Clone, Eq, PartialEq)]
2851pub struct ContractCodeEntry {
2852    pub ext: ContractCodeEntryExt,
2853    pub hash: Hash,
2854    pub code: UnlimitedVarOpaque,
2855}
2856
2857impl XdrCodec for ContractCodeEntry {
2858    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2859        self.ext.to_xdr_buffered(write_stream);
2860        self.hash.to_xdr_buffered(write_stream);
2861        self.code.to_xdr_buffered(write_stream);
2862    }
2863
2864    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2865        Ok(ContractCodeEntry {
2866            ext: ContractCodeEntryExt::from_xdr_buffered(read_stream)?,
2867            hash: Hash::from_xdr_buffered(read_stream)?,
2868            code: UnlimitedVarOpaque::from_xdr_buffered(read_stream)?,
2869        })
2870    }
2871}
2872
2873#[allow(dead_code)]
2875#[derive(Debug, Clone, Eq, PartialEq)]
2876pub struct TtlEntry {
2877    pub key_hash: Hash,
2878    pub live_until_ledger_seq: Uint32,
2879}
2880
2881impl XdrCodec for TtlEntry {
2882    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2883        self.key_hash.to_xdr_buffered(write_stream);
2884        self.live_until_ledger_seq.to_xdr_buffered(write_stream);
2885    }
2886
2887    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2888        Ok(TtlEntry {
2889            key_hash: Hash::from_xdr_buffered(read_stream)?,
2890            live_until_ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
2891        })
2892    }
2893}
2894
2895#[allow(dead_code)]
2897#[derive(Debug, Clone, Eq, PartialEq)]
2898pub struct LedgerEntryExtensionV1 {
2899    pub sponsoring_id: SponsorshipDescriptor,
2900    pub ext: LedgerEntryExtensionV1Ext,
2901}
2902
2903impl XdrCodec for LedgerEntryExtensionV1 {
2904    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2905        self.sponsoring_id.to_xdr_buffered(write_stream);
2906        self.ext.to_xdr_buffered(write_stream);
2907    }
2908
2909    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2910        Ok(LedgerEntryExtensionV1 {
2911            sponsoring_id: SponsorshipDescriptor::from_xdr_buffered(read_stream)?,
2912            ext: LedgerEntryExtensionV1Ext::from_xdr_buffered(read_stream)?,
2913        })
2914    }
2915}
2916
2917#[allow(dead_code)]
2919#[derive(Debug, Clone, Eq, PartialEq)]
2920pub struct LedgerEntry {
2921    pub last_modified_ledger_seq: Uint32,
2922    pub data: LedgerEntryData,
2923    pub ext: LedgerEntryExt,
2924}
2925
2926impl XdrCodec for LedgerEntry {
2927    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2928        self.last_modified_ledger_seq.to_xdr_buffered(write_stream);
2929        self.data.to_xdr_buffered(write_stream);
2930        self.ext.to_xdr_buffered(write_stream);
2931    }
2932
2933    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2934        Ok(LedgerEntry {
2935            last_modified_ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
2936            data: LedgerEntryData::from_xdr_buffered(read_stream)?,
2937            ext: LedgerEntryExt::from_xdr_buffered(read_stream)?,
2938        })
2939    }
2940}
2941
2942#[allow(dead_code)]
2944#[derive(Debug, Clone, Eq, PartialEq)]
2945pub struct LedgerKeyAccount {
2946    pub account_id: AccountId,
2947}
2948
2949impl XdrCodec for LedgerKeyAccount {
2950    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2951        self.account_id.to_xdr_buffered(write_stream);
2952    }
2953
2954    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2955        Ok(LedgerKeyAccount { account_id: AccountId::from_xdr_buffered(read_stream)? })
2956    }
2957}
2958
2959#[allow(dead_code)]
2961#[derive(Debug, Clone, Eq, PartialEq)]
2962pub struct LedgerKeyTrustLine {
2963    pub account_id: AccountId,
2964    pub asset: TrustLineAsset,
2965}
2966
2967impl XdrCodec for LedgerKeyTrustLine {
2968    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2969        self.account_id.to_xdr_buffered(write_stream);
2970        self.asset.to_xdr_buffered(write_stream);
2971    }
2972
2973    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2974        Ok(LedgerKeyTrustLine {
2975            account_id: AccountId::from_xdr_buffered(read_stream)?,
2976            asset: TrustLineAsset::from_xdr_buffered(read_stream)?,
2977        })
2978    }
2979}
2980
2981#[allow(dead_code)]
2983#[derive(Debug, Clone, Eq, PartialEq)]
2984pub struct LedgerKeyOffer {
2985    pub seller_id: AccountId,
2986    pub offer_id: Int64,
2987}
2988
2989impl XdrCodec for LedgerKeyOffer {
2990    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
2991        self.seller_id.to_xdr_buffered(write_stream);
2992        self.offer_id.to_xdr_buffered(write_stream);
2993    }
2994
2995    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
2996        Ok(LedgerKeyOffer {
2997            seller_id: AccountId::from_xdr_buffered(read_stream)?,
2998            offer_id: Int64::from_xdr_buffered(read_stream)?,
2999        })
3000    }
3001}
3002
3003#[allow(dead_code)]
3005#[derive(Debug, Clone, Eq, PartialEq)]
3006pub struct LedgerKeyData {
3007    pub account_id: AccountId,
3008    pub data_name: String64,
3009}
3010
3011impl XdrCodec for LedgerKeyData {
3012    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3013        self.account_id.to_xdr_buffered(write_stream);
3014        self.data_name.to_xdr_buffered(write_stream);
3015    }
3016
3017    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3018        Ok(LedgerKeyData {
3019            account_id: AccountId::from_xdr_buffered(read_stream)?,
3020            data_name: String64::from_xdr_buffered(read_stream)?,
3021        })
3022    }
3023}
3024
3025#[allow(dead_code)]
3027#[derive(Debug, Clone, Eq, PartialEq)]
3028pub struct LedgerKeyClaimableBalance {
3029    pub balance_id: ClaimableBalanceId,
3030}
3031
3032impl XdrCodec for LedgerKeyClaimableBalance {
3033    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3034        self.balance_id.to_xdr_buffered(write_stream);
3035    }
3036
3037    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3038        Ok(LedgerKeyClaimableBalance { balance_id: ClaimableBalanceId::from_xdr_buffered(read_stream)? })
3039    }
3040}
3041
3042#[allow(dead_code)]
3044#[derive(Debug, Clone, Eq, PartialEq)]
3045pub struct LedgerKeyLiquidityPool {
3046    pub liquidity_pool_id: PoolId,
3047}
3048
3049impl XdrCodec for LedgerKeyLiquidityPool {
3050    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3051        self.liquidity_pool_id.to_xdr_buffered(write_stream);
3052    }
3053
3054    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3055        Ok(LedgerKeyLiquidityPool { liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)? })
3056    }
3057}
3058
3059#[allow(dead_code)]
3061#[derive(Debug, Clone, Eq, PartialEq)]
3062pub struct LedgerKeyContractData {
3063    pub contract: ScAddress,
3064    pub key: ScVal,
3065    pub durability: ContractDataDurability,
3066}
3067
3068impl XdrCodec for LedgerKeyContractData {
3069    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3070        self.contract.to_xdr_buffered(write_stream);
3071        self.key.to_xdr_buffered(write_stream);
3072        self.durability.to_xdr_buffered(write_stream);
3073    }
3074
3075    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3076        Ok(LedgerKeyContractData {
3077            contract: ScAddress::from_xdr_buffered(read_stream)?,
3078            key: ScVal::from_xdr_buffered(read_stream)?,
3079            durability: ContractDataDurability::from_xdr_buffered(read_stream)?,
3080        })
3081    }
3082}
3083
3084#[allow(dead_code)]
3086#[derive(Debug, Clone, Eq, PartialEq)]
3087pub struct LedgerKeyContractCode {
3088    pub hash: Hash,
3089}
3090
3091impl XdrCodec for LedgerKeyContractCode {
3092    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3093        self.hash.to_xdr_buffered(write_stream);
3094    }
3095
3096    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3097        Ok(LedgerKeyContractCode { hash: Hash::from_xdr_buffered(read_stream)? })
3098    }
3099}
3100
3101#[allow(dead_code)]
3103#[derive(Debug, Clone, Eq, PartialEq)]
3104pub struct LedgerKeyConfigSetting {
3105    pub config_setting_id: ConfigSettingId,
3106}
3107
3108impl XdrCodec for LedgerKeyConfigSetting {
3109    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3110        self.config_setting_id.to_xdr_buffered(write_stream);
3111    }
3112
3113    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3114        Ok(LedgerKeyConfigSetting { config_setting_id: ConfigSettingId::from_xdr_buffered(read_stream)? })
3115    }
3116}
3117
3118#[allow(dead_code)]
3120#[derive(Debug, Clone, Eq, PartialEq)]
3121pub struct LedgerKeyTtl {
3122    pub key_hash: Hash,
3123}
3124
3125impl XdrCodec for LedgerKeyTtl {
3126    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3127        self.key_hash.to_xdr_buffered(write_stream);
3128    }
3129
3130    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3131        Ok(LedgerKeyTtl { key_hash: Hash::from_xdr_buffered(read_stream)? })
3132    }
3133}
3134
3135#[allow(dead_code)]
3137#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3138pub enum EnvelopeType {
3139    EnvelopeTypeTxV0 = 0,
3140    EnvelopeTypeScp = 1,
3141    EnvelopeTypeTx = 2,
3142    EnvelopeTypeAuth = 3,
3143    EnvelopeTypeScpvalue = 4,
3144    EnvelopeTypeTxFeeBump = 5,
3145    EnvelopeTypeOpId = 6,
3146    EnvelopeTypePoolRevokeOpId = 7,
3147    EnvelopeTypeContractId = 8,
3148    EnvelopeTypeSorobanAuthorization = 9,
3149}
3150
3151impl XdrCodec for EnvelopeType {
3152    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3153        let value = *self as i32;
3154        value.to_xdr_buffered(write_stream);
3155    }
3156
3157    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3158        let enum_value = i32::from_xdr_buffered(read_stream)?;
3159        match enum_value {
3160            0 => Ok(EnvelopeType::EnvelopeTypeTxV0),
3161            1 => Ok(EnvelopeType::EnvelopeTypeScp),
3162            2 => Ok(EnvelopeType::EnvelopeTypeTx),
3163            3 => Ok(EnvelopeType::EnvelopeTypeAuth),
3164            4 => Ok(EnvelopeType::EnvelopeTypeScpvalue),
3165            5 => Ok(EnvelopeType::EnvelopeTypeTxFeeBump),
3166            6 => Ok(EnvelopeType::EnvelopeTypeOpId),
3167            7 => Ok(EnvelopeType::EnvelopeTypePoolRevokeOpId),
3168            8 => Ok(EnvelopeType::EnvelopeTypeContractId),
3169            9 => Ok(EnvelopeType::EnvelopeTypeSorobanAuthorization),
3170            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3171        }
3172    }
3173}
3174
3175#[allow(dead_code)]
3177#[cfg(feature = "all-types")]
3178pub type UpgradeType = LimitedVarOpaque<128>;
3179
3180#[allow(dead_code)]
3182#[cfg(feature = "all-types")]
3183#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3184pub enum StellarValueType {
3185    StellarValueBasic = 0,
3186    StellarValueSigned = 1,
3187}
3188
3189#[cfg(feature = "all-types")]
3190impl XdrCodec for StellarValueType {
3191    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3192        let value = *self as i32;
3193        value.to_xdr_buffered(write_stream);
3194    }
3195
3196    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3197        let enum_value = i32::from_xdr_buffered(read_stream)?;
3198        match enum_value {
3199            0 => Ok(StellarValueType::StellarValueBasic),
3200            1 => Ok(StellarValueType::StellarValueSigned),
3201            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3202        }
3203    }
3204}
3205
3206#[allow(dead_code)]
3208#[cfg(feature = "all-types")]
3209#[derive(Debug, Clone, Eq, PartialEq)]
3210pub struct LedgerCloseValueSignature {
3211    pub node_id: NodeId,
3212    pub signature: Signature,
3213}
3214
3215#[cfg(feature = "all-types")]
3216impl XdrCodec for LedgerCloseValueSignature {
3217    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3218        self.node_id.to_xdr_buffered(write_stream);
3219        self.signature.to_xdr_buffered(write_stream);
3220    }
3221
3222    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3223        Ok(LedgerCloseValueSignature {
3224            node_id: NodeId::from_xdr_buffered(read_stream)?,
3225            signature: Signature::from_xdr_buffered(read_stream)?,
3226        })
3227    }
3228}
3229
3230#[allow(dead_code)]
3232#[cfg(feature = "all-types")]
3233#[derive(Debug, Clone, Eq, PartialEq)]
3234pub struct StellarValue {
3235    pub tx_set_hash: Hash,
3236    pub close_time: TimePoint,
3237    pub upgrades: LimitedVarArray<UpgradeType, 6>,
3238    pub ext: StellarValueExt,
3239}
3240
3241#[cfg(feature = "all-types")]
3242impl XdrCodec for StellarValue {
3243    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3244        self.tx_set_hash.to_xdr_buffered(write_stream);
3245        self.close_time.to_xdr_buffered(write_stream);
3246        self.upgrades.to_xdr_buffered(write_stream);
3247        self.ext.to_xdr_buffered(write_stream);
3248    }
3249
3250    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3251        Ok(StellarValue {
3252            tx_set_hash: Hash::from_xdr_buffered(read_stream)?,
3253            close_time: TimePoint::from_xdr_buffered(read_stream)?,
3254            upgrades: LimitedVarArray::<UpgradeType, 6>::from_xdr_buffered(read_stream)?,
3255            ext: StellarValueExt::from_xdr_buffered(read_stream)?,
3256        })
3257    }
3258}
3259
3260#[allow(dead_code)]
3262#[cfg(feature = "all-types")]
3263#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3264pub enum LedgerHeaderFlags {
3265    DisableLiquidityPoolTradingFlag = 1,
3266    DisableLiquidityPoolDepositFlag = 2,
3267    DisableLiquidityPoolWithdrawalFlag = 4,
3268}
3269
3270#[cfg(feature = "all-types")]
3271impl XdrCodec for LedgerHeaderFlags {
3272    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3273        let value = *self as i32;
3274        value.to_xdr_buffered(write_stream);
3275    }
3276
3277    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3278        let enum_value = i32::from_xdr_buffered(read_stream)?;
3279        match enum_value {
3280            1 => Ok(LedgerHeaderFlags::DisableLiquidityPoolTradingFlag),
3281            2 => Ok(LedgerHeaderFlags::DisableLiquidityPoolDepositFlag),
3282            4 => Ok(LedgerHeaderFlags::DisableLiquidityPoolWithdrawalFlag),
3283            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3284        }
3285    }
3286}
3287
3288#[allow(dead_code)]
3290#[cfg(feature = "all-types")]
3291#[derive(Debug, Clone, Eq, PartialEq)]
3292pub struct LedgerHeaderExtensionV1 {
3293    pub flags: Uint32,
3294    pub ext: LedgerHeaderExtensionV1Ext,
3295}
3296
3297#[cfg(feature = "all-types")]
3298impl XdrCodec for LedgerHeaderExtensionV1 {
3299    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3300        self.flags.to_xdr_buffered(write_stream);
3301        self.ext.to_xdr_buffered(write_stream);
3302    }
3303
3304    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3305        Ok(LedgerHeaderExtensionV1 {
3306            flags: Uint32::from_xdr_buffered(read_stream)?,
3307            ext: LedgerHeaderExtensionV1Ext::from_xdr_buffered(read_stream)?,
3308        })
3309    }
3310}
3311
3312#[allow(dead_code)]
3314#[cfg(feature = "all-types")]
3315#[derive(Debug, Clone, Eq, PartialEq)]
3316pub struct LedgerHeader {
3317    pub ledger_version: Uint32,
3318    pub previous_ledger_hash: Hash,
3319    pub scp_value: StellarValue,
3320    pub tx_set_result_hash: Hash,
3321    pub bucket_list_hash: Hash,
3322    pub ledger_seq: Uint32,
3323    pub total_coins: Int64,
3324    pub fee_pool: Int64,
3325    pub inflation_seq: Uint32,
3326    pub id_pool: Uint64,
3327    pub base_fee: Uint32,
3328    pub base_reserve: Uint32,
3329    pub max_tx_set_size: Uint32,
3330    pub skip_list: [Hash; 4],
3331    pub ext: LedgerHeaderExt,
3332}
3333
3334#[cfg(feature = "all-types")]
3335impl XdrCodec for LedgerHeader {
3336    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3337        self.ledger_version.to_xdr_buffered(write_stream);
3338        self.previous_ledger_hash.to_xdr_buffered(write_stream);
3339        self.scp_value.to_xdr_buffered(write_stream);
3340        self.tx_set_result_hash.to_xdr_buffered(write_stream);
3341        self.bucket_list_hash.to_xdr_buffered(write_stream);
3342        self.ledger_seq.to_xdr_buffered(write_stream);
3343        self.total_coins.to_xdr_buffered(write_stream);
3344        self.fee_pool.to_xdr_buffered(write_stream);
3345        self.inflation_seq.to_xdr_buffered(write_stream);
3346        self.id_pool.to_xdr_buffered(write_stream);
3347        self.base_fee.to_xdr_buffered(write_stream);
3348        self.base_reserve.to_xdr_buffered(write_stream);
3349        self.max_tx_set_size.to_xdr_buffered(write_stream);
3350        self.skip_list.to_xdr_buffered(write_stream);
3351        self.ext.to_xdr_buffered(write_stream);
3352    }
3353
3354    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3355        Ok(LedgerHeader {
3356            ledger_version: Uint32::from_xdr_buffered(read_stream)?,
3357            previous_ledger_hash: Hash::from_xdr_buffered(read_stream)?,
3358            scp_value: StellarValue::from_xdr_buffered(read_stream)?,
3359            tx_set_result_hash: Hash::from_xdr_buffered(read_stream)?,
3360            bucket_list_hash: Hash::from_xdr_buffered(read_stream)?,
3361            ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
3362            total_coins: Int64::from_xdr_buffered(read_stream)?,
3363            fee_pool: Int64::from_xdr_buffered(read_stream)?,
3364            inflation_seq: Uint32::from_xdr_buffered(read_stream)?,
3365            id_pool: Uint64::from_xdr_buffered(read_stream)?,
3366            base_fee: Uint32::from_xdr_buffered(read_stream)?,
3367            base_reserve: Uint32::from_xdr_buffered(read_stream)?,
3368            max_tx_set_size: Uint32::from_xdr_buffered(read_stream)?,
3369            skip_list: <[Hash; 4]>::from_xdr_buffered(read_stream)?,
3370            ext: LedgerHeaderExt::from_xdr_buffered(read_stream)?,
3371        })
3372    }
3373}
3374
3375#[allow(dead_code)]
3377#[cfg(feature = "all-types")]
3378#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3379pub enum LedgerUpgradeType {
3380    LedgerUpgradeVersion = 1,
3381    LedgerUpgradeBaseFee = 2,
3382    LedgerUpgradeMaxTxSetSize = 3,
3383    LedgerUpgradeBaseReserve = 4,
3384    LedgerUpgradeFlags = 5,
3385    LedgerUpgradeConfig = 6,
3386    LedgerUpgradeMaxSorobanTxSetSize = 7,
3387}
3388
3389#[cfg(feature = "all-types")]
3390impl XdrCodec for LedgerUpgradeType {
3391    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3392        let value = *self as i32;
3393        value.to_xdr_buffered(write_stream);
3394    }
3395
3396    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3397        let enum_value = i32::from_xdr_buffered(read_stream)?;
3398        match enum_value {
3399            1 => Ok(LedgerUpgradeType::LedgerUpgradeVersion),
3400            2 => Ok(LedgerUpgradeType::LedgerUpgradeBaseFee),
3401            3 => Ok(LedgerUpgradeType::LedgerUpgradeMaxTxSetSize),
3402            4 => Ok(LedgerUpgradeType::LedgerUpgradeBaseReserve),
3403            5 => Ok(LedgerUpgradeType::LedgerUpgradeFlags),
3404            6 => Ok(LedgerUpgradeType::LedgerUpgradeConfig),
3405            7 => Ok(LedgerUpgradeType::LedgerUpgradeMaxSorobanTxSetSize),
3406            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3407        }
3408    }
3409}
3410
3411#[allow(dead_code)]
3413#[cfg(feature = "all-types")]
3414#[derive(Debug, Clone, Eq, PartialEq)]
3415pub struct ConfigUpgradeSetKey {
3416    pub contract_id: Hash,
3417    pub content_hash: Hash,
3418}
3419
3420#[cfg(feature = "all-types")]
3421impl XdrCodec for ConfigUpgradeSetKey {
3422    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3423        self.contract_id.to_xdr_buffered(write_stream);
3424        self.content_hash.to_xdr_buffered(write_stream);
3425    }
3426
3427    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3428        Ok(ConfigUpgradeSetKey {
3429            contract_id: Hash::from_xdr_buffered(read_stream)?,
3430            content_hash: Hash::from_xdr_buffered(read_stream)?,
3431        })
3432    }
3433}
3434
3435#[allow(dead_code)]
3437#[cfg(feature = "all-types")]
3438#[derive(Debug, Clone, Eq, PartialEq)]
3439pub struct ConfigUpgradeSet {
3440    pub updated_entry: UnlimitedVarArray<ConfigSettingEntry>,
3441}
3442
3443#[cfg(feature = "all-types")]
3444impl XdrCodec for ConfigUpgradeSet {
3445    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3446        self.updated_entry.to_xdr_buffered(write_stream);
3447    }
3448
3449    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3450        Ok(ConfigUpgradeSet { updated_entry: UnlimitedVarArray::<ConfigSettingEntry>::from_xdr_buffered(read_stream)? })
3451    }
3452}
3453
3454#[allow(dead_code)]
3456#[cfg(feature = "all-types")]
3457#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3458pub enum BucketEntryType {
3459    Metaentry = -1,
3460    Liveentry = 0,
3461    Deadentry = 1,
3462    Initentry = 2,
3463}
3464
3465#[cfg(feature = "all-types")]
3466impl XdrCodec for BucketEntryType {
3467    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3468        let value = *self as i32;
3469        value.to_xdr_buffered(write_stream);
3470    }
3471
3472    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3473        let enum_value = i32::from_xdr_buffered(read_stream)?;
3474        match enum_value {
3475            -1 => Ok(BucketEntryType::Metaentry),
3476            0 => Ok(BucketEntryType::Liveentry),
3477            1 => Ok(BucketEntryType::Deadentry),
3478            2 => Ok(BucketEntryType::Initentry),
3479            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3480        }
3481    }
3482}
3483
3484#[allow(dead_code)]
3486#[cfg(feature = "all-types")]
3487#[derive(Debug, Clone, Eq, PartialEq)]
3488pub struct BucketMetadata {
3489    pub ledger_version: Uint32,
3490    pub ext: BucketMetadataExt,
3491}
3492
3493#[cfg(feature = "all-types")]
3494impl XdrCodec for BucketMetadata {
3495    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3496        self.ledger_version.to_xdr_buffered(write_stream);
3497        self.ext.to_xdr_buffered(write_stream);
3498    }
3499
3500    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3501        Ok(BucketMetadata {
3502            ledger_version: Uint32::from_xdr_buffered(read_stream)?,
3503            ext: BucketMetadataExt::from_xdr_buffered(read_stream)?,
3504        })
3505    }
3506}
3507
3508#[allow(dead_code)]
3510#[cfg(feature = "all-types")]
3511#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3512pub enum TxSetComponentType {
3513    TxsetCompTxsMaybeDiscountedFee = 0,
3514}
3515
3516#[cfg(feature = "all-types")]
3517impl XdrCodec for TxSetComponentType {
3518    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3519        let value = *self as i32;
3520        value.to_xdr_buffered(write_stream);
3521    }
3522
3523    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3524        let enum_value = i32::from_xdr_buffered(read_stream)?;
3525        match enum_value {
3526            0 => Ok(TxSetComponentType::TxsetCompTxsMaybeDiscountedFee),
3527            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3528        }
3529    }
3530}
3531
3532#[allow(dead_code)]
3534#[cfg(feature = "all-types")]
3535#[derive(Debug, Clone, Eq, PartialEq)]
3536pub struct TxSetComponentTxsMaybeDiscountedFee {
3537    pub base_fee: Option<Int64>,
3538    pub txes: UnlimitedVarArray<TransactionEnvelope>,
3539}
3540
3541#[cfg(feature = "all-types")]
3542impl XdrCodec for TxSetComponentTxsMaybeDiscountedFee {
3543    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3544        self.base_fee.to_xdr_buffered(write_stream);
3545        self.txes.to_xdr_buffered(write_stream);
3546    }
3547
3548    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3549        Ok(TxSetComponentTxsMaybeDiscountedFee {
3550            base_fee: Option::<Int64>::from_xdr_buffered(read_stream)?,
3551            txes: UnlimitedVarArray::<TransactionEnvelope>::from_xdr_buffered(read_stream)?,
3552        })
3553    }
3554}
3555
3556#[allow(dead_code)]
3558#[cfg(feature = "all-types")]
3559#[derive(Debug, Clone, Eq, PartialEq)]
3560pub struct TransactionSet {
3561    pub previous_ledger_hash: Hash,
3562    pub txes: UnlimitedVarArray<TransactionEnvelope>,
3563}
3564
3565#[cfg(feature = "all-types")]
3566impl XdrCodec for TransactionSet {
3567    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3568        self.previous_ledger_hash.to_xdr_buffered(write_stream);
3569        self.txes.to_xdr_buffered(write_stream);
3570    }
3571
3572    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3573        Ok(TransactionSet {
3574            previous_ledger_hash: Hash::from_xdr_buffered(read_stream)?,
3575            txes: UnlimitedVarArray::<TransactionEnvelope>::from_xdr_buffered(read_stream)?,
3576        })
3577    }
3578}
3579
3580#[allow(dead_code)]
3582#[cfg(feature = "all-types")]
3583#[derive(Debug, Clone, Eq, PartialEq)]
3584pub struct TransactionSetV1 {
3585    pub previous_ledger_hash: Hash,
3586    pub phases: UnlimitedVarArray<TransactionPhase>,
3587}
3588
3589#[cfg(feature = "all-types")]
3590impl XdrCodec for TransactionSetV1 {
3591    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3592        self.previous_ledger_hash.to_xdr_buffered(write_stream);
3593        self.phases.to_xdr_buffered(write_stream);
3594    }
3595
3596    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3597        Ok(TransactionSetV1 {
3598            previous_ledger_hash: Hash::from_xdr_buffered(read_stream)?,
3599            phases: UnlimitedVarArray::<TransactionPhase>::from_xdr_buffered(read_stream)?,
3600        })
3601    }
3602}
3603
3604#[allow(dead_code)]
3606#[cfg(feature = "all-types")]
3607#[derive(Debug, Clone, Eq, PartialEq)]
3608pub struct TransactionResultPair {
3609    pub transaction_hash: Hash,
3610    pub result: TransactionResult,
3611}
3612
3613#[cfg(feature = "all-types")]
3614impl XdrCodec for TransactionResultPair {
3615    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3616        self.transaction_hash.to_xdr_buffered(write_stream);
3617        self.result.to_xdr_buffered(write_stream);
3618    }
3619
3620    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3621        Ok(TransactionResultPair {
3622            transaction_hash: Hash::from_xdr_buffered(read_stream)?,
3623            result: TransactionResult::from_xdr_buffered(read_stream)?,
3624        })
3625    }
3626}
3627
3628#[allow(dead_code)]
3630#[cfg(feature = "all-types")]
3631#[derive(Debug, Clone, Eq, PartialEq)]
3632pub struct TransactionResultSet {
3633    pub results: UnlimitedVarArray<TransactionResultPair>,
3634}
3635
3636#[cfg(feature = "all-types")]
3637impl XdrCodec for TransactionResultSet {
3638    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3639        self.results.to_xdr_buffered(write_stream);
3640    }
3641
3642    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3643        Ok(TransactionResultSet {
3644            results: UnlimitedVarArray::<TransactionResultPair>::from_xdr_buffered(read_stream)?,
3645        })
3646    }
3647}
3648
3649#[allow(dead_code)]
3651#[cfg(feature = "all-types")]
3652#[derive(Debug, Clone, Eq, PartialEq)]
3653pub struct TransactionHistoryEntry {
3654    pub ledger_seq: Uint32,
3655    pub tx_set: TransactionSet,
3656    pub ext: TransactionHistoryEntryExt,
3657}
3658
3659#[cfg(feature = "all-types")]
3660impl XdrCodec for TransactionHistoryEntry {
3661    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3662        self.ledger_seq.to_xdr_buffered(write_stream);
3663        self.tx_set.to_xdr_buffered(write_stream);
3664        self.ext.to_xdr_buffered(write_stream);
3665    }
3666
3667    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3668        Ok(TransactionHistoryEntry {
3669            ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
3670            tx_set: TransactionSet::from_xdr_buffered(read_stream)?,
3671            ext: TransactionHistoryEntryExt::from_xdr_buffered(read_stream)?,
3672        })
3673    }
3674}
3675
3676#[allow(dead_code)]
3678#[cfg(feature = "all-types")]
3679#[derive(Debug, Clone, Eq, PartialEq)]
3680pub struct TransactionHistoryResultEntry {
3681    pub ledger_seq: Uint32,
3682    pub tx_result_set: TransactionResultSet,
3683    pub ext: TransactionHistoryResultEntryExt,
3684}
3685
3686#[cfg(feature = "all-types")]
3687impl XdrCodec for TransactionHistoryResultEntry {
3688    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3689        self.ledger_seq.to_xdr_buffered(write_stream);
3690        self.tx_result_set.to_xdr_buffered(write_stream);
3691        self.ext.to_xdr_buffered(write_stream);
3692    }
3693
3694    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3695        Ok(TransactionHistoryResultEntry {
3696            ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
3697            tx_result_set: TransactionResultSet::from_xdr_buffered(read_stream)?,
3698            ext: TransactionHistoryResultEntryExt::from_xdr_buffered(read_stream)?,
3699        })
3700    }
3701}
3702
3703#[allow(dead_code)]
3705#[cfg(feature = "all-types")]
3706#[derive(Debug, Clone, Eq, PartialEq)]
3707pub struct LedgerHeaderHistoryEntry {
3708    pub hash: Hash,
3709    pub header: LedgerHeader,
3710    pub ext: LedgerHeaderHistoryEntryExt,
3711}
3712
3713#[cfg(feature = "all-types")]
3714impl XdrCodec for LedgerHeaderHistoryEntry {
3715    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3716        self.hash.to_xdr_buffered(write_stream);
3717        self.header.to_xdr_buffered(write_stream);
3718        self.ext.to_xdr_buffered(write_stream);
3719    }
3720
3721    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3722        Ok(LedgerHeaderHistoryEntry {
3723            hash: Hash::from_xdr_buffered(read_stream)?,
3724            header: LedgerHeader::from_xdr_buffered(read_stream)?,
3725            ext: LedgerHeaderHistoryEntryExt::from_xdr_buffered(read_stream)?,
3726        })
3727    }
3728}
3729
3730#[allow(dead_code)]
3732#[cfg(feature = "all-types")]
3733#[derive(Debug, Clone, Eq, PartialEq)]
3734pub struct LedgerScpMessages {
3735    pub ledger_seq: Uint32,
3736    pub messages: UnlimitedVarArray<ScpEnvelope>,
3737}
3738
3739#[cfg(feature = "all-types")]
3740impl XdrCodec for LedgerScpMessages {
3741    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3742        self.ledger_seq.to_xdr_buffered(write_stream);
3743        self.messages.to_xdr_buffered(write_stream);
3744    }
3745
3746    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3747        Ok(LedgerScpMessages {
3748            ledger_seq: Uint32::from_xdr_buffered(read_stream)?,
3749            messages: UnlimitedVarArray::<ScpEnvelope>::from_xdr_buffered(read_stream)?,
3750        })
3751    }
3752}
3753
3754#[allow(dead_code)]
3756#[cfg(feature = "all-types")]
3757#[derive(Debug, Clone, Eq, PartialEq)]
3758pub struct ScpHistoryEntryV0 {
3759    pub quorum_sets: UnlimitedVarArray<ScpQuorumSet>,
3760    pub ledger_messages: LedgerScpMessages,
3761}
3762
3763#[cfg(feature = "all-types")]
3764impl XdrCodec for ScpHistoryEntryV0 {
3765    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3766        self.quorum_sets.to_xdr_buffered(write_stream);
3767        self.ledger_messages.to_xdr_buffered(write_stream);
3768    }
3769
3770    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3771        Ok(ScpHistoryEntryV0 {
3772            quorum_sets: UnlimitedVarArray::<ScpQuorumSet>::from_xdr_buffered(read_stream)?,
3773            ledger_messages: LedgerScpMessages::from_xdr_buffered(read_stream)?,
3774        })
3775    }
3776}
3777
3778#[allow(dead_code)]
3780#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3781pub enum LedgerEntryChangeType {
3782    LedgerEntryCreated = 0,
3783    LedgerEntryUpdated = 1,
3784    LedgerEntryRemoved = 2,
3785    LedgerEntryState = 3,
3786}
3787
3788impl XdrCodec for LedgerEntryChangeType {
3789    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3790        let value = *self as i32;
3791        value.to_xdr_buffered(write_stream);
3792    }
3793
3794    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3795        let enum_value = i32::from_xdr_buffered(read_stream)?;
3796        match enum_value {
3797            0 => Ok(LedgerEntryChangeType::LedgerEntryCreated),
3798            1 => Ok(LedgerEntryChangeType::LedgerEntryUpdated),
3799            2 => Ok(LedgerEntryChangeType::LedgerEntryRemoved),
3800            3 => Ok(LedgerEntryChangeType::LedgerEntryState),
3801            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3802        }
3803    }
3804}
3805
3806#[allow(dead_code)]
3808pub type LedgerEntryChanges = UnlimitedVarArray<LedgerEntryChange>;
3809
3810#[allow(dead_code)]
3812#[derive(Debug, Clone, Eq, PartialEq)]
3813pub struct OperationMeta {
3814    pub changes: LedgerEntryChanges,
3815}
3816
3817impl XdrCodec for OperationMeta {
3818    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3819        self.changes.to_xdr_buffered(write_stream);
3820    }
3821
3822    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3823        Ok(OperationMeta { changes: LedgerEntryChanges::from_xdr_buffered(read_stream)? })
3824    }
3825}
3826
3827#[allow(dead_code)]
3829#[derive(Debug, Clone, Eq, PartialEq)]
3830pub struct TransactionMetaV1 {
3831    pub tx_changes: LedgerEntryChanges,
3832    pub operations: UnlimitedVarArray<OperationMeta>,
3833}
3834
3835impl XdrCodec for TransactionMetaV1 {
3836    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3837        self.tx_changes.to_xdr_buffered(write_stream);
3838        self.operations.to_xdr_buffered(write_stream);
3839    }
3840
3841    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3842        Ok(TransactionMetaV1 {
3843            tx_changes: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
3844            operations: UnlimitedVarArray::<OperationMeta>::from_xdr_buffered(read_stream)?,
3845        })
3846    }
3847}
3848
3849#[allow(dead_code)]
3851#[derive(Debug, Clone, Eq, PartialEq)]
3852pub struct TransactionMetaV2 {
3853    pub tx_changes_before: LedgerEntryChanges,
3854    pub operations: UnlimitedVarArray<OperationMeta>,
3855    pub tx_changes_after: LedgerEntryChanges,
3856}
3857
3858impl XdrCodec for TransactionMetaV2 {
3859    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3860        self.tx_changes_before.to_xdr_buffered(write_stream);
3861        self.operations.to_xdr_buffered(write_stream);
3862        self.tx_changes_after.to_xdr_buffered(write_stream);
3863    }
3864
3865    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3866        Ok(TransactionMetaV2 {
3867            tx_changes_before: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
3868            operations: UnlimitedVarArray::<OperationMeta>::from_xdr_buffered(read_stream)?,
3869            tx_changes_after: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
3870        })
3871    }
3872}
3873
3874#[allow(dead_code)]
3876#[derive(Debug, Copy, Clone, Eq, PartialEq)]
3877pub enum ContractEventType {
3878    System = 0,
3879    Contract = 1,
3880    Diagnostic = 2,
3881}
3882
3883impl XdrCodec for ContractEventType {
3884    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3885        let value = *self as i32;
3886        value.to_xdr_buffered(write_stream);
3887    }
3888
3889    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3890        let enum_value = i32::from_xdr_buffered(read_stream)?;
3891        match enum_value {
3892            0 => Ok(ContractEventType::System),
3893            1 => Ok(ContractEventType::Contract),
3894            2 => Ok(ContractEventType::Diagnostic),
3895            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
3896        }
3897    }
3898}
3899
3900#[allow(dead_code)]
3902#[derive(Debug, Clone, Eq, PartialEq)]
3903pub struct ContractEventV0 {
3904    pub topics: UnlimitedVarArray<ScVal>,
3905    pub data: ScVal,
3906}
3907
3908impl XdrCodec for ContractEventV0 {
3909    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3910        self.topics.to_xdr_buffered(write_stream);
3911        self.data.to_xdr_buffered(write_stream);
3912    }
3913
3914    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3915        Ok(ContractEventV0 {
3916            topics: UnlimitedVarArray::<ScVal>::from_xdr_buffered(read_stream)?,
3917            data: ScVal::from_xdr_buffered(read_stream)?,
3918        })
3919    }
3920}
3921
3922#[allow(dead_code)]
3924#[derive(Debug, Clone, Eq, PartialEq)]
3925pub struct ContractEvent {
3926    pub ext: ExtensionPoint,
3927    pub contract_id: Option<Hash>,
3928    pub type_: ContractEventType,
3929    pub body: ContractEventBody,
3930}
3931
3932impl XdrCodec for ContractEvent {
3933    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3934        self.ext.to_xdr_buffered(write_stream);
3935        self.contract_id.to_xdr_buffered(write_stream);
3936        self.type_.to_xdr_buffered(write_stream);
3937        self.body.to_xdr_buffered(write_stream);
3938    }
3939
3940    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3941        Ok(ContractEvent {
3942            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
3943            contract_id: Option::<Hash>::from_xdr_buffered(read_stream)?,
3944            type_: ContractEventType::from_xdr_buffered(read_stream)?,
3945            body: ContractEventBody::from_xdr_buffered(read_stream)?,
3946        })
3947    }
3948}
3949
3950#[allow(dead_code)]
3952#[derive(Debug, Clone, Eq, PartialEq)]
3953pub struct DiagnosticEvent {
3954    pub in_successful_contract_call: bool,
3955    pub event: ContractEvent,
3956}
3957
3958impl XdrCodec for DiagnosticEvent {
3959    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3960        self.in_successful_contract_call.to_xdr_buffered(write_stream);
3961        self.event.to_xdr_buffered(write_stream);
3962    }
3963
3964    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3965        Ok(DiagnosticEvent {
3966            in_successful_contract_call: bool::from_xdr_buffered(read_stream)?,
3967            event: ContractEvent::from_xdr_buffered(read_stream)?,
3968        })
3969    }
3970}
3971
3972#[allow(dead_code)]
3974#[cfg(feature = "all-types")]
3975pub type DiagnosticEvents = UnlimitedVarArray<DiagnosticEvent>;
3976
3977#[allow(dead_code)]
3979#[derive(Debug, Clone, Eq, PartialEq)]
3980pub struct SorobanTransactionMetaExtV1 {
3981    pub ext: ExtensionPoint,
3982    pub total_non_refundable_resource_fee_charged: Int64,
3983    pub total_refundable_resource_fee_charged: Int64,
3984    pub rent_fee_charged: Int64,
3985}
3986
3987impl XdrCodec for SorobanTransactionMetaExtV1 {
3988    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
3989        self.ext.to_xdr_buffered(write_stream);
3990        self.total_non_refundable_resource_fee_charged.to_xdr_buffered(write_stream);
3991        self.total_refundable_resource_fee_charged.to_xdr_buffered(write_stream);
3992        self.rent_fee_charged.to_xdr_buffered(write_stream);
3993    }
3994
3995    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
3996        Ok(SorobanTransactionMetaExtV1 {
3997            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
3998            total_non_refundable_resource_fee_charged: Int64::from_xdr_buffered(read_stream)?,
3999            total_refundable_resource_fee_charged: Int64::from_xdr_buffered(read_stream)?,
4000            rent_fee_charged: Int64::from_xdr_buffered(read_stream)?,
4001        })
4002    }
4003}
4004
4005#[allow(dead_code)]
4007#[derive(Debug, Clone, Eq, PartialEq)]
4008pub struct SorobanTransactionMeta {
4009    pub ext: SorobanTransactionMetaExt,
4010    pub events: UnlimitedVarArray<ContractEvent>,
4011    pub return_value: ScVal,
4012    pub diagnostic_events: UnlimitedVarArray<DiagnosticEvent>,
4013}
4014
4015impl XdrCodec for SorobanTransactionMeta {
4016    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4017        self.ext.to_xdr_buffered(write_stream);
4018        self.events.to_xdr_buffered(write_stream);
4019        self.return_value.to_xdr_buffered(write_stream);
4020        self.diagnostic_events.to_xdr_buffered(write_stream);
4021    }
4022
4023    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4024        Ok(SorobanTransactionMeta {
4025            ext: SorobanTransactionMetaExt::from_xdr_buffered(read_stream)?,
4026            events: UnlimitedVarArray::<ContractEvent>::from_xdr_buffered(read_stream)?,
4027            return_value: ScVal::from_xdr_buffered(read_stream)?,
4028            diagnostic_events: UnlimitedVarArray::<DiagnosticEvent>::from_xdr_buffered(read_stream)?,
4029        })
4030    }
4031}
4032
4033#[allow(dead_code)]
4035#[derive(Debug, Clone, Eq, PartialEq)]
4036pub struct TransactionMetaV3 {
4037    pub ext: ExtensionPoint,
4038    pub tx_changes_before: LedgerEntryChanges,
4039    pub operations: UnlimitedVarArray<OperationMeta>,
4040    pub tx_changes_after: LedgerEntryChanges,
4041    pub soroban_meta: Option<SorobanTransactionMeta>,
4042}
4043
4044impl XdrCodec for TransactionMetaV3 {
4045    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4046        self.ext.to_xdr_buffered(write_stream);
4047        self.tx_changes_before.to_xdr_buffered(write_stream);
4048        self.operations.to_xdr_buffered(write_stream);
4049        self.tx_changes_after.to_xdr_buffered(write_stream);
4050        self.soroban_meta.to_xdr_buffered(write_stream);
4051    }
4052
4053    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4054        Ok(TransactionMetaV3 {
4055            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
4056            tx_changes_before: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
4057            operations: UnlimitedVarArray::<OperationMeta>::from_xdr_buffered(read_stream)?,
4058            tx_changes_after: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
4059            soroban_meta: Option::<SorobanTransactionMeta>::from_xdr_buffered(read_stream)?,
4060        })
4061    }
4062}
4063
4064#[allow(dead_code)]
4066#[cfg(feature = "all-types")]
4067#[derive(Debug, Clone, Eq, PartialEq)]
4068pub struct InvokeHostFunctionSuccessPreImage {
4069    pub return_value: ScVal,
4070    pub events: UnlimitedVarArray<ContractEvent>,
4071}
4072
4073#[cfg(feature = "all-types")]
4074impl XdrCodec for InvokeHostFunctionSuccessPreImage {
4075    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4076        self.return_value.to_xdr_buffered(write_stream);
4077        self.events.to_xdr_buffered(write_stream);
4078    }
4079
4080    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4081        Ok(InvokeHostFunctionSuccessPreImage {
4082            return_value: ScVal::from_xdr_buffered(read_stream)?,
4083            events: UnlimitedVarArray::<ContractEvent>::from_xdr_buffered(read_stream)?,
4084        })
4085    }
4086}
4087
4088#[allow(dead_code)]
4090#[cfg(feature = "all-types")]
4091#[derive(Debug, Clone, Eq, PartialEq)]
4092pub struct TransactionResultMeta {
4093    pub result: TransactionResultPair,
4094    pub fee_processing: LedgerEntryChanges,
4095    pub tx_apply_processing: TransactionMeta,
4096}
4097
4098#[cfg(feature = "all-types")]
4099impl XdrCodec for TransactionResultMeta {
4100    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4101        self.result.to_xdr_buffered(write_stream);
4102        self.fee_processing.to_xdr_buffered(write_stream);
4103        self.tx_apply_processing.to_xdr_buffered(write_stream);
4104    }
4105
4106    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4107        Ok(TransactionResultMeta {
4108            result: TransactionResultPair::from_xdr_buffered(read_stream)?,
4109            fee_processing: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
4110            tx_apply_processing: TransactionMeta::from_xdr_buffered(read_stream)?,
4111        })
4112    }
4113}
4114
4115#[allow(dead_code)]
4117#[cfg(feature = "all-types")]
4118#[derive(Debug, Clone, Eq, PartialEq)]
4119pub struct UpgradeEntryMeta {
4120    pub upgrade: LedgerUpgrade,
4121    pub changes: LedgerEntryChanges,
4122}
4123
4124#[cfg(feature = "all-types")]
4125impl XdrCodec for UpgradeEntryMeta {
4126    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4127        self.upgrade.to_xdr_buffered(write_stream);
4128        self.changes.to_xdr_buffered(write_stream);
4129    }
4130
4131    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4132        Ok(UpgradeEntryMeta {
4133            upgrade: LedgerUpgrade::from_xdr_buffered(read_stream)?,
4134            changes: LedgerEntryChanges::from_xdr_buffered(read_stream)?,
4135        })
4136    }
4137}
4138
4139#[allow(dead_code)]
4141#[cfg(feature = "all-types")]
4142#[derive(Debug, Clone, Eq, PartialEq)]
4143pub struct LedgerCloseMetaV0 {
4144    pub ledger_header: LedgerHeaderHistoryEntry,
4145    pub tx_set: TransactionSet,
4146    pub tx_processing: UnlimitedVarArray<TransactionResultMeta>,
4147    pub upgrades_processing: UnlimitedVarArray<UpgradeEntryMeta>,
4148    pub scp_info: UnlimitedVarArray<ScpHistoryEntry>,
4149}
4150
4151#[cfg(feature = "all-types")]
4152impl XdrCodec for LedgerCloseMetaV0 {
4153    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4154        self.ledger_header.to_xdr_buffered(write_stream);
4155        self.tx_set.to_xdr_buffered(write_stream);
4156        self.tx_processing.to_xdr_buffered(write_stream);
4157        self.upgrades_processing.to_xdr_buffered(write_stream);
4158        self.scp_info.to_xdr_buffered(write_stream);
4159    }
4160
4161    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4162        Ok(LedgerCloseMetaV0 {
4163            ledger_header: LedgerHeaderHistoryEntry::from_xdr_buffered(read_stream)?,
4164            tx_set: TransactionSet::from_xdr_buffered(read_stream)?,
4165            tx_processing: UnlimitedVarArray::<TransactionResultMeta>::from_xdr_buffered(read_stream)?,
4166            upgrades_processing: UnlimitedVarArray::<UpgradeEntryMeta>::from_xdr_buffered(read_stream)?,
4167            scp_info: UnlimitedVarArray::<ScpHistoryEntry>::from_xdr_buffered(read_stream)?,
4168        })
4169    }
4170}
4171
4172#[allow(dead_code)]
4174#[cfg(feature = "all-types")]
4175#[derive(Debug, Clone, Eq, PartialEq)]
4176pub struct LedgerCloseMetaExtV1 {
4177    pub ext: ExtensionPoint,
4178    pub soroban_fee_write1_kb: Int64,
4179}
4180
4181#[cfg(feature = "all-types")]
4182impl XdrCodec for LedgerCloseMetaExtV1 {
4183    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4184        self.ext.to_xdr_buffered(write_stream);
4185        self.soroban_fee_write1_kb.to_xdr_buffered(write_stream);
4186    }
4187
4188    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4189        Ok(LedgerCloseMetaExtV1 {
4190            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
4191            soroban_fee_write1_kb: Int64::from_xdr_buffered(read_stream)?,
4192        })
4193    }
4194}
4195
4196#[allow(dead_code)]
4198#[cfg(feature = "all-types")]
4199#[derive(Debug, Clone, Eq, PartialEq)]
4200pub struct LedgerCloseMetaV1 {
4201    pub ext: LedgerCloseMetaExt,
4202    pub ledger_header: LedgerHeaderHistoryEntry,
4203    pub tx_set: GeneralizedTransactionSet,
4204    pub tx_processing: UnlimitedVarArray<TransactionResultMeta>,
4205    pub upgrades_processing: UnlimitedVarArray<UpgradeEntryMeta>,
4206    pub scp_info: UnlimitedVarArray<ScpHistoryEntry>,
4207    pub total_byte_size_of_bucket_list: Uint64,
4208    pub evicted_temporary_ledger_keys: UnlimitedVarArray<LedgerKey>,
4209    pub evicted_persistent_ledger_entries: UnlimitedVarArray<LedgerEntry>,
4210}
4211
4212#[cfg(feature = "all-types")]
4213impl XdrCodec for LedgerCloseMetaV1 {
4214    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4215        self.ext.to_xdr_buffered(write_stream);
4216        self.ledger_header.to_xdr_buffered(write_stream);
4217        self.tx_set.to_xdr_buffered(write_stream);
4218        self.tx_processing.to_xdr_buffered(write_stream);
4219        self.upgrades_processing.to_xdr_buffered(write_stream);
4220        self.scp_info.to_xdr_buffered(write_stream);
4221        self.total_byte_size_of_bucket_list.to_xdr_buffered(write_stream);
4222        self.evicted_temporary_ledger_keys.to_xdr_buffered(write_stream);
4223        self.evicted_persistent_ledger_entries.to_xdr_buffered(write_stream);
4224    }
4225
4226    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4227        Ok(LedgerCloseMetaV1 {
4228            ext: LedgerCloseMetaExt::from_xdr_buffered(read_stream)?,
4229            ledger_header: LedgerHeaderHistoryEntry::from_xdr_buffered(read_stream)?,
4230            tx_set: GeneralizedTransactionSet::from_xdr_buffered(read_stream)?,
4231            tx_processing: UnlimitedVarArray::<TransactionResultMeta>::from_xdr_buffered(read_stream)?,
4232            upgrades_processing: UnlimitedVarArray::<UpgradeEntryMeta>::from_xdr_buffered(read_stream)?,
4233            scp_info: UnlimitedVarArray::<ScpHistoryEntry>::from_xdr_buffered(read_stream)?,
4234            total_byte_size_of_bucket_list: Uint64::from_xdr_buffered(read_stream)?,
4235            evicted_temporary_ledger_keys: UnlimitedVarArray::<LedgerKey>::from_xdr_buffered(read_stream)?,
4236            evicted_persistent_ledger_entries: UnlimitedVarArray::<LedgerEntry>::from_xdr_buffered(read_stream)?,
4237        })
4238    }
4239}
4240
4241#[allow(dead_code)]
4243#[cfg(feature = "all-types")]
4244#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4245pub enum ErrorCode {
4246    ErrMisc = 0,
4247    ErrData = 1,
4248    ErrConf = 2,
4249    ErrAuth = 3,
4250    ErrLoad = 4,
4251}
4252
4253#[cfg(feature = "all-types")]
4254impl XdrCodec for ErrorCode {
4255    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4256        let value = *self as i32;
4257        value.to_xdr_buffered(write_stream);
4258    }
4259
4260    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4261        let enum_value = i32::from_xdr_buffered(read_stream)?;
4262        match enum_value {
4263            0 => Ok(ErrorCode::ErrMisc),
4264            1 => Ok(ErrorCode::ErrData),
4265            2 => Ok(ErrorCode::ErrConf),
4266            3 => Ok(ErrorCode::ErrAuth),
4267            4 => Ok(ErrorCode::ErrLoad),
4268            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
4269        }
4270    }
4271}
4272
4273#[allow(dead_code)]
4275#[cfg(feature = "all-types")]
4276#[derive(Debug, Clone, Eq, PartialEq)]
4277pub struct Error {
4278    pub code: ErrorCode,
4279    pub msg: LimitedString<100>,
4280}
4281
4282#[cfg(feature = "all-types")]
4283impl XdrCodec for Error {
4284    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4285        self.code.to_xdr_buffered(write_stream);
4286        self.msg.to_xdr_buffered(write_stream);
4287    }
4288
4289    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4290        Ok(Error {
4291            code: ErrorCode::from_xdr_buffered(read_stream)?,
4292            msg: LimitedString::<100>::from_xdr_buffered(read_stream)?,
4293        })
4294    }
4295}
4296
4297#[allow(dead_code)]
4299#[cfg(feature = "all-types")]
4300#[derive(Debug, Clone, Eq, PartialEq)]
4301pub struct SendMore {
4302    pub num_messages: Uint32,
4303}
4304
4305#[cfg(feature = "all-types")]
4306impl XdrCodec for SendMore {
4307    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4308        self.num_messages.to_xdr_buffered(write_stream);
4309    }
4310
4311    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4312        Ok(SendMore { num_messages: Uint32::from_xdr_buffered(read_stream)? })
4313    }
4314}
4315
4316#[allow(dead_code)]
4318#[cfg(feature = "all-types")]
4319#[derive(Debug, Clone, Eq, PartialEq)]
4320pub struct SendMoreExtended {
4321    pub num_messages: Uint32,
4322    pub num_bytes: Uint32,
4323}
4324
4325#[cfg(feature = "all-types")]
4326impl XdrCodec for SendMoreExtended {
4327    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4328        self.num_messages.to_xdr_buffered(write_stream);
4329        self.num_bytes.to_xdr_buffered(write_stream);
4330    }
4331
4332    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4333        Ok(SendMoreExtended {
4334            num_messages: Uint32::from_xdr_buffered(read_stream)?,
4335            num_bytes: Uint32::from_xdr_buffered(read_stream)?,
4336        })
4337    }
4338}
4339
4340#[allow(dead_code)]
4342#[cfg(feature = "all-types")]
4343#[derive(Debug, Clone, Eq, PartialEq)]
4344pub struct AuthCert {
4345    pub pubkey: Curve25519Public,
4346    pub expiration: Uint64,
4347    pub sig: Signature,
4348}
4349
4350#[cfg(feature = "all-types")]
4351impl XdrCodec for AuthCert {
4352    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4353        self.pubkey.to_xdr_buffered(write_stream);
4354        self.expiration.to_xdr_buffered(write_stream);
4355        self.sig.to_xdr_buffered(write_stream);
4356    }
4357
4358    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4359        Ok(AuthCert {
4360            pubkey: Curve25519Public::from_xdr_buffered(read_stream)?,
4361            expiration: Uint64::from_xdr_buffered(read_stream)?,
4362            sig: Signature::from_xdr_buffered(read_stream)?,
4363        })
4364    }
4365}
4366
4367#[allow(dead_code)]
4369#[cfg(feature = "all-types")]
4370#[derive(Debug, Clone, Eq, PartialEq)]
4371pub struct Hello {
4372    pub ledger_version: Uint32,
4373    pub overlay_version: Uint32,
4374    pub overlay_min_version: Uint32,
4375    pub network_id: Hash,
4376    pub version_str: LimitedString<100>,
4377    pub listening_port: i32,
4378    pub peer_id: NodeId,
4379    pub cert: AuthCert,
4380    pub nonce: Uint256,
4381}
4382
4383#[cfg(feature = "all-types")]
4384impl XdrCodec for Hello {
4385    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4386        self.ledger_version.to_xdr_buffered(write_stream);
4387        self.overlay_version.to_xdr_buffered(write_stream);
4388        self.overlay_min_version.to_xdr_buffered(write_stream);
4389        self.network_id.to_xdr_buffered(write_stream);
4390        self.version_str.to_xdr_buffered(write_stream);
4391        self.listening_port.to_xdr_buffered(write_stream);
4392        self.peer_id.to_xdr_buffered(write_stream);
4393        self.cert.to_xdr_buffered(write_stream);
4394        self.nonce.to_xdr_buffered(write_stream);
4395    }
4396
4397    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4398        Ok(Hello {
4399            ledger_version: Uint32::from_xdr_buffered(read_stream)?,
4400            overlay_version: Uint32::from_xdr_buffered(read_stream)?,
4401            overlay_min_version: Uint32::from_xdr_buffered(read_stream)?,
4402            network_id: Hash::from_xdr_buffered(read_stream)?,
4403            version_str: LimitedString::<100>::from_xdr_buffered(read_stream)?,
4404            listening_port: i32::from_xdr_buffered(read_stream)?,
4405            peer_id: NodeId::from_xdr_buffered(read_stream)?,
4406            cert: AuthCert::from_xdr_buffered(read_stream)?,
4407            nonce: Uint256::from_xdr_buffered(read_stream)?,
4408        })
4409    }
4410}
4411
4412#[allow(dead_code)]
4414#[cfg(feature = "all-types")]
4415#[derive(Debug, Clone, Eq, PartialEq)]
4416pub struct Auth {
4417    pub flags: i32,
4418}
4419
4420#[cfg(feature = "all-types")]
4421impl XdrCodec for Auth {
4422    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4423        self.flags.to_xdr_buffered(write_stream);
4424    }
4425
4426    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4427        Ok(Auth { flags: i32::from_xdr_buffered(read_stream)? })
4428    }
4429}
4430
4431#[allow(dead_code)]
4433#[cfg(feature = "all-types")]
4434#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4435pub enum IpAddrType {
4436    IPv4 = 0,
4437    IPv6 = 1,
4438}
4439
4440#[cfg(feature = "all-types")]
4441impl XdrCodec for IpAddrType {
4442    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4443        let value = *self as i32;
4444        value.to_xdr_buffered(write_stream);
4445    }
4446
4447    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4448        let enum_value = i32::from_xdr_buffered(read_stream)?;
4449        match enum_value {
4450            0 => Ok(IpAddrType::IPv4),
4451            1 => Ok(IpAddrType::IPv6),
4452            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
4453        }
4454    }
4455}
4456
4457#[allow(dead_code)]
4459#[cfg(feature = "all-types")]
4460#[derive(Debug, Clone, Eq, PartialEq)]
4461pub struct PeerAddress {
4462    pub ip: PeerAddressIp,
4463    pub port: Uint32,
4464    pub num_failures: Uint32,
4465}
4466
4467#[cfg(feature = "all-types")]
4468impl XdrCodec for PeerAddress {
4469    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4470        self.ip.to_xdr_buffered(write_stream);
4471        self.port.to_xdr_buffered(write_stream);
4472        self.num_failures.to_xdr_buffered(write_stream);
4473    }
4474
4475    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4476        Ok(PeerAddress {
4477            ip: PeerAddressIp::from_xdr_buffered(read_stream)?,
4478            port: Uint32::from_xdr_buffered(read_stream)?,
4479            num_failures: Uint32::from_xdr_buffered(read_stream)?,
4480        })
4481    }
4482}
4483
4484#[allow(dead_code)]
4486#[cfg(feature = "all-types")]
4487#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4488pub enum MessageType {
4489    ErrorMsg = 0,
4490    Auth = 2,
4491    DontHave = 3,
4492    GetPeers = 4,
4493    Peers = 5,
4494    GetTxSet = 6,
4495    TxSet = 7,
4496    GeneralizedTxSet = 17,
4497    Transaction = 8,
4498    GetScpQuorumset = 9,
4499    ScpQuorumset = 10,
4500    ScpMessage = 11,
4501    GetScpState = 12,
4502    Hello = 13,
4503    SurveyRequest = 14,
4504    SurveyResponse = 15,
4505    SendMore = 16,
4506    SendMoreExtended = 20,
4507    FloodAdvert = 18,
4508    FloodDemand = 19,
4509    TimeSlicedSurveyRequest = 21,
4510    TimeSlicedSurveyResponse = 22,
4511    TimeSlicedSurveyStartCollecting = 23,
4512    TimeSlicedSurveyStopCollecting = 24,
4513}
4514
4515#[cfg(feature = "all-types")]
4516impl XdrCodec for MessageType {
4517    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4518        let value = *self as i32;
4519        value.to_xdr_buffered(write_stream);
4520    }
4521
4522    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4523        let enum_value = i32::from_xdr_buffered(read_stream)?;
4524        match enum_value {
4525            0 => Ok(MessageType::ErrorMsg),
4526            2 => Ok(MessageType::Auth),
4527            3 => Ok(MessageType::DontHave),
4528            4 => Ok(MessageType::GetPeers),
4529            5 => Ok(MessageType::Peers),
4530            6 => Ok(MessageType::GetTxSet),
4531            7 => Ok(MessageType::TxSet),
4532            17 => Ok(MessageType::GeneralizedTxSet),
4533            8 => Ok(MessageType::Transaction),
4534            9 => Ok(MessageType::GetScpQuorumset),
4535            10 => Ok(MessageType::ScpQuorumset),
4536            11 => Ok(MessageType::ScpMessage),
4537            12 => Ok(MessageType::GetScpState),
4538            13 => Ok(MessageType::Hello),
4539            14 => Ok(MessageType::SurveyRequest),
4540            15 => Ok(MessageType::SurveyResponse),
4541            16 => Ok(MessageType::SendMore),
4542            20 => Ok(MessageType::SendMoreExtended),
4543            18 => Ok(MessageType::FloodAdvert),
4544            19 => Ok(MessageType::FloodDemand),
4545            21 => Ok(MessageType::TimeSlicedSurveyRequest),
4546            22 => Ok(MessageType::TimeSlicedSurveyResponse),
4547            23 => Ok(MessageType::TimeSlicedSurveyStartCollecting),
4548            24 => Ok(MessageType::TimeSlicedSurveyStopCollecting),
4549            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
4550        }
4551    }
4552}
4553
4554#[allow(dead_code)]
4556#[cfg(feature = "all-types")]
4557#[derive(Debug, Clone, Eq, PartialEq)]
4558pub struct DontHave {
4559    pub type_: MessageType,
4560    pub req_hash: Uint256,
4561}
4562
4563#[cfg(feature = "all-types")]
4564impl XdrCodec for DontHave {
4565    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4566        self.type_.to_xdr_buffered(write_stream);
4567        self.req_hash.to_xdr_buffered(write_stream);
4568    }
4569
4570    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4571        Ok(DontHave {
4572            type_: MessageType::from_xdr_buffered(read_stream)?,
4573            req_hash: Uint256::from_xdr_buffered(read_stream)?,
4574        })
4575    }
4576}
4577
4578#[allow(dead_code)]
4580#[cfg(feature = "all-types")]
4581#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4582pub enum SurveyMessageCommandType {
4583    SurveyTopology = 0,
4584    TimeSlicedSurveyTopology = 1,
4585}
4586
4587#[cfg(feature = "all-types")]
4588impl XdrCodec for SurveyMessageCommandType {
4589    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4590        let value = *self as i32;
4591        value.to_xdr_buffered(write_stream);
4592    }
4593
4594    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4595        let enum_value = i32::from_xdr_buffered(read_stream)?;
4596        match enum_value {
4597            0 => Ok(SurveyMessageCommandType::SurveyTopology),
4598            1 => Ok(SurveyMessageCommandType::TimeSlicedSurveyTopology),
4599            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
4600        }
4601    }
4602}
4603
4604#[allow(dead_code)]
4606#[cfg(feature = "all-types")]
4607#[derive(Debug, Copy, Clone, Eq, PartialEq)]
4608pub enum SurveyMessageResponseType {
4609    SurveyTopologyResponseV0 = 0,
4610    SurveyTopologyResponseV1 = 1,
4611    SurveyTopologyResponseV2 = 2,
4612}
4613
4614#[cfg(feature = "all-types")]
4615impl XdrCodec for SurveyMessageResponseType {
4616    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4617        let value = *self as i32;
4618        value.to_xdr_buffered(write_stream);
4619    }
4620
4621    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4622        let enum_value = i32::from_xdr_buffered(read_stream)?;
4623        match enum_value {
4624            0 => Ok(SurveyMessageResponseType::SurveyTopologyResponseV0),
4625            1 => Ok(SurveyMessageResponseType::SurveyTopologyResponseV1),
4626            2 => Ok(SurveyMessageResponseType::SurveyTopologyResponseV2),
4627            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
4628        }
4629    }
4630}
4631
4632#[allow(dead_code)]
4634#[cfg(feature = "all-types")]
4635#[derive(Debug, Clone, Eq, PartialEq)]
4636pub struct TimeSlicedSurveyStartCollectingMessage {
4637    pub surveyor_id: NodeId,
4638    pub nonce: Uint32,
4639    pub ledger_num: Uint32,
4640}
4641
4642#[cfg(feature = "all-types")]
4643impl XdrCodec for TimeSlicedSurveyStartCollectingMessage {
4644    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4645        self.surveyor_id.to_xdr_buffered(write_stream);
4646        self.nonce.to_xdr_buffered(write_stream);
4647        self.ledger_num.to_xdr_buffered(write_stream);
4648    }
4649
4650    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4651        Ok(TimeSlicedSurveyStartCollectingMessage {
4652            surveyor_id: NodeId::from_xdr_buffered(read_stream)?,
4653            nonce: Uint32::from_xdr_buffered(read_stream)?,
4654            ledger_num: Uint32::from_xdr_buffered(read_stream)?,
4655        })
4656    }
4657}
4658
4659#[allow(dead_code)]
4661#[cfg(feature = "all-types")]
4662#[derive(Debug, Clone, Eq, PartialEq)]
4663pub struct SignedTimeSlicedSurveyStartCollectingMessage {
4664    pub signature: Signature,
4665    pub start_collecting: TimeSlicedSurveyStartCollectingMessage,
4666}
4667
4668#[cfg(feature = "all-types")]
4669impl XdrCodec for SignedTimeSlicedSurveyStartCollectingMessage {
4670    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4671        self.signature.to_xdr_buffered(write_stream);
4672        self.start_collecting.to_xdr_buffered(write_stream);
4673    }
4674
4675    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4676        Ok(SignedTimeSlicedSurveyStartCollectingMessage {
4677            signature: Signature::from_xdr_buffered(read_stream)?,
4678            start_collecting: TimeSlicedSurveyStartCollectingMessage::from_xdr_buffered(read_stream)?,
4679        })
4680    }
4681}
4682
4683#[allow(dead_code)]
4685#[cfg(feature = "all-types")]
4686#[derive(Debug, Clone, Eq, PartialEq)]
4687pub struct TimeSlicedSurveyStopCollectingMessage {
4688    pub surveyor_id: NodeId,
4689    pub nonce: Uint32,
4690    pub ledger_num: Uint32,
4691}
4692
4693#[cfg(feature = "all-types")]
4694impl XdrCodec for TimeSlicedSurveyStopCollectingMessage {
4695    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4696        self.surveyor_id.to_xdr_buffered(write_stream);
4697        self.nonce.to_xdr_buffered(write_stream);
4698        self.ledger_num.to_xdr_buffered(write_stream);
4699    }
4700
4701    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4702        Ok(TimeSlicedSurveyStopCollectingMessage {
4703            surveyor_id: NodeId::from_xdr_buffered(read_stream)?,
4704            nonce: Uint32::from_xdr_buffered(read_stream)?,
4705            ledger_num: Uint32::from_xdr_buffered(read_stream)?,
4706        })
4707    }
4708}
4709
4710#[allow(dead_code)]
4712#[cfg(feature = "all-types")]
4713#[derive(Debug, Clone, Eq, PartialEq)]
4714pub struct SignedTimeSlicedSurveyStopCollectingMessage {
4715    pub signature: Signature,
4716    pub stop_collecting: TimeSlicedSurveyStopCollectingMessage,
4717}
4718
4719#[cfg(feature = "all-types")]
4720impl XdrCodec for SignedTimeSlicedSurveyStopCollectingMessage {
4721    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4722        self.signature.to_xdr_buffered(write_stream);
4723        self.stop_collecting.to_xdr_buffered(write_stream);
4724    }
4725
4726    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4727        Ok(SignedTimeSlicedSurveyStopCollectingMessage {
4728            signature: Signature::from_xdr_buffered(read_stream)?,
4729            stop_collecting: TimeSlicedSurveyStopCollectingMessage::from_xdr_buffered(read_stream)?,
4730        })
4731    }
4732}
4733
4734#[allow(dead_code)]
4736#[cfg(feature = "all-types")]
4737#[derive(Debug, Clone, Eq, PartialEq)]
4738pub struct SurveyRequestMessage {
4739    pub surveyor_peer_id: NodeId,
4740    pub surveyed_peer_id: NodeId,
4741    pub ledger_num: Uint32,
4742    pub encryption_key: Curve25519Public,
4743    pub command_type: SurveyMessageCommandType,
4744}
4745
4746#[cfg(feature = "all-types")]
4747impl XdrCodec for SurveyRequestMessage {
4748    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4749        self.surveyor_peer_id.to_xdr_buffered(write_stream);
4750        self.surveyed_peer_id.to_xdr_buffered(write_stream);
4751        self.ledger_num.to_xdr_buffered(write_stream);
4752        self.encryption_key.to_xdr_buffered(write_stream);
4753        self.command_type.to_xdr_buffered(write_stream);
4754    }
4755
4756    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4757        Ok(SurveyRequestMessage {
4758            surveyor_peer_id: NodeId::from_xdr_buffered(read_stream)?,
4759            surveyed_peer_id: NodeId::from_xdr_buffered(read_stream)?,
4760            ledger_num: Uint32::from_xdr_buffered(read_stream)?,
4761            encryption_key: Curve25519Public::from_xdr_buffered(read_stream)?,
4762            command_type: SurveyMessageCommandType::from_xdr_buffered(read_stream)?,
4763        })
4764    }
4765}
4766
4767#[allow(dead_code)]
4769#[cfg(feature = "all-types")]
4770#[derive(Debug, Clone, Eq, PartialEq)]
4771pub struct TimeSlicedSurveyRequestMessage {
4772    pub request: SurveyRequestMessage,
4773    pub nonce: Uint32,
4774    pub inbound_peers_index: Uint32,
4775    pub outbound_peers_index: Uint32,
4776}
4777
4778#[cfg(feature = "all-types")]
4779impl XdrCodec for TimeSlicedSurveyRequestMessage {
4780    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4781        self.request.to_xdr_buffered(write_stream);
4782        self.nonce.to_xdr_buffered(write_stream);
4783        self.inbound_peers_index.to_xdr_buffered(write_stream);
4784        self.outbound_peers_index.to_xdr_buffered(write_stream);
4785    }
4786
4787    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4788        Ok(TimeSlicedSurveyRequestMessage {
4789            request: SurveyRequestMessage::from_xdr_buffered(read_stream)?,
4790            nonce: Uint32::from_xdr_buffered(read_stream)?,
4791            inbound_peers_index: Uint32::from_xdr_buffered(read_stream)?,
4792            outbound_peers_index: Uint32::from_xdr_buffered(read_stream)?,
4793        })
4794    }
4795}
4796
4797#[allow(dead_code)]
4799#[cfg(feature = "all-types")]
4800#[derive(Debug, Clone, Eq, PartialEq)]
4801pub struct SignedSurveyRequestMessage {
4802    pub request_signature: Signature,
4803    pub request: SurveyRequestMessage,
4804}
4805
4806#[cfg(feature = "all-types")]
4807impl XdrCodec for SignedSurveyRequestMessage {
4808    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4809        self.request_signature.to_xdr_buffered(write_stream);
4810        self.request.to_xdr_buffered(write_stream);
4811    }
4812
4813    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4814        Ok(SignedSurveyRequestMessage {
4815            request_signature: Signature::from_xdr_buffered(read_stream)?,
4816            request: SurveyRequestMessage::from_xdr_buffered(read_stream)?,
4817        })
4818    }
4819}
4820
4821#[allow(dead_code)]
4823#[cfg(feature = "all-types")]
4824#[derive(Debug, Clone, Eq, PartialEq)]
4825pub struct SignedTimeSlicedSurveyRequestMessage {
4826    pub request_signature: Signature,
4827    pub request: TimeSlicedSurveyRequestMessage,
4828}
4829
4830#[cfg(feature = "all-types")]
4831impl XdrCodec for SignedTimeSlicedSurveyRequestMessage {
4832    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4833        self.request_signature.to_xdr_buffered(write_stream);
4834        self.request.to_xdr_buffered(write_stream);
4835    }
4836
4837    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4838        Ok(SignedTimeSlicedSurveyRequestMessage {
4839            request_signature: Signature::from_xdr_buffered(read_stream)?,
4840            request: TimeSlicedSurveyRequestMessage::from_xdr_buffered(read_stream)?,
4841        })
4842    }
4843}
4844
4845#[allow(dead_code)]
4847#[cfg(feature = "all-types")]
4848pub type EncryptedBody = LimitedVarOpaque<64000>;
4849
4850#[allow(dead_code)]
4852#[cfg(feature = "all-types")]
4853#[derive(Debug, Clone, Eq, PartialEq)]
4854pub struct SurveyResponseMessage {
4855    pub surveyor_peer_id: NodeId,
4856    pub surveyed_peer_id: NodeId,
4857    pub ledger_num: Uint32,
4858    pub command_type: SurveyMessageCommandType,
4859    pub encrypted_body: EncryptedBody,
4860}
4861
4862#[cfg(feature = "all-types")]
4863impl XdrCodec for SurveyResponseMessage {
4864    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4865        self.surveyor_peer_id.to_xdr_buffered(write_stream);
4866        self.surveyed_peer_id.to_xdr_buffered(write_stream);
4867        self.ledger_num.to_xdr_buffered(write_stream);
4868        self.command_type.to_xdr_buffered(write_stream);
4869        self.encrypted_body.to_xdr_buffered(write_stream);
4870    }
4871
4872    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4873        Ok(SurveyResponseMessage {
4874            surveyor_peer_id: NodeId::from_xdr_buffered(read_stream)?,
4875            surveyed_peer_id: NodeId::from_xdr_buffered(read_stream)?,
4876            ledger_num: Uint32::from_xdr_buffered(read_stream)?,
4877            command_type: SurveyMessageCommandType::from_xdr_buffered(read_stream)?,
4878            encrypted_body: EncryptedBody::from_xdr_buffered(read_stream)?,
4879        })
4880    }
4881}
4882
4883#[allow(dead_code)]
4885#[cfg(feature = "all-types")]
4886#[derive(Debug, Clone, Eq, PartialEq)]
4887pub struct TimeSlicedSurveyResponseMessage {
4888    pub response: SurveyResponseMessage,
4889    pub nonce: Uint32,
4890}
4891
4892#[cfg(feature = "all-types")]
4893impl XdrCodec for TimeSlicedSurveyResponseMessage {
4894    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4895        self.response.to_xdr_buffered(write_stream);
4896        self.nonce.to_xdr_buffered(write_stream);
4897    }
4898
4899    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4900        Ok(TimeSlicedSurveyResponseMessage {
4901            response: SurveyResponseMessage::from_xdr_buffered(read_stream)?,
4902            nonce: Uint32::from_xdr_buffered(read_stream)?,
4903        })
4904    }
4905}
4906
4907#[allow(dead_code)]
4909#[cfg(feature = "all-types")]
4910#[derive(Debug, Clone, Eq, PartialEq)]
4911pub struct SignedSurveyResponseMessage {
4912    pub response_signature: Signature,
4913    pub response: SurveyResponseMessage,
4914}
4915
4916#[cfg(feature = "all-types")]
4917impl XdrCodec for SignedSurveyResponseMessage {
4918    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4919        self.response_signature.to_xdr_buffered(write_stream);
4920        self.response.to_xdr_buffered(write_stream);
4921    }
4922
4923    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4924        Ok(SignedSurveyResponseMessage {
4925            response_signature: Signature::from_xdr_buffered(read_stream)?,
4926            response: SurveyResponseMessage::from_xdr_buffered(read_stream)?,
4927        })
4928    }
4929}
4930
4931#[allow(dead_code)]
4933#[cfg(feature = "all-types")]
4934#[derive(Debug, Clone, Eq, PartialEq)]
4935pub struct SignedTimeSlicedSurveyResponseMessage {
4936    pub response_signature: Signature,
4937    pub response: TimeSlicedSurveyResponseMessage,
4938}
4939
4940#[cfg(feature = "all-types")]
4941impl XdrCodec for SignedTimeSlicedSurveyResponseMessage {
4942    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4943        self.response_signature.to_xdr_buffered(write_stream);
4944        self.response.to_xdr_buffered(write_stream);
4945    }
4946
4947    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4948        Ok(SignedTimeSlicedSurveyResponseMessage {
4949            response_signature: Signature::from_xdr_buffered(read_stream)?,
4950            response: TimeSlicedSurveyResponseMessage::from_xdr_buffered(read_stream)?,
4951        })
4952    }
4953}
4954
4955#[allow(dead_code)]
4957#[cfg(feature = "all-types")]
4958#[derive(Debug, Clone, Eq, PartialEq)]
4959pub struct PeerStats {
4960    pub id: NodeId,
4961    pub version_str: LimitedString<100>,
4962    pub messages_read: Uint64,
4963    pub messages_written: Uint64,
4964    pub bytes_read: Uint64,
4965    pub bytes_written: Uint64,
4966    pub seconds_connected: Uint64,
4967    pub unique_flood_bytes_recv: Uint64,
4968    pub duplicate_flood_bytes_recv: Uint64,
4969    pub unique_fetch_bytes_recv: Uint64,
4970    pub duplicate_fetch_bytes_recv: Uint64,
4971    pub unique_flood_message_recv: Uint64,
4972    pub duplicate_flood_message_recv: Uint64,
4973    pub unique_fetch_message_recv: Uint64,
4974    pub duplicate_fetch_message_recv: Uint64,
4975}
4976
4977#[cfg(feature = "all-types")]
4978impl XdrCodec for PeerStats {
4979    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
4980        self.id.to_xdr_buffered(write_stream);
4981        self.version_str.to_xdr_buffered(write_stream);
4982        self.messages_read.to_xdr_buffered(write_stream);
4983        self.messages_written.to_xdr_buffered(write_stream);
4984        self.bytes_read.to_xdr_buffered(write_stream);
4985        self.bytes_written.to_xdr_buffered(write_stream);
4986        self.seconds_connected.to_xdr_buffered(write_stream);
4987        self.unique_flood_bytes_recv.to_xdr_buffered(write_stream);
4988        self.duplicate_flood_bytes_recv.to_xdr_buffered(write_stream);
4989        self.unique_fetch_bytes_recv.to_xdr_buffered(write_stream);
4990        self.duplicate_fetch_bytes_recv.to_xdr_buffered(write_stream);
4991        self.unique_flood_message_recv.to_xdr_buffered(write_stream);
4992        self.duplicate_flood_message_recv.to_xdr_buffered(write_stream);
4993        self.unique_fetch_message_recv.to_xdr_buffered(write_stream);
4994        self.duplicate_fetch_message_recv.to_xdr_buffered(write_stream);
4995    }
4996
4997    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
4998        Ok(PeerStats {
4999            id: NodeId::from_xdr_buffered(read_stream)?,
5000            version_str: LimitedString::<100>::from_xdr_buffered(read_stream)?,
5001            messages_read: Uint64::from_xdr_buffered(read_stream)?,
5002            messages_written: Uint64::from_xdr_buffered(read_stream)?,
5003            bytes_read: Uint64::from_xdr_buffered(read_stream)?,
5004            bytes_written: Uint64::from_xdr_buffered(read_stream)?,
5005            seconds_connected: Uint64::from_xdr_buffered(read_stream)?,
5006            unique_flood_bytes_recv: Uint64::from_xdr_buffered(read_stream)?,
5007            duplicate_flood_bytes_recv: Uint64::from_xdr_buffered(read_stream)?,
5008            unique_fetch_bytes_recv: Uint64::from_xdr_buffered(read_stream)?,
5009            duplicate_fetch_bytes_recv: Uint64::from_xdr_buffered(read_stream)?,
5010            unique_flood_message_recv: Uint64::from_xdr_buffered(read_stream)?,
5011            duplicate_flood_message_recv: Uint64::from_xdr_buffered(read_stream)?,
5012            unique_fetch_message_recv: Uint64::from_xdr_buffered(read_stream)?,
5013            duplicate_fetch_message_recv: Uint64::from_xdr_buffered(read_stream)?,
5014        })
5015    }
5016}
5017
5018#[allow(dead_code)]
5020#[cfg(feature = "all-types")]
5021pub type PeerStatList = LimitedVarArray<PeerStats, 25>;
5022
5023#[allow(dead_code)]
5025#[cfg(feature = "all-types")]
5026#[derive(Debug, Clone, Eq, PartialEq)]
5027pub struct TimeSlicedNodeData {
5028    pub added_authenticated_peers: Uint32,
5029    pub dropped_authenticated_peers: Uint32,
5030    pub total_inbound_peer_count: Uint32,
5031    pub total_outbound_peer_count: Uint32,
5032    pub p75_scp_first_to_self_latency_ns: Uint32,
5033    pub p75_scp_self_to_other_latency_ns: Uint32,
5034    pub lost_sync_count: Uint32,
5035    pub is_validator: bool,
5036    pub max_inbound_peer_count: Uint32,
5037    pub max_outbound_peer_count: Uint32,
5038}
5039
5040#[cfg(feature = "all-types")]
5041impl XdrCodec for TimeSlicedNodeData {
5042    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5043        self.added_authenticated_peers.to_xdr_buffered(write_stream);
5044        self.dropped_authenticated_peers.to_xdr_buffered(write_stream);
5045        self.total_inbound_peer_count.to_xdr_buffered(write_stream);
5046        self.total_outbound_peer_count.to_xdr_buffered(write_stream);
5047        self.p75_scp_first_to_self_latency_ns.to_xdr_buffered(write_stream);
5048        self.p75_scp_self_to_other_latency_ns.to_xdr_buffered(write_stream);
5049        self.lost_sync_count.to_xdr_buffered(write_stream);
5050        self.is_validator.to_xdr_buffered(write_stream);
5051        self.max_inbound_peer_count.to_xdr_buffered(write_stream);
5052        self.max_outbound_peer_count.to_xdr_buffered(write_stream);
5053    }
5054
5055    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5056        Ok(TimeSlicedNodeData {
5057            added_authenticated_peers: Uint32::from_xdr_buffered(read_stream)?,
5058            dropped_authenticated_peers: Uint32::from_xdr_buffered(read_stream)?,
5059            total_inbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5060            total_outbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5061            p75_scp_first_to_self_latency_ns: Uint32::from_xdr_buffered(read_stream)?,
5062            p75_scp_self_to_other_latency_ns: Uint32::from_xdr_buffered(read_stream)?,
5063            lost_sync_count: Uint32::from_xdr_buffered(read_stream)?,
5064            is_validator: bool::from_xdr_buffered(read_stream)?,
5065            max_inbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5066            max_outbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5067        })
5068    }
5069}
5070
5071#[allow(dead_code)]
5073#[cfg(feature = "all-types")]
5074#[derive(Debug, Clone, Eq, PartialEq)]
5075pub struct TimeSlicedPeerData {
5076    pub peer_stats: PeerStats,
5077    pub average_latency_ms: Uint32,
5078}
5079
5080#[cfg(feature = "all-types")]
5081impl XdrCodec for TimeSlicedPeerData {
5082    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5083        self.peer_stats.to_xdr_buffered(write_stream);
5084        self.average_latency_ms.to_xdr_buffered(write_stream);
5085    }
5086
5087    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5088        Ok(TimeSlicedPeerData {
5089            peer_stats: PeerStats::from_xdr_buffered(read_stream)?,
5090            average_latency_ms: Uint32::from_xdr_buffered(read_stream)?,
5091        })
5092    }
5093}
5094
5095#[allow(dead_code)]
5097#[cfg(feature = "all-types")]
5098pub type TimeSlicedPeerDataList = LimitedVarArray<TimeSlicedPeerData, 25>;
5099
5100#[allow(dead_code)]
5102#[cfg(feature = "all-types")]
5103#[derive(Debug, Clone, Eq, PartialEq)]
5104pub struct TopologyResponseBodyV0 {
5105    pub inbound_peers: PeerStatList,
5106    pub outbound_peers: PeerStatList,
5107    pub total_inbound_peer_count: Uint32,
5108    pub total_outbound_peer_count: Uint32,
5109}
5110
5111#[cfg(feature = "all-types")]
5112impl XdrCodec for TopologyResponseBodyV0 {
5113    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5114        self.inbound_peers.to_xdr_buffered(write_stream);
5115        self.outbound_peers.to_xdr_buffered(write_stream);
5116        self.total_inbound_peer_count.to_xdr_buffered(write_stream);
5117        self.total_outbound_peer_count.to_xdr_buffered(write_stream);
5118    }
5119
5120    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5121        Ok(TopologyResponseBodyV0 {
5122            inbound_peers: PeerStatList::from_xdr_buffered(read_stream)?,
5123            outbound_peers: PeerStatList::from_xdr_buffered(read_stream)?,
5124            total_inbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5125            total_outbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5126        })
5127    }
5128}
5129
5130#[allow(dead_code)]
5132#[cfg(feature = "all-types")]
5133#[derive(Debug, Clone, Eq, PartialEq)]
5134pub struct TopologyResponseBodyV1 {
5135    pub inbound_peers: PeerStatList,
5136    pub outbound_peers: PeerStatList,
5137    pub total_inbound_peer_count: Uint32,
5138    pub total_outbound_peer_count: Uint32,
5139    pub max_inbound_peer_count: Uint32,
5140    pub max_outbound_peer_count: Uint32,
5141}
5142
5143#[cfg(feature = "all-types")]
5144impl XdrCodec for TopologyResponseBodyV1 {
5145    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5146        self.inbound_peers.to_xdr_buffered(write_stream);
5147        self.outbound_peers.to_xdr_buffered(write_stream);
5148        self.total_inbound_peer_count.to_xdr_buffered(write_stream);
5149        self.total_outbound_peer_count.to_xdr_buffered(write_stream);
5150        self.max_inbound_peer_count.to_xdr_buffered(write_stream);
5151        self.max_outbound_peer_count.to_xdr_buffered(write_stream);
5152    }
5153
5154    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5155        Ok(TopologyResponseBodyV1 {
5156            inbound_peers: PeerStatList::from_xdr_buffered(read_stream)?,
5157            outbound_peers: PeerStatList::from_xdr_buffered(read_stream)?,
5158            total_inbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5159            total_outbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5160            max_inbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5161            max_outbound_peer_count: Uint32::from_xdr_buffered(read_stream)?,
5162        })
5163    }
5164}
5165
5166#[allow(dead_code)]
5168#[cfg(feature = "all-types")]
5169#[derive(Debug, Clone, Eq, PartialEq)]
5170pub struct TopologyResponseBodyV2 {
5171    pub inbound_peers: TimeSlicedPeerDataList,
5172    pub outbound_peers: TimeSlicedPeerDataList,
5173    pub node_data: TimeSlicedNodeData,
5174}
5175
5176#[cfg(feature = "all-types")]
5177impl XdrCodec for TopologyResponseBodyV2 {
5178    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5179        self.inbound_peers.to_xdr_buffered(write_stream);
5180        self.outbound_peers.to_xdr_buffered(write_stream);
5181        self.node_data.to_xdr_buffered(write_stream);
5182    }
5183
5184    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5185        Ok(TopologyResponseBodyV2 {
5186            inbound_peers: TimeSlicedPeerDataList::from_xdr_buffered(read_stream)?,
5187            outbound_peers: TimeSlicedPeerDataList::from_xdr_buffered(read_stream)?,
5188            node_data: TimeSlicedNodeData::from_xdr_buffered(read_stream)?,
5189        })
5190    }
5191}
5192
5193#[allow(dead_code)]
5195#[cfg(feature = "all-types")]
5196pub type TxAdvertVector = LimitedVarArray<Hash, TX_ADVERT_VECTOR_MAX_SIZE>;
5197
5198#[allow(dead_code)]
5200#[cfg(feature = "all-types")]
5201#[derive(Debug, Clone, Eq, PartialEq)]
5202pub struct FloodAdvert {
5203    pub tx_hashes: TxAdvertVector,
5204}
5205
5206#[cfg(feature = "all-types")]
5207impl XdrCodec for FloodAdvert {
5208    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5209        self.tx_hashes.to_xdr_buffered(write_stream);
5210    }
5211
5212    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5213        Ok(FloodAdvert { tx_hashes: TxAdvertVector::from_xdr_buffered(read_stream)? })
5214    }
5215}
5216
5217#[allow(dead_code)]
5219#[cfg(feature = "all-types")]
5220pub type TxDemandVector = LimitedVarArray<Hash, TX_DEMAND_VECTOR_MAX_SIZE>;
5221
5222#[allow(dead_code)]
5224#[cfg(feature = "all-types")]
5225#[derive(Debug, Clone, Eq, PartialEq)]
5226pub struct FloodDemand {
5227    pub tx_hashes: TxDemandVector,
5228}
5229
5230#[cfg(feature = "all-types")]
5231impl XdrCodec for FloodDemand {
5232    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5233        self.tx_hashes.to_xdr_buffered(write_stream);
5234    }
5235
5236    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5237        Ok(FloodDemand { tx_hashes: TxDemandVector::from_xdr_buffered(read_stream)? })
5238    }
5239}
5240
5241#[allow(dead_code)]
5243#[cfg(feature = "all-types")]
5244#[derive(Debug, Clone, Eq, PartialEq)]
5245pub struct AuthenticatedMessageV0 {
5246    pub sequence: Uint64,
5247    pub message: StellarMessage,
5248    pub mac: HmacSha256Mac,
5249}
5250
5251#[cfg(feature = "all-types")]
5252impl XdrCodec for AuthenticatedMessageV0 {
5253    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5254        self.sequence.to_xdr_buffered(write_stream);
5255        self.message.to_xdr_buffered(write_stream);
5256        self.mac.to_xdr_buffered(write_stream);
5257    }
5258
5259    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5260        Ok(AuthenticatedMessageV0 {
5261            sequence: Uint64::from_xdr_buffered(read_stream)?,
5262            message: StellarMessage::from_xdr_buffered(read_stream)?,
5263            mac: HmacSha256Mac::from_xdr_buffered(read_stream)?,
5264        })
5265    }
5266}
5267
5268#[allow(dead_code)]
5270#[derive(Debug, Clone, Eq, PartialEq)]
5271pub struct MuxedAccountMed25519 {
5272    pub id: Uint64,
5273    pub ed25519: Uint256,
5274}
5275
5276impl XdrCodec for MuxedAccountMed25519 {
5277    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5278        self.id.to_xdr_buffered(write_stream);
5279        self.ed25519.to_xdr_buffered(write_stream);
5280    }
5281
5282    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5283        Ok(MuxedAccountMed25519 {
5284            id: Uint64::from_xdr_buffered(read_stream)?,
5285            ed25519: Uint256::from_xdr_buffered(read_stream)?,
5286        })
5287    }
5288}
5289
5290#[allow(dead_code)]
5292#[derive(Debug, Clone, Eq, PartialEq)]
5293pub struct DecoratedSignature {
5294    pub hint: SignatureHint,
5295    pub signature: Signature,
5296}
5297
5298impl XdrCodec for DecoratedSignature {
5299    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5300        self.hint.to_xdr_buffered(write_stream);
5301        self.signature.to_xdr_buffered(write_stream);
5302    }
5303
5304    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5305        Ok(DecoratedSignature {
5306            hint: SignatureHint::from_xdr_buffered(read_stream)?,
5307            signature: Signature::from_xdr_buffered(read_stream)?,
5308        })
5309    }
5310}
5311
5312#[allow(dead_code)]
5314#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5315pub enum OperationType {
5316    CreateAccount = 0,
5317    Payment = 1,
5318    PathPaymentStrictReceive = 2,
5319    ManageSellOffer = 3,
5320    CreatePassiveSellOffer = 4,
5321    SetOptions = 5,
5322    ChangeTrust = 6,
5323    AllowTrust = 7,
5324    AccountMerge = 8,
5325    Inflation = 9,
5326    ManageData = 10,
5327    BumpSequence = 11,
5328    ManageBuyOffer = 12,
5329    PathPaymentStrictSend = 13,
5330    CreateClaimableBalance = 14,
5331    ClaimClaimableBalance = 15,
5332    BeginSponsoringFutureReserves = 16,
5333    EndSponsoringFutureReserves = 17,
5334    RevokeSponsorship = 18,
5335    Clawback = 19,
5336    ClawbackClaimableBalance = 20,
5337    SetTrustLineFlags = 21,
5338    LiquidityPoolDeposit = 22,
5339    LiquidityPoolWithdraw = 23,
5340    InvokeHostFunction = 24,
5341    ExtendFootprintTtl = 25,
5342    RestoreFootprint = 26,
5343}
5344
5345impl XdrCodec for OperationType {
5346    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5347        let value = *self as i32;
5348        value.to_xdr_buffered(write_stream);
5349    }
5350
5351    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5352        let enum_value = i32::from_xdr_buffered(read_stream)?;
5353        match enum_value {
5354            0 => Ok(OperationType::CreateAccount),
5355            1 => Ok(OperationType::Payment),
5356            2 => Ok(OperationType::PathPaymentStrictReceive),
5357            3 => Ok(OperationType::ManageSellOffer),
5358            4 => Ok(OperationType::CreatePassiveSellOffer),
5359            5 => Ok(OperationType::SetOptions),
5360            6 => Ok(OperationType::ChangeTrust),
5361            7 => Ok(OperationType::AllowTrust),
5362            8 => Ok(OperationType::AccountMerge),
5363            9 => Ok(OperationType::Inflation),
5364            10 => Ok(OperationType::ManageData),
5365            11 => Ok(OperationType::BumpSequence),
5366            12 => Ok(OperationType::ManageBuyOffer),
5367            13 => Ok(OperationType::PathPaymentStrictSend),
5368            14 => Ok(OperationType::CreateClaimableBalance),
5369            15 => Ok(OperationType::ClaimClaimableBalance),
5370            16 => Ok(OperationType::BeginSponsoringFutureReserves),
5371            17 => Ok(OperationType::EndSponsoringFutureReserves),
5372            18 => Ok(OperationType::RevokeSponsorship),
5373            19 => Ok(OperationType::Clawback),
5374            20 => Ok(OperationType::ClawbackClaimableBalance),
5375            21 => Ok(OperationType::SetTrustLineFlags),
5376            22 => Ok(OperationType::LiquidityPoolDeposit),
5377            23 => Ok(OperationType::LiquidityPoolWithdraw),
5378            24 => Ok(OperationType::InvokeHostFunction),
5379            25 => Ok(OperationType::ExtendFootprintTtl),
5380            26 => Ok(OperationType::RestoreFootprint),
5381            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
5382        }
5383    }
5384}
5385
5386#[allow(dead_code)]
5388#[derive(Debug, Clone, Eq, PartialEq)]
5389pub struct CreateAccountOp {
5390    pub destination: AccountId,
5391    pub starting_balance: Int64,
5392}
5393
5394impl XdrCodec for CreateAccountOp {
5395    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5396        self.destination.to_xdr_buffered(write_stream);
5397        self.starting_balance.to_xdr_buffered(write_stream);
5398    }
5399
5400    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5401        Ok(CreateAccountOp {
5402            destination: AccountId::from_xdr_buffered(read_stream)?,
5403            starting_balance: Int64::from_xdr_buffered(read_stream)?,
5404        })
5405    }
5406}
5407
5408#[allow(dead_code)]
5410#[derive(Debug, Clone, Eq, PartialEq)]
5411pub struct PaymentOp {
5412    pub destination: MuxedAccount,
5413    pub asset: Asset,
5414    pub amount: Int64,
5415}
5416
5417impl XdrCodec for PaymentOp {
5418    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5419        self.destination.to_xdr_buffered(write_stream);
5420        self.asset.to_xdr_buffered(write_stream);
5421        self.amount.to_xdr_buffered(write_stream);
5422    }
5423
5424    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5425        Ok(PaymentOp {
5426            destination: MuxedAccount::from_xdr_buffered(read_stream)?,
5427            asset: Asset::from_xdr_buffered(read_stream)?,
5428            amount: Int64::from_xdr_buffered(read_stream)?,
5429        })
5430    }
5431}
5432
5433#[allow(dead_code)]
5435#[derive(Debug, Clone, Eq, PartialEq)]
5436pub struct PathPaymentStrictReceiveOp {
5437    pub send_asset: Asset,
5438    pub send_max: Int64,
5439    pub destination: MuxedAccount,
5440    pub dest_asset: Asset,
5441    pub dest_amount: Int64,
5442    pub path: LimitedVarArray<Asset, 5>,
5443}
5444
5445impl XdrCodec for PathPaymentStrictReceiveOp {
5446    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5447        self.send_asset.to_xdr_buffered(write_stream);
5448        self.send_max.to_xdr_buffered(write_stream);
5449        self.destination.to_xdr_buffered(write_stream);
5450        self.dest_asset.to_xdr_buffered(write_stream);
5451        self.dest_amount.to_xdr_buffered(write_stream);
5452        self.path.to_xdr_buffered(write_stream);
5453    }
5454
5455    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5456        Ok(PathPaymentStrictReceiveOp {
5457            send_asset: Asset::from_xdr_buffered(read_stream)?,
5458            send_max: Int64::from_xdr_buffered(read_stream)?,
5459            destination: MuxedAccount::from_xdr_buffered(read_stream)?,
5460            dest_asset: Asset::from_xdr_buffered(read_stream)?,
5461            dest_amount: Int64::from_xdr_buffered(read_stream)?,
5462            path: LimitedVarArray::<Asset, 5>::from_xdr_buffered(read_stream)?,
5463        })
5464    }
5465}
5466
5467#[allow(dead_code)]
5469#[derive(Debug, Clone, Eq, PartialEq)]
5470pub struct PathPaymentStrictSendOp {
5471    pub send_asset: Asset,
5472    pub send_amount: Int64,
5473    pub destination: MuxedAccount,
5474    pub dest_asset: Asset,
5475    pub dest_min: Int64,
5476    pub path: LimitedVarArray<Asset, 5>,
5477}
5478
5479impl XdrCodec for PathPaymentStrictSendOp {
5480    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5481        self.send_asset.to_xdr_buffered(write_stream);
5482        self.send_amount.to_xdr_buffered(write_stream);
5483        self.destination.to_xdr_buffered(write_stream);
5484        self.dest_asset.to_xdr_buffered(write_stream);
5485        self.dest_min.to_xdr_buffered(write_stream);
5486        self.path.to_xdr_buffered(write_stream);
5487    }
5488
5489    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5490        Ok(PathPaymentStrictSendOp {
5491            send_asset: Asset::from_xdr_buffered(read_stream)?,
5492            send_amount: Int64::from_xdr_buffered(read_stream)?,
5493            destination: MuxedAccount::from_xdr_buffered(read_stream)?,
5494            dest_asset: Asset::from_xdr_buffered(read_stream)?,
5495            dest_min: Int64::from_xdr_buffered(read_stream)?,
5496            path: LimitedVarArray::<Asset, 5>::from_xdr_buffered(read_stream)?,
5497        })
5498    }
5499}
5500
5501#[allow(dead_code)]
5503#[derive(Debug, Clone, Eq, PartialEq)]
5504pub struct ManageSellOfferOp {
5505    pub selling: Asset,
5506    pub buying: Asset,
5507    pub amount: Int64,
5508    pub price: Price,
5509    pub offer_id: Int64,
5510}
5511
5512impl XdrCodec for ManageSellOfferOp {
5513    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5514        self.selling.to_xdr_buffered(write_stream);
5515        self.buying.to_xdr_buffered(write_stream);
5516        self.amount.to_xdr_buffered(write_stream);
5517        self.price.to_xdr_buffered(write_stream);
5518        self.offer_id.to_xdr_buffered(write_stream);
5519    }
5520
5521    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5522        Ok(ManageSellOfferOp {
5523            selling: Asset::from_xdr_buffered(read_stream)?,
5524            buying: Asset::from_xdr_buffered(read_stream)?,
5525            amount: Int64::from_xdr_buffered(read_stream)?,
5526            price: Price::from_xdr_buffered(read_stream)?,
5527            offer_id: Int64::from_xdr_buffered(read_stream)?,
5528        })
5529    }
5530}
5531
5532#[allow(dead_code)]
5534#[derive(Debug, Clone, Eq, PartialEq)]
5535pub struct ManageBuyOfferOp {
5536    pub selling: Asset,
5537    pub buying: Asset,
5538    pub buy_amount: Int64,
5539    pub price: Price,
5540    pub offer_id: Int64,
5541}
5542
5543impl XdrCodec for ManageBuyOfferOp {
5544    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5545        self.selling.to_xdr_buffered(write_stream);
5546        self.buying.to_xdr_buffered(write_stream);
5547        self.buy_amount.to_xdr_buffered(write_stream);
5548        self.price.to_xdr_buffered(write_stream);
5549        self.offer_id.to_xdr_buffered(write_stream);
5550    }
5551
5552    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5553        Ok(ManageBuyOfferOp {
5554            selling: Asset::from_xdr_buffered(read_stream)?,
5555            buying: Asset::from_xdr_buffered(read_stream)?,
5556            buy_amount: Int64::from_xdr_buffered(read_stream)?,
5557            price: Price::from_xdr_buffered(read_stream)?,
5558            offer_id: Int64::from_xdr_buffered(read_stream)?,
5559        })
5560    }
5561}
5562
5563#[allow(dead_code)]
5565#[derive(Debug, Clone, Eq, PartialEq)]
5566pub struct CreatePassiveSellOfferOp {
5567    pub selling: Asset,
5568    pub buying: Asset,
5569    pub amount: Int64,
5570    pub price: Price,
5571}
5572
5573impl XdrCodec for CreatePassiveSellOfferOp {
5574    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5575        self.selling.to_xdr_buffered(write_stream);
5576        self.buying.to_xdr_buffered(write_stream);
5577        self.amount.to_xdr_buffered(write_stream);
5578        self.price.to_xdr_buffered(write_stream);
5579    }
5580
5581    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5582        Ok(CreatePassiveSellOfferOp {
5583            selling: Asset::from_xdr_buffered(read_stream)?,
5584            buying: Asset::from_xdr_buffered(read_stream)?,
5585            amount: Int64::from_xdr_buffered(read_stream)?,
5586            price: Price::from_xdr_buffered(read_stream)?,
5587        })
5588    }
5589}
5590
5591#[allow(dead_code)]
5593#[derive(Debug, Clone, Eq, PartialEq)]
5594pub struct SetOptionsOp {
5595    pub inflation_dest: Option<AccountId>,
5596    pub clear_flags: Option<Uint32>,
5597    pub set_flags: Option<Uint32>,
5598    pub master_weight: Option<Uint32>,
5599    pub low_threshold: Option<Uint32>,
5600    pub med_threshold: Option<Uint32>,
5601    pub high_threshold: Option<Uint32>,
5602    pub home_domain: Option<String32>,
5603    pub signer: Option<Signer>,
5604}
5605
5606impl XdrCodec for SetOptionsOp {
5607    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5608        self.inflation_dest.to_xdr_buffered(write_stream);
5609        self.clear_flags.to_xdr_buffered(write_stream);
5610        self.set_flags.to_xdr_buffered(write_stream);
5611        self.master_weight.to_xdr_buffered(write_stream);
5612        self.low_threshold.to_xdr_buffered(write_stream);
5613        self.med_threshold.to_xdr_buffered(write_stream);
5614        self.high_threshold.to_xdr_buffered(write_stream);
5615        self.home_domain.to_xdr_buffered(write_stream);
5616        self.signer.to_xdr_buffered(write_stream);
5617    }
5618
5619    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5620        Ok(SetOptionsOp {
5621            inflation_dest: Option::<AccountId>::from_xdr_buffered(read_stream)?,
5622            clear_flags: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5623            set_flags: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5624            master_weight: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5625            low_threshold: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5626            med_threshold: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5627            high_threshold: Option::<Uint32>::from_xdr_buffered(read_stream)?,
5628            home_domain: Option::<String32>::from_xdr_buffered(read_stream)?,
5629            signer: Option::<Signer>::from_xdr_buffered(read_stream)?,
5630        })
5631    }
5632}
5633
5634#[allow(dead_code)]
5636#[derive(Debug, Clone, Eq, PartialEq)]
5637pub struct ChangeTrustOp {
5638    pub line: ChangeTrustAsset,
5639    pub limit: Int64,
5640}
5641
5642impl XdrCodec for ChangeTrustOp {
5643    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5644        self.line.to_xdr_buffered(write_stream);
5645        self.limit.to_xdr_buffered(write_stream);
5646    }
5647
5648    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5649        Ok(ChangeTrustOp {
5650            line: ChangeTrustAsset::from_xdr_buffered(read_stream)?,
5651            limit: Int64::from_xdr_buffered(read_stream)?,
5652        })
5653    }
5654}
5655
5656#[allow(dead_code)]
5658#[derive(Debug, Clone, Eq, PartialEq)]
5659pub struct AllowTrustOp {
5660    pub trustor: AccountId,
5661    pub asset: AssetCode,
5662    pub authorize: Uint32,
5663}
5664
5665impl XdrCodec for AllowTrustOp {
5666    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5667        self.trustor.to_xdr_buffered(write_stream);
5668        self.asset.to_xdr_buffered(write_stream);
5669        self.authorize.to_xdr_buffered(write_stream);
5670    }
5671
5672    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5673        Ok(AllowTrustOp {
5674            trustor: AccountId::from_xdr_buffered(read_stream)?,
5675            asset: AssetCode::from_xdr_buffered(read_stream)?,
5676            authorize: Uint32::from_xdr_buffered(read_stream)?,
5677        })
5678    }
5679}
5680
5681#[allow(dead_code)]
5683#[derive(Debug, Clone, Eq, PartialEq)]
5684pub struct ManageDataOp {
5685    pub data_name: String64,
5686    pub data_value: Option<DataValue>,
5687}
5688
5689impl XdrCodec for ManageDataOp {
5690    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5691        self.data_name.to_xdr_buffered(write_stream);
5692        self.data_value.to_xdr_buffered(write_stream);
5693    }
5694
5695    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5696        Ok(ManageDataOp {
5697            data_name: String64::from_xdr_buffered(read_stream)?,
5698            data_value: Option::<DataValue>::from_xdr_buffered(read_stream)?,
5699        })
5700    }
5701}
5702
5703#[allow(dead_code)]
5705#[derive(Debug, Clone, Eq, PartialEq)]
5706pub struct BumpSequenceOp {
5707    pub bump_to: SequenceNumber,
5708}
5709
5710impl XdrCodec for BumpSequenceOp {
5711    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5712        self.bump_to.to_xdr_buffered(write_stream);
5713    }
5714
5715    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5716        Ok(BumpSequenceOp { bump_to: SequenceNumber::from_xdr_buffered(read_stream)? })
5717    }
5718}
5719
5720#[allow(dead_code)]
5722#[derive(Debug, Clone, Eq, PartialEq)]
5723pub struct CreateClaimableBalanceOp {
5724    pub asset: Asset,
5725    pub amount: Int64,
5726    pub claimants: LimitedVarArray<Claimant, 10>,
5727}
5728
5729impl XdrCodec for CreateClaimableBalanceOp {
5730    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5731        self.asset.to_xdr_buffered(write_stream);
5732        self.amount.to_xdr_buffered(write_stream);
5733        self.claimants.to_xdr_buffered(write_stream);
5734    }
5735
5736    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5737        Ok(CreateClaimableBalanceOp {
5738            asset: Asset::from_xdr_buffered(read_stream)?,
5739            amount: Int64::from_xdr_buffered(read_stream)?,
5740            claimants: LimitedVarArray::<Claimant, 10>::from_xdr_buffered(read_stream)?,
5741        })
5742    }
5743}
5744
5745#[allow(dead_code)]
5747#[derive(Debug, Clone, Eq, PartialEq)]
5748pub struct ClaimClaimableBalanceOp {
5749    pub balance_id: ClaimableBalanceId,
5750}
5751
5752impl XdrCodec for ClaimClaimableBalanceOp {
5753    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5754        self.balance_id.to_xdr_buffered(write_stream);
5755    }
5756
5757    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5758        Ok(ClaimClaimableBalanceOp { balance_id: ClaimableBalanceId::from_xdr_buffered(read_stream)? })
5759    }
5760}
5761
5762#[allow(dead_code)]
5764#[derive(Debug, Clone, Eq, PartialEq)]
5765pub struct BeginSponsoringFutureReservesOp {
5766    pub sponsored_id: AccountId,
5767}
5768
5769impl XdrCodec for BeginSponsoringFutureReservesOp {
5770    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5771        self.sponsored_id.to_xdr_buffered(write_stream);
5772    }
5773
5774    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5775        Ok(BeginSponsoringFutureReservesOp { sponsored_id: AccountId::from_xdr_buffered(read_stream)? })
5776    }
5777}
5778
5779#[allow(dead_code)]
5781#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5782pub enum RevokeSponsorshipType {
5783    RevokeSponsorshipLedgerEntry = 0,
5784    RevokeSponsorshipSigner = 1,
5785}
5786
5787impl XdrCodec for RevokeSponsorshipType {
5788    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5789        let value = *self as i32;
5790        value.to_xdr_buffered(write_stream);
5791    }
5792
5793    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5794        let enum_value = i32::from_xdr_buffered(read_stream)?;
5795        match enum_value {
5796            0 => Ok(RevokeSponsorshipType::RevokeSponsorshipLedgerEntry),
5797            1 => Ok(RevokeSponsorshipType::RevokeSponsorshipSigner),
5798            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
5799        }
5800    }
5801}
5802
5803#[allow(dead_code)]
5805#[derive(Debug, Clone, Eq, PartialEq)]
5806pub struct RevokeSponsorshipOpSigner {
5807    pub account_id: AccountId,
5808    pub signer_key: SignerKey,
5809}
5810
5811impl XdrCodec for RevokeSponsorshipOpSigner {
5812    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5813        self.account_id.to_xdr_buffered(write_stream);
5814        self.signer_key.to_xdr_buffered(write_stream);
5815    }
5816
5817    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5818        Ok(RevokeSponsorshipOpSigner {
5819            account_id: AccountId::from_xdr_buffered(read_stream)?,
5820            signer_key: SignerKey::from_xdr_buffered(read_stream)?,
5821        })
5822    }
5823}
5824
5825#[allow(dead_code)]
5827#[derive(Debug, Clone, Eq, PartialEq)]
5828pub struct ClawbackOp {
5829    pub asset: Asset,
5830    pub from: MuxedAccount,
5831    pub amount: Int64,
5832}
5833
5834impl XdrCodec for ClawbackOp {
5835    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5836        self.asset.to_xdr_buffered(write_stream);
5837        self.from.to_xdr_buffered(write_stream);
5838        self.amount.to_xdr_buffered(write_stream);
5839    }
5840
5841    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5842        Ok(ClawbackOp {
5843            asset: Asset::from_xdr_buffered(read_stream)?,
5844            from: MuxedAccount::from_xdr_buffered(read_stream)?,
5845            amount: Int64::from_xdr_buffered(read_stream)?,
5846        })
5847    }
5848}
5849
5850#[allow(dead_code)]
5852#[derive(Debug, Clone, Eq, PartialEq)]
5853pub struct ClawbackClaimableBalanceOp {
5854    pub balance_id: ClaimableBalanceId,
5855}
5856
5857impl XdrCodec for ClawbackClaimableBalanceOp {
5858    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5859        self.balance_id.to_xdr_buffered(write_stream);
5860    }
5861
5862    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5863        Ok(ClawbackClaimableBalanceOp { balance_id: ClaimableBalanceId::from_xdr_buffered(read_stream)? })
5864    }
5865}
5866
5867#[allow(dead_code)]
5869#[derive(Debug, Clone, Eq, PartialEq)]
5870pub struct SetTrustLineFlagsOp {
5871    pub trustor: AccountId,
5872    pub asset: Asset,
5873    pub clear_flags: Uint32,
5874    pub set_flags: Uint32,
5875}
5876
5877impl XdrCodec for SetTrustLineFlagsOp {
5878    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5879        self.trustor.to_xdr_buffered(write_stream);
5880        self.asset.to_xdr_buffered(write_stream);
5881        self.clear_flags.to_xdr_buffered(write_stream);
5882        self.set_flags.to_xdr_buffered(write_stream);
5883    }
5884
5885    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5886        Ok(SetTrustLineFlagsOp {
5887            trustor: AccountId::from_xdr_buffered(read_stream)?,
5888            asset: Asset::from_xdr_buffered(read_stream)?,
5889            clear_flags: Uint32::from_xdr_buffered(read_stream)?,
5890            set_flags: Uint32::from_xdr_buffered(read_stream)?,
5891        })
5892    }
5893}
5894
5895#[allow(dead_code)]
5897#[derive(Debug, Clone, Eq, PartialEq)]
5898pub struct LiquidityPoolDepositOp {
5899    pub liquidity_pool_id: PoolId,
5900    pub max_amount_a: Int64,
5901    pub max_amount_b: Int64,
5902    pub min_price: Price,
5903    pub max_price: Price,
5904}
5905
5906impl XdrCodec for LiquidityPoolDepositOp {
5907    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5908        self.liquidity_pool_id.to_xdr_buffered(write_stream);
5909        self.max_amount_a.to_xdr_buffered(write_stream);
5910        self.max_amount_b.to_xdr_buffered(write_stream);
5911        self.min_price.to_xdr_buffered(write_stream);
5912        self.max_price.to_xdr_buffered(write_stream);
5913    }
5914
5915    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5916        Ok(LiquidityPoolDepositOp {
5917            liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)?,
5918            max_amount_a: Int64::from_xdr_buffered(read_stream)?,
5919            max_amount_b: Int64::from_xdr_buffered(read_stream)?,
5920            min_price: Price::from_xdr_buffered(read_stream)?,
5921            max_price: Price::from_xdr_buffered(read_stream)?,
5922        })
5923    }
5924}
5925
5926#[allow(dead_code)]
5928#[derive(Debug, Clone, Eq, PartialEq)]
5929pub struct LiquidityPoolWithdrawOp {
5930    pub liquidity_pool_id: PoolId,
5931    pub amount: Int64,
5932    pub min_amount_a: Int64,
5933    pub min_amount_b: Int64,
5934}
5935
5936impl XdrCodec for LiquidityPoolWithdrawOp {
5937    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5938        self.liquidity_pool_id.to_xdr_buffered(write_stream);
5939        self.amount.to_xdr_buffered(write_stream);
5940        self.min_amount_a.to_xdr_buffered(write_stream);
5941        self.min_amount_b.to_xdr_buffered(write_stream);
5942    }
5943
5944    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5945        Ok(LiquidityPoolWithdrawOp {
5946            liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)?,
5947            amount: Int64::from_xdr_buffered(read_stream)?,
5948            min_amount_a: Int64::from_xdr_buffered(read_stream)?,
5949            min_amount_b: Int64::from_xdr_buffered(read_stream)?,
5950        })
5951    }
5952}
5953
5954#[allow(dead_code)]
5956#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5957pub enum HostFunctionType {
5958    HostFunctionTypeInvokeContract = 0,
5959    HostFunctionTypeCreateContract = 1,
5960    HostFunctionTypeUploadContractWasm = 2,
5961}
5962
5963impl XdrCodec for HostFunctionType {
5964    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5965        let value = *self as i32;
5966        value.to_xdr_buffered(write_stream);
5967    }
5968
5969    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5970        let enum_value = i32::from_xdr_buffered(read_stream)?;
5971        match enum_value {
5972            0 => Ok(HostFunctionType::HostFunctionTypeInvokeContract),
5973            1 => Ok(HostFunctionType::HostFunctionTypeCreateContract),
5974            2 => Ok(HostFunctionType::HostFunctionTypeUploadContractWasm),
5975            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
5976        }
5977    }
5978}
5979
5980#[allow(dead_code)]
5982#[derive(Debug, Copy, Clone, Eq, PartialEq)]
5983pub enum ContractIdPreimageType {
5984    ContractIdPreimageFromAddress = 0,
5985    ContractIdPreimageFromAsset = 1,
5986}
5987
5988impl XdrCodec for ContractIdPreimageType {
5989    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
5990        let value = *self as i32;
5991        value.to_xdr_buffered(write_stream);
5992    }
5993
5994    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
5995        let enum_value = i32::from_xdr_buffered(read_stream)?;
5996        match enum_value {
5997            0 => Ok(ContractIdPreimageType::ContractIdPreimageFromAddress),
5998            1 => Ok(ContractIdPreimageType::ContractIdPreimageFromAsset),
5999            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6000        }
6001    }
6002}
6003
6004#[allow(dead_code)]
6006#[derive(Debug, Clone, Eq, PartialEq)]
6007pub struct ContractIdPreimageFromAddress {
6008    pub address: ScAddress,
6009    pub salt: Uint256,
6010}
6011
6012impl XdrCodec for ContractIdPreimageFromAddress {
6013    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6014        self.address.to_xdr_buffered(write_stream);
6015        self.salt.to_xdr_buffered(write_stream);
6016    }
6017
6018    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6019        Ok(ContractIdPreimageFromAddress {
6020            address: ScAddress::from_xdr_buffered(read_stream)?,
6021            salt: Uint256::from_xdr_buffered(read_stream)?,
6022        })
6023    }
6024}
6025
6026#[allow(dead_code)]
6028#[derive(Debug, Clone, Eq, PartialEq)]
6029pub struct CreateContractArgs {
6030    pub contract_id_preimage: ContractIdPreimage,
6031    pub executable: ContractExecutable,
6032}
6033
6034impl XdrCodec for CreateContractArgs {
6035    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6036        self.contract_id_preimage.to_xdr_buffered(write_stream);
6037        self.executable.to_xdr_buffered(write_stream);
6038    }
6039
6040    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6041        Ok(CreateContractArgs {
6042            contract_id_preimage: ContractIdPreimage::from_xdr_buffered(read_stream)?,
6043            executable: ContractExecutable::from_xdr_buffered(read_stream)?,
6044        })
6045    }
6046}
6047
6048#[allow(dead_code)]
6050#[derive(Debug, Clone, Eq, PartialEq)]
6051pub struct InvokeContractArgs {
6052    pub contract_address: ScAddress,
6053    pub function_name: ScSymbol,
6054    pub args: UnlimitedVarArray<ScVal>,
6055}
6056
6057impl XdrCodec for InvokeContractArgs {
6058    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6059        self.contract_address.to_xdr_buffered(write_stream);
6060        self.function_name.to_xdr_buffered(write_stream);
6061        self.args.to_xdr_buffered(write_stream);
6062    }
6063
6064    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6065        Ok(InvokeContractArgs {
6066            contract_address: ScAddress::from_xdr_buffered(read_stream)?,
6067            function_name: ScSymbol::from_xdr_buffered(read_stream)?,
6068            args: UnlimitedVarArray::<ScVal>::from_xdr_buffered(read_stream)?,
6069        })
6070    }
6071}
6072
6073#[allow(dead_code)]
6075#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6076pub enum SorobanAuthorizedFunctionType {
6077    SorobanAuthorizedFunctionTypeContractFn = 0,
6078    SorobanAuthorizedFunctionTypeCreateContractHostFn = 1,
6079}
6080
6081impl XdrCodec for SorobanAuthorizedFunctionType {
6082    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6083        let value = *self as i32;
6084        value.to_xdr_buffered(write_stream);
6085    }
6086
6087    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6088        let enum_value = i32::from_xdr_buffered(read_stream)?;
6089        match enum_value {
6090            0 => Ok(SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeContractFn),
6091            1 => Ok(SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeCreateContractHostFn),
6092            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6093        }
6094    }
6095}
6096
6097#[allow(dead_code)]
6099#[derive(Debug, Clone, Eq, PartialEq)]
6100pub struct SorobanAuthorizedInvocation {
6101    pub function: SorobanAuthorizedFunction,
6102    pub sub_invocations: UnlimitedVarArray<SorobanAuthorizedInvocation>,
6103}
6104
6105impl XdrCodec for SorobanAuthorizedInvocation {
6106    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6107        self.function.to_xdr_buffered(write_stream);
6108        self.sub_invocations.to_xdr_buffered(write_stream);
6109    }
6110
6111    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6112        Ok(SorobanAuthorizedInvocation {
6113            function: SorobanAuthorizedFunction::from_xdr_buffered(read_stream)?,
6114            sub_invocations: UnlimitedVarArray::<SorobanAuthorizedInvocation>::from_xdr_buffered(read_stream)?,
6115        })
6116    }
6117}
6118
6119#[allow(dead_code)]
6121#[derive(Debug, Clone, Eq, PartialEq)]
6122pub struct SorobanAddressCredentials {
6123    pub address: ScAddress,
6124    pub nonce: Int64,
6125    pub signature_expiration_ledger: Uint32,
6126    pub signature: ScVal,
6127}
6128
6129impl XdrCodec for SorobanAddressCredentials {
6130    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6131        self.address.to_xdr_buffered(write_stream);
6132        self.nonce.to_xdr_buffered(write_stream);
6133        self.signature_expiration_ledger.to_xdr_buffered(write_stream);
6134        self.signature.to_xdr_buffered(write_stream);
6135    }
6136
6137    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6138        Ok(SorobanAddressCredentials {
6139            address: ScAddress::from_xdr_buffered(read_stream)?,
6140            nonce: Int64::from_xdr_buffered(read_stream)?,
6141            signature_expiration_ledger: Uint32::from_xdr_buffered(read_stream)?,
6142            signature: ScVal::from_xdr_buffered(read_stream)?,
6143        })
6144    }
6145}
6146
6147#[allow(dead_code)]
6149#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6150pub enum SorobanCredentialsType {
6151    SorobanCredentialsSourceAccount = 0,
6152    SorobanCredentialsAddress = 1,
6153}
6154
6155impl XdrCodec for SorobanCredentialsType {
6156    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6157        let value = *self as i32;
6158        value.to_xdr_buffered(write_stream);
6159    }
6160
6161    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6162        let enum_value = i32::from_xdr_buffered(read_stream)?;
6163        match enum_value {
6164            0 => Ok(SorobanCredentialsType::SorobanCredentialsSourceAccount),
6165            1 => Ok(SorobanCredentialsType::SorobanCredentialsAddress),
6166            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6167        }
6168    }
6169}
6170
6171#[allow(dead_code)]
6173#[derive(Debug, Clone, Eq, PartialEq)]
6174pub struct SorobanAuthorizationEntry {
6175    pub credentials: SorobanCredentials,
6176    pub root_invocation: SorobanAuthorizedInvocation,
6177}
6178
6179impl XdrCodec for SorobanAuthorizationEntry {
6180    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6181        self.credentials.to_xdr_buffered(write_stream);
6182        self.root_invocation.to_xdr_buffered(write_stream);
6183    }
6184
6185    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6186        Ok(SorobanAuthorizationEntry {
6187            credentials: SorobanCredentials::from_xdr_buffered(read_stream)?,
6188            root_invocation: SorobanAuthorizedInvocation::from_xdr_buffered(read_stream)?,
6189        })
6190    }
6191}
6192
6193#[allow(dead_code)]
6195#[derive(Debug, Clone, Eq, PartialEq)]
6196pub struct InvokeHostFunctionOp {
6197    pub host_function: HostFunction,
6198    pub auth: UnlimitedVarArray<SorobanAuthorizationEntry>,
6199}
6200
6201impl XdrCodec for InvokeHostFunctionOp {
6202    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6203        self.host_function.to_xdr_buffered(write_stream);
6204        self.auth.to_xdr_buffered(write_stream);
6205    }
6206
6207    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6208        Ok(InvokeHostFunctionOp {
6209            host_function: HostFunction::from_xdr_buffered(read_stream)?,
6210            auth: UnlimitedVarArray::<SorobanAuthorizationEntry>::from_xdr_buffered(read_stream)?,
6211        })
6212    }
6213}
6214
6215#[allow(dead_code)]
6217#[derive(Debug, Clone, Eq, PartialEq)]
6218pub struct ExtendFootprintTtlOp {
6219    pub ext: ExtensionPoint,
6220    pub extend_to: Uint32,
6221}
6222
6223impl XdrCodec for ExtendFootprintTtlOp {
6224    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6225        self.ext.to_xdr_buffered(write_stream);
6226        self.extend_to.to_xdr_buffered(write_stream);
6227    }
6228
6229    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6230        Ok(ExtendFootprintTtlOp {
6231            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
6232            extend_to: Uint32::from_xdr_buffered(read_stream)?,
6233        })
6234    }
6235}
6236
6237#[allow(dead_code)]
6239#[derive(Debug, Clone, Eq, PartialEq)]
6240pub struct RestoreFootprintOp {
6241    pub ext: ExtensionPoint,
6242}
6243
6244impl XdrCodec for RestoreFootprintOp {
6245    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6246        self.ext.to_xdr_buffered(write_stream);
6247    }
6248
6249    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6250        Ok(RestoreFootprintOp { ext: ExtensionPoint::from_xdr_buffered(read_stream)? })
6251    }
6252}
6253
6254#[allow(dead_code)]
6256#[derive(Debug, Clone, Eq, PartialEq)]
6257pub struct Operation {
6258    pub source_account: Option<MuxedAccount>,
6259    pub body: OperationBody,
6260}
6261
6262impl XdrCodec for Operation {
6263    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6264        self.source_account.to_xdr_buffered(write_stream);
6265        self.body.to_xdr_buffered(write_stream);
6266    }
6267
6268    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6269        Ok(Operation {
6270            source_account: Option::<MuxedAccount>::from_xdr_buffered(read_stream)?,
6271            body: OperationBody::from_xdr_buffered(read_stream)?,
6272        })
6273    }
6274}
6275
6276#[allow(dead_code)]
6278#[cfg(feature = "all-types")]
6279#[derive(Debug, Clone, Eq, PartialEq)]
6280pub struct HashIdPreimageOperationId {
6281    pub source_account: AccountId,
6282    pub seq_num: SequenceNumber,
6283    pub op_num: Uint32,
6284}
6285
6286#[cfg(feature = "all-types")]
6287impl XdrCodec for HashIdPreimageOperationId {
6288    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6289        self.source_account.to_xdr_buffered(write_stream);
6290        self.seq_num.to_xdr_buffered(write_stream);
6291        self.op_num.to_xdr_buffered(write_stream);
6292    }
6293
6294    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6295        Ok(HashIdPreimageOperationId {
6296            source_account: AccountId::from_xdr_buffered(read_stream)?,
6297            seq_num: SequenceNumber::from_xdr_buffered(read_stream)?,
6298            op_num: Uint32::from_xdr_buffered(read_stream)?,
6299        })
6300    }
6301}
6302
6303#[allow(dead_code)]
6305#[cfg(feature = "all-types")]
6306#[derive(Debug, Clone, Eq, PartialEq)]
6307pub struct HashIdPreimageRevokeId {
6308    pub source_account: AccountId,
6309    pub seq_num: SequenceNumber,
6310    pub op_num: Uint32,
6311    pub liquidity_pool_id: PoolId,
6312    pub asset: Asset,
6313}
6314
6315#[cfg(feature = "all-types")]
6316impl XdrCodec for HashIdPreimageRevokeId {
6317    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6318        self.source_account.to_xdr_buffered(write_stream);
6319        self.seq_num.to_xdr_buffered(write_stream);
6320        self.op_num.to_xdr_buffered(write_stream);
6321        self.liquidity_pool_id.to_xdr_buffered(write_stream);
6322        self.asset.to_xdr_buffered(write_stream);
6323    }
6324
6325    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6326        Ok(HashIdPreimageRevokeId {
6327            source_account: AccountId::from_xdr_buffered(read_stream)?,
6328            seq_num: SequenceNumber::from_xdr_buffered(read_stream)?,
6329            op_num: Uint32::from_xdr_buffered(read_stream)?,
6330            liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)?,
6331            asset: Asset::from_xdr_buffered(read_stream)?,
6332        })
6333    }
6334}
6335
6336#[allow(dead_code)]
6338#[cfg(feature = "all-types")]
6339#[derive(Debug, Clone, Eq, PartialEq)]
6340pub struct HashIdPreimageContractId {
6341    pub network_id: Hash,
6342    pub contract_id_preimage: ContractIdPreimage,
6343}
6344
6345#[cfg(feature = "all-types")]
6346impl XdrCodec for HashIdPreimageContractId {
6347    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6348        self.network_id.to_xdr_buffered(write_stream);
6349        self.contract_id_preimage.to_xdr_buffered(write_stream);
6350    }
6351
6352    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6353        Ok(HashIdPreimageContractId {
6354            network_id: Hash::from_xdr_buffered(read_stream)?,
6355            contract_id_preimage: ContractIdPreimage::from_xdr_buffered(read_stream)?,
6356        })
6357    }
6358}
6359
6360#[allow(dead_code)]
6362#[cfg(feature = "all-types")]
6363#[derive(Debug, Clone, Eq, PartialEq)]
6364pub struct HashIdPreimageSorobanAuthorization {
6365    pub network_id: Hash,
6366    pub nonce: Int64,
6367    pub signature_expiration_ledger: Uint32,
6368    pub invocation: SorobanAuthorizedInvocation,
6369}
6370
6371#[cfg(feature = "all-types")]
6372impl XdrCodec for HashIdPreimageSorobanAuthorization {
6373    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6374        self.network_id.to_xdr_buffered(write_stream);
6375        self.nonce.to_xdr_buffered(write_stream);
6376        self.signature_expiration_ledger.to_xdr_buffered(write_stream);
6377        self.invocation.to_xdr_buffered(write_stream);
6378    }
6379
6380    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6381        Ok(HashIdPreimageSorobanAuthorization {
6382            network_id: Hash::from_xdr_buffered(read_stream)?,
6383            nonce: Int64::from_xdr_buffered(read_stream)?,
6384            signature_expiration_ledger: Uint32::from_xdr_buffered(read_stream)?,
6385            invocation: SorobanAuthorizedInvocation::from_xdr_buffered(read_stream)?,
6386        })
6387    }
6388}
6389
6390#[allow(dead_code)]
6392#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6393pub enum MemoType {
6394    MemoNone = 0,
6395    MemoText = 1,
6396    MemoId = 2,
6397    MemoHash = 3,
6398    MemoReturn = 4,
6399}
6400
6401impl XdrCodec for MemoType {
6402    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6403        let value = *self as i32;
6404        value.to_xdr_buffered(write_stream);
6405    }
6406
6407    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6408        let enum_value = i32::from_xdr_buffered(read_stream)?;
6409        match enum_value {
6410            0 => Ok(MemoType::MemoNone),
6411            1 => Ok(MemoType::MemoText),
6412            2 => Ok(MemoType::MemoId),
6413            3 => Ok(MemoType::MemoHash),
6414            4 => Ok(MemoType::MemoReturn),
6415            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6416        }
6417    }
6418}
6419
6420#[allow(dead_code)]
6422#[derive(Debug, Clone, Eq, PartialEq)]
6423pub struct TimeBounds {
6424    pub min_time: TimePoint,
6425    pub max_time: TimePoint,
6426}
6427
6428impl XdrCodec for TimeBounds {
6429    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6430        self.min_time.to_xdr_buffered(write_stream);
6431        self.max_time.to_xdr_buffered(write_stream);
6432    }
6433
6434    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6435        Ok(TimeBounds {
6436            min_time: TimePoint::from_xdr_buffered(read_stream)?,
6437            max_time: TimePoint::from_xdr_buffered(read_stream)?,
6438        })
6439    }
6440}
6441
6442#[allow(dead_code)]
6444#[derive(Debug, Clone, Eq, PartialEq)]
6445pub struct LedgerBounds {
6446    pub min_ledger: Uint32,
6447    pub max_ledger: Uint32,
6448}
6449
6450impl XdrCodec for LedgerBounds {
6451    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6452        self.min_ledger.to_xdr_buffered(write_stream);
6453        self.max_ledger.to_xdr_buffered(write_stream);
6454    }
6455
6456    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6457        Ok(LedgerBounds {
6458            min_ledger: Uint32::from_xdr_buffered(read_stream)?,
6459            max_ledger: Uint32::from_xdr_buffered(read_stream)?,
6460        })
6461    }
6462}
6463
6464#[allow(dead_code)]
6466#[derive(Debug, Clone, Eq, PartialEq)]
6467pub struct PreconditionsV2 {
6468    pub time_bounds: Option<TimeBounds>,
6469    pub ledger_bounds: Option<LedgerBounds>,
6470    pub min_seq_num: Option<SequenceNumber>,
6471    pub min_seq_age: Duration,
6472    pub min_seq_ledger_gap: Uint32,
6473    pub extra_signers: LimitedVarArray<SignerKey, 2>,
6474}
6475
6476impl XdrCodec for PreconditionsV2 {
6477    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6478        self.time_bounds.to_xdr_buffered(write_stream);
6479        self.ledger_bounds.to_xdr_buffered(write_stream);
6480        self.min_seq_num.to_xdr_buffered(write_stream);
6481        self.min_seq_age.to_xdr_buffered(write_stream);
6482        self.min_seq_ledger_gap.to_xdr_buffered(write_stream);
6483        self.extra_signers.to_xdr_buffered(write_stream);
6484    }
6485
6486    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6487        Ok(PreconditionsV2 {
6488            time_bounds: Option::<TimeBounds>::from_xdr_buffered(read_stream)?,
6489            ledger_bounds: Option::<LedgerBounds>::from_xdr_buffered(read_stream)?,
6490            min_seq_num: Option::<SequenceNumber>::from_xdr_buffered(read_stream)?,
6491            min_seq_age: Duration::from_xdr_buffered(read_stream)?,
6492            min_seq_ledger_gap: Uint32::from_xdr_buffered(read_stream)?,
6493            extra_signers: LimitedVarArray::<SignerKey, 2>::from_xdr_buffered(read_stream)?,
6494        })
6495    }
6496}
6497
6498#[allow(dead_code)]
6500#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6501pub enum PreconditionType {
6502    PrecondNone = 0,
6503    PrecondTime = 1,
6504    PrecondV2 = 2,
6505}
6506
6507impl XdrCodec for PreconditionType {
6508    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6509        let value = *self as i32;
6510        value.to_xdr_buffered(write_stream);
6511    }
6512
6513    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6514        let enum_value = i32::from_xdr_buffered(read_stream)?;
6515        match enum_value {
6516            0 => Ok(PreconditionType::PrecondNone),
6517            1 => Ok(PreconditionType::PrecondTime),
6518            2 => Ok(PreconditionType::PrecondV2),
6519            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6520        }
6521    }
6522}
6523
6524#[allow(dead_code)]
6526#[derive(Debug, Clone, Eq, PartialEq)]
6527pub struct LedgerFootprint {
6528    pub read_only: UnlimitedVarArray<LedgerKey>,
6529    pub read_write: UnlimitedVarArray<LedgerKey>,
6530}
6531
6532impl XdrCodec for LedgerFootprint {
6533    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6534        self.read_only.to_xdr_buffered(write_stream);
6535        self.read_write.to_xdr_buffered(write_stream);
6536    }
6537
6538    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6539        Ok(LedgerFootprint {
6540            read_only: UnlimitedVarArray::<LedgerKey>::from_xdr_buffered(read_stream)?,
6541            read_write: UnlimitedVarArray::<LedgerKey>::from_xdr_buffered(read_stream)?,
6542        })
6543    }
6544}
6545
6546#[allow(dead_code)]
6548#[derive(Debug, Clone, Eq, PartialEq)]
6549pub struct SorobanResources {
6550    pub footprint: LedgerFootprint,
6551    pub instructions: Uint32,
6552    pub read_bytes: Uint32,
6553    pub write_bytes: Uint32,
6554}
6555
6556impl XdrCodec for SorobanResources {
6557    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6558        self.footprint.to_xdr_buffered(write_stream);
6559        self.instructions.to_xdr_buffered(write_stream);
6560        self.read_bytes.to_xdr_buffered(write_stream);
6561        self.write_bytes.to_xdr_buffered(write_stream);
6562    }
6563
6564    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6565        Ok(SorobanResources {
6566            footprint: LedgerFootprint::from_xdr_buffered(read_stream)?,
6567            instructions: Uint32::from_xdr_buffered(read_stream)?,
6568            read_bytes: Uint32::from_xdr_buffered(read_stream)?,
6569            write_bytes: Uint32::from_xdr_buffered(read_stream)?,
6570        })
6571    }
6572}
6573
6574#[allow(dead_code)]
6576#[derive(Debug, Clone, Eq, PartialEq)]
6577pub struct SorobanTransactionData {
6578    pub ext: ExtensionPoint,
6579    pub resources: SorobanResources,
6580    pub resource_fee: Int64,
6581}
6582
6583impl XdrCodec for SorobanTransactionData {
6584    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6585        self.ext.to_xdr_buffered(write_stream);
6586        self.resources.to_xdr_buffered(write_stream);
6587        self.resource_fee.to_xdr_buffered(write_stream);
6588    }
6589
6590    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6591        Ok(SorobanTransactionData {
6592            ext: ExtensionPoint::from_xdr_buffered(read_stream)?,
6593            resources: SorobanResources::from_xdr_buffered(read_stream)?,
6594            resource_fee: Int64::from_xdr_buffered(read_stream)?,
6595        })
6596    }
6597}
6598
6599#[allow(dead_code)]
6601#[derive(Debug, Clone, Eq, PartialEq)]
6602pub struct TransactionV0 {
6603    pub source_account_ed25519: Uint256,
6604    pub fee: Uint32,
6605    pub seq_num: SequenceNumber,
6606    pub time_bounds: Option<TimeBounds>,
6607    pub memo: Memo,
6608    pub operations: LimitedVarArray<Operation, MAX_OPS_PER_TX>,
6609    pub ext: TransactionV0Ext,
6610}
6611
6612impl XdrCodec for TransactionV0 {
6613    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6614        self.source_account_ed25519.to_xdr_buffered(write_stream);
6615        self.fee.to_xdr_buffered(write_stream);
6616        self.seq_num.to_xdr_buffered(write_stream);
6617        self.time_bounds.to_xdr_buffered(write_stream);
6618        self.memo.to_xdr_buffered(write_stream);
6619        self.operations.to_xdr_buffered(write_stream);
6620        self.ext.to_xdr_buffered(write_stream);
6621    }
6622
6623    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6624        Ok(TransactionV0 {
6625            source_account_ed25519: Uint256::from_xdr_buffered(read_stream)?,
6626            fee: Uint32::from_xdr_buffered(read_stream)?,
6627            seq_num: SequenceNumber::from_xdr_buffered(read_stream)?,
6628            time_bounds: Option::<TimeBounds>::from_xdr_buffered(read_stream)?,
6629            memo: Memo::from_xdr_buffered(read_stream)?,
6630            operations: LimitedVarArray::<Operation, MAX_OPS_PER_TX>::from_xdr_buffered(read_stream)?,
6631            ext: TransactionV0Ext::from_xdr_buffered(read_stream)?,
6632        })
6633    }
6634}
6635
6636#[allow(dead_code)]
6638#[derive(Debug, Clone, Eq, PartialEq)]
6639pub struct TransactionV0Envelope {
6640    pub tx: TransactionV0,
6641    pub signatures: LimitedVarArray<DecoratedSignature, 20>,
6642}
6643
6644impl XdrCodec for TransactionV0Envelope {
6645    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6646        self.tx.to_xdr_buffered(write_stream);
6647        self.signatures.to_xdr_buffered(write_stream);
6648    }
6649
6650    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6651        Ok(TransactionV0Envelope {
6652            tx: TransactionV0::from_xdr_buffered(read_stream)?,
6653            signatures: LimitedVarArray::<DecoratedSignature, 20>::from_xdr_buffered(read_stream)?,
6654        })
6655    }
6656}
6657
6658#[allow(dead_code)]
6660#[derive(Debug, Clone, Eq, PartialEq)]
6661pub struct Transaction {
6662    pub source_account: MuxedAccount,
6663    pub fee: Uint32,
6664    pub seq_num: SequenceNumber,
6665    pub cond: Preconditions,
6666    pub memo: Memo,
6667    pub operations: LimitedVarArray<Operation, MAX_OPS_PER_TX>,
6668    pub ext: TransactionExt,
6669}
6670
6671impl XdrCodec for Transaction {
6672    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6673        self.source_account.to_xdr_buffered(write_stream);
6674        self.fee.to_xdr_buffered(write_stream);
6675        self.seq_num.to_xdr_buffered(write_stream);
6676        self.cond.to_xdr_buffered(write_stream);
6677        self.memo.to_xdr_buffered(write_stream);
6678        self.operations.to_xdr_buffered(write_stream);
6679        self.ext.to_xdr_buffered(write_stream);
6680    }
6681
6682    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6683        Ok(Transaction {
6684            source_account: MuxedAccount::from_xdr_buffered(read_stream)?,
6685            fee: Uint32::from_xdr_buffered(read_stream)?,
6686            seq_num: SequenceNumber::from_xdr_buffered(read_stream)?,
6687            cond: Preconditions::from_xdr_buffered(read_stream)?,
6688            memo: Memo::from_xdr_buffered(read_stream)?,
6689            operations: LimitedVarArray::<Operation, MAX_OPS_PER_TX>::from_xdr_buffered(read_stream)?,
6690            ext: TransactionExt::from_xdr_buffered(read_stream)?,
6691        })
6692    }
6693}
6694
6695#[allow(dead_code)]
6697#[derive(Debug, Clone, Eq, PartialEq)]
6698pub struct TransactionV1Envelope {
6699    pub tx: Transaction,
6700    pub signatures: LimitedVarArray<DecoratedSignature, 20>,
6701}
6702
6703impl XdrCodec for TransactionV1Envelope {
6704    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6705        self.tx.to_xdr_buffered(write_stream);
6706        self.signatures.to_xdr_buffered(write_stream);
6707    }
6708
6709    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6710        Ok(TransactionV1Envelope {
6711            tx: Transaction::from_xdr_buffered(read_stream)?,
6712            signatures: LimitedVarArray::<DecoratedSignature, 20>::from_xdr_buffered(read_stream)?,
6713        })
6714    }
6715}
6716
6717#[allow(dead_code)]
6719#[derive(Debug, Clone, Eq, PartialEq)]
6720pub struct FeeBumpTransaction {
6721    pub fee_source: MuxedAccount,
6722    pub fee: Int64,
6723    pub inner_tx: FeeBumpTransactionInnerTx,
6724    pub ext: FeeBumpTransactionExt,
6725}
6726
6727impl XdrCodec for FeeBumpTransaction {
6728    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6729        self.fee_source.to_xdr_buffered(write_stream);
6730        self.fee.to_xdr_buffered(write_stream);
6731        self.inner_tx.to_xdr_buffered(write_stream);
6732        self.ext.to_xdr_buffered(write_stream);
6733    }
6734
6735    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6736        Ok(FeeBumpTransaction {
6737            fee_source: MuxedAccount::from_xdr_buffered(read_stream)?,
6738            fee: Int64::from_xdr_buffered(read_stream)?,
6739            inner_tx: FeeBumpTransactionInnerTx::from_xdr_buffered(read_stream)?,
6740            ext: FeeBumpTransactionExt::from_xdr_buffered(read_stream)?,
6741        })
6742    }
6743}
6744
6745#[allow(dead_code)]
6747#[derive(Debug, Clone, Eq, PartialEq)]
6748pub struct FeeBumpTransactionEnvelope {
6749    pub tx: FeeBumpTransaction,
6750    pub signatures: LimitedVarArray<DecoratedSignature, 20>,
6751}
6752
6753impl XdrCodec for FeeBumpTransactionEnvelope {
6754    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6755        self.tx.to_xdr_buffered(write_stream);
6756        self.signatures.to_xdr_buffered(write_stream);
6757    }
6758
6759    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6760        Ok(FeeBumpTransactionEnvelope {
6761            tx: FeeBumpTransaction::from_xdr_buffered(read_stream)?,
6762            signatures: LimitedVarArray::<DecoratedSignature, 20>::from_xdr_buffered(read_stream)?,
6763        })
6764    }
6765}
6766
6767#[allow(dead_code)]
6769#[derive(Debug, Clone, Eq, PartialEq)]
6770pub struct TransactionSignaturePayload {
6771    pub network_id: Hash,
6772    pub tagged_transaction: TransactionSignaturePayloadTaggedTransaction,
6773}
6774
6775impl XdrCodec for TransactionSignaturePayload {
6776    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6777        self.network_id.to_xdr_buffered(write_stream);
6778        self.tagged_transaction.to_xdr_buffered(write_stream);
6779    }
6780
6781    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6782        Ok(TransactionSignaturePayload {
6783            network_id: Hash::from_xdr_buffered(read_stream)?,
6784            tagged_transaction: TransactionSignaturePayloadTaggedTransaction::from_xdr_buffered(read_stream)?,
6785        })
6786    }
6787}
6788
6789#[allow(dead_code)]
6791#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6792pub enum ClaimAtomType {
6793    ClaimAtomTypeV0 = 0,
6794    ClaimAtomTypeOrderBook = 1,
6795    ClaimAtomTypeLiquidityPool = 2,
6796}
6797
6798impl XdrCodec for ClaimAtomType {
6799    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6800        let value = *self as i32;
6801        value.to_xdr_buffered(write_stream);
6802    }
6803
6804    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6805        let enum_value = i32::from_xdr_buffered(read_stream)?;
6806        match enum_value {
6807            0 => Ok(ClaimAtomType::ClaimAtomTypeV0),
6808            1 => Ok(ClaimAtomType::ClaimAtomTypeOrderBook),
6809            2 => Ok(ClaimAtomType::ClaimAtomTypeLiquidityPool),
6810            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6811        }
6812    }
6813}
6814
6815#[allow(dead_code)]
6817#[derive(Debug, Clone, Eq, PartialEq)]
6818pub struct ClaimOfferAtomV0 {
6819    pub seller_ed25519: Uint256,
6820    pub offer_id: Int64,
6821    pub asset_sold: Asset,
6822    pub amount_sold: Int64,
6823    pub asset_bought: Asset,
6824    pub amount_bought: Int64,
6825}
6826
6827impl XdrCodec for ClaimOfferAtomV0 {
6828    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6829        self.seller_ed25519.to_xdr_buffered(write_stream);
6830        self.offer_id.to_xdr_buffered(write_stream);
6831        self.asset_sold.to_xdr_buffered(write_stream);
6832        self.amount_sold.to_xdr_buffered(write_stream);
6833        self.asset_bought.to_xdr_buffered(write_stream);
6834        self.amount_bought.to_xdr_buffered(write_stream);
6835    }
6836
6837    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6838        Ok(ClaimOfferAtomV0 {
6839            seller_ed25519: Uint256::from_xdr_buffered(read_stream)?,
6840            offer_id: Int64::from_xdr_buffered(read_stream)?,
6841            asset_sold: Asset::from_xdr_buffered(read_stream)?,
6842            amount_sold: Int64::from_xdr_buffered(read_stream)?,
6843            asset_bought: Asset::from_xdr_buffered(read_stream)?,
6844            amount_bought: Int64::from_xdr_buffered(read_stream)?,
6845        })
6846    }
6847}
6848
6849#[allow(dead_code)]
6851#[derive(Debug, Clone, Eq, PartialEq)]
6852pub struct ClaimOfferAtom {
6853    pub seller_id: AccountId,
6854    pub offer_id: Int64,
6855    pub asset_sold: Asset,
6856    pub amount_sold: Int64,
6857    pub asset_bought: Asset,
6858    pub amount_bought: Int64,
6859}
6860
6861impl XdrCodec for ClaimOfferAtom {
6862    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6863        self.seller_id.to_xdr_buffered(write_stream);
6864        self.offer_id.to_xdr_buffered(write_stream);
6865        self.asset_sold.to_xdr_buffered(write_stream);
6866        self.amount_sold.to_xdr_buffered(write_stream);
6867        self.asset_bought.to_xdr_buffered(write_stream);
6868        self.amount_bought.to_xdr_buffered(write_stream);
6869    }
6870
6871    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6872        Ok(ClaimOfferAtom {
6873            seller_id: AccountId::from_xdr_buffered(read_stream)?,
6874            offer_id: Int64::from_xdr_buffered(read_stream)?,
6875            asset_sold: Asset::from_xdr_buffered(read_stream)?,
6876            amount_sold: Int64::from_xdr_buffered(read_stream)?,
6877            asset_bought: Asset::from_xdr_buffered(read_stream)?,
6878            amount_bought: Int64::from_xdr_buffered(read_stream)?,
6879        })
6880    }
6881}
6882
6883#[allow(dead_code)]
6885#[derive(Debug, Clone, Eq, PartialEq)]
6886pub struct ClaimLiquidityAtom {
6887    pub liquidity_pool_id: PoolId,
6888    pub asset_sold: Asset,
6889    pub amount_sold: Int64,
6890    pub asset_bought: Asset,
6891    pub amount_bought: Int64,
6892}
6893
6894impl XdrCodec for ClaimLiquidityAtom {
6895    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6896        self.liquidity_pool_id.to_xdr_buffered(write_stream);
6897        self.asset_sold.to_xdr_buffered(write_stream);
6898        self.amount_sold.to_xdr_buffered(write_stream);
6899        self.asset_bought.to_xdr_buffered(write_stream);
6900        self.amount_bought.to_xdr_buffered(write_stream);
6901    }
6902
6903    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6904        Ok(ClaimLiquidityAtom {
6905            liquidity_pool_id: PoolId::from_xdr_buffered(read_stream)?,
6906            asset_sold: Asset::from_xdr_buffered(read_stream)?,
6907            amount_sold: Int64::from_xdr_buffered(read_stream)?,
6908            asset_bought: Asset::from_xdr_buffered(read_stream)?,
6909            amount_bought: Int64::from_xdr_buffered(read_stream)?,
6910        })
6911    }
6912}
6913
6914#[allow(dead_code)]
6916#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6917pub enum CreateAccountResultCode {
6918    CreateAccountSuccess = 0,
6919    CreateAccountMalformed = -1,
6920    CreateAccountUnderfunded = -2,
6921    CreateAccountLowReserve = -3,
6922    CreateAccountAlreadyExist = -4,
6923}
6924
6925impl XdrCodec for CreateAccountResultCode {
6926    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6927        let value = *self as i32;
6928        value.to_xdr_buffered(write_stream);
6929    }
6930
6931    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6932        let enum_value = i32::from_xdr_buffered(read_stream)?;
6933        match enum_value {
6934            0 => Ok(CreateAccountResultCode::CreateAccountSuccess),
6935            -1 => Ok(CreateAccountResultCode::CreateAccountMalformed),
6936            -2 => Ok(CreateAccountResultCode::CreateAccountUnderfunded),
6937            -3 => Ok(CreateAccountResultCode::CreateAccountLowReserve),
6938            -4 => Ok(CreateAccountResultCode::CreateAccountAlreadyExist),
6939            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6940        }
6941    }
6942}
6943
6944#[allow(dead_code)]
6946#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6947pub enum PaymentResultCode {
6948    PaymentSuccess = 0,
6949    PaymentMalformed = -1,
6950    PaymentUnderfunded = -2,
6951    PaymentSrcNoTrust = -3,
6952    PaymentSrcNotAuthorized = -4,
6953    PaymentNoDestination = -5,
6954    PaymentNoTrust = -6,
6955    PaymentNotAuthorized = -7,
6956    PaymentLineFull = -8,
6957    PaymentNoIssuer = -9,
6958}
6959
6960impl XdrCodec for PaymentResultCode {
6961    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
6962        let value = *self as i32;
6963        value.to_xdr_buffered(write_stream);
6964    }
6965
6966    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
6967        let enum_value = i32::from_xdr_buffered(read_stream)?;
6968        match enum_value {
6969            0 => Ok(PaymentResultCode::PaymentSuccess),
6970            -1 => Ok(PaymentResultCode::PaymentMalformed),
6971            -2 => Ok(PaymentResultCode::PaymentUnderfunded),
6972            -3 => Ok(PaymentResultCode::PaymentSrcNoTrust),
6973            -4 => Ok(PaymentResultCode::PaymentSrcNotAuthorized),
6974            -5 => Ok(PaymentResultCode::PaymentNoDestination),
6975            -6 => Ok(PaymentResultCode::PaymentNoTrust),
6976            -7 => Ok(PaymentResultCode::PaymentNotAuthorized),
6977            -8 => Ok(PaymentResultCode::PaymentLineFull),
6978            -9 => Ok(PaymentResultCode::PaymentNoIssuer),
6979            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
6980        }
6981    }
6982}
6983
6984#[allow(dead_code)]
6986#[derive(Debug, Copy, Clone, Eq, PartialEq)]
6987pub enum PathPaymentStrictReceiveResultCode {
6988    PathPaymentStrictReceiveSuccess = 0,
6989    PathPaymentStrictReceiveMalformed = -1,
6990    PathPaymentStrictReceiveUnderfunded = -2,
6991    PathPaymentStrictReceiveSrcNoTrust = -3,
6992    PathPaymentStrictReceiveSrcNotAuthorized = -4,
6993    PathPaymentStrictReceiveNoDestination = -5,
6994    PathPaymentStrictReceiveNoTrust = -6,
6995    PathPaymentStrictReceiveNotAuthorized = -7,
6996    PathPaymentStrictReceiveLineFull = -8,
6997    PathPaymentStrictReceiveNoIssuer = -9,
6998    PathPaymentStrictReceiveTooFewOffers = -10,
6999    PathPaymentStrictReceiveOfferCrossSelf = -11,
7000    PathPaymentStrictReceiveOverSendmax = -12,
7001}
7002
7003impl XdrCodec for PathPaymentStrictReceiveResultCode {
7004    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7005        let value = *self as i32;
7006        value.to_xdr_buffered(write_stream);
7007    }
7008
7009    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7010        let enum_value = i32::from_xdr_buffered(read_stream)?;
7011        match enum_value {
7012            0 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSuccess),
7013            -1 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveMalformed),
7014            -2 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveUnderfunded),
7015            -3 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNoTrust),
7016            -4 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNotAuthorized),
7017            -5 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoDestination),
7018            -6 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoTrust),
7019            -7 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNotAuthorized),
7020            -8 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveLineFull),
7021            -9 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoIssuer),
7022            -10 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveTooFewOffers),
7023            -11 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOfferCrossSelf),
7024            -12 => Ok(PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOverSendmax),
7025            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7026        }
7027    }
7028}
7029
7030#[allow(dead_code)]
7032#[derive(Debug, Clone, Eq, PartialEq)]
7033pub struct SimplePaymentResult {
7034    pub destination: AccountId,
7035    pub asset: Asset,
7036    pub amount: Int64,
7037}
7038
7039impl XdrCodec for SimplePaymentResult {
7040    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7041        self.destination.to_xdr_buffered(write_stream);
7042        self.asset.to_xdr_buffered(write_stream);
7043        self.amount.to_xdr_buffered(write_stream);
7044    }
7045
7046    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7047        Ok(SimplePaymentResult {
7048            destination: AccountId::from_xdr_buffered(read_stream)?,
7049            asset: Asset::from_xdr_buffered(read_stream)?,
7050            amount: Int64::from_xdr_buffered(read_stream)?,
7051        })
7052    }
7053}
7054
7055#[allow(dead_code)]
7057#[derive(Debug, Clone, Eq, PartialEq)]
7058pub struct PathPaymentStrictReceiveResultSuccess {
7059    pub offers: UnlimitedVarArray<ClaimAtom>,
7060    pub last: SimplePaymentResult,
7061}
7062
7063impl XdrCodec for PathPaymentStrictReceiveResultSuccess {
7064    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7065        self.offers.to_xdr_buffered(write_stream);
7066        self.last.to_xdr_buffered(write_stream);
7067    }
7068
7069    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7070        Ok(PathPaymentStrictReceiveResultSuccess {
7071            offers: UnlimitedVarArray::<ClaimAtom>::from_xdr_buffered(read_stream)?,
7072            last: SimplePaymentResult::from_xdr_buffered(read_stream)?,
7073        })
7074    }
7075}
7076
7077#[allow(dead_code)]
7079#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7080pub enum PathPaymentStrictSendResultCode {
7081    PathPaymentStrictSendSuccess = 0,
7082    PathPaymentStrictSendMalformed = -1,
7083    PathPaymentStrictSendUnderfunded = -2,
7084    PathPaymentStrictSendSrcNoTrust = -3,
7085    PathPaymentStrictSendSrcNotAuthorized = -4,
7086    PathPaymentStrictSendNoDestination = -5,
7087    PathPaymentStrictSendNoTrust = -6,
7088    PathPaymentStrictSendNotAuthorized = -7,
7089    PathPaymentStrictSendLineFull = -8,
7090    PathPaymentStrictSendNoIssuer = -9,
7091    PathPaymentStrictSendTooFewOffers = -10,
7092    PathPaymentStrictSendOfferCrossSelf = -11,
7093    PathPaymentStrictSendUnderDestmin = -12,
7094}
7095
7096impl XdrCodec for PathPaymentStrictSendResultCode {
7097    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7098        let value = *self as i32;
7099        value.to_xdr_buffered(write_stream);
7100    }
7101
7102    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7103        let enum_value = i32::from_xdr_buffered(read_stream)?;
7104        match enum_value {
7105            0 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendSuccess),
7106            -1 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendMalformed),
7107            -2 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderfunded),
7108            -3 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNoTrust),
7109            -4 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNotAuthorized),
7110            -5 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendNoDestination),
7111            -6 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendNoTrust),
7112            -7 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendNotAuthorized),
7113            -8 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendLineFull),
7114            -9 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendNoIssuer),
7115            -10 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendTooFewOffers),
7116            -11 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendOfferCrossSelf),
7117            -12 => Ok(PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderDestmin),
7118            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7119        }
7120    }
7121}
7122
7123#[allow(dead_code)]
7125#[derive(Debug, Clone, Eq, PartialEq)]
7126pub struct PathPaymentStrictSendResultSuccess {
7127    pub offers: UnlimitedVarArray<ClaimAtom>,
7128    pub last: SimplePaymentResult,
7129}
7130
7131impl XdrCodec for PathPaymentStrictSendResultSuccess {
7132    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7133        self.offers.to_xdr_buffered(write_stream);
7134        self.last.to_xdr_buffered(write_stream);
7135    }
7136
7137    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7138        Ok(PathPaymentStrictSendResultSuccess {
7139            offers: UnlimitedVarArray::<ClaimAtom>::from_xdr_buffered(read_stream)?,
7140            last: SimplePaymentResult::from_xdr_buffered(read_stream)?,
7141        })
7142    }
7143}
7144
7145#[allow(dead_code)]
7147#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7148pub enum ManageSellOfferResultCode {
7149    ManageSellOfferSuccess = 0,
7150    ManageSellOfferMalformed = -1,
7151    ManageSellOfferSellNoTrust = -2,
7152    ManageSellOfferBuyNoTrust = -3,
7153    ManageSellOfferSellNotAuthorized = -4,
7154    ManageSellOfferBuyNotAuthorized = -5,
7155    ManageSellOfferLineFull = -6,
7156    ManageSellOfferUnderfunded = -7,
7157    ManageSellOfferCrossSelf = -8,
7158    ManageSellOfferSellNoIssuer = -9,
7159    ManageSellOfferBuyNoIssuer = -10,
7160    ManageSellOfferNotFound = -11,
7161    ManageSellOfferLowReserve = -12,
7162}
7163
7164impl XdrCodec for ManageSellOfferResultCode {
7165    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7166        let value = *self as i32;
7167        value.to_xdr_buffered(write_stream);
7168    }
7169
7170    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7171        let enum_value = i32::from_xdr_buffered(read_stream)?;
7172        match enum_value {
7173            0 => Ok(ManageSellOfferResultCode::ManageSellOfferSuccess),
7174            -1 => Ok(ManageSellOfferResultCode::ManageSellOfferMalformed),
7175            -2 => Ok(ManageSellOfferResultCode::ManageSellOfferSellNoTrust),
7176            -3 => Ok(ManageSellOfferResultCode::ManageSellOfferBuyNoTrust),
7177            -4 => Ok(ManageSellOfferResultCode::ManageSellOfferSellNotAuthorized),
7178            -5 => Ok(ManageSellOfferResultCode::ManageSellOfferBuyNotAuthorized),
7179            -6 => Ok(ManageSellOfferResultCode::ManageSellOfferLineFull),
7180            -7 => Ok(ManageSellOfferResultCode::ManageSellOfferUnderfunded),
7181            -8 => Ok(ManageSellOfferResultCode::ManageSellOfferCrossSelf),
7182            -9 => Ok(ManageSellOfferResultCode::ManageSellOfferSellNoIssuer),
7183            -10 => Ok(ManageSellOfferResultCode::ManageSellOfferBuyNoIssuer),
7184            -11 => Ok(ManageSellOfferResultCode::ManageSellOfferNotFound),
7185            -12 => Ok(ManageSellOfferResultCode::ManageSellOfferLowReserve),
7186            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7187        }
7188    }
7189}
7190
7191#[allow(dead_code)]
7193#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7194pub enum ManageOfferEffect {
7195    ManageOfferCreated = 0,
7196    ManageOfferUpdated = 1,
7197    ManageOfferDeleted = 2,
7198}
7199
7200impl XdrCodec for ManageOfferEffect {
7201    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7202        let value = *self as i32;
7203        value.to_xdr_buffered(write_stream);
7204    }
7205
7206    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7207        let enum_value = i32::from_xdr_buffered(read_stream)?;
7208        match enum_value {
7209            0 => Ok(ManageOfferEffect::ManageOfferCreated),
7210            1 => Ok(ManageOfferEffect::ManageOfferUpdated),
7211            2 => Ok(ManageOfferEffect::ManageOfferDeleted),
7212            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7213        }
7214    }
7215}
7216
7217#[allow(dead_code)]
7219#[derive(Debug, Clone, Eq, PartialEq)]
7220pub struct ManageOfferSuccessResult {
7221    pub offers_claimed: UnlimitedVarArray<ClaimAtom>,
7222    pub offer: ManageOfferSuccessResultOffer,
7223}
7224
7225impl XdrCodec for ManageOfferSuccessResult {
7226    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7227        self.offers_claimed.to_xdr_buffered(write_stream);
7228        self.offer.to_xdr_buffered(write_stream);
7229    }
7230
7231    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7232        Ok(ManageOfferSuccessResult {
7233            offers_claimed: UnlimitedVarArray::<ClaimAtom>::from_xdr_buffered(read_stream)?,
7234            offer: ManageOfferSuccessResultOffer::from_xdr_buffered(read_stream)?,
7235        })
7236    }
7237}
7238
7239#[allow(dead_code)]
7241#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7242pub enum ManageBuyOfferResultCode {
7243    ManageBuyOfferSuccess = 0,
7244    ManageBuyOfferMalformed = -1,
7245    ManageBuyOfferSellNoTrust = -2,
7246    ManageBuyOfferBuyNoTrust = -3,
7247    ManageBuyOfferSellNotAuthorized = -4,
7248    ManageBuyOfferBuyNotAuthorized = -5,
7249    ManageBuyOfferLineFull = -6,
7250    ManageBuyOfferUnderfunded = -7,
7251    ManageBuyOfferCrossSelf = -8,
7252    ManageBuyOfferSellNoIssuer = -9,
7253    ManageBuyOfferBuyNoIssuer = -10,
7254    ManageBuyOfferNotFound = -11,
7255    ManageBuyOfferLowReserve = -12,
7256}
7257
7258impl XdrCodec for ManageBuyOfferResultCode {
7259    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7260        let value = *self as i32;
7261        value.to_xdr_buffered(write_stream);
7262    }
7263
7264    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7265        let enum_value = i32::from_xdr_buffered(read_stream)?;
7266        match enum_value {
7267            0 => Ok(ManageBuyOfferResultCode::ManageBuyOfferSuccess),
7268            -1 => Ok(ManageBuyOfferResultCode::ManageBuyOfferMalformed),
7269            -2 => Ok(ManageBuyOfferResultCode::ManageBuyOfferSellNoTrust),
7270            -3 => Ok(ManageBuyOfferResultCode::ManageBuyOfferBuyNoTrust),
7271            -4 => Ok(ManageBuyOfferResultCode::ManageBuyOfferSellNotAuthorized),
7272            -5 => Ok(ManageBuyOfferResultCode::ManageBuyOfferBuyNotAuthorized),
7273            -6 => Ok(ManageBuyOfferResultCode::ManageBuyOfferLineFull),
7274            -7 => Ok(ManageBuyOfferResultCode::ManageBuyOfferUnderfunded),
7275            -8 => Ok(ManageBuyOfferResultCode::ManageBuyOfferCrossSelf),
7276            -9 => Ok(ManageBuyOfferResultCode::ManageBuyOfferSellNoIssuer),
7277            -10 => Ok(ManageBuyOfferResultCode::ManageBuyOfferBuyNoIssuer),
7278            -11 => Ok(ManageBuyOfferResultCode::ManageBuyOfferNotFound),
7279            -12 => Ok(ManageBuyOfferResultCode::ManageBuyOfferLowReserve),
7280            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7281        }
7282    }
7283}
7284
7285#[allow(dead_code)]
7287#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7288pub enum SetOptionsResultCode {
7289    SetOptionsSuccess = 0,
7290    SetOptionsLowReserve = -1,
7291    SetOptionsTooManySigners = -2,
7292    SetOptionsBadFlags = -3,
7293    SetOptionsInvalidInflation = -4,
7294    SetOptionsCantChange = -5,
7295    SetOptionsUnknownFlag = -6,
7296    SetOptionsThresholdOutOfRange = -7,
7297    SetOptionsBadSigner = -8,
7298    SetOptionsInvalidHomeDomain = -9,
7299    SetOptionsAuthRevocableRequired = -10,
7300}
7301
7302impl XdrCodec for SetOptionsResultCode {
7303    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7304        let value = *self as i32;
7305        value.to_xdr_buffered(write_stream);
7306    }
7307
7308    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7309        let enum_value = i32::from_xdr_buffered(read_stream)?;
7310        match enum_value {
7311            0 => Ok(SetOptionsResultCode::SetOptionsSuccess),
7312            -1 => Ok(SetOptionsResultCode::SetOptionsLowReserve),
7313            -2 => Ok(SetOptionsResultCode::SetOptionsTooManySigners),
7314            -3 => Ok(SetOptionsResultCode::SetOptionsBadFlags),
7315            -4 => Ok(SetOptionsResultCode::SetOptionsInvalidInflation),
7316            -5 => Ok(SetOptionsResultCode::SetOptionsCantChange),
7317            -6 => Ok(SetOptionsResultCode::SetOptionsUnknownFlag),
7318            -7 => Ok(SetOptionsResultCode::SetOptionsThresholdOutOfRange),
7319            -8 => Ok(SetOptionsResultCode::SetOptionsBadSigner),
7320            -9 => Ok(SetOptionsResultCode::SetOptionsInvalidHomeDomain),
7321            -10 => Ok(SetOptionsResultCode::SetOptionsAuthRevocableRequired),
7322            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7323        }
7324    }
7325}
7326
7327#[allow(dead_code)]
7329#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7330pub enum ChangeTrustResultCode {
7331    ChangeTrustSuccess = 0,
7332    ChangeTrustMalformed = -1,
7333    ChangeTrustNoIssuer = -2,
7334    ChangeTrustInvalidLimit = -3,
7335    ChangeTrustLowReserve = -4,
7336    ChangeTrustSelfNotAllowed = -5,
7337    ChangeTrustTrustLineMissing = -6,
7338    ChangeTrustCannotDelete = -7,
7339    ChangeTrustNotAuthMaintainLiabilities = -8,
7340}
7341
7342impl XdrCodec for ChangeTrustResultCode {
7343    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7344        let value = *self as i32;
7345        value.to_xdr_buffered(write_stream);
7346    }
7347
7348    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7349        let enum_value = i32::from_xdr_buffered(read_stream)?;
7350        match enum_value {
7351            0 => Ok(ChangeTrustResultCode::ChangeTrustSuccess),
7352            -1 => Ok(ChangeTrustResultCode::ChangeTrustMalformed),
7353            -2 => Ok(ChangeTrustResultCode::ChangeTrustNoIssuer),
7354            -3 => Ok(ChangeTrustResultCode::ChangeTrustInvalidLimit),
7355            -4 => Ok(ChangeTrustResultCode::ChangeTrustLowReserve),
7356            -5 => Ok(ChangeTrustResultCode::ChangeTrustSelfNotAllowed),
7357            -6 => Ok(ChangeTrustResultCode::ChangeTrustTrustLineMissing),
7358            -7 => Ok(ChangeTrustResultCode::ChangeTrustCannotDelete),
7359            -8 => Ok(ChangeTrustResultCode::ChangeTrustNotAuthMaintainLiabilities),
7360            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7361        }
7362    }
7363}
7364
7365#[allow(dead_code)]
7367#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7368pub enum AllowTrustResultCode {
7369    AllowTrustSuccess = 0,
7370    AllowTrustMalformed = -1,
7371    AllowTrustNoTrustLine = -2,
7372    AllowTrustTrustNotRequired = -3,
7373    AllowTrustCantRevoke = -4,
7374    AllowTrustSelfNotAllowed = -5,
7375    AllowTrustLowReserve = -6,
7376}
7377
7378impl XdrCodec for AllowTrustResultCode {
7379    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7380        let value = *self as i32;
7381        value.to_xdr_buffered(write_stream);
7382    }
7383
7384    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7385        let enum_value = i32::from_xdr_buffered(read_stream)?;
7386        match enum_value {
7387            0 => Ok(AllowTrustResultCode::AllowTrustSuccess),
7388            -1 => Ok(AllowTrustResultCode::AllowTrustMalformed),
7389            -2 => Ok(AllowTrustResultCode::AllowTrustNoTrustLine),
7390            -3 => Ok(AllowTrustResultCode::AllowTrustTrustNotRequired),
7391            -4 => Ok(AllowTrustResultCode::AllowTrustCantRevoke),
7392            -5 => Ok(AllowTrustResultCode::AllowTrustSelfNotAllowed),
7393            -6 => Ok(AllowTrustResultCode::AllowTrustLowReserve),
7394            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7395        }
7396    }
7397}
7398
7399#[allow(dead_code)]
7401#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7402pub enum AccountMergeResultCode {
7403    AccountMergeSuccess = 0,
7404    AccountMergeMalformed = -1,
7405    AccountMergeNoAccount = -2,
7406    AccountMergeImmutableSet = -3,
7407    AccountMergeHasSubEntries = -4,
7408    AccountMergeSeqnumTooFar = -5,
7409    AccountMergeDestFull = -6,
7410    AccountMergeIsSponsor = -7,
7411}
7412
7413impl XdrCodec for AccountMergeResultCode {
7414    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7415        let value = *self as i32;
7416        value.to_xdr_buffered(write_stream);
7417    }
7418
7419    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7420        let enum_value = i32::from_xdr_buffered(read_stream)?;
7421        match enum_value {
7422            0 => Ok(AccountMergeResultCode::AccountMergeSuccess),
7423            -1 => Ok(AccountMergeResultCode::AccountMergeMalformed),
7424            -2 => Ok(AccountMergeResultCode::AccountMergeNoAccount),
7425            -3 => Ok(AccountMergeResultCode::AccountMergeImmutableSet),
7426            -4 => Ok(AccountMergeResultCode::AccountMergeHasSubEntries),
7427            -5 => Ok(AccountMergeResultCode::AccountMergeSeqnumTooFar),
7428            -6 => Ok(AccountMergeResultCode::AccountMergeDestFull),
7429            -7 => Ok(AccountMergeResultCode::AccountMergeIsSponsor),
7430            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7431        }
7432    }
7433}
7434
7435#[allow(dead_code)]
7437#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7438pub enum InflationResultCode {
7439    InflationSuccess = 0,
7440    InflationNotTime = -1,
7441}
7442
7443impl XdrCodec for InflationResultCode {
7444    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7445        let value = *self as i32;
7446        value.to_xdr_buffered(write_stream);
7447    }
7448
7449    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7450        let enum_value = i32::from_xdr_buffered(read_stream)?;
7451        match enum_value {
7452            0 => Ok(InflationResultCode::InflationSuccess),
7453            -1 => Ok(InflationResultCode::InflationNotTime),
7454            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7455        }
7456    }
7457}
7458
7459#[allow(dead_code)]
7461#[derive(Debug, Clone, Eq, PartialEq)]
7462pub struct InflationPayout {
7463    pub destination: AccountId,
7464    pub amount: Int64,
7465}
7466
7467impl XdrCodec for InflationPayout {
7468    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7469        self.destination.to_xdr_buffered(write_stream);
7470        self.amount.to_xdr_buffered(write_stream);
7471    }
7472
7473    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7474        Ok(InflationPayout {
7475            destination: AccountId::from_xdr_buffered(read_stream)?,
7476            amount: Int64::from_xdr_buffered(read_stream)?,
7477        })
7478    }
7479}
7480
7481#[allow(dead_code)]
7483#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7484pub enum ManageDataResultCode {
7485    ManageDataSuccess = 0,
7486    ManageDataNotSupportedYet = -1,
7487    ManageDataNameNotFound = -2,
7488    ManageDataLowReserve = -3,
7489    ManageDataInvalidName = -4,
7490}
7491
7492impl XdrCodec for ManageDataResultCode {
7493    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7494        let value = *self as i32;
7495        value.to_xdr_buffered(write_stream);
7496    }
7497
7498    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7499        let enum_value = i32::from_xdr_buffered(read_stream)?;
7500        match enum_value {
7501            0 => Ok(ManageDataResultCode::ManageDataSuccess),
7502            -1 => Ok(ManageDataResultCode::ManageDataNotSupportedYet),
7503            -2 => Ok(ManageDataResultCode::ManageDataNameNotFound),
7504            -3 => Ok(ManageDataResultCode::ManageDataLowReserve),
7505            -4 => Ok(ManageDataResultCode::ManageDataInvalidName),
7506            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7507        }
7508    }
7509}
7510
7511#[allow(dead_code)]
7513#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7514pub enum BumpSequenceResultCode {
7515    BumpSequenceSuccess = 0,
7516    BumpSequenceBadSeq = -1,
7517}
7518
7519impl XdrCodec for BumpSequenceResultCode {
7520    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7521        let value = *self as i32;
7522        value.to_xdr_buffered(write_stream);
7523    }
7524
7525    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7526        let enum_value = i32::from_xdr_buffered(read_stream)?;
7527        match enum_value {
7528            0 => Ok(BumpSequenceResultCode::BumpSequenceSuccess),
7529            -1 => Ok(BumpSequenceResultCode::BumpSequenceBadSeq),
7530            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7531        }
7532    }
7533}
7534
7535#[allow(dead_code)]
7537#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7538pub enum CreateClaimableBalanceResultCode {
7539    CreateClaimableBalanceSuccess = 0,
7540    CreateClaimableBalanceMalformed = -1,
7541    CreateClaimableBalanceLowReserve = -2,
7542    CreateClaimableBalanceNoTrust = -3,
7543    CreateClaimableBalanceNotAuthorized = -4,
7544    CreateClaimableBalanceUnderfunded = -5,
7545}
7546
7547impl XdrCodec for CreateClaimableBalanceResultCode {
7548    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7549        let value = *self as i32;
7550        value.to_xdr_buffered(write_stream);
7551    }
7552
7553    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7554        let enum_value = i32::from_xdr_buffered(read_stream)?;
7555        match enum_value {
7556            0 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceSuccess),
7557            -1 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceMalformed),
7558            -2 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceLowReserve),
7559            -3 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceNoTrust),
7560            -4 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceNotAuthorized),
7561            -5 => Ok(CreateClaimableBalanceResultCode::CreateClaimableBalanceUnderfunded),
7562            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7563        }
7564    }
7565}
7566
7567#[allow(dead_code)]
7569#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7570pub enum ClaimClaimableBalanceResultCode {
7571    ClaimClaimableBalanceSuccess = 0,
7572    ClaimClaimableBalanceDoesNotExist = -1,
7573    ClaimClaimableBalanceCannotClaim = -2,
7574    ClaimClaimableBalanceLineFull = -3,
7575    ClaimClaimableBalanceNoTrust = -4,
7576    ClaimClaimableBalanceNotAuthorized = -5,
7577}
7578
7579impl XdrCodec for ClaimClaimableBalanceResultCode {
7580    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7581        let value = *self as i32;
7582        value.to_xdr_buffered(write_stream);
7583    }
7584
7585    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7586        let enum_value = i32::from_xdr_buffered(read_stream)?;
7587        match enum_value {
7588            0 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceSuccess),
7589            -1 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceDoesNotExist),
7590            -2 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceCannotClaim),
7591            -3 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceLineFull),
7592            -4 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNoTrust),
7593            -5 => Ok(ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNotAuthorized),
7594            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7595        }
7596    }
7597}
7598
7599#[allow(dead_code)]
7601#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7602pub enum BeginSponsoringFutureReservesResultCode {
7603    BeginSponsoringFutureReservesSuccess = 0,
7604    BeginSponsoringFutureReservesMalformed = -1,
7605    BeginSponsoringFutureReservesAlreadySponsored = -2,
7606    BeginSponsoringFutureReservesRecursive = -3,
7607}
7608
7609impl XdrCodec for BeginSponsoringFutureReservesResultCode {
7610    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7611        let value = *self as i32;
7612        value.to_xdr_buffered(write_stream);
7613    }
7614
7615    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7616        let enum_value = i32::from_xdr_buffered(read_stream)?;
7617        match enum_value {
7618            0 => Ok(BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesSuccess),
7619            -1 => Ok(BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesMalformed),
7620            -2 => Ok(BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesAlreadySponsored),
7621            -3 => Ok(BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesRecursive),
7622            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7623        }
7624    }
7625}
7626
7627#[allow(dead_code)]
7629#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7630pub enum EndSponsoringFutureReservesResultCode {
7631    EndSponsoringFutureReservesSuccess = 0,
7632    EndSponsoringFutureReservesNotSponsored = -1,
7633}
7634
7635impl XdrCodec for EndSponsoringFutureReservesResultCode {
7636    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7637        let value = *self as i32;
7638        value.to_xdr_buffered(write_stream);
7639    }
7640
7641    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7642        let enum_value = i32::from_xdr_buffered(read_stream)?;
7643        match enum_value {
7644            0 => Ok(EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesSuccess),
7645            -1 => Ok(EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesNotSponsored),
7646            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7647        }
7648    }
7649}
7650
7651#[allow(dead_code)]
7653#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7654pub enum RevokeSponsorshipResultCode {
7655    RevokeSponsorshipSuccess = 0,
7656    RevokeSponsorshipDoesNotExist = -1,
7657    RevokeSponsorshipNotSponsor = -2,
7658    RevokeSponsorshipLowReserve = -3,
7659    RevokeSponsorshipOnlyTransferable = -4,
7660    RevokeSponsorshipMalformed = -5,
7661}
7662
7663impl XdrCodec for RevokeSponsorshipResultCode {
7664    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7665        let value = *self as i32;
7666        value.to_xdr_buffered(write_stream);
7667    }
7668
7669    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7670        let enum_value = i32::from_xdr_buffered(read_stream)?;
7671        match enum_value {
7672            0 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipSuccess),
7673            -1 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipDoesNotExist),
7674            -2 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipNotSponsor),
7675            -3 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipLowReserve),
7676            -4 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipOnlyTransferable),
7677            -5 => Ok(RevokeSponsorshipResultCode::RevokeSponsorshipMalformed),
7678            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7679        }
7680    }
7681}
7682
7683#[allow(dead_code)]
7685#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7686pub enum ClawbackResultCode {
7687    ClawbackSuccess = 0,
7688    ClawbackMalformed = -1,
7689    ClawbackNotClawbackEnabled = -2,
7690    ClawbackNoTrust = -3,
7691    ClawbackUnderfunded = -4,
7692}
7693
7694impl XdrCodec for ClawbackResultCode {
7695    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7696        let value = *self as i32;
7697        value.to_xdr_buffered(write_stream);
7698    }
7699
7700    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7701        let enum_value = i32::from_xdr_buffered(read_stream)?;
7702        match enum_value {
7703            0 => Ok(ClawbackResultCode::ClawbackSuccess),
7704            -1 => Ok(ClawbackResultCode::ClawbackMalformed),
7705            -2 => Ok(ClawbackResultCode::ClawbackNotClawbackEnabled),
7706            -3 => Ok(ClawbackResultCode::ClawbackNoTrust),
7707            -4 => Ok(ClawbackResultCode::ClawbackUnderfunded),
7708            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7709        }
7710    }
7711}
7712
7713#[allow(dead_code)]
7715#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7716pub enum ClawbackClaimableBalanceResultCode {
7717    ClawbackClaimableBalanceSuccess = 0,
7718    ClawbackClaimableBalanceDoesNotExist = -1,
7719    ClawbackClaimableBalanceNotIssuer = -2,
7720    ClawbackClaimableBalanceNotClawbackEnabled = -3,
7721}
7722
7723impl XdrCodec for ClawbackClaimableBalanceResultCode {
7724    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7725        let value = *self as i32;
7726        value.to_xdr_buffered(write_stream);
7727    }
7728
7729    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7730        let enum_value = i32::from_xdr_buffered(read_stream)?;
7731        match enum_value {
7732            0 => Ok(ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceSuccess),
7733            -1 => Ok(ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceDoesNotExist),
7734            -2 => Ok(ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotIssuer),
7735            -3 => Ok(ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotClawbackEnabled),
7736            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7737        }
7738    }
7739}
7740
7741#[allow(dead_code)]
7743#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7744pub enum SetTrustLineFlagsResultCode {
7745    SetTrustLineFlagsSuccess = 0,
7746    SetTrustLineFlagsMalformed = -1,
7747    SetTrustLineFlagsNoTrustLine = -2,
7748    SetTrustLineFlagsCantRevoke = -3,
7749    SetTrustLineFlagsInvalidState = -4,
7750    SetTrustLineFlagsLowReserve = -5,
7751}
7752
7753impl XdrCodec for SetTrustLineFlagsResultCode {
7754    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7755        let value = *self as i32;
7756        value.to_xdr_buffered(write_stream);
7757    }
7758
7759    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7760        let enum_value = i32::from_xdr_buffered(read_stream)?;
7761        match enum_value {
7762            0 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsSuccess),
7763            -1 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsMalformed),
7764            -2 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsNoTrustLine),
7765            -3 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsCantRevoke),
7766            -4 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsInvalidState),
7767            -5 => Ok(SetTrustLineFlagsResultCode::SetTrustLineFlagsLowReserve),
7768            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7769        }
7770    }
7771}
7772
7773#[allow(dead_code)]
7775#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7776pub enum LiquidityPoolDepositResultCode {
7777    LiquidityPoolDepositSuccess = 0,
7778    LiquidityPoolDepositMalformed = -1,
7779    LiquidityPoolDepositNoTrust = -2,
7780    LiquidityPoolDepositNotAuthorized = -3,
7781    LiquidityPoolDepositUnderfunded = -4,
7782    LiquidityPoolDepositLineFull = -5,
7783    LiquidityPoolDepositBadPrice = -6,
7784    LiquidityPoolDepositPoolFull = -7,
7785}
7786
7787impl XdrCodec for LiquidityPoolDepositResultCode {
7788    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7789        let value = *self as i32;
7790        value.to_xdr_buffered(write_stream);
7791    }
7792
7793    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7794        let enum_value = i32::from_xdr_buffered(read_stream)?;
7795        match enum_value {
7796            0 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositSuccess),
7797            -1 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositMalformed),
7798            -2 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositNoTrust),
7799            -3 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositNotAuthorized),
7800            -4 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositUnderfunded),
7801            -5 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositLineFull),
7802            -6 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositBadPrice),
7803            -7 => Ok(LiquidityPoolDepositResultCode::LiquidityPoolDepositPoolFull),
7804            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7805        }
7806    }
7807}
7808
7809#[allow(dead_code)]
7811#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7812pub enum LiquidityPoolWithdrawResultCode {
7813    LiquidityPoolWithdrawSuccess = 0,
7814    LiquidityPoolWithdrawMalformed = -1,
7815    LiquidityPoolWithdrawNoTrust = -2,
7816    LiquidityPoolWithdrawUnderfunded = -3,
7817    LiquidityPoolWithdrawLineFull = -4,
7818    LiquidityPoolWithdrawUnderMinimum = -5,
7819}
7820
7821impl XdrCodec for LiquidityPoolWithdrawResultCode {
7822    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7823        let value = *self as i32;
7824        value.to_xdr_buffered(write_stream);
7825    }
7826
7827    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7828        let enum_value = i32::from_xdr_buffered(read_stream)?;
7829        match enum_value {
7830            0 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawSuccess),
7831            -1 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawMalformed),
7832            -2 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawNoTrust),
7833            -3 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderfunded),
7834            -4 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawLineFull),
7835            -5 => Ok(LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderMinimum),
7836            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7837        }
7838    }
7839}
7840
7841#[allow(dead_code)]
7843#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7844pub enum InvokeHostFunctionResultCode {
7845    InvokeHostFunctionSuccess = 0,
7846    InvokeHostFunctionMalformed = -1,
7847    InvokeHostFunctionTrapped = -2,
7848    InvokeHostFunctionResourceLimitExceeded = -3,
7849    InvokeHostFunctionEntryArchived = -4,
7850    InvokeHostFunctionInsufficientRefundableFee = -5,
7851}
7852
7853impl XdrCodec for InvokeHostFunctionResultCode {
7854    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7855        let value = *self as i32;
7856        value.to_xdr_buffered(write_stream);
7857    }
7858
7859    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7860        let enum_value = i32::from_xdr_buffered(read_stream)?;
7861        match enum_value {
7862            0 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionSuccess),
7863            -1 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionMalformed),
7864            -2 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionTrapped),
7865            -3 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionResourceLimitExceeded),
7866            -4 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionEntryArchived),
7867            -5 => Ok(InvokeHostFunctionResultCode::InvokeHostFunctionInsufficientRefundableFee),
7868            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7869        }
7870    }
7871}
7872
7873#[allow(dead_code)]
7875#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7876pub enum ExtendFootprintTtlResultCode {
7877    ExtendFootprintTtlSuccess = 0,
7878    ExtendFootprintTtlMalformed = -1,
7879    ExtendFootprintTtlResourceLimitExceeded = -2,
7880    ExtendFootprintTtlInsufficientRefundableFee = -3,
7881}
7882
7883impl XdrCodec for ExtendFootprintTtlResultCode {
7884    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7885        let value = *self as i32;
7886        value.to_xdr_buffered(write_stream);
7887    }
7888
7889    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7890        let enum_value = i32::from_xdr_buffered(read_stream)?;
7891        match enum_value {
7892            0 => Ok(ExtendFootprintTtlResultCode::ExtendFootprintTtlSuccess),
7893            -1 => Ok(ExtendFootprintTtlResultCode::ExtendFootprintTtlMalformed),
7894            -2 => Ok(ExtendFootprintTtlResultCode::ExtendFootprintTtlResourceLimitExceeded),
7895            -3 => Ok(ExtendFootprintTtlResultCode::ExtendFootprintTtlInsufficientRefundableFee),
7896            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7897        }
7898    }
7899}
7900
7901#[allow(dead_code)]
7903#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7904pub enum RestoreFootprintResultCode {
7905    RestoreFootprintSuccess = 0,
7906    RestoreFootprintMalformed = -1,
7907    RestoreFootprintResourceLimitExceeded = -2,
7908    RestoreFootprintInsufficientRefundableFee = -3,
7909}
7910
7911impl XdrCodec for RestoreFootprintResultCode {
7912    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7913        let value = *self as i32;
7914        value.to_xdr_buffered(write_stream);
7915    }
7916
7917    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7918        let enum_value = i32::from_xdr_buffered(read_stream)?;
7919        match enum_value {
7920            0 => Ok(RestoreFootprintResultCode::RestoreFootprintSuccess),
7921            -1 => Ok(RestoreFootprintResultCode::RestoreFootprintMalformed),
7922            -2 => Ok(RestoreFootprintResultCode::RestoreFootprintResourceLimitExceeded),
7923            -3 => Ok(RestoreFootprintResultCode::RestoreFootprintInsufficientRefundableFee),
7924            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7925        }
7926    }
7927}
7928
7929#[allow(dead_code)]
7931#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7932pub enum OperationResultCode {
7933    OpInner = 0,
7934    OpBadAuth = -1,
7935    OpNoAccount = -2,
7936    OpNotSupported = -3,
7937    OpTooManySubentries = -4,
7938    OpExceededWorkLimit = -5,
7939    OpTooManySponsoring = -6,
7940}
7941
7942impl XdrCodec for OperationResultCode {
7943    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7944        let value = *self as i32;
7945        value.to_xdr_buffered(write_stream);
7946    }
7947
7948    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7949        let enum_value = i32::from_xdr_buffered(read_stream)?;
7950        match enum_value {
7951            0 => Ok(OperationResultCode::OpInner),
7952            -1 => Ok(OperationResultCode::OpBadAuth),
7953            -2 => Ok(OperationResultCode::OpNoAccount),
7954            -3 => Ok(OperationResultCode::OpNotSupported),
7955            -4 => Ok(OperationResultCode::OpTooManySubentries),
7956            -5 => Ok(OperationResultCode::OpExceededWorkLimit),
7957            -6 => Ok(OperationResultCode::OpTooManySponsoring),
7958            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
7959        }
7960    }
7961}
7962
7963#[allow(dead_code)]
7965#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7966pub enum TransactionResultCode {
7967    TxFeeBumpInnerSuccess = 1,
7968    TxSuccess = 0,
7969    TxFailed = -1,
7970    TxTooEarly = -2,
7971    TxTooLate = -3,
7972    TxMissingOperation = -4,
7973    TxBadSeq = -5,
7974    TxBadAuth = -6,
7975    TxInsufficientBalance = -7,
7976    TxNoAccount = -8,
7977    TxInsufficientFee = -9,
7978    TxBadAuthExtra = -10,
7979    TxInternalError = -11,
7980    TxNotSupported = -12,
7981    TxFeeBumpInnerFailed = -13,
7982    TxBadSponsorship = -14,
7983    TxBadMinSeqAgeOrGap = -15,
7984    TxMalformed = -16,
7985    TxSorobanInvalid = -17,
7986}
7987
7988impl XdrCodec for TransactionResultCode {
7989    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
7990        let value = *self as i32;
7991        value.to_xdr_buffered(write_stream);
7992    }
7993
7994    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
7995        let enum_value = i32::from_xdr_buffered(read_stream)?;
7996        match enum_value {
7997            1 => Ok(TransactionResultCode::TxFeeBumpInnerSuccess),
7998            0 => Ok(TransactionResultCode::TxSuccess),
7999            -1 => Ok(TransactionResultCode::TxFailed),
8000            -2 => Ok(TransactionResultCode::TxTooEarly),
8001            -3 => Ok(TransactionResultCode::TxTooLate),
8002            -4 => Ok(TransactionResultCode::TxMissingOperation),
8003            -5 => Ok(TransactionResultCode::TxBadSeq),
8004            -6 => Ok(TransactionResultCode::TxBadAuth),
8005            -7 => Ok(TransactionResultCode::TxInsufficientBalance),
8006            -8 => Ok(TransactionResultCode::TxNoAccount),
8007            -9 => Ok(TransactionResultCode::TxInsufficientFee),
8008            -10 => Ok(TransactionResultCode::TxBadAuthExtra),
8009            -11 => Ok(TransactionResultCode::TxInternalError),
8010            -12 => Ok(TransactionResultCode::TxNotSupported),
8011            -13 => Ok(TransactionResultCode::TxFeeBumpInnerFailed),
8012            -14 => Ok(TransactionResultCode::TxBadSponsorship),
8013            -15 => Ok(TransactionResultCode::TxBadMinSeqAgeOrGap),
8014            -16 => Ok(TransactionResultCode::TxMalformed),
8015            -17 => Ok(TransactionResultCode::TxSorobanInvalid),
8016            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
8017        }
8018    }
8019}
8020
8021#[allow(dead_code)]
8023#[derive(Debug, Clone, Eq, PartialEq)]
8024pub struct InnerTransactionResult {
8025    pub fee_charged: Int64,
8026    pub result: InnerTransactionResultResult,
8027    pub ext: InnerTransactionResultExt,
8028}
8029
8030impl XdrCodec for InnerTransactionResult {
8031    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8032        self.fee_charged.to_xdr_buffered(write_stream);
8033        self.result.to_xdr_buffered(write_stream);
8034        self.ext.to_xdr_buffered(write_stream);
8035    }
8036
8037    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8038        Ok(InnerTransactionResult {
8039            fee_charged: Int64::from_xdr_buffered(read_stream)?,
8040            result: InnerTransactionResultResult::from_xdr_buffered(read_stream)?,
8041            ext: InnerTransactionResultExt::from_xdr_buffered(read_stream)?,
8042        })
8043    }
8044}
8045
8046#[allow(dead_code)]
8048#[derive(Debug, Clone, Eq, PartialEq)]
8049pub struct InnerTransactionResultPair {
8050    pub transaction_hash: Hash,
8051    pub result: InnerTransactionResult,
8052}
8053
8054impl XdrCodec for InnerTransactionResultPair {
8055    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8056        self.transaction_hash.to_xdr_buffered(write_stream);
8057        self.result.to_xdr_buffered(write_stream);
8058    }
8059
8060    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8061        Ok(InnerTransactionResultPair {
8062            transaction_hash: Hash::from_xdr_buffered(read_stream)?,
8063            result: InnerTransactionResult::from_xdr_buffered(read_stream)?,
8064        })
8065    }
8066}
8067
8068#[allow(dead_code)]
8070#[derive(Debug, Clone, Eq, PartialEq)]
8071pub struct TransactionResult {
8072    pub fee_charged: Int64,
8073    pub result: TransactionResultResult,
8074    pub ext: TransactionResultExt,
8075}
8076
8077impl XdrCodec for TransactionResult {
8078    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8079        self.fee_charged.to_xdr_buffered(write_stream);
8080        self.result.to_xdr_buffered(write_stream);
8081        self.ext.to_xdr_buffered(write_stream);
8082    }
8083
8084    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8085        Ok(TransactionResult {
8086            fee_charged: Int64::from_xdr_buffered(read_stream)?,
8087            result: TransactionResultResult::from_xdr_buffered(read_stream)?,
8088            ext: TransactionResultExt::from_xdr_buffered(read_stream)?,
8089        })
8090    }
8091}
8092
8093#[allow(dead_code)]
8095pub type Hash = [u8; 32];
8096
8097#[allow(dead_code)]
8099pub type Uint256 = [u8; 32];
8100
8101#[allow(dead_code)]
8103pub type Uint32 = u32;
8104
8105#[allow(dead_code)]
8107pub type Int32 = i32;
8108
8109#[allow(dead_code)]
8111pub type Uint64 = u64;
8112
8113#[allow(dead_code)]
8115pub type Int64 = i64;
8116
8117#[allow(dead_code)]
8119pub type TimePoint = Uint64;
8120
8121#[allow(dead_code)]
8123pub type Duration = Uint64;
8124
8125#[allow(dead_code)]
8127#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8128pub enum CryptoKeyType {
8129    KeyTypeEd25519 = 0,
8130    KeyTypePreAuthTx = 1,
8131    KeyTypeHashX = 2,
8132    KeyTypeEd25519SignedPayload = 3,
8133    KeyTypeMuxedEd25519 = 256,
8134}
8135
8136impl XdrCodec for CryptoKeyType {
8137    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8138        let value = *self as i32;
8139        value.to_xdr_buffered(write_stream);
8140    }
8141
8142    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8143        let enum_value = i32::from_xdr_buffered(read_stream)?;
8144        match enum_value {
8145            0 => Ok(CryptoKeyType::KeyTypeEd25519),
8146            1 => Ok(CryptoKeyType::KeyTypePreAuthTx),
8147            2 => Ok(CryptoKeyType::KeyTypeHashX),
8148            3 => Ok(CryptoKeyType::KeyTypeEd25519SignedPayload),
8149            256 => Ok(CryptoKeyType::KeyTypeMuxedEd25519),
8150            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
8151        }
8152    }
8153}
8154
8155#[allow(dead_code)]
8157#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8158pub enum PublicKeyType {
8159    PublicKeyTypeEd25519 = 0,
8160}
8161
8162impl XdrCodec for PublicKeyType {
8163    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8164        let value = *self as i32;
8165        value.to_xdr_buffered(write_stream);
8166    }
8167
8168    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8169        let enum_value = i32::from_xdr_buffered(read_stream)?;
8170        match enum_value {
8171            0 => Ok(PublicKeyType::PublicKeyTypeEd25519),
8172            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
8173        }
8174    }
8175}
8176
8177#[allow(dead_code)]
8179#[derive(Debug, Copy, Clone, Eq, PartialEq)]
8180pub enum SignerKeyType {
8181    SignerKeyTypeEd25519 = 0,
8182    SignerKeyTypePreAuthTx = 1,
8183    SignerKeyTypeHashX = 2,
8184    SignerKeyTypeEd25519SignedPayload = 3,
8185}
8186
8187impl XdrCodec for SignerKeyType {
8188    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8189        let value = *self as i32;
8190        value.to_xdr_buffered(write_stream);
8191    }
8192
8193    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8194        let enum_value = i32::from_xdr_buffered(read_stream)?;
8195        match enum_value {
8196            0 => Ok(SignerKeyType::SignerKeyTypeEd25519),
8197            1 => Ok(SignerKeyType::SignerKeyTypePreAuthTx),
8198            2 => Ok(SignerKeyType::SignerKeyTypeHashX),
8199            3 => Ok(SignerKeyType::SignerKeyTypeEd25519SignedPayload),
8200            _ => Err(DecodeError::InvalidEnumDiscriminator { at_position: read_stream.get_position() }),
8201        }
8202    }
8203}
8204
8205#[allow(dead_code)]
8207#[derive(Debug, Clone, Eq, PartialEq)]
8208pub struct SignerKeyEd25519SignedPayload {
8209    pub ed25519: Uint256,
8210    pub payload: LimitedVarOpaque<64>,
8211}
8212
8213impl XdrCodec for SignerKeyEd25519SignedPayload {
8214    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8215        self.ed25519.to_xdr_buffered(write_stream);
8216        self.payload.to_xdr_buffered(write_stream);
8217    }
8218
8219    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8220        Ok(SignerKeyEd25519SignedPayload {
8221            ed25519: Uint256::from_xdr_buffered(read_stream)?,
8222            payload: LimitedVarOpaque::<64>::from_xdr_buffered(read_stream)?,
8223        })
8224    }
8225}
8226
8227#[allow(dead_code)]
8229pub type Signature = LimitedVarOpaque<64>;
8230
8231#[allow(dead_code)]
8233pub type SignatureHint = [u8; 4];
8234
8235#[allow(dead_code)]
8237#[cfg(feature = "all-types")]
8238pub type NodeId = PublicKey;
8239
8240#[allow(dead_code)]
8242pub type AccountId = PublicKey;
8243
8244#[allow(dead_code)]
8246#[derive(Debug, Clone, Eq, PartialEq)]
8247pub struct Curve25519Secret {
8248    pub key: [u8; 32],
8249}
8250
8251impl XdrCodec for Curve25519Secret {
8252    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8253        self.key.to_xdr_buffered(write_stream);
8254    }
8255
8256    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8257        Ok(Curve25519Secret { key: <[u8; 32]>::from_xdr_buffered(read_stream)? })
8258    }
8259}
8260
8261#[allow(dead_code)]
8263#[cfg(feature = "all-types")]
8264#[derive(Debug, Clone, Eq, PartialEq)]
8265pub struct Curve25519Public {
8266    pub key: [u8; 32],
8267}
8268
8269#[cfg(feature = "all-types")]
8270impl XdrCodec for Curve25519Public {
8271    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8272        self.key.to_xdr_buffered(write_stream);
8273    }
8274
8275    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8276        Ok(Curve25519Public { key: <[u8; 32]>::from_xdr_buffered(read_stream)? })
8277    }
8278}
8279
8280#[allow(dead_code)]
8282#[cfg(feature = "all-types")]
8283#[derive(Debug, Clone, Eq, PartialEq)]
8284pub struct HmacSha256Key {
8285    pub key: [u8; 32],
8286}
8287
8288#[cfg(feature = "all-types")]
8289impl XdrCodec for HmacSha256Key {
8290    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8291        self.key.to_xdr_buffered(write_stream);
8292    }
8293
8294    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8295        Ok(HmacSha256Key { key: <[u8; 32]>::from_xdr_buffered(read_stream)? })
8296    }
8297}
8298
8299#[allow(dead_code)]
8301#[cfg(feature = "all-types")]
8302#[derive(Debug, Clone, Eq, PartialEq)]
8303pub struct HmacSha256Mac {
8304    pub mac: [u8; 32],
8305}
8306
8307#[cfg(feature = "all-types")]
8308impl XdrCodec for HmacSha256Mac {
8309    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8310        self.mac.to_xdr_buffered(write_stream);
8311    }
8312
8313    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8314        Ok(HmacSha256Mac { mac: <[u8; 32]>::from_xdr_buffered(read_stream)? })
8315    }
8316}
8317
8318#[allow(dead_code)]
8320#[cfg(feature = "all-types")]
8321#[derive(Debug, Clone, Eq, PartialEq)]
8322pub enum ScpStatementPledges {
8323    ScpStPrepare(ScpStatementPrepare),
8324    ScpStConfirm(ScpStatementConfirm),
8325    ScpStExternalize(ScpStatementExternalize),
8326    ScpStNominate(ScpNomination),
8327}
8328
8329#[cfg(feature = "all-types")]
8330impl XdrCodec for ScpStatementPledges {
8331    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8332        match self {
8333            ScpStatementPledges::ScpStPrepare(value) => {
8334                ScpStatementType::ScpStPrepare.to_xdr_buffered(write_stream);
8335                value.to_xdr_buffered(write_stream)
8336            },
8337            ScpStatementPledges::ScpStConfirm(value) => {
8338                ScpStatementType::ScpStConfirm.to_xdr_buffered(write_stream);
8339                value.to_xdr_buffered(write_stream)
8340            },
8341            ScpStatementPledges::ScpStExternalize(value) => {
8342                ScpStatementType::ScpStExternalize.to_xdr_buffered(write_stream);
8343                value.to_xdr_buffered(write_stream)
8344            },
8345            ScpStatementPledges::ScpStNominate(value) => {
8346                ScpStatementType::ScpStNominate.to_xdr_buffered(write_stream);
8347                value.to_xdr_buffered(write_stream)
8348            },
8349        }
8350    }
8351
8352    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8353        match ScpStatementType::from_xdr_buffered(read_stream)? {
8354            ScpStatementType::ScpStPrepare =>
8355                Ok(ScpStatementPledges::ScpStPrepare(ScpStatementPrepare::from_xdr_buffered(read_stream)?)),
8356            ScpStatementType::ScpStConfirm =>
8357                Ok(ScpStatementPledges::ScpStConfirm(ScpStatementConfirm::from_xdr_buffered(read_stream)?)),
8358            ScpStatementType::ScpStExternalize =>
8359                Ok(ScpStatementPledges::ScpStExternalize(ScpStatementExternalize::from_xdr_buffered(read_stream)?)),
8360            ScpStatementType::ScpStNominate =>
8361                Ok(ScpStatementPledges::ScpStNominate(ScpNomination::from_xdr_buffered(read_stream)?)),
8362        }
8363    }
8364}
8365
8366#[allow(dead_code)]
8368#[derive(Debug, Clone, Eq, PartialEq)]
8369pub enum ConfigSettingEntry {
8370    ConfigSettingContractMaxSizeBytes(Uint32),
8371    ConfigSettingContractComputeV0(ConfigSettingContractComputeV0),
8372    ConfigSettingContractLedgerCostV0(ConfigSettingContractLedgerCostV0),
8373    ConfigSettingContractHistoricalDataV0(ConfigSettingContractHistoricalDataV0),
8374    ConfigSettingContractEventsV0(ConfigSettingContractEventsV0),
8375    ConfigSettingContractBandwidthV0(ConfigSettingContractBandwidthV0),
8376    ConfigSettingContractCostParamsCpuInstructions(ContractCostParams),
8377    ConfigSettingContractCostParamsMemoryBytes(ContractCostParams),
8378    ConfigSettingContractDataKeySizeBytes(Uint32),
8379    ConfigSettingContractDataEntrySizeBytes(Uint32),
8380    ConfigSettingStateArchival(StateArchivalSettings),
8381    ConfigSettingContractExecutionLanes(ConfigSettingContractExecutionLanesV0),
8382    ConfigSettingBucketlistSizeWindow(UnlimitedVarArray<Uint64>),
8383    ConfigSettingEvictionIterator(EvictionIterator),
8384}
8385
8386impl XdrCodec for ConfigSettingEntry {
8387    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8388        match self {
8389            ConfigSettingEntry::ConfigSettingContractMaxSizeBytes(value) => {
8390                ConfigSettingId::ConfigSettingContractMaxSizeBytes.to_xdr_buffered(write_stream);
8391                value.to_xdr_buffered(write_stream)
8392            },
8393            ConfigSettingEntry::ConfigSettingContractComputeV0(value) => {
8394                ConfigSettingId::ConfigSettingContractComputeV0.to_xdr_buffered(write_stream);
8395                value.to_xdr_buffered(write_stream)
8396            },
8397            ConfigSettingEntry::ConfigSettingContractLedgerCostV0(value) => {
8398                ConfigSettingId::ConfigSettingContractLedgerCostV0.to_xdr_buffered(write_stream);
8399                value.to_xdr_buffered(write_stream)
8400            },
8401            ConfigSettingEntry::ConfigSettingContractHistoricalDataV0(value) => {
8402                ConfigSettingId::ConfigSettingContractHistoricalDataV0.to_xdr_buffered(write_stream);
8403                value.to_xdr_buffered(write_stream)
8404            },
8405            ConfigSettingEntry::ConfigSettingContractEventsV0(value) => {
8406                ConfigSettingId::ConfigSettingContractEventsV0.to_xdr_buffered(write_stream);
8407                value.to_xdr_buffered(write_stream)
8408            },
8409            ConfigSettingEntry::ConfigSettingContractBandwidthV0(value) => {
8410                ConfigSettingId::ConfigSettingContractBandwidthV0.to_xdr_buffered(write_stream);
8411                value.to_xdr_buffered(write_stream)
8412            },
8413            ConfigSettingEntry::ConfigSettingContractCostParamsCpuInstructions(value) => {
8414                ConfigSettingId::ConfigSettingContractCostParamsCpuInstructions.to_xdr_buffered(write_stream);
8415                value.to_xdr_buffered(write_stream)
8416            },
8417            ConfigSettingEntry::ConfigSettingContractCostParamsMemoryBytes(value) => {
8418                ConfigSettingId::ConfigSettingContractCostParamsMemoryBytes.to_xdr_buffered(write_stream);
8419                value.to_xdr_buffered(write_stream)
8420            },
8421            ConfigSettingEntry::ConfigSettingContractDataKeySizeBytes(value) => {
8422                ConfigSettingId::ConfigSettingContractDataKeySizeBytes.to_xdr_buffered(write_stream);
8423                value.to_xdr_buffered(write_stream)
8424            },
8425            ConfigSettingEntry::ConfigSettingContractDataEntrySizeBytes(value) => {
8426                ConfigSettingId::ConfigSettingContractDataEntrySizeBytes.to_xdr_buffered(write_stream);
8427                value.to_xdr_buffered(write_stream)
8428            },
8429            ConfigSettingEntry::ConfigSettingStateArchival(value) => {
8430                ConfigSettingId::ConfigSettingStateArchival.to_xdr_buffered(write_stream);
8431                value.to_xdr_buffered(write_stream)
8432            },
8433            ConfigSettingEntry::ConfigSettingContractExecutionLanes(value) => {
8434                ConfigSettingId::ConfigSettingContractExecutionLanes.to_xdr_buffered(write_stream);
8435                value.to_xdr_buffered(write_stream)
8436            },
8437            ConfigSettingEntry::ConfigSettingBucketlistSizeWindow(value) => {
8438                ConfigSettingId::ConfigSettingBucketlistSizeWindow.to_xdr_buffered(write_stream);
8439                value.to_xdr_buffered(write_stream)
8440            },
8441            ConfigSettingEntry::ConfigSettingEvictionIterator(value) => {
8442                ConfigSettingId::ConfigSettingEvictionIterator.to_xdr_buffered(write_stream);
8443                value.to_xdr_buffered(write_stream)
8444            },
8445        }
8446    }
8447
8448    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8449        match ConfigSettingId::from_xdr_buffered(read_stream)? {
8450            ConfigSettingId::ConfigSettingContractMaxSizeBytes =>
8451                Ok(ConfigSettingEntry::ConfigSettingContractMaxSizeBytes(Uint32::from_xdr_buffered(read_stream)?)),
8452            ConfigSettingId::ConfigSettingContractComputeV0 => Ok(ConfigSettingEntry::ConfigSettingContractComputeV0(
8453                ConfigSettingContractComputeV0::from_xdr_buffered(read_stream)?,
8454            )),
8455            ConfigSettingId::ConfigSettingContractLedgerCostV0 =>
8456                Ok(ConfigSettingEntry::ConfigSettingContractLedgerCostV0(
8457                    ConfigSettingContractLedgerCostV0::from_xdr_buffered(read_stream)?,
8458                )),
8459            ConfigSettingId::ConfigSettingContractHistoricalDataV0 =>
8460                Ok(ConfigSettingEntry::ConfigSettingContractHistoricalDataV0(
8461                    ConfigSettingContractHistoricalDataV0::from_xdr_buffered(read_stream)?,
8462                )),
8463            ConfigSettingId::ConfigSettingContractEventsV0 => Ok(ConfigSettingEntry::ConfigSettingContractEventsV0(
8464                ConfigSettingContractEventsV0::from_xdr_buffered(read_stream)?,
8465            )),
8466            ConfigSettingId::ConfigSettingContractBandwidthV0 =>
8467                Ok(ConfigSettingEntry::ConfigSettingContractBandwidthV0(
8468                    ConfigSettingContractBandwidthV0::from_xdr_buffered(read_stream)?,
8469                )),
8470            ConfigSettingId::ConfigSettingContractCostParamsCpuInstructions =>
8471                Ok(ConfigSettingEntry::ConfigSettingContractCostParamsCpuInstructions(
8472                    ContractCostParams::from_xdr_buffered(read_stream)?,
8473                )),
8474            ConfigSettingId::ConfigSettingContractCostParamsMemoryBytes =>
8475                Ok(ConfigSettingEntry::ConfigSettingContractCostParamsMemoryBytes(
8476                    ContractCostParams::from_xdr_buffered(read_stream)?,
8477                )),
8478            ConfigSettingId::ConfigSettingContractDataKeySizeBytes =>
8479                Ok(ConfigSettingEntry::ConfigSettingContractDataKeySizeBytes(Uint32::from_xdr_buffered(read_stream)?)),
8480            ConfigSettingId::ConfigSettingContractDataEntrySizeBytes =>
8481                Ok(ConfigSettingEntry::ConfigSettingContractDataEntrySizeBytes(Uint32::from_xdr_buffered(read_stream)?)),
8482            ConfigSettingId::ConfigSettingStateArchival => Ok(ConfigSettingEntry::ConfigSettingStateArchival(
8483                StateArchivalSettings::from_xdr_buffered(read_stream)?,
8484            )),
8485            ConfigSettingId::ConfigSettingContractExecutionLanes =>
8486                Ok(ConfigSettingEntry::ConfigSettingContractExecutionLanes(
8487                    ConfigSettingContractExecutionLanesV0::from_xdr_buffered(read_stream)?,
8488                )),
8489            ConfigSettingId::ConfigSettingBucketlistSizeWindow =>
8490                Ok(ConfigSettingEntry::ConfigSettingBucketlistSizeWindow(
8491                    UnlimitedVarArray::<Uint64>::from_xdr_buffered(read_stream)?,
8492                )),
8493            ConfigSettingId::ConfigSettingEvictionIterator =>
8494                Ok(ConfigSettingEntry::ConfigSettingEvictionIterator(EvictionIterator::from_xdr_buffered(read_stream)?)),
8495        }
8496    }
8497}
8498
8499#[allow(dead_code)]
8501#[cfg(feature = "all-types")]
8502#[derive(Debug, Clone, Eq, PartialEq)]
8503pub enum ScEnvMetaEntry {
8504    ScEnvMetaKindInterfaceVersion(Uint64),
8505}
8506
8507#[cfg(feature = "all-types")]
8508impl XdrCodec for ScEnvMetaEntry {
8509    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8510        match self {
8511            ScEnvMetaEntry::ScEnvMetaKindInterfaceVersion(value) => {
8512                ScEnvMetaKind::ScEnvMetaKindInterfaceVersion.to_xdr_buffered(write_stream);
8513                value.to_xdr_buffered(write_stream)
8514            },
8515        }
8516    }
8517
8518    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8519        match ScEnvMetaKind::from_xdr_buffered(read_stream)? {
8520            ScEnvMetaKind::ScEnvMetaKindInterfaceVersion =>
8521                Ok(ScEnvMetaEntry::ScEnvMetaKindInterfaceVersion(Uint64::from_xdr_buffered(read_stream)?)),
8522        }
8523    }
8524}
8525
8526#[allow(dead_code)]
8528#[cfg(feature = "all-types")]
8529#[derive(Debug, Clone, Eq, PartialEq)]
8530pub enum ScMetaEntry {
8531    ScMetaV0(ScMetaV0),
8532}
8533
8534#[cfg(feature = "all-types")]
8535impl XdrCodec for ScMetaEntry {
8536    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8537        match self {
8538            ScMetaEntry::ScMetaV0(value) => {
8539                ScMetaKind::ScMetaV0.to_xdr_buffered(write_stream);
8540                value.to_xdr_buffered(write_stream)
8541            },
8542        }
8543    }
8544
8545    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8546        match ScMetaKind::from_xdr_buffered(read_stream)? {
8547            ScMetaKind::ScMetaV0 => Ok(ScMetaEntry::ScMetaV0(ScMetaV0::from_xdr_buffered(read_stream)?)),
8548        }
8549    }
8550}
8551
8552#[allow(dead_code)]
8554#[cfg(feature = "all-types")]
8555#[derive(Debug, Clone, Eq, PartialEq)]
8556pub enum ScSpecTypeDef {
8557    ScSpecTypeVal,
8558    ScSpecTypeBool,
8559    ScSpecTypeVoid,
8560    ScSpecTypeError,
8561    ScSpecTypeU32,
8562    ScSpecTypeI32,
8563    ScSpecTypeU64,
8564    ScSpecTypeI64,
8565    ScSpecTypeTimepoint,
8566    ScSpecTypeDuration,
8567    ScSpecTypeU128,
8568    ScSpecTypeI128,
8569    ScSpecTypeU256,
8570    ScSpecTypeI256,
8571    ScSpecTypeBytes,
8572    ScSpecTypeString,
8573    ScSpecTypeSymbol,
8574    ScSpecTypeAddress,
8575    ScSpecTypeOption(Box<ScSpecTypeOption>),
8576    ScSpecTypeResult(Box<ScSpecTypeResult>),
8577    ScSpecTypeVec(Box<ScSpecTypeVec>),
8578    ScSpecTypeMap(Box<ScSpecTypeMap>),
8579    ScSpecTypeTuple(Box<ScSpecTypeTuple>),
8580    ScSpecTypeBytesN(Box<ScSpecTypeBytesN>),
8581    ScSpecTypeUdt(Box<ScSpecTypeUdt>),
8582}
8583
8584#[cfg(feature = "all-types")]
8585impl XdrCodec for ScSpecTypeDef {
8586    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8587        match self {
8588            ScSpecTypeDef::ScSpecTypeVal => ScSpecType::ScSpecTypeVal.to_xdr_buffered(write_stream),
8589            ScSpecTypeDef::ScSpecTypeBool => ScSpecType::ScSpecTypeBool.to_xdr_buffered(write_stream),
8590            ScSpecTypeDef::ScSpecTypeVoid => ScSpecType::ScSpecTypeVoid.to_xdr_buffered(write_stream),
8591            ScSpecTypeDef::ScSpecTypeError => ScSpecType::ScSpecTypeError.to_xdr_buffered(write_stream),
8592            ScSpecTypeDef::ScSpecTypeU32 => ScSpecType::ScSpecTypeU32.to_xdr_buffered(write_stream),
8593            ScSpecTypeDef::ScSpecTypeI32 => ScSpecType::ScSpecTypeI32.to_xdr_buffered(write_stream),
8594            ScSpecTypeDef::ScSpecTypeU64 => ScSpecType::ScSpecTypeU64.to_xdr_buffered(write_stream),
8595            ScSpecTypeDef::ScSpecTypeI64 => ScSpecType::ScSpecTypeI64.to_xdr_buffered(write_stream),
8596            ScSpecTypeDef::ScSpecTypeTimepoint => ScSpecType::ScSpecTypeTimepoint.to_xdr_buffered(write_stream),
8597            ScSpecTypeDef::ScSpecTypeDuration => ScSpecType::ScSpecTypeDuration.to_xdr_buffered(write_stream),
8598            ScSpecTypeDef::ScSpecTypeU128 => ScSpecType::ScSpecTypeU128.to_xdr_buffered(write_stream),
8599            ScSpecTypeDef::ScSpecTypeI128 => ScSpecType::ScSpecTypeI128.to_xdr_buffered(write_stream),
8600            ScSpecTypeDef::ScSpecTypeU256 => ScSpecType::ScSpecTypeU256.to_xdr_buffered(write_stream),
8601            ScSpecTypeDef::ScSpecTypeI256 => ScSpecType::ScSpecTypeI256.to_xdr_buffered(write_stream),
8602            ScSpecTypeDef::ScSpecTypeBytes => ScSpecType::ScSpecTypeBytes.to_xdr_buffered(write_stream),
8603            ScSpecTypeDef::ScSpecTypeString => ScSpecType::ScSpecTypeString.to_xdr_buffered(write_stream),
8604            ScSpecTypeDef::ScSpecTypeSymbol => ScSpecType::ScSpecTypeSymbol.to_xdr_buffered(write_stream),
8605            ScSpecTypeDef::ScSpecTypeAddress => ScSpecType::ScSpecTypeAddress.to_xdr_buffered(write_stream),
8606            ScSpecTypeDef::ScSpecTypeOption(value) => {
8607                ScSpecType::ScSpecTypeOption.to_xdr_buffered(write_stream);
8608                value.to_xdr_buffered(write_stream)
8609            },
8610            ScSpecTypeDef::ScSpecTypeResult(value) => {
8611                ScSpecType::ScSpecTypeResult.to_xdr_buffered(write_stream);
8612                value.to_xdr_buffered(write_stream)
8613            },
8614            ScSpecTypeDef::ScSpecTypeVec(value) => {
8615                ScSpecType::ScSpecTypeVec.to_xdr_buffered(write_stream);
8616                value.to_xdr_buffered(write_stream)
8617            },
8618            ScSpecTypeDef::ScSpecTypeMap(value) => {
8619                ScSpecType::ScSpecTypeMap.to_xdr_buffered(write_stream);
8620                value.to_xdr_buffered(write_stream)
8621            },
8622            ScSpecTypeDef::ScSpecTypeTuple(value) => {
8623                ScSpecType::ScSpecTypeTuple.to_xdr_buffered(write_stream);
8624                value.to_xdr_buffered(write_stream)
8625            },
8626            ScSpecTypeDef::ScSpecTypeBytesN(value) => {
8627                ScSpecType::ScSpecTypeBytesN.to_xdr_buffered(write_stream);
8628                value.to_xdr_buffered(write_stream)
8629            },
8630            ScSpecTypeDef::ScSpecTypeUdt(value) => {
8631                ScSpecType::ScSpecTypeUdt.to_xdr_buffered(write_stream);
8632                value.to_xdr_buffered(write_stream)
8633            },
8634        }
8635    }
8636
8637    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8638        match ScSpecType::from_xdr_buffered(read_stream)? {
8639            ScSpecType::ScSpecTypeVal => Ok(ScSpecTypeDef::ScSpecTypeVal),
8640            ScSpecType::ScSpecTypeBool => Ok(ScSpecTypeDef::ScSpecTypeBool),
8641            ScSpecType::ScSpecTypeVoid => Ok(ScSpecTypeDef::ScSpecTypeVoid),
8642            ScSpecType::ScSpecTypeError => Ok(ScSpecTypeDef::ScSpecTypeError),
8643            ScSpecType::ScSpecTypeU32 => Ok(ScSpecTypeDef::ScSpecTypeU32),
8644            ScSpecType::ScSpecTypeI32 => Ok(ScSpecTypeDef::ScSpecTypeI32),
8645            ScSpecType::ScSpecTypeU64 => Ok(ScSpecTypeDef::ScSpecTypeU64),
8646            ScSpecType::ScSpecTypeI64 => Ok(ScSpecTypeDef::ScSpecTypeI64),
8647            ScSpecType::ScSpecTypeTimepoint => Ok(ScSpecTypeDef::ScSpecTypeTimepoint),
8648            ScSpecType::ScSpecTypeDuration => Ok(ScSpecTypeDef::ScSpecTypeDuration),
8649            ScSpecType::ScSpecTypeU128 => Ok(ScSpecTypeDef::ScSpecTypeU128),
8650            ScSpecType::ScSpecTypeI128 => Ok(ScSpecTypeDef::ScSpecTypeI128),
8651            ScSpecType::ScSpecTypeU256 => Ok(ScSpecTypeDef::ScSpecTypeU256),
8652            ScSpecType::ScSpecTypeI256 => Ok(ScSpecTypeDef::ScSpecTypeI256),
8653            ScSpecType::ScSpecTypeBytes => Ok(ScSpecTypeDef::ScSpecTypeBytes),
8654            ScSpecType::ScSpecTypeString => Ok(ScSpecTypeDef::ScSpecTypeString),
8655            ScSpecType::ScSpecTypeSymbol => Ok(ScSpecTypeDef::ScSpecTypeSymbol),
8656            ScSpecType::ScSpecTypeAddress => Ok(ScSpecTypeDef::ScSpecTypeAddress),
8657            ScSpecType::ScSpecTypeOption =>
8658                Ok(ScSpecTypeDef::ScSpecTypeOption(Box::new(ScSpecTypeOption::from_xdr_buffered(read_stream)?))),
8659            ScSpecType::ScSpecTypeResult =>
8660                Ok(ScSpecTypeDef::ScSpecTypeResult(Box::new(ScSpecTypeResult::from_xdr_buffered(read_stream)?))),
8661            ScSpecType::ScSpecTypeVec =>
8662                Ok(ScSpecTypeDef::ScSpecTypeVec(Box::new(ScSpecTypeVec::from_xdr_buffered(read_stream)?))),
8663            ScSpecType::ScSpecTypeMap =>
8664                Ok(ScSpecTypeDef::ScSpecTypeMap(Box::new(ScSpecTypeMap::from_xdr_buffered(read_stream)?))),
8665            ScSpecType::ScSpecTypeTuple =>
8666                Ok(ScSpecTypeDef::ScSpecTypeTuple(Box::new(ScSpecTypeTuple::from_xdr_buffered(read_stream)?))),
8667            ScSpecType::ScSpecTypeBytesN =>
8668                Ok(ScSpecTypeDef::ScSpecTypeBytesN(Box::new(ScSpecTypeBytesN::from_xdr_buffered(read_stream)?))),
8669            ScSpecType::ScSpecTypeUdt =>
8670                Ok(ScSpecTypeDef::ScSpecTypeUdt(Box::new(ScSpecTypeUdt::from_xdr_buffered(read_stream)?))),
8671        }
8672    }
8673}
8674
8675#[allow(dead_code)]
8677#[cfg(feature = "all-types")]
8678#[derive(Debug, Clone, Eq, PartialEq)]
8679pub enum ScSpecUdtUnionCaseV0 {
8680    ScSpecUdtUnionCaseVoidV0(ScSpecUdtUnionCaseVoidV0),
8681    ScSpecUdtUnionCaseTupleV0(ScSpecUdtUnionCaseTupleV0),
8682}
8683
8684#[cfg(feature = "all-types")]
8685impl XdrCodec for ScSpecUdtUnionCaseV0 {
8686    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8687        match self {
8688            ScSpecUdtUnionCaseV0::ScSpecUdtUnionCaseVoidV0(value) => {
8689                ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseVoidV0.to_xdr_buffered(write_stream);
8690                value.to_xdr_buffered(write_stream)
8691            },
8692            ScSpecUdtUnionCaseV0::ScSpecUdtUnionCaseTupleV0(value) => {
8693                ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseTupleV0.to_xdr_buffered(write_stream);
8694                value.to_xdr_buffered(write_stream)
8695            },
8696        }
8697    }
8698
8699    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8700        match ScSpecUdtUnionCaseV0Kind::from_xdr_buffered(read_stream)? {
8701            ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseVoidV0 => Ok(ScSpecUdtUnionCaseV0::ScSpecUdtUnionCaseVoidV0(
8702                ScSpecUdtUnionCaseVoidV0::from_xdr_buffered(read_stream)?,
8703            )),
8704            ScSpecUdtUnionCaseV0Kind::ScSpecUdtUnionCaseTupleV0 => Ok(ScSpecUdtUnionCaseV0::ScSpecUdtUnionCaseTupleV0(
8705                ScSpecUdtUnionCaseTupleV0::from_xdr_buffered(read_stream)?,
8706            )),
8707        }
8708    }
8709}
8710
8711#[allow(dead_code)]
8713#[cfg(feature = "all-types")]
8714#[derive(Debug, Clone, Eq, PartialEq)]
8715pub enum ScSpecEntry {
8716    ScSpecEntryFunctionV0(ScSpecFunctionV0),
8717    ScSpecEntryUdtStructV0(ScSpecUdtStructV0),
8718    ScSpecEntryUdtUnionV0(ScSpecUdtUnionV0),
8719    ScSpecEntryUdtEnumV0(ScSpecUdtEnumV0),
8720    ScSpecEntryUdtErrorEnumV0(ScSpecUdtErrorEnumV0),
8721}
8722
8723#[cfg(feature = "all-types")]
8724impl XdrCodec for ScSpecEntry {
8725    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8726        match self {
8727            ScSpecEntry::ScSpecEntryFunctionV0(value) => {
8728                ScSpecEntryKind::ScSpecEntryFunctionV0.to_xdr_buffered(write_stream);
8729                value.to_xdr_buffered(write_stream)
8730            },
8731            ScSpecEntry::ScSpecEntryUdtStructV0(value) => {
8732                ScSpecEntryKind::ScSpecEntryUdtStructV0.to_xdr_buffered(write_stream);
8733                value.to_xdr_buffered(write_stream)
8734            },
8735            ScSpecEntry::ScSpecEntryUdtUnionV0(value) => {
8736                ScSpecEntryKind::ScSpecEntryUdtUnionV0.to_xdr_buffered(write_stream);
8737                value.to_xdr_buffered(write_stream)
8738            },
8739            ScSpecEntry::ScSpecEntryUdtEnumV0(value) => {
8740                ScSpecEntryKind::ScSpecEntryUdtEnumV0.to_xdr_buffered(write_stream);
8741                value.to_xdr_buffered(write_stream)
8742            },
8743            ScSpecEntry::ScSpecEntryUdtErrorEnumV0(value) => {
8744                ScSpecEntryKind::ScSpecEntryUdtErrorEnumV0.to_xdr_buffered(write_stream);
8745                value.to_xdr_buffered(write_stream)
8746            },
8747        }
8748    }
8749
8750    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8751        match ScSpecEntryKind::from_xdr_buffered(read_stream)? {
8752            ScSpecEntryKind::ScSpecEntryFunctionV0 =>
8753                Ok(ScSpecEntry::ScSpecEntryFunctionV0(ScSpecFunctionV0::from_xdr_buffered(read_stream)?)),
8754            ScSpecEntryKind::ScSpecEntryUdtStructV0 =>
8755                Ok(ScSpecEntry::ScSpecEntryUdtStructV0(ScSpecUdtStructV0::from_xdr_buffered(read_stream)?)),
8756            ScSpecEntryKind::ScSpecEntryUdtUnionV0 =>
8757                Ok(ScSpecEntry::ScSpecEntryUdtUnionV0(ScSpecUdtUnionV0::from_xdr_buffered(read_stream)?)),
8758            ScSpecEntryKind::ScSpecEntryUdtEnumV0 =>
8759                Ok(ScSpecEntry::ScSpecEntryUdtEnumV0(ScSpecUdtEnumV0::from_xdr_buffered(read_stream)?)),
8760            ScSpecEntryKind::ScSpecEntryUdtErrorEnumV0 =>
8761                Ok(ScSpecEntry::ScSpecEntryUdtErrorEnumV0(ScSpecUdtErrorEnumV0::from_xdr_buffered(read_stream)?)),
8762        }
8763    }
8764}
8765
8766#[allow(dead_code)]
8768#[derive(Debug, Clone, Eq, PartialEq)]
8769pub enum ScError {
8770    SceContract(Uint32),
8771    SceWasmVm(ScErrorCode),
8772    SceContext(ScErrorCode),
8773    SceStorage(ScErrorCode),
8774    SceObject(ScErrorCode),
8775    SceCrypto(ScErrorCode),
8776    SceEvents(ScErrorCode),
8777    SceBudget(ScErrorCode),
8778    SceValue(ScErrorCode),
8779    SceAuth(ScErrorCode),
8780}
8781
8782impl XdrCodec for ScError {
8783    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8784        match self {
8785            ScError::SceContract(value) => {
8786                ScErrorType::SceContract.to_xdr_buffered(write_stream);
8787                value.to_xdr_buffered(write_stream)
8788            },
8789            ScError::SceWasmVm(value) => {
8790                ScErrorType::SceWasmVm.to_xdr_buffered(write_stream);
8791                value.to_xdr_buffered(write_stream)
8792            },
8793            ScError::SceContext(value) => {
8794                ScErrorType::SceContext.to_xdr_buffered(write_stream);
8795                value.to_xdr_buffered(write_stream)
8796            },
8797            ScError::SceStorage(value) => {
8798                ScErrorType::SceStorage.to_xdr_buffered(write_stream);
8799                value.to_xdr_buffered(write_stream)
8800            },
8801            ScError::SceObject(value) => {
8802                ScErrorType::SceObject.to_xdr_buffered(write_stream);
8803                value.to_xdr_buffered(write_stream)
8804            },
8805            ScError::SceCrypto(value) => {
8806                ScErrorType::SceCrypto.to_xdr_buffered(write_stream);
8807                value.to_xdr_buffered(write_stream)
8808            },
8809            ScError::SceEvents(value) => {
8810                ScErrorType::SceEvents.to_xdr_buffered(write_stream);
8811                value.to_xdr_buffered(write_stream)
8812            },
8813            ScError::SceBudget(value) => {
8814                ScErrorType::SceBudget.to_xdr_buffered(write_stream);
8815                value.to_xdr_buffered(write_stream)
8816            },
8817            ScError::SceValue(value) => {
8818                ScErrorType::SceValue.to_xdr_buffered(write_stream);
8819                value.to_xdr_buffered(write_stream)
8820            },
8821            ScError::SceAuth(value) => {
8822                ScErrorType::SceAuth.to_xdr_buffered(write_stream);
8823                value.to_xdr_buffered(write_stream)
8824            },
8825        }
8826    }
8827
8828    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8829        match ScErrorType::from_xdr_buffered(read_stream)? {
8830            ScErrorType::SceContract => Ok(ScError::SceContract(Uint32::from_xdr_buffered(read_stream)?)),
8831            ScErrorType::SceWasmVm => Ok(ScError::SceWasmVm(ScErrorCode::from_xdr_buffered(read_stream)?)),
8832            ScErrorType::SceContext => Ok(ScError::SceContext(ScErrorCode::from_xdr_buffered(read_stream)?)),
8833            ScErrorType::SceStorage => Ok(ScError::SceStorage(ScErrorCode::from_xdr_buffered(read_stream)?)),
8834            ScErrorType::SceObject => Ok(ScError::SceObject(ScErrorCode::from_xdr_buffered(read_stream)?)),
8835            ScErrorType::SceCrypto => Ok(ScError::SceCrypto(ScErrorCode::from_xdr_buffered(read_stream)?)),
8836            ScErrorType::SceEvents => Ok(ScError::SceEvents(ScErrorCode::from_xdr_buffered(read_stream)?)),
8837            ScErrorType::SceBudget => Ok(ScError::SceBudget(ScErrorCode::from_xdr_buffered(read_stream)?)),
8838            ScErrorType::SceValue => Ok(ScError::SceValue(ScErrorCode::from_xdr_buffered(read_stream)?)),
8839            ScErrorType::SceAuth => Ok(ScError::SceAuth(ScErrorCode::from_xdr_buffered(read_stream)?)),
8840        }
8841    }
8842}
8843
8844#[allow(dead_code)]
8846#[derive(Debug, Clone, Eq, PartialEq)]
8847pub enum ContractExecutable {
8848    ContractExecutableWasm(Hash),
8849    ContractExecutableStellarAsset,
8850}
8851
8852impl XdrCodec for ContractExecutable {
8853    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8854        match self {
8855            ContractExecutable::ContractExecutableWasm(value) => {
8856                ContractExecutableType::ContractExecutableWasm.to_xdr_buffered(write_stream);
8857                value.to_xdr_buffered(write_stream)
8858            },
8859            ContractExecutable::ContractExecutableStellarAsset =>
8860                ContractExecutableType::ContractExecutableStellarAsset.to_xdr_buffered(write_stream),
8861        }
8862    }
8863
8864    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8865        match ContractExecutableType::from_xdr_buffered(read_stream)? {
8866            ContractExecutableType::ContractExecutableWasm =>
8867                Ok(ContractExecutable::ContractExecutableWasm(Hash::from_xdr_buffered(read_stream)?)),
8868            ContractExecutableType::ContractExecutableStellarAsset =>
8869                Ok(ContractExecutable::ContractExecutableStellarAsset),
8870        }
8871    }
8872}
8873
8874#[allow(dead_code)]
8876#[derive(Debug, Clone, Eq, PartialEq)]
8877pub enum ScAddress {
8878    ScAddressTypeAccount(AccountId),
8879    ScAddressTypeContract(Hash),
8880}
8881
8882impl XdrCodec for ScAddress {
8883    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8884        match self {
8885            ScAddress::ScAddressTypeAccount(value) => {
8886                ScAddressType::ScAddressTypeAccount.to_xdr_buffered(write_stream);
8887                value.to_xdr_buffered(write_stream)
8888            },
8889            ScAddress::ScAddressTypeContract(value) => {
8890                ScAddressType::ScAddressTypeContract.to_xdr_buffered(write_stream);
8891                value.to_xdr_buffered(write_stream)
8892            },
8893        }
8894    }
8895
8896    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
8897        match ScAddressType::from_xdr_buffered(read_stream)? {
8898            ScAddressType::ScAddressTypeAccount =>
8899                Ok(ScAddress::ScAddressTypeAccount(AccountId::from_xdr_buffered(read_stream)?)),
8900            ScAddressType::ScAddressTypeContract =>
8901                Ok(ScAddress::ScAddressTypeContract(Hash::from_xdr_buffered(read_stream)?)),
8902        }
8903    }
8904}
8905
8906#[allow(dead_code)]
8908#[derive(Debug, Clone, Eq, PartialEq)]
8909pub enum ScVal {
8910    ScvBool(bool),
8911    ScvVoid,
8912    ScvError(ScError),
8913    ScvU32(Uint32),
8914    ScvI32(Int32),
8915    ScvU64(Uint64),
8916    ScvI64(Int64),
8917    ScvTimepoint(TimePoint),
8918    ScvDuration(Duration),
8919    ScvU128(UInt128Parts),
8920    ScvI128(Int128Parts),
8921    ScvU256(UInt256Parts),
8922    ScvI256(Int256Parts),
8923    ScvBytes(ScBytes),
8924    ScvString(ScString),
8925    ScvSymbol(ScSymbol),
8926    ScvVec(Option<ScVec>),
8927    ScvMap(Option<ScMap>),
8928    ScvAddress(ScAddress),
8929    ScvLedgerKeyContractInstance,
8930    ScvLedgerKeyNonce(ScNonceKey),
8931    ScvContractInstance(ScContractInstance),
8932}
8933
8934impl XdrCodec for ScVal {
8935    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
8936        match self {
8937            ScVal::ScvBool(value) => {
8938                ScValType::ScvBool.to_xdr_buffered(write_stream);
8939                value.to_xdr_buffered(write_stream)
8940            },
8941            ScVal::ScvVoid => ScValType::ScvVoid.to_xdr_buffered(write_stream),
8942            ScVal::ScvError(value) => {
8943                ScValType::ScvError.to_xdr_buffered(write_stream);
8944                value.to_xdr_buffered(write_stream)
8945            },
8946            ScVal::ScvU32(value) => {
8947                ScValType::ScvU32.to_xdr_buffered(write_stream);
8948                value.to_xdr_buffered(write_stream)
8949            },
8950            ScVal::ScvI32(value) => {
8951                ScValType::ScvI32.to_xdr_buffered(write_stream);
8952                value.to_xdr_buffered(write_stream)
8953            },
8954            ScVal::ScvU64(value) => {
8955                ScValType::ScvU64.to_xdr_buffered(write_stream);
8956                value.to_xdr_buffered(write_stream)
8957            },
8958            ScVal::ScvI64(value) => {
8959                ScValType::ScvI64.to_xdr_buffered(write_stream);
8960                value.to_xdr_buffered(write_stream)
8961            },
8962            ScVal::ScvTimepoint(value) => {
8963                ScValType::ScvTimepoint.to_xdr_buffered(write_stream);
8964                value.to_xdr_buffered(write_stream)
8965            },
8966            ScVal::ScvDuration(value) => {
8967                ScValType::ScvDuration.to_xdr_buffered(write_stream);
8968                value.to_xdr_buffered(write_stream)
8969            },
8970            ScVal::ScvU128(value) => {
8971                ScValType::ScvU128.to_xdr_buffered(write_stream);
8972                value.to_xdr_buffered(write_stream)
8973            },
8974            ScVal::ScvI128(value) => {
8975                ScValType::ScvI128.to_xdr_buffered(write_stream);
8976                value.to_xdr_buffered(write_stream)
8977            },
8978            ScVal::ScvU256(value) => {
8979                ScValType::ScvU256.to_xdr_buffered(write_stream);
8980                value.to_xdr_buffered(write_stream)
8981            },
8982            ScVal::ScvI256(value) => {
8983                ScValType::ScvI256.to_xdr_buffered(write_stream);
8984                value.to_xdr_buffered(write_stream)
8985            },
8986            ScVal::ScvBytes(value) => {
8987                ScValType::ScvBytes.to_xdr_buffered(write_stream);
8988                value.to_xdr_buffered(write_stream)
8989            },
8990            ScVal::ScvString(value) => {
8991                ScValType::ScvString.to_xdr_buffered(write_stream);
8992                value.to_xdr_buffered(write_stream)
8993            },
8994            ScVal::ScvSymbol(value) => {
8995                ScValType::ScvSymbol.to_xdr_buffered(write_stream);
8996                value.to_xdr_buffered(write_stream)
8997            },
8998            ScVal::ScvVec(value) => {
8999                ScValType::ScvVec.to_xdr_buffered(write_stream);
9000                value.to_xdr_buffered(write_stream)
9001            },
9002            ScVal::ScvMap(value) => {
9003                ScValType::ScvMap.to_xdr_buffered(write_stream);
9004                value.to_xdr_buffered(write_stream)
9005            },
9006            ScVal::ScvAddress(value) => {
9007                ScValType::ScvAddress.to_xdr_buffered(write_stream);
9008                value.to_xdr_buffered(write_stream)
9009            },
9010            ScVal::ScvLedgerKeyContractInstance =>
9011                ScValType::ScvLedgerKeyContractInstance.to_xdr_buffered(write_stream),
9012            ScVal::ScvLedgerKeyNonce(value) => {
9013                ScValType::ScvLedgerKeyNonce.to_xdr_buffered(write_stream);
9014                value.to_xdr_buffered(write_stream)
9015            },
9016            ScVal::ScvContractInstance(value) => {
9017                ScValType::ScvContractInstance.to_xdr_buffered(write_stream);
9018                value.to_xdr_buffered(write_stream)
9019            },
9020        }
9021    }
9022
9023    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9024        match ScValType::from_xdr_buffered(read_stream)? {
9025            ScValType::ScvBool => Ok(ScVal::ScvBool(bool::from_xdr_buffered(read_stream)?)),
9026            ScValType::ScvVoid => Ok(ScVal::ScvVoid),
9027            ScValType::ScvError => Ok(ScVal::ScvError(ScError::from_xdr_buffered(read_stream)?)),
9028            ScValType::ScvU32 => Ok(ScVal::ScvU32(Uint32::from_xdr_buffered(read_stream)?)),
9029            ScValType::ScvI32 => Ok(ScVal::ScvI32(Int32::from_xdr_buffered(read_stream)?)),
9030            ScValType::ScvU64 => Ok(ScVal::ScvU64(Uint64::from_xdr_buffered(read_stream)?)),
9031            ScValType::ScvI64 => Ok(ScVal::ScvI64(Int64::from_xdr_buffered(read_stream)?)),
9032            ScValType::ScvTimepoint => Ok(ScVal::ScvTimepoint(TimePoint::from_xdr_buffered(read_stream)?)),
9033            ScValType::ScvDuration => Ok(ScVal::ScvDuration(Duration::from_xdr_buffered(read_stream)?)),
9034            ScValType::ScvU128 => Ok(ScVal::ScvU128(UInt128Parts::from_xdr_buffered(read_stream)?)),
9035            ScValType::ScvI128 => Ok(ScVal::ScvI128(Int128Parts::from_xdr_buffered(read_stream)?)),
9036            ScValType::ScvU256 => Ok(ScVal::ScvU256(UInt256Parts::from_xdr_buffered(read_stream)?)),
9037            ScValType::ScvI256 => Ok(ScVal::ScvI256(Int256Parts::from_xdr_buffered(read_stream)?)),
9038            ScValType::ScvBytes => Ok(ScVal::ScvBytes(ScBytes::from_xdr_buffered(read_stream)?)),
9039            ScValType::ScvString => Ok(ScVal::ScvString(ScString::from_xdr_buffered(read_stream)?)),
9040            ScValType::ScvSymbol => Ok(ScVal::ScvSymbol(ScSymbol::from_xdr_buffered(read_stream)?)),
9041            ScValType::ScvVec => Ok(ScVal::ScvVec(Option::<ScVec>::from_xdr_buffered(read_stream)?)),
9042            ScValType::ScvMap => Ok(ScVal::ScvMap(Option::<ScMap>::from_xdr_buffered(read_stream)?)),
9043            ScValType::ScvAddress => Ok(ScVal::ScvAddress(ScAddress::from_xdr_buffered(read_stream)?)),
9044            ScValType::ScvLedgerKeyContractInstance => Ok(ScVal::ScvLedgerKeyContractInstance),
9045            ScValType::ScvLedgerKeyNonce => Ok(ScVal::ScvLedgerKeyNonce(ScNonceKey::from_xdr_buffered(read_stream)?)),
9046            ScValType::ScvContractInstance =>
9047                Ok(ScVal::ScvContractInstance(ScContractInstance::from_xdr_buffered(read_stream)?)),
9048        }
9049    }
9050}
9051
9052#[allow(dead_code)]
9054#[cfg(feature = "all-types")]
9055#[derive(Debug, Clone, Eq, PartialEq)]
9056pub enum StoredTransactionSet {
9057    V0(TransactionSet),
9058    V1(GeneralizedTransactionSet),
9059    Default(i32),
9060}
9061
9062#[cfg(feature = "all-types")]
9063impl XdrCodec for StoredTransactionSet {
9064    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9065        match self {
9066            StoredTransactionSet::V0(value) => {
9067                (0 as i32).to_xdr_buffered(write_stream);
9068                value.to_xdr_buffered(write_stream)
9069            },
9070            StoredTransactionSet::V1(value) => {
9071                (1 as i32).to_xdr_buffered(write_stream);
9072                value.to_xdr_buffered(write_stream)
9073            },
9074            StoredTransactionSet::Default(code) => code.to_xdr_buffered(write_stream),
9075        }
9076    }
9077
9078    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9079        match i32::from_xdr_buffered(read_stream)? {
9080            0 => Ok(StoredTransactionSet::V0(TransactionSet::from_xdr_buffered(read_stream)?)),
9081            1 => Ok(StoredTransactionSet::V1(GeneralizedTransactionSet::from_xdr_buffered(read_stream)?)),
9082            code => Ok(StoredTransactionSet::Default(code)),
9083        }
9084    }
9085}
9086
9087#[allow(dead_code)]
9089#[cfg(feature = "all-types")]
9090#[derive(Debug, Clone, Eq, PartialEq)]
9091pub enum PersistedScpState {
9092    V0(PersistedScpStateV0),
9093    V1(PersistedScpStateV1),
9094    Default(i32),
9095}
9096
9097#[cfg(feature = "all-types")]
9098impl XdrCodec for PersistedScpState {
9099    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9100        match self {
9101            PersistedScpState::V0(value) => {
9102                (0 as i32).to_xdr_buffered(write_stream);
9103                value.to_xdr_buffered(write_stream)
9104            },
9105            PersistedScpState::V1(value) => {
9106                (1 as i32).to_xdr_buffered(write_stream);
9107                value.to_xdr_buffered(write_stream)
9108            },
9109            PersistedScpState::Default(code) => code.to_xdr_buffered(write_stream),
9110        }
9111    }
9112
9113    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9114        match i32::from_xdr_buffered(read_stream)? {
9115            0 => Ok(PersistedScpState::V0(PersistedScpStateV0::from_xdr_buffered(read_stream)?)),
9116            1 => Ok(PersistedScpState::V1(PersistedScpStateV1::from_xdr_buffered(read_stream)?)),
9117            code => Ok(PersistedScpState::Default(code)),
9118        }
9119    }
9120}
9121
9122#[allow(dead_code)]
9124#[derive(Debug, Clone, Eq, PartialEq)]
9125pub enum AssetCode {
9126    AssetTypeCreditAlphanum4(AssetCode4),
9127    AssetTypeCreditAlphanum12(AssetCode12),
9128    Default(AssetType),
9129}
9130
9131impl XdrCodec for AssetCode {
9132    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9133        match self {
9134            AssetCode::AssetTypeCreditAlphanum4(value) => {
9135                AssetType::AssetTypeCreditAlphanum4.to_xdr_buffered(write_stream);
9136                value.to_xdr_buffered(write_stream)
9137            },
9138            AssetCode::AssetTypeCreditAlphanum12(value) => {
9139                AssetType::AssetTypeCreditAlphanum12.to_xdr_buffered(write_stream);
9140                value.to_xdr_buffered(write_stream)
9141            },
9142            AssetCode::Default(code) => code.to_xdr_buffered(write_stream),
9143        }
9144    }
9145
9146    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9147        match AssetType::from_xdr_buffered(read_stream)? {
9148            AssetType::AssetTypeCreditAlphanum4 =>
9149                Ok(AssetCode::AssetTypeCreditAlphanum4(AssetCode4::from_xdr_buffered(read_stream)?)),
9150            AssetType::AssetTypeCreditAlphanum12 =>
9151                Ok(AssetCode::AssetTypeCreditAlphanum12(AssetCode12::from_xdr_buffered(read_stream)?)),
9152            code => Ok(AssetCode::Default(code)),
9153        }
9154    }
9155}
9156
9157#[allow(dead_code)]
9159#[derive(Debug, Clone, Eq, PartialEq)]
9160pub enum Asset {
9161    AssetTypeNative,
9162    AssetTypeCreditAlphanum4(AlphaNum4),
9163    AssetTypeCreditAlphanum12(AlphaNum12),
9164    Default(AssetType),
9165}
9166
9167impl XdrCodec for Asset {
9168    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9169        match self {
9170            Asset::AssetTypeNative => AssetType::AssetTypeNative.to_xdr_buffered(write_stream),
9171            Asset::AssetTypeCreditAlphanum4(value) => {
9172                AssetType::AssetTypeCreditAlphanum4.to_xdr_buffered(write_stream);
9173                value.to_xdr_buffered(write_stream)
9174            },
9175            Asset::AssetTypeCreditAlphanum12(value) => {
9176                AssetType::AssetTypeCreditAlphanum12.to_xdr_buffered(write_stream);
9177                value.to_xdr_buffered(write_stream)
9178            },
9179            Asset::Default(code) => code.to_xdr_buffered(write_stream),
9180        }
9181    }
9182
9183    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9184        match AssetType::from_xdr_buffered(read_stream)? {
9185            AssetType::AssetTypeNative => Ok(Asset::AssetTypeNative),
9186            AssetType::AssetTypeCreditAlphanum4 =>
9187                Ok(Asset::AssetTypeCreditAlphanum4(AlphaNum4::from_xdr_buffered(read_stream)?)),
9188            AssetType::AssetTypeCreditAlphanum12 =>
9189                Ok(Asset::AssetTypeCreditAlphanum12(AlphaNum12::from_xdr_buffered(read_stream)?)),
9190            code => Ok(Asset::Default(code)),
9191        }
9192    }
9193}
9194
9195#[allow(dead_code)]
9197#[derive(Debug, Clone, Eq, PartialEq)]
9198pub enum AccountEntryExtensionV2Ext {
9199    V0,
9200    V3(AccountEntryExtensionV3),
9201    Default(i32),
9202}
9203
9204impl XdrCodec for AccountEntryExtensionV2Ext {
9205    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9206        match self {
9207            AccountEntryExtensionV2Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9208            AccountEntryExtensionV2Ext::V3(value) => {
9209                (3 as i32).to_xdr_buffered(write_stream);
9210                value.to_xdr_buffered(write_stream)
9211            },
9212            AccountEntryExtensionV2Ext::Default(code) => code.to_xdr_buffered(write_stream),
9213        }
9214    }
9215
9216    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9217        match i32::from_xdr_buffered(read_stream)? {
9218            0 => Ok(AccountEntryExtensionV2Ext::V0),
9219            3 => Ok(AccountEntryExtensionV2Ext::V3(AccountEntryExtensionV3::from_xdr_buffered(read_stream)?)),
9220            code => Ok(AccountEntryExtensionV2Ext::Default(code)),
9221        }
9222    }
9223}
9224
9225#[allow(dead_code)]
9227#[derive(Debug, Clone, Eq, PartialEq)]
9228pub enum AccountEntryExtensionV1Ext {
9229    V0,
9230    V2(AccountEntryExtensionV2),
9231    Default(i32),
9232}
9233
9234impl XdrCodec for AccountEntryExtensionV1Ext {
9235    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9236        match self {
9237            AccountEntryExtensionV1Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9238            AccountEntryExtensionV1Ext::V2(value) => {
9239                (2 as i32).to_xdr_buffered(write_stream);
9240                value.to_xdr_buffered(write_stream)
9241            },
9242            AccountEntryExtensionV1Ext::Default(code) => code.to_xdr_buffered(write_stream),
9243        }
9244    }
9245
9246    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9247        match i32::from_xdr_buffered(read_stream)? {
9248            0 => Ok(AccountEntryExtensionV1Ext::V0),
9249            2 => Ok(AccountEntryExtensionV1Ext::V2(AccountEntryExtensionV2::from_xdr_buffered(read_stream)?)),
9250            code => Ok(AccountEntryExtensionV1Ext::Default(code)),
9251        }
9252    }
9253}
9254
9255#[allow(dead_code)]
9257#[derive(Debug, Clone, Eq, PartialEq)]
9258pub enum AccountEntryExt {
9259    V0,
9260    V1(AccountEntryExtensionV1),
9261    Default(i32),
9262}
9263
9264impl XdrCodec for AccountEntryExt {
9265    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9266        match self {
9267            AccountEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9268            AccountEntryExt::V1(value) => {
9269                (1 as i32).to_xdr_buffered(write_stream);
9270                value.to_xdr_buffered(write_stream)
9271            },
9272            AccountEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9273        }
9274    }
9275
9276    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9277        match i32::from_xdr_buffered(read_stream)? {
9278            0 => Ok(AccountEntryExt::V0),
9279            1 => Ok(AccountEntryExt::V1(AccountEntryExtensionV1::from_xdr_buffered(read_stream)?)),
9280            code => Ok(AccountEntryExt::Default(code)),
9281        }
9282    }
9283}
9284
9285#[allow(dead_code)]
9287#[derive(Debug, Clone, Eq, PartialEq)]
9288pub enum TrustLineAsset {
9289    AssetTypeNative,
9290    AssetTypeCreditAlphanum4(AlphaNum4),
9291    AssetTypeCreditAlphanum12(AlphaNum12),
9292    AssetTypePoolShare(PoolId),
9293}
9294
9295impl XdrCodec for TrustLineAsset {
9296    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9297        match self {
9298            TrustLineAsset::AssetTypeNative => AssetType::AssetTypeNative.to_xdr_buffered(write_stream),
9299            TrustLineAsset::AssetTypeCreditAlphanum4(value) => {
9300                AssetType::AssetTypeCreditAlphanum4.to_xdr_buffered(write_stream);
9301                value.to_xdr_buffered(write_stream)
9302            },
9303            TrustLineAsset::AssetTypeCreditAlphanum12(value) => {
9304                AssetType::AssetTypeCreditAlphanum12.to_xdr_buffered(write_stream);
9305                value.to_xdr_buffered(write_stream)
9306            },
9307            TrustLineAsset::AssetTypePoolShare(value) => {
9308                AssetType::AssetTypePoolShare.to_xdr_buffered(write_stream);
9309                value.to_xdr_buffered(write_stream)
9310            },
9311        }
9312    }
9313
9314    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9315        match AssetType::from_xdr_buffered(read_stream)? {
9316            AssetType::AssetTypeNative => Ok(TrustLineAsset::AssetTypeNative),
9317            AssetType::AssetTypeCreditAlphanum4 =>
9318                Ok(TrustLineAsset::AssetTypeCreditAlphanum4(AlphaNum4::from_xdr_buffered(read_stream)?)),
9319            AssetType::AssetTypeCreditAlphanum12 =>
9320                Ok(TrustLineAsset::AssetTypeCreditAlphanum12(AlphaNum12::from_xdr_buffered(read_stream)?)),
9321            AssetType::AssetTypePoolShare =>
9322                Ok(TrustLineAsset::AssetTypePoolShare(PoolId::from_xdr_buffered(read_stream)?)),
9323        }
9324    }
9325}
9326
9327#[allow(dead_code)]
9329#[derive(Debug, Clone, Eq, PartialEq)]
9330pub enum TrustLineEntryExtensionV2Ext {
9331    V0,
9332    Default(i32),
9333}
9334
9335impl XdrCodec for TrustLineEntryExtensionV2Ext {
9336    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9337        match self {
9338            TrustLineEntryExtensionV2Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9339            TrustLineEntryExtensionV2Ext::Default(code) => code.to_xdr_buffered(write_stream),
9340        }
9341    }
9342
9343    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9344        match i32::from_xdr_buffered(read_stream)? {
9345            0 => Ok(TrustLineEntryExtensionV2Ext::V0),
9346            code => Ok(TrustLineEntryExtensionV2Ext::Default(code)),
9347        }
9348    }
9349}
9350
9351#[allow(dead_code)]
9353#[derive(Debug, Clone, Eq, PartialEq)]
9354pub enum TrustLineEntryV1Ext {
9355    V0,
9356    V2(TrustLineEntryExtensionV2),
9357    Default(i32),
9358}
9359
9360impl XdrCodec for TrustLineEntryV1Ext {
9361    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9362        match self {
9363            TrustLineEntryV1Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9364            TrustLineEntryV1Ext::V2(value) => {
9365                (2 as i32).to_xdr_buffered(write_stream);
9366                value.to_xdr_buffered(write_stream)
9367            },
9368            TrustLineEntryV1Ext::Default(code) => code.to_xdr_buffered(write_stream),
9369        }
9370    }
9371
9372    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9373        match i32::from_xdr_buffered(read_stream)? {
9374            0 => Ok(TrustLineEntryV1Ext::V0),
9375            2 => Ok(TrustLineEntryV1Ext::V2(TrustLineEntryExtensionV2::from_xdr_buffered(read_stream)?)),
9376            code => Ok(TrustLineEntryV1Ext::Default(code)),
9377        }
9378    }
9379}
9380
9381#[allow(dead_code)]
9383#[derive(Debug, Clone, Eq, PartialEq)]
9384pub enum TrustLineEntryExt {
9385    V0,
9386    V1(TrustLineEntryV1),
9387    Default(i32),
9388}
9389
9390impl XdrCodec for TrustLineEntryExt {
9391    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9392        match self {
9393            TrustLineEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9394            TrustLineEntryExt::V1(value) => {
9395                (1 as i32).to_xdr_buffered(write_stream);
9396                value.to_xdr_buffered(write_stream)
9397            },
9398            TrustLineEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9399        }
9400    }
9401
9402    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9403        match i32::from_xdr_buffered(read_stream)? {
9404            0 => Ok(TrustLineEntryExt::V0),
9405            1 => Ok(TrustLineEntryExt::V1(TrustLineEntryV1::from_xdr_buffered(read_stream)?)),
9406            code => Ok(TrustLineEntryExt::Default(code)),
9407        }
9408    }
9409}
9410
9411#[allow(dead_code)]
9413#[derive(Debug, Clone, Eq, PartialEq)]
9414pub enum OfferEntryExt {
9415    V0,
9416    Default(i32),
9417}
9418
9419impl XdrCodec for OfferEntryExt {
9420    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9421        match self {
9422            OfferEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9423            OfferEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9424        }
9425    }
9426
9427    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9428        match i32::from_xdr_buffered(read_stream)? {
9429            0 => Ok(OfferEntryExt::V0),
9430            code => Ok(OfferEntryExt::Default(code)),
9431        }
9432    }
9433}
9434
9435#[allow(dead_code)]
9437#[derive(Debug, Clone, Eq, PartialEq)]
9438pub enum DataEntryExt {
9439    V0,
9440    Default(i32),
9441}
9442
9443impl XdrCodec for DataEntryExt {
9444    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9445        match self {
9446            DataEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9447            DataEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9448        }
9449    }
9450
9451    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9452        match i32::from_xdr_buffered(read_stream)? {
9453            0 => Ok(DataEntryExt::V0),
9454            code => Ok(DataEntryExt::Default(code)),
9455        }
9456    }
9457}
9458
9459#[allow(dead_code)]
9461#[derive(Debug, Clone, Eq, PartialEq)]
9462pub enum ClaimPredicate {
9463    ClaimPredicateUnconditional,
9464    ClaimPredicateAnd(LimitedVarArray<ClaimPredicate, 2>),
9465    ClaimPredicateOr(LimitedVarArray<ClaimPredicate, 2>),
9466    ClaimPredicateNot(Option<Box<ClaimPredicate>>),
9467    ClaimPredicateBeforeAbsoluteTime(Int64),
9468    ClaimPredicateBeforeRelativeTime(Int64),
9469}
9470
9471impl XdrCodec for ClaimPredicate {
9472    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9473        match self {
9474            ClaimPredicate::ClaimPredicateUnconditional =>
9475                ClaimPredicateType::ClaimPredicateUnconditional.to_xdr_buffered(write_stream),
9476            ClaimPredicate::ClaimPredicateAnd(value) => {
9477                ClaimPredicateType::ClaimPredicateAnd.to_xdr_buffered(write_stream);
9478                value.to_xdr_buffered(write_stream)
9479            },
9480            ClaimPredicate::ClaimPredicateOr(value) => {
9481                ClaimPredicateType::ClaimPredicateOr.to_xdr_buffered(write_stream);
9482                value.to_xdr_buffered(write_stream)
9483            },
9484            ClaimPredicate::ClaimPredicateNot(value) => {
9485                ClaimPredicateType::ClaimPredicateNot.to_xdr_buffered(write_stream);
9486                value.to_xdr_buffered(write_stream)
9487            },
9488            ClaimPredicate::ClaimPredicateBeforeAbsoluteTime(value) => {
9489                ClaimPredicateType::ClaimPredicateBeforeAbsoluteTime.to_xdr_buffered(write_stream);
9490                value.to_xdr_buffered(write_stream)
9491            },
9492            ClaimPredicate::ClaimPredicateBeforeRelativeTime(value) => {
9493                ClaimPredicateType::ClaimPredicateBeforeRelativeTime.to_xdr_buffered(write_stream);
9494                value.to_xdr_buffered(write_stream)
9495            },
9496        }
9497    }
9498
9499    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9500        match ClaimPredicateType::from_xdr_buffered(read_stream)? {
9501            ClaimPredicateType::ClaimPredicateUnconditional => Ok(ClaimPredicate::ClaimPredicateUnconditional),
9502            ClaimPredicateType::ClaimPredicateAnd =>
9503                Ok(ClaimPredicate::ClaimPredicateAnd(LimitedVarArray::<ClaimPredicate, 2>::from_xdr_buffered(
9504                    read_stream,
9505                )?)),
9506            ClaimPredicateType::ClaimPredicateOr =>
9507                Ok(ClaimPredicate::ClaimPredicateOr(LimitedVarArray::<ClaimPredicate, 2>::from_xdr_buffered(
9508                    read_stream,
9509                )?)),
9510            ClaimPredicateType::ClaimPredicateNot =>
9511                Ok(ClaimPredicate::ClaimPredicateNot(Option::<Box<ClaimPredicate>>::from_xdr_buffered(read_stream)?)),
9512            ClaimPredicateType::ClaimPredicateBeforeAbsoluteTime =>
9513                Ok(ClaimPredicate::ClaimPredicateBeforeAbsoluteTime(Int64::from_xdr_buffered(read_stream)?)),
9514            ClaimPredicateType::ClaimPredicateBeforeRelativeTime =>
9515                Ok(ClaimPredicate::ClaimPredicateBeforeRelativeTime(Int64::from_xdr_buffered(read_stream)?)),
9516        }
9517    }
9518}
9519
9520#[allow(dead_code)]
9522#[derive(Debug, Clone, Eq, PartialEq)]
9523pub enum Claimant {
9524    ClaimantTypeV0(ClaimantV0),
9525}
9526
9527impl XdrCodec for Claimant {
9528    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9529        match self {
9530            Claimant::ClaimantTypeV0(value) => {
9531                ClaimantType::ClaimantTypeV0.to_xdr_buffered(write_stream);
9532                value.to_xdr_buffered(write_stream)
9533            },
9534        }
9535    }
9536
9537    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9538        match ClaimantType::from_xdr_buffered(read_stream)? {
9539            ClaimantType::ClaimantTypeV0 => Ok(Claimant::ClaimantTypeV0(ClaimantV0::from_xdr_buffered(read_stream)?)),
9540        }
9541    }
9542}
9543
9544#[allow(dead_code)]
9546#[derive(Debug, Clone, Eq, PartialEq)]
9547pub enum ClaimableBalanceId {
9548    ClaimableBalanceIdTypeV0(Hash),
9549}
9550
9551impl XdrCodec for ClaimableBalanceId {
9552    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9553        match self {
9554            ClaimableBalanceId::ClaimableBalanceIdTypeV0(value) => {
9555                ClaimableBalanceIdType::ClaimableBalanceIdTypeV0.to_xdr_buffered(write_stream);
9556                value.to_xdr_buffered(write_stream)
9557            },
9558        }
9559    }
9560
9561    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9562        match ClaimableBalanceIdType::from_xdr_buffered(read_stream)? {
9563            ClaimableBalanceIdType::ClaimableBalanceIdTypeV0 =>
9564                Ok(ClaimableBalanceId::ClaimableBalanceIdTypeV0(Hash::from_xdr_buffered(read_stream)?)),
9565        }
9566    }
9567}
9568
9569#[allow(dead_code)]
9571#[derive(Debug, Clone, Eq, PartialEq)]
9572pub enum ClaimableBalanceEntryExtensionV1Ext {
9573    V0,
9574    Default(i32),
9575}
9576
9577impl XdrCodec for ClaimableBalanceEntryExtensionV1Ext {
9578    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9579        match self {
9580            ClaimableBalanceEntryExtensionV1Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9581            ClaimableBalanceEntryExtensionV1Ext::Default(code) => code.to_xdr_buffered(write_stream),
9582        }
9583    }
9584
9585    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9586        match i32::from_xdr_buffered(read_stream)? {
9587            0 => Ok(ClaimableBalanceEntryExtensionV1Ext::V0),
9588            code => Ok(ClaimableBalanceEntryExtensionV1Ext::Default(code)),
9589        }
9590    }
9591}
9592
9593#[allow(dead_code)]
9595#[derive(Debug, Clone, Eq, PartialEq)]
9596pub enum ClaimableBalanceEntryExt {
9597    V0,
9598    V1(ClaimableBalanceEntryExtensionV1),
9599    Default(i32),
9600}
9601
9602impl XdrCodec for ClaimableBalanceEntryExt {
9603    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9604        match self {
9605            ClaimableBalanceEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9606            ClaimableBalanceEntryExt::V1(value) => {
9607                (1 as i32).to_xdr_buffered(write_stream);
9608                value.to_xdr_buffered(write_stream)
9609            },
9610            ClaimableBalanceEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9611        }
9612    }
9613
9614    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9615        match i32::from_xdr_buffered(read_stream)? {
9616            0 => Ok(ClaimableBalanceEntryExt::V0),
9617            1 => Ok(ClaimableBalanceEntryExt::V1(ClaimableBalanceEntryExtensionV1::from_xdr_buffered(read_stream)?)),
9618            code => Ok(ClaimableBalanceEntryExt::Default(code)),
9619        }
9620    }
9621}
9622
9623#[allow(dead_code)]
9625#[derive(Debug, Clone, Eq, PartialEq)]
9626pub enum LiquidityPoolEntryBody {
9627    LiquidityPoolConstantProduct(LiquidityPoolEntryConstantProduct),
9628}
9629
9630impl XdrCodec for LiquidityPoolEntryBody {
9631    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9632        match self {
9633            LiquidityPoolEntryBody::LiquidityPoolConstantProduct(value) => {
9634                LiquidityPoolType::LiquidityPoolConstantProduct.to_xdr_buffered(write_stream);
9635                value.to_xdr_buffered(write_stream)
9636            },
9637        }
9638    }
9639
9640    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9641        match LiquidityPoolType::from_xdr_buffered(read_stream)? {
9642            LiquidityPoolType::LiquidityPoolConstantProduct =>
9643                Ok(LiquidityPoolEntryBody::LiquidityPoolConstantProduct(
9644                    LiquidityPoolEntryConstantProduct::from_xdr_buffered(read_stream)?,
9645                )),
9646        }
9647    }
9648}
9649
9650#[allow(dead_code)]
9652#[derive(Debug, Clone, Eq, PartialEq)]
9653pub enum ContractCodeEntryExt {
9654    V0,
9655    V1(ContractCodeEntryV1),
9656    Default(i32),
9657}
9658
9659impl XdrCodec for ContractCodeEntryExt {
9660    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9661        match self {
9662            ContractCodeEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9663            ContractCodeEntryExt::V1(value) => {
9664                (1 as i32).to_xdr_buffered(write_stream);
9665                value.to_xdr_buffered(write_stream)
9666            },
9667            ContractCodeEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9668        }
9669    }
9670
9671    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9672        match i32::from_xdr_buffered(read_stream)? {
9673            0 => Ok(ContractCodeEntryExt::V0),
9674            1 => Ok(ContractCodeEntryExt::V1(ContractCodeEntryV1::from_xdr_buffered(read_stream)?)),
9675            code => Ok(ContractCodeEntryExt::Default(code)),
9676        }
9677    }
9678}
9679
9680#[allow(dead_code)]
9682#[derive(Debug, Clone, Eq, PartialEq)]
9683pub enum LedgerEntryExtensionV1Ext {
9684    V0,
9685    Default(i32),
9686}
9687
9688impl XdrCodec for LedgerEntryExtensionV1Ext {
9689    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9690        match self {
9691            LedgerEntryExtensionV1Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9692            LedgerEntryExtensionV1Ext::Default(code) => code.to_xdr_buffered(write_stream),
9693        }
9694    }
9695
9696    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9697        match i32::from_xdr_buffered(read_stream)? {
9698            0 => Ok(LedgerEntryExtensionV1Ext::V0),
9699            code => Ok(LedgerEntryExtensionV1Ext::Default(code)),
9700        }
9701    }
9702}
9703
9704#[allow(dead_code)]
9706#[derive(Debug, Clone, Eq, PartialEq)]
9707pub enum LedgerEntryData {
9708    Account(AccountEntry),
9709    Trustline(TrustLineEntry),
9710    Offer(OfferEntry),
9711    Data(DataEntry),
9712    ClaimableBalance(ClaimableBalanceEntry),
9713    LiquidityPool(LiquidityPoolEntry),
9714    ContractData(ContractDataEntry),
9715    ContractCode(ContractCodeEntry),
9716    ConfigSetting(ConfigSettingEntry),
9717    Ttl(TtlEntry),
9718}
9719
9720impl XdrCodec for LedgerEntryData {
9721    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9722        match self {
9723            LedgerEntryData::Account(value) => {
9724                LedgerEntryType::Account.to_xdr_buffered(write_stream);
9725                value.to_xdr_buffered(write_stream)
9726            },
9727            LedgerEntryData::Trustline(value) => {
9728                LedgerEntryType::Trustline.to_xdr_buffered(write_stream);
9729                value.to_xdr_buffered(write_stream)
9730            },
9731            LedgerEntryData::Offer(value) => {
9732                LedgerEntryType::Offer.to_xdr_buffered(write_stream);
9733                value.to_xdr_buffered(write_stream)
9734            },
9735            LedgerEntryData::Data(value) => {
9736                LedgerEntryType::Data.to_xdr_buffered(write_stream);
9737                value.to_xdr_buffered(write_stream)
9738            },
9739            LedgerEntryData::ClaimableBalance(value) => {
9740                LedgerEntryType::ClaimableBalance.to_xdr_buffered(write_stream);
9741                value.to_xdr_buffered(write_stream)
9742            },
9743            LedgerEntryData::LiquidityPool(value) => {
9744                LedgerEntryType::LiquidityPool.to_xdr_buffered(write_stream);
9745                value.to_xdr_buffered(write_stream)
9746            },
9747            LedgerEntryData::ContractData(value) => {
9748                LedgerEntryType::ContractData.to_xdr_buffered(write_stream);
9749                value.to_xdr_buffered(write_stream)
9750            },
9751            LedgerEntryData::ContractCode(value) => {
9752                LedgerEntryType::ContractCode.to_xdr_buffered(write_stream);
9753                value.to_xdr_buffered(write_stream)
9754            },
9755            LedgerEntryData::ConfigSetting(value) => {
9756                LedgerEntryType::ConfigSetting.to_xdr_buffered(write_stream);
9757                value.to_xdr_buffered(write_stream)
9758            },
9759            LedgerEntryData::Ttl(value) => {
9760                LedgerEntryType::Ttl.to_xdr_buffered(write_stream);
9761                value.to_xdr_buffered(write_stream)
9762            },
9763        }
9764    }
9765
9766    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9767        match LedgerEntryType::from_xdr_buffered(read_stream)? {
9768            LedgerEntryType::Account => Ok(LedgerEntryData::Account(AccountEntry::from_xdr_buffered(read_stream)?)),
9769            LedgerEntryType::Trustline =>
9770                Ok(LedgerEntryData::Trustline(TrustLineEntry::from_xdr_buffered(read_stream)?)),
9771            LedgerEntryType::Offer => Ok(LedgerEntryData::Offer(OfferEntry::from_xdr_buffered(read_stream)?)),
9772            LedgerEntryType::Data => Ok(LedgerEntryData::Data(DataEntry::from_xdr_buffered(read_stream)?)),
9773            LedgerEntryType::ClaimableBalance =>
9774                Ok(LedgerEntryData::ClaimableBalance(ClaimableBalanceEntry::from_xdr_buffered(read_stream)?)),
9775            LedgerEntryType::LiquidityPool =>
9776                Ok(LedgerEntryData::LiquidityPool(LiquidityPoolEntry::from_xdr_buffered(read_stream)?)),
9777            LedgerEntryType::ContractData =>
9778                Ok(LedgerEntryData::ContractData(ContractDataEntry::from_xdr_buffered(read_stream)?)),
9779            LedgerEntryType::ContractCode =>
9780                Ok(LedgerEntryData::ContractCode(ContractCodeEntry::from_xdr_buffered(read_stream)?)),
9781            LedgerEntryType::ConfigSetting =>
9782                Ok(LedgerEntryData::ConfigSetting(ConfigSettingEntry::from_xdr_buffered(read_stream)?)),
9783            LedgerEntryType::Ttl => Ok(LedgerEntryData::Ttl(TtlEntry::from_xdr_buffered(read_stream)?)),
9784        }
9785    }
9786}
9787
9788#[allow(dead_code)]
9790#[derive(Debug, Clone, Eq, PartialEq)]
9791pub enum LedgerEntryExt {
9792    V0,
9793    V1(LedgerEntryExtensionV1),
9794    Default(i32),
9795}
9796
9797impl XdrCodec for LedgerEntryExt {
9798    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9799        match self {
9800            LedgerEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9801            LedgerEntryExt::V1(value) => {
9802                (1 as i32).to_xdr_buffered(write_stream);
9803                value.to_xdr_buffered(write_stream)
9804            },
9805            LedgerEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
9806        }
9807    }
9808
9809    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9810        match i32::from_xdr_buffered(read_stream)? {
9811            0 => Ok(LedgerEntryExt::V0),
9812            1 => Ok(LedgerEntryExt::V1(LedgerEntryExtensionV1::from_xdr_buffered(read_stream)?)),
9813            code => Ok(LedgerEntryExt::Default(code)),
9814        }
9815    }
9816}
9817
9818#[allow(dead_code)]
9820#[derive(Debug, Clone, Eq, PartialEq)]
9821pub enum LedgerKey {
9822    Account(LedgerKeyAccount),
9823    Trustline(LedgerKeyTrustLine),
9824    Offer(LedgerKeyOffer),
9825    Data(LedgerKeyData),
9826    ClaimableBalance(LedgerKeyClaimableBalance),
9827    LiquidityPool(LedgerKeyLiquidityPool),
9828    ContractData(LedgerKeyContractData),
9829    ContractCode(LedgerKeyContractCode),
9830    ConfigSetting(LedgerKeyConfigSetting),
9831    Ttl(LedgerKeyTtl),
9832}
9833
9834impl XdrCodec for LedgerKey {
9835    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9836        match self {
9837            LedgerKey::Account(value) => {
9838                LedgerEntryType::Account.to_xdr_buffered(write_stream);
9839                value.to_xdr_buffered(write_stream)
9840            },
9841            LedgerKey::Trustline(value) => {
9842                LedgerEntryType::Trustline.to_xdr_buffered(write_stream);
9843                value.to_xdr_buffered(write_stream)
9844            },
9845            LedgerKey::Offer(value) => {
9846                LedgerEntryType::Offer.to_xdr_buffered(write_stream);
9847                value.to_xdr_buffered(write_stream)
9848            },
9849            LedgerKey::Data(value) => {
9850                LedgerEntryType::Data.to_xdr_buffered(write_stream);
9851                value.to_xdr_buffered(write_stream)
9852            },
9853            LedgerKey::ClaimableBalance(value) => {
9854                LedgerEntryType::ClaimableBalance.to_xdr_buffered(write_stream);
9855                value.to_xdr_buffered(write_stream)
9856            },
9857            LedgerKey::LiquidityPool(value) => {
9858                LedgerEntryType::LiquidityPool.to_xdr_buffered(write_stream);
9859                value.to_xdr_buffered(write_stream)
9860            },
9861            LedgerKey::ContractData(value) => {
9862                LedgerEntryType::ContractData.to_xdr_buffered(write_stream);
9863                value.to_xdr_buffered(write_stream)
9864            },
9865            LedgerKey::ContractCode(value) => {
9866                LedgerEntryType::ContractCode.to_xdr_buffered(write_stream);
9867                value.to_xdr_buffered(write_stream)
9868            },
9869            LedgerKey::ConfigSetting(value) => {
9870                LedgerEntryType::ConfigSetting.to_xdr_buffered(write_stream);
9871                value.to_xdr_buffered(write_stream)
9872            },
9873            LedgerKey::Ttl(value) => {
9874                LedgerEntryType::Ttl.to_xdr_buffered(write_stream);
9875                value.to_xdr_buffered(write_stream)
9876            },
9877        }
9878    }
9879
9880    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9881        match LedgerEntryType::from_xdr_buffered(read_stream)? {
9882            LedgerEntryType::Account => Ok(LedgerKey::Account(LedgerKeyAccount::from_xdr_buffered(read_stream)?)),
9883            LedgerEntryType::Trustline => Ok(LedgerKey::Trustline(LedgerKeyTrustLine::from_xdr_buffered(read_stream)?)),
9884            LedgerEntryType::Offer => Ok(LedgerKey::Offer(LedgerKeyOffer::from_xdr_buffered(read_stream)?)),
9885            LedgerEntryType::Data => Ok(LedgerKey::Data(LedgerKeyData::from_xdr_buffered(read_stream)?)),
9886            LedgerEntryType::ClaimableBalance =>
9887                Ok(LedgerKey::ClaimableBalance(LedgerKeyClaimableBalance::from_xdr_buffered(read_stream)?)),
9888            LedgerEntryType::LiquidityPool =>
9889                Ok(LedgerKey::LiquidityPool(LedgerKeyLiquidityPool::from_xdr_buffered(read_stream)?)),
9890            LedgerEntryType::ContractData =>
9891                Ok(LedgerKey::ContractData(LedgerKeyContractData::from_xdr_buffered(read_stream)?)),
9892            LedgerEntryType::ContractCode =>
9893                Ok(LedgerKey::ContractCode(LedgerKeyContractCode::from_xdr_buffered(read_stream)?)),
9894            LedgerEntryType::ConfigSetting =>
9895                Ok(LedgerKey::ConfigSetting(LedgerKeyConfigSetting::from_xdr_buffered(read_stream)?)),
9896            LedgerEntryType::Ttl => Ok(LedgerKey::Ttl(LedgerKeyTtl::from_xdr_buffered(read_stream)?)),
9897        }
9898    }
9899}
9900
9901#[allow(dead_code)]
9903#[cfg(feature = "all-types")]
9904#[derive(Debug, Clone, Eq, PartialEq)]
9905pub enum StellarValueExt {
9906    StellarValueBasic,
9907    StellarValueSigned(LedgerCloseValueSignature),
9908}
9909
9910#[cfg(feature = "all-types")]
9911impl XdrCodec for StellarValueExt {
9912    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9913        match self {
9914            StellarValueExt::StellarValueBasic => StellarValueType::StellarValueBasic.to_xdr_buffered(write_stream),
9915            StellarValueExt::StellarValueSigned(value) => {
9916                StellarValueType::StellarValueSigned.to_xdr_buffered(write_stream);
9917                value.to_xdr_buffered(write_stream)
9918            },
9919        }
9920    }
9921
9922    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9923        match StellarValueType::from_xdr_buffered(read_stream)? {
9924            StellarValueType::StellarValueBasic => Ok(StellarValueExt::StellarValueBasic),
9925            StellarValueType::StellarValueSigned =>
9926                Ok(StellarValueExt::StellarValueSigned(LedgerCloseValueSignature::from_xdr_buffered(read_stream)?)),
9927        }
9928    }
9929}
9930
9931#[allow(dead_code)]
9933#[cfg(feature = "all-types")]
9934#[derive(Debug, Clone, Eq, PartialEq)]
9935pub enum LedgerHeaderExtensionV1Ext {
9936    V0,
9937    Default(i32),
9938}
9939
9940#[cfg(feature = "all-types")]
9941impl XdrCodec for LedgerHeaderExtensionV1Ext {
9942    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9943        match self {
9944            LedgerHeaderExtensionV1Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
9945            LedgerHeaderExtensionV1Ext::Default(code) => code.to_xdr_buffered(write_stream),
9946        }
9947    }
9948
9949    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9950        match i32::from_xdr_buffered(read_stream)? {
9951            0 => Ok(LedgerHeaderExtensionV1Ext::V0),
9952            code => Ok(LedgerHeaderExtensionV1Ext::Default(code)),
9953        }
9954    }
9955}
9956
9957#[allow(dead_code)]
9959#[cfg(feature = "all-types")]
9960#[derive(Debug, Clone, Eq, PartialEq)]
9961pub enum LedgerHeaderExt {
9962    V0,
9963    V1(LedgerHeaderExtensionV1),
9964    Default(i32),
9965}
9966
9967#[cfg(feature = "all-types")]
9968impl XdrCodec for LedgerHeaderExt {
9969    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
9970        match self {
9971            LedgerHeaderExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
9972            LedgerHeaderExt::V1(value) => {
9973                (1 as i32).to_xdr_buffered(write_stream);
9974                value.to_xdr_buffered(write_stream)
9975            },
9976            LedgerHeaderExt::Default(code) => code.to_xdr_buffered(write_stream),
9977        }
9978    }
9979
9980    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
9981        match i32::from_xdr_buffered(read_stream)? {
9982            0 => Ok(LedgerHeaderExt::V0),
9983            1 => Ok(LedgerHeaderExt::V1(LedgerHeaderExtensionV1::from_xdr_buffered(read_stream)?)),
9984            code => Ok(LedgerHeaderExt::Default(code)),
9985        }
9986    }
9987}
9988
9989#[allow(dead_code)]
9991#[cfg(feature = "all-types")]
9992#[derive(Debug, Clone, Eq, PartialEq)]
9993pub enum LedgerUpgrade {
9994    LedgerUpgradeVersion(Uint32),
9995    LedgerUpgradeBaseFee(Uint32),
9996    LedgerUpgradeMaxTxSetSize(Uint32),
9997    LedgerUpgradeBaseReserve(Uint32),
9998    LedgerUpgradeFlags(Uint32),
9999    LedgerUpgradeConfig(ConfigUpgradeSetKey),
10000    LedgerUpgradeMaxSorobanTxSetSize(Uint32),
10001}
10002
10003#[cfg(feature = "all-types")]
10004impl XdrCodec for LedgerUpgrade {
10005    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10006        match self {
10007            LedgerUpgrade::LedgerUpgradeVersion(value) => {
10008                LedgerUpgradeType::LedgerUpgradeVersion.to_xdr_buffered(write_stream);
10009                value.to_xdr_buffered(write_stream)
10010            },
10011            LedgerUpgrade::LedgerUpgradeBaseFee(value) => {
10012                LedgerUpgradeType::LedgerUpgradeBaseFee.to_xdr_buffered(write_stream);
10013                value.to_xdr_buffered(write_stream)
10014            },
10015            LedgerUpgrade::LedgerUpgradeMaxTxSetSize(value) => {
10016                LedgerUpgradeType::LedgerUpgradeMaxTxSetSize.to_xdr_buffered(write_stream);
10017                value.to_xdr_buffered(write_stream)
10018            },
10019            LedgerUpgrade::LedgerUpgradeBaseReserve(value) => {
10020                LedgerUpgradeType::LedgerUpgradeBaseReserve.to_xdr_buffered(write_stream);
10021                value.to_xdr_buffered(write_stream)
10022            },
10023            LedgerUpgrade::LedgerUpgradeFlags(value) => {
10024                LedgerUpgradeType::LedgerUpgradeFlags.to_xdr_buffered(write_stream);
10025                value.to_xdr_buffered(write_stream)
10026            },
10027            LedgerUpgrade::LedgerUpgradeConfig(value) => {
10028                LedgerUpgradeType::LedgerUpgradeConfig.to_xdr_buffered(write_stream);
10029                value.to_xdr_buffered(write_stream)
10030            },
10031            LedgerUpgrade::LedgerUpgradeMaxSorobanTxSetSize(value) => {
10032                LedgerUpgradeType::LedgerUpgradeMaxSorobanTxSetSize.to_xdr_buffered(write_stream);
10033                value.to_xdr_buffered(write_stream)
10034            },
10035        }
10036    }
10037
10038    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10039        match LedgerUpgradeType::from_xdr_buffered(read_stream)? {
10040            LedgerUpgradeType::LedgerUpgradeVersion =>
10041                Ok(LedgerUpgrade::LedgerUpgradeVersion(Uint32::from_xdr_buffered(read_stream)?)),
10042            LedgerUpgradeType::LedgerUpgradeBaseFee =>
10043                Ok(LedgerUpgrade::LedgerUpgradeBaseFee(Uint32::from_xdr_buffered(read_stream)?)),
10044            LedgerUpgradeType::LedgerUpgradeMaxTxSetSize =>
10045                Ok(LedgerUpgrade::LedgerUpgradeMaxTxSetSize(Uint32::from_xdr_buffered(read_stream)?)),
10046            LedgerUpgradeType::LedgerUpgradeBaseReserve =>
10047                Ok(LedgerUpgrade::LedgerUpgradeBaseReserve(Uint32::from_xdr_buffered(read_stream)?)),
10048            LedgerUpgradeType::LedgerUpgradeFlags =>
10049                Ok(LedgerUpgrade::LedgerUpgradeFlags(Uint32::from_xdr_buffered(read_stream)?)),
10050            LedgerUpgradeType::LedgerUpgradeConfig =>
10051                Ok(LedgerUpgrade::LedgerUpgradeConfig(ConfigUpgradeSetKey::from_xdr_buffered(read_stream)?)),
10052            LedgerUpgradeType::LedgerUpgradeMaxSorobanTxSetSize =>
10053                Ok(LedgerUpgrade::LedgerUpgradeMaxSorobanTxSetSize(Uint32::from_xdr_buffered(read_stream)?)),
10054        }
10055    }
10056}
10057
10058#[allow(dead_code)]
10060#[cfg(feature = "all-types")]
10061#[derive(Debug, Clone, Eq, PartialEq)]
10062pub enum BucketMetadataExt {
10063    V0,
10064    Default(i32),
10065}
10066
10067#[cfg(feature = "all-types")]
10068impl XdrCodec for BucketMetadataExt {
10069    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10070        match self {
10071            BucketMetadataExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10072            BucketMetadataExt::Default(code) => code.to_xdr_buffered(write_stream),
10073        }
10074    }
10075
10076    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10077        match i32::from_xdr_buffered(read_stream)? {
10078            0 => Ok(BucketMetadataExt::V0),
10079            code => Ok(BucketMetadataExt::Default(code)),
10080        }
10081    }
10082}
10083
10084#[allow(dead_code)]
10086#[cfg(feature = "all-types")]
10087#[derive(Debug, Clone, Eq, PartialEq)]
10088pub enum BucketEntry {
10089    Liveentry(LedgerEntry),
10090    Initentry(LedgerEntry),
10091    Deadentry(LedgerKey),
10092    Metaentry(BucketMetadata),
10093}
10094
10095#[cfg(feature = "all-types")]
10096impl XdrCodec for BucketEntry {
10097    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10098        match self {
10099            BucketEntry::Liveentry(value) => {
10100                BucketEntryType::Liveentry.to_xdr_buffered(write_stream);
10101                value.to_xdr_buffered(write_stream)
10102            },
10103            BucketEntry::Initentry(value) => {
10104                BucketEntryType::Initentry.to_xdr_buffered(write_stream);
10105                value.to_xdr_buffered(write_stream)
10106            },
10107            BucketEntry::Deadentry(value) => {
10108                BucketEntryType::Deadentry.to_xdr_buffered(write_stream);
10109                value.to_xdr_buffered(write_stream)
10110            },
10111            BucketEntry::Metaentry(value) => {
10112                BucketEntryType::Metaentry.to_xdr_buffered(write_stream);
10113                value.to_xdr_buffered(write_stream)
10114            },
10115        }
10116    }
10117
10118    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10119        match BucketEntryType::from_xdr_buffered(read_stream)? {
10120            BucketEntryType::Liveentry => Ok(BucketEntry::Liveentry(LedgerEntry::from_xdr_buffered(read_stream)?)),
10121            BucketEntryType::Initentry => Ok(BucketEntry::Initentry(LedgerEntry::from_xdr_buffered(read_stream)?)),
10122            BucketEntryType::Deadentry => Ok(BucketEntry::Deadentry(LedgerKey::from_xdr_buffered(read_stream)?)),
10123            BucketEntryType::Metaentry => Ok(BucketEntry::Metaentry(BucketMetadata::from_xdr_buffered(read_stream)?)),
10124        }
10125    }
10126}
10127
10128#[allow(dead_code)]
10130#[cfg(feature = "all-types")]
10131#[derive(Debug, Clone, Eq, PartialEq)]
10132pub enum TxSetComponent {
10133    TxsetCompTxsMaybeDiscountedFee(TxSetComponentTxsMaybeDiscountedFee),
10134}
10135
10136#[cfg(feature = "all-types")]
10137impl XdrCodec for TxSetComponent {
10138    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10139        match self {
10140            TxSetComponent::TxsetCompTxsMaybeDiscountedFee(value) => {
10141                TxSetComponentType::TxsetCompTxsMaybeDiscountedFee.to_xdr_buffered(write_stream);
10142                value.to_xdr_buffered(write_stream)
10143            },
10144        }
10145    }
10146
10147    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10148        match TxSetComponentType::from_xdr_buffered(read_stream)? {
10149            TxSetComponentType::TxsetCompTxsMaybeDiscountedFee => Ok(TxSetComponent::TxsetCompTxsMaybeDiscountedFee(
10150                TxSetComponentTxsMaybeDiscountedFee::from_xdr_buffered(read_stream)?,
10151            )),
10152        }
10153    }
10154}
10155
10156#[allow(dead_code)]
10158#[cfg(feature = "all-types")]
10159#[derive(Debug, Clone, Eq, PartialEq)]
10160pub enum TransactionPhase {
10161    V0(UnlimitedVarArray<TxSetComponent>),
10162    Default(i32),
10163}
10164
10165#[cfg(feature = "all-types")]
10166impl XdrCodec for TransactionPhase {
10167    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10168        match self {
10169            TransactionPhase::V0(value) => {
10170                (0 as i32).to_xdr_buffered(write_stream);
10171                value.to_xdr_buffered(write_stream)
10172            },
10173            TransactionPhase::Default(code) => code.to_xdr_buffered(write_stream),
10174        }
10175    }
10176
10177    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10178        match i32::from_xdr_buffered(read_stream)? {
10179            0 => Ok(TransactionPhase::V0(UnlimitedVarArray::<TxSetComponent>::from_xdr_buffered(read_stream)?)),
10180            code => Ok(TransactionPhase::Default(code)),
10181        }
10182    }
10183}
10184
10185#[allow(dead_code)]
10187#[cfg(feature = "all-types")]
10188#[derive(Debug, Clone, Eq, PartialEq)]
10189pub enum GeneralizedTransactionSet {
10190    V1(TransactionSetV1),
10191    Default(i32),
10192}
10193
10194#[cfg(feature = "all-types")]
10195impl XdrCodec for GeneralizedTransactionSet {
10196    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10197        match self {
10198            GeneralizedTransactionSet::V1(value) => {
10199                (1 as i32).to_xdr_buffered(write_stream);
10200                value.to_xdr_buffered(write_stream)
10201            },
10202            GeneralizedTransactionSet::Default(code) => code.to_xdr_buffered(write_stream),
10203        }
10204    }
10205
10206    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10207        match i32::from_xdr_buffered(read_stream)? {
10208            1 => Ok(GeneralizedTransactionSet::V1(TransactionSetV1::from_xdr_buffered(read_stream)?)),
10209            code => Ok(GeneralizedTransactionSet::Default(code)),
10210        }
10211    }
10212}
10213
10214#[allow(dead_code)]
10216#[cfg(feature = "all-types")]
10217#[derive(Debug, Clone, Eq, PartialEq)]
10218pub enum TransactionHistoryEntryExt {
10219    V0,
10220    V1(GeneralizedTransactionSet),
10221    Default(i32),
10222}
10223
10224#[cfg(feature = "all-types")]
10225impl XdrCodec for TransactionHistoryEntryExt {
10226    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10227        match self {
10228            TransactionHistoryEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10229            TransactionHistoryEntryExt::V1(value) => {
10230                (1 as i32).to_xdr_buffered(write_stream);
10231                value.to_xdr_buffered(write_stream)
10232            },
10233            TransactionHistoryEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
10234        }
10235    }
10236
10237    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10238        match i32::from_xdr_buffered(read_stream)? {
10239            0 => Ok(TransactionHistoryEntryExt::V0),
10240            1 => Ok(TransactionHistoryEntryExt::V1(GeneralizedTransactionSet::from_xdr_buffered(read_stream)?)),
10241            code => Ok(TransactionHistoryEntryExt::Default(code)),
10242        }
10243    }
10244}
10245
10246#[allow(dead_code)]
10248#[cfg(feature = "all-types")]
10249#[derive(Debug, Clone, Eq, PartialEq)]
10250pub enum TransactionHistoryResultEntryExt {
10251    V0,
10252    Default(i32),
10253}
10254
10255#[cfg(feature = "all-types")]
10256impl XdrCodec for TransactionHistoryResultEntryExt {
10257    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10258        match self {
10259            TransactionHistoryResultEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10260            TransactionHistoryResultEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
10261        }
10262    }
10263
10264    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10265        match i32::from_xdr_buffered(read_stream)? {
10266            0 => Ok(TransactionHistoryResultEntryExt::V0),
10267            code => Ok(TransactionHistoryResultEntryExt::Default(code)),
10268        }
10269    }
10270}
10271
10272#[allow(dead_code)]
10274#[cfg(feature = "all-types")]
10275#[derive(Debug, Clone, Eq, PartialEq)]
10276pub enum LedgerHeaderHistoryEntryExt {
10277    V0,
10278    Default(i32),
10279}
10280
10281#[cfg(feature = "all-types")]
10282impl XdrCodec for LedgerHeaderHistoryEntryExt {
10283    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10284        match self {
10285            LedgerHeaderHistoryEntryExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10286            LedgerHeaderHistoryEntryExt::Default(code) => code.to_xdr_buffered(write_stream),
10287        }
10288    }
10289
10290    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10291        match i32::from_xdr_buffered(read_stream)? {
10292            0 => Ok(LedgerHeaderHistoryEntryExt::V0),
10293            code => Ok(LedgerHeaderHistoryEntryExt::Default(code)),
10294        }
10295    }
10296}
10297
10298#[allow(dead_code)]
10300#[cfg(feature = "all-types")]
10301#[derive(Debug, Clone, Eq, PartialEq)]
10302pub enum ScpHistoryEntry {
10303    V0(ScpHistoryEntryV0),
10304    Default(i32),
10305}
10306
10307#[cfg(feature = "all-types")]
10308impl XdrCodec for ScpHistoryEntry {
10309    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10310        match self {
10311            ScpHistoryEntry::V0(value) => {
10312                (0 as i32).to_xdr_buffered(write_stream);
10313                value.to_xdr_buffered(write_stream)
10314            },
10315            ScpHistoryEntry::Default(code) => code.to_xdr_buffered(write_stream),
10316        }
10317    }
10318
10319    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10320        match i32::from_xdr_buffered(read_stream)? {
10321            0 => Ok(ScpHistoryEntry::V0(ScpHistoryEntryV0::from_xdr_buffered(read_stream)?)),
10322            code => Ok(ScpHistoryEntry::Default(code)),
10323        }
10324    }
10325}
10326
10327#[allow(dead_code)]
10329#[derive(Debug, Clone, Eq, PartialEq)]
10330pub enum LedgerEntryChange {
10331    LedgerEntryCreated(LedgerEntry),
10332    LedgerEntryUpdated(LedgerEntry),
10333    LedgerEntryRemoved(LedgerKey),
10334    LedgerEntryState(LedgerEntry),
10335}
10336
10337impl XdrCodec for LedgerEntryChange {
10338    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10339        match self {
10340            LedgerEntryChange::LedgerEntryCreated(value) => {
10341                LedgerEntryChangeType::LedgerEntryCreated.to_xdr_buffered(write_stream);
10342                value.to_xdr_buffered(write_stream)
10343            },
10344            LedgerEntryChange::LedgerEntryUpdated(value) => {
10345                LedgerEntryChangeType::LedgerEntryUpdated.to_xdr_buffered(write_stream);
10346                value.to_xdr_buffered(write_stream)
10347            },
10348            LedgerEntryChange::LedgerEntryRemoved(value) => {
10349                LedgerEntryChangeType::LedgerEntryRemoved.to_xdr_buffered(write_stream);
10350                value.to_xdr_buffered(write_stream)
10351            },
10352            LedgerEntryChange::LedgerEntryState(value) => {
10353                LedgerEntryChangeType::LedgerEntryState.to_xdr_buffered(write_stream);
10354                value.to_xdr_buffered(write_stream)
10355            },
10356        }
10357    }
10358
10359    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10360        match LedgerEntryChangeType::from_xdr_buffered(read_stream)? {
10361            LedgerEntryChangeType::LedgerEntryCreated =>
10362                Ok(LedgerEntryChange::LedgerEntryCreated(LedgerEntry::from_xdr_buffered(read_stream)?)),
10363            LedgerEntryChangeType::LedgerEntryUpdated =>
10364                Ok(LedgerEntryChange::LedgerEntryUpdated(LedgerEntry::from_xdr_buffered(read_stream)?)),
10365            LedgerEntryChangeType::LedgerEntryRemoved =>
10366                Ok(LedgerEntryChange::LedgerEntryRemoved(LedgerKey::from_xdr_buffered(read_stream)?)),
10367            LedgerEntryChangeType::LedgerEntryState =>
10368                Ok(LedgerEntryChange::LedgerEntryState(LedgerEntry::from_xdr_buffered(read_stream)?)),
10369        }
10370    }
10371}
10372
10373#[allow(dead_code)]
10375#[derive(Debug, Clone, Eq, PartialEq)]
10376pub enum ContractEventBody {
10377    V0(ContractEventV0),
10378    Default(i32),
10379}
10380
10381impl XdrCodec for ContractEventBody {
10382    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10383        match self {
10384            ContractEventBody::V0(value) => {
10385                (0 as i32).to_xdr_buffered(write_stream);
10386                value.to_xdr_buffered(write_stream)
10387            },
10388            ContractEventBody::Default(code) => code.to_xdr_buffered(write_stream),
10389        }
10390    }
10391
10392    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10393        match i32::from_xdr_buffered(read_stream)? {
10394            0 => Ok(ContractEventBody::V0(ContractEventV0::from_xdr_buffered(read_stream)?)),
10395            code => Ok(ContractEventBody::Default(code)),
10396        }
10397    }
10398}
10399
10400#[allow(dead_code)]
10402#[derive(Debug, Clone, Eq, PartialEq)]
10403pub enum SorobanTransactionMetaExt {
10404    V0,
10405    V1(SorobanTransactionMetaExtV1),
10406    Default(i32),
10407}
10408
10409impl XdrCodec for SorobanTransactionMetaExt {
10410    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10411        match self {
10412            SorobanTransactionMetaExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10413            SorobanTransactionMetaExt::V1(value) => {
10414                (1 as i32).to_xdr_buffered(write_stream);
10415                value.to_xdr_buffered(write_stream)
10416            },
10417            SorobanTransactionMetaExt::Default(code) => code.to_xdr_buffered(write_stream),
10418        }
10419    }
10420
10421    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10422        match i32::from_xdr_buffered(read_stream)? {
10423            0 => Ok(SorobanTransactionMetaExt::V0),
10424            1 => Ok(SorobanTransactionMetaExt::V1(SorobanTransactionMetaExtV1::from_xdr_buffered(read_stream)?)),
10425            code => Ok(SorobanTransactionMetaExt::Default(code)),
10426        }
10427    }
10428}
10429
10430#[allow(dead_code)]
10432#[derive(Debug, Clone, Eq, PartialEq)]
10433pub enum TransactionMeta {
10434    V0(UnlimitedVarArray<OperationMeta>),
10435    V1(TransactionMetaV1),
10436    V2(TransactionMetaV2),
10437    V3(TransactionMetaV3),
10438    Default(i32),
10439}
10440
10441impl XdrCodec for TransactionMeta {
10442    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10443        match self {
10444            TransactionMeta::V0(value) => {
10445                (0 as i32).to_xdr_buffered(write_stream);
10446                value.to_xdr_buffered(write_stream)
10447            },
10448            TransactionMeta::V1(value) => {
10449                (1 as i32).to_xdr_buffered(write_stream);
10450                value.to_xdr_buffered(write_stream)
10451            },
10452            TransactionMeta::V2(value) => {
10453                (2 as i32).to_xdr_buffered(write_stream);
10454                value.to_xdr_buffered(write_stream)
10455            },
10456            TransactionMeta::V3(value) => {
10457                (3 as i32).to_xdr_buffered(write_stream);
10458                value.to_xdr_buffered(write_stream)
10459            },
10460            TransactionMeta::Default(code) => code.to_xdr_buffered(write_stream),
10461        }
10462    }
10463
10464    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10465        match i32::from_xdr_buffered(read_stream)? {
10466            0 => Ok(TransactionMeta::V0(UnlimitedVarArray::<OperationMeta>::from_xdr_buffered(read_stream)?)),
10467            1 => Ok(TransactionMeta::V1(TransactionMetaV1::from_xdr_buffered(read_stream)?)),
10468            2 => Ok(TransactionMeta::V2(TransactionMetaV2::from_xdr_buffered(read_stream)?)),
10469            3 => Ok(TransactionMeta::V3(TransactionMetaV3::from_xdr_buffered(read_stream)?)),
10470            code => Ok(TransactionMeta::Default(code)),
10471        }
10472    }
10473}
10474
10475#[allow(dead_code)]
10477#[cfg(feature = "all-types")]
10478#[derive(Debug, Clone, Eq, PartialEq)]
10479pub enum LedgerCloseMetaExt {
10480    V0,
10481    V1(LedgerCloseMetaExtV1),
10482    Default(i32),
10483}
10484
10485#[cfg(feature = "all-types")]
10486impl XdrCodec for LedgerCloseMetaExt {
10487    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10488        match self {
10489            LedgerCloseMetaExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
10490            LedgerCloseMetaExt::V1(value) => {
10491                (1 as i32).to_xdr_buffered(write_stream);
10492                value.to_xdr_buffered(write_stream)
10493            },
10494            LedgerCloseMetaExt::Default(code) => code.to_xdr_buffered(write_stream),
10495        }
10496    }
10497
10498    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10499        match i32::from_xdr_buffered(read_stream)? {
10500            0 => Ok(LedgerCloseMetaExt::V0),
10501            1 => Ok(LedgerCloseMetaExt::V1(LedgerCloseMetaExtV1::from_xdr_buffered(read_stream)?)),
10502            code => Ok(LedgerCloseMetaExt::Default(code)),
10503        }
10504    }
10505}
10506
10507#[allow(dead_code)]
10509#[cfg(feature = "all-types")]
10510#[derive(Debug, Clone, Eq, PartialEq)]
10511pub enum LedgerCloseMeta {
10512    V0(LedgerCloseMetaV0),
10513    V1(LedgerCloseMetaV1),
10514    Default(i32),
10515}
10516
10517#[cfg(feature = "all-types")]
10518impl XdrCodec for LedgerCloseMeta {
10519    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10520        match self {
10521            LedgerCloseMeta::V0(value) => {
10522                (0 as i32).to_xdr_buffered(write_stream);
10523                value.to_xdr_buffered(write_stream)
10524            },
10525            LedgerCloseMeta::V1(value) => {
10526                (1 as i32).to_xdr_buffered(write_stream);
10527                value.to_xdr_buffered(write_stream)
10528            },
10529            LedgerCloseMeta::Default(code) => code.to_xdr_buffered(write_stream),
10530        }
10531    }
10532
10533    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10534        match i32::from_xdr_buffered(read_stream)? {
10535            0 => Ok(LedgerCloseMeta::V0(LedgerCloseMetaV0::from_xdr_buffered(read_stream)?)),
10536            1 => Ok(LedgerCloseMeta::V1(LedgerCloseMetaV1::from_xdr_buffered(read_stream)?)),
10537            code => Ok(LedgerCloseMeta::Default(code)),
10538        }
10539    }
10540}
10541
10542#[allow(dead_code)]
10544#[cfg(feature = "all-types")]
10545#[derive(Debug, Clone, Eq, PartialEq)]
10546pub enum PeerAddressIp {
10547    IPv4([u8; 4]),
10548    IPv6([u8; 16]),
10549}
10550
10551#[cfg(feature = "all-types")]
10552impl XdrCodec for PeerAddressIp {
10553    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10554        match self {
10555            PeerAddressIp::IPv4(value) => {
10556                IpAddrType::IPv4.to_xdr_buffered(write_stream);
10557                value.to_xdr_buffered(write_stream)
10558            },
10559            PeerAddressIp::IPv6(value) => {
10560                IpAddrType::IPv6.to_xdr_buffered(write_stream);
10561                value.to_xdr_buffered(write_stream)
10562            },
10563        }
10564    }
10565
10566    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10567        match IpAddrType::from_xdr_buffered(read_stream)? {
10568            IpAddrType::IPv4 => Ok(PeerAddressIp::IPv4(<[u8; 4]>::from_xdr_buffered(read_stream)?)),
10569            IpAddrType::IPv6 => Ok(PeerAddressIp::IPv6(<[u8; 16]>::from_xdr_buffered(read_stream)?)),
10570        }
10571    }
10572}
10573
10574#[allow(dead_code)]
10576#[cfg(feature = "all-types")]
10577#[derive(Debug, Clone, Eq, PartialEq)]
10578pub enum SurveyResponseBody {
10579    SurveyTopologyResponseV0(TopologyResponseBodyV0),
10580    SurveyTopologyResponseV1(TopologyResponseBodyV1),
10581    SurveyTopologyResponseV2(TopologyResponseBodyV2),
10582}
10583
10584#[cfg(feature = "all-types")]
10585impl XdrCodec for SurveyResponseBody {
10586    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10587        match self {
10588            SurveyResponseBody::SurveyTopologyResponseV0(value) => {
10589                SurveyMessageResponseType::SurveyTopologyResponseV0.to_xdr_buffered(write_stream);
10590                value.to_xdr_buffered(write_stream)
10591            },
10592            SurveyResponseBody::SurveyTopologyResponseV1(value) => {
10593                SurveyMessageResponseType::SurveyTopologyResponseV1.to_xdr_buffered(write_stream);
10594                value.to_xdr_buffered(write_stream)
10595            },
10596            SurveyResponseBody::SurveyTopologyResponseV2(value) => {
10597                SurveyMessageResponseType::SurveyTopologyResponseV2.to_xdr_buffered(write_stream);
10598                value.to_xdr_buffered(write_stream)
10599            },
10600        }
10601    }
10602
10603    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10604        match SurveyMessageResponseType::from_xdr_buffered(read_stream)? {
10605            SurveyMessageResponseType::SurveyTopologyResponseV0 => Ok(SurveyResponseBody::SurveyTopologyResponseV0(
10606                TopologyResponseBodyV0::from_xdr_buffered(read_stream)?,
10607            )),
10608            SurveyMessageResponseType::SurveyTopologyResponseV1 => Ok(SurveyResponseBody::SurveyTopologyResponseV1(
10609                TopologyResponseBodyV1::from_xdr_buffered(read_stream)?,
10610            )),
10611            SurveyMessageResponseType::SurveyTopologyResponseV2 => Ok(SurveyResponseBody::SurveyTopologyResponseV2(
10612                TopologyResponseBodyV2::from_xdr_buffered(read_stream)?,
10613            )),
10614        }
10615    }
10616}
10617
10618#[allow(dead_code)]
10620#[cfg(feature = "all-types")]
10621#[derive(Debug, Clone, Eq, PartialEq)]
10622pub enum StellarMessage {
10623    ErrorMsg(Error),
10624    Hello(Hello),
10625    Auth(Auth),
10626    DontHave(DontHave),
10627    GetPeers,
10628    Peers(LimitedVarArray<PeerAddress, 100>),
10629    GetTxSet(Uint256),
10630    TxSet(TransactionSet),
10631    GeneralizedTxSet(GeneralizedTransactionSet),
10632    Transaction(TransactionEnvelope),
10633    SurveyRequest(SignedSurveyRequestMessage),
10634    SurveyResponse(SignedSurveyResponseMessage),
10635    TimeSlicedSurveyRequest(SignedTimeSlicedSurveyRequestMessage),
10636    TimeSlicedSurveyResponse(SignedTimeSlicedSurveyResponseMessage),
10637    TimeSlicedSurveyStartCollecting(SignedTimeSlicedSurveyStartCollectingMessage),
10638    TimeSlicedSurveyStopCollecting(SignedTimeSlicedSurveyStopCollectingMessage),
10639    GetScpQuorumset(Uint256),
10640    ScpQuorumset(ScpQuorumSet),
10641    ScpMessage(ScpEnvelope),
10642    GetScpState(Uint32),
10643    SendMore(SendMore),
10644    SendMoreExtended(SendMoreExtended),
10645    FloodAdvert(FloodAdvert),
10646    FloodDemand(FloodDemand),
10647}
10648
10649#[cfg(feature = "all-types")]
10650impl XdrCodec for StellarMessage {
10651    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10652        match self {
10653            StellarMessage::ErrorMsg(value) => {
10654                MessageType::ErrorMsg.to_xdr_buffered(write_stream);
10655                value.to_xdr_buffered(write_stream)
10656            },
10657            StellarMessage::Hello(value) => {
10658                MessageType::Hello.to_xdr_buffered(write_stream);
10659                value.to_xdr_buffered(write_stream)
10660            },
10661            StellarMessage::Auth(value) => {
10662                MessageType::Auth.to_xdr_buffered(write_stream);
10663                value.to_xdr_buffered(write_stream)
10664            },
10665            StellarMessage::DontHave(value) => {
10666                MessageType::DontHave.to_xdr_buffered(write_stream);
10667                value.to_xdr_buffered(write_stream)
10668            },
10669            StellarMessage::GetPeers => MessageType::GetPeers.to_xdr_buffered(write_stream),
10670            StellarMessage::Peers(value) => {
10671                MessageType::Peers.to_xdr_buffered(write_stream);
10672                value.to_xdr_buffered(write_stream)
10673            },
10674            StellarMessage::GetTxSet(value) => {
10675                MessageType::GetTxSet.to_xdr_buffered(write_stream);
10676                value.to_xdr_buffered(write_stream)
10677            },
10678            StellarMessage::TxSet(value) => {
10679                MessageType::TxSet.to_xdr_buffered(write_stream);
10680                value.to_xdr_buffered(write_stream)
10681            },
10682            StellarMessage::GeneralizedTxSet(value) => {
10683                MessageType::GeneralizedTxSet.to_xdr_buffered(write_stream);
10684                value.to_xdr_buffered(write_stream)
10685            },
10686            StellarMessage::Transaction(value) => {
10687                MessageType::Transaction.to_xdr_buffered(write_stream);
10688                value.to_xdr_buffered(write_stream)
10689            },
10690            StellarMessage::SurveyRequest(value) => {
10691                MessageType::SurveyRequest.to_xdr_buffered(write_stream);
10692                value.to_xdr_buffered(write_stream)
10693            },
10694            StellarMessage::SurveyResponse(value) => {
10695                MessageType::SurveyResponse.to_xdr_buffered(write_stream);
10696                value.to_xdr_buffered(write_stream)
10697            },
10698            StellarMessage::TimeSlicedSurveyRequest(value) => {
10699                MessageType::TimeSlicedSurveyRequest.to_xdr_buffered(write_stream);
10700                value.to_xdr_buffered(write_stream)
10701            },
10702            StellarMessage::TimeSlicedSurveyResponse(value) => {
10703                MessageType::TimeSlicedSurveyResponse.to_xdr_buffered(write_stream);
10704                value.to_xdr_buffered(write_stream)
10705            },
10706            StellarMessage::TimeSlicedSurveyStartCollecting(value) => {
10707                MessageType::TimeSlicedSurveyStartCollecting.to_xdr_buffered(write_stream);
10708                value.to_xdr_buffered(write_stream)
10709            },
10710            StellarMessage::TimeSlicedSurveyStopCollecting(value) => {
10711                MessageType::TimeSlicedSurveyStopCollecting.to_xdr_buffered(write_stream);
10712                value.to_xdr_buffered(write_stream)
10713            },
10714            StellarMessage::GetScpQuorumset(value) => {
10715                MessageType::GetScpQuorumset.to_xdr_buffered(write_stream);
10716                value.to_xdr_buffered(write_stream)
10717            },
10718            StellarMessage::ScpQuorumset(value) => {
10719                MessageType::ScpQuorumset.to_xdr_buffered(write_stream);
10720                value.to_xdr_buffered(write_stream)
10721            },
10722            StellarMessage::ScpMessage(value) => {
10723                MessageType::ScpMessage.to_xdr_buffered(write_stream);
10724                value.to_xdr_buffered(write_stream)
10725            },
10726            StellarMessage::GetScpState(value) => {
10727                MessageType::GetScpState.to_xdr_buffered(write_stream);
10728                value.to_xdr_buffered(write_stream)
10729            },
10730            StellarMessage::SendMore(value) => {
10731                MessageType::SendMore.to_xdr_buffered(write_stream);
10732                value.to_xdr_buffered(write_stream)
10733            },
10734            StellarMessage::SendMoreExtended(value) => {
10735                MessageType::SendMoreExtended.to_xdr_buffered(write_stream);
10736                value.to_xdr_buffered(write_stream)
10737            },
10738            StellarMessage::FloodAdvert(value) => {
10739                MessageType::FloodAdvert.to_xdr_buffered(write_stream);
10740                value.to_xdr_buffered(write_stream)
10741            },
10742            StellarMessage::FloodDemand(value) => {
10743                MessageType::FloodDemand.to_xdr_buffered(write_stream);
10744                value.to_xdr_buffered(write_stream)
10745            },
10746        }
10747    }
10748
10749    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10750        match MessageType::from_xdr_buffered(read_stream)? {
10751            MessageType::ErrorMsg => Ok(StellarMessage::ErrorMsg(Error::from_xdr_buffered(read_stream)?)),
10752            MessageType::Hello => Ok(StellarMessage::Hello(Hello::from_xdr_buffered(read_stream)?)),
10753            MessageType::Auth => Ok(StellarMessage::Auth(Auth::from_xdr_buffered(read_stream)?)),
10754            MessageType::DontHave => Ok(StellarMessage::DontHave(DontHave::from_xdr_buffered(read_stream)?)),
10755            MessageType::GetPeers => Ok(StellarMessage::GetPeers),
10756            MessageType::Peers =>
10757                Ok(StellarMessage::Peers(LimitedVarArray::<PeerAddress, 100>::from_xdr_buffered(read_stream)?)),
10758            MessageType::GetTxSet => Ok(StellarMessage::GetTxSet(Uint256::from_xdr_buffered(read_stream)?)),
10759            MessageType::TxSet => Ok(StellarMessage::TxSet(TransactionSet::from_xdr_buffered(read_stream)?)),
10760            MessageType::GeneralizedTxSet =>
10761                Ok(StellarMessage::GeneralizedTxSet(GeneralizedTransactionSet::from_xdr_buffered(read_stream)?)),
10762            MessageType::Transaction =>
10763                Ok(StellarMessage::Transaction(TransactionEnvelope::from_xdr_buffered(read_stream)?)),
10764            MessageType::SurveyRequest =>
10765                Ok(StellarMessage::SurveyRequest(SignedSurveyRequestMessage::from_xdr_buffered(read_stream)?)),
10766            MessageType::SurveyResponse =>
10767                Ok(StellarMessage::SurveyResponse(SignedSurveyResponseMessage::from_xdr_buffered(read_stream)?)),
10768            MessageType::TimeSlicedSurveyRequest => Ok(StellarMessage::TimeSlicedSurveyRequest(
10769                SignedTimeSlicedSurveyRequestMessage::from_xdr_buffered(read_stream)?,
10770            )),
10771            MessageType::TimeSlicedSurveyResponse => Ok(StellarMessage::TimeSlicedSurveyResponse(
10772                SignedTimeSlicedSurveyResponseMessage::from_xdr_buffered(read_stream)?,
10773            )),
10774            MessageType::TimeSlicedSurveyStartCollecting => Ok(StellarMessage::TimeSlicedSurveyStartCollecting(
10775                SignedTimeSlicedSurveyStartCollectingMessage::from_xdr_buffered(read_stream)?,
10776            )),
10777            MessageType::TimeSlicedSurveyStopCollecting => Ok(StellarMessage::TimeSlicedSurveyStopCollecting(
10778                SignedTimeSlicedSurveyStopCollectingMessage::from_xdr_buffered(read_stream)?,
10779            )),
10780            MessageType::GetScpQuorumset =>
10781                Ok(StellarMessage::GetScpQuorumset(Uint256::from_xdr_buffered(read_stream)?)),
10782            MessageType::ScpQuorumset =>
10783                Ok(StellarMessage::ScpQuorumset(ScpQuorumSet::from_xdr_buffered(read_stream)?)),
10784            MessageType::ScpMessage => Ok(StellarMessage::ScpMessage(ScpEnvelope::from_xdr_buffered(read_stream)?)),
10785            MessageType::GetScpState => Ok(StellarMessage::GetScpState(Uint32::from_xdr_buffered(read_stream)?)),
10786            MessageType::SendMore => Ok(StellarMessage::SendMore(SendMore::from_xdr_buffered(read_stream)?)),
10787            MessageType::SendMoreExtended =>
10788                Ok(StellarMessage::SendMoreExtended(SendMoreExtended::from_xdr_buffered(read_stream)?)),
10789            MessageType::FloodAdvert => Ok(StellarMessage::FloodAdvert(FloodAdvert::from_xdr_buffered(read_stream)?)),
10790            MessageType::FloodDemand => Ok(StellarMessage::FloodDemand(FloodDemand::from_xdr_buffered(read_stream)?)),
10791        }
10792    }
10793}
10794
10795#[allow(dead_code)]
10797#[cfg(feature = "all-types")]
10798#[derive(Debug, Clone, Eq, PartialEq)]
10799pub enum AuthenticatedMessage {
10800    V0(AuthenticatedMessageV0),
10801    Default(Uint32),
10802}
10803
10804#[cfg(feature = "all-types")]
10805impl XdrCodec for AuthenticatedMessage {
10806    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10807        match self {
10808            AuthenticatedMessage::V0(value) => {
10809                (0 as Uint32).to_xdr_buffered(write_stream);
10810                value.to_xdr_buffered(write_stream)
10811            },
10812            AuthenticatedMessage::Default(code) => code.to_xdr_buffered(write_stream),
10813        }
10814    }
10815
10816    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10817        match Uint32::from_xdr_buffered(read_stream)? {
10818            0 => Ok(AuthenticatedMessage::V0(AuthenticatedMessageV0::from_xdr_buffered(read_stream)?)),
10819            code => Ok(AuthenticatedMessage::Default(code)),
10820        }
10821    }
10822}
10823
10824#[allow(dead_code)]
10826#[derive(Debug, Clone, Eq, PartialEq)]
10827pub enum LiquidityPoolParameters {
10828    LiquidityPoolConstantProduct(LiquidityPoolConstantProductParameters),
10829}
10830
10831impl XdrCodec for LiquidityPoolParameters {
10832    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10833        match self {
10834            LiquidityPoolParameters::LiquidityPoolConstantProduct(value) => {
10835                LiquidityPoolType::LiquidityPoolConstantProduct.to_xdr_buffered(write_stream);
10836                value.to_xdr_buffered(write_stream)
10837            },
10838        }
10839    }
10840
10841    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10842        match LiquidityPoolType::from_xdr_buffered(read_stream)? {
10843            LiquidityPoolType::LiquidityPoolConstantProduct =>
10844                Ok(LiquidityPoolParameters::LiquidityPoolConstantProduct(
10845                    LiquidityPoolConstantProductParameters::from_xdr_buffered(read_stream)?,
10846                )),
10847        }
10848    }
10849}
10850
10851#[allow(dead_code)]
10853#[derive(Debug, Clone, Eq, PartialEq)]
10854pub enum MuxedAccount {
10855    KeyTypeEd25519(Uint256),
10856    KeyTypeMuxedEd25519(MuxedAccountMed25519),
10857    Default(CryptoKeyType),
10858}
10859
10860impl XdrCodec for MuxedAccount {
10861    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10862        match self {
10863            MuxedAccount::KeyTypeEd25519(value) => {
10864                CryptoKeyType::KeyTypeEd25519.to_xdr_buffered(write_stream);
10865                value.to_xdr_buffered(write_stream)
10866            },
10867            MuxedAccount::KeyTypeMuxedEd25519(value) => {
10868                CryptoKeyType::KeyTypeMuxedEd25519.to_xdr_buffered(write_stream);
10869                value.to_xdr_buffered(write_stream)
10870            },
10871            MuxedAccount::Default(code) => code.to_xdr_buffered(write_stream),
10872        }
10873    }
10874
10875    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10876        match CryptoKeyType::from_xdr_buffered(read_stream)? {
10877            CryptoKeyType::KeyTypeEd25519 => Ok(MuxedAccount::KeyTypeEd25519(Uint256::from_xdr_buffered(read_stream)?)),
10878            CryptoKeyType::KeyTypeMuxedEd25519 =>
10879                Ok(MuxedAccount::KeyTypeMuxedEd25519(MuxedAccountMed25519::from_xdr_buffered(read_stream)?)),
10880            code => Ok(MuxedAccount::Default(code)),
10881        }
10882    }
10883}
10884
10885#[allow(dead_code)]
10887#[derive(Debug, Clone, Eq, PartialEq)]
10888pub enum ChangeTrustAsset {
10889    AssetTypeNative,
10890    AssetTypeCreditAlphanum4(AlphaNum4),
10891    AssetTypeCreditAlphanum12(AlphaNum12),
10892    AssetTypePoolShare(LiquidityPoolParameters),
10893}
10894
10895impl XdrCodec for ChangeTrustAsset {
10896    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10897        match self {
10898            ChangeTrustAsset::AssetTypeNative => AssetType::AssetTypeNative.to_xdr_buffered(write_stream),
10899            ChangeTrustAsset::AssetTypeCreditAlphanum4(value) => {
10900                AssetType::AssetTypeCreditAlphanum4.to_xdr_buffered(write_stream);
10901                value.to_xdr_buffered(write_stream)
10902            },
10903            ChangeTrustAsset::AssetTypeCreditAlphanum12(value) => {
10904                AssetType::AssetTypeCreditAlphanum12.to_xdr_buffered(write_stream);
10905                value.to_xdr_buffered(write_stream)
10906            },
10907            ChangeTrustAsset::AssetTypePoolShare(value) => {
10908                AssetType::AssetTypePoolShare.to_xdr_buffered(write_stream);
10909                value.to_xdr_buffered(write_stream)
10910            },
10911        }
10912    }
10913
10914    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10915        match AssetType::from_xdr_buffered(read_stream)? {
10916            AssetType::AssetTypeNative => Ok(ChangeTrustAsset::AssetTypeNative),
10917            AssetType::AssetTypeCreditAlphanum4 =>
10918                Ok(ChangeTrustAsset::AssetTypeCreditAlphanum4(AlphaNum4::from_xdr_buffered(read_stream)?)),
10919            AssetType::AssetTypeCreditAlphanum12 =>
10920                Ok(ChangeTrustAsset::AssetTypeCreditAlphanum12(AlphaNum12::from_xdr_buffered(read_stream)?)),
10921            AssetType::AssetTypePoolShare =>
10922                Ok(ChangeTrustAsset::AssetTypePoolShare(LiquidityPoolParameters::from_xdr_buffered(read_stream)?)),
10923        }
10924    }
10925}
10926
10927#[allow(dead_code)]
10929#[derive(Debug, Clone, Eq, PartialEq)]
10930pub enum RevokeSponsorshipOp {
10931    RevokeSponsorshipLedgerEntry(LedgerKey),
10932    RevokeSponsorshipSigner(RevokeSponsorshipOpSigner),
10933}
10934
10935impl XdrCodec for RevokeSponsorshipOp {
10936    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10937        match self {
10938            RevokeSponsorshipOp::RevokeSponsorshipLedgerEntry(value) => {
10939                RevokeSponsorshipType::RevokeSponsorshipLedgerEntry.to_xdr_buffered(write_stream);
10940                value.to_xdr_buffered(write_stream)
10941            },
10942            RevokeSponsorshipOp::RevokeSponsorshipSigner(value) => {
10943                RevokeSponsorshipType::RevokeSponsorshipSigner.to_xdr_buffered(write_stream);
10944                value.to_xdr_buffered(write_stream)
10945            },
10946        }
10947    }
10948
10949    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10950        match RevokeSponsorshipType::from_xdr_buffered(read_stream)? {
10951            RevokeSponsorshipType::RevokeSponsorshipLedgerEntry =>
10952                Ok(RevokeSponsorshipOp::RevokeSponsorshipLedgerEntry(LedgerKey::from_xdr_buffered(read_stream)?)),
10953            RevokeSponsorshipType::RevokeSponsorshipSigner => Ok(RevokeSponsorshipOp::RevokeSponsorshipSigner(
10954                RevokeSponsorshipOpSigner::from_xdr_buffered(read_stream)?,
10955            )),
10956        }
10957    }
10958}
10959
10960#[allow(dead_code)]
10962#[derive(Debug, Clone, Eq, PartialEq)]
10963pub enum ContractIdPreimage {
10964    ContractIdPreimageFromAddress(ContractIdPreimageFromAddress),
10965    ContractIdPreimageFromAsset(Asset),
10966}
10967
10968impl XdrCodec for ContractIdPreimage {
10969    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
10970        match self {
10971            ContractIdPreimage::ContractIdPreimageFromAddress(value) => {
10972                ContractIdPreimageType::ContractIdPreimageFromAddress.to_xdr_buffered(write_stream);
10973                value.to_xdr_buffered(write_stream)
10974            },
10975            ContractIdPreimage::ContractIdPreimageFromAsset(value) => {
10976                ContractIdPreimageType::ContractIdPreimageFromAsset.to_xdr_buffered(write_stream);
10977                value.to_xdr_buffered(write_stream)
10978            },
10979        }
10980    }
10981
10982    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
10983        match ContractIdPreimageType::from_xdr_buffered(read_stream)? {
10984            ContractIdPreimageType::ContractIdPreimageFromAddress =>
10985                Ok(ContractIdPreimage::ContractIdPreimageFromAddress(ContractIdPreimageFromAddress::from_xdr_buffered(
10986                    read_stream,
10987                )?)),
10988            ContractIdPreimageType::ContractIdPreimageFromAsset =>
10989                Ok(ContractIdPreimage::ContractIdPreimageFromAsset(Asset::from_xdr_buffered(read_stream)?)),
10990        }
10991    }
10992}
10993
10994#[allow(dead_code)]
10996#[derive(Debug, Clone, Eq, PartialEq)]
10997pub enum HostFunction {
10998    HostFunctionTypeInvokeContract(InvokeContractArgs),
10999    HostFunctionTypeCreateContract(CreateContractArgs),
11000    HostFunctionTypeUploadContractWasm(UnlimitedVarOpaque),
11001}
11002
11003impl XdrCodec for HostFunction {
11004    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11005        match self {
11006            HostFunction::HostFunctionTypeInvokeContract(value) => {
11007                HostFunctionType::HostFunctionTypeInvokeContract.to_xdr_buffered(write_stream);
11008                value.to_xdr_buffered(write_stream)
11009            },
11010            HostFunction::HostFunctionTypeCreateContract(value) => {
11011                HostFunctionType::HostFunctionTypeCreateContract.to_xdr_buffered(write_stream);
11012                value.to_xdr_buffered(write_stream)
11013            },
11014            HostFunction::HostFunctionTypeUploadContractWasm(value) => {
11015                HostFunctionType::HostFunctionTypeUploadContractWasm.to_xdr_buffered(write_stream);
11016                value.to_xdr_buffered(write_stream)
11017            },
11018        }
11019    }
11020
11021    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11022        match HostFunctionType::from_xdr_buffered(read_stream)? {
11023            HostFunctionType::HostFunctionTypeInvokeContract =>
11024                Ok(HostFunction::HostFunctionTypeInvokeContract(InvokeContractArgs::from_xdr_buffered(read_stream)?)),
11025            HostFunctionType::HostFunctionTypeCreateContract =>
11026                Ok(HostFunction::HostFunctionTypeCreateContract(CreateContractArgs::from_xdr_buffered(read_stream)?)),
11027            HostFunctionType::HostFunctionTypeUploadContractWasm => Ok(
11028                HostFunction::HostFunctionTypeUploadContractWasm(UnlimitedVarOpaque::from_xdr_buffered(read_stream)?),
11029            ),
11030        }
11031    }
11032}
11033
11034#[allow(dead_code)]
11036#[derive(Debug, Clone, Eq, PartialEq)]
11037pub enum SorobanAuthorizedFunction {
11038    SorobanAuthorizedFunctionTypeContractFn(InvokeContractArgs),
11039    SorobanAuthorizedFunctionTypeCreateContractHostFn(CreateContractArgs),
11040}
11041
11042impl XdrCodec for SorobanAuthorizedFunction {
11043    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11044        match self {
11045            SorobanAuthorizedFunction::SorobanAuthorizedFunctionTypeContractFn(value) => {
11046                SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeContractFn.to_xdr_buffered(write_stream);
11047                value.to_xdr_buffered(write_stream)
11048            },
11049            SorobanAuthorizedFunction::SorobanAuthorizedFunctionTypeCreateContractHostFn(value) => {
11050                SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeCreateContractHostFn
11051                    .to_xdr_buffered(write_stream);
11052                value.to_xdr_buffered(write_stream)
11053            },
11054        }
11055    }
11056
11057    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11058        match SorobanAuthorizedFunctionType::from_xdr_buffered(read_stream)? {
11059            SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeContractFn =>
11060                Ok(SorobanAuthorizedFunction::SorobanAuthorizedFunctionTypeContractFn(
11061                    InvokeContractArgs::from_xdr_buffered(read_stream)?,
11062                )),
11063            SorobanAuthorizedFunctionType::SorobanAuthorizedFunctionTypeCreateContractHostFn =>
11064                Ok(SorobanAuthorizedFunction::SorobanAuthorizedFunctionTypeCreateContractHostFn(
11065                    CreateContractArgs::from_xdr_buffered(read_stream)?,
11066                )),
11067        }
11068    }
11069}
11070
11071#[allow(dead_code)]
11073#[derive(Debug, Clone, Eq, PartialEq)]
11074pub enum SorobanCredentials {
11075    SorobanCredentialsSourceAccount,
11076    SorobanCredentialsAddress(SorobanAddressCredentials),
11077}
11078
11079impl XdrCodec for SorobanCredentials {
11080    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11081        match self {
11082            SorobanCredentials::SorobanCredentialsSourceAccount =>
11083                SorobanCredentialsType::SorobanCredentialsSourceAccount.to_xdr_buffered(write_stream),
11084            SorobanCredentials::SorobanCredentialsAddress(value) => {
11085                SorobanCredentialsType::SorobanCredentialsAddress.to_xdr_buffered(write_stream);
11086                value.to_xdr_buffered(write_stream)
11087            },
11088        }
11089    }
11090
11091    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11092        match SorobanCredentialsType::from_xdr_buffered(read_stream)? {
11093            SorobanCredentialsType::SorobanCredentialsSourceAccount =>
11094                Ok(SorobanCredentials::SorobanCredentialsSourceAccount),
11095            SorobanCredentialsType::SorobanCredentialsAddress => Ok(SorobanCredentials::SorobanCredentialsAddress(
11096                SorobanAddressCredentials::from_xdr_buffered(read_stream)?,
11097            )),
11098        }
11099    }
11100}
11101
11102#[allow(dead_code)]
11104#[derive(Debug, Clone, Eq, PartialEq)]
11105pub enum OperationBody {
11106    CreateAccount(CreateAccountOp),
11107    Payment(PaymentOp),
11108    PathPaymentStrictReceive(PathPaymentStrictReceiveOp),
11109    ManageSellOffer(ManageSellOfferOp),
11110    CreatePassiveSellOffer(CreatePassiveSellOfferOp),
11111    SetOptions(SetOptionsOp),
11112    ChangeTrust(ChangeTrustOp),
11113    AllowTrust(AllowTrustOp),
11114    AccountMerge(MuxedAccount),
11115    Inflation,
11116    ManageData(ManageDataOp),
11117    BumpSequence(BumpSequenceOp),
11118    ManageBuyOffer(ManageBuyOfferOp),
11119    PathPaymentStrictSend(PathPaymentStrictSendOp),
11120    CreateClaimableBalance(CreateClaimableBalanceOp),
11121    ClaimClaimableBalance(ClaimClaimableBalanceOp),
11122    BeginSponsoringFutureReserves(BeginSponsoringFutureReservesOp),
11123    EndSponsoringFutureReserves,
11124    RevokeSponsorship(RevokeSponsorshipOp),
11125    Clawback(ClawbackOp),
11126    ClawbackClaimableBalance(ClawbackClaimableBalanceOp),
11127    SetTrustLineFlags(SetTrustLineFlagsOp),
11128    LiquidityPoolDeposit(LiquidityPoolDepositOp),
11129    LiquidityPoolWithdraw(LiquidityPoolWithdrawOp),
11130    InvokeHostFunction(InvokeHostFunctionOp),
11131    ExtendFootprintTtl(ExtendFootprintTtlOp),
11132    RestoreFootprint(RestoreFootprintOp),
11133}
11134
11135impl XdrCodec for OperationBody {
11136    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11137        match self {
11138            OperationBody::CreateAccount(value) => {
11139                OperationType::CreateAccount.to_xdr_buffered(write_stream);
11140                value.to_xdr_buffered(write_stream)
11141            },
11142            OperationBody::Payment(value) => {
11143                OperationType::Payment.to_xdr_buffered(write_stream);
11144                value.to_xdr_buffered(write_stream)
11145            },
11146            OperationBody::PathPaymentStrictReceive(value) => {
11147                OperationType::PathPaymentStrictReceive.to_xdr_buffered(write_stream);
11148                value.to_xdr_buffered(write_stream)
11149            },
11150            OperationBody::ManageSellOffer(value) => {
11151                OperationType::ManageSellOffer.to_xdr_buffered(write_stream);
11152                value.to_xdr_buffered(write_stream)
11153            },
11154            OperationBody::CreatePassiveSellOffer(value) => {
11155                OperationType::CreatePassiveSellOffer.to_xdr_buffered(write_stream);
11156                value.to_xdr_buffered(write_stream)
11157            },
11158            OperationBody::SetOptions(value) => {
11159                OperationType::SetOptions.to_xdr_buffered(write_stream);
11160                value.to_xdr_buffered(write_stream)
11161            },
11162            OperationBody::ChangeTrust(value) => {
11163                OperationType::ChangeTrust.to_xdr_buffered(write_stream);
11164                value.to_xdr_buffered(write_stream)
11165            },
11166            OperationBody::AllowTrust(value) => {
11167                OperationType::AllowTrust.to_xdr_buffered(write_stream);
11168                value.to_xdr_buffered(write_stream)
11169            },
11170            OperationBody::AccountMerge(value) => {
11171                OperationType::AccountMerge.to_xdr_buffered(write_stream);
11172                value.to_xdr_buffered(write_stream)
11173            },
11174            OperationBody::Inflation => OperationType::Inflation.to_xdr_buffered(write_stream),
11175            OperationBody::ManageData(value) => {
11176                OperationType::ManageData.to_xdr_buffered(write_stream);
11177                value.to_xdr_buffered(write_stream)
11178            },
11179            OperationBody::BumpSequence(value) => {
11180                OperationType::BumpSequence.to_xdr_buffered(write_stream);
11181                value.to_xdr_buffered(write_stream)
11182            },
11183            OperationBody::ManageBuyOffer(value) => {
11184                OperationType::ManageBuyOffer.to_xdr_buffered(write_stream);
11185                value.to_xdr_buffered(write_stream)
11186            },
11187            OperationBody::PathPaymentStrictSend(value) => {
11188                OperationType::PathPaymentStrictSend.to_xdr_buffered(write_stream);
11189                value.to_xdr_buffered(write_stream)
11190            },
11191            OperationBody::CreateClaimableBalance(value) => {
11192                OperationType::CreateClaimableBalance.to_xdr_buffered(write_stream);
11193                value.to_xdr_buffered(write_stream)
11194            },
11195            OperationBody::ClaimClaimableBalance(value) => {
11196                OperationType::ClaimClaimableBalance.to_xdr_buffered(write_stream);
11197                value.to_xdr_buffered(write_stream)
11198            },
11199            OperationBody::BeginSponsoringFutureReserves(value) => {
11200                OperationType::BeginSponsoringFutureReserves.to_xdr_buffered(write_stream);
11201                value.to_xdr_buffered(write_stream)
11202            },
11203            OperationBody::EndSponsoringFutureReserves =>
11204                OperationType::EndSponsoringFutureReserves.to_xdr_buffered(write_stream),
11205            OperationBody::RevokeSponsorship(value) => {
11206                OperationType::RevokeSponsorship.to_xdr_buffered(write_stream);
11207                value.to_xdr_buffered(write_stream)
11208            },
11209            OperationBody::Clawback(value) => {
11210                OperationType::Clawback.to_xdr_buffered(write_stream);
11211                value.to_xdr_buffered(write_stream)
11212            },
11213            OperationBody::ClawbackClaimableBalance(value) => {
11214                OperationType::ClawbackClaimableBalance.to_xdr_buffered(write_stream);
11215                value.to_xdr_buffered(write_stream)
11216            },
11217            OperationBody::SetTrustLineFlags(value) => {
11218                OperationType::SetTrustLineFlags.to_xdr_buffered(write_stream);
11219                value.to_xdr_buffered(write_stream)
11220            },
11221            OperationBody::LiquidityPoolDeposit(value) => {
11222                OperationType::LiquidityPoolDeposit.to_xdr_buffered(write_stream);
11223                value.to_xdr_buffered(write_stream)
11224            },
11225            OperationBody::LiquidityPoolWithdraw(value) => {
11226                OperationType::LiquidityPoolWithdraw.to_xdr_buffered(write_stream);
11227                value.to_xdr_buffered(write_stream)
11228            },
11229            OperationBody::InvokeHostFunction(value) => {
11230                OperationType::InvokeHostFunction.to_xdr_buffered(write_stream);
11231                value.to_xdr_buffered(write_stream)
11232            },
11233            OperationBody::ExtendFootprintTtl(value) => {
11234                OperationType::ExtendFootprintTtl.to_xdr_buffered(write_stream);
11235                value.to_xdr_buffered(write_stream)
11236            },
11237            OperationBody::RestoreFootprint(value) => {
11238                OperationType::RestoreFootprint.to_xdr_buffered(write_stream);
11239                value.to_xdr_buffered(write_stream)
11240            },
11241        }
11242    }
11243
11244    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11245        match OperationType::from_xdr_buffered(read_stream)? {
11246            OperationType::CreateAccount =>
11247                Ok(OperationBody::CreateAccount(CreateAccountOp::from_xdr_buffered(read_stream)?)),
11248            OperationType::Payment => Ok(OperationBody::Payment(PaymentOp::from_xdr_buffered(read_stream)?)),
11249            OperationType::PathPaymentStrictReceive =>
11250                Ok(OperationBody::PathPaymentStrictReceive(PathPaymentStrictReceiveOp::from_xdr_buffered(read_stream)?)),
11251            OperationType::ManageSellOffer =>
11252                Ok(OperationBody::ManageSellOffer(ManageSellOfferOp::from_xdr_buffered(read_stream)?)),
11253            OperationType::CreatePassiveSellOffer =>
11254                Ok(OperationBody::CreatePassiveSellOffer(CreatePassiveSellOfferOp::from_xdr_buffered(read_stream)?)),
11255            OperationType::SetOptions => Ok(OperationBody::SetOptions(SetOptionsOp::from_xdr_buffered(read_stream)?)),
11256            OperationType::ChangeTrust =>
11257                Ok(OperationBody::ChangeTrust(ChangeTrustOp::from_xdr_buffered(read_stream)?)),
11258            OperationType::AllowTrust => Ok(OperationBody::AllowTrust(AllowTrustOp::from_xdr_buffered(read_stream)?)),
11259            OperationType::AccountMerge =>
11260                Ok(OperationBody::AccountMerge(MuxedAccount::from_xdr_buffered(read_stream)?)),
11261            OperationType::Inflation => Ok(OperationBody::Inflation),
11262            OperationType::ManageData => Ok(OperationBody::ManageData(ManageDataOp::from_xdr_buffered(read_stream)?)),
11263            OperationType::BumpSequence =>
11264                Ok(OperationBody::BumpSequence(BumpSequenceOp::from_xdr_buffered(read_stream)?)),
11265            OperationType::ManageBuyOffer =>
11266                Ok(OperationBody::ManageBuyOffer(ManageBuyOfferOp::from_xdr_buffered(read_stream)?)),
11267            OperationType::PathPaymentStrictSend =>
11268                Ok(OperationBody::PathPaymentStrictSend(PathPaymentStrictSendOp::from_xdr_buffered(read_stream)?)),
11269            OperationType::CreateClaimableBalance =>
11270                Ok(OperationBody::CreateClaimableBalance(CreateClaimableBalanceOp::from_xdr_buffered(read_stream)?)),
11271            OperationType::ClaimClaimableBalance =>
11272                Ok(OperationBody::ClaimClaimableBalance(ClaimClaimableBalanceOp::from_xdr_buffered(read_stream)?)),
11273            OperationType::BeginSponsoringFutureReserves => Ok(OperationBody::BeginSponsoringFutureReserves(
11274                BeginSponsoringFutureReservesOp::from_xdr_buffered(read_stream)?,
11275            )),
11276            OperationType::EndSponsoringFutureReserves => Ok(OperationBody::EndSponsoringFutureReserves),
11277            OperationType::RevokeSponsorship =>
11278                Ok(OperationBody::RevokeSponsorship(RevokeSponsorshipOp::from_xdr_buffered(read_stream)?)),
11279            OperationType::Clawback => Ok(OperationBody::Clawback(ClawbackOp::from_xdr_buffered(read_stream)?)),
11280            OperationType::ClawbackClaimableBalance =>
11281                Ok(OperationBody::ClawbackClaimableBalance(ClawbackClaimableBalanceOp::from_xdr_buffered(read_stream)?)),
11282            OperationType::SetTrustLineFlags =>
11283                Ok(OperationBody::SetTrustLineFlags(SetTrustLineFlagsOp::from_xdr_buffered(read_stream)?)),
11284            OperationType::LiquidityPoolDeposit =>
11285                Ok(OperationBody::LiquidityPoolDeposit(LiquidityPoolDepositOp::from_xdr_buffered(read_stream)?)),
11286            OperationType::LiquidityPoolWithdraw =>
11287                Ok(OperationBody::LiquidityPoolWithdraw(LiquidityPoolWithdrawOp::from_xdr_buffered(read_stream)?)),
11288            OperationType::InvokeHostFunction =>
11289                Ok(OperationBody::InvokeHostFunction(InvokeHostFunctionOp::from_xdr_buffered(read_stream)?)),
11290            OperationType::ExtendFootprintTtl =>
11291                Ok(OperationBody::ExtendFootprintTtl(ExtendFootprintTtlOp::from_xdr_buffered(read_stream)?)),
11292            OperationType::RestoreFootprint =>
11293                Ok(OperationBody::RestoreFootprint(RestoreFootprintOp::from_xdr_buffered(read_stream)?)),
11294        }
11295    }
11296}
11297
11298#[allow(dead_code)]
11300#[cfg(feature = "all-types")]
11301#[derive(Debug, Clone, Eq, PartialEq)]
11302pub enum HashIdPreimage {
11303    EnvelopeTypeOpId(HashIdPreimageOperationId),
11304    EnvelopeTypePoolRevokeOpId(HashIdPreimageRevokeId),
11305    EnvelopeTypeContractId(HashIdPreimageContractId),
11306    EnvelopeTypeSorobanAuthorization(HashIdPreimageSorobanAuthorization),
11307    Default(EnvelopeType),
11308}
11309
11310#[cfg(feature = "all-types")]
11311impl XdrCodec for HashIdPreimage {
11312    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11313        match self {
11314            HashIdPreimage::EnvelopeTypeOpId(value) => {
11315                EnvelopeType::EnvelopeTypeOpId.to_xdr_buffered(write_stream);
11316                value.to_xdr_buffered(write_stream)
11317            },
11318            HashIdPreimage::EnvelopeTypePoolRevokeOpId(value) => {
11319                EnvelopeType::EnvelopeTypePoolRevokeOpId.to_xdr_buffered(write_stream);
11320                value.to_xdr_buffered(write_stream)
11321            },
11322            HashIdPreimage::EnvelopeTypeContractId(value) => {
11323                EnvelopeType::EnvelopeTypeContractId.to_xdr_buffered(write_stream);
11324                value.to_xdr_buffered(write_stream)
11325            },
11326            HashIdPreimage::EnvelopeTypeSorobanAuthorization(value) => {
11327                EnvelopeType::EnvelopeTypeSorobanAuthorization.to_xdr_buffered(write_stream);
11328                value.to_xdr_buffered(write_stream)
11329            },
11330            HashIdPreimage::Default(code) => code.to_xdr_buffered(write_stream),
11331        }
11332    }
11333
11334    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11335        match EnvelopeType::from_xdr_buffered(read_stream)? {
11336            EnvelopeType::EnvelopeTypeOpId =>
11337                Ok(HashIdPreimage::EnvelopeTypeOpId(HashIdPreimageOperationId::from_xdr_buffered(read_stream)?)),
11338            EnvelopeType::EnvelopeTypePoolRevokeOpId =>
11339                Ok(HashIdPreimage::EnvelopeTypePoolRevokeOpId(HashIdPreimageRevokeId::from_xdr_buffered(read_stream)?)),
11340            EnvelopeType::EnvelopeTypeContractId =>
11341                Ok(HashIdPreimage::EnvelopeTypeContractId(HashIdPreimageContractId::from_xdr_buffered(read_stream)?)),
11342            EnvelopeType::EnvelopeTypeSorobanAuthorization => Ok(HashIdPreimage::EnvelopeTypeSorobanAuthorization(
11343                HashIdPreimageSorobanAuthorization::from_xdr_buffered(read_stream)?,
11344            )),
11345            code => Ok(HashIdPreimage::Default(code)),
11346        }
11347    }
11348}
11349
11350#[allow(dead_code)]
11352#[derive(Debug, Clone, Eq, PartialEq)]
11353pub enum Memo {
11354    MemoNone,
11355    MemoText(LimitedString<28>),
11356    MemoId(Uint64),
11357    MemoHash(Hash),
11358    MemoReturn(Hash),
11359}
11360
11361impl XdrCodec for Memo {
11362    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11363        match self {
11364            Memo::MemoNone => MemoType::MemoNone.to_xdr_buffered(write_stream),
11365            Memo::MemoText(value) => {
11366                MemoType::MemoText.to_xdr_buffered(write_stream);
11367                value.to_xdr_buffered(write_stream)
11368            },
11369            Memo::MemoId(value) => {
11370                MemoType::MemoId.to_xdr_buffered(write_stream);
11371                value.to_xdr_buffered(write_stream)
11372            },
11373            Memo::MemoHash(value) => {
11374                MemoType::MemoHash.to_xdr_buffered(write_stream);
11375                value.to_xdr_buffered(write_stream)
11376            },
11377            Memo::MemoReturn(value) => {
11378                MemoType::MemoReturn.to_xdr_buffered(write_stream);
11379                value.to_xdr_buffered(write_stream)
11380            },
11381        }
11382    }
11383
11384    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11385        match MemoType::from_xdr_buffered(read_stream)? {
11386            MemoType::MemoNone => Ok(Memo::MemoNone),
11387            MemoType::MemoText => Ok(Memo::MemoText(LimitedString::<28>::from_xdr_buffered(read_stream)?)),
11388            MemoType::MemoId => Ok(Memo::MemoId(Uint64::from_xdr_buffered(read_stream)?)),
11389            MemoType::MemoHash => Ok(Memo::MemoHash(Hash::from_xdr_buffered(read_stream)?)),
11390            MemoType::MemoReturn => Ok(Memo::MemoReturn(Hash::from_xdr_buffered(read_stream)?)),
11391        }
11392    }
11393}
11394
11395#[allow(dead_code)]
11397#[derive(Debug, Clone, Eq, PartialEq)]
11398pub enum Preconditions {
11399    PrecondNone,
11400    PrecondTime(TimeBounds),
11401    PrecondV2(PreconditionsV2),
11402}
11403
11404impl XdrCodec for Preconditions {
11405    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11406        match self {
11407            Preconditions::PrecondNone => PreconditionType::PrecondNone.to_xdr_buffered(write_stream),
11408            Preconditions::PrecondTime(value) => {
11409                PreconditionType::PrecondTime.to_xdr_buffered(write_stream);
11410                value.to_xdr_buffered(write_stream)
11411            },
11412            Preconditions::PrecondV2(value) => {
11413                PreconditionType::PrecondV2.to_xdr_buffered(write_stream);
11414                value.to_xdr_buffered(write_stream)
11415            },
11416        }
11417    }
11418
11419    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11420        match PreconditionType::from_xdr_buffered(read_stream)? {
11421            PreconditionType::PrecondNone => Ok(Preconditions::PrecondNone),
11422            PreconditionType::PrecondTime =>
11423                Ok(Preconditions::PrecondTime(TimeBounds::from_xdr_buffered(read_stream)?)),
11424            PreconditionType::PrecondV2 =>
11425                Ok(Preconditions::PrecondV2(PreconditionsV2::from_xdr_buffered(read_stream)?)),
11426        }
11427    }
11428}
11429
11430#[allow(dead_code)]
11432#[derive(Debug, Clone, Eq, PartialEq)]
11433pub enum TransactionV0Ext {
11434    V0,
11435    Default(i32),
11436}
11437
11438impl XdrCodec for TransactionV0Ext {
11439    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11440        match self {
11441            TransactionV0Ext::V0 => (0 as i32).to_xdr_buffered(write_stream),
11442            TransactionV0Ext::Default(code) => code.to_xdr_buffered(write_stream),
11443        }
11444    }
11445
11446    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11447        match i32::from_xdr_buffered(read_stream)? {
11448            0 => Ok(TransactionV0Ext::V0),
11449            code => Ok(TransactionV0Ext::Default(code)),
11450        }
11451    }
11452}
11453
11454#[allow(dead_code)]
11456#[derive(Debug, Clone, Eq, PartialEq)]
11457pub enum TransactionExt {
11458    V0,
11459    V1(SorobanTransactionData),
11460    Default(i32),
11461}
11462
11463impl XdrCodec for TransactionExt {
11464    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11465        match self {
11466            TransactionExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
11467            TransactionExt::V1(value) => {
11468                (1 as i32).to_xdr_buffered(write_stream);
11469                value.to_xdr_buffered(write_stream)
11470            },
11471            TransactionExt::Default(code) => code.to_xdr_buffered(write_stream),
11472        }
11473    }
11474
11475    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11476        match i32::from_xdr_buffered(read_stream)? {
11477            0 => Ok(TransactionExt::V0),
11478            1 => Ok(TransactionExt::V1(SorobanTransactionData::from_xdr_buffered(read_stream)?)),
11479            code => Ok(TransactionExt::Default(code)),
11480        }
11481    }
11482}
11483
11484#[allow(dead_code)]
11486#[derive(Debug, Clone, Eq, PartialEq)]
11487pub enum FeeBumpTransactionInnerTx {
11488    EnvelopeTypeTx(TransactionV1Envelope),
11489    Default(EnvelopeType),
11490}
11491
11492impl XdrCodec for FeeBumpTransactionInnerTx {
11493    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11494        match self {
11495            FeeBumpTransactionInnerTx::EnvelopeTypeTx(value) => {
11496                EnvelopeType::EnvelopeTypeTx.to_xdr_buffered(write_stream);
11497                value.to_xdr_buffered(write_stream)
11498            },
11499            FeeBumpTransactionInnerTx::Default(code) => code.to_xdr_buffered(write_stream),
11500        }
11501    }
11502
11503    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11504        match EnvelopeType::from_xdr_buffered(read_stream)? {
11505            EnvelopeType::EnvelopeTypeTx =>
11506                Ok(FeeBumpTransactionInnerTx::EnvelopeTypeTx(TransactionV1Envelope::from_xdr_buffered(read_stream)?)),
11507            code => Ok(FeeBumpTransactionInnerTx::Default(code)),
11508        }
11509    }
11510}
11511
11512#[allow(dead_code)]
11514#[derive(Debug, Clone, Eq, PartialEq)]
11515pub enum FeeBumpTransactionExt {
11516    V0,
11517    Default(i32),
11518}
11519
11520impl XdrCodec for FeeBumpTransactionExt {
11521    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11522        match self {
11523            FeeBumpTransactionExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
11524            FeeBumpTransactionExt::Default(code) => code.to_xdr_buffered(write_stream),
11525        }
11526    }
11527
11528    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11529        match i32::from_xdr_buffered(read_stream)? {
11530            0 => Ok(FeeBumpTransactionExt::V0),
11531            code => Ok(FeeBumpTransactionExt::Default(code)),
11532        }
11533    }
11534}
11535
11536#[allow(dead_code)]
11538#[derive(Debug, Clone, Eq, PartialEq)]
11539pub enum TransactionEnvelope {
11540    EnvelopeTypeTxV0(TransactionV0Envelope),
11541    EnvelopeTypeTx(TransactionV1Envelope),
11542    EnvelopeTypeTxFeeBump(FeeBumpTransactionEnvelope),
11543    Default(EnvelopeType),
11544}
11545
11546impl XdrCodec for TransactionEnvelope {
11547    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11548        match self {
11549            TransactionEnvelope::EnvelopeTypeTxV0(value) => {
11550                EnvelopeType::EnvelopeTypeTxV0.to_xdr_buffered(write_stream);
11551                value.to_xdr_buffered(write_stream)
11552            },
11553            TransactionEnvelope::EnvelopeTypeTx(value) => {
11554                EnvelopeType::EnvelopeTypeTx.to_xdr_buffered(write_stream);
11555                value.to_xdr_buffered(write_stream)
11556            },
11557            TransactionEnvelope::EnvelopeTypeTxFeeBump(value) => {
11558                EnvelopeType::EnvelopeTypeTxFeeBump.to_xdr_buffered(write_stream);
11559                value.to_xdr_buffered(write_stream)
11560            },
11561            TransactionEnvelope::Default(code) => code.to_xdr_buffered(write_stream),
11562        }
11563    }
11564
11565    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11566        match EnvelopeType::from_xdr_buffered(read_stream)? {
11567            EnvelopeType::EnvelopeTypeTxV0 =>
11568                Ok(TransactionEnvelope::EnvelopeTypeTxV0(TransactionV0Envelope::from_xdr_buffered(read_stream)?)),
11569            EnvelopeType::EnvelopeTypeTx =>
11570                Ok(TransactionEnvelope::EnvelopeTypeTx(TransactionV1Envelope::from_xdr_buffered(read_stream)?)),
11571            EnvelopeType::EnvelopeTypeTxFeeBump => Ok(TransactionEnvelope::EnvelopeTypeTxFeeBump(
11572                FeeBumpTransactionEnvelope::from_xdr_buffered(read_stream)?,
11573            )),
11574            code => Ok(TransactionEnvelope::Default(code)),
11575        }
11576    }
11577}
11578
11579#[allow(dead_code)]
11581#[derive(Debug, Clone, Eq, PartialEq)]
11582pub enum TransactionSignaturePayloadTaggedTransaction {
11583    EnvelopeTypeTx(Transaction),
11584    EnvelopeTypeTxFeeBump(FeeBumpTransaction),
11585    Default(EnvelopeType),
11586}
11587
11588impl XdrCodec for TransactionSignaturePayloadTaggedTransaction {
11589    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11590        match self {
11591            TransactionSignaturePayloadTaggedTransaction::EnvelopeTypeTx(value) => {
11592                EnvelopeType::EnvelopeTypeTx.to_xdr_buffered(write_stream);
11593                value.to_xdr_buffered(write_stream)
11594            },
11595            TransactionSignaturePayloadTaggedTransaction::EnvelopeTypeTxFeeBump(value) => {
11596                EnvelopeType::EnvelopeTypeTxFeeBump.to_xdr_buffered(write_stream);
11597                value.to_xdr_buffered(write_stream)
11598            },
11599            TransactionSignaturePayloadTaggedTransaction::Default(code) => code.to_xdr_buffered(write_stream),
11600        }
11601    }
11602
11603    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11604        match EnvelopeType::from_xdr_buffered(read_stream)? {
11605            EnvelopeType::EnvelopeTypeTx => Ok(TransactionSignaturePayloadTaggedTransaction::EnvelopeTypeTx(
11606                Transaction::from_xdr_buffered(read_stream)?,
11607            )),
11608            EnvelopeType::EnvelopeTypeTxFeeBump =>
11609                Ok(TransactionSignaturePayloadTaggedTransaction::EnvelopeTypeTxFeeBump(
11610                    FeeBumpTransaction::from_xdr_buffered(read_stream)?,
11611                )),
11612            code => Ok(TransactionSignaturePayloadTaggedTransaction::Default(code)),
11613        }
11614    }
11615}
11616
11617#[allow(dead_code)]
11619#[derive(Debug, Clone, Eq, PartialEq)]
11620pub enum ClaimAtom {
11621    ClaimAtomTypeV0(ClaimOfferAtomV0),
11622    ClaimAtomTypeOrderBook(ClaimOfferAtom),
11623    ClaimAtomTypeLiquidityPool(ClaimLiquidityAtom),
11624}
11625
11626impl XdrCodec for ClaimAtom {
11627    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11628        match self {
11629            ClaimAtom::ClaimAtomTypeV0(value) => {
11630                ClaimAtomType::ClaimAtomTypeV0.to_xdr_buffered(write_stream);
11631                value.to_xdr_buffered(write_stream)
11632            },
11633            ClaimAtom::ClaimAtomTypeOrderBook(value) => {
11634                ClaimAtomType::ClaimAtomTypeOrderBook.to_xdr_buffered(write_stream);
11635                value.to_xdr_buffered(write_stream)
11636            },
11637            ClaimAtom::ClaimAtomTypeLiquidityPool(value) => {
11638                ClaimAtomType::ClaimAtomTypeLiquidityPool.to_xdr_buffered(write_stream);
11639                value.to_xdr_buffered(write_stream)
11640            },
11641        }
11642    }
11643
11644    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11645        match ClaimAtomType::from_xdr_buffered(read_stream)? {
11646            ClaimAtomType::ClaimAtomTypeV0 =>
11647                Ok(ClaimAtom::ClaimAtomTypeV0(ClaimOfferAtomV0::from_xdr_buffered(read_stream)?)),
11648            ClaimAtomType::ClaimAtomTypeOrderBook =>
11649                Ok(ClaimAtom::ClaimAtomTypeOrderBook(ClaimOfferAtom::from_xdr_buffered(read_stream)?)),
11650            ClaimAtomType::ClaimAtomTypeLiquidityPool =>
11651                Ok(ClaimAtom::ClaimAtomTypeLiquidityPool(ClaimLiquidityAtom::from_xdr_buffered(read_stream)?)),
11652        }
11653    }
11654}
11655
11656#[allow(dead_code)]
11658#[derive(Debug, Clone, Eq, PartialEq)]
11659pub enum CreateAccountResult {
11660    CreateAccountSuccess,
11661    CreateAccountMalformed,
11662    CreateAccountUnderfunded,
11663    CreateAccountLowReserve,
11664    CreateAccountAlreadyExist,
11665}
11666
11667impl XdrCodec for CreateAccountResult {
11668    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11669        match self {
11670            CreateAccountResult::CreateAccountSuccess =>
11671                CreateAccountResultCode::CreateAccountSuccess.to_xdr_buffered(write_stream),
11672            CreateAccountResult::CreateAccountMalformed =>
11673                CreateAccountResultCode::CreateAccountMalformed.to_xdr_buffered(write_stream),
11674            CreateAccountResult::CreateAccountUnderfunded =>
11675                CreateAccountResultCode::CreateAccountUnderfunded.to_xdr_buffered(write_stream),
11676            CreateAccountResult::CreateAccountLowReserve =>
11677                CreateAccountResultCode::CreateAccountLowReserve.to_xdr_buffered(write_stream),
11678            CreateAccountResult::CreateAccountAlreadyExist =>
11679                CreateAccountResultCode::CreateAccountAlreadyExist.to_xdr_buffered(write_stream),
11680        }
11681    }
11682
11683    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11684        match CreateAccountResultCode::from_xdr_buffered(read_stream)? {
11685            CreateAccountResultCode::CreateAccountSuccess => Ok(CreateAccountResult::CreateAccountSuccess),
11686            CreateAccountResultCode::CreateAccountMalformed => Ok(CreateAccountResult::CreateAccountMalformed),
11687            CreateAccountResultCode::CreateAccountUnderfunded => Ok(CreateAccountResult::CreateAccountUnderfunded),
11688            CreateAccountResultCode::CreateAccountLowReserve => Ok(CreateAccountResult::CreateAccountLowReserve),
11689            CreateAccountResultCode::CreateAccountAlreadyExist => Ok(CreateAccountResult::CreateAccountAlreadyExist),
11690        }
11691    }
11692}
11693
11694#[allow(dead_code)]
11696#[derive(Debug, Clone, Eq, PartialEq)]
11697pub enum PaymentResult {
11698    PaymentSuccess,
11699    PaymentMalformed,
11700    PaymentUnderfunded,
11701    PaymentSrcNoTrust,
11702    PaymentSrcNotAuthorized,
11703    PaymentNoDestination,
11704    PaymentNoTrust,
11705    PaymentNotAuthorized,
11706    PaymentLineFull,
11707    PaymentNoIssuer,
11708}
11709
11710impl XdrCodec for PaymentResult {
11711    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11712        match self {
11713            PaymentResult::PaymentSuccess => PaymentResultCode::PaymentSuccess.to_xdr_buffered(write_stream),
11714            PaymentResult::PaymentMalformed => PaymentResultCode::PaymentMalformed.to_xdr_buffered(write_stream),
11715            PaymentResult::PaymentUnderfunded => PaymentResultCode::PaymentUnderfunded.to_xdr_buffered(write_stream),
11716            PaymentResult::PaymentSrcNoTrust => PaymentResultCode::PaymentSrcNoTrust.to_xdr_buffered(write_stream),
11717            PaymentResult::PaymentSrcNotAuthorized =>
11718                PaymentResultCode::PaymentSrcNotAuthorized.to_xdr_buffered(write_stream),
11719            PaymentResult::PaymentNoDestination =>
11720                PaymentResultCode::PaymentNoDestination.to_xdr_buffered(write_stream),
11721            PaymentResult::PaymentNoTrust => PaymentResultCode::PaymentNoTrust.to_xdr_buffered(write_stream),
11722            PaymentResult::PaymentNotAuthorized =>
11723                PaymentResultCode::PaymentNotAuthorized.to_xdr_buffered(write_stream),
11724            PaymentResult::PaymentLineFull => PaymentResultCode::PaymentLineFull.to_xdr_buffered(write_stream),
11725            PaymentResult::PaymentNoIssuer => PaymentResultCode::PaymentNoIssuer.to_xdr_buffered(write_stream),
11726        }
11727    }
11728
11729    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11730        match PaymentResultCode::from_xdr_buffered(read_stream)? {
11731            PaymentResultCode::PaymentSuccess => Ok(PaymentResult::PaymentSuccess),
11732            PaymentResultCode::PaymentMalformed => Ok(PaymentResult::PaymentMalformed),
11733            PaymentResultCode::PaymentUnderfunded => Ok(PaymentResult::PaymentUnderfunded),
11734            PaymentResultCode::PaymentSrcNoTrust => Ok(PaymentResult::PaymentSrcNoTrust),
11735            PaymentResultCode::PaymentSrcNotAuthorized => Ok(PaymentResult::PaymentSrcNotAuthorized),
11736            PaymentResultCode::PaymentNoDestination => Ok(PaymentResult::PaymentNoDestination),
11737            PaymentResultCode::PaymentNoTrust => Ok(PaymentResult::PaymentNoTrust),
11738            PaymentResultCode::PaymentNotAuthorized => Ok(PaymentResult::PaymentNotAuthorized),
11739            PaymentResultCode::PaymentLineFull => Ok(PaymentResult::PaymentLineFull),
11740            PaymentResultCode::PaymentNoIssuer => Ok(PaymentResult::PaymentNoIssuer),
11741        }
11742    }
11743}
11744
11745#[allow(dead_code)]
11747#[derive(Debug, Clone, Eq, PartialEq)]
11748pub enum PathPaymentStrictReceiveResult {
11749    PathPaymentStrictReceiveSuccess(PathPaymentStrictReceiveResultSuccess),
11750    PathPaymentStrictReceiveMalformed,
11751    PathPaymentStrictReceiveUnderfunded,
11752    PathPaymentStrictReceiveSrcNoTrust,
11753    PathPaymentStrictReceiveSrcNotAuthorized,
11754    PathPaymentStrictReceiveNoDestination,
11755    PathPaymentStrictReceiveNoTrust,
11756    PathPaymentStrictReceiveNotAuthorized,
11757    PathPaymentStrictReceiveLineFull,
11758    PathPaymentStrictReceiveNoIssuer(Asset),
11759    PathPaymentStrictReceiveTooFewOffers,
11760    PathPaymentStrictReceiveOfferCrossSelf,
11761    PathPaymentStrictReceiveOverSendmax,
11762}
11763
11764impl XdrCodec for PathPaymentStrictReceiveResult {
11765    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11766        match self {
11767            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSuccess(value) => {
11768                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSuccess.to_xdr_buffered(write_stream);
11769                value.to_xdr_buffered(write_stream)
11770            },
11771            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveMalformed =>
11772                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveMalformed.to_xdr_buffered(write_stream),
11773            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveUnderfunded =>
11774                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveUnderfunded.to_xdr_buffered(write_stream),
11775            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSrcNoTrust =>
11776                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNoTrust.to_xdr_buffered(write_stream),
11777            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSrcNotAuthorized =>
11778                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNotAuthorized
11779                    .to_xdr_buffered(write_stream),
11780            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoDestination =>
11781                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoDestination.to_xdr_buffered(write_stream),
11782            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoTrust =>
11783                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoTrust.to_xdr_buffered(write_stream),
11784            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNotAuthorized =>
11785                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNotAuthorized.to_xdr_buffered(write_stream),
11786            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveLineFull =>
11787                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveLineFull.to_xdr_buffered(write_stream),
11788            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoIssuer(value) => {
11789                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoIssuer.to_xdr_buffered(write_stream);
11790                value.to_xdr_buffered(write_stream)
11791            },
11792            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveTooFewOffers =>
11793                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveTooFewOffers.to_xdr_buffered(write_stream),
11794            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveOfferCrossSelf =>
11795                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOfferCrossSelf.to_xdr_buffered(write_stream),
11796            PathPaymentStrictReceiveResult::PathPaymentStrictReceiveOverSendmax =>
11797                PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOverSendmax.to_xdr_buffered(write_stream),
11798        }
11799    }
11800
11801    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11802        match PathPaymentStrictReceiveResultCode::from_xdr_buffered(read_stream)? {
11803            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSuccess =>
11804                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSuccess(
11805                    PathPaymentStrictReceiveResultSuccess::from_xdr_buffered(read_stream)?,
11806                )),
11807            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveMalformed =>
11808                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveMalformed),
11809            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveUnderfunded =>
11810                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveUnderfunded),
11811            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNoTrust =>
11812                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSrcNoTrust),
11813            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveSrcNotAuthorized =>
11814                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveSrcNotAuthorized),
11815            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoDestination =>
11816                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoDestination),
11817            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoTrust =>
11818                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoTrust),
11819            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNotAuthorized =>
11820                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNotAuthorized),
11821            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveLineFull =>
11822                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveLineFull),
11823            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveNoIssuer =>
11824                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveNoIssuer(Asset::from_xdr_buffered(
11825                    read_stream,
11826                )?)),
11827            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveTooFewOffers =>
11828                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveTooFewOffers),
11829            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOfferCrossSelf =>
11830                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveOfferCrossSelf),
11831            PathPaymentStrictReceiveResultCode::PathPaymentStrictReceiveOverSendmax =>
11832                Ok(PathPaymentStrictReceiveResult::PathPaymentStrictReceiveOverSendmax),
11833        }
11834    }
11835}
11836
11837#[allow(dead_code)]
11839#[derive(Debug, Clone, Eq, PartialEq)]
11840pub enum PathPaymentStrictSendResult {
11841    PathPaymentStrictSendSuccess(PathPaymentStrictSendResultSuccess),
11842    PathPaymentStrictSendMalformed,
11843    PathPaymentStrictSendUnderfunded,
11844    PathPaymentStrictSendSrcNoTrust,
11845    PathPaymentStrictSendSrcNotAuthorized,
11846    PathPaymentStrictSendNoDestination,
11847    PathPaymentStrictSendNoTrust,
11848    PathPaymentStrictSendNotAuthorized,
11849    PathPaymentStrictSendLineFull,
11850    PathPaymentStrictSendNoIssuer(Asset),
11851    PathPaymentStrictSendTooFewOffers,
11852    PathPaymentStrictSendOfferCrossSelf,
11853    PathPaymentStrictSendUnderDestmin,
11854}
11855
11856impl XdrCodec for PathPaymentStrictSendResult {
11857    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11858        match self {
11859            PathPaymentStrictSendResult::PathPaymentStrictSendSuccess(value) => {
11860                PathPaymentStrictSendResultCode::PathPaymentStrictSendSuccess.to_xdr_buffered(write_stream);
11861                value.to_xdr_buffered(write_stream)
11862            },
11863            PathPaymentStrictSendResult::PathPaymentStrictSendMalformed =>
11864                PathPaymentStrictSendResultCode::PathPaymentStrictSendMalformed.to_xdr_buffered(write_stream),
11865            PathPaymentStrictSendResult::PathPaymentStrictSendUnderfunded =>
11866                PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderfunded.to_xdr_buffered(write_stream),
11867            PathPaymentStrictSendResult::PathPaymentStrictSendSrcNoTrust =>
11868                PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNoTrust.to_xdr_buffered(write_stream),
11869            PathPaymentStrictSendResult::PathPaymentStrictSendSrcNotAuthorized =>
11870                PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNotAuthorized.to_xdr_buffered(write_stream),
11871            PathPaymentStrictSendResult::PathPaymentStrictSendNoDestination =>
11872                PathPaymentStrictSendResultCode::PathPaymentStrictSendNoDestination.to_xdr_buffered(write_stream),
11873            PathPaymentStrictSendResult::PathPaymentStrictSendNoTrust =>
11874                PathPaymentStrictSendResultCode::PathPaymentStrictSendNoTrust.to_xdr_buffered(write_stream),
11875            PathPaymentStrictSendResult::PathPaymentStrictSendNotAuthorized =>
11876                PathPaymentStrictSendResultCode::PathPaymentStrictSendNotAuthorized.to_xdr_buffered(write_stream),
11877            PathPaymentStrictSendResult::PathPaymentStrictSendLineFull =>
11878                PathPaymentStrictSendResultCode::PathPaymentStrictSendLineFull.to_xdr_buffered(write_stream),
11879            PathPaymentStrictSendResult::PathPaymentStrictSendNoIssuer(value) => {
11880                PathPaymentStrictSendResultCode::PathPaymentStrictSendNoIssuer.to_xdr_buffered(write_stream);
11881                value.to_xdr_buffered(write_stream)
11882            },
11883            PathPaymentStrictSendResult::PathPaymentStrictSendTooFewOffers =>
11884                PathPaymentStrictSendResultCode::PathPaymentStrictSendTooFewOffers.to_xdr_buffered(write_stream),
11885            PathPaymentStrictSendResult::PathPaymentStrictSendOfferCrossSelf =>
11886                PathPaymentStrictSendResultCode::PathPaymentStrictSendOfferCrossSelf.to_xdr_buffered(write_stream),
11887            PathPaymentStrictSendResult::PathPaymentStrictSendUnderDestmin =>
11888                PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderDestmin.to_xdr_buffered(write_stream),
11889        }
11890    }
11891
11892    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11893        match PathPaymentStrictSendResultCode::from_xdr_buffered(read_stream)? {
11894            PathPaymentStrictSendResultCode::PathPaymentStrictSendSuccess =>
11895                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendSuccess(
11896                    PathPaymentStrictSendResultSuccess::from_xdr_buffered(read_stream)?,
11897                )),
11898            PathPaymentStrictSendResultCode::PathPaymentStrictSendMalformed =>
11899                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendMalformed),
11900            PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderfunded =>
11901                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendUnderfunded),
11902            PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNoTrust =>
11903                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendSrcNoTrust),
11904            PathPaymentStrictSendResultCode::PathPaymentStrictSendSrcNotAuthorized =>
11905                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendSrcNotAuthorized),
11906            PathPaymentStrictSendResultCode::PathPaymentStrictSendNoDestination =>
11907                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendNoDestination),
11908            PathPaymentStrictSendResultCode::PathPaymentStrictSendNoTrust =>
11909                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendNoTrust),
11910            PathPaymentStrictSendResultCode::PathPaymentStrictSendNotAuthorized =>
11911                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendNotAuthorized),
11912            PathPaymentStrictSendResultCode::PathPaymentStrictSendLineFull =>
11913                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendLineFull),
11914            PathPaymentStrictSendResultCode::PathPaymentStrictSendNoIssuer =>
11915                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendNoIssuer(Asset::from_xdr_buffered(read_stream)?)),
11916            PathPaymentStrictSendResultCode::PathPaymentStrictSendTooFewOffers =>
11917                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendTooFewOffers),
11918            PathPaymentStrictSendResultCode::PathPaymentStrictSendOfferCrossSelf =>
11919                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendOfferCrossSelf),
11920            PathPaymentStrictSendResultCode::PathPaymentStrictSendUnderDestmin =>
11921                Ok(PathPaymentStrictSendResult::PathPaymentStrictSendUnderDestmin),
11922        }
11923    }
11924}
11925
11926#[allow(dead_code)]
11928#[derive(Debug, Clone, Eq, PartialEq)]
11929pub enum ManageOfferSuccessResultOffer {
11930    ManageOfferCreated(OfferEntry),
11931    ManageOfferUpdated(OfferEntry),
11932    ManageOfferDeleted,
11933}
11934
11935impl XdrCodec for ManageOfferSuccessResultOffer {
11936    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11937        match self {
11938            ManageOfferSuccessResultOffer::ManageOfferCreated(value) => {
11939                ManageOfferEffect::ManageOfferCreated.to_xdr_buffered(write_stream);
11940                value.to_xdr_buffered(write_stream)
11941            },
11942            ManageOfferSuccessResultOffer::ManageOfferUpdated(value) => {
11943                ManageOfferEffect::ManageOfferUpdated.to_xdr_buffered(write_stream);
11944                value.to_xdr_buffered(write_stream)
11945            },
11946            ManageOfferSuccessResultOffer::ManageOfferDeleted =>
11947                ManageOfferEffect::ManageOfferDeleted.to_xdr_buffered(write_stream),
11948        }
11949    }
11950
11951    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
11952        match ManageOfferEffect::from_xdr_buffered(read_stream)? {
11953            ManageOfferEffect::ManageOfferCreated =>
11954                Ok(ManageOfferSuccessResultOffer::ManageOfferCreated(OfferEntry::from_xdr_buffered(read_stream)?)),
11955            ManageOfferEffect::ManageOfferUpdated =>
11956                Ok(ManageOfferSuccessResultOffer::ManageOfferUpdated(OfferEntry::from_xdr_buffered(read_stream)?)),
11957            ManageOfferEffect::ManageOfferDeleted => Ok(ManageOfferSuccessResultOffer::ManageOfferDeleted),
11958        }
11959    }
11960}
11961
11962#[allow(dead_code)]
11964#[derive(Debug, Clone, Eq, PartialEq)]
11965pub enum ManageSellOfferResult {
11966    ManageSellOfferSuccess(ManageOfferSuccessResult),
11967    ManageSellOfferMalformed,
11968    ManageSellOfferSellNoTrust,
11969    ManageSellOfferBuyNoTrust,
11970    ManageSellOfferSellNotAuthorized,
11971    ManageSellOfferBuyNotAuthorized,
11972    ManageSellOfferLineFull,
11973    ManageSellOfferUnderfunded,
11974    ManageSellOfferCrossSelf,
11975    ManageSellOfferSellNoIssuer,
11976    ManageSellOfferBuyNoIssuer,
11977    ManageSellOfferNotFound,
11978    ManageSellOfferLowReserve,
11979}
11980
11981impl XdrCodec for ManageSellOfferResult {
11982    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
11983        match self {
11984            ManageSellOfferResult::ManageSellOfferSuccess(value) => {
11985                ManageSellOfferResultCode::ManageSellOfferSuccess.to_xdr_buffered(write_stream);
11986                value.to_xdr_buffered(write_stream)
11987            },
11988            ManageSellOfferResult::ManageSellOfferMalformed =>
11989                ManageSellOfferResultCode::ManageSellOfferMalformed.to_xdr_buffered(write_stream),
11990            ManageSellOfferResult::ManageSellOfferSellNoTrust =>
11991                ManageSellOfferResultCode::ManageSellOfferSellNoTrust.to_xdr_buffered(write_stream),
11992            ManageSellOfferResult::ManageSellOfferBuyNoTrust =>
11993                ManageSellOfferResultCode::ManageSellOfferBuyNoTrust.to_xdr_buffered(write_stream),
11994            ManageSellOfferResult::ManageSellOfferSellNotAuthorized =>
11995                ManageSellOfferResultCode::ManageSellOfferSellNotAuthorized.to_xdr_buffered(write_stream),
11996            ManageSellOfferResult::ManageSellOfferBuyNotAuthorized =>
11997                ManageSellOfferResultCode::ManageSellOfferBuyNotAuthorized.to_xdr_buffered(write_stream),
11998            ManageSellOfferResult::ManageSellOfferLineFull =>
11999                ManageSellOfferResultCode::ManageSellOfferLineFull.to_xdr_buffered(write_stream),
12000            ManageSellOfferResult::ManageSellOfferUnderfunded =>
12001                ManageSellOfferResultCode::ManageSellOfferUnderfunded.to_xdr_buffered(write_stream),
12002            ManageSellOfferResult::ManageSellOfferCrossSelf =>
12003                ManageSellOfferResultCode::ManageSellOfferCrossSelf.to_xdr_buffered(write_stream),
12004            ManageSellOfferResult::ManageSellOfferSellNoIssuer =>
12005                ManageSellOfferResultCode::ManageSellOfferSellNoIssuer.to_xdr_buffered(write_stream),
12006            ManageSellOfferResult::ManageSellOfferBuyNoIssuer =>
12007                ManageSellOfferResultCode::ManageSellOfferBuyNoIssuer.to_xdr_buffered(write_stream),
12008            ManageSellOfferResult::ManageSellOfferNotFound =>
12009                ManageSellOfferResultCode::ManageSellOfferNotFound.to_xdr_buffered(write_stream),
12010            ManageSellOfferResult::ManageSellOfferLowReserve =>
12011                ManageSellOfferResultCode::ManageSellOfferLowReserve.to_xdr_buffered(write_stream),
12012        }
12013    }
12014
12015    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12016        match ManageSellOfferResultCode::from_xdr_buffered(read_stream)? {
12017            ManageSellOfferResultCode::ManageSellOfferSuccess => Ok(ManageSellOfferResult::ManageSellOfferSuccess(
12018                ManageOfferSuccessResult::from_xdr_buffered(read_stream)?,
12019            )),
12020            ManageSellOfferResultCode::ManageSellOfferMalformed => Ok(ManageSellOfferResult::ManageSellOfferMalformed),
12021            ManageSellOfferResultCode::ManageSellOfferSellNoTrust =>
12022                Ok(ManageSellOfferResult::ManageSellOfferSellNoTrust),
12023            ManageSellOfferResultCode::ManageSellOfferBuyNoTrust =>
12024                Ok(ManageSellOfferResult::ManageSellOfferBuyNoTrust),
12025            ManageSellOfferResultCode::ManageSellOfferSellNotAuthorized =>
12026                Ok(ManageSellOfferResult::ManageSellOfferSellNotAuthorized),
12027            ManageSellOfferResultCode::ManageSellOfferBuyNotAuthorized =>
12028                Ok(ManageSellOfferResult::ManageSellOfferBuyNotAuthorized),
12029            ManageSellOfferResultCode::ManageSellOfferLineFull => Ok(ManageSellOfferResult::ManageSellOfferLineFull),
12030            ManageSellOfferResultCode::ManageSellOfferUnderfunded =>
12031                Ok(ManageSellOfferResult::ManageSellOfferUnderfunded),
12032            ManageSellOfferResultCode::ManageSellOfferCrossSelf => Ok(ManageSellOfferResult::ManageSellOfferCrossSelf),
12033            ManageSellOfferResultCode::ManageSellOfferSellNoIssuer =>
12034                Ok(ManageSellOfferResult::ManageSellOfferSellNoIssuer),
12035            ManageSellOfferResultCode::ManageSellOfferBuyNoIssuer =>
12036                Ok(ManageSellOfferResult::ManageSellOfferBuyNoIssuer),
12037            ManageSellOfferResultCode::ManageSellOfferNotFound => Ok(ManageSellOfferResult::ManageSellOfferNotFound),
12038            ManageSellOfferResultCode::ManageSellOfferLowReserve =>
12039                Ok(ManageSellOfferResult::ManageSellOfferLowReserve),
12040        }
12041    }
12042}
12043
12044#[allow(dead_code)]
12046#[derive(Debug, Clone, Eq, PartialEq)]
12047pub enum ManageBuyOfferResult {
12048    ManageBuyOfferSuccess(ManageOfferSuccessResult),
12049    ManageBuyOfferMalformed,
12050    ManageBuyOfferSellNoTrust,
12051    ManageBuyOfferBuyNoTrust,
12052    ManageBuyOfferSellNotAuthorized,
12053    ManageBuyOfferBuyNotAuthorized,
12054    ManageBuyOfferLineFull,
12055    ManageBuyOfferUnderfunded,
12056    ManageBuyOfferCrossSelf,
12057    ManageBuyOfferSellNoIssuer,
12058    ManageBuyOfferBuyNoIssuer,
12059    ManageBuyOfferNotFound,
12060    ManageBuyOfferLowReserve,
12061}
12062
12063impl XdrCodec for ManageBuyOfferResult {
12064    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12065        match self {
12066            ManageBuyOfferResult::ManageBuyOfferSuccess(value) => {
12067                ManageBuyOfferResultCode::ManageBuyOfferSuccess.to_xdr_buffered(write_stream);
12068                value.to_xdr_buffered(write_stream)
12069            },
12070            ManageBuyOfferResult::ManageBuyOfferMalformed =>
12071                ManageBuyOfferResultCode::ManageBuyOfferMalformed.to_xdr_buffered(write_stream),
12072            ManageBuyOfferResult::ManageBuyOfferSellNoTrust =>
12073                ManageBuyOfferResultCode::ManageBuyOfferSellNoTrust.to_xdr_buffered(write_stream),
12074            ManageBuyOfferResult::ManageBuyOfferBuyNoTrust =>
12075                ManageBuyOfferResultCode::ManageBuyOfferBuyNoTrust.to_xdr_buffered(write_stream),
12076            ManageBuyOfferResult::ManageBuyOfferSellNotAuthorized =>
12077                ManageBuyOfferResultCode::ManageBuyOfferSellNotAuthorized.to_xdr_buffered(write_stream),
12078            ManageBuyOfferResult::ManageBuyOfferBuyNotAuthorized =>
12079                ManageBuyOfferResultCode::ManageBuyOfferBuyNotAuthorized.to_xdr_buffered(write_stream),
12080            ManageBuyOfferResult::ManageBuyOfferLineFull =>
12081                ManageBuyOfferResultCode::ManageBuyOfferLineFull.to_xdr_buffered(write_stream),
12082            ManageBuyOfferResult::ManageBuyOfferUnderfunded =>
12083                ManageBuyOfferResultCode::ManageBuyOfferUnderfunded.to_xdr_buffered(write_stream),
12084            ManageBuyOfferResult::ManageBuyOfferCrossSelf =>
12085                ManageBuyOfferResultCode::ManageBuyOfferCrossSelf.to_xdr_buffered(write_stream),
12086            ManageBuyOfferResult::ManageBuyOfferSellNoIssuer =>
12087                ManageBuyOfferResultCode::ManageBuyOfferSellNoIssuer.to_xdr_buffered(write_stream),
12088            ManageBuyOfferResult::ManageBuyOfferBuyNoIssuer =>
12089                ManageBuyOfferResultCode::ManageBuyOfferBuyNoIssuer.to_xdr_buffered(write_stream),
12090            ManageBuyOfferResult::ManageBuyOfferNotFound =>
12091                ManageBuyOfferResultCode::ManageBuyOfferNotFound.to_xdr_buffered(write_stream),
12092            ManageBuyOfferResult::ManageBuyOfferLowReserve =>
12093                ManageBuyOfferResultCode::ManageBuyOfferLowReserve.to_xdr_buffered(write_stream),
12094        }
12095    }
12096
12097    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12098        match ManageBuyOfferResultCode::from_xdr_buffered(read_stream)? {
12099            ManageBuyOfferResultCode::ManageBuyOfferSuccess => Ok(ManageBuyOfferResult::ManageBuyOfferSuccess(
12100                ManageOfferSuccessResult::from_xdr_buffered(read_stream)?,
12101            )),
12102            ManageBuyOfferResultCode::ManageBuyOfferMalformed => Ok(ManageBuyOfferResult::ManageBuyOfferMalformed),
12103            ManageBuyOfferResultCode::ManageBuyOfferSellNoTrust => Ok(ManageBuyOfferResult::ManageBuyOfferSellNoTrust),
12104            ManageBuyOfferResultCode::ManageBuyOfferBuyNoTrust => Ok(ManageBuyOfferResult::ManageBuyOfferBuyNoTrust),
12105            ManageBuyOfferResultCode::ManageBuyOfferSellNotAuthorized =>
12106                Ok(ManageBuyOfferResult::ManageBuyOfferSellNotAuthorized),
12107            ManageBuyOfferResultCode::ManageBuyOfferBuyNotAuthorized =>
12108                Ok(ManageBuyOfferResult::ManageBuyOfferBuyNotAuthorized),
12109            ManageBuyOfferResultCode::ManageBuyOfferLineFull => Ok(ManageBuyOfferResult::ManageBuyOfferLineFull),
12110            ManageBuyOfferResultCode::ManageBuyOfferUnderfunded => Ok(ManageBuyOfferResult::ManageBuyOfferUnderfunded),
12111            ManageBuyOfferResultCode::ManageBuyOfferCrossSelf => Ok(ManageBuyOfferResult::ManageBuyOfferCrossSelf),
12112            ManageBuyOfferResultCode::ManageBuyOfferSellNoIssuer =>
12113                Ok(ManageBuyOfferResult::ManageBuyOfferSellNoIssuer),
12114            ManageBuyOfferResultCode::ManageBuyOfferBuyNoIssuer => Ok(ManageBuyOfferResult::ManageBuyOfferBuyNoIssuer),
12115            ManageBuyOfferResultCode::ManageBuyOfferNotFound => Ok(ManageBuyOfferResult::ManageBuyOfferNotFound),
12116            ManageBuyOfferResultCode::ManageBuyOfferLowReserve => Ok(ManageBuyOfferResult::ManageBuyOfferLowReserve),
12117        }
12118    }
12119}
12120
12121#[allow(dead_code)]
12123#[derive(Debug, Clone, Eq, PartialEq)]
12124pub enum SetOptionsResult {
12125    SetOptionsSuccess,
12126    SetOptionsLowReserve,
12127    SetOptionsTooManySigners,
12128    SetOptionsBadFlags,
12129    SetOptionsInvalidInflation,
12130    SetOptionsCantChange,
12131    SetOptionsUnknownFlag,
12132    SetOptionsThresholdOutOfRange,
12133    SetOptionsBadSigner,
12134    SetOptionsInvalidHomeDomain,
12135    SetOptionsAuthRevocableRequired,
12136}
12137
12138impl XdrCodec for SetOptionsResult {
12139    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12140        match self {
12141            SetOptionsResult::SetOptionsSuccess =>
12142                SetOptionsResultCode::SetOptionsSuccess.to_xdr_buffered(write_stream),
12143            SetOptionsResult::SetOptionsLowReserve =>
12144                SetOptionsResultCode::SetOptionsLowReserve.to_xdr_buffered(write_stream),
12145            SetOptionsResult::SetOptionsTooManySigners =>
12146                SetOptionsResultCode::SetOptionsTooManySigners.to_xdr_buffered(write_stream),
12147            SetOptionsResult::SetOptionsBadFlags =>
12148                SetOptionsResultCode::SetOptionsBadFlags.to_xdr_buffered(write_stream),
12149            SetOptionsResult::SetOptionsInvalidInflation =>
12150                SetOptionsResultCode::SetOptionsInvalidInflation.to_xdr_buffered(write_stream),
12151            SetOptionsResult::SetOptionsCantChange =>
12152                SetOptionsResultCode::SetOptionsCantChange.to_xdr_buffered(write_stream),
12153            SetOptionsResult::SetOptionsUnknownFlag =>
12154                SetOptionsResultCode::SetOptionsUnknownFlag.to_xdr_buffered(write_stream),
12155            SetOptionsResult::SetOptionsThresholdOutOfRange =>
12156                SetOptionsResultCode::SetOptionsThresholdOutOfRange.to_xdr_buffered(write_stream),
12157            SetOptionsResult::SetOptionsBadSigner =>
12158                SetOptionsResultCode::SetOptionsBadSigner.to_xdr_buffered(write_stream),
12159            SetOptionsResult::SetOptionsInvalidHomeDomain =>
12160                SetOptionsResultCode::SetOptionsInvalidHomeDomain.to_xdr_buffered(write_stream),
12161            SetOptionsResult::SetOptionsAuthRevocableRequired =>
12162                SetOptionsResultCode::SetOptionsAuthRevocableRequired.to_xdr_buffered(write_stream),
12163        }
12164    }
12165
12166    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12167        match SetOptionsResultCode::from_xdr_buffered(read_stream)? {
12168            SetOptionsResultCode::SetOptionsSuccess => Ok(SetOptionsResult::SetOptionsSuccess),
12169            SetOptionsResultCode::SetOptionsLowReserve => Ok(SetOptionsResult::SetOptionsLowReserve),
12170            SetOptionsResultCode::SetOptionsTooManySigners => Ok(SetOptionsResult::SetOptionsTooManySigners),
12171            SetOptionsResultCode::SetOptionsBadFlags => Ok(SetOptionsResult::SetOptionsBadFlags),
12172            SetOptionsResultCode::SetOptionsInvalidInflation => Ok(SetOptionsResult::SetOptionsInvalidInflation),
12173            SetOptionsResultCode::SetOptionsCantChange => Ok(SetOptionsResult::SetOptionsCantChange),
12174            SetOptionsResultCode::SetOptionsUnknownFlag => Ok(SetOptionsResult::SetOptionsUnknownFlag),
12175            SetOptionsResultCode::SetOptionsThresholdOutOfRange => Ok(SetOptionsResult::SetOptionsThresholdOutOfRange),
12176            SetOptionsResultCode::SetOptionsBadSigner => Ok(SetOptionsResult::SetOptionsBadSigner),
12177            SetOptionsResultCode::SetOptionsInvalidHomeDomain => Ok(SetOptionsResult::SetOptionsInvalidHomeDomain),
12178            SetOptionsResultCode::SetOptionsAuthRevocableRequired =>
12179                Ok(SetOptionsResult::SetOptionsAuthRevocableRequired),
12180        }
12181    }
12182}
12183
12184#[allow(dead_code)]
12186#[derive(Debug, Clone, Eq, PartialEq)]
12187pub enum ChangeTrustResult {
12188    ChangeTrustSuccess,
12189    ChangeTrustMalformed,
12190    ChangeTrustNoIssuer,
12191    ChangeTrustInvalidLimit,
12192    ChangeTrustLowReserve,
12193    ChangeTrustSelfNotAllowed,
12194    ChangeTrustTrustLineMissing,
12195    ChangeTrustCannotDelete,
12196    ChangeTrustNotAuthMaintainLiabilities,
12197}
12198
12199impl XdrCodec for ChangeTrustResult {
12200    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12201        match self {
12202            ChangeTrustResult::ChangeTrustSuccess =>
12203                ChangeTrustResultCode::ChangeTrustSuccess.to_xdr_buffered(write_stream),
12204            ChangeTrustResult::ChangeTrustMalformed =>
12205                ChangeTrustResultCode::ChangeTrustMalformed.to_xdr_buffered(write_stream),
12206            ChangeTrustResult::ChangeTrustNoIssuer =>
12207                ChangeTrustResultCode::ChangeTrustNoIssuer.to_xdr_buffered(write_stream),
12208            ChangeTrustResult::ChangeTrustInvalidLimit =>
12209                ChangeTrustResultCode::ChangeTrustInvalidLimit.to_xdr_buffered(write_stream),
12210            ChangeTrustResult::ChangeTrustLowReserve =>
12211                ChangeTrustResultCode::ChangeTrustLowReserve.to_xdr_buffered(write_stream),
12212            ChangeTrustResult::ChangeTrustSelfNotAllowed =>
12213                ChangeTrustResultCode::ChangeTrustSelfNotAllowed.to_xdr_buffered(write_stream),
12214            ChangeTrustResult::ChangeTrustTrustLineMissing =>
12215                ChangeTrustResultCode::ChangeTrustTrustLineMissing.to_xdr_buffered(write_stream),
12216            ChangeTrustResult::ChangeTrustCannotDelete =>
12217                ChangeTrustResultCode::ChangeTrustCannotDelete.to_xdr_buffered(write_stream),
12218            ChangeTrustResult::ChangeTrustNotAuthMaintainLiabilities =>
12219                ChangeTrustResultCode::ChangeTrustNotAuthMaintainLiabilities.to_xdr_buffered(write_stream),
12220        }
12221    }
12222
12223    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12224        match ChangeTrustResultCode::from_xdr_buffered(read_stream)? {
12225            ChangeTrustResultCode::ChangeTrustSuccess => Ok(ChangeTrustResult::ChangeTrustSuccess),
12226            ChangeTrustResultCode::ChangeTrustMalformed => Ok(ChangeTrustResult::ChangeTrustMalformed),
12227            ChangeTrustResultCode::ChangeTrustNoIssuer => Ok(ChangeTrustResult::ChangeTrustNoIssuer),
12228            ChangeTrustResultCode::ChangeTrustInvalidLimit => Ok(ChangeTrustResult::ChangeTrustInvalidLimit),
12229            ChangeTrustResultCode::ChangeTrustLowReserve => Ok(ChangeTrustResult::ChangeTrustLowReserve),
12230            ChangeTrustResultCode::ChangeTrustSelfNotAllowed => Ok(ChangeTrustResult::ChangeTrustSelfNotAllowed),
12231            ChangeTrustResultCode::ChangeTrustTrustLineMissing => Ok(ChangeTrustResult::ChangeTrustTrustLineMissing),
12232            ChangeTrustResultCode::ChangeTrustCannotDelete => Ok(ChangeTrustResult::ChangeTrustCannotDelete),
12233            ChangeTrustResultCode::ChangeTrustNotAuthMaintainLiabilities =>
12234                Ok(ChangeTrustResult::ChangeTrustNotAuthMaintainLiabilities),
12235        }
12236    }
12237}
12238
12239#[allow(dead_code)]
12241#[derive(Debug, Clone, Eq, PartialEq)]
12242pub enum AllowTrustResult {
12243    AllowTrustSuccess,
12244    AllowTrustMalformed,
12245    AllowTrustNoTrustLine,
12246    AllowTrustTrustNotRequired,
12247    AllowTrustCantRevoke,
12248    AllowTrustSelfNotAllowed,
12249    AllowTrustLowReserve,
12250}
12251
12252impl XdrCodec for AllowTrustResult {
12253    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12254        match self {
12255            AllowTrustResult::AllowTrustSuccess =>
12256                AllowTrustResultCode::AllowTrustSuccess.to_xdr_buffered(write_stream),
12257            AllowTrustResult::AllowTrustMalformed =>
12258                AllowTrustResultCode::AllowTrustMalformed.to_xdr_buffered(write_stream),
12259            AllowTrustResult::AllowTrustNoTrustLine =>
12260                AllowTrustResultCode::AllowTrustNoTrustLine.to_xdr_buffered(write_stream),
12261            AllowTrustResult::AllowTrustTrustNotRequired =>
12262                AllowTrustResultCode::AllowTrustTrustNotRequired.to_xdr_buffered(write_stream),
12263            AllowTrustResult::AllowTrustCantRevoke =>
12264                AllowTrustResultCode::AllowTrustCantRevoke.to_xdr_buffered(write_stream),
12265            AllowTrustResult::AllowTrustSelfNotAllowed =>
12266                AllowTrustResultCode::AllowTrustSelfNotAllowed.to_xdr_buffered(write_stream),
12267            AllowTrustResult::AllowTrustLowReserve =>
12268                AllowTrustResultCode::AllowTrustLowReserve.to_xdr_buffered(write_stream),
12269        }
12270    }
12271
12272    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12273        match AllowTrustResultCode::from_xdr_buffered(read_stream)? {
12274            AllowTrustResultCode::AllowTrustSuccess => Ok(AllowTrustResult::AllowTrustSuccess),
12275            AllowTrustResultCode::AllowTrustMalformed => Ok(AllowTrustResult::AllowTrustMalformed),
12276            AllowTrustResultCode::AllowTrustNoTrustLine => Ok(AllowTrustResult::AllowTrustNoTrustLine),
12277            AllowTrustResultCode::AllowTrustTrustNotRequired => Ok(AllowTrustResult::AllowTrustTrustNotRequired),
12278            AllowTrustResultCode::AllowTrustCantRevoke => Ok(AllowTrustResult::AllowTrustCantRevoke),
12279            AllowTrustResultCode::AllowTrustSelfNotAllowed => Ok(AllowTrustResult::AllowTrustSelfNotAllowed),
12280            AllowTrustResultCode::AllowTrustLowReserve => Ok(AllowTrustResult::AllowTrustLowReserve),
12281        }
12282    }
12283}
12284
12285#[allow(dead_code)]
12287#[derive(Debug, Clone, Eq, PartialEq)]
12288pub enum AccountMergeResult {
12289    AccountMergeSuccess(Int64),
12290    AccountMergeMalformed,
12291    AccountMergeNoAccount,
12292    AccountMergeImmutableSet,
12293    AccountMergeHasSubEntries,
12294    AccountMergeSeqnumTooFar,
12295    AccountMergeDestFull,
12296    AccountMergeIsSponsor,
12297}
12298
12299impl XdrCodec for AccountMergeResult {
12300    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12301        match self {
12302            AccountMergeResult::AccountMergeSuccess(value) => {
12303                AccountMergeResultCode::AccountMergeSuccess.to_xdr_buffered(write_stream);
12304                value.to_xdr_buffered(write_stream)
12305            },
12306            AccountMergeResult::AccountMergeMalformed =>
12307                AccountMergeResultCode::AccountMergeMalformed.to_xdr_buffered(write_stream),
12308            AccountMergeResult::AccountMergeNoAccount =>
12309                AccountMergeResultCode::AccountMergeNoAccount.to_xdr_buffered(write_stream),
12310            AccountMergeResult::AccountMergeImmutableSet =>
12311                AccountMergeResultCode::AccountMergeImmutableSet.to_xdr_buffered(write_stream),
12312            AccountMergeResult::AccountMergeHasSubEntries =>
12313                AccountMergeResultCode::AccountMergeHasSubEntries.to_xdr_buffered(write_stream),
12314            AccountMergeResult::AccountMergeSeqnumTooFar =>
12315                AccountMergeResultCode::AccountMergeSeqnumTooFar.to_xdr_buffered(write_stream),
12316            AccountMergeResult::AccountMergeDestFull =>
12317                AccountMergeResultCode::AccountMergeDestFull.to_xdr_buffered(write_stream),
12318            AccountMergeResult::AccountMergeIsSponsor =>
12319                AccountMergeResultCode::AccountMergeIsSponsor.to_xdr_buffered(write_stream),
12320        }
12321    }
12322
12323    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12324        match AccountMergeResultCode::from_xdr_buffered(read_stream)? {
12325            AccountMergeResultCode::AccountMergeSuccess =>
12326                Ok(AccountMergeResult::AccountMergeSuccess(Int64::from_xdr_buffered(read_stream)?)),
12327            AccountMergeResultCode::AccountMergeMalformed => Ok(AccountMergeResult::AccountMergeMalformed),
12328            AccountMergeResultCode::AccountMergeNoAccount => Ok(AccountMergeResult::AccountMergeNoAccount),
12329            AccountMergeResultCode::AccountMergeImmutableSet => Ok(AccountMergeResult::AccountMergeImmutableSet),
12330            AccountMergeResultCode::AccountMergeHasSubEntries => Ok(AccountMergeResult::AccountMergeHasSubEntries),
12331            AccountMergeResultCode::AccountMergeSeqnumTooFar => Ok(AccountMergeResult::AccountMergeSeqnumTooFar),
12332            AccountMergeResultCode::AccountMergeDestFull => Ok(AccountMergeResult::AccountMergeDestFull),
12333            AccountMergeResultCode::AccountMergeIsSponsor => Ok(AccountMergeResult::AccountMergeIsSponsor),
12334        }
12335    }
12336}
12337
12338#[allow(dead_code)]
12340#[derive(Debug, Clone, Eq, PartialEq)]
12341pub enum InflationResult {
12342    InflationSuccess(UnlimitedVarArray<InflationPayout>),
12343    InflationNotTime,
12344}
12345
12346impl XdrCodec for InflationResult {
12347    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12348        match self {
12349            InflationResult::InflationSuccess(value) => {
12350                InflationResultCode::InflationSuccess.to_xdr_buffered(write_stream);
12351                value.to_xdr_buffered(write_stream)
12352            },
12353            InflationResult::InflationNotTime => InflationResultCode::InflationNotTime.to_xdr_buffered(write_stream),
12354        }
12355    }
12356
12357    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12358        match InflationResultCode::from_xdr_buffered(read_stream)? {
12359            InflationResultCode::InflationSuccess =>
12360                Ok(InflationResult::InflationSuccess(UnlimitedVarArray::<InflationPayout>::from_xdr_buffered(
12361                    read_stream,
12362                )?)),
12363            InflationResultCode::InflationNotTime => Ok(InflationResult::InflationNotTime),
12364        }
12365    }
12366}
12367
12368#[allow(dead_code)]
12370#[derive(Debug, Clone, Eq, PartialEq)]
12371pub enum ManageDataResult {
12372    ManageDataSuccess,
12373    ManageDataNotSupportedYet,
12374    ManageDataNameNotFound,
12375    ManageDataLowReserve,
12376    ManageDataInvalidName,
12377}
12378
12379impl XdrCodec for ManageDataResult {
12380    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12381        match self {
12382            ManageDataResult::ManageDataSuccess =>
12383                ManageDataResultCode::ManageDataSuccess.to_xdr_buffered(write_stream),
12384            ManageDataResult::ManageDataNotSupportedYet =>
12385                ManageDataResultCode::ManageDataNotSupportedYet.to_xdr_buffered(write_stream),
12386            ManageDataResult::ManageDataNameNotFound =>
12387                ManageDataResultCode::ManageDataNameNotFound.to_xdr_buffered(write_stream),
12388            ManageDataResult::ManageDataLowReserve =>
12389                ManageDataResultCode::ManageDataLowReserve.to_xdr_buffered(write_stream),
12390            ManageDataResult::ManageDataInvalidName =>
12391                ManageDataResultCode::ManageDataInvalidName.to_xdr_buffered(write_stream),
12392        }
12393    }
12394
12395    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12396        match ManageDataResultCode::from_xdr_buffered(read_stream)? {
12397            ManageDataResultCode::ManageDataSuccess => Ok(ManageDataResult::ManageDataSuccess),
12398            ManageDataResultCode::ManageDataNotSupportedYet => Ok(ManageDataResult::ManageDataNotSupportedYet),
12399            ManageDataResultCode::ManageDataNameNotFound => Ok(ManageDataResult::ManageDataNameNotFound),
12400            ManageDataResultCode::ManageDataLowReserve => Ok(ManageDataResult::ManageDataLowReserve),
12401            ManageDataResultCode::ManageDataInvalidName => Ok(ManageDataResult::ManageDataInvalidName),
12402        }
12403    }
12404}
12405
12406#[allow(dead_code)]
12408#[derive(Debug, Clone, Eq, PartialEq)]
12409pub enum BumpSequenceResult {
12410    BumpSequenceSuccess,
12411    BumpSequenceBadSeq,
12412}
12413
12414impl XdrCodec for BumpSequenceResult {
12415    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12416        match self {
12417            BumpSequenceResult::BumpSequenceSuccess =>
12418                BumpSequenceResultCode::BumpSequenceSuccess.to_xdr_buffered(write_stream),
12419            BumpSequenceResult::BumpSequenceBadSeq =>
12420                BumpSequenceResultCode::BumpSequenceBadSeq.to_xdr_buffered(write_stream),
12421        }
12422    }
12423
12424    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12425        match BumpSequenceResultCode::from_xdr_buffered(read_stream)? {
12426            BumpSequenceResultCode::BumpSequenceSuccess => Ok(BumpSequenceResult::BumpSequenceSuccess),
12427            BumpSequenceResultCode::BumpSequenceBadSeq => Ok(BumpSequenceResult::BumpSequenceBadSeq),
12428        }
12429    }
12430}
12431
12432#[allow(dead_code)]
12434#[derive(Debug, Clone, Eq, PartialEq)]
12435pub enum CreateClaimableBalanceResult {
12436    CreateClaimableBalanceSuccess(ClaimableBalanceId),
12437    CreateClaimableBalanceMalformed,
12438    CreateClaimableBalanceLowReserve,
12439    CreateClaimableBalanceNoTrust,
12440    CreateClaimableBalanceNotAuthorized,
12441    CreateClaimableBalanceUnderfunded,
12442}
12443
12444impl XdrCodec for CreateClaimableBalanceResult {
12445    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12446        match self {
12447            CreateClaimableBalanceResult::CreateClaimableBalanceSuccess(value) => {
12448                CreateClaimableBalanceResultCode::CreateClaimableBalanceSuccess.to_xdr_buffered(write_stream);
12449                value.to_xdr_buffered(write_stream)
12450            },
12451            CreateClaimableBalanceResult::CreateClaimableBalanceMalformed =>
12452                CreateClaimableBalanceResultCode::CreateClaimableBalanceMalformed.to_xdr_buffered(write_stream),
12453            CreateClaimableBalanceResult::CreateClaimableBalanceLowReserve =>
12454                CreateClaimableBalanceResultCode::CreateClaimableBalanceLowReserve.to_xdr_buffered(write_stream),
12455            CreateClaimableBalanceResult::CreateClaimableBalanceNoTrust =>
12456                CreateClaimableBalanceResultCode::CreateClaimableBalanceNoTrust.to_xdr_buffered(write_stream),
12457            CreateClaimableBalanceResult::CreateClaimableBalanceNotAuthorized =>
12458                CreateClaimableBalanceResultCode::CreateClaimableBalanceNotAuthorized.to_xdr_buffered(write_stream),
12459            CreateClaimableBalanceResult::CreateClaimableBalanceUnderfunded =>
12460                CreateClaimableBalanceResultCode::CreateClaimableBalanceUnderfunded.to_xdr_buffered(write_stream),
12461        }
12462    }
12463
12464    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12465        match CreateClaimableBalanceResultCode::from_xdr_buffered(read_stream)? {
12466            CreateClaimableBalanceResultCode::CreateClaimableBalanceSuccess =>
12467                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceSuccess(ClaimableBalanceId::from_xdr_buffered(
12468                    read_stream,
12469                )?)),
12470            CreateClaimableBalanceResultCode::CreateClaimableBalanceMalformed =>
12471                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceMalformed),
12472            CreateClaimableBalanceResultCode::CreateClaimableBalanceLowReserve =>
12473                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceLowReserve),
12474            CreateClaimableBalanceResultCode::CreateClaimableBalanceNoTrust =>
12475                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceNoTrust),
12476            CreateClaimableBalanceResultCode::CreateClaimableBalanceNotAuthorized =>
12477                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceNotAuthorized),
12478            CreateClaimableBalanceResultCode::CreateClaimableBalanceUnderfunded =>
12479                Ok(CreateClaimableBalanceResult::CreateClaimableBalanceUnderfunded),
12480        }
12481    }
12482}
12483
12484#[allow(dead_code)]
12486#[derive(Debug, Clone, Eq, PartialEq)]
12487pub enum ClaimClaimableBalanceResult {
12488    ClaimClaimableBalanceSuccess,
12489    ClaimClaimableBalanceDoesNotExist,
12490    ClaimClaimableBalanceCannotClaim,
12491    ClaimClaimableBalanceLineFull,
12492    ClaimClaimableBalanceNoTrust,
12493    ClaimClaimableBalanceNotAuthorized,
12494}
12495
12496impl XdrCodec for ClaimClaimableBalanceResult {
12497    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12498        match self {
12499            ClaimClaimableBalanceResult::ClaimClaimableBalanceSuccess =>
12500                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceSuccess.to_xdr_buffered(write_stream),
12501            ClaimClaimableBalanceResult::ClaimClaimableBalanceDoesNotExist =>
12502                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceDoesNotExist.to_xdr_buffered(write_stream),
12503            ClaimClaimableBalanceResult::ClaimClaimableBalanceCannotClaim =>
12504                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceCannotClaim.to_xdr_buffered(write_stream),
12505            ClaimClaimableBalanceResult::ClaimClaimableBalanceLineFull =>
12506                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceLineFull.to_xdr_buffered(write_stream),
12507            ClaimClaimableBalanceResult::ClaimClaimableBalanceNoTrust =>
12508                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNoTrust.to_xdr_buffered(write_stream),
12509            ClaimClaimableBalanceResult::ClaimClaimableBalanceNotAuthorized =>
12510                ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNotAuthorized.to_xdr_buffered(write_stream),
12511        }
12512    }
12513
12514    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12515        match ClaimClaimableBalanceResultCode::from_xdr_buffered(read_stream)? {
12516            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceSuccess =>
12517                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceSuccess),
12518            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceDoesNotExist =>
12519                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceDoesNotExist),
12520            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceCannotClaim =>
12521                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceCannotClaim),
12522            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceLineFull =>
12523                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceLineFull),
12524            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNoTrust =>
12525                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceNoTrust),
12526            ClaimClaimableBalanceResultCode::ClaimClaimableBalanceNotAuthorized =>
12527                Ok(ClaimClaimableBalanceResult::ClaimClaimableBalanceNotAuthorized),
12528        }
12529    }
12530}
12531
12532#[allow(dead_code)]
12534#[derive(Debug, Clone, Eq, PartialEq)]
12535pub enum BeginSponsoringFutureReservesResult {
12536    BeginSponsoringFutureReservesSuccess,
12537    BeginSponsoringFutureReservesMalformed,
12538    BeginSponsoringFutureReservesAlreadySponsored,
12539    BeginSponsoringFutureReservesRecursive,
12540}
12541
12542impl XdrCodec for BeginSponsoringFutureReservesResult {
12543    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12544        match self {
12545            BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesSuccess =>
12546                BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesSuccess
12547                    .to_xdr_buffered(write_stream),
12548            BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesMalformed =>
12549                BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesMalformed
12550                    .to_xdr_buffered(write_stream),
12551            BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesAlreadySponsored =>
12552                BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesAlreadySponsored
12553                    .to_xdr_buffered(write_stream),
12554            BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesRecursive =>
12555                BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesRecursive
12556                    .to_xdr_buffered(write_stream),
12557        }
12558    }
12559
12560    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12561        match BeginSponsoringFutureReservesResultCode::from_xdr_buffered(read_stream)? {
12562            BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesSuccess =>
12563                Ok(BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesSuccess),
12564            BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesMalformed =>
12565                Ok(BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesMalformed),
12566            BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesAlreadySponsored =>
12567                Ok(BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesAlreadySponsored),
12568            BeginSponsoringFutureReservesResultCode::BeginSponsoringFutureReservesRecursive =>
12569                Ok(BeginSponsoringFutureReservesResult::BeginSponsoringFutureReservesRecursive),
12570        }
12571    }
12572}
12573
12574#[allow(dead_code)]
12576#[derive(Debug, Clone, Eq, PartialEq)]
12577pub enum EndSponsoringFutureReservesResult {
12578    EndSponsoringFutureReservesSuccess,
12579    EndSponsoringFutureReservesNotSponsored,
12580}
12581
12582impl XdrCodec for EndSponsoringFutureReservesResult {
12583    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12584        match self {
12585            EndSponsoringFutureReservesResult::EndSponsoringFutureReservesSuccess =>
12586                EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesSuccess.to_xdr_buffered(write_stream),
12587            EndSponsoringFutureReservesResult::EndSponsoringFutureReservesNotSponsored =>
12588                EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesNotSponsored
12589                    .to_xdr_buffered(write_stream),
12590        }
12591    }
12592
12593    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12594        match EndSponsoringFutureReservesResultCode::from_xdr_buffered(read_stream)? {
12595            EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesSuccess =>
12596                Ok(EndSponsoringFutureReservesResult::EndSponsoringFutureReservesSuccess),
12597            EndSponsoringFutureReservesResultCode::EndSponsoringFutureReservesNotSponsored =>
12598                Ok(EndSponsoringFutureReservesResult::EndSponsoringFutureReservesNotSponsored),
12599        }
12600    }
12601}
12602
12603#[allow(dead_code)]
12605#[derive(Debug, Clone, Eq, PartialEq)]
12606pub enum RevokeSponsorshipResult {
12607    RevokeSponsorshipSuccess,
12608    RevokeSponsorshipDoesNotExist,
12609    RevokeSponsorshipNotSponsor,
12610    RevokeSponsorshipLowReserve,
12611    RevokeSponsorshipOnlyTransferable,
12612    RevokeSponsorshipMalformed,
12613}
12614
12615impl XdrCodec for RevokeSponsorshipResult {
12616    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12617        match self {
12618            RevokeSponsorshipResult::RevokeSponsorshipSuccess =>
12619                RevokeSponsorshipResultCode::RevokeSponsorshipSuccess.to_xdr_buffered(write_stream),
12620            RevokeSponsorshipResult::RevokeSponsorshipDoesNotExist =>
12621                RevokeSponsorshipResultCode::RevokeSponsorshipDoesNotExist.to_xdr_buffered(write_stream),
12622            RevokeSponsorshipResult::RevokeSponsorshipNotSponsor =>
12623                RevokeSponsorshipResultCode::RevokeSponsorshipNotSponsor.to_xdr_buffered(write_stream),
12624            RevokeSponsorshipResult::RevokeSponsorshipLowReserve =>
12625                RevokeSponsorshipResultCode::RevokeSponsorshipLowReserve.to_xdr_buffered(write_stream),
12626            RevokeSponsorshipResult::RevokeSponsorshipOnlyTransferable =>
12627                RevokeSponsorshipResultCode::RevokeSponsorshipOnlyTransferable.to_xdr_buffered(write_stream),
12628            RevokeSponsorshipResult::RevokeSponsorshipMalformed =>
12629                RevokeSponsorshipResultCode::RevokeSponsorshipMalformed.to_xdr_buffered(write_stream),
12630        }
12631    }
12632
12633    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12634        match RevokeSponsorshipResultCode::from_xdr_buffered(read_stream)? {
12635            RevokeSponsorshipResultCode::RevokeSponsorshipSuccess =>
12636                Ok(RevokeSponsorshipResult::RevokeSponsorshipSuccess),
12637            RevokeSponsorshipResultCode::RevokeSponsorshipDoesNotExist =>
12638                Ok(RevokeSponsorshipResult::RevokeSponsorshipDoesNotExist),
12639            RevokeSponsorshipResultCode::RevokeSponsorshipNotSponsor =>
12640                Ok(RevokeSponsorshipResult::RevokeSponsorshipNotSponsor),
12641            RevokeSponsorshipResultCode::RevokeSponsorshipLowReserve =>
12642                Ok(RevokeSponsorshipResult::RevokeSponsorshipLowReserve),
12643            RevokeSponsorshipResultCode::RevokeSponsorshipOnlyTransferable =>
12644                Ok(RevokeSponsorshipResult::RevokeSponsorshipOnlyTransferable),
12645            RevokeSponsorshipResultCode::RevokeSponsorshipMalformed =>
12646                Ok(RevokeSponsorshipResult::RevokeSponsorshipMalformed),
12647        }
12648    }
12649}
12650
12651#[allow(dead_code)]
12653#[derive(Debug, Clone, Eq, PartialEq)]
12654pub enum ClawbackResult {
12655    ClawbackSuccess,
12656    ClawbackMalformed,
12657    ClawbackNotClawbackEnabled,
12658    ClawbackNoTrust,
12659    ClawbackUnderfunded,
12660}
12661
12662impl XdrCodec for ClawbackResult {
12663    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12664        match self {
12665            ClawbackResult::ClawbackSuccess => ClawbackResultCode::ClawbackSuccess.to_xdr_buffered(write_stream),
12666            ClawbackResult::ClawbackMalformed => ClawbackResultCode::ClawbackMalformed.to_xdr_buffered(write_stream),
12667            ClawbackResult::ClawbackNotClawbackEnabled =>
12668                ClawbackResultCode::ClawbackNotClawbackEnabled.to_xdr_buffered(write_stream),
12669            ClawbackResult::ClawbackNoTrust => ClawbackResultCode::ClawbackNoTrust.to_xdr_buffered(write_stream),
12670            ClawbackResult::ClawbackUnderfunded =>
12671                ClawbackResultCode::ClawbackUnderfunded.to_xdr_buffered(write_stream),
12672        }
12673    }
12674
12675    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12676        match ClawbackResultCode::from_xdr_buffered(read_stream)? {
12677            ClawbackResultCode::ClawbackSuccess => Ok(ClawbackResult::ClawbackSuccess),
12678            ClawbackResultCode::ClawbackMalformed => Ok(ClawbackResult::ClawbackMalformed),
12679            ClawbackResultCode::ClawbackNotClawbackEnabled => Ok(ClawbackResult::ClawbackNotClawbackEnabled),
12680            ClawbackResultCode::ClawbackNoTrust => Ok(ClawbackResult::ClawbackNoTrust),
12681            ClawbackResultCode::ClawbackUnderfunded => Ok(ClawbackResult::ClawbackUnderfunded),
12682        }
12683    }
12684}
12685
12686#[allow(dead_code)]
12688#[derive(Debug, Clone, Eq, PartialEq)]
12689pub enum ClawbackClaimableBalanceResult {
12690    ClawbackClaimableBalanceSuccess,
12691    ClawbackClaimableBalanceDoesNotExist,
12692    ClawbackClaimableBalanceNotIssuer,
12693    ClawbackClaimableBalanceNotClawbackEnabled,
12694}
12695
12696impl XdrCodec for ClawbackClaimableBalanceResult {
12697    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12698        match self {
12699            ClawbackClaimableBalanceResult::ClawbackClaimableBalanceSuccess =>
12700                ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceSuccess.to_xdr_buffered(write_stream),
12701            ClawbackClaimableBalanceResult::ClawbackClaimableBalanceDoesNotExist =>
12702                ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceDoesNotExist.to_xdr_buffered(write_stream),
12703            ClawbackClaimableBalanceResult::ClawbackClaimableBalanceNotIssuer =>
12704                ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotIssuer.to_xdr_buffered(write_stream),
12705            ClawbackClaimableBalanceResult::ClawbackClaimableBalanceNotClawbackEnabled =>
12706                ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotClawbackEnabled
12707                    .to_xdr_buffered(write_stream),
12708        }
12709    }
12710
12711    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12712        match ClawbackClaimableBalanceResultCode::from_xdr_buffered(read_stream)? {
12713            ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceSuccess =>
12714                Ok(ClawbackClaimableBalanceResult::ClawbackClaimableBalanceSuccess),
12715            ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceDoesNotExist =>
12716                Ok(ClawbackClaimableBalanceResult::ClawbackClaimableBalanceDoesNotExist),
12717            ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotIssuer =>
12718                Ok(ClawbackClaimableBalanceResult::ClawbackClaimableBalanceNotIssuer),
12719            ClawbackClaimableBalanceResultCode::ClawbackClaimableBalanceNotClawbackEnabled =>
12720                Ok(ClawbackClaimableBalanceResult::ClawbackClaimableBalanceNotClawbackEnabled),
12721        }
12722    }
12723}
12724
12725#[allow(dead_code)]
12727#[derive(Debug, Clone, Eq, PartialEq)]
12728pub enum SetTrustLineFlagsResult {
12729    SetTrustLineFlagsSuccess,
12730    SetTrustLineFlagsMalformed,
12731    SetTrustLineFlagsNoTrustLine,
12732    SetTrustLineFlagsCantRevoke,
12733    SetTrustLineFlagsInvalidState,
12734    SetTrustLineFlagsLowReserve,
12735}
12736
12737impl XdrCodec for SetTrustLineFlagsResult {
12738    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12739        match self {
12740            SetTrustLineFlagsResult::SetTrustLineFlagsSuccess =>
12741                SetTrustLineFlagsResultCode::SetTrustLineFlagsSuccess.to_xdr_buffered(write_stream),
12742            SetTrustLineFlagsResult::SetTrustLineFlagsMalformed =>
12743                SetTrustLineFlagsResultCode::SetTrustLineFlagsMalformed.to_xdr_buffered(write_stream),
12744            SetTrustLineFlagsResult::SetTrustLineFlagsNoTrustLine =>
12745                SetTrustLineFlagsResultCode::SetTrustLineFlagsNoTrustLine.to_xdr_buffered(write_stream),
12746            SetTrustLineFlagsResult::SetTrustLineFlagsCantRevoke =>
12747                SetTrustLineFlagsResultCode::SetTrustLineFlagsCantRevoke.to_xdr_buffered(write_stream),
12748            SetTrustLineFlagsResult::SetTrustLineFlagsInvalidState =>
12749                SetTrustLineFlagsResultCode::SetTrustLineFlagsInvalidState.to_xdr_buffered(write_stream),
12750            SetTrustLineFlagsResult::SetTrustLineFlagsLowReserve =>
12751                SetTrustLineFlagsResultCode::SetTrustLineFlagsLowReserve.to_xdr_buffered(write_stream),
12752        }
12753    }
12754
12755    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12756        match SetTrustLineFlagsResultCode::from_xdr_buffered(read_stream)? {
12757            SetTrustLineFlagsResultCode::SetTrustLineFlagsSuccess =>
12758                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsSuccess),
12759            SetTrustLineFlagsResultCode::SetTrustLineFlagsMalformed =>
12760                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsMalformed),
12761            SetTrustLineFlagsResultCode::SetTrustLineFlagsNoTrustLine =>
12762                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsNoTrustLine),
12763            SetTrustLineFlagsResultCode::SetTrustLineFlagsCantRevoke =>
12764                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsCantRevoke),
12765            SetTrustLineFlagsResultCode::SetTrustLineFlagsInvalidState =>
12766                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsInvalidState),
12767            SetTrustLineFlagsResultCode::SetTrustLineFlagsLowReserve =>
12768                Ok(SetTrustLineFlagsResult::SetTrustLineFlagsLowReserve),
12769        }
12770    }
12771}
12772
12773#[allow(dead_code)]
12775#[derive(Debug, Clone, Eq, PartialEq)]
12776pub enum LiquidityPoolDepositResult {
12777    LiquidityPoolDepositSuccess,
12778    LiquidityPoolDepositMalformed,
12779    LiquidityPoolDepositNoTrust,
12780    LiquidityPoolDepositNotAuthorized,
12781    LiquidityPoolDepositUnderfunded,
12782    LiquidityPoolDepositLineFull,
12783    LiquidityPoolDepositBadPrice,
12784    LiquidityPoolDepositPoolFull,
12785}
12786
12787impl XdrCodec for LiquidityPoolDepositResult {
12788    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12789        match self {
12790            LiquidityPoolDepositResult::LiquidityPoolDepositSuccess =>
12791                LiquidityPoolDepositResultCode::LiquidityPoolDepositSuccess.to_xdr_buffered(write_stream),
12792            LiquidityPoolDepositResult::LiquidityPoolDepositMalformed =>
12793                LiquidityPoolDepositResultCode::LiquidityPoolDepositMalformed.to_xdr_buffered(write_stream),
12794            LiquidityPoolDepositResult::LiquidityPoolDepositNoTrust =>
12795                LiquidityPoolDepositResultCode::LiquidityPoolDepositNoTrust.to_xdr_buffered(write_stream),
12796            LiquidityPoolDepositResult::LiquidityPoolDepositNotAuthorized =>
12797                LiquidityPoolDepositResultCode::LiquidityPoolDepositNotAuthorized.to_xdr_buffered(write_stream),
12798            LiquidityPoolDepositResult::LiquidityPoolDepositUnderfunded =>
12799                LiquidityPoolDepositResultCode::LiquidityPoolDepositUnderfunded.to_xdr_buffered(write_stream),
12800            LiquidityPoolDepositResult::LiquidityPoolDepositLineFull =>
12801                LiquidityPoolDepositResultCode::LiquidityPoolDepositLineFull.to_xdr_buffered(write_stream),
12802            LiquidityPoolDepositResult::LiquidityPoolDepositBadPrice =>
12803                LiquidityPoolDepositResultCode::LiquidityPoolDepositBadPrice.to_xdr_buffered(write_stream),
12804            LiquidityPoolDepositResult::LiquidityPoolDepositPoolFull =>
12805                LiquidityPoolDepositResultCode::LiquidityPoolDepositPoolFull.to_xdr_buffered(write_stream),
12806        }
12807    }
12808
12809    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12810        match LiquidityPoolDepositResultCode::from_xdr_buffered(read_stream)? {
12811            LiquidityPoolDepositResultCode::LiquidityPoolDepositSuccess =>
12812                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositSuccess),
12813            LiquidityPoolDepositResultCode::LiquidityPoolDepositMalformed =>
12814                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositMalformed),
12815            LiquidityPoolDepositResultCode::LiquidityPoolDepositNoTrust =>
12816                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositNoTrust),
12817            LiquidityPoolDepositResultCode::LiquidityPoolDepositNotAuthorized =>
12818                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositNotAuthorized),
12819            LiquidityPoolDepositResultCode::LiquidityPoolDepositUnderfunded =>
12820                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositUnderfunded),
12821            LiquidityPoolDepositResultCode::LiquidityPoolDepositLineFull =>
12822                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositLineFull),
12823            LiquidityPoolDepositResultCode::LiquidityPoolDepositBadPrice =>
12824                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositBadPrice),
12825            LiquidityPoolDepositResultCode::LiquidityPoolDepositPoolFull =>
12826                Ok(LiquidityPoolDepositResult::LiquidityPoolDepositPoolFull),
12827        }
12828    }
12829}
12830
12831#[allow(dead_code)]
12833#[derive(Debug, Clone, Eq, PartialEq)]
12834pub enum LiquidityPoolWithdrawResult {
12835    LiquidityPoolWithdrawSuccess,
12836    LiquidityPoolWithdrawMalformed,
12837    LiquidityPoolWithdrawNoTrust,
12838    LiquidityPoolWithdrawUnderfunded,
12839    LiquidityPoolWithdrawLineFull,
12840    LiquidityPoolWithdrawUnderMinimum,
12841}
12842
12843impl XdrCodec for LiquidityPoolWithdrawResult {
12844    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12845        match self {
12846            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawSuccess =>
12847                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawSuccess.to_xdr_buffered(write_stream),
12848            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawMalformed =>
12849                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawMalformed.to_xdr_buffered(write_stream),
12850            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawNoTrust =>
12851                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawNoTrust.to_xdr_buffered(write_stream),
12852            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawUnderfunded =>
12853                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderfunded.to_xdr_buffered(write_stream),
12854            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawLineFull =>
12855                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawLineFull.to_xdr_buffered(write_stream),
12856            LiquidityPoolWithdrawResult::LiquidityPoolWithdrawUnderMinimum =>
12857                LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderMinimum.to_xdr_buffered(write_stream),
12858        }
12859    }
12860
12861    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12862        match LiquidityPoolWithdrawResultCode::from_xdr_buffered(read_stream)? {
12863            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawSuccess =>
12864                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawSuccess),
12865            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawMalformed =>
12866                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawMalformed),
12867            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawNoTrust =>
12868                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawNoTrust),
12869            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderfunded =>
12870                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawUnderfunded),
12871            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawLineFull =>
12872                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawLineFull),
12873            LiquidityPoolWithdrawResultCode::LiquidityPoolWithdrawUnderMinimum =>
12874                Ok(LiquidityPoolWithdrawResult::LiquidityPoolWithdrawUnderMinimum),
12875        }
12876    }
12877}
12878
12879#[allow(dead_code)]
12881#[derive(Debug, Clone, Eq, PartialEq)]
12882pub enum InvokeHostFunctionResult {
12883    InvokeHostFunctionSuccess(Hash),
12884    InvokeHostFunctionMalformed,
12885    InvokeHostFunctionTrapped,
12886    InvokeHostFunctionResourceLimitExceeded,
12887    InvokeHostFunctionEntryArchived,
12888    InvokeHostFunctionInsufficientRefundableFee,
12889}
12890
12891impl XdrCodec for InvokeHostFunctionResult {
12892    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12893        match self {
12894            InvokeHostFunctionResult::InvokeHostFunctionSuccess(value) => {
12895                InvokeHostFunctionResultCode::InvokeHostFunctionSuccess.to_xdr_buffered(write_stream);
12896                value.to_xdr_buffered(write_stream)
12897            },
12898            InvokeHostFunctionResult::InvokeHostFunctionMalformed =>
12899                InvokeHostFunctionResultCode::InvokeHostFunctionMalformed.to_xdr_buffered(write_stream),
12900            InvokeHostFunctionResult::InvokeHostFunctionTrapped =>
12901                InvokeHostFunctionResultCode::InvokeHostFunctionTrapped.to_xdr_buffered(write_stream),
12902            InvokeHostFunctionResult::InvokeHostFunctionResourceLimitExceeded =>
12903                InvokeHostFunctionResultCode::InvokeHostFunctionResourceLimitExceeded.to_xdr_buffered(write_stream),
12904            InvokeHostFunctionResult::InvokeHostFunctionEntryArchived =>
12905                InvokeHostFunctionResultCode::InvokeHostFunctionEntryArchived.to_xdr_buffered(write_stream),
12906            InvokeHostFunctionResult::InvokeHostFunctionInsufficientRefundableFee =>
12907                InvokeHostFunctionResultCode::InvokeHostFunctionInsufficientRefundableFee.to_xdr_buffered(write_stream),
12908        }
12909    }
12910
12911    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12912        match InvokeHostFunctionResultCode::from_xdr_buffered(read_stream)? {
12913            InvokeHostFunctionResultCode::InvokeHostFunctionSuccess =>
12914                Ok(InvokeHostFunctionResult::InvokeHostFunctionSuccess(Hash::from_xdr_buffered(read_stream)?)),
12915            InvokeHostFunctionResultCode::InvokeHostFunctionMalformed =>
12916                Ok(InvokeHostFunctionResult::InvokeHostFunctionMalformed),
12917            InvokeHostFunctionResultCode::InvokeHostFunctionTrapped =>
12918                Ok(InvokeHostFunctionResult::InvokeHostFunctionTrapped),
12919            InvokeHostFunctionResultCode::InvokeHostFunctionResourceLimitExceeded =>
12920                Ok(InvokeHostFunctionResult::InvokeHostFunctionResourceLimitExceeded),
12921            InvokeHostFunctionResultCode::InvokeHostFunctionEntryArchived =>
12922                Ok(InvokeHostFunctionResult::InvokeHostFunctionEntryArchived),
12923            InvokeHostFunctionResultCode::InvokeHostFunctionInsufficientRefundableFee =>
12924                Ok(InvokeHostFunctionResult::InvokeHostFunctionInsufficientRefundableFee),
12925        }
12926    }
12927}
12928
12929#[allow(dead_code)]
12931#[derive(Debug, Clone, Eq, PartialEq)]
12932pub enum ExtendFootprintTtlResult {
12933    ExtendFootprintTtlSuccess,
12934    ExtendFootprintTtlMalformed,
12935    ExtendFootprintTtlResourceLimitExceeded,
12936    ExtendFootprintTtlInsufficientRefundableFee,
12937}
12938
12939impl XdrCodec for ExtendFootprintTtlResult {
12940    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12941        match self {
12942            ExtendFootprintTtlResult::ExtendFootprintTtlSuccess =>
12943                ExtendFootprintTtlResultCode::ExtendFootprintTtlSuccess.to_xdr_buffered(write_stream),
12944            ExtendFootprintTtlResult::ExtendFootprintTtlMalformed =>
12945                ExtendFootprintTtlResultCode::ExtendFootprintTtlMalformed.to_xdr_buffered(write_stream),
12946            ExtendFootprintTtlResult::ExtendFootprintTtlResourceLimitExceeded =>
12947                ExtendFootprintTtlResultCode::ExtendFootprintTtlResourceLimitExceeded.to_xdr_buffered(write_stream),
12948            ExtendFootprintTtlResult::ExtendFootprintTtlInsufficientRefundableFee =>
12949                ExtendFootprintTtlResultCode::ExtendFootprintTtlInsufficientRefundableFee.to_xdr_buffered(write_stream),
12950        }
12951    }
12952
12953    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12954        match ExtendFootprintTtlResultCode::from_xdr_buffered(read_stream)? {
12955            ExtendFootprintTtlResultCode::ExtendFootprintTtlSuccess =>
12956                Ok(ExtendFootprintTtlResult::ExtendFootprintTtlSuccess),
12957            ExtendFootprintTtlResultCode::ExtendFootprintTtlMalformed =>
12958                Ok(ExtendFootprintTtlResult::ExtendFootprintTtlMalformed),
12959            ExtendFootprintTtlResultCode::ExtendFootprintTtlResourceLimitExceeded =>
12960                Ok(ExtendFootprintTtlResult::ExtendFootprintTtlResourceLimitExceeded),
12961            ExtendFootprintTtlResultCode::ExtendFootprintTtlInsufficientRefundableFee =>
12962                Ok(ExtendFootprintTtlResult::ExtendFootprintTtlInsufficientRefundableFee),
12963        }
12964    }
12965}
12966
12967#[allow(dead_code)]
12969#[derive(Debug, Clone, Eq, PartialEq)]
12970pub enum RestoreFootprintResult {
12971    RestoreFootprintSuccess,
12972    RestoreFootprintMalformed,
12973    RestoreFootprintResourceLimitExceeded,
12974    RestoreFootprintInsufficientRefundableFee,
12975}
12976
12977impl XdrCodec for RestoreFootprintResult {
12978    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
12979        match self {
12980            RestoreFootprintResult::RestoreFootprintSuccess =>
12981                RestoreFootprintResultCode::RestoreFootprintSuccess.to_xdr_buffered(write_stream),
12982            RestoreFootprintResult::RestoreFootprintMalformed =>
12983                RestoreFootprintResultCode::RestoreFootprintMalformed.to_xdr_buffered(write_stream),
12984            RestoreFootprintResult::RestoreFootprintResourceLimitExceeded =>
12985                RestoreFootprintResultCode::RestoreFootprintResourceLimitExceeded.to_xdr_buffered(write_stream),
12986            RestoreFootprintResult::RestoreFootprintInsufficientRefundableFee =>
12987                RestoreFootprintResultCode::RestoreFootprintInsufficientRefundableFee.to_xdr_buffered(write_stream),
12988        }
12989    }
12990
12991    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
12992        match RestoreFootprintResultCode::from_xdr_buffered(read_stream)? {
12993            RestoreFootprintResultCode::RestoreFootprintSuccess => Ok(RestoreFootprintResult::RestoreFootprintSuccess),
12994            RestoreFootprintResultCode::RestoreFootprintMalformed =>
12995                Ok(RestoreFootprintResult::RestoreFootprintMalformed),
12996            RestoreFootprintResultCode::RestoreFootprintResourceLimitExceeded =>
12997                Ok(RestoreFootprintResult::RestoreFootprintResourceLimitExceeded),
12998            RestoreFootprintResultCode::RestoreFootprintInsufficientRefundableFee =>
12999                Ok(RestoreFootprintResult::RestoreFootprintInsufficientRefundableFee),
13000        }
13001    }
13002}
13003
13004#[allow(dead_code)]
13006#[derive(Debug, Clone, Eq, PartialEq)]
13007pub enum OperationResultTr {
13008    CreateAccount(CreateAccountResult),
13009    Payment(PaymentResult),
13010    PathPaymentStrictReceive(PathPaymentStrictReceiveResult),
13011    ManageSellOffer(ManageSellOfferResult),
13012    CreatePassiveSellOffer(ManageSellOfferResult),
13013    SetOptions(SetOptionsResult),
13014    ChangeTrust(ChangeTrustResult),
13015    AllowTrust(AllowTrustResult),
13016    AccountMerge(AccountMergeResult),
13017    Inflation(InflationResult),
13018    ManageData(ManageDataResult),
13019    BumpSequence(BumpSequenceResult),
13020    ManageBuyOffer(ManageBuyOfferResult),
13021    PathPaymentStrictSend(PathPaymentStrictSendResult),
13022    CreateClaimableBalance(CreateClaimableBalanceResult),
13023    ClaimClaimableBalance(ClaimClaimableBalanceResult),
13024    BeginSponsoringFutureReserves(BeginSponsoringFutureReservesResult),
13025    EndSponsoringFutureReserves(EndSponsoringFutureReservesResult),
13026    RevokeSponsorship(RevokeSponsorshipResult),
13027    Clawback(ClawbackResult),
13028    ClawbackClaimableBalance(ClawbackClaimableBalanceResult),
13029    SetTrustLineFlags(SetTrustLineFlagsResult),
13030    LiquidityPoolDeposit(LiquidityPoolDepositResult),
13031    LiquidityPoolWithdraw(LiquidityPoolWithdrawResult),
13032    InvokeHostFunction(InvokeHostFunctionResult),
13033    ExtendFootprintTtl(ExtendFootprintTtlResult),
13034    RestoreFootprint(RestoreFootprintResult),
13035}
13036
13037impl XdrCodec for OperationResultTr {
13038    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13039        match self {
13040            OperationResultTr::CreateAccount(value) => {
13041                OperationType::CreateAccount.to_xdr_buffered(write_stream);
13042                value.to_xdr_buffered(write_stream)
13043            },
13044            OperationResultTr::Payment(value) => {
13045                OperationType::Payment.to_xdr_buffered(write_stream);
13046                value.to_xdr_buffered(write_stream)
13047            },
13048            OperationResultTr::PathPaymentStrictReceive(value) => {
13049                OperationType::PathPaymentStrictReceive.to_xdr_buffered(write_stream);
13050                value.to_xdr_buffered(write_stream)
13051            },
13052            OperationResultTr::ManageSellOffer(value) => {
13053                OperationType::ManageSellOffer.to_xdr_buffered(write_stream);
13054                value.to_xdr_buffered(write_stream)
13055            },
13056            OperationResultTr::CreatePassiveSellOffer(value) => {
13057                OperationType::CreatePassiveSellOffer.to_xdr_buffered(write_stream);
13058                value.to_xdr_buffered(write_stream)
13059            },
13060            OperationResultTr::SetOptions(value) => {
13061                OperationType::SetOptions.to_xdr_buffered(write_stream);
13062                value.to_xdr_buffered(write_stream)
13063            },
13064            OperationResultTr::ChangeTrust(value) => {
13065                OperationType::ChangeTrust.to_xdr_buffered(write_stream);
13066                value.to_xdr_buffered(write_stream)
13067            },
13068            OperationResultTr::AllowTrust(value) => {
13069                OperationType::AllowTrust.to_xdr_buffered(write_stream);
13070                value.to_xdr_buffered(write_stream)
13071            },
13072            OperationResultTr::AccountMerge(value) => {
13073                OperationType::AccountMerge.to_xdr_buffered(write_stream);
13074                value.to_xdr_buffered(write_stream)
13075            },
13076            OperationResultTr::Inflation(value) => {
13077                OperationType::Inflation.to_xdr_buffered(write_stream);
13078                value.to_xdr_buffered(write_stream)
13079            },
13080            OperationResultTr::ManageData(value) => {
13081                OperationType::ManageData.to_xdr_buffered(write_stream);
13082                value.to_xdr_buffered(write_stream)
13083            },
13084            OperationResultTr::BumpSequence(value) => {
13085                OperationType::BumpSequence.to_xdr_buffered(write_stream);
13086                value.to_xdr_buffered(write_stream)
13087            },
13088            OperationResultTr::ManageBuyOffer(value) => {
13089                OperationType::ManageBuyOffer.to_xdr_buffered(write_stream);
13090                value.to_xdr_buffered(write_stream)
13091            },
13092            OperationResultTr::PathPaymentStrictSend(value) => {
13093                OperationType::PathPaymentStrictSend.to_xdr_buffered(write_stream);
13094                value.to_xdr_buffered(write_stream)
13095            },
13096            OperationResultTr::CreateClaimableBalance(value) => {
13097                OperationType::CreateClaimableBalance.to_xdr_buffered(write_stream);
13098                value.to_xdr_buffered(write_stream)
13099            },
13100            OperationResultTr::ClaimClaimableBalance(value) => {
13101                OperationType::ClaimClaimableBalance.to_xdr_buffered(write_stream);
13102                value.to_xdr_buffered(write_stream)
13103            },
13104            OperationResultTr::BeginSponsoringFutureReserves(value) => {
13105                OperationType::BeginSponsoringFutureReserves.to_xdr_buffered(write_stream);
13106                value.to_xdr_buffered(write_stream)
13107            },
13108            OperationResultTr::EndSponsoringFutureReserves(value) => {
13109                OperationType::EndSponsoringFutureReserves.to_xdr_buffered(write_stream);
13110                value.to_xdr_buffered(write_stream)
13111            },
13112            OperationResultTr::RevokeSponsorship(value) => {
13113                OperationType::RevokeSponsorship.to_xdr_buffered(write_stream);
13114                value.to_xdr_buffered(write_stream)
13115            },
13116            OperationResultTr::Clawback(value) => {
13117                OperationType::Clawback.to_xdr_buffered(write_stream);
13118                value.to_xdr_buffered(write_stream)
13119            },
13120            OperationResultTr::ClawbackClaimableBalance(value) => {
13121                OperationType::ClawbackClaimableBalance.to_xdr_buffered(write_stream);
13122                value.to_xdr_buffered(write_stream)
13123            },
13124            OperationResultTr::SetTrustLineFlags(value) => {
13125                OperationType::SetTrustLineFlags.to_xdr_buffered(write_stream);
13126                value.to_xdr_buffered(write_stream)
13127            },
13128            OperationResultTr::LiquidityPoolDeposit(value) => {
13129                OperationType::LiquidityPoolDeposit.to_xdr_buffered(write_stream);
13130                value.to_xdr_buffered(write_stream)
13131            },
13132            OperationResultTr::LiquidityPoolWithdraw(value) => {
13133                OperationType::LiquidityPoolWithdraw.to_xdr_buffered(write_stream);
13134                value.to_xdr_buffered(write_stream)
13135            },
13136            OperationResultTr::InvokeHostFunction(value) => {
13137                OperationType::InvokeHostFunction.to_xdr_buffered(write_stream);
13138                value.to_xdr_buffered(write_stream)
13139            },
13140            OperationResultTr::ExtendFootprintTtl(value) => {
13141                OperationType::ExtendFootprintTtl.to_xdr_buffered(write_stream);
13142                value.to_xdr_buffered(write_stream)
13143            },
13144            OperationResultTr::RestoreFootprint(value) => {
13145                OperationType::RestoreFootprint.to_xdr_buffered(write_stream);
13146                value.to_xdr_buffered(write_stream)
13147            },
13148        }
13149    }
13150
13151    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13152        match OperationType::from_xdr_buffered(read_stream)? {
13153            OperationType::CreateAccount =>
13154                Ok(OperationResultTr::CreateAccount(CreateAccountResult::from_xdr_buffered(read_stream)?)),
13155            OperationType::Payment => Ok(OperationResultTr::Payment(PaymentResult::from_xdr_buffered(read_stream)?)),
13156            OperationType::PathPaymentStrictReceive => Ok(OperationResultTr::PathPaymentStrictReceive(
13157                PathPaymentStrictReceiveResult::from_xdr_buffered(read_stream)?,
13158            )),
13159            OperationType::ManageSellOffer =>
13160                Ok(OperationResultTr::ManageSellOffer(ManageSellOfferResult::from_xdr_buffered(read_stream)?)),
13161            OperationType::CreatePassiveSellOffer =>
13162                Ok(OperationResultTr::CreatePassiveSellOffer(ManageSellOfferResult::from_xdr_buffered(read_stream)?)),
13163            OperationType::SetOptions =>
13164                Ok(OperationResultTr::SetOptions(SetOptionsResult::from_xdr_buffered(read_stream)?)),
13165            OperationType::ChangeTrust =>
13166                Ok(OperationResultTr::ChangeTrust(ChangeTrustResult::from_xdr_buffered(read_stream)?)),
13167            OperationType::AllowTrust =>
13168                Ok(OperationResultTr::AllowTrust(AllowTrustResult::from_xdr_buffered(read_stream)?)),
13169            OperationType::AccountMerge =>
13170                Ok(OperationResultTr::AccountMerge(AccountMergeResult::from_xdr_buffered(read_stream)?)),
13171            OperationType::Inflation =>
13172                Ok(OperationResultTr::Inflation(InflationResult::from_xdr_buffered(read_stream)?)),
13173            OperationType::ManageData =>
13174                Ok(OperationResultTr::ManageData(ManageDataResult::from_xdr_buffered(read_stream)?)),
13175            OperationType::BumpSequence =>
13176                Ok(OperationResultTr::BumpSequence(BumpSequenceResult::from_xdr_buffered(read_stream)?)),
13177            OperationType::ManageBuyOffer =>
13178                Ok(OperationResultTr::ManageBuyOffer(ManageBuyOfferResult::from_xdr_buffered(read_stream)?)),
13179            OperationType::PathPaymentStrictSend => Ok(OperationResultTr::PathPaymentStrictSend(
13180                PathPaymentStrictSendResult::from_xdr_buffered(read_stream)?,
13181            )),
13182            OperationType::CreateClaimableBalance => Ok(OperationResultTr::CreateClaimableBalance(
13183                CreateClaimableBalanceResult::from_xdr_buffered(read_stream)?,
13184            )),
13185            OperationType::ClaimClaimableBalance => Ok(OperationResultTr::ClaimClaimableBalance(
13186                ClaimClaimableBalanceResult::from_xdr_buffered(read_stream)?,
13187            )),
13188            OperationType::BeginSponsoringFutureReserves => Ok(OperationResultTr::BeginSponsoringFutureReserves(
13189                BeginSponsoringFutureReservesResult::from_xdr_buffered(read_stream)?,
13190            )),
13191            OperationType::EndSponsoringFutureReserves => Ok(OperationResultTr::EndSponsoringFutureReserves(
13192                EndSponsoringFutureReservesResult::from_xdr_buffered(read_stream)?,
13193            )),
13194            OperationType::RevokeSponsorship =>
13195                Ok(OperationResultTr::RevokeSponsorship(RevokeSponsorshipResult::from_xdr_buffered(read_stream)?)),
13196            OperationType::Clawback => Ok(OperationResultTr::Clawback(ClawbackResult::from_xdr_buffered(read_stream)?)),
13197            OperationType::ClawbackClaimableBalance => Ok(OperationResultTr::ClawbackClaimableBalance(
13198                ClawbackClaimableBalanceResult::from_xdr_buffered(read_stream)?,
13199            )),
13200            OperationType::SetTrustLineFlags =>
13201                Ok(OperationResultTr::SetTrustLineFlags(SetTrustLineFlagsResult::from_xdr_buffered(read_stream)?)),
13202            OperationType::LiquidityPoolDeposit =>
13203                Ok(OperationResultTr::LiquidityPoolDeposit(LiquidityPoolDepositResult::from_xdr_buffered(read_stream)?)),
13204            OperationType::LiquidityPoolWithdraw => Ok(OperationResultTr::LiquidityPoolWithdraw(
13205                LiquidityPoolWithdrawResult::from_xdr_buffered(read_stream)?,
13206            )),
13207            OperationType::InvokeHostFunction =>
13208                Ok(OperationResultTr::InvokeHostFunction(InvokeHostFunctionResult::from_xdr_buffered(read_stream)?)),
13209            OperationType::ExtendFootprintTtl =>
13210                Ok(OperationResultTr::ExtendFootprintTtl(ExtendFootprintTtlResult::from_xdr_buffered(read_stream)?)),
13211            OperationType::RestoreFootprint =>
13212                Ok(OperationResultTr::RestoreFootprint(RestoreFootprintResult::from_xdr_buffered(read_stream)?)),
13213        }
13214    }
13215}
13216
13217#[allow(dead_code)]
13219#[derive(Debug, Clone, Eq, PartialEq)]
13220pub enum OperationResult {
13221    OpInner(OperationResultTr),
13222    OpBadAuth,
13223    OpNoAccount,
13224    OpNotSupported,
13225    OpTooManySubentries,
13226    OpExceededWorkLimit,
13227    OpTooManySponsoring,
13228}
13229
13230impl XdrCodec for OperationResult {
13231    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13232        match self {
13233            OperationResult::OpInner(value) => {
13234                OperationResultCode::OpInner.to_xdr_buffered(write_stream);
13235                value.to_xdr_buffered(write_stream)
13236            },
13237            OperationResult::OpBadAuth => OperationResultCode::OpBadAuth.to_xdr_buffered(write_stream),
13238            OperationResult::OpNoAccount => OperationResultCode::OpNoAccount.to_xdr_buffered(write_stream),
13239            OperationResult::OpNotSupported => OperationResultCode::OpNotSupported.to_xdr_buffered(write_stream),
13240            OperationResult::OpTooManySubentries =>
13241                OperationResultCode::OpTooManySubentries.to_xdr_buffered(write_stream),
13242            OperationResult::OpExceededWorkLimit =>
13243                OperationResultCode::OpExceededWorkLimit.to_xdr_buffered(write_stream),
13244            OperationResult::OpTooManySponsoring =>
13245                OperationResultCode::OpTooManySponsoring.to_xdr_buffered(write_stream),
13246        }
13247    }
13248
13249    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13250        match OperationResultCode::from_xdr_buffered(read_stream)? {
13251            OperationResultCode::OpInner =>
13252                Ok(OperationResult::OpInner(OperationResultTr::from_xdr_buffered(read_stream)?)),
13253            OperationResultCode::OpBadAuth => Ok(OperationResult::OpBadAuth),
13254            OperationResultCode::OpNoAccount => Ok(OperationResult::OpNoAccount),
13255            OperationResultCode::OpNotSupported => Ok(OperationResult::OpNotSupported),
13256            OperationResultCode::OpTooManySubentries => Ok(OperationResult::OpTooManySubentries),
13257            OperationResultCode::OpExceededWorkLimit => Ok(OperationResult::OpExceededWorkLimit),
13258            OperationResultCode::OpTooManySponsoring => Ok(OperationResult::OpTooManySponsoring),
13259        }
13260    }
13261}
13262
13263#[allow(dead_code)]
13265#[derive(Debug, Clone, Eq, PartialEq)]
13266pub enum InnerTransactionResultResult {
13267    TxSuccess(UnlimitedVarArray<OperationResult>),
13268    TxFailed(UnlimitedVarArray<OperationResult>),
13269    TxTooEarly,
13270    TxTooLate,
13271    TxMissingOperation,
13272    TxBadSeq,
13273    TxBadAuth,
13274    TxInsufficientBalance,
13275    TxNoAccount,
13276    TxInsufficientFee,
13277    TxBadAuthExtra,
13278    TxInternalError,
13279    TxNotSupported,
13280    TxBadSponsorship,
13281    TxBadMinSeqAgeOrGap,
13282    TxMalformed,
13283    TxSorobanInvalid,
13284    Default(TransactionResultCode),
13285}
13286
13287impl XdrCodec for InnerTransactionResultResult {
13288    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13289        match self {
13290            InnerTransactionResultResult::TxSuccess(value) => {
13291                TransactionResultCode::TxSuccess.to_xdr_buffered(write_stream);
13292                value.to_xdr_buffered(write_stream)
13293            },
13294            InnerTransactionResultResult::TxFailed(value) => {
13295                TransactionResultCode::TxFailed.to_xdr_buffered(write_stream);
13296                value.to_xdr_buffered(write_stream)
13297            },
13298            InnerTransactionResultResult::TxTooEarly => TransactionResultCode::TxTooEarly.to_xdr_buffered(write_stream),
13299            InnerTransactionResultResult::TxTooLate => TransactionResultCode::TxTooLate.to_xdr_buffered(write_stream),
13300            InnerTransactionResultResult::TxMissingOperation =>
13301                TransactionResultCode::TxMissingOperation.to_xdr_buffered(write_stream),
13302            InnerTransactionResultResult::TxBadSeq => TransactionResultCode::TxBadSeq.to_xdr_buffered(write_stream),
13303            InnerTransactionResultResult::TxBadAuth => TransactionResultCode::TxBadAuth.to_xdr_buffered(write_stream),
13304            InnerTransactionResultResult::TxInsufficientBalance =>
13305                TransactionResultCode::TxInsufficientBalance.to_xdr_buffered(write_stream),
13306            InnerTransactionResultResult::TxNoAccount =>
13307                TransactionResultCode::TxNoAccount.to_xdr_buffered(write_stream),
13308            InnerTransactionResultResult::TxInsufficientFee =>
13309                TransactionResultCode::TxInsufficientFee.to_xdr_buffered(write_stream),
13310            InnerTransactionResultResult::TxBadAuthExtra =>
13311                TransactionResultCode::TxBadAuthExtra.to_xdr_buffered(write_stream),
13312            InnerTransactionResultResult::TxInternalError =>
13313                TransactionResultCode::TxInternalError.to_xdr_buffered(write_stream),
13314            InnerTransactionResultResult::TxNotSupported =>
13315                TransactionResultCode::TxNotSupported.to_xdr_buffered(write_stream),
13316            InnerTransactionResultResult::TxBadSponsorship =>
13317                TransactionResultCode::TxBadSponsorship.to_xdr_buffered(write_stream),
13318            InnerTransactionResultResult::TxBadMinSeqAgeOrGap =>
13319                TransactionResultCode::TxBadMinSeqAgeOrGap.to_xdr_buffered(write_stream),
13320            InnerTransactionResultResult::TxMalformed =>
13321                TransactionResultCode::TxMalformed.to_xdr_buffered(write_stream),
13322            InnerTransactionResultResult::TxSorobanInvalid =>
13323                TransactionResultCode::TxSorobanInvalid.to_xdr_buffered(write_stream),
13324            InnerTransactionResultResult::Default(code) => code.to_xdr_buffered(write_stream),
13325        }
13326    }
13327
13328    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13329        match TransactionResultCode::from_xdr_buffered(read_stream)? {
13330            TransactionResultCode::TxSuccess =>
13331                Ok(InnerTransactionResultResult::TxSuccess(UnlimitedVarArray::<OperationResult>::from_xdr_buffered(
13332                    read_stream,
13333                )?)),
13334            TransactionResultCode::TxFailed =>
13335                Ok(InnerTransactionResultResult::TxFailed(UnlimitedVarArray::<OperationResult>::from_xdr_buffered(
13336                    read_stream,
13337                )?)),
13338            TransactionResultCode::TxTooEarly => Ok(InnerTransactionResultResult::TxTooEarly),
13339            TransactionResultCode::TxTooLate => Ok(InnerTransactionResultResult::TxTooLate),
13340            TransactionResultCode::TxMissingOperation => Ok(InnerTransactionResultResult::TxMissingOperation),
13341            TransactionResultCode::TxBadSeq => Ok(InnerTransactionResultResult::TxBadSeq),
13342            TransactionResultCode::TxBadAuth => Ok(InnerTransactionResultResult::TxBadAuth),
13343            TransactionResultCode::TxInsufficientBalance => Ok(InnerTransactionResultResult::TxInsufficientBalance),
13344            TransactionResultCode::TxNoAccount => Ok(InnerTransactionResultResult::TxNoAccount),
13345            TransactionResultCode::TxInsufficientFee => Ok(InnerTransactionResultResult::TxInsufficientFee),
13346            TransactionResultCode::TxBadAuthExtra => Ok(InnerTransactionResultResult::TxBadAuthExtra),
13347            TransactionResultCode::TxInternalError => Ok(InnerTransactionResultResult::TxInternalError),
13348            TransactionResultCode::TxNotSupported => Ok(InnerTransactionResultResult::TxNotSupported),
13349            TransactionResultCode::TxBadSponsorship => Ok(InnerTransactionResultResult::TxBadSponsorship),
13350            TransactionResultCode::TxBadMinSeqAgeOrGap => Ok(InnerTransactionResultResult::TxBadMinSeqAgeOrGap),
13351            TransactionResultCode::TxMalformed => Ok(InnerTransactionResultResult::TxMalformed),
13352            TransactionResultCode::TxSorobanInvalid => Ok(InnerTransactionResultResult::TxSorobanInvalid),
13353            code => Ok(InnerTransactionResultResult::Default(code)),
13354        }
13355    }
13356}
13357
13358#[allow(dead_code)]
13360#[derive(Debug, Clone, Eq, PartialEq)]
13361pub enum InnerTransactionResultExt {
13362    V0,
13363    Default(i32),
13364}
13365
13366impl XdrCodec for InnerTransactionResultExt {
13367    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13368        match self {
13369            InnerTransactionResultExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
13370            InnerTransactionResultExt::Default(code) => code.to_xdr_buffered(write_stream),
13371        }
13372    }
13373
13374    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13375        match i32::from_xdr_buffered(read_stream)? {
13376            0 => Ok(InnerTransactionResultExt::V0),
13377            code => Ok(InnerTransactionResultExt::Default(code)),
13378        }
13379    }
13380}
13381
13382#[allow(dead_code)]
13384#[derive(Debug, Clone, Eq, PartialEq)]
13385pub enum TransactionResultResult {
13386    TxFeeBumpInnerSuccess(InnerTransactionResultPair),
13387    TxFeeBumpInnerFailed(InnerTransactionResultPair),
13388    TxSuccess(UnlimitedVarArray<OperationResult>),
13389    TxFailed(UnlimitedVarArray<OperationResult>),
13390    TxTooEarly,
13391    TxTooLate,
13392    TxMissingOperation,
13393    TxBadSeq,
13394    TxBadAuth,
13395    TxInsufficientBalance,
13396    TxNoAccount,
13397    TxInsufficientFee,
13398    TxBadAuthExtra,
13399    TxInternalError,
13400    TxNotSupported,
13401    TxBadSponsorship,
13402    TxBadMinSeqAgeOrGap,
13403    TxMalformed,
13404    TxSorobanInvalid,
13405}
13406
13407impl XdrCodec for TransactionResultResult {
13408    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13409        match self {
13410            TransactionResultResult::TxFeeBumpInnerSuccess(value) => {
13411                TransactionResultCode::TxFeeBumpInnerSuccess.to_xdr_buffered(write_stream);
13412                value.to_xdr_buffered(write_stream)
13413            },
13414            TransactionResultResult::TxFeeBumpInnerFailed(value) => {
13415                TransactionResultCode::TxFeeBumpInnerFailed.to_xdr_buffered(write_stream);
13416                value.to_xdr_buffered(write_stream)
13417            },
13418            TransactionResultResult::TxSuccess(value) => {
13419                TransactionResultCode::TxSuccess.to_xdr_buffered(write_stream);
13420                value.to_xdr_buffered(write_stream)
13421            },
13422            TransactionResultResult::TxFailed(value) => {
13423                TransactionResultCode::TxFailed.to_xdr_buffered(write_stream);
13424                value.to_xdr_buffered(write_stream)
13425            },
13426            TransactionResultResult::TxTooEarly => TransactionResultCode::TxTooEarly.to_xdr_buffered(write_stream),
13427            TransactionResultResult::TxTooLate => TransactionResultCode::TxTooLate.to_xdr_buffered(write_stream),
13428            TransactionResultResult::TxMissingOperation =>
13429                TransactionResultCode::TxMissingOperation.to_xdr_buffered(write_stream),
13430            TransactionResultResult::TxBadSeq => TransactionResultCode::TxBadSeq.to_xdr_buffered(write_stream),
13431            TransactionResultResult::TxBadAuth => TransactionResultCode::TxBadAuth.to_xdr_buffered(write_stream),
13432            TransactionResultResult::TxInsufficientBalance =>
13433                TransactionResultCode::TxInsufficientBalance.to_xdr_buffered(write_stream),
13434            TransactionResultResult::TxNoAccount => TransactionResultCode::TxNoAccount.to_xdr_buffered(write_stream),
13435            TransactionResultResult::TxInsufficientFee =>
13436                TransactionResultCode::TxInsufficientFee.to_xdr_buffered(write_stream),
13437            TransactionResultResult::TxBadAuthExtra =>
13438                TransactionResultCode::TxBadAuthExtra.to_xdr_buffered(write_stream),
13439            TransactionResultResult::TxInternalError =>
13440                TransactionResultCode::TxInternalError.to_xdr_buffered(write_stream),
13441            TransactionResultResult::TxNotSupported =>
13442                TransactionResultCode::TxNotSupported.to_xdr_buffered(write_stream),
13443            TransactionResultResult::TxBadSponsorship =>
13444                TransactionResultCode::TxBadSponsorship.to_xdr_buffered(write_stream),
13445            TransactionResultResult::TxBadMinSeqAgeOrGap =>
13446                TransactionResultCode::TxBadMinSeqAgeOrGap.to_xdr_buffered(write_stream),
13447            TransactionResultResult::TxMalformed => TransactionResultCode::TxMalformed.to_xdr_buffered(write_stream),
13448            TransactionResultResult::TxSorobanInvalid =>
13449                TransactionResultCode::TxSorobanInvalid.to_xdr_buffered(write_stream),
13450        }
13451    }
13452
13453    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13454        match TransactionResultCode::from_xdr_buffered(read_stream)? {
13455            TransactionResultCode::TxFeeBumpInnerSuccess => Ok(TransactionResultResult::TxFeeBumpInnerSuccess(
13456                InnerTransactionResultPair::from_xdr_buffered(read_stream)?,
13457            )),
13458            TransactionResultCode::TxFeeBumpInnerFailed => Ok(TransactionResultResult::TxFeeBumpInnerFailed(
13459                InnerTransactionResultPair::from_xdr_buffered(read_stream)?,
13460            )),
13461            TransactionResultCode::TxSuccess =>
13462                Ok(TransactionResultResult::TxSuccess(UnlimitedVarArray::<OperationResult>::from_xdr_buffered(
13463                    read_stream,
13464                )?)),
13465            TransactionResultCode::TxFailed =>
13466                Ok(TransactionResultResult::TxFailed(UnlimitedVarArray::<OperationResult>::from_xdr_buffered(
13467                    read_stream,
13468                )?)),
13469            TransactionResultCode::TxTooEarly => Ok(TransactionResultResult::TxTooEarly),
13470            TransactionResultCode::TxTooLate => Ok(TransactionResultResult::TxTooLate),
13471            TransactionResultCode::TxMissingOperation => Ok(TransactionResultResult::TxMissingOperation),
13472            TransactionResultCode::TxBadSeq => Ok(TransactionResultResult::TxBadSeq),
13473            TransactionResultCode::TxBadAuth => Ok(TransactionResultResult::TxBadAuth),
13474            TransactionResultCode::TxInsufficientBalance => Ok(TransactionResultResult::TxInsufficientBalance),
13475            TransactionResultCode::TxNoAccount => Ok(TransactionResultResult::TxNoAccount),
13476            TransactionResultCode::TxInsufficientFee => Ok(TransactionResultResult::TxInsufficientFee),
13477            TransactionResultCode::TxBadAuthExtra => Ok(TransactionResultResult::TxBadAuthExtra),
13478            TransactionResultCode::TxInternalError => Ok(TransactionResultResult::TxInternalError),
13479            TransactionResultCode::TxNotSupported => Ok(TransactionResultResult::TxNotSupported),
13480            TransactionResultCode::TxBadSponsorship => Ok(TransactionResultResult::TxBadSponsorship),
13481            TransactionResultCode::TxBadMinSeqAgeOrGap => Ok(TransactionResultResult::TxBadMinSeqAgeOrGap),
13482            TransactionResultCode::TxMalformed => Ok(TransactionResultResult::TxMalformed),
13483            TransactionResultCode::TxSorobanInvalid => Ok(TransactionResultResult::TxSorobanInvalid),
13484        }
13485    }
13486}
13487
13488#[allow(dead_code)]
13490#[derive(Debug, Clone, Eq, PartialEq)]
13491pub enum TransactionResultExt {
13492    V0,
13493    Default(i32),
13494}
13495
13496impl XdrCodec for TransactionResultExt {
13497    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13498        match self {
13499            TransactionResultExt::V0 => (0 as i32).to_xdr_buffered(write_stream),
13500            TransactionResultExt::Default(code) => code.to_xdr_buffered(write_stream),
13501        }
13502    }
13503
13504    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13505        match i32::from_xdr_buffered(read_stream)? {
13506            0 => Ok(TransactionResultExt::V0),
13507            code => Ok(TransactionResultExt::Default(code)),
13508        }
13509    }
13510}
13511
13512#[allow(dead_code)]
13514#[derive(Debug, Clone, Eq, PartialEq)]
13515pub enum ExtensionPoint {
13516    V0,
13517    Default(i32),
13518}
13519
13520impl XdrCodec for ExtensionPoint {
13521    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13522        match self {
13523            ExtensionPoint::V0 => (0 as i32).to_xdr_buffered(write_stream),
13524            ExtensionPoint::Default(code) => code.to_xdr_buffered(write_stream),
13525        }
13526    }
13527
13528    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13529        match i32::from_xdr_buffered(read_stream)? {
13530            0 => Ok(ExtensionPoint::V0),
13531            code => Ok(ExtensionPoint::Default(code)),
13532        }
13533    }
13534}
13535
13536#[allow(dead_code)]
13538#[derive(Debug, Clone, Eq, PartialEq)]
13539pub enum PublicKey {
13540    PublicKeyTypeEd25519(Uint256),
13541}
13542
13543impl XdrCodec for PublicKey {
13544    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13545        match self {
13546            PublicKey::PublicKeyTypeEd25519(value) => {
13547                PublicKeyType::PublicKeyTypeEd25519.to_xdr_buffered(write_stream);
13548                value.to_xdr_buffered(write_stream)
13549            },
13550        }
13551    }
13552
13553    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13554        match PublicKeyType::from_xdr_buffered(read_stream)? {
13555            PublicKeyType::PublicKeyTypeEd25519 =>
13556                Ok(PublicKey::PublicKeyTypeEd25519(Uint256::from_xdr_buffered(read_stream)?)),
13557        }
13558    }
13559}
13560
13561#[allow(dead_code)]
13563#[derive(Debug, Clone, Eq, PartialEq)]
13564pub enum SignerKey {
13565    SignerKeyTypeEd25519(Uint256),
13566    SignerKeyTypePreAuthTx(Uint256),
13567    SignerKeyTypeHashX(Uint256),
13568    SignerKeyTypeEd25519SignedPayload(SignerKeyEd25519SignedPayload),
13569}
13570
13571impl XdrCodec for SignerKey {
13572    fn to_xdr_buffered(&self, write_stream: &mut WriteStream) {
13573        match self {
13574            SignerKey::SignerKeyTypeEd25519(value) => {
13575                SignerKeyType::SignerKeyTypeEd25519.to_xdr_buffered(write_stream);
13576                value.to_xdr_buffered(write_stream)
13577            },
13578            SignerKey::SignerKeyTypePreAuthTx(value) => {
13579                SignerKeyType::SignerKeyTypePreAuthTx.to_xdr_buffered(write_stream);
13580                value.to_xdr_buffered(write_stream)
13581            },
13582            SignerKey::SignerKeyTypeHashX(value) => {
13583                SignerKeyType::SignerKeyTypeHashX.to_xdr_buffered(write_stream);
13584                value.to_xdr_buffered(write_stream)
13585            },
13586            SignerKey::SignerKeyTypeEd25519SignedPayload(value) => {
13587                SignerKeyType::SignerKeyTypeEd25519SignedPayload.to_xdr_buffered(write_stream);
13588                value.to_xdr_buffered(write_stream)
13589            },
13590        }
13591    }
13592
13593    fn from_xdr_buffered<T: AsRef<[u8]>>(read_stream: &mut ReadStream<T>) -> Result<Self, DecodeError> {
13594        match SignerKeyType::from_xdr_buffered(read_stream)? {
13595            SignerKeyType::SignerKeyTypeEd25519 =>
13596                Ok(SignerKey::SignerKeyTypeEd25519(Uint256::from_xdr_buffered(read_stream)?)),
13597            SignerKeyType::SignerKeyTypePreAuthTx =>
13598                Ok(SignerKey::SignerKeyTypePreAuthTx(Uint256::from_xdr_buffered(read_stream)?)),
13599            SignerKeyType::SignerKeyTypeHashX =>
13600                Ok(SignerKey::SignerKeyTypeHashX(Uint256::from_xdr_buffered(read_stream)?)),
13601            SignerKeyType::SignerKeyTypeEd25519SignedPayload => Ok(SignerKey::SignerKeyTypeEd25519SignedPayload(
13602                SignerKeyEd25519SignedPayload::from_xdr_buffered(read_stream)?,
13603            )),
13604        }
13605    }
13606}