rippled
Loading...
Searching...
No Matches
AMMLiquidity.h
1#pragma once
2
3#include <xrpl/basics/Log.h>
4#include <xrpl/ledger/ReadView.h>
5#include <xrpl/ledger/View.h>
6#include <xrpl/protocol/Quality.h>
7#include <xrpl/tx/transactors/dex/AMMContext.h>
8#include <xrpl/tx/transactors/dex/AMMHelpers.h>
9#include <xrpl/tx/transactors/dex/AMMUtils.h>
10
11namespace xrpl {
12
13template <typename TIn, typename TOut>
14class AMMOffer;
15
30template <typename TIn, typename TOut>
32{
33private:
34 inline static Number const InitialFibSeqPct = Number(5) / 20000;
40 // Initial AMM pool balances
41 TAmounts<TIn, TOut> const initialBalances_;
43
44public:
46 ReadView const& view,
47 AccountID const& ammAccountID,
49 Issue const& in,
50 Issue const& out,
51 AMMContext& ammContext,
53 ~AMMLiquidity() = default;
54 AMMLiquidity(AMMLiquidity const&) = delete;
56 operator=(AMMLiquidity const&) = delete;
57
64 getOffer(ReadView const& view, std::optional<Quality> const& clobQuality) const;
65
66 AccountID const&
67 ammAccount() const
68 {
69 return ammAccountID_;
70 }
71
72 bool
73 multiPath() const
74 {
75 return ammContext_.multiPath();
76 }
77
79 tradingFee() const
80 {
81 return tradingFee_;
82 }
83
85 context() const
86 {
87 return ammContext_;
88 }
89
90 Issue const&
91 issueIn() const
92 {
93 return issueIn_;
94 }
95
96 Issue const&
97 issueOut() const
98 {
99 return issueOut_;
100 }
101
102private:
105 TAmounts<TIn, TOut>
106 fetchBalances(ReadView const& view) const;
107
115 TAmounts<TIn, TOut>
116 generateFibSeqOffer(TAmounts<TIn, TOut> const& balances) const;
117
128 maxOffer(TAmounts<TIn, TOut> const& balances, Rules const& rules) const;
129};
130
131} // 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