Skip to main content

stellar_xdr/generated/
config_setting_contract_ledger_cost_v0.rs

1#[allow(unused_imports, clippy::wildcard_imports)]
2use super::*;
3
4/// ConfigSettingContractLedgerCostV0 is an XDR Struct defined as:
5///
6/// ```text
7/// struct ConfigSettingContractLedgerCostV0
8/// {
9///     // Maximum number of disk entry read operations per ledger
10///     uint32 ledgerMaxDiskReadEntries;
11///     // Maximum number of bytes of disk reads that can be performed per ledger
12///     uint32 ledgerMaxDiskReadBytes;
13///     // Maximum number of ledger entry write operations per ledger
14///     uint32 ledgerMaxWriteLedgerEntries;
15///     // Maximum number of bytes that can be written per ledger
16///     uint32 ledgerMaxWriteBytes;
17///
18///     // Maximum number of disk entry read operations per transaction
19///     uint32 txMaxDiskReadEntries;
20///     // Maximum number of bytes of disk reads that can be performed per transaction
21///     uint32 txMaxDiskReadBytes;
22///     // Maximum number of ledger entry write operations per transaction
23///     uint32 txMaxWriteLedgerEntries;
24///     // Maximum number of bytes that can be written per transaction
25///     uint32 txMaxWriteBytes;
26///
27///     int64 feeDiskReadLedgerEntry;  // Fee per disk ledger entry read
28///     int64 feeWriteLedgerEntry;     // Fee per ledger entry write
29///
30///     int64 feeDiskRead1KB;          // Fee for reading 1KB disk
31///
32///     // The following parameters determine the write fee per 1KB.
33///     // Rent fee grows linearly until soroban state reaches this size
34///     int64 sorobanStateTargetSizeBytes;
35///     // Fee per 1KB rent when the soroban state is empty
36///     int64 rentFee1KBSorobanStateSizeLow;
37///     // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes`
38///     int64 rentFee1KBSorobanStateSizeHigh;
39///     // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes`
40///     uint32 sorobanStateRentFeeGrowthFactor;
41/// };
42/// ```
43///
44#[cfg_attr(feature = "alloc", derive(Default))]
45#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
46#[cfg_attr(feature = "serde", cfg_eval::cfg_eval)]
47#[cfg_attr(feature = "arbitrary", derive(Arbitrary))]
48#[cfg_attr(
49    all(feature = "serde", feature = "alloc"),
50    serde_with::serde_as,
51    derive(serde::Serialize, serde::Deserialize),
52    serde(rename_all = "snake_case")
53)]
54#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
55pub struct ConfigSettingContractLedgerCostV0 {
56    pub ledger_max_disk_read_entries: u32,
57    pub ledger_max_disk_read_bytes: u32,
58    pub ledger_max_write_ledger_entries: u32,
59    pub ledger_max_write_bytes: u32,
60    pub tx_max_disk_read_entries: u32,
61    pub tx_max_disk_read_bytes: u32,
62    pub tx_max_write_ledger_entries: u32,
63    pub tx_max_write_bytes: u32,
64    #[cfg_attr(
65        all(feature = "serde", feature = "alloc"),
66        serde_as(as = "NumberOrString")
67    )]
68    pub fee_disk_read_ledger_entry: i64,
69    #[cfg_attr(
70        all(feature = "serde", feature = "alloc"),
71        serde_as(as = "NumberOrString")
72    )]
73    pub fee_write_ledger_entry: i64,
74    #[cfg_attr(
75        all(feature = "serde", feature = "alloc"),
76        serde_as(as = "NumberOrString")
77    )]
78    pub fee_disk_read1_kb: i64,
79    #[cfg_attr(
80        all(feature = "serde", feature = "alloc"),
81        serde_as(as = "NumberOrString")
82    )]
83    pub soroban_state_target_size_bytes: i64,
84    #[cfg_attr(
85        all(feature = "serde", feature = "alloc"),
86        serde_as(as = "NumberOrString")
87    )]
88    pub rent_fee1_kb_soroban_state_size_low: i64,
89    #[cfg_attr(
90        all(feature = "serde", feature = "alloc"),
91        serde_as(as = "NumberOrString")
92    )]
93    pub rent_fee1_kb_soroban_state_size_high: i64,
94    pub soroban_state_rent_fee_growth_factor: u32,
95}
96
97impl ReadXdr for ConfigSettingContractLedgerCostV0 {
98    #[cfg(feature = "std")]
99    fn read_xdr<R: Read>(r: &mut Limited<R>) -> Result<Self, Error> {
100        r.with_limited_depth(|r| {
101            Ok(Self {
102                ledger_max_disk_read_entries: u32::read_xdr(r)?,
103                ledger_max_disk_read_bytes: u32::read_xdr(r)?,
104                ledger_max_write_ledger_entries: u32::read_xdr(r)?,
105                ledger_max_write_bytes: u32::read_xdr(r)?,
106                tx_max_disk_read_entries: u32::read_xdr(r)?,
107                tx_max_disk_read_bytes: u32::read_xdr(r)?,
108                tx_max_write_ledger_entries: u32::read_xdr(r)?,
109                tx_max_write_bytes: u32::read_xdr(r)?,
110                fee_disk_read_ledger_entry: i64::read_xdr(r)?,
111                fee_write_ledger_entry: i64::read_xdr(r)?,
112                fee_disk_read1_kb: i64::read_xdr(r)?,
113                soroban_state_target_size_bytes: i64::read_xdr(r)?,
114                rent_fee1_kb_soroban_state_size_low: i64::read_xdr(r)?,
115                rent_fee1_kb_soroban_state_size_high: i64::read_xdr(r)?,
116                soroban_state_rent_fee_growth_factor: u32::read_xdr(r)?,
117            })
118        })
119    }
120}
121
122impl WriteXdr for ConfigSettingContractLedgerCostV0 {
123    #[cfg(feature = "std")]
124    fn write_xdr<W: Write>(&self, w: &mut Limited<W>) -> Result<(), Error> {
125        w.with_limited_depth(|w| {
126            self.ledger_max_disk_read_entries.write_xdr(w)?;
127            self.ledger_max_disk_read_bytes.write_xdr(w)?;
128            self.ledger_max_write_ledger_entries.write_xdr(w)?;
129            self.ledger_max_write_bytes.write_xdr(w)?;
130            self.tx_max_disk_read_entries.write_xdr(w)?;
131            self.tx_max_disk_read_bytes.write_xdr(w)?;
132            self.tx_max_write_ledger_entries.write_xdr(w)?;
133            self.tx_max_write_bytes.write_xdr(w)?;
134            self.fee_disk_read_ledger_entry.write_xdr(w)?;
135            self.fee_write_ledger_entry.write_xdr(w)?;
136            self.fee_disk_read1_kb.write_xdr(w)?;
137            self.soroban_state_target_size_bytes.write_xdr(w)?;
138            self.rent_fee1_kb_soroban_state_size_low.write_xdr(w)?;
139            self.rent_fee1_kb_soroban_state_size_high.write_xdr(w)?;
140            self.soroban_state_rent_fee_growth_factor.write_xdr(w)?;
141            Ok(())
142        })
143    }
144}