rippled
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
ripple::AMMOffer< TIn, TOut > Class Template Reference

Represents synthetic AMM offer in BookStep. More...

#include <AMMOffer.h>

Public Member Functions

 AMMOffer (AMMLiquidity< TIn, TOut > const &ammLiquidity, TAmounts< TIn, TOut > const &amounts, TAmounts< TIn, TOut > const &balances, Quality const &quality)
 
Quality quality () const noexcept
 
Issue const & issueIn () const
 
AccountID const & owner () const
 
std::optional< uint256key () const
 
TAmounts< TIn, TOut > const & amount () const
 
void consume (ApplyView &view, TAmounts< TIn, TOut > const &consumed)
 
bool fully_consumed () const
 
TAmounts< TIn, TOut > limitOut (TAmounts< TIn, TOut > const &offrAmt, TOut const &limit, bool roundUp) const
 Limit out of the provided offer.
 
TAmounts< TIn, TOut > limitIn (TAmounts< TIn, TOut > const &offrAmt, TIn const &limit, bool roundUp) const
 Limit in of the provided offer.
 
QualityFunction getQualityFunc () const
 
bool isFunded () const
 
bool checkInvariant (TAmounts< TIn, TOut > const &consumed, beast::Journal j) const
 Check the new pool product is greater or equal to the old pool product or if decreases then within some threshold.
 

Static Public Member Functions

template<typename... Args>
static TER send (Args &&... args)
 Send funds without incurring the transfer fee.
 
static std::pair< std::uint32_t, std::uint32_tadjustRates (std::uint32_t ofrInRate, std::uint32_t ofrOutRate)
 

Private Attributes

AMMLiquidity< TIn, TOut > const & ammLiquidity_
 
TAmounts< TIn, TOut > const amounts_
 
TAmounts< TIn, TOut > const balances_
 
Quality const quality_
 
bool consumed_
 

Detailed Description

template<typename TIn, typename TOut>
class ripple::AMMOffer< TIn, TOut >

Represents synthetic AMM offer in BookStep.

AMMOffer mirrors TOffer methods for use in generic BookStep methods. AMMOffer amounts are changed indirectly in BookStep limiting steps.

Definition at line 39 of file AMMOffer.h.

Constructor & Destructor Documentation

◆ AMMOffer()

template<typename TIn , typename TOut >
ripple::AMMOffer< TIn, TOut >::AMMOffer ( AMMLiquidity< TIn, TOut > const &  ammLiquidity,
TAmounts< TIn, TOut > const &  amounts,
TAmounts< TIn, TOut > const &  balances,
Quality const &  quality 
)

Definition at line 28 of file AMMOffer.cpp.

Member Function Documentation

◆ quality()

template<typename TIn , typename TOut >
Quality ripple::AMMOffer< TIn, TOut >::quality ( ) const
noexcept

Definition at line 69 of file AMMOffer.h.

◆ issueIn()

template<typename TIn , typename TOut >
Issue const & ripple::AMMOffer< TIn, TOut >::issueIn ( ) const

Definition at line 43 of file AMMOffer.cpp.

◆ owner()

template<typename TIn , typename TOut >
AccountID const & ripple::AMMOffer< TIn, TOut >::owner ( ) const

Definition at line 50 of file AMMOffer.cpp.

◆ key()

template<typename TIn , typename TOut >
std::optional< uint256 > ripple::AMMOffer< TIn, TOut >::key ( ) const

Definition at line 81 of file AMMOffer.h.

◆ amount()

template<typename TIn , typename TOut >
TAmounts< TIn, TOut > const & ripple::AMMOffer< TIn, TOut >::amount ( ) const

Definition at line 57 of file AMMOffer.cpp.

◆ consume()

template<typename TIn , typename TOut >
void ripple::AMMOffer< TIn, TOut >::consume ( ApplyView view,
TAmounts< TIn, TOut > const &  consumed 
)

Definition at line 64 of file AMMOffer.cpp.

◆ fully_consumed()

template<typename TIn , typename TOut >
bool ripple::AMMOffer< TIn, TOut >::fully_consumed ( ) const

Definition at line 93 of file AMMOffer.h.

◆ limitOut()

template<typename TIn , typename TOut >
TAmounts< TIn, TOut > ripple::AMMOffer< TIn, TOut >::limitOut ( TAmounts< TIn, TOut > const &  offrAmt,
TOut const &  limit,
bool  roundUp 
) const

Limit out of the provided offer.

If one-path then swapOut using current balances. If multi-path then ceil_out using current quality.

Definition at line 82 of file AMMOffer.cpp.

◆ limitIn()

template<typename TIn , typename TOut >
TAmounts< TIn, TOut > ripple::AMMOffer< TIn, TOut >::limitIn ( TAmounts< TIn, TOut > const &  offrAmt,
TIn const &  limit,
bool  roundUp 
) const

Limit in of the provided offer.

If one-path then swapIn using current balances. If multi-path then ceil_in using current quality.

Definition at line 107 of file AMMOffer.cpp.

◆ getQualityFunc()

template<typename TIn , typename TOut >
QualityFunction ripple::AMMOffer< TIn, TOut >::getQualityFunc ( ) const

Definition at line 126 of file AMMOffer.cpp.

◆ send()

template<typename TIn , typename TOut >
template<typename... Args>
static TER ripple::AMMOffer< TIn, TOut >::send ( Args &&...  args)
static

Send funds without incurring the transfer fee.

Definition at line 123 of file AMMOffer.h.

◆ isFunded()

template<typename TIn , typename TOut >
bool ripple::AMMOffer< TIn, TOut >::isFunded ( ) const

Definition at line 129 of file AMMOffer.h.

◆ adjustRates()

template<typename TIn , typename TOut >
static std::pair< std::uint32_t, std::uint32_t > ripple::AMMOffer< TIn, TOut >::adjustRates ( std::uint32_t  ofrInRate,
std::uint32_t  ofrOutRate 
)
static

Definition at line 136 of file AMMOffer.h.

◆ checkInvariant()

template<typename TIn , typename TOut >
bool ripple::AMMOffer< TIn, TOut >::checkInvariant ( TAmounts< TIn, TOut > const &  consumed,
beast::Journal  j 
) const

Check the new pool product is greater or equal to the old pool product or if decreases then within some threshold.

Definition at line 136 of file AMMOffer.cpp.

Member Data Documentation

◆ ammLiquidity_

template<typename TIn , typename TOut >
AMMLiquidity<TIn, TOut> const& ripple::AMMOffer< TIn, TOut >::ammLiquidity_
private

Definition at line 42 of file AMMOffer.h.

◆ amounts_

template<typename TIn , typename TOut >
TAmounts<TIn, TOut> const ripple::AMMOffer< TIn, TOut >::amounts_
private

Definition at line 52 of file AMMOffer.h.

◆ balances_

template<typename TIn , typename TOut >
TAmounts<TIn, TOut> const ripple::AMMOffer< TIn, TOut >::balances_
private

Definition at line 54 of file AMMOffer.h.

◆ quality_

template<typename TIn , typename TOut >
Quality const ripple::AMMOffer< TIn, TOut >::quality_
private

Definition at line 57 of file AMMOffer.h.

◆ consumed_

template<typename TIn , typename TOut >
bool ripple::AMMOffer< TIn, TOut >::consumed_
private

Definition at line 59 of file AMMOffer.h.