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::Env const& env,
99  jtx::Account const& account,
100  std::uint32_t tokenTaxon,
101  std::uint32_t nftSeq,
102  std::uint16_t flags = 0,
103  std::uint16_t xferFee = 0);
104 
107 burn(jtx::Account const& account, uint256 const& nftokenID);
108 
112  jtx::Account const& account,
113  uint256 const& nftokenID,
114  STAmount const& amount);
115 
117 class owner
118 {
119 private:
121 
122 public:
123  explicit owner(jtx::Account const& ownedBy) : owner_(ownedBy.human())
124  {
125  }
126 
127  void
128  operator()(Env&, JTx& jtx) const;
129 };
130 
133 {
134 private:
136 
137 public:
138  explicit expiration(std::uint32_t const& expires) : expires_(expires)
139  {
140  }
141 
142  void
143  operator()(Env&, JTx& jtx) const;
144 };
145 
148 {
149 private:
151 
152 public:
153  explicit destination(jtx::Account const& dest) : dest_(dest.human())
154  {
155  }
156 
157  void
158  operator()(Env&, JTx& jtx) const;
159 };
160 
164  jtx::Account const& account,
165  std::initializer_list<uint256> const& nftokenOffers = {});
166 
169  jtx::Account const& account,
170  std::vector<uint256> const& nftokenOffers);
171 
174 {
175 private:
177 
178 public:
179  explicit rootIndex(uint256 const& index) : rootIndex_(to_string(index))
180  {
181  }
182 
183  void
184  operator()(Env&, JTx& jtx) const;
185 };
186 
189 acceptBuyOffer(jtx::Account const& account, uint256 const& offerIndex);
190 
193 acceptSellOffer(jtx::Account const& account, uint256 const& offerIndex);
194 
198  jtx::Account const& account,
199  uint256 const& buyOfferIndex,
200  uint256 const& sellOfferIndex);
201 
204 {
205 private:
207 
208 public:
209  explicit brokerFee(STAmount const fee) : brokerFee_(fee)
210  {
211  }
212 
213  void
214  operator()(Env&, JTx& jtx) const;
215 };
216 
219 setMinter(jtx::Account const& account, jtx::Account const& minter);
220 
223 clearMinter(jtx::Account const& account);
224 
225 } // namespace token
226 
227 } // namespace jtx
228 
229 } // namespace test
230 } // namespace ripple
231 
232 #endif // RIPPLE_TEST_JTX_NFT_H_INCLUDED
ripple::test::jtx::token::expiration
Sets the optional Expiration field on an NFTokenOffer.
Definition: token.h:132
ripple::test::jtx::token::destination
Sets the optional Destination field on an NFTokenOffer.
Definition: token.h:147
std::string
STL class.
ripple::test::jtx::token::rootIndex::rootIndex
rootIndex(uint256 const &index)
Definition: token.h:179
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:176
ripple::test::jtx::token::rootIndex::rootIndex_
std::string rootIndex_
Definition: token.h:176
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:196
std::vector
STL class.
ripple::test::jtx::token::issuer
Sets the optional Issuer on an NFTokenMint.
Definition: token.h:57
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:123
ripple::test::jtx::token::brokerFee::brokerFee
brokerFee(STAmount const fee)
Definition: token.h:209
ripple::test::jtx::token::acceptSellOffer
Json::Value acceptSellOffer(jtx::Account const &account, uint256 const &offerIndex)
Accept an NFToken sell offer.
Definition: token.cpp:186
ripple::test::jtx::token::rootIndex::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:170
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:210
ripple::test::jtx::token::rootIndex
Sets the optional RootIndex field when canceling NFTokenOffers.
Definition: token.h:173
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:117
ripple::test::jtx::token::cancelOffer
Json::Value cancelOffer(jtx::Account const &account, std::initializer_list< uint256 > const &nftokenOffers)
Cancel NFTokenOffers.
Definition: token.cpp:154
ripple::test::jtx::token::brokerFee
Sets the optional NFTokenBrokerFee field in a brokerOffer transaction.
Definition: token.h:203
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:206
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:153
ripple::test::jtx::token::burn
Json::Value burn(jtx::Account const &account, uint256 const &nftokenID)
Burn an NFToken.
Definition: token.cpp:96
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:106
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:150
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:132
ripple::test::jtx::token::expiration::expires_
std::uint32_t expires_
Definition: token.h:135
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:138
ripple::test::jtx::token::owner::operator()
void operator()(Env &, JTx &jtx) const
Definition: token.cpp:120
ripple::test::jtx::token::getID
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.
Definition: token.cpp:75
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:224
ripple::test::jtx::token::owner::owner_
std::string owner_
Definition: token.h:120
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:216
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:126