1#include <test/jtx/token.h>
3#include <test/jtx/Account.h>
4#include <test/jtx/Env.h>
5#include <test/jtx/JTx.h>
6#include <test/jtx/flags.h>
8#include <xrpl/basics/base_uint.h>
9#include <xrpl/json/json_value.h>
10#include <xrpl/protocol/SField.h>
11#include <xrpl/protocol/TxFlags.h>
12#include <xrpl/protocol/jss.h>
13#include <xrpl/protocol/nft.h>
14#include <xrpl/tx/transactors/nft/NFTokenMint.h>
26 jv[sfAccount.jsonName] = account.human();
27 jv[sfNFTokenTaxon.jsonName] = nfTokenTaxon;
28 jv[sfTransactionType.jsonName] = jss::NFTokenMint;
47 jt.
jv[sfURI.jsonName] =
uri_;
65 std::uint32_t const nftSeq = {env.
le(issuer)->at(~sfMintedNFTokens).value_or(0)};
66 return token::getID(env, issuer, nfTokenTaxon, nftSeq, flags, xferFee);
80 nftSeq += env.
le(issuer)->at(~sfFirstNFTokenSequence).value_or(env.
seq(issuer));
82 flags, xferFee, issuer,
nft::toTaxon(nfTokenTaxon), nftSeq);
89 jv[sfAccount.jsonName] = account.human();
90 jv[sfNFTokenID.jsonName] =
to_string(nftokenID);
91 jv[jss::TransactionType] = jss::NFTokenBurn;
99 jv[sfAccount.jsonName] = account.human();
100 jv[sfNFTokenID.jsonName] =
to_string(nftokenID);
102 jv[jss::TransactionType] = jss::NFTokenCreateOffer;
121 jt.
jv[sfDestination.jsonName] =
dest_;
129 jv[sfAccount.jsonName] = account.human();
130 if (!empty(nftokenOffers))
133 for (
uint256 const& nftokenOffer : nftokenOffers)
136 jv[jss::TransactionType] = jss::NFTokenCancelOffer;
162 jv[sfAccount.jsonName] = account.human();
163 jv[sfNFTokenBuyOffer.jsonName] =
to_string(offerIndex);
164 jv[jss::TransactionType] = jss::NFTokenAcceptOffer;
172 jv[sfAccount.jsonName] = account.human();
173 jv[sfNFTokenSellOffer.jsonName] =
to_string(offerIndex);
174 jv[jss::TransactionType] = jss::NFTokenAcceptOffer;
185 jv[sfAccount.jsonName] = account.human();
186 jv[sfNFTokenBuyOffer.jsonName] =
to_string(buyOfferIndex);
187 jv[sfNFTokenSellOffer.jsonName] =
to_string(sellOfferIndex);
188 jv[jss::TransactionType] = jss::NFTokenAcceptOffer;
202 jt[sfNFTokenMinter.fieldName] = minter.
human();
209 return fclear(account, asfAuthorizedNFTokenMinter);
216 jv[sfAccount.jsonName] = account.human();
217 jv[sfNFTokenID.jsonName] =
to_string(nftokenID);
218 jv[jss::TransactionType] = jss::NFTokenModify;
Value & append(Value const &value)
Append value to array at the end.
static uint256 createNFTokenID(std::uint16_t flags, std::uint16_t fee, AccountID const &issuer, nft::Taxon taxon, std::uint32_t tokenSeq)
json::Value getJson(JsonOptions=JsonOptions::Values::None) const override
Immutable cryptographic account descriptor.
std::string const & human() const
Returns the human readable public key.
A transaction testing environment.
SLE::const_pointer le(Account const &account) const
Return an account root.
std::uint32_t seq(Account const &account) const
Returns the next sequence number on account.
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
STAmount const brokerFee_
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
void operator()(Env &, JTx &jtx) const
@ Array
array value (ordered list)
Taxon toTaxon(std::uint32_t i)
static json::Value cancelOfferImpl(jtx::Account const &account, T const &nftokenOffers)
json::Value clearMinter(jtx::Account const &account)
Clear any authorized minter from an account root.
uint256 getID(jtx::Env const &env, jtx::Account const &issuer, std::uint32_t nfTokenTaxon, std::uint32_t nftSeq, std::uint16_t flags, std::uint16_t xferFee)
Get the NFTokenID for a particular nftSequence.
json::Value brokerOffers(jtx::Account const &account, uint256 const &buyOfferIndex, uint256 const &sellOfferIndex)
Broker two NFToken offers.
json::Value mint(jtx::Account const &account, std::uint32_t nfTokenTaxon)
Mint an NFToken.
json::Value cancelOffer(jtx::Account const &account, std::initializer_list< uint256 > const &nftokenOffers)
Cancel NFTokenOffers.
json::Value createOffer(jtx::Account const &account, uint256 const &nftokenID, STAmount const &amount)
Create an NFTokenOffer.
json::Value acceptBuyOffer(jtx::Account const &account, uint256 const &offerIndex)
Accept an NFToken buy offer.
json::Value acceptSellOffer(jtx::Account const &account, uint256 const &offerIndex)
Accept an NFToken sell offer.
json::Value modify(jtx::Account const &account, uint256 const &nftokenID)
Modify an NFToken.
json::Value setMinter(jtx::Account const &account, jtx::Account const &minter)
Set the authorized minter on an account root.
json::Value burn(jtx::Account const &account, uint256 const &nftokenID)
Burn an NFToken.
uint256 getNextID(jtx::Env const &env, jtx::Account const &issuer, std::uint32_t nfTokenTaxon, std::uint16_t flags, std::uint16_t xferFee)
Get the next NFTokenID that will be issued.
json::Value fclear(Account const &account, std::uint32_t off)
Remove account flag.
json::Value fset(Account const &account, std::uint32_t on, std::uint32_t off=0)
Add and/or remove flag.
std::string to_string(BaseUInt< Bits, Tag > const &a)
Execution context for applying a JSON transaction.