xrpld
Loading...
Searching...
No Matches
include/xrpl/protocol_autogen/ledger_entries/Oracle.h
1// This file is auto-generated. Do not edit.
2#pragma once
3
4#include <xrpl/protocol/STLedgerEntry.h>
5#include <xrpl/protocol/STParsedJSON.h>
6#include <xrpl/protocol/jss.h>
7#include <xrpl/protocol_autogen/LedgerEntryBase.h>
8#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
9#include <xrpl/json/json_value.h>
10
11#include <stdexcept>
12#include <optional>
13
14namespace xrpl::ledger_entries {
15
16class OracleBuilder;
17
27class Oracle : public LedgerEntryBase
28{
29public:
30 static constexpr LedgerEntryType entryType = ltORACLE;
31
37 : LedgerEntryBase(std::move(sle))
38 {
39 // Verify ledger entry type
40 if (sle_->getType() != entryType)
41 {
42 throw std::runtime_error("Invalid ledger entry type for Oracle");
43 }
44 }
45
46 // Ledger entry-specific field getters
47
52 [[nodiscard]]
53 SF_ACCOUNT::type::value_type
54 getOwner() const
55 {
56 return this->sle_->at(sfOwner);
57 }
58
63 [[nodiscard]]
66 {
68 return this->sle_->at(sfOracleDocumentID);
69 return std::nullopt;
70 }
71
76 [[nodiscard]]
77 bool
79 {
80 return this->sle_->isFieldPresent(sfOracleDocumentID);
81 }
82
87 [[nodiscard]]
88 SF_VL::type::value_type
90 {
91 return this->sle_->at(sfProvider);
92 }
93
99 [[nodiscard]]
100 STArray const&
102 {
103 return this->sle_->getFieldArray(sfPriceDataSeries);
104 }
105
110 [[nodiscard]]
111 SF_VL::type::value_type
113 {
114 return this->sle_->at(sfAssetClass);
115 }
116
121 [[nodiscard]]
122 SF_UINT32::type::value_type
124 {
125 return this->sle_->at(sfLastUpdateTime);
126 }
127
132 [[nodiscard]]
134 getURI() const
135 {
136 if (hasURI())
137 return this->sle_->at(sfURI);
138 return std::nullopt;
139 }
140
145 [[nodiscard]]
146 bool
147 hasURI() const
148 {
149 return this->sle_->isFieldPresent(sfURI);
150 }
151
156 [[nodiscard]]
157 SF_UINT64::type::value_type
159 {
160 return this->sle_->at(sfOwnerNode);
161 }
162
167 [[nodiscard]]
168 SF_UINT256::type::value_type
170 {
171 return this->sle_->at(sfPreviousTxnID);
172 }
173
178 [[nodiscard]]
179 SF_UINT32::type::value_type
181 {
182 return this->sle_->at(sfPreviousTxnLgrSeq);
183 }
184};
185
193class OracleBuilder : public LedgerEntryBuilderBase<OracleBuilder>
194{
195public:
209 {
210 setOwner(owner);
211 setProvider(provider);
212 setPriceDataSeries(priceDataSeries);
213 setAssetClass(assetClass);
214 setLastUpdateTime(lastUpdateTime);
215 setOwnerNode(ownerNode);
216 setPreviousTxnID(previousTxnID);
217 setPreviousTxnLgrSeq(previousTxnLgrSeq);
218 }
219
226 {
227 if (sle->at(sfLedgerEntryType) != ltORACLE)
228 {
229 throw std::runtime_error("Invalid ledger entry type for Oracle");
230 }
231 object_ = *sle;
232 }
233
235
242 {
243 object_[sfOwner] = value;
244 return *this;
245 }
246
253 {
254 object_[sfOracleDocumentID] = value;
255 return *this;
256 }
257
264 {
265 object_[sfProvider] = value;
266 return *this;
267 }
268
275 {
276 object_.setFieldArray(sfPriceDataSeries, value);
277 return *this;
278 }
279
286 {
287 object_[sfAssetClass] = value;
288 return *this;
289 }
290
297 {
298 object_[sfLastUpdateTime] = value;
299 return *this;
300 }
301
308 {
309 object_[sfURI] = value;
310 return *this;
311 }
312
319 {
320 object_[sfOwnerNode] = value;
321 return *this;
322 }
323
330 {
331 object_[sfPreviousTxnID] = value;
332 return *this;
333 }
334
341 {
342 object_[sfPreviousTxnLgrSeq] = value;
343 return *this;
344 }
345
351 Oracle
352 build(uint256 const& index)
353 {
354 return Oracle{std::make_shared<SLE>(std::move(object_), index)};
355 }
356};
357
358} // namespace xrpl::ledger_entries
std::shared_ptr< STLedgerEntry const > const_pointer
LedgerEntryBase(SLE::const_pointer sle)
Construct a ledger entry wrapper from an existing SLE object.
SLE::const_pointer sle_
The underlying serialized ledger entry being wrapped.
OracleBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (SoeRequired).
OracleBuilder & setURI(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfURI (SoeOptional).
OracleBuilder(SLE::const_pointer sle)
Construct a OracleBuilder from an existing SLE object.
OracleBuilder & setAssetClass(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfAssetClass (SoeRequired).
OracleBuilder(std::decay_t< typename SF_ACCOUNT::type::value_type > const &owner, std::decay_t< typename SF_VL::type::value_type > const &provider, STArray const &priceDataSeries, std::decay_t< typename SF_VL::type::value_type > const &assetClass, std::decay_t< typename SF_UINT32::type::value_type > const &lastUpdateTime, std::decay_t< typename SF_UINT64::type::value_type > const &ownerNode, std::decay_t< typename SF_UINT256::type::value_type > const &previousTxnID, std::decay_t< typename SF_UINT32::type::value_type > const &previousTxnLgrSeq)
Construct a new OracleBuilder with required fields.
OracleBuilder & setProvider(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfProvider (SoeRequired).
OracleBuilder & setLastUpdateTime(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfLastUpdateTime (SoeRequired).
OracleBuilder & setOwner(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
OracleBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (SoeRequired).
OracleBuilder & setOwnerNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfOwnerNode (SoeRequired).
OracleBuilder & setOracleDocumentID(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfOracleDocumentID (SoeOptional).
Oracle build(uint256 const &index)
Build and return the completed Oracle wrapper.
OracleBuilder & setPriceDataSeries(STArray const &value)
Set sfPriceDataSeries (SoeRequired).
protocol_autogen::Optional< SF_VL::type::value_type > getURI() const
Get sfURI (SoeOptional).
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (SoeRequired).
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeRequired).
Oracle(SLE::const_pointer sle)
Construct a Oracle ledger entry wrapper from an existing SLE object.
SF_VL::type::value_type getProvider() const
Get sfProvider (SoeRequired).
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (SoeRequired).
SF_VL::type::value_type getAssetClass() const
Get sfAssetClass (SoeRequired).
SF_ACCOUNT::type::value_type getOwner() const
Get sfOwner (SoeRequired).
SF_UINT32::type::value_type getLastUpdateTime() const
Get sfLastUpdateTime (SoeRequired).
protocol_autogen::Optional< SF_UINT32::type::value_type > getOracleDocumentID() const
Get sfOracleDocumentID (SoeOptional).
bool hasOracleDocumentID() const
Check if sfOracleDocumentID is present.
STArray const & getPriceDataSeries() const
Get sfPriceDataSeries (SoeRequired).
T make_shared(T... args)
STL namespace.
std::conditional_t< std::is_reference_v< ValueType >, std::optional< std::reference_wrapper< std::remove_reference_t< ValueType > > >, std::optional< ValueType > > Optional
Definition Utils.h:9
LedgerEntryType
Identifiers for on-ledger objects.
BaseUInt< 256 > uint256
Definition base_uint.h:562