rippled
Loading...
Searching...
No Matches
protocol_autogen/transactions/AMMBid.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
16class AMMBidBuilder;
17
29class AMMBid : public TransactionBase
30{
31public:
32 static constexpr xrpl::TxType txType = ttAMM_BID;
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 AMMBid");
45 }
46 }
47
48 // Transaction-specific field getters
49
54 [[nodiscard]]
55 SF_ISSUE::type::value_type
56 getAsset() const
57 {
58 return this->tx_->at(sfAsset);
59 }
60
65 [[nodiscard]]
66 SF_ISSUE::type::value_type
67 getAsset2() const
68 {
69 return this->tx_->at(sfAsset2);
70 }
71
76 [[nodiscard]]
78 getBidMin() const
79 {
80 if (hasBidMin())
81 {
82 return this->tx_->at(sfBidMin);
83 }
84 return std::nullopt;
85 }
86
91 [[nodiscard]]
92 bool
93 hasBidMin() const
94 {
95 return this->tx_->isFieldPresent(sfBidMin);
96 }
97
102 [[nodiscard]]
104 getBidMax() const
105 {
106 if (hasBidMax())
107 {
108 return this->tx_->at(sfBidMax);
109 }
110 return std::nullopt;
111 }
112
117 [[nodiscard]]
118 bool
119 hasBidMax() const
120 {
121 return this->tx_->isFieldPresent(sfBidMax);
122 }
128 [[nodiscard]]
131 {
132 if (this->tx_->isFieldPresent(sfAuthAccounts))
133 return this->tx_->getFieldArray(sfAuthAccounts);
134 return std::nullopt;
135 }
136
141 [[nodiscard]]
142 bool
144 {
145 return this->tx_->isFieldPresent(sfAuthAccounts);
146 }
147};
148
156class AMMBidBuilder : public TransactionBuilderBase<AMMBidBuilder>
157{
158public:
167 AMMBidBuilder(SF_ACCOUNT::type::value_type account,
170)
171 : TransactionBuilderBase<AMMBidBuilder>(ttAMM_BID, account, sequence, fee)
172 {
173 setAsset(asset);
174 setAsset2(asset2);
175 }
176
183 {
184 if (tx->getTxnType() != ttAMM_BID)
185 {
186 throw std::runtime_error("Invalid transaction type for AMMBidBuilder");
187 }
188 object_ = *tx;
189 }
190
199 {
200 object_[sfAsset] = STIssue(sfAsset, value);
201 return *this;
202 }
203
210 {
211 object_[sfAsset2] = STIssue(sfAsset2, value);
212 return *this;
213 }
214
221 {
222 object_[sfBidMin] = value;
223 return *this;
224 }
225
232 {
233 object_[sfBidMax] = value;
234 return *this;
235 }
236
243 {
244 object_.setFieldArray(sfAuthAccounts, value);
245 return *this;
246 }
247
254 AMMBid
255 build(PublicKey const& publicKey, SecretKey const& secretKey)
256 {
257 sign(publicKey, secretKey);
258 return AMMBid{std::make_shared<STTx>(std::move(object_))};
259 }
260};
261
262} // namespace xrpl::transactions
A public key.
Definition PublicKey.h:42
void setFieldArray(SField const &field, STArray const &v)
Definition STObject.cpp:819
A secret key.
Definition SecretKey.h:18
AMMBidBuilder & setBidMax(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfBidMax (soeOPTIONAL)
AMMBidBuilder & setAuthAccounts(STArray const &value)
Set sfAuthAccounts (soeOPTIONAL)
AMMBidBuilder & setBidMin(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfBidMin (soeOPTIONAL)
AMMBidBuilder(SF_ACCOUNT::type::value_type account, std::decay_t< typename SF_ISSUE::type::value_type > const &asset, std::decay_t< typename SF_ISSUE::type::value_type > const &asset2, std::optional< SF_UINT32::type::value_type > sequence=std::nullopt, std::optional< SF_AMOUNT::type::value_type > fee=std::nullopt)
Construct a new AMMBidBuilder with required fields.
AMMBidBuilder & setAsset2(std::decay_t< typename SF_ISSUE::type::value_type > const &value)
Set sfAsset2 (soeREQUIRED)
AMMBidBuilder & setAsset(std::decay_t< typename SF_ISSUE::type::value_type > const &value)
Transaction-specific field setters.
AMMBidBuilder(std::shared_ptr< STTx const > tx)
Construct a AMMBidBuilder from an existing STTx object.
AMMBid build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AMMBid wrapper.
bool hasBidMin() const
Check if sfBidMin is present.
bool hasBidMax() const
Check if sfBidMax is present.
std::optional< std::reference_wrapper< STArray const > > getAuthAccounts() const
Get sfAuthAccounts (soeOPTIONAL)
protocol_autogen::Optional< SF_AMOUNT::type::value_type > getBidMin() const
Get sfBidMin (soeOPTIONAL)
bool hasAuthAccounts() const
Check if sfAuthAccounts is present.
AMMBid(std::shared_ptr< STTx const > tx)
Construct a AMMBid transaction wrapper from an existing STTx object.
protocol_autogen::Optional< SF_AMOUNT::type::value_type > getBidMax() const
Get sfBidMax (soeOPTIONAL)
SF_ISSUE::type::value_type getAsset2() const
Get sfAsset2 (soeREQUIRED)
SF_ISSUE::type::value_type getAsset() const
Get sfAsset (soeREQUIRED)
Base class for all transaction wrapper types.
std::shared_ptr< STTx const > tx_
The underlying transaction object being wrapped.
Base class for all transaction builders.
AMMBidBuilder & sign(PublicKey const &publicKey, SecretKey const &secretKey)
Sign the transaction with the given keys.
T is_same_v
STL namespace.
TxType
Transaction type identifiers.
Definition TxFormats.h:39