rippled
Loading...
Searching...
No Matches
AMMLiquidity.h
1#ifndef XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
2#define XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
3
4#include <xrpld/app/misc/AMMHelpers.h>
5#include <xrpld/app/misc/AMMUtils.h>
6#include <xrpld/app/paths/AMMContext.h>
7
8#include <xrpl/basics/Log.h>
9#include <xrpl/ledger/ReadView.h>
10#include <xrpl/ledger/View.h>
11#include <xrpl/protocol/Quality.h>
12
13namespace ripple {
14
15template <typename TIn, typename TOut>
16class AMMOffer;
17
32template <typename TIn, typename TOut>
34{
35private:
36 inline static Number const InitialFibSeqPct = Number(5) / 20000;
42 // Initial AMM pool balances
43 TAmounts<TIn, TOut> const initialBalances_;
45
46public:
48 ReadView const& view,
49 AccountID const& ammAccountID,
51 Issue const& in,
52 Issue const& out,
53 AMMContext& ammContext,
55 ~AMMLiquidity() = default;
56 AMMLiquidity(AMMLiquidity const&) = delete;
58 operator=(AMMLiquidity const&) = delete;
59
66 getOffer(ReadView const& view, std::optional<Quality> const& clobQuality)
67 const;
68
69 AccountID const&
70 ammAccount() const
71 {
72 return ammAccountID_;
73 }
74
75 bool
76 multiPath() const
77 {
78 return ammContext_.multiPath();
79 }
80
82 tradingFee() const
83 {
84 return tradingFee_;
85 }
86
88 context() const
89 {
90 return ammContext_;
91 }
92
93 Issue const&
94 issueIn() const
95 {
96 return issueIn_;
97 }
98
99 Issue const&
100 issueOut() const
101 {
102 return issueOut_;
103 }
104
105private:
108 TAmounts<TIn, TOut>
109 fetchBalances(ReadView const& view) const;
110
118 TAmounts<TIn, TOut>
119 generateFibSeqOffer(TAmounts<TIn, TOut> const& balances) const;
120
131 maxOffer(TAmounts<TIn, TOut> const& balances, Rules const& rules) const;
132};
133
134} // namespace ripple
135
136#endif // XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
A generic endpoint for log messages.
Definition Journal.h:41
Maintains AMM info per overall payment engine execution and individual iteration.
Definition AMMContext.h:17
bool multiPath() const
Definition AMMContext.h:45
AMMLiquidity class provides AMM offers to BookStep class.
AMMLiquidity(AMMLiquidity const &)=delete
AMMContext & context() const
Issue const & issueOut() const
static Number const InitialFibSeqPct
AccountID const ammAccountID_
std::uint32_t tradingFee() const
bool multiPath() const
Issue const & issueIn() const
std::optional< AMMOffer< TIn, TOut > > getOffer(ReadView const &view, std::optional< Quality > const &clobQuality) const
Generate AMM offer.
beast::Journal const j_
TAmounts< TIn, TOut > fetchBalances(ReadView const &view) const
Fetches current AMM balances.
AccountID const & ammAccount() const
AMMLiquidity & operator=(AMMLiquidity const &)=delete
AMMContext & ammContext_
std::optional< AMMOffer< TIn, TOut > > maxOffer(TAmounts< TIn, TOut > const &balances, Rules const &rules) const
Generate max offer.
TAmounts< TIn, TOut > const initialBalances_
Issue const issueOut_
std::uint32_t const tradingFee_
TAmounts< TIn, TOut > generateFibSeqOffer(TAmounts< TIn, TOut > const &balances) const
Generate AMM offers with the offer size based on Fibonacci sequence.
A currency issued by an account.
Definition Issue.h:14
A view into a ledger.
Definition ReadView.h:32
Rules controlling protocol behavior.
Definition Rules.h:19
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6