20 #ifndef RIPPLE_TEST_JTX_AMM_H_INCLUDED
21 #define RIPPLE_TEST_JTX_AMM_H_INCLUDED
23 #include <ripple/json/json_value.h>
24 #include <ripple/protocol/STAmount.h>
25 #include <ripple/protocol/TxFlags.h>
26 #include <ripple/rpc/GRPCHandlers.h>
27 #include <test/jtx/Account.h>
28 #include <test/jtx/Env.h>
29 #include <test/jtx/multisign.h>
30 #include <test/jtx/seq.h>
31 #include <test/jtx/ter.h>
275 if (
auto const res = amm.ammRpcInfo())
276 s << res.toStyledString();
375 #endif // RIPPLE_TEST_JTX_AMM_H_INCLUDED
A currency issued by an account.
void ammDelete(AccountID const &deleter, std::optional< ter > const &ter=std::nullopt)
const std::optional< msig > msig_
AccountID const & ammAccount() const
Set the expected result code for a JTx The test will fail if the code doesn't match.
void setClose(bool close)
Json::Value ammRpcInfo(std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledgerIndex=std::nullopt, std::optional< std::pair< Issue, Issue >> tokens=std::nullopt) const
Send amm_info RPC command.
LPToken(std::uint64_t tokens)
Json::Value operator()(AccountID const &lp)
void vote(std::optional< Account > const &account, std::uint32_t feeVal, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Json::Value pay(Account const &account, AccountID const &to, STAmount const &amount)
IOUAmount deposit(std::optional< Account > const &account, LPToken tokens, std::optional< STAmount > const &asset1InDetails=std::nullopt, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< ter > const &ter=std::nullopt)
void bid(std::optional< Account > const &account, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMin=std::nullopt, std::optional< std::variant< int, IOUAmount, STAmount >> const &bidMax=std::nullopt, std::vector< Account > const &authAccounts={}, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Floating point representation of amounts with high dynamic range.
Convenience class to test AMM functionality.
std::string toStyledString() const
bool expectAmmInfo(STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, Json::Value const &jv) const
const Account creatorAccount_
bool expectBalances(STAmount const &asset1, STAmount const &asset2, IOUAmount const &lpt, std::optional< AccountID > const &account=std::nullopt) const
Verify the AMM balances.
constexpr std::uint32_t tfOneAssetWithdrawAll
constexpr std::uint32_t tfWithdrawAll
bool expectLPTokens(AccountID const &account, IOUAmount const &tokens) const
const IOUAmount initialLPTokens_
bool expectAmmRpcInfo(STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledger_index=std::nullopt) const
IOUAmount lastPurchasePrice_
std::string operator[](AccountID const &lp)
std::optional< IOUAmount > bidMax_
Json::Value trust(AccountID const &account, STAmount const &amount, std::uint32_t flags=0)
AMM(Env &env, Account const &account, STAmount const &asset1, STAmount const &asset2, bool log=false, std::uint16_t tfee=0, std::uint32_t fee=0, std::optional< std::uint32_t > flags=std::nullopt, std::optional< jtx::seq > seq=std::nullopt, std::optional< jtx::msig > ms=std::nullopt, std::optional< ter > const &ter=std::nullopt)
bool expectTradingFee(std::uint16_t fee) const
IOUAmount withdrawAll(std::optional< Account > const &account, std::optional< STAmount > const &asset1OutDetails=std::nullopt)
IOUAmount withdraw(std::optional< Account > const &account, std::optional< LPToken > const &tokens, std::optional< STAmount > const &asset1OutDetails=std::nullopt, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Set the sequence number on a JTx.
LPToken(IOUAmount tokens)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void setTokens(Json::Value &jv, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt)
const AccountID ammAccount_
bool expectAuctionSlot(std::uint32_t fee, std::optional< std::uint8_t > timeSlot, IOUAmount expectedPrice) const
AccountID create(std::uint32_t tfee=0, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< ter > const &ter=std::nullopt)
Immutable cryptographic account descriptor.
void submit(Json::Value const &jv, std::optional< jtx::seq > const &seq, std::optional< ter > const &ter)
STAmount tokens(Issue const &ammIssue) const
friend std::ostream & operator<<(std::ostream &s, AMM const &amm)
std::optional< IOUAmount > bidMin_
A transaction testing environment.
std::tuple< STAmount, STAmount, STAmount > balances(Issue const &issue1, Issue const &issue2, std::optional< AccountID > const &account=std::nullopt) const
Get AMM balances for the token pair.
IOUAmount const & tokens() const
IOUAmount getLPTokensBalance(std::optional< AccountID > const &account=std::nullopt) const