xrpld
Loading...
Searching...
No Matches
vault.cpp
1#include <test/jtx/vault.h>
2
3#include <test/jtx/Env.h>
4
5#include <xrpl/basics/base_uint.h>
6#include <xrpl/json/json_value.h>
7#include <xrpl/protocol/Asset.h>
8#include <xrpl/protocol/Indexes.h>
9#include <xrpl/protocol/Keylet.h>
10#include <xrpl/protocol/SField.h>
11#include <xrpl/protocol/STBase.h>
12#include <xrpl/protocol/jss.h>
13
14#include <optional>
15#include <tuple>
16
17namespace xrpl::test::jtx {
18
19std::tuple<json::Value, Keylet>
20Vault::create(CreateArgs const& args) const
21{
22 auto keylet = keylet::vault(args.owner.id(), env.seq(args.owner));
23 json::Value jv;
24 jv[jss::TransactionType] = jss::VaultCreate;
25 jv[jss::Account] = args.owner.human();
26 jv[jss::Asset] = toJson(args.asset);
27 if (args.flags)
28 jv[jss::Flags] = *args.flags;
29 return {jv, keylet};
30}
31
33Vault::set(SetArgs const& args)
34{
35 json::Value jv;
36 jv[jss::TransactionType] = jss::VaultSet;
37 jv[jss::Account] = args.owner.human();
38 jv[sfVaultID] = to_string(args.id);
39 return jv;
40}
41
44{
45 json::Value jv;
46 jv[jss::TransactionType] = jss::VaultDelete;
47 jv[jss::Account] = args.owner.human();
48 jv[sfVaultID] = to_string(args.id);
49 return jv;
50}
51
54{
55 json::Value jv;
56 jv[jss::TransactionType] = jss::VaultDeposit;
57 jv[jss::Account] = args.depositor.human();
58 jv[sfVaultID] = to_string(args.id);
59 jv[jss::Amount] = toJson(args.amount);
60 return jv;
61}
62
65{
66 json::Value jv;
67 jv[jss::TransactionType] = jss::VaultWithdraw;
68 jv[jss::Account] = args.depositor.human();
69 jv[sfVaultID] = to_string(args.id);
70 jv[jss::Amount] = toJson(args.amount);
71 return jv;
72}
73
76{
77 json::Value jv;
78 jv[jss::TransactionType] = jss::VaultClawback;
79 jv[jss::Account] = args.issuer.human();
80 jv[sfVaultID] = to_string(args.id);
81 jv[jss::Holder] = args.holder.human();
82 if (args.amount)
83 jv[jss::Amount] = toJson(*args.amount);
84 return jv;
85}
86
87} // namespace xrpl::test::jtx
Represents a JSON value.
Definition json_value.h:130
std::string const & human() const
Returns the human readable public key.
Definition jtx/Account.h:92
AccountID id() const
Returns the Account ID.
Definition jtx/Account.h:85
Keylet computation functions.
Definition Indexes.h:34
Keylet vault(AccountID const &owner, std::uint32_t seq) noexcept
Definition Indexes.cpp:551
std::string to_string(BaseUInt< Bits, Tag > const &a)
Definition base_uint.h:633
json::Value toJson(Asset const &asset)
Definition Asset.h:157
std::optional< STAmount > amount
Definition vault.h:77
std::optional< std::uint32_t > flags
Definition vault.h:26
std::tuple< json::Value, Keylet > create(CreateArgs const &args) const
Return a VaultCreate transaction and the Vault's expected keylet.
Definition vault.cpp:20
static json::Value withdraw(WithdrawArgs const &args)
Definition vault.cpp:64
static json::Value del(DeleteArgs const &args)
Definition vault.cpp:43
static json::Value clawback(ClawbackArgs const &args)
Definition vault.cpp:75
static json::Value set(SetArgs const &args)
Definition vault.cpp:33
static json::Value deposit(DepositArgs const &args)
Definition vault.cpp:53