rippled
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
ripple::test::jtx::AMM Class Reference

Convenience class to test AMM functionality. More...

Collaboration diagram for ripple::test::jtx::AMM:
Collaboration graph
[legend]

Public Member Functions

 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 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< Issue > issue1=std::nullopt, std::optional< Issue > issue2=std::nullopt, std::optional< AccountID > const &ammAccount=std::nullopt, bool ignoreParams=false) const
 Send amm_info RPC command. More...
 
bool expectBalances (STAmount const &asset1, STAmount const &asset2, IOUAmount const &lpt, std::optional< AccountID > const &account=std::nullopt) const
 Verify the AMM balances. More...
 
std::tuple< STAmount, STAmount, STAmountbalances (Issue const &issue1, Issue const &issue2, std::optional< AccountID > const &account=std::nullopt) const
 Get AMM balances for the token pair. More...
 
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 &ledger_index=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< Issue, Issue >> 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< IOUAmount > 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< IOUAmount > const &maxEP, std::optional< std::uint32_t > const &flags, std::optional< std::pair< Issue, Issue >> 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< Issue, Issue >> const &assets=std::nullopt, std::optional< ter > const &ter=std::nullopt)
 
void vote (VoteArg const &arg)
 
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)
 
void bid (BidArg 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)
 
Json::Value operator() (AccountID const &lp)
 
void ammDelete (AccountID const &deleter, std::optional< ter > const &ter=std::nullopt)
 
void setClose (bool close)
 
uint256 ammID () const
 

Private Member Functions

void setTokens (Json::Value &jv, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt)
 
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)
 
IOUAmount deposit (std::optional< Account > const &account, Json::Value &jv, std::optional< std::pair< Issue, Issue >> const &assets=std::nullopt, std::optional< jtx::seq > const &seq=std::nullopt, std::optional< ter > const &ter=std::nullopt)
 
IOUAmount withdraw (std::optional< Account > const &account, Json::Value &jv, std::optional< jtx::seq > const &seq, std::optional< std::pair< Issue, Issue >> const &assets=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
 

Private Attributes

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

Friends

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

Detailed Description

Convenience class to test AMM functionality.

Definition at line 123 of file AMM.h.

Constructor & Destructor Documentation

◆ AMM() [1/3]

ripple::test::jtx::AMM::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  close = true 
)

Definition at line 49 of file AMM.cpp.

◆ AMM() [2/3]

ripple::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 83 of file AMM.cpp.

◆ AMM() [3/3]

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

Definition at line 106 of file AMM.cpp.

Member Function Documentation

◆ ammRpcInfo()

Json::Value ripple::test::jtx::AMM::ammRpcInfo ( std::optional< AccountID > const &  account = std::nullopt,
std::optional< std::string > const &  ledgerIndex = std::nullopt,
std::optional< Issue issue1 = std::nullopt,
std::optional< Issue issue2 = std::nullopt,
std::optional< AccountID > const &  ammAccount = std::nullopt,
bool  ignoreParams = false 
) const

Send amm_info RPC command.

Definition at line 160 of file AMM.cpp.

◆ expectBalances()

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

Verify the AMM balances.

Definition at line 227 of file AMM.cpp.

◆ balances()

std::tuple< STAmount, STAmount, STAmount > ripple::test::jtx::AMM::balances ( Issue const &  issue1,
Issue const &  issue2,
std::optional< AccountID > const &  account = std::nullopt 
) const

Get AMM balances for the token pair.

Definition at line 202 of file AMM.cpp.

◆ expectLPTokens()

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

Definition at line 258 of file AMM.cpp.

◆ expectAuctionSlot() [1/3]

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

Definition at line 271 of file AMM.cpp.

◆ expectAuctionSlot() [2/3]

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

Definition at line 289 of file AMM.cpp.

◆ expectTradingFee()

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

Definition at line 308 of file AMM.cpp.

◆ expectAmmRpcInfo()

bool ripple::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 &  ledger_index = std::nullopt,
std::optional< AccountID > const &  ammAccount = std::nullopt 
) const

Definition at line 324 of file AMM.cpp.

◆ ammExists()

bool ripple::test::jtx::AMM::ammExists ( ) const

Definition at line 316 of file AMM.cpp.

◆ deposit() [1/5]

IOUAmount ripple::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 407 of file AMM.cpp.

◆ deposit() [2/5]

IOUAmount ripple::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 428 of file AMM.cpp.

◆ deposit() [3/5]

IOUAmount ripple::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< Issue, Issue >> 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 451 of file AMM.cpp.

◆ deposit() [4/5]

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

Definition at line 498 of file AMM.cpp.

◆ withdraw() [1/5]

IOUAmount ripple::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 533 of file AMM.cpp.

◆ withdrawAll()

IOUAmount ripple::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 272 of file AMM.h.

◆ withdraw() [2/5]

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

Definition at line 553 of file AMM.cpp.

◆ withdraw() [3/5]

IOUAmount ripple::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< IOUAmount > const &  maxEP,
std::optional< std::uint32_t > const &  flags,
std::optional< std::pair< Issue, Issue >> const &  assets,
std::optional< jtx::seq > const &  seq,
std::optional< ter > const &  ter = std::nullopt 
)

Definition at line 574 of file AMM.cpp.

◆ withdraw() [4/5]

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

Definition at line 618 of file AMM.cpp.

◆ vote() [1/2]

void ripple::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< Issue, Issue >> const &  assets = std::nullopt,
std::optional< ter > const &  ter = std::nullopt 
)

Definition at line 633 of file AMM.cpp.

◆ vote() [2/2]

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

Definition at line 654 of file AMM.cpp.

◆ bid() [1/2]

void ripple::test::jtx::AMM::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 
)

Definition at line 660 of file AMM.cpp.

◆ bid() [2/2]

void ripple::test::jtx::AMM::bid ( BidArg const &  arg)

Definition at line 731 of file AMM.cpp.

◆ ammAccount()

AccountID const& ripple::test::jtx::AMM::ammAccount ( ) const

Definition at line 336 of file AMM.h.

◆ lptIssue()

Issue ripple::test::jtx::AMM::lptIssue ( ) const

Definition at line 342 of file AMM.h.

◆ tokens()

IOUAmount ripple::test::jtx::AMM::tokens ( ) const

Definition at line 348 of file AMM.h.

◆ getLPTokensBalance()

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

Definition at line 241 of file AMM.cpp.

◆ operator[]()

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

Definition at line 366 of file AMM.h.

◆ operator()()

Json::Value ripple::test::jtx::AMM::operator() ( AccountID const &  lp)

Definition at line 372 of file AMM.h.

◆ ammDelete()

void ripple::test::jtx::AMM::ammDelete ( AccountID const &  deleter,
std::optional< ter > const &  ter = std::nullopt 
)

Definition at line 809 of file AMM.cpp.

◆ setClose()

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

Definition at line 383 of file AMM.h.

◆ ammID()

uint256 ripple::test::jtx::AMM::ammID ( ) const

Definition at line 389 of file AMM.h.

◆ setTokens()

void ripple::test::jtx::AMM::setTokens ( Json::Value jv,
std::optional< std::pair< Issue, Issue >> const &  assets = std::nullopt 
)
private

Definition at line 367 of file AMM.cpp.

◆ create()

AccountID ripple::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 
)
private

Definition at line 128 of file AMM.cpp.

◆ deposit() [5/5]

IOUAmount ripple::test::jtx::AMM::deposit ( std::optional< Account > const &  account,
Json::Value jv,
std::optional< std::pair< Issue, Issue >> const &  assets = std::nullopt,
std::optional< jtx::seq > const &  seq = std::nullopt,
std::optional< ter > const &  ter = std::nullopt 
)
private

Definition at line 388 of file AMM.cpp.

◆ withdraw() [5/5]

IOUAmount ripple::test::jtx::AMM::withdraw ( std::optional< Account > const &  account,
Json::Value jv,
std::optional< jtx::seq > const &  seq,
std::optional< std::pair< Issue, Issue >> const &  assets = std::nullopt,
std::optional< ter > const &  ter = std::nullopt 
)
private

Definition at line 514 of file AMM.cpp.

◆ log()

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

Definition at line 424 of file AMM.h.

◆ expectAmmInfo()

bool ripple::test::jtx::AMM::expectAmmInfo ( STAmount const &  asset1,
STAmount const &  asset2,
IOUAmount const &  balance,
Json::Value const &  jv 
) const
private

Definition at line 338 of file AMM.cpp.

◆ submit()

void ripple::test::jtx::AMM::submit ( Json::Value const &  jv,
std::optional< jtx::seq > const &  seq,
std::optional< ter > const &  ter 
)
private

Definition at line 745 of file AMM.cpp.

◆ expectAuctionSlot() [3/3]

bool ripple::test::jtx::AMM::expectAuctionSlot ( auto &&  cb) const
private

Definition at line 776 of file AMM.cpp.

Friends And Related Function Documentation

◆ operator<<

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

Definition at line 358 of file AMM.h.

Member Data Documentation

◆ env_

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

Definition at line 125 of file AMM.h.

◆ creatorAccount_

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

Definition at line 126 of file AMM.h.

◆ asset1_

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

Definition at line 127 of file AMM.h.

◆ asset2_

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

Definition at line 128 of file AMM.h.

◆ ammID_

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

Definition at line 129 of file AMM.h.

◆ initialLPTokens_

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

Definition at line 130 of file AMM.h.

◆ log_

bool ripple::test::jtx::AMM::log_
private

Definition at line 131 of file AMM.h.

◆ doClose_

bool ripple::test::jtx::AMM::doClose_
private

Definition at line 132 of file AMM.h.

◆ lastPurchasePrice_

IOUAmount ripple::test::jtx::AMM::lastPurchasePrice_
private

Definition at line 134 of file AMM.h.

◆ bidMin_

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

Definition at line 135 of file AMM.h.

◆ bidMax_

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

Definition at line 136 of file AMM.h.

◆ msig_

const std::optional<msig> ripple::test::jtx::AMM::msig_
private

Definition at line 138 of file AMM.h.

◆ fee_

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

Definition at line 140 of file AMM.h.

◆ ammAccount_

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

Definition at line 141 of file AMM.h.

◆ lptIssue_

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

Definition at line 142 of file AMM.h.