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>
42 throw std::runtime_error(
"Invalid ledger entry type for AMM");
53 SF_ACCOUNT::type::value_type
56 return this->
sle_->at(sfAccount);
68 return this->
sle_->at(sfTradingFee);
80 return this->
sle_->isFieldPresent(sfTradingFee);
92 if (this->
sle_->isFieldPresent(sfVoteSlots))
93 return this->
sle_->getFieldArray(sfVoteSlots);
105 return this->
sle_->isFieldPresent(sfVoteSlots);
117 if (this->
sle_->isFieldPresent(sfAuctionSlot))
118 return this->
sle_->getFieldObject(sfAuctionSlot);
130 return this->
sle_->isFieldPresent(sfAuctionSlot);
138 SF_AMOUNT::type::value_type
141 return this->
sle_->at(sfLPTokenBalance);
149 SF_ISSUE::type::value_type
152 return this->
sle_->at(sfAsset);
160 SF_ISSUE::type::value_type
163 return this->
sle_->at(sfAsset2);
171 SF_UINT64::type::value_type
174 return this->
sle_->at(sfOwnerNode);
186 return this->
sle_->at(sfPreviousTxnID);
198 return this->
sle_->isFieldPresent(sfPreviousTxnID);
210 return this->
sle_->at(sfPreviousTxnLgrSeq);
222 return this->
sle_->isFieldPresent(sfPreviousTxnLgrSeq);
261 if (sle->at(sfLedgerEntryType) != ltAMM)
299 object_.setFieldArray(sfVoteSlots, value);
310 object_.setFieldObject(sfAuctionSlot, value);
321 object_[sfLPTokenBalance] = value;
365 object_[sfPreviousTxnID] = value;
376 object_[sfPreviousTxnLgrSeq] = value;
std::shared_ptr< STLedgerEntry const > const_pointer
Builder for AMM ledger entries.
AMMBuilder & setTradingFee(std::decay_t< typename SF_UINT16::type::value_type > const &value)
Set sfTradingFee (SoeDefault).
AMMBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (SoeOptional).
AMMBuilder & setAuctionSlot(STObject const &value)
Set sfAuctionSlot (SoeOptional).
AMMBuilder & setOwnerNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfOwnerNode (SoeRequired).
AMMBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (SoeOptional).
AMMBuilder & setVoteSlots(STArray const &value)
Set sfVoteSlots (SoeOptional).
AMMBuilder & setAsset2(std::decay_t< typename SF_ISSUE::type::value_type > const &value)
Set sfAsset2 (SoeRequired).
AMMBuilder & setLPTokenBalance(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfLPTokenBalance (SoeRequired).
AMMBuilder & setAsset(std::decay_t< typename SF_ISSUE::type::value_type > const &value)
Set sfAsset (SoeRequired).
AMMBuilder & setAccount(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
AMMBuilder(std::decay_t< typename SF_ACCOUNT::type::value_type > const &account, std::decay_t< typename SF_AMOUNT::type::value_type > const &lPTokenBalance, std::decay_t< typename SF_ISSUE::type::value_type > const &asset, std::decay_t< typename SF_ISSUE::type::value_type > const &asset2, std::decay_t< typename SF_UINT64::type::value_type > const &ownerNode)
Construct a new AMMBuilder with required fields.
AMM build(uint256 const &index)
Build and return the completed AMM wrapper.
AMMBuilder(SLE::const_pointer sle)
Construct a AMMBuilder from an existing SLE object.
AMM(SLE::const_pointer sle)
Construct a AMM ledger entry wrapper from an existing SLE object.
SF_ISSUE::type::value_type getAsset2() const
Get sfAsset2 (SoeRequired).
bool hasPreviousTxnLgrSeq() const
Check if sfPreviousTxnLgrSeq is present.
SF_ISSUE::type::value_type getAsset() const
Get sfAsset (SoeRequired).
std::optional< STObject > getAuctionSlot() const
Get sfAuctionSlot (SoeOptional).
protocol_autogen::Optional< SF_UINT32::type::value_type > getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeOptional).
bool hasPreviousTxnID() const
Check if sfPreviousTxnID is present.
bool hasTradingFee() const
Check if sfTradingFee is present.
SF_AMOUNT::type::value_type getLPTokenBalance() const
Get sfLPTokenBalance (SoeRequired).
std::optional< std::reference_wrapper< STArray const > > getVoteSlots() const
Get sfVoteSlots (SoeOptional).
bool hasAuctionSlot() const
Check if sfAuctionSlot is present.
static constexpr LedgerEntryType entryType
SF_ACCOUNT::type::value_type getAccount() const
Get sfAccount (SoeRequired).
protocol_autogen::Optional< SF_UINT256::type::value_type > getPreviousTxnID() const
Get sfPreviousTxnID (SoeOptional).
protocol_autogen::Optional< SF_UINT16::type::value_type > getTradingFee() const
Get sfTradingFee (SoeDefault).
bool hasVoteSlots() const
Check if sfVoteSlots is present.
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (SoeRequired).
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.
LedgerEntryBuilderBase()=default
std::conditional_t< std::is_reference_v< ValueType >, std::optional< std::reference_wrapper< std::remove_reference_t< ValueType > > >, std::optional< ValueType > > Optional
LedgerEntryType
Identifiers for on-ledger objects.