1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4#[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}