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/SeqProxy.h>
13#include <xrpl/protocol/jss.h>
14
15#include <optional>
16#include <tuple>
17
18namespace xrpl::test::jtx {
19
20std::tuple<json::Value, Keylet>
21Vault::create(CreateArgs const& args) const
22{
23 auto const seqProxy = SeqProxy::rawSequence(env.seq(args.owner));
24 auto keylet = keylet::vault(args.owner.id(), seqProxy);
25 json::Value jv;
26 jv[jss::TransactionType] = jss::VaultCreate;
27 jv[jss::Account] = args.owner.human();
28 jv[jss::Asset] = toJson(args.asset);
29 if (args.flags)
30 jv[jss::Flags] = *args.flags;
31 if (args.vaultKind)
32 jv[sfVaultKind] = *args.vaultKind;
33 if (args.subscriptionDate)
34 jv[sfSubscriptionDate] = *args.subscriptionDate;
35 if (args.redemptionDate)
36 jv[sfRedemptionDate] = *args.redemptionDate;
37 return {jv, keylet};
38}
39
41Vault::set(SetArgs const& args)
42{
43 json::Value jv;
44 jv[jss::TransactionType] = jss::VaultSet;
45 jv[jss::Account] = args.owner.human();
46 jv[sfVaultID] = to_string(args.id);
47 return jv;
48}
49
52{
53 json::Value jv;
54 jv[jss::TransactionType] = jss::VaultDelete;
55 jv[jss::Account] = args.owner.human();
56 jv[sfVaultID] = to_string(args.id);
57 return jv;
58}
59
62{
63 json::Value jv;
64 jv[jss::TransactionType] = jss::VaultDeposit;
65 jv[jss::Account] = args.depositor.human();
66 jv[sfVaultID] = to_string(args.id);
67 jv[jss::Amount] = toJson(args.amount);
68 return jv;
69}
70
73{
74 json::Value jv;
75 jv[jss::TransactionType] = jss::VaultWithdraw;
76 jv[jss::Account] = args.depositor.human();
77 jv[sfVaultID] = to_string(args.id);
78 jv[jss::Amount] = toJson(args.amount);
79 return jv;
80}
81
84{
85 json::Value jv;
86 jv[jss::TransactionType] = jss::VaultClawback;
87 jv[jss::Account] = args.issuer.human();
88 jv[sfVaultID] = to_string(args.id);
89 jv[jss::Holder] = args.holder.human();
90 if (args.amount)
91 jv[jss::Amount] = toJson(*args.amount);
92 return jv;
93}
94
95} // namespace xrpl::test::jtx
Represents a JSON value.
Definition json_value.h:117
static constexpr SeqProxy rawSequence(std::uint32_t v)
Factory function to return a sequence-based SeqProxy.
Definition SeqProxy.h:62
std::string const & human() const
Returns the human readable public key.
AccountID id() const
Returns the Account ID.
Keylet computation functions.
Definition Indexes.h:40
Keylet vault(AccountID const &owner, SeqProxy const &seq) noexcept
Definition Indexes.cpp:561
std::string to_string(BaseUInt< Bits, Tag > const &a)
Definition base_uint.h:651
json::Value toJson(Asset const &asset)
Definition Asset.h:168
std::optional< STAmount > amount
Definition vault.h:85
std::optional< std::uint8_t > vaultKind
Definition vault.h:28
std::optional< std::uint32_t > subscriptionDate
Definition vault.h:30
std::optional< std::uint32_t > redemptionDate
Definition vault.h:32
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:21
static json::Value withdraw(WithdrawArgs const &args)
Definition vault.cpp:72
static json::Value del(DeleteArgs const &args)
Definition vault.cpp:51
static json::Value clawback(ClawbackArgs const &args)
Definition vault.cpp:83
static json::Value set(SetArgs const &args)
Definition vault.cpp:41
static json::Value deposit(DepositArgs const &args)
Definition vault.cpp:61