mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-22 06:40:53 +00:00
131 lines
3.4 KiB
C++
131 lines
3.4 KiB
C++
#include <test/jtx/sponsor.h>
|
|
|
|
#include <test/jtx/Account.h>
|
|
#include <test/jtx/Env.h>
|
|
#include <test/jtx/JTx.h>
|
|
|
|
#include <xrpl/basics/base_uint.h>
|
|
#include <xrpl/json/json_value.h>
|
|
#include <xrpl/json/to_string.h>
|
|
#include <xrpl/protocol/SField.h>
|
|
#include <xrpl/protocol/STAmount.h>
|
|
#include <xrpl/protocol/TxFlags.h>
|
|
#include <xrpl/protocol/jss.h>
|
|
|
|
#include <cstdint>
|
|
#include <optional>
|
|
|
|
namespace xrpl::test::jtx::sponsor {
|
|
|
|
json::Value
|
|
set(jtx::Account const& account,
|
|
uint32_t flags,
|
|
std::optional<uint32_t> reserveCount,
|
|
std::optional<STAmount> feeAmount,
|
|
std::optional<STAmount> maxFee)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipSet;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = flags;
|
|
if (reserveCount)
|
|
jv[sfRemainingOwnerCount.jsonName] = *reserveCount;
|
|
if (feeAmount)
|
|
jv[sfFeeAmount.jsonName] = feeAmount->getJson(JsonOptions::Values::None);
|
|
if (maxFee)
|
|
jv[sfMaxFee.jsonName] = maxFee->getJson(JsonOptions::Values::None);
|
|
return jv;
|
|
}
|
|
|
|
json::Value
|
|
set_fee(
|
|
jtx::Account const& account,
|
|
uint32_t flags,
|
|
STAmount feeAmount,
|
|
std::optional<STAmount> maxFee)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipSet;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = flags;
|
|
jv[sfFeeAmount.jsonName] = feeAmount.getJson(JsonOptions::Values::None);
|
|
if (maxFee)
|
|
jv[sfMaxFee.jsonName] = maxFee->getJson(JsonOptions::Values::None);
|
|
return jv;
|
|
}
|
|
|
|
json::Value
|
|
set_reserve(jtx::Account const& account, uint32_t flags, uint32_t reserveCount)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipSet;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = flags;
|
|
jv[sfRemainingOwnerCount.jsonName] = reserveCount;
|
|
return jv;
|
|
}
|
|
|
|
json::Value
|
|
set_max_fee(jtx::Account const& account, uint32_t flags, STAmount maxFee)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipSet;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = flags;
|
|
jv[sfMaxFee.jsonName] = maxFee.getJson(JsonOptions::Values::None);
|
|
return jv;
|
|
}
|
|
|
|
json::Value
|
|
del(jtx::Account const& account)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipSet;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = tfDeleteObject;
|
|
return jv;
|
|
}
|
|
|
|
json::Value
|
|
transfer(jtx::Account const& account, uint32_t flags, std::optional<uint256> const& index)
|
|
{
|
|
json::Value jv;
|
|
jv[jss::TransactionType] = jss::SponsorshipTransfer;
|
|
jv[jss::Account] = account.human();
|
|
jv[sfFlags.jsonName] = flags;
|
|
if (index)
|
|
jv[sfObjectID.jsonName] = to_string(*index);
|
|
return jv;
|
|
}
|
|
|
|
void
|
|
CounterpartySponsor::operator()(Env& env, JTx& jt) const
|
|
{
|
|
jt.jv[sfCounterpartySponsor.jsonName] = sponsor_.human();
|
|
}
|
|
|
|
void
|
|
SponseeAcc::operator()(Env& env, JTx& jt) const
|
|
{
|
|
jt.jv[sfSponsee.jsonName] = sponsee_.human();
|
|
}
|
|
|
|
void
|
|
As::operator()(Env& env, JTx& jt) const
|
|
{
|
|
jt.jv[sfSponsor.jsonName] = sponsor_.human();
|
|
jt.jv[sfSponsorFlags.jsonName] = flags_;
|
|
}
|
|
|
|
json::Value
|
|
ledgerEntry(jtx::Env& env, jtx::Account const& sponsor, jtx::Account const& sponsee)
|
|
{
|
|
json::Value jvParams;
|
|
jvParams[jss::ledger_index] = jss::validated;
|
|
jvParams[jss::sponsorship][jss::sponsor] = sponsor.human();
|
|
jvParams[jss::sponsorship][jss::sponsee] = sponsee.human();
|
|
return env.rpc("json", "ledger_entry", to_string(jvParams));
|
|
}
|
|
|
|
} // namespace xrpl::test::jtx::sponsor
|