xrpld
Loading...
Searching...
No Matches
protocol_autogen/transactions/EscrowCreate.h
1// This file is auto-generated. Do not edit.
2#pragma once
3
4#include <xrpl/protocol/STTx.h>
5#include <xrpl/protocol/STParsedJSON.h>
6#include <xrpl/protocol/jss.h>
7#include <xrpl/protocol_autogen/TransactionBase.h>
8#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
9#include <xrpl/json/json_value.h>
10
11#include <stdexcept>
12#include <optional>
13
14namespace xrpl::transactions {
15
17
30{
31public:
32 static constexpr xrpl::TxType txType = ttESCROW_CREATE;
33
39 : TransactionBase(std::move(tx))
40 {
41 // Verify transaction type
42 if (tx_->getTxnType() != txType)
43 {
44 throw std::runtime_error("Invalid transaction type for EscrowCreate");
45 }
46 }
47
48 // Transaction-specific field getters
49
54 [[nodiscard]]
55 SF_ACCOUNT::type::value_type
57 {
58 return this->tx_->at(sfDestination);
59 }
60
65 [[nodiscard]]
68 {
70 {
71 return this->tx_->at(sfDestinationTag);
72 }
73 return std::nullopt;
74 }
75
80 [[nodiscard]]
81 bool
83 {
84 return this->tx_->isFieldPresent(sfDestinationTag);
85 }
86
92 [[nodiscard]]
93 SF_AMOUNT::type::value_type
94 getAmount() const
95 {
96 return this->tx_->at(sfAmount);
97 }
98
103 [[nodiscard]]
106 {
107 if (hasCondition())
108 {
109 return this->tx_->at(sfCondition);
110 }
111 return std::nullopt;
112 }
113
118 [[nodiscard]]
119 bool
121 {
122 return this->tx_->isFieldPresent(sfCondition);
123 }
124
129 [[nodiscard]]
132 {
133 if (hasCancelAfter())
134 {
135 return this->tx_->at(sfCancelAfter);
136 }
137 return std::nullopt;
138 }
139
144 [[nodiscard]]
145 bool
147 {
148 return this->tx_->isFieldPresent(sfCancelAfter);
149 }
150
155 [[nodiscard]]
158 {
159 if (hasFinishAfter())
160 {
161 return this->tx_->at(sfFinishAfter);
162 }
163 return std::nullopt;
164 }
165
170 [[nodiscard]]
171 bool
173 {
174 return this->tx_->isFieldPresent(sfFinishAfter);
175 }
176
181 [[nodiscard]]
184 {
185 if (hasBytecode())
186 {
187 return this->tx_->at(sfBytecode);
188 }
189 return std::nullopt;
190 }
191
196 [[nodiscard]]
197 bool
199 {
200 return this->tx_->isFieldPresent(sfBytecode);
201 }
202
207 [[nodiscard]]
209 getData() const
210 {
211 if (hasData())
212 {
213 return this->tx_->at(sfData);
214 }
215 return std::nullopt;
216 }
217
222 [[nodiscard]]
223 bool
224 hasData() const
225 {
226 return this->tx_->isFieldPresent(sfData);
227 }
228};
229
237class EscrowCreateBuilder : public TransactionBuilderBase<EscrowCreateBuilder>
238{
239public:
248 EscrowCreateBuilder(SF_ACCOUNT::type::value_type account,
251)
252 : TransactionBuilderBase<EscrowCreateBuilder>(ttESCROW_CREATE, account, sequence, fee)
253 {
254 setDestination(destination);
255 setAmount(amount);
256 }
257
264 {
265 if (tx->getTxnType() != ttESCROW_CREATE)
266 {
267 throw std::runtime_error("Invalid transaction type for EscrowCreateBuilder");
268 }
269 object_ = *tx;
270 }
271
275
282 {
283 object_[sfDestination] = value;
284 return *this;
285 }
286
293 {
294 object_[sfDestinationTag] = value;
295 return *this;
296 }
297
305 {
306 object_[sfAmount] = value;
307 return *this;
308 }
309
316 {
317 object_[sfCondition] = value;
318 return *this;
319 }
320
327 {
328 object_[sfCancelAfter] = value;
329 return *this;
330 }
331
338 {
339 object_[sfFinishAfter] = value;
340 return *this;
341 }
342
349 {
350 object_[sfBytecode] = value;
351 return *this;
352 }
353
360 {
361 object_[sfData] = value;
362 return *this;
363 }
364
372 build(PublicKey const& publicKey, SecretKey const& secretKey)
373 {
374 sign(publicKey, secretKey);
375 return EscrowCreate{std::make_shared<STTx>(std::move(object_))};
376 }
377};
378
379} // namespace xrpl::transactions
A public key.
Definition PublicKey.h:53
A secret key.
Definition SecretKey.h:24
EscrowCreateBuilder & setCondition(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfCondition (SoeOptional).
EscrowCreateBuilder & setDestinationTag(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfDestinationTag (SoeOptional).
EscrowCreateBuilder(std::shared_ptr< STTx const > tx)
Construct a EscrowCreateBuilder from an existing STTx object.
EscrowCreateBuilder(SF_ACCOUNT::type::value_type account, std::decay_t< typename SF_ACCOUNT::type::value_type > const &destination, std::decay_t< typename SF_AMOUNT::type::value_type > const &amount, std::optional< SF_UINT32::type::value_type > sequence=std::nullopt, std::optional< SF_AMOUNT::type::value_type > fee=std::nullopt)
Construct a new EscrowCreateBuilder with required fields.
EscrowCreateBuilder & setBytecode(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfBytecode (SoeOptional).
EscrowCreateBuilder & setFinishAfter(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfFinishAfter (SoeOptional).
EscrowCreate build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the EscrowCreate wrapper.
EscrowCreateBuilder & setData(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfData (SoeOptional).
EscrowCreateBuilder & setDestination(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Transaction-specific field setters.
EscrowCreateBuilder & setAmount(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfAmount (SoeRequired).
EscrowCreateBuilder & setCancelAfter(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfCancelAfter (SoeOptional).
protocol_autogen::Optional< SF_VL::type::value_type > getCondition() const
Get sfCondition (SoeOptional).
bool hasDestinationTag() const
Check if sfDestinationTag is present.
protocol_autogen::Optional< SF_VL::type::value_type > getData() const
Get sfData (SoeOptional).
bool hasFinishAfter() const
Check if sfFinishAfter is present.
SF_ACCOUNT::type::value_type getDestination() const
Get sfDestination (SoeRequired).
bool hasCondition() const
Check if sfCondition is present.
bool hasCancelAfter() const
Check if sfCancelAfter is present.
bool hasBytecode() const
Check if sfBytecode is present.
protocol_autogen::Optional< SF_UINT32::type::value_type > getDestinationTag() const
Get sfDestinationTag (SoeOptional).
EscrowCreate(std::shared_ptr< STTx const > tx)
Construct a EscrowCreate transaction wrapper from an existing STTx object.
protocol_autogen::Optional< SF_UINT32::type::value_type > getCancelAfter() const
Get sfCancelAfter (SoeOptional).
SF_AMOUNT::type::value_type getAmount() const
Get sfAmount (SoeRequired).
protocol_autogen::Optional< SF_UINT32::type::value_type > getFinishAfter() const
Get sfFinishAfter (SoeOptional).
protocol_autogen::Optional< SF_VL::type::value_type > getBytecode() const
Get sfBytecode (SoeOptional).
std::shared_ptr< STTx const > tx_
The underlying transaction object being wrapped.
TransactionBase(std::shared_ptr< STTx const > tx)
Construct a transaction wrapper from an existing STTx object.
EscrowCreateBuilder & sign(PublicKey const &publicKey, SecretKey const &secretKey)
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
TxType
Transaction type identifiers.
Definition TxFormats.h:45