rippled
Loading...
Searching...
No Matches
AMMLiquidity.h
1#pragma once
2
3#include <xrpld/app/misc/AMMHelpers.h>
4#include <xrpld/app/misc/AMMUtils.h>
5#include <xrpld/app/paths/AMMContext.h>
6
7#include <xrpl/basics/Log.h>
8#include <xrpl/ledger/ReadView.h>
9#include <xrpl/ledger/View.h>
10#include <xrpl/protocol/Quality.h>
11
12namespace xrpl {
13
14template <typename TIn, typename TOut>
15class AMMOffer;
16
31template <typename TIn, typename TOut>
33{
34private:
35 inline static Number const InitialFibSeqPct = Number(5) / 20000;
41 // Initial AMM pool balances
42 TAmounts<TIn, TOut> const initialBalances_;
44
45public:
47 ReadView const& view,
48 AccountID const& ammAccountID,
50 Issue const& in,
51 Issue const& out,
52 AMMContext& ammContext,
54 ~AMMLiquidity() = default;
55 AMMLiquidity(AMMLiquidity const&) = delete;
57 operator=(AMMLiquidity const&) = delete;
58
65 getOffer(ReadView const& view, std::optional<Quality> const& clobQuality) const;
66
67 AccountID const&
68 ammAccount() const
69 {
70 return ammAccountID_;
71 }
72
73 bool
74 multiPath() const
75 {
76 return ammContext_.multiPath();
77 }
78
80 tradingFee() const
81 {
82 return tradingFee_;
83 }
84
86 context() const
87 {
88 return ammContext_;
89 }
90
91 Issue const&
92 issueIn() const
93 {
94 return issueIn_;
95 }
96
97 Issue const&
98 issueOut() const
99 {
100 return issueOut_;
101 }
102
103private:
106 TAmounts<TIn, TOut>
107 fetchBalances(ReadView const& view) const;
108
116 TAmounts<TIn, TOut>
117 generateFibSeqOffer(TAmounts<TIn, TOut> const& balances) const;
118
129 maxOffer(TAmounts<TIn, TOut> const& balances, Rules const& rules) const;
130};
131
132} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:40
Maintains AMM info per overall payment engine execution and individual iteration.
Definition AMMContext.h:16
bool multiPath() const
Definition AMMContext.h:43
AMMLiquidity class provides AMM offers to BookStep class.
beast::Journal const j_
TAmounts< TIn, TOut > generateFibSeqOffer(TAmounts< TIn, TOut > const &balances) const
Generate AMM offers with the offer size based on Fibonacci sequence.
bool multiPath() const
Issue const issueOut_
~AMMLiquidity()=default
static Number const InitialFibSeqPct
AccountID const & ammAccount() const
AMMLiquidity(AMMLiquidity const &)=delete
TAmounts< TIn, TOut > const initialBalances_
AccountID const ammAccountID_
AMMLiquidity & operator=(AMMLiquidity const &)=delete
std::optional< AMMOffer< TIn, TOut > > maxOffer(TAmounts< TIn, TOut > const &balances, Rules const &rules) const
Generate max offer.
TAmounts< TIn, TOut > fetchBalances(ReadView const &view) const
Fetches current AMM balances.
std::optional< AMMOffer< TIn, TOut > > getOffer(ReadView const &view, std::optional< Quality > const &clobQuality) const
Generate AMM offer.
Issue const & issueOut() const
Issue const issueIn_
Issue const & issueIn() const
AMMContext & context() const
std::uint32_t const tradingFee_
std::uint32_t tradingFee() const
AMMContext & ammContext_
A currency issued by an account.
Definition Issue.h:13
Number is a floating point type that can represent a wide range of values.
Definition Number.h:207
A view into a ledger.
Definition ReadView.h:31
Rules controlling protocol behavior.
Definition Rules.h:18
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5