Skip to main content

stellar_xdr/generated/
config_setting_entry.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// ConfigSettingEntry is an XDR Union defined as:
5///
6/// ```text
7/// union ConfigSettingEntry switch (ConfigSettingID configSettingID)
8/// {
9/// case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES:
10///     uint32 contractMaxSizeBytes;
11/// case CONFIG_SETTING_CONTRACT_COMPUTE_V0:
12///     ConfigSettingContractComputeV0 contractCompute;
13/// case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0:
14///     ConfigSettingContractLedgerCostV0 contractLedgerCost;
15/// case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0:
16///     ConfigSettingContractHistoricalDataV0 contractHistoricalData;
17/// case CONFIG_SETTING_CONTRACT_EVENTS_V0:
18///     ConfigSettingContractEventsV0 contractEvents;
19/// case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0:
20///     ConfigSettingContractBandwidthV0 contractBandwidth;
21/// case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS:
22///     ContractCostParams contractCostParamsCpuInsns;
23/// case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES:
24///     ContractCostParams contractCostParamsMemBytes;
25/// case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES:
26///     uint32 contractDataKeySizeBytes;
27/// case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES:
28///     uint32 contractDataEntrySizeBytes;
29/// case CONFIG_SETTING_STATE_ARCHIVAL:
30///     StateArchivalSettings stateArchivalSettings;
31/// case CONFIG_SETTING_CONTRACT_EXECUTION_LANES:
32///     ConfigSettingContractExecutionLanesV0 contractExecutionLanes;
33/// case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW:
34///     uint64 liveSorobanStateSizeWindow<>;
35/// case CONFIG_SETTING_EVICTION_ITERATOR:
36///     EvictionIterator evictionIterator;
37/// case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0:
38///     ConfigSettingContractParallelComputeV0 contractParallelCompute;
39/// case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0:
40///     ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt;
41/// case CONFIG_SETTING_SCP_TIMING:
42///     ConfigSettingSCPTiming contractSCPTiming;
43/// case CONFIG_SETTING_FROZEN_LEDGER_KEYS:
44///     FrozenLedgerKeys frozenLedgerKeys;
45/// case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA:
46///     FrozenLedgerKeysDelta frozenLedgerKeysDelta;
47/// case CONFIG_SETTING_FREEZE_BYPASS_TXS:
48///     FreezeBypassTxs freezeBypassTxs;
49/// case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA:
50///     FreezeBypassTxsDelta freezeBypassTxsDelta;
51/// };
52/// ```
53///
54// union with discriminant ConfigSettingId
55#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
56#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
57#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
58#[cfg_attr(
59    all(feature = "serde", feature = "alloc"),
60    serde_with::serde_as,
61    derive(serde::Serialize, serde::Deserialize),
62    serde(rename_all = "snake_case")
63)]
64#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
65#[allow(clippy::large_enum_variant)]
66pub enum ConfigSettingEntry {
67    ContractMaxSizeBytes(u32),
68    ContractComputeV0(ConfigSettingContractComputeV0),
69    ContractLedgerCostV0(ConfigSettingContractLedgerCostV0),
70    ContractHistoricalDataV0(ConfigSettingContractHistoricalDataV0),
71    ContractEventsV0(ConfigSettingContractEventsV0),
72    ContractBandwidthV0(ConfigSettingContractBandwidthV0),
73    ContractCostParamsCpuInstructions(ContractCostParams),
74    ContractCostParamsMemoryBytes(ContractCostParams),
75    ContractDataKeySizeBytes(u32),
76    ContractDataEntrySizeBytes(u32),
77    StateArchival(StateArchivalSettings),
78    ContractExecutionLanes(ConfigSettingContractExecutionLanesV0),
79    LiveSorobanStateSizeWindow(
80        #[cfg_attr(
81            all(feature = "serde", feature = "alloc"),
82            serde_as(as = "VecM<NumberOrString>")
83        )]
84        VecM<u64>,
85    ),
86    EvictionIterator(EvictionIterator),
87    ContractParallelComputeV0(ConfigSettingContractParallelComputeV0),
88    ContractLedgerCostExtV0(ConfigSettingContractLedgerCostExtV0),
89    ScpTiming(ConfigSettingScpTiming),
90    FrozenLedgerKeys(FrozenLedgerKeys),
91    FrozenLedgerKeysDelta(FrozenLedgerKeysDelta),
92    FreezeBypassTxs(FreezeBypassTxs),
93    FreezeBypassTxsDelta(FreezeBypassTxsDelta),
94}
95
96#[cfg(feature = "alloc")]
97impl Default for ConfigSettingEntry {
98    fn default() -> Self {
99        Self::ContractMaxSizeBytes(u32::default())
100    }
101}
102
103impl ConfigSettingEntry {
104    const _VARIANTS: &[ConfigSettingId] = &[
105        ConfigSettingId::ContractMaxSizeBytes,
106        ConfigSettingId::ContractComputeV0,
107        ConfigSettingId::ContractLedgerCostV0,
108        ConfigSettingId::ContractHistoricalDataV0,
109        ConfigSettingId::ContractEventsV0,
110        ConfigSettingId::ContractBandwidthV0,
111        ConfigSettingId::ContractCostParamsCpuInstructions,
112        ConfigSettingId::ContractCostParamsMemoryBytes,
113        ConfigSettingId::ContractDataKeySizeBytes,
114        ConfigSettingId::ContractDataEntrySizeBytes,
115        ConfigSettingId::StateArchival,
116        ConfigSettingId::ContractExecutionLanes,
117        ConfigSettingId::LiveSorobanStateSizeWindow,
118        ConfigSettingId::EvictionIterator,
119        ConfigSettingId::ContractParallelComputeV0,
120        ConfigSettingId::ContractLedgerCostExtV0,
121        ConfigSettingId::ScpTiming,
122        ConfigSettingId::FrozenLedgerKeys,
123        ConfigSettingId::FrozenLedgerKeysDelta,
124        ConfigSettingId::FreezeBypassTxs,
125        ConfigSettingId::FreezeBypassTxsDelta,
126    ];
127    pub const VARIANTS: [ConfigSettingId; Self::_VARIANTS.len()] = {
128        let mut arr = [Self::_VARIANTS[0]; Self::_VARIANTS.len()];
129        let mut i = 1;
130        while i < Self::_VARIANTS.len() {
131            arr[i] = Self::_VARIANTS[i];
132            i += 1;
133        }
134        arr
135    };
136    const _VARIANTS_STR: &[&str] = &[
137        "ContractMaxSizeBytes",
138        "ContractComputeV0",
139        "ContractLedgerCostV0",
140        "ContractHistoricalDataV0",
141        "ContractEventsV0",
142        "ContractBandwidthV0",
143        "ContractCostParamsCpuInstructions",
144        "ContractCostParamsMemoryBytes",
145        "ContractDataKeySizeBytes",
146        "ContractDataEntrySizeBytes",
147        "StateArchival",
148        "ContractExecutionLanes",
149        "LiveSorobanStateSizeWindow",
150        "EvictionIterator",
151        "ContractParallelComputeV0",
152        "ContractLedgerCostExtV0",
153        "ScpTiming",
154        "FrozenLedgerKeys",
155        "FrozenLedgerKeysDelta",
156        "FreezeBypassTxs",
157        "FreezeBypassTxsDelta",
158    ];
159    pub const VARIANTS_STR: [&'static str; Self::_VARIANTS_STR.len()] = {
160        let mut arr = [Self::_VARIANTS_STR[0]; Self::_VARIANTS_STR.len()];
161        let mut i = 1;
162        while i < Self::_VARIANTS_STR.len() {
163            arr[i] = Self::_VARIANTS_STR[i];
164            i += 1;
165        }
166        arr
167    };
168
169    #[must_use]
170    pub const fn name(&self) -> &'static str {
171        match self {
172            Self::ContractMaxSizeBytes(_) => "ContractMaxSizeBytes",
173            Self::ContractComputeV0(_) => "ContractComputeV0",
174            Self::ContractLedgerCostV0(_) => "ContractLedgerCostV0",
175            Self::ContractHistoricalDataV0(_) => "ContractHistoricalDataV0",
176            Self::ContractEventsV0(_) => "ContractEventsV0",
177            Self::ContractBandwidthV0(_) => "ContractBandwidthV0",
178            Self::ContractCostParamsCpuInstructions(_) => "ContractCostParamsCpuInstructions",
179            Self::ContractCostParamsMemoryBytes(_) => "ContractCostParamsMemoryBytes",
180            Self::ContractDataKeySizeBytes(_) => "ContractDataKeySizeBytes",
181            Self::ContractDataEntrySizeBytes(_) => "ContractDataEntrySizeBytes",
182            Self::StateArchival(_) => "StateArchival",
183            Self::ContractExecutionLanes(_) => "ContractExecutionLanes",
184            Self::LiveSorobanStateSizeWindow(_) => "LiveSorobanStateSizeWindow",
185            Self::EvictionIterator(_) => "EvictionIterator",
186            Self::ContractParallelComputeV0(_) => "ContractParallelComputeV0",
187            Self::ContractLedgerCostExtV0(_) => "ContractLedgerCostExtV0",
188            Self::ScpTiming(_) => "ScpTiming",
189            Self::FrozenLedgerKeys(_) => "FrozenLedgerKeys",
190            Self::FrozenLedgerKeysDelta(_) => "FrozenLedgerKeysDelta",
191            Self::FreezeBypassTxs(_) => "FreezeBypassTxs",
192            Self::FreezeBypassTxsDelta(_) => "FreezeBypassTxsDelta",
193        }
194    }
195
196    #[must_use]
197    pub const fn discriminant(&self) -> ConfigSettingId {
198        #[allow(clippy::match_same_arms)]
199        match self {
200            Self::ContractMaxSizeBytes(_) => ConfigSettingId::ContractMaxSizeBytes,
201            Self::ContractComputeV0(_) => ConfigSettingId::ContractComputeV0,
202            Self::ContractLedgerCostV0(_) => ConfigSettingId::ContractLedgerCostV0,
203            Self::ContractHistoricalDataV0(_) => ConfigSettingId::ContractHistoricalDataV0,
204            Self::ContractEventsV0(_) => ConfigSettingId::ContractEventsV0,
205            Self::ContractBandwidthV0(_) => ConfigSettingId::ContractBandwidthV0,
206            Self::ContractCostParamsCpuInstructions(_) => {
207                ConfigSettingId::ContractCostParamsCpuInstructions
208            }
209            Self::ContractCostParamsMemoryBytes(_) => {
210                ConfigSettingId::ContractCostParamsMemoryBytes
211            }
212            Self::ContractDataKeySizeBytes(_) => ConfigSettingId::ContractDataKeySizeBytes,
213            Self::ContractDataEntrySizeBytes(_) => ConfigSettingId::ContractDataEntrySizeBytes,
214            Self::StateArchival(_) => ConfigSettingId::StateArchival,
215            Self::ContractExecutionLanes(_) => ConfigSettingId::ContractExecutionLanes,
216            Self::LiveSorobanStateSizeWindow(_) => ConfigSettingId::LiveSorobanStateSizeWindow,
217            Self::EvictionIterator(_) => ConfigSettingId::EvictionIterator,
218            Self::ContractParallelComputeV0(_) => ConfigSettingId::ContractParallelComputeV0,
219            Self::ContractLedgerCostExtV0(_) => ConfigSettingId::ContractLedgerCostExtV0,
220            Self::ScpTiming(_) => ConfigSettingId::ScpTiming,
221            Self::FrozenLedgerKeys(_) => ConfigSettingId::FrozenLedgerKeys,
222            Self::FrozenLedgerKeysDelta(_) => ConfigSettingId::FrozenLedgerKeysDelta,
223            Self::FreezeBypassTxs(_) => ConfigSettingId::FreezeBypassTxs,
224            Self::FreezeBypassTxsDelta(_) => ConfigSettingId::FreezeBypassTxsDelta,
225        }
226    }
227
228    #[must_use]
229    pub const fn variants() -> [ConfigSettingId; Self::_VARIANTS.len()] {
230        Self::VARIANTS
231    }
232}
233
234impl Name for ConfigSettingEntry {
235    #[must_use]
236    fn name(&self) -> &'static str {
237        Self::name(self)
238    }
239}
240
241impl Discriminant<ConfigSettingId> for ConfigSettingEntry {
242    #[must_use]
243    fn discriminant(&self) -> ConfigSettingId {
244        Self::discriminant(self)
245    }
246}
247
248impl Variants<ConfigSettingId> for ConfigSettingEntry {
249    fn variants() -> slice::Iter<'static, ConfigSettingId> {
250        Self::VARIANTS.iter()
251    }
252}
253
254impl Union<ConfigSettingId> for ConfigSettingEntry {}
255
256impl ReadXdr for ConfigSettingEntry {
257    #[cfg(feature = "std")]
258    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
259        r.with_limited_depth(|r| {
260            let dv: ConfigSettingId = <ConfigSettingId as ReadXdr>::read_xdr(r)?;
261            #[allow(clippy::match_same_arms, clippy::match_wildcard_for_single_variants)]
262            let v = match dv {
263                ConfigSettingId::ContractMaxSizeBytes => {
264                    Self::ContractMaxSizeBytes(u32::read_xdr(r)?)
265                }
266                ConfigSettingId::ContractComputeV0 => {
267                    Self::ContractComputeV0(ConfigSettingContractComputeV0::read_xdr(r)?)
268                }
269                ConfigSettingId::ContractLedgerCostV0 => {
270                    Self::ContractLedgerCostV0(ConfigSettingContractLedgerCostV0::read_xdr(r)?)
271                }
272                ConfigSettingId::ContractHistoricalDataV0 => Self::ContractHistoricalDataV0(
273                    ConfigSettingContractHistoricalDataV0::read_xdr(r)?,
274                ),
275                ConfigSettingId::ContractEventsV0 => {
276                    Self::ContractEventsV0(ConfigSettingContractEventsV0::read_xdr(r)?)
277                }
278                ConfigSettingId::ContractBandwidthV0 => {
279                    Self::ContractBandwidthV0(ConfigSettingContractBandwidthV0::read_xdr(r)?)
280                }
281                ConfigSettingId::ContractCostParamsCpuInstructions => {
282                    Self::ContractCostParamsCpuInstructions(ContractCostParams::read_xdr(r)?)
283                }
284                ConfigSettingId::ContractCostParamsMemoryBytes => {
285                    Self::ContractCostParamsMemoryBytes(ContractCostParams::read_xdr(r)?)
286                }
287                ConfigSettingId::ContractDataKeySizeBytes => {
288                    Self::ContractDataKeySizeBytes(u32::read_xdr(r)?)
289                }
290                ConfigSettingId::ContractDataEntrySizeBytes => {
291                    Self::ContractDataEntrySizeBytes(u32::read_xdr(r)?)
292                }
293                ConfigSettingId::StateArchival => {
294                    Self::StateArchival(StateArchivalSettings::read_xdr(r)?)
295                }
296                ConfigSettingId::ContractExecutionLanes => Self::ContractExecutionLanes(
297                    ConfigSettingContractExecutionLanesV0::read_xdr(r)?,
298                ),
299                ConfigSettingId::LiveSorobanStateSizeWindow => {
300                    Self::LiveSorobanStateSizeWindow(VecM::<u64>::read_xdr(r)?)
301                }
302                ConfigSettingId::EvictionIterator => {
303                    Self::EvictionIterator(EvictionIterator::read_xdr(r)?)
304                }
305                ConfigSettingId::ContractParallelComputeV0 => Self::ContractParallelComputeV0(
306                    ConfigSettingContractParallelComputeV0::read_xdr(r)?,
307                ),
308                ConfigSettingId::ContractLedgerCostExtV0 => Self::ContractLedgerCostExtV0(
309                    ConfigSettingContractLedgerCostExtV0::read_xdr(r)?,
310                ),
311                ConfigSettingId::ScpTiming => Self::ScpTiming(ConfigSettingScpTiming::read_xdr(r)?),
312                ConfigSettingId::FrozenLedgerKeys => {
313                    Self::FrozenLedgerKeys(FrozenLedgerKeys::read_xdr(r)?)
314                }
315                ConfigSettingId::FrozenLedgerKeysDelta => {
316                    Self::FrozenLedgerKeysDelta(FrozenLedgerKeysDelta::read_xdr(r)?)
317                }
318                ConfigSettingId::FreezeBypassTxs => {
319                    Self::FreezeBypassTxs(FreezeBypassTxs::read_xdr(r)?)
320                }
321                ConfigSettingId::FreezeBypassTxsDelta => {
322                    Self::FreezeBypassTxsDelta(FreezeBypassTxsDelta::read_xdr(r)?)
323                }
324                #[allow(unreachable_patterns)]
325                _ => return Err(Error::Invalid),
326            };
327            Ok(v)
328        })
329    }
330}
331
332impl WriteXdr for ConfigSettingEntry {
333    #[cfg(feature = "std")]
334    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
335        w.with_limited_depth(|w| {
336            self.discriminant().write_xdr(w)?;
337            #[allow(clippy::match_same_arms)]
338            match self {
339                Self::ContractMaxSizeBytes(v) => v.write_xdr(w)?,
340                Self::ContractComputeV0(v) => v.write_xdr(w)?,
341                Self::ContractLedgerCostV0(v) => v.write_xdr(w)?,
342                Self::ContractHistoricalDataV0(v) => v.write_xdr(w)?,
343                Self::ContractEventsV0(v) => v.write_xdr(w)?,
344                Self::ContractBandwidthV0(v) => v.write_xdr(w)?,
345                Self::ContractCostParamsCpuInstructions(v) => v.write_xdr(w)?,
346                Self::ContractCostParamsMemoryBytes(v) => v.write_xdr(w)?,
347                Self::ContractDataKeySizeBytes(v) => v.write_xdr(w)?,
348                Self::ContractDataEntrySizeBytes(v) => v.write_xdr(w)?,
349                Self::StateArchival(v) => v.write_xdr(w)?,
350                Self::ContractExecutionLanes(v) => v.write_xdr(w)?,
351                Self::LiveSorobanStateSizeWindow(v) => v.write_xdr(w)?,
352                Self::EvictionIterator(v) => v.write_xdr(w)?,
353                Self::ContractParallelComputeV0(v) => v.write_xdr(w)?,
354                Self::ContractLedgerCostExtV0(v) => v.write_xdr(w)?,
355                Self::ScpTiming(v) => v.write_xdr(w)?,
356                Self::FrozenLedgerKeys(v) => v.write_xdr(w)?,
357                Self::FrozenLedgerKeysDelta(v) => v.write_xdr(w)?,
358                Self::FreezeBypassTxs(v) => v.write_xdr(w)?,
359                Self::FreezeBypassTxsDelta(v) => v.write_xdr(w)?,
360            };
361            Ok(())
362        })
363    }
364}