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 20 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 9 of file AMMOffer.cpp.

Member Function Documentation

◆ quality()

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

Definition at line 50 of file AMMOffer.h.

◆ issueIn()

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

Definition at line 24 of file AMMOffer.cpp.

◆ owner()

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

Definition at line 31 of file AMMOffer.cpp.

◆ key()

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

Definition at line 62 of file AMMOffer.h.

◆ amount()

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

Definition at line 38 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 45 of file AMMOffer.cpp.

◆ fully_consumed()

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

Definition at line 74 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 63 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 88 of file AMMOffer.cpp.

◆ getQualityFunc()

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

Definition at line 107 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 104 of file AMMOffer.h.

◆ isFunded()

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

Definition at line 110 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 117 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 117 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 23 of file AMMOffer.h.

◆ amounts_

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

Definition at line 33 of file AMMOffer.h.

◆ balances_

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

Definition at line 35 of file AMMOffer.h.

◆ quality_

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

Definition at line 38 of file AMMOffer.h.

◆ consumed_

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

Definition at line 40 of file AMMOffer.h.