xrpld
Loading...
Searching...
No Matches
xrpl::test::jtx::AMM Class Reference

Convenience class to test AMM functionality. More...

#include <AMM.h>

Collaboration diagram for xrpl::test::jtx::AMM:

Classes

struct  Pool
struct  Offers

Public Member Functions

 AMM (Env &env, Account account, STAmount asset1, STAmount 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 close=true)
 AMM (Env &env, Account const &account, STAmount const &asset1, STAmount const &asset2, Ter const &ter, bool log=false, bool close=true)
 AMM (Env &env, Account const &account, STAmount const &asset1, STAmount const &asset2, CreateArg const &arg)
json::Value ammRpcInfo (std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledgerIndex=std::nullopt, std::optional< Asset > const &asset1=std::nullopt, std::optional< Asset > const &asset2=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt, bool ignoreParams=false, unsigned apiVersion=RPC::kApiInvalidVersion) const
 Send amm_info RPC command.
json::Value ammRpcInfo (std::optional< json::Value > const &account, std::optional< std::string > const &ledgerIndex, std::optional< Asset > const &asset1, std::optional< Asset > const &asset2, std::optional< json::Value > const &ammAccount, bool ignoreParams, unsigned apiVersion) const
bool expectBalances (STAmount const &asset1, STAmount const &asset2, IOUAmount const &lpt, std::optional< AccountID > const &account=std::nullopt) const
 Verify the AMM balances.
std::tuple< STAmount, STAmount, STAmountbalances (Asset const &asset1, Asset const &asset2, std::optional< AccountID > const &account=std::nullopt) const
 Get AMM balances for the token pair.
std::tuple< STAmount, STAmount, STAmountbalances (std::optional< AccountID > const &account=std::nullopt) const
bool expectLPTokens (AccountID const &account, IOUAmount const &tokens) const
bool expectAuctionSlot (std::uint32_t fee, std::optional< std::uint8_t > timeSlot, IOUAmount expectedPrice) const
bool expectAuctionSlot (std::vector< AccountID > const &authAccount) const
bool expectTradingFee (std::uint16_t fee) const
bool expectAmmRpcInfo (STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, std::optional< AccountID > const &account=std::nullopt, std::optional< std::string > const &ledgerIndex=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt) const
bool ammExists () const
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)
IOUAmount deposit (std::optional< Account > const &account, STAmount const &asset1InDetails, std::optional< STAmount > const &asset2InAmount=std::nullopt, std::optional< STAmount > const &maxEP=std::nullopt, std::optional< std::uint32_t > const &flags=std::nullopt, std::optional< Ter > const &ter=std::nullopt)
IOUAmount deposit (std::optional< Account > const &account, std::optional< LPToken > tokens, std::optional< STAmount > const &asset1In, std::optional< STAmount > const &asset2In, std::optional< STAmount > const &maxEP, std::optional< std::uint32_t > const &flags, std::optional< std::pair< Asset, Asset > > const &assets, std::optional< jtx::Seq > const &seq, std::optional< std::uint16_t > const &tfee=std::nullopt, std::optional< Ter > const &ter=std::nullopt)
IOUAmount deposit (DepositArg const &arg)
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)
IOUAmount withdrawAll (std::optional< Account > const &account, std::optional< STAmount > const &asset1OutDetails=std::nullopt, std::optional< Ter > const &ter=std::nullopt)
IOUAmount withdraw (std::optional< Account > const &account, STAmount const &asset1Out, std::optional< STAmount > const &asset2Out=std::nullopt, std::optional< LPToken > const &maxEP=std::nullopt, std::optional< Ter > const &ter=std::nullopt)
IOUAmount withdraw (std::optional< Account > const &account, std::optional< LPToken > const &tokens, std::optional< STAmount > const &asset1Out, std::optional< STAmount > const &asset2Out, std::optional< LPToken > const &maxEP, std::optional< std::uint32_t > const &flags, std::optional< std::pair< Asset, Asset > > const &assets, std::optional< jtx::Seq > const &seq, std::optional< Ter > const &ter=std::nullopt)
IOUAmount withdraw (WithdrawArg const &arg)
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< Asset, Asset > > const &assets=std::nullopt, std::optional< Ter > const &ter=std::nullopt)
void vote (VoteArg const &arg)
json::Value bid (BidArg const &arg)
void clawback (ClawbackArg const &arg)
AccountID const & ammAccount () const
Issue lptIssue () const
IOUAmount tokens () const
IOUAmount getLPTokensBalance (std::optional< AccountID > const &account=std::nullopt) const
std::string operator[] (AccountID const &lp) const
json::Value operator() (AccountID const &lp) const
void ammDelete (AccountID const &account, std::optional< Ter > const &ter=std::nullopt)
void setClose (bool close)
uint256 ammID () const
void setTokens (json::Value &jv, std::optional< std::pair< Asset, Asset > > const &assets=std::nullopt)
Asset const & operator[] (std::uint8_t i)

Static Public Member Functions

static json::Value createJv (AccountID const &account, STAmount const &asset1, STAmount const &asset2, std::uint16_t const &tfee)
static json::Value depositJv (DepositArg const &arg)
static json::Value withdrawJv (WithdrawArg const &arg)
static json::Value voteJv (VoteArg const &arg)
static json::Value deleteJv (AccountID const &account, Asset const &asset1, Asset const &assets)

Private Member Functions

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)
void log (bool log)
bool expectAmmInfo (STAmount const &asset1, STAmount const &asset2, IOUAmount const &balance, json::Value const &jv) const
void submit (json::Value const &jv, std::optional< jtx::Seq > const &seq, std::optional< Ter > const &ter)
bool expectAuctionSlot (auto &&cb) const
IOUAmount initialTokens ()

Private Attributes

Envenv_
Account const creatorAccount_
STAmount const asset1_
STAmount const asset2_
uint256 const ammID_
bool log_
bool doClose_
IOUAmount lastPurchasePrice_
std::optional< IOUAmountbidMin_
std::optional< IOUAmountbidMax_
std::optional< Msig > const msig_
std::uint32_t const fee_
AccountID const ammAccount_
Issue const lptIssue_
IOUAmount const initialLPTokens_

Friends

std::ostreamoperator<< (std::ostream &s, AMM const &amm)

Detailed Description

Convenience class to test AMM functionality.

Definition at line 117 of file src/test/jtx/AMM.h.

Constructor & Destructor Documentation

◆ AMM() [1/3]

xrpl::test::jtx::AMM::AMM ( Env & env,
Account account,
STAmount asset1,
STAmount 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 close = true )

Definition at line 62 of file AMM.cpp.

◆ AMM() [2/3]

xrpl::test::jtx::AMM::AMM ( Env & env,
Account const & account,
STAmount const & asset1,
STAmount const & asset2,
Ter const & ter,
bool log = false,
bool close = true )

Definition at line 91 of file AMM.cpp.

◆ AMM() [3/3]

xrpl::test::jtx::AMM::AMM ( Env & env,
Account const & account,
STAmount const & asset1,
STAmount const & asset2,
CreateArg const & arg )

Definition at line 114 of file AMM.cpp.

Member Function Documentation

◆ createJv()

json::Value xrpl::test::jtx::AMM::createJv ( AccountID const & account,
STAmount const & asset1,
STAmount const & asset2,
std::uint16_t const & tfee )
static

Definition at line 136 of file AMM.cpp.

◆ ammRpcInfo() [1/2]

json::Value xrpl::test::jtx::AMM::ammRpcInfo ( std::optional< AccountID > const & account = std::nullopt,
std::optional< std::string > const & ledgerIndex = std::nullopt,
std::optional< Asset > const & asset1 = std::nullopt,
std::optional< Asset > const & asset2 = std::nullopt,
std::optional< AccountID > const & ammAccount = std::nullopt,
bool ignoreParams = false,
unsigned apiVersion = RPC::kApiInvalidVersion ) const
nodiscard

Send amm_info RPC command.

Definition at line 183 of file AMM.cpp.

◆ ammRpcInfo() [2/2]

json::Value xrpl::test::jtx::AMM::ammRpcInfo ( std::optional< json::Value > const & account,
std::optional< std::string > const & ledgerIndex,
std::optional< Asset > const & asset1,
std::optional< Asset > const & asset2,
std::optional< json::Value > const & ammAccount,
bool ignoreParams,
unsigned apiVersion ) const
nodiscard

Definition at line 205 of file AMM.cpp.

◆ expectBalances()

bool xrpl::test::jtx::AMM::expectBalances ( STAmount const & asset1,
STAmount const & asset2,
IOUAmount const & lpt,
std::optional< AccountID > const & account = std::nullopt ) const
nodiscard

Verify the AMM balances.

Definition at line 269 of file AMM.cpp.

◆ balances() [1/2]

std::tuple< STAmount, STAmount, STAmount > xrpl::test::jtx::AMM::balances ( Asset const & asset1,
Asset const & asset2,
std::optional< AccountID > const & account = std::nullopt ) const
nodiscard

Get AMM balances for the token pair.

Definition at line 246 of file AMM.cpp.

◆ balances() [2/2]

std::tuple< STAmount, STAmount, STAmount > xrpl::test::jtx::AMM::balances ( std::optional< AccountID > const & account = std::nullopt) const
nodiscard

Definition at line 211 of file src/test/jtx/AMM.h.

◆ expectLPTokens()

bool xrpl::test::jtx::AMM::expectLPTokens ( AccountID const & account,
IOUAmount const & tokens ) const
nodiscard

Definition at line 296 of file AMM.cpp.

◆ expectAuctionSlot() [1/3]

bool xrpl::test::jtx::AMM::expectAuctionSlot ( std::uint32_t fee,
std::optional< std::uint8_t > timeSlot,
IOUAmount expectedPrice ) const
nodiscard
Parameters
feeexpected discounted fee
timeSlotexpected time slot
expectedPriceexpected slot price

Definition at line 307 of file AMM.cpp.

◆ expectAuctionSlot() [2/3]

bool xrpl::test::jtx::AMM::expectAuctionSlot ( std::vector< AccountID > const & authAccount) const
nodiscard

Definition at line 325 of file AMM.cpp.

◆ expectTradingFee()

bool xrpl::test::jtx::AMM::expectTradingFee ( std::uint16_t fee) const
nodiscard

Definition at line 340 of file AMM.cpp.

◆ expectAmmRpcInfo()

bool xrpl::test::jtx::AMM::expectAmmRpcInfo ( STAmount const & asset1,
STAmount const & asset2,
IOUAmount const & balance,
std::optional< AccountID > const & account = std::nullopt,
std::optional< std::string > const & ledgerIndex = std::nullopt,
std::optional< AccountID > const & ammAccount = std::nullopt ) const
nodiscard

Definition at line 354 of file AMM.cpp.

◆ ammExists()

bool xrpl::test::jtx::AMM::ammExists ( ) const
nodiscard

Definition at line 347 of file AMM.cpp.

◆ depositJv()

json::Value xrpl::test::jtx::AMM::depositJv ( DepositArg const & arg)
static

Definition at line 410 of file AMM.cpp.

◆ deposit() [1/4]

IOUAmount xrpl::test::jtx::AMM::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 )

Definition at line 466 of file AMM.cpp.

◆ deposit() [2/4]

IOUAmount xrpl::test::jtx::AMM::deposit ( std::optional< Account > const & account,
STAmount const & asset1InDetails,
std::optional< STAmount > const & asset2InAmount = std::nullopt,
std::optional< STAmount > const & maxEP = std::nullopt,
std::optional< std::uint32_t > const & flags = std::nullopt,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 487 of file AMM.cpp.

◆ deposit() [3/4]

IOUAmount xrpl::test::jtx::AMM::deposit ( std::optional< Account > const & account,
std::optional< LPToken > tokens,
std::optional< STAmount > const & asset1In,
std::optional< STAmount > const & asset2In,
std::optional< STAmount > const & maxEP,
std::optional< std::uint32_t > const & flags,
std::optional< std::pair< Asset, Asset > > const & assets,
std::optional< jtx::Seq > const & seq,
std::optional< std::uint16_t > const & tfee = std::nullopt,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 511 of file AMM.cpp.

◆ deposit() [4/4]

IOUAmount xrpl::test::jtx::AMM::deposit ( DepositArg const & arg)

Definition at line 541 of file AMM.cpp.

◆ withdrawJv()

json::Value xrpl::test::jtx::AMM::withdrawJv ( WithdrawArg const & arg)
static

Definition at line 557 of file AMM.cpp.

◆ withdraw() [1/4]

IOUAmount xrpl::test::jtx::AMM::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 )

Definition at line 607 of file AMM.cpp.

◆ withdrawAll()

IOUAmount xrpl::test::jtx::AMM::withdrawAll ( std::optional< Account > const & account,
std::optional< STAmount > const & asset1OutDetails = std::nullopt,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 296 of file src/test/jtx/AMM.h.

◆ withdraw() [2/4]

IOUAmount xrpl::test::jtx::AMM::withdraw ( std::optional< Account > const & account,
STAmount const & asset1Out,
std::optional< STAmount > const & asset2Out = std::nullopt,
std::optional< LPToken > const & maxEP = std::nullopt,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 627 of file AMM.cpp.

◆ withdraw() [3/4]

IOUAmount xrpl::test::jtx::AMM::withdraw ( std::optional< Account > const & account,
std::optional< LPToken > const & tokens,
std::optional< STAmount > const & asset1Out,
std::optional< STAmount > const & asset2Out,
std::optional< LPToken > const & maxEP,
std::optional< std::uint32_t > const & flags,
std::optional< std::pair< Asset, Asset > > const & assets,
std::optional< jtx::Seq > const & seq,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 649 of file AMM.cpp.

◆ withdraw() [4/4]

IOUAmount xrpl::test::jtx::AMM::withdraw ( WithdrawArg const & arg)

Definition at line 678 of file AMM.cpp.

◆ voteJv()

json::Value xrpl::test::jtx::AMM::voteJv ( VoteArg const & arg)
static

Definition at line 693 of file AMM.cpp.

◆ vote() [1/2]

void xrpl::test::jtx::AMM::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< Asset, Asset > > const & assets = std::nullopt,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 711 of file AMM.cpp.

◆ vote() [2/2]

void xrpl::test::jtx::AMM::vote ( VoteArg const & arg)

Definition at line 731 of file AMM.cpp.

◆ bid()

json::Value xrpl::test::jtx::AMM::bid ( BidArg const & arg)

Definition at line 737 of file AMM.cpp.

◆ clawback()

void xrpl::test::jtx::AMM::clawback ( ClawbackArg const & arg)

Definition at line 803 of file AMM.cpp.

◆ ammAccount()

AccountID const & xrpl::test::jtx::AMM::ammAccount ( ) const
nodiscard

Definition at line 354 of file src/test/jtx/AMM.h.

◆ lptIssue()

Issue xrpl::test::jtx::AMM::lptIssue ( ) const
nodiscard

Definition at line 360 of file src/test/jtx/AMM.h.

◆ tokens()

IOUAmount xrpl::test::jtx::AMM::tokens ( ) const
nodiscard

Definition at line 366 of file src/test/jtx/AMM.h.

◆ getLPTokensBalance()

IOUAmount xrpl::test::jtx::AMM::getLPTokensBalance ( std::optional< AccountID > const & account = std::nullopt) const
nodiscard

Definition at line 282 of file AMM.cpp.

◆ operator[]() [1/2]

std::string xrpl::test::jtx::AMM::operator[] ( AccountID const & lp) const

Definition at line 383 of file src/test/jtx/AMM.h.

◆ operator()()

json::Value xrpl::test::jtx::AMM::operator() ( AccountID const & lp) const

Definition at line 389 of file src/test/jtx/AMM.h.

◆ deleteJv()

json::Value xrpl::test::jtx::AMM::deleteJv ( AccountID const & account,
Asset const & asset1,
Asset const & assets )
static

Definition at line 896 of file AMM.cpp.

◆ ammDelete()

void xrpl::test::jtx::AMM::ammDelete ( AccountID const & account,
std::optional< Ter > const & ter = std::nullopt )

Definition at line 909 of file AMM.cpp.

◆ setClose()

void xrpl::test::jtx::AMM::setClose ( bool close)

Definition at line 401 of file src/test/jtx/AMM.h.

◆ ammID()

uint256 xrpl::test::jtx::AMM::ammID ( ) const
nodiscard

Definition at line 407 of file src/test/jtx/AMM.h.

◆ setTokens()

void xrpl::test::jtx::AMM::setTokens ( json::Value & jv,
std::optional< std::pair< Asset, Asset > > const & assets = std::nullopt )

Definition at line 395 of file AMM.cpp.

◆ operator[]() [2/2]

Asset const & xrpl::test::jtx::AMM::operator[] ( std::uint8_t i)

Definition at line 416 of file src/test/jtx/AMM.h.

◆ create()

AccountID xrpl::test::jtx::AMM::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 )
nodiscardprivate

Definition at line 153 of file AMM.cpp.

◆ log()

void xrpl::test::jtx::AMM::log ( bool log)
private

Definition at line 500 of file src/test/jtx/AMM.h.

◆ expectAmmInfo()

bool xrpl::test::jtx::AMM::expectAmmInfo ( STAmount const & asset1,
STAmount const & asset2,
IOUAmount const & balance,
json::Value const & jv ) const
nodiscardprivate

Definition at line 367 of file AMM.cpp.

◆ submit()

void xrpl::test::jtx::AMM::submit ( json::Value const & jv,
std::optional< jtx::Seq > const & seq,
std::optional< Ter > const & ter )
private

Definition at line 819 of file AMM.cpp.

◆ expectAuctionSlot() [3/3]

bool xrpl::test::jtx::AMM::expectAuctionSlot ( auto && cb) const
nodiscardprivate

Definition at line 866 of file AMM.cpp.

◆ initialTokens()

IOUAmount xrpl::test::jtx::AMM::initialTokens ( )
private

Definition at line 52 of file AMM.cpp.

◆ operator<<

std::ostream & operator<< ( std::ostream & s,
AMM const & amm )
friend

Definition at line 374 of file src/test/jtx/AMM.h.

Member Data Documentation

◆ env_

Env& xrpl::test::jtx::AMM::env_
private

Definition at line 119 of file src/test/jtx/AMM.h.

◆ creatorAccount_

Account const xrpl::test::jtx::AMM::creatorAccount_
private

Definition at line 120 of file src/test/jtx/AMM.h.

◆ asset1_

STAmount const xrpl::test::jtx::AMM::asset1_
private

Definition at line 121 of file src/test/jtx/AMM.h.

◆ asset2_

STAmount const xrpl::test::jtx::AMM::asset2_
private

Definition at line 122 of file src/test/jtx/AMM.h.

◆ ammID_

uint256 const xrpl::test::jtx::AMM::ammID_
private

Definition at line 123 of file src/test/jtx/AMM.h.

◆ log_

bool xrpl::test::jtx::AMM::log_
private

Definition at line 124 of file src/test/jtx/AMM.h.

◆ doClose_

bool xrpl::test::jtx::AMM::doClose_
private

Definition at line 125 of file src/test/jtx/AMM.h.

◆ lastPurchasePrice_

IOUAmount xrpl::test::jtx::AMM::lastPurchasePrice_
private

Definition at line 127 of file src/test/jtx/AMM.h.

◆ bidMin_

std::optional<IOUAmount> xrpl::test::jtx::AMM::bidMin_
private

Definition at line 128 of file src/test/jtx/AMM.h.

◆ bidMax_

std::optional<IOUAmount> xrpl::test::jtx::AMM::bidMax_
private

Definition at line 129 of file src/test/jtx/AMM.h.

◆ msig_

std::optional<Msig> const xrpl::test::jtx::AMM::msig_
private

Definition at line 131 of file src/test/jtx/AMM.h.

◆ fee_

std::uint32_t const xrpl::test::jtx::AMM::fee_
private

Definition at line 133 of file src/test/jtx/AMM.h.

◆ ammAccount_

AccountID const xrpl::test::jtx::AMM::ammAccount_
private

Definition at line 134 of file src/test/jtx/AMM.h.

◆ lptIssue_

Issue const xrpl::test::jtx::AMM::lptIssue_
private

Definition at line 135 of file src/test/jtx/AMM.h.

◆ initialLPTokens_

IOUAmount const xrpl::test::jtx::AMM::initialLPTokens_
private

Definition at line 136 of file src/test/jtx/AMM.h.