xrpld
Loading...
Searching...
No Matches
Delegate.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 DelegateBuilder;
17
28{
29public:
30 static constexpr LedgerEntryType entryType = ltDELEGATE;
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 Delegate");
43 }
44 }
45
46 // Ledger entry-specific field getters
47
52 [[nodiscard]]
53 SF_ACCOUNT::type::value_type
54 getAccount() const
55 {
56 return this->sle_->at(sfAccount);
57 }
58
63 [[nodiscard]]
64 SF_ACCOUNT::type::value_type
66 {
67 return this->sle_->at(sfAuthorize);
68 }
69
75 [[nodiscard]]
76 STArray const&
78 {
79 return this->sle_->getFieldArray(sfPermissions);
80 }
81
86 [[nodiscard]]
87 SF_UINT64::type::value_type
89 {
90 return this->sle_->at(sfOwnerNode);
91 }
92
97 [[nodiscard]]
100 {
101 if (hasDestinationNode())
102 return this->sle_->at(sfDestinationNode);
103 return std::nullopt;
104 }
105
110 [[nodiscard]]
111 bool
113 {
114 return this->sle_->isFieldPresent(sfDestinationNode);
115 }
116
121 [[nodiscard]]
122 SF_UINT256::type::value_type
124 {
125 return this->sle_->at(sfPreviousTxnID);
126 }
127
132 [[nodiscard]]
133 SF_UINT32::type::value_type
135 {
136 return this->sle_->at(sfPreviousTxnLgrSeq);
137 }
138};
139
147class DelegateBuilder : public LedgerEntryBuilderBase<DelegateBuilder>
148{
149public:
161 {
162 setAccount(account);
163 setAuthorize(authorize);
164 setPermissions(permissions);
165 setOwnerNode(ownerNode);
166 setPreviousTxnID(previousTxnID);
167 setPreviousTxnLgrSeq(previousTxnLgrSeq);
168 }
169
176 {
177 if (sle->at(sfLedgerEntryType) != ltDELEGATE)
178 {
179 throw std::runtime_error("Invalid ledger entry type for Delegate");
180 }
181 object_ = *sle;
182 }
183
185
192 {
193 object_[sfAccount] = value;
194 return *this;
195 }
196
203 {
204 object_[sfAuthorize] = value;
205 return *this;
206 }
207
214 {
215 object_.setFieldArray(sfPermissions, value);
216 return *this;
217 }
218
225 {
226 object_[sfOwnerNode] = value;
227 return *this;
228 }
229
236 {
237 object_[sfDestinationNode] = value;
238 return *this;
239 }
240
247 {
248 object_[sfPreviousTxnID] = value;
249 return *this;
250 }
251
258 {
259 object_[sfPreviousTxnLgrSeq] = value;
260 return *this;
261 }
262
269 build(uint256 const& index)
270 {
271 return Delegate{std::make_shared<SLE>(std::move(object_), index)};
272 }
273};
274
275} // namespace xrpl::ledger_entries
std::shared_ptr< STLedgerEntry const > const_pointer
Builder for Delegate ledger entries.
Definition Delegate.h:148
Delegate build(uint256 const &index)
Build and return the completed Delegate wrapper.
Definition Delegate.h:269
DelegateBuilder & setAccount(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
Definition Delegate.h:191
DelegateBuilder & setPermissions(STArray const &value)
Set sfPermissions (SoeRequired).
Definition Delegate.h:213
DelegateBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (SoeRequired).
Definition Delegate.h:246
DelegateBuilder(SLE::const_pointer sle)
Construct a DelegateBuilder from an existing SLE object.
Definition Delegate.h:175
DelegateBuilder & setDestinationNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfDestinationNode (SoeOptional).
Definition Delegate.h:235
DelegateBuilder & setOwnerNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfOwnerNode (SoeRequired).
Definition Delegate.h:224
DelegateBuilder & setAuthorize(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Set sfAuthorize (SoeRequired).
Definition Delegate.h:202
DelegateBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (SoeRequired).
Definition Delegate.h:257
DelegateBuilder(std::decay_t< typename SF_ACCOUNT::type::value_type > const &account, std::decay_t< typename SF_ACCOUNT::type::value_type > const &authorize, STArray const &permissions, 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 DelegateBuilder with required fields.
Definition Delegate.h:159
Ledger Entry: Delegate.
Definition Delegate.h:28
SF_ACCOUNT::type::value_type getAccount() const
Get sfAccount (SoeRequired).
Definition Delegate.h:54
protocol_autogen::Optional< SF_UINT64::type::value_type > getDestinationNode() const
Get sfDestinationNode (SoeOptional).
Definition Delegate.h:99
SF_ACCOUNT::type::value_type getAuthorize() const
Get sfAuthorize (SoeRequired).
Definition Delegate.h:65
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeRequired).
Definition Delegate.h:134
bool hasDestinationNode() const
Check if sfDestinationNode is present.
Definition Delegate.h:112
STArray const & getPermissions() const
Get sfPermissions (SoeRequired).
Definition Delegate.h:77
static constexpr LedgerEntryType entryType
Definition Delegate.h:30
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (SoeRequired).
Definition Delegate.h:88
Delegate(SLE::const_pointer sle)
Construct a Delegate ledger entry wrapper from an existing SLE object.
Definition Delegate.h:36
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (SoeRequired).
Definition Delegate.h:123
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.
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