rippled
token.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2021 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_TEST_JTX_NFT_H_INCLUDED
21 #define RIPPLE_TEST_JTX_NFT_H_INCLUDED
22 
23 #include <test/jtx/Account.h>
24 #include <test/jtx/Env.h>
25 #include <test/jtx/owners.h>
26 
27 #include <ripple/basics/strHex.h>
28 
29 #include <initializer_list>
30 
31 namespace ripple {
32 namespace test {
33 namespace jtx {
34 
35 namespace token {
36 
39 mint(jtx::Account const& account, std::uint32_t tokenTaxon = 0);
40 
42 class xferFee
43 {
44 private:
46 
47 public:
49  {
50  }
51 
52  void
53  operator()(Env&, JTx& jtx) const;
54 };
55 
57 class issuer
58 {
59 private:
61 
62 public:
63  explicit issuer(jtx::Account const& issue) : issuer_(issue.human())
64  {
65  }
66 
67  void
68  operator()(Env&, JTx& jtx) const;
69 };
70 
72 class uri
73 {
74 private:
76 
77 public:
78  explicit uri(std::string const& u) : uri_(strHex(u))
79  {
80  }
81 
82  void
83  operator()(Env&, JTx& jtx) const;
84 };
85 
87 uint256
88 getNextID(
89  jtx::Env const& env,
90  jtx::Account const& account,
91  std::uint32_t nftokenTaxon,
92  std::uint16_t flags = 0,
93  std::uint16_t xferFee = 0);
94 
96 uint256
97 getID(
98  jtx::Account const& account,
99  std::uint32_t tokenTaxon,
100  std::uint32_t nftSeq,
101  std::uint16_t flags = 0,
102  std::uint16_t xferFee = 0);
103 
106 burn(jtx::Account const& account, uint256 const& nftokenID);
107 
111  jtx::Account const& account,
112  uint256 const& nftokenID,
113  STAmount const& amount);
114 
116 class owner
117 {
118 private:
120 
121 public:
122  explicit owner(jtx::Account const& ownedBy) : owner_(ownedBy.human())
123  {
124  }
125 
126  void
127  operator()(Env&, JTx& jtx) const;
128 };
129 
132 {
133 private:
135 
136 public:
137  explicit expiration(std::uint32_t const& expires) : expires_(expires)
138  {
139  }
140 
141  void
142  operator()(Env&, JTx& jtx) const;
143 };
144 
147 {
148 private:
150 
151 public:
152  explicit destination(jtx::Account const& dest) : dest_(dest.human())
153  {
154  }
155 
156  void
157  operator()(Env&, JTx& jtx) const;
158 };
159 
163  jtx::Account const& account,
164  std::initializer_list<uint256> const& nftokenOffers = {});
165 
168  jtx::Account const& account,
169  std::vector<uint256> const& nftokenOffers);
170 
173 {
174 private:
176 
177 public:
178  explicit rootIndex(uint256 const& index) : rootIndex_(to_string(index))
179  {
180  }
181 
182  void
183  operator()(Env&, JTx& jtx) const;
184 };
185 
188 acceptBuyOffer(jtx::Account const& account, uint256 const& offerIndex);
189 
192 acceptSellOffer(jtx::Account const& account, uint256 const& offerIndex);
193 
197  jtx::Account const& account,
198  uint256 const& buyOfferIndex,
199  uint256 const& sellOfferIndex);
200 
203 {
204 private:
206 
207 public:
208  explicit brokerFee(STAmount const fee) : brokerFee_(fee)
209  {
210  }
211 
212  void
213  operator()(Env&, JTx& jtx) const;
214 };
215 
218 setMinter(jtx::Account const& account, jtx::Account const& minter);
219 
222 clearMinter(jtx::Account const& account);
223 
224 } // namespace token
225 
226 } // namespace jtx
227 
228 } // namespace test
229 } // namespace ripple
230 
231 #endif // RIPPLE_TEST_JTX_NFT_H_INCLUDED
ripple::test::jtx::token::expiration
Sets the optional Expiration field on an NFTokenOffer.
Definition: token.h:131
ripple::test::jtx::token::destination
Sets the optional Destination field on an NFTokenOffer.
Definition: token.h:146
std::string
STL class.
ripple::test::jtx::token::rootIndex::rootIndex
rootIndex(uint256 const &index)
Definition: token.h:178
ripple::test::jtx::token::uri::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:55
ripple::test::jtx::token::acceptBuyOffer
Json::Value acceptBuyOffer(jtx::Account const &account, uint256 const &offerIndex)
Accept an NFToken buy offer.
Definition: token.cpp:167
ripple::test::jtx::token::rootIndex::rootIndex_
std::string rootIndex_
Definition: token.h:175
ripple::test::jtx::token::issuer::issuer_
std::string issuer_
Definition: token.h:60
ripple::test::jtx::token::brokerOffers
Json::Value brokerOffers(jtx::Account const &account, uint256 const &buyOfferIndex, uint256 const &sellOfferIndex)
Broker two NFToken offers.
Definition: token.cpp:187
std::vector
STL class.
ripple::test::jtx::token::issuer
Sets the optional Issuer on an NFTokenMint.
Definition: token.h:57
ripple::test::jtx::token::getID
uint256 getID(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.
Definition: token.cpp:75
ripple::test::jtx::token::xferFee::xferFee
xferFee(std::uint16_t fee)
Definition: token.h:48
ripple::test::jtx::token::owner::owner
owner(jtx::Account const &ownedBy)
Definition: token.h:122
ripple::test::jtx::token::brokerFee::brokerFee
brokerFee(STAmount const fee)
Definition: token.h:208
ripple::test::jtx::token::acceptSellOffer
Json::Value acceptSellOffer(jtx::Account const &account, uint256 const &offerIndex)
Accept an NFToken sell offer.
Definition: token.cpp:177
ripple::test::jtx::token::rootIndex::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:161
ripple::test::jtx::token::issuer::issuer
issuer(jtx::Account const &issue)
Definition: token.h:63
ripple::test::jtx::token::uri
Sets the optional URI on an NFTokenMint.
Definition: token.h:72
ripple::test::jtx::token::getNextID
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.
Definition: token.cpp:61
ripple::test::jtx::token::brokerFee::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:201
ripple::test::jtx::token::rootIndex
Sets the optional RootIndex field when canceling NFTokenOffers.
Definition: token.h:172
ripple::test::jtx::token::uri::uri_
std::string uri_
Definition: token.h:75
ripple::test::jtx::token::owner
Sets the optional Owner on an NFTokenOffer.
Definition: token.h:116
ripple::test::jtx::token::cancelOffer
Json::Value cancelOffer(jtx::Account const &account, std::initializer_list< uint256 > const &nftokenOffers)
Cancel NFTokenOffers.
Definition: token.cpp:145
ripple::test::jtx::token::brokerFee
Sets the optional NFTokenBrokerFee field in a brokerOffer transaction.
Definition: token.h:202
ripple::base_uint< 256 >
ripple::test::jtx::token::xferFee
Sets the optional TransferFee on an NFTokenMint.
Definition: token.h:42
ripple::test::jtx::token::brokerFee::brokerFee_
const STAmount brokerFee_
Definition: token.h:205
ripple::test::jtx::token::xferFee::xferFee_
std::uint16_t xferFee_
Definition: token.h:45
ripple::test::jtx::token::destination::destination
destination(jtx::Account const &dest)
Definition: token.h:152
ripple::test::jtx::token::burn
Json::Value burn(jtx::Account const &account, uint256 const &nftokenID)
Burn an NFToken.
Definition: token.cpp:87
ripple::test::jtx::JTx
Execution context for applying a JSON transaction.
Definition: JTx.h:42
ripple::STAmount
Definition: STAmount.h:45
ripple::test::jtx::token::issuer::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:49
std::uint32_t
ripple::test::jtx::token::mint
Json::Value mint(jtx::Account const &account, std::uint32_t nfTokenTaxon)
Mint an NFToken.
Definition: token.cpp:33
ripple::test::jtx::fee
Set the fee on a JTx.
Definition: fee.h:35
ripple::test::jtx::token::uri::uri
uri(std::string const &u)
Definition: token.h:78
ripple::test::jtx::token::xferFee::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:43
ripple::test::jtx::token::createOffer
Json::Value createOffer(jtx::Account const &account, uint256 const &nftokenID, STAmount const &amount)
Create an NFTokenOffer.
Definition: token.cpp:97
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::test::jtx::token::destination::dest_
std::string dest_
Definition: token.h:149
ripple::test::jtx::flags
Match set account flags.
Definition: flags.h:108
ripple::test::jtx::token::destination::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:123
ripple::test::jtx::token::expiration::expires_
std::uint32_t expires_
Definition: token.h:134
ripple::to_string
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
Definition: app/misc/impl/Manifest.cpp:41
ripple::test::jtx::Account
Immutable cryptographic account descriptor.
Definition: Account.h:37
ripple::strHex
std::string strHex(FwdIt begin, FwdIt end)
Definition: strHex.h:30
ripple::test::jtx::token::expiration::expiration
expiration(std::uint32_t const &expires)
Definition: token.h:137
ripple::test::jtx::token::owner::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:111
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:116
ripple::test::jtx::token::clearMinter
Json::Value clearMinter(jtx::Account const &account)
Clear any authorized minter from an account root.
Definition: token.cpp:215
ripple::test::jtx::token::owner::owner_
std::string owner_
Definition: token.h:119
ripple::test::jtx::token::setMinter
Json::Value setMinter(jtx::Account const &account, jtx::Account const &minter)
Set the authorized minter on an account root.
Definition: token.cpp:207
Json::Value
Represents a JSON value.
Definition: json_value.h:145
initializer_list
ripple::test::jtx::token::expiration::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:117