Skip to main content

xrpl_common_stdlib/objects/generated/
nftoken_offer.rs

1// GENERATED -- do not hand-edit. Run scripts/generate-ledger-objects.sh to regenerate.
2
3use 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
12/// Trait providing access to fields specific to NFTokenOffer objects in any ledger.
13pub trait NFTokenOfferFields: LedgerObjectCommonFields {
14    /// The Owner field (Required).
15    fn owner(&self) -> Result<AccountID> {
16        ledger_object::get_field(self.get_slot_num(), sfield::Owner)
17    }
18
19    /// The NFTokenID field (Required).
20    fn nftoken_id(&self) -> Result<Hash256> {
21        ledger_object::get_field(self.get_slot_num(), sfield::NFTokenID)
22    }
23
24    /// The Amount field (Required).
25    fn amount(&self) -> Result<Amount> {
26        ledger_object::get_field(self.get_slot_num(), sfield::Amount)
27    }
28
29    /// The OwnerNode field (Required).
30    fn owner_node(&self) -> Result<u64> {
31        ledger_object::get_field(self.get_slot_num(), sfield::OwnerNode)
32    }
33
34    /// The NFTokenOfferNode field (Required).
35    fn nftoken_offer_node(&self) -> Result<u64> {
36        ledger_object::get_field(self.get_slot_num(), sfield::NFTokenOfferNode)
37    }
38
39    /// The Destination field (Optional).
40    fn destination(&self) -> Result<Option<AccountID>> {
41        ledger_object::get_field_optional(self.get_slot_num(), sfield::Destination)
42    }
43
44    /// The Expiration field (Optional).
45    fn expiration(&self) -> Result<Option<u32>> {
46        ledger_object::get_field_optional(self.get_slot_num(), sfield::Expiration)
47    }
48
49    /// The PreviousTxnID field (Required).
50    fn previous_txn_id(&self) -> Result<Hash256> {
51        ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnID)
52    }
53
54    /// The PreviousTxnLgrSeq field (Required).
55    fn previous_txn_lgr_seq(&self) -> Result<u32> {
56        ledger_object::get_field(self.get_slot_num(), sfield::PreviousTxnLgrSeq)
57    }
58}
59
60/// Trait providing access to fields specific to the current NFTokenOffer object.
61pub trait CurrentNFTokenOfferFields: CurrentLedgerObjectCommonFields {
62    /// The Owner field (Required).
63    fn owner(&self) -> Result<AccountID> {
64        current_ledger_object::get_field(sfield::Owner)
65    }
66
67    /// The NFTokenID field (Required).
68    fn nftoken_id(&self) -> Result<Hash256> {
69        current_ledger_object::get_field(sfield::NFTokenID)
70    }
71
72    /// The Amount field (Required).
73    fn amount(&self) -> Result<Amount> {
74        current_ledger_object::get_field(sfield::Amount)
75    }
76
77    /// The OwnerNode field (Required).
78    fn owner_node(&self) -> Result<u64> {
79        current_ledger_object::get_field(sfield::OwnerNode)
80    }
81
82    /// The NFTokenOfferNode field (Required).
83    fn nftoken_offer_node(&self) -> Result<u64> {
84        current_ledger_object::get_field(sfield::NFTokenOfferNode)
85    }
86
87    /// The Destination field (Optional).
88    fn destination(&self) -> Result<Option<AccountID>> {
89        current_ledger_object::get_field_optional(sfield::Destination)
90    }
91
92    /// The Expiration field (Optional).
93    fn expiration(&self) -> Result<Option<u32>> {
94        current_ledger_object::get_field_optional(sfield::Expiration)
95    }
96
97    /// The PreviousTxnID field (Required).
98    fn previous_txn_id(&self) -> Result<Hash256> {
99        current_ledger_object::get_field(sfield::PreviousTxnID)
100    }
101
102    /// The PreviousTxnLgrSeq field (Required).
103    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    /// Binds this handle to a host-managed slot holding a NFTokenOffer ledger object.
115    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}