xrpl_common_stdlib/objects/generated/
mptoken_issuance.rs1use crate::host::Result;
4use crate::objects::traits::CurrentLedgerObjectCommonFields;
5use crate::objects::traits::LedgerObjectCommonFields;
6use crate::objects::{current_ledger_object, ledger_object};
7use crate::sfield;
8use crate::types::account_id::AccountID;
9use crate::types::blob::StandardBlob;
10use crate::types::uint::Hash256;
11
12pub trait MPTokenIssuanceFields: LedgerObjectCommonFields {
14 fn issuer(&self) -> Result<AccountID> {
17 ledger_object::get_field(self.get_slot_num(), sfield::Issuer)
18 }
19
20 fn sequence(&self) -> Result<u32> {
24 ledger_object::get_field(self.get_slot_num(), sfield::Sequence)
25 }
26
27 fn transfer_fee(&self) -> Result<Option<u16>> {
36 ledger_object::get_field_optional(self.get_slot_num(), sfield::TransferFee)
37 }
38
39 fn owner_node(&self) -> Result<u64> {
42 ledger_object::get_field(self.get_slot_num(), sfield::OwnerNode)
43 }
44
45 fn asset_scale(&self) -> Result<Option<u8>> {
52 ledger_object::get_field_optional(self.get_slot_num(), sfield::AssetScale)
53 }
54
55 fn maximum_amount(&self) -> Result<Option<u64>> {
58 ledger_object::get_field_optional(self.get_slot_num(), sfield::MaximumAmount)
59 }
60
61 fn outstanding_amount(&self) -> Result<u64> {
64 ledger_object::get_field(self.get_slot_num(), sfield::OutstandingAmount)
65 }
66
67 fn locked_amount(&self) -> Result<Option<u64>> {
70 ledger_object::get_field_optional(self.get_slot_num(), sfield::LockedAmount)
71 }
72
73 fn mptoken_metadata(&self) -> Result<Option<StandardBlob>> {
76 ledger_object::get_field_optional(self.get_slot_num(), sfield::MPTokenMetadata)
77 }
78
79 fn previous_txn_id(&self) -> Result<Hash256> {
81 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnID)
82 }
83
84 fn previous_txn_lgr_seq(&self) -> Result<u32> {
87 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnLgrSeq)
88 }
89
90 fn domain_id(&self) -> Result<Option<Hash256>> {
93 ledger_object::get_field_optional(self.get_slot_num(), sfield::DomainID)
94 }
95
96 fn immutable_flags(&self) -> Result<Option<u32>> {
99 ledger_object::get_field_optional(self.get_slot_num(), sfield::ImmutableFlags)
100 }
101
102 fn reference_holding(&self) -> Result<Option<Hash256>> {
104 ledger_object::get_field_optional(self.get_slot_num(), sfield::ReferenceHolding)
105 }
106
107 fn issuer_encryption_key(&self) -> Result<Option<StandardBlob>> {
109 ledger_object::get_field_optional(self.get_slot_num(), sfield::IssuerEncryptionKey)
110 }
111
112 fn auditor_encryption_key(&self) -> Result<Option<StandardBlob>> {
114 ledger_object::get_field_optional(self.get_slot_num(), sfield::AuditorEncryptionKey)
115 }
116
117 fn issuer_key_epoch(&self) -> Result<Option<u32>> {
119 ledger_object::get_field_optional(self.get_slot_num(), sfield::IssuerKeyEpoch)
120 }
121
122 fn auditor_key_epoch(&self) -> Result<Option<u32>> {
124 ledger_object::get_field_optional(self.get_slot_num(), sfield::AuditorKeyEpoch)
125 }
126
127 fn confidential_outstanding_amount(&self) -> Result<Option<u64>> {
129 ledger_object::get_field_optional(
130 self.get_slot_num(),
131 sfield::ConfidentialOutstandingAmount,
132 )
133 }
134}
135
136pub trait CurrentMPTokenIssuanceFields: CurrentLedgerObjectCommonFields {
138 fn issuer(&self) -> Result<AccountID> {
141 current_ledger_object::get_field(sfield::Issuer)
142 }
143
144 fn sequence(&self) -> Result<u32> {
148 current_ledger_object::get_field(sfield::Sequence)
149 }
150
151 fn transfer_fee(&self) -> Result<Option<u16>> {
160 current_ledger_object::get_field_optional(sfield::TransferFee)
161 }
162
163 fn owner_node(&self) -> Result<u64> {
166 current_ledger_object::get_field(sfield::OwnerNode)
167 }
168
169 fn asset_scale(&self) -> Result<Option<u8>> {
176 current_ledger_object::get_field_optional(sfield::AssetScale)
177 }
178
179 fn maximum_amount(&self) -> Result<Option<u64>> {
182 current_ledger_object::get_field_optional(sfield::MaximumAmount)
183 }
184
185 fn outstanding_amount(&self) -> Result<u64> {
188 current_ledger_object::get_field(sfield::OutstandingAmount)
189 }
190
191 fn locked_amount(&self) -> Result<Option<u64>> {
194 current_ledger_object::get_field_optional(sfield::LockedAmount)
195 }
196
197 fn mptoken_metadata(&self) -> Result<Option<StandardBlob>> {
200 current_ledger_object::get_field_optional(sfield::MPTokenMetadata)
201 }
202
203 fn previous_txn_id(&self) -> Result<Hash256> {
205 current_ledger_object::get_field(sfield::PreviousTxnID)
206 }
207
208 fn previous_txn_lgr_seq(&self) -> Result<u32> {
211 current_ledger_object::get_field(sfield::PreviousTxnLgrSeq)
212 }
213
214 fn domain_id(&self) -> Result<Option<Hash256>> {
217 current_ledger_object::get_field_optional(sfield::DomainID)
218 }
219
220 fn immutable_flags(&self) -> Result<Option<u32>> {
223 current_ledger_object::get_field_optional(sfield::ImmutableFlags)
224 }
225
226 fn reference_holding(&self) -> Result<Option<Hash256>> {
228 current_ledger_object::get_field_optional(sfield::ReferenceHolding)
229 }
230
231 fn issuer_encryption_key(&self) -> Result<Option<StandardBlob>> {
233 current_ledger_object::get_field_optional(sfield::IssuerEncryptionKey)
234 }
235
236 fn auditor_encryption_key(&self) -> Result<Option<StandardBlob>> {
238 current_ledger_object::get_field_optional(sfield::AuditorEncryptionKey)
239 }
240
241 fn issuer_key_epoch(&self) -> Result<Option<u32>> {
243 current_ledger_object::get_field_optional(sfield::IssuerKeyEpoch)
244 }
245
246 fn auditor_key_epoch(&self) -> Result<Option<u32>> {
248 current_ledger_object::get_field_optional(sfield::AuditorKeyEpoch)
249 }
250
251 fn confidential_outstanding_amount(&self) -> Result<Option<u64>> {
253 current_ledger_object::get_field_optional(sfield::ConfidentialOutstandingAmount)
254 }
255}
256
257#[derive(Debug, Clone, Copy, Eq, PartialEq)]
258pub struct MPTokenIssuance {
259 pub(crate) slot_num: i32,
260}
261
262impl MPTokenIssuance {
263 pub fn new(slot_num: i32) -> Self {
265 Self { slot_num }
266 }
267}
268
269impl LedgerObjectCommonFields for MPTokenIssuance {
270 fn get_slot_num(&self) -> i32 {
271 self.slot_num
272 }
273}
274
275impl MPTokenIssuanceFields for MPTokenIssuance {}
276
277#[cfg(test)]
278mod tests {
279 use super::*;
280 use crate::host::host_bindings_trait::MockHostBindings;
281 use crate::host::setup_mock;
282 use crate::objects::test_utils::*;
283
284 #[test]
285 fn read_all_fields() {
286 let mut mock = MockHostBindings::new();
287 mock_all_fields_present(&mut mock);
288 let _guard = setup_mock(mock);
289
290 let obj = MPTokenIssuance::new(0);
291
292 assert!(obj.issuer().is_ok());
293 assert!(obj.sequence().is_ok());
294 assert!(obj.owner_node().is_ok());
295 assert!(obj.outstanding_amount().is_ok());
296 assert!(obj.previous_txn_id().is_ok());
297 assert!(obj.previous_txn_lgr_seq().is_ok());
298 assert!(obj.transfer_fee().is_ok());
299 assert!(obj.asset_scale().is_ok());
300 assert!(obj.maximum_amount().is_ok());
301 assert!(obj.locked_amount().is_ok());
302 assert!(obj.mptoken_metadata().is_ok());
303 assert!(obj.domain_id().is_ok());
304 assert!(obj.immutable_flags().is_ok());
305 assert!(obj.reference_holding().is_ok());
306 assert!(obj.issuer_encryption_key().is_ok());
307 assert!(obj.auditor_encryption_key().is_ok());
308 assert!(obj.issuer_key_epoch().is_ok());
309 assert!(obj.auditor_key_epoch().is_ok());
310 assert!(obj.confidential_outstanding_amount().is_ok());
311 }
312
313 #[test]
314 fn optional_fields_none() {
315 let mut mock = MockHostBindings::new();
316 mock_all_fields_not_found(&mut mock);
317 let _guard = setup_mock(mock);
318
319 let obj = MPTokenIssuance::new(0);
320
321 assert!(obj.transfer_fee().unwrap().is_none());
322 assert!(obj.asset_scale().unwrap().is_none());
323 assert!(obj.maximum_amount().unwrap().is_none());
324 assert!(obj.locked_amount().unwrap().is_none());
325 assert!(obj.domain_id().unwrap().is_none());
326 assert!(obj.immutable_flags().unwrap().is_none());
327 assert!(obj.reference_holding().unwrap().is_none());
328 assert!(obj.issuer_key_epoch().unwrap().is_none());
329 assert!(obj.auditor_key_epoch().unwrap().is_none());
330 assert!(obj.confidential_outstanding_amount().unwrap().is_none());
331 }
332}