xrpl_common_stdlib/objects/generated/
nftoken_offer.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::amount::Amount;
10use crate::types::uint::Hash256;
11
12pub trait NFTokenOfferFields: LedgerObjectCommonFields {
14 fn owner(&self) -> Result<AccountID> {
16 ledger_object::get_field(self.get_slot_num(), sfield::Owner)
17 }
18
19 fn nftoken_id(&self) -> Result<Hash256> {
21 ledger_object::get_field(self.get_slot_num(), sfield::NFTokenID)
22 }
23
24 fn amount(&self) -> Result<Amount> {
26 ledger_object::get_field(self.get_slot_num(), sfield::Amount)
27 }
28
29 fn owner_node(&self) -> Result<u64> {
31 ledger_object::get_field(self.get_slot_num(), sfield::OwnerNode)
32 }
33
34 fn nftoken_offer_node(&self) -> Result<u64> {
36 ledger_object::get_field(self.get_slot_num(), sfield::NFTokenOfferNode)
37 }
38
39 fn destination(&self) -> Result<Option<AccountID>> {
41 ledger_object::get_field_optional(self.get_slot_num(), sfield::Destination)
42 }
43
44 fn expiration(&self) -> Result<Option<u32>> {
46 ledger_object::get_field_optional(self.get_slot_num(), sfield::Expiration)
47 }
48
49 fn previous_txn_id(&self) -> Result<Hash256> {
51 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnID)
52 }
53
54 fn previous_txn_lgr_seq(&self) -> Result<u32> {
56 ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnLgrSeq)
57 }
58}
59
60pub trait CurrentNFTokenOfferFields: CurrentLedgerObjectCommonFields {
62 fn owner(&self) -> Result<AccountID> {
64 current_ledger_object::get_field(sfield::Owner)
65 }
66
67 fn nftoken_id(&self) -> Result<Hash256> {
69 current_ledger_object::get_field(sfield::NFTokenID)
70 }
71
72 fn amount(&self) -> Result<Amount> {
74 current_ledger_object::get_field(sfield::Amount)
75 }
76
77 fn owner_node(&self) -> Result<u64> {
79 current_ledger_object::get_field(sfield::OwnerNode)
80 }
81
82 fn nftoken_offer_node(&self) -> Result<u64> {
84 current_ledger_object::get_field(sfield::NFTokenOfferNode)
85 }
86
87 fn destination(&self) -> Result<Option<AccountID>> {
89 current_ledger_object::get_field_optional(sfield::Destination)
90 }
91
92 fn expiration(&self) -> Result<Option<u32>> {
94 current_ledger_object::get_field_optional(sfield::Expiration)
95 }
96
97 fn previous_txn_id(&self) -> Result<Hash256> {
99 current_ledger_object::get_field(sfield::PreviousTxnID)
100 }
101
102 fn previous_txn_lgr_seq(&self) -> Result<u32> {
104 current_ledger_object::get_field(sfield::PreviousTxnLgrSeq)
105 }
106}
107
108#[derive(Debug, Clone, Copy, Eq, PartialEq)]
109pub struct NFTokenOffer {
110 pub(crate) slot_num: i32,
111}
112
113impl NFTokenOffer {
114 pub fn new(slot_num: i32) -> Self {
116 Self { slot_num }
117 }
118}
119
120impl LedgerObjectCommonFields for NFTokenOffer {
121 fn get_slot_num(&self) -> i32 {
122 self.slot_num
123 }
124}
125
126impl NFTokenOfferFields for NFTokenOffer {}
127
128#[cfg(test)]
129mod tests {
130 use super::*;
131 use crate::host::host_bindings_trait::MockHostBindings;
132 use crate::host::setup_mock;
133 use crate::objects::test_utils::*;
134
135 #[test]
136 fn read_all_fields() {
137 let mut mock = MockHostBindings::new();
138 mock_all_fields_present(&mut mock);
139 let _guard = setup_mock(mock);
140
141 let obj = NFTokenOffer::new(0);
142
143 assert!(obj.owner().is_ok());
144 assert!(obj.nftoken_id().is_ok());
145 assert!(obj.amount().is_ok());
146 assert!(obj.owner_node().is_ok());
147 assert!(obj.nftoken_offer_node().is_ok());
148 assert!(obj.previous_txn_id().is_ok());
149 assert!(obj.previous_txn_lgr_seq().is_ok());
150 assert!(obj.destination().is_ok());
151 assert!(obj.expiration().is_ok());
152 }
153
154 #[test]
155 fn optional_fields_none() {
156 let mut mock = MockHostBindings::new();
157 mock_all_fields_not_found(&mut mock);
158 let _guard = setup_mock(mock);
159
160 let obj = NFTokenOffer::new(0);
161
162 assert!(obj.destination().unwrap().is_none());
163 assert!(obj.expiration().unwrap().is_none());
164 }
165}