xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
tx
paths
AMMLiquidity.h
1
#pragma once
2
3
#include <xrpl/basics/Number.h>
4
#include <xrpl/beast/utility/Journal.h>
5
#include <xrpl/ledger/ReadView.h>
6
#include <xrpl/protocol/AccountID.h>
7
#include <xrpl/protocol/Concepts.h>
8
#include <xrpl/protocol/Quality.h>
9
#include <xrpl/tx/transactors/dex/AMMContext.h>
10
11
#include <
cstdint
>
12
#include <
optional
>
13
14
namespace
xrpl
{
15
16
template
<StepAmount TIn, StepAmount TOut>
17
class
AMMOffer
;
18
34
template
<
typename
TIn,
typename
TOut>
35
class
AMMLiquidity
36
{
37
private
:
38
inline
static
Number
const
kInitialFibSeqPct
=
Number
(5) / 20000;
39
AMMContext
&
ammContext_
;
40
AccountID
const
ammAccountID_
;
41
std::uint32_t
const
tradingFee_
;
42
Asset
const
assetIn_
;
43
Asset
const
assetOut_
;
44
// Initial AMM pool balances
45
TAmounts<TIn, TOut>
const
initialBalances_
;
46
beast::Journal
const
j_
;
47
48
public
:
49
AMMLiquidity
(
50
ReadView
const
& view,
51
AccountID
const
& ammAccountID,
52
std::uint32_t
tradingFee
,
53
Asset
const
& in,
54
Asset
const
& out,
55
AMMContext
& ammContext,
56
beast::Journal
j);
57
~AMMLiquidity
() =
default
;
58
AMMLiquidity
(
AMMLiquidity
const
&) =
delete
;
59
AMMLiquidity
&
60
operator=
(
AMMLiquidity
const
&) =
delete
;
61
68
[[nodiscard]]
std::optional<AMMOffer<TIn, TOut>
>
69
getOffer
(
ReadView
const
& view,
std::optional<Quality>
const
& clobQuality)
const
;
70
71
[[nodiscard]]
AccountID
const
&
72
ammAccount
()
const
73
{
74
return
ammAccountID_
;
75
}
76
77
[[nodiscard]]
bool
78
multiPath
()
const
79
{
80
return
ammContext_
.multiPath();
81
}
82
83
[[nodiscard]]
std::uint32_t
84
tradingFee
()
const
85
{
86
return
tradingFee_
;
87
}
88
89
[[nodiscard]]
AMMContext
&
90
context
()
const
91
{
92
return
ammContext_
;
93
}
94
95
[[nodiscard]]
Asset
const
&
96
assetIn
()
const
97
{
98
return
assetIn_
;
99
}
100
101
[[nodiscard]]
Asset
const
&
102
assetOut
()
const
103
{
104
return
assetOut_
;
105
}
106
107
private
:
111
[[nodiscard]]
TAmounts<TIn, TOut>
112
fetchBalances
(
ReadView
const
& view)
const
;
113
122
[[nodiscard]]
TAmounts<TIn, TOut>
123
generateFibSeqOffer
(
TAmounts<TIn, TOut>
const
& balances)
const
;
124
130
[[nodiscard]]
std::optional<AMMOffer<TIn, TOut>
>
131
maxOffer
(
TAmounts<TIn, TOut>
const
& balances)
const
;
132
};
133
134
}
// namespace xrpl
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::AMMContext
Maintains AMM info per overall payment engine execution and individual iteration.
Definition
AMMContext.h:17
xrpl::AMMLiquidity::j_
beast::Journal const j_
Definition
AMMLiquidity.h:46
xrpl::AMMLiquidity::generateFibSeqOffer
TAmounts< TIn, TOut > generateFibSeqOffer(TAmounts< TIn, TOut > const &balances) const
Generate AMM offers with the offer size based on Fibonacci sequence.
Definition
AMMLiquidity.cpp:65
xrpl::AMMLiquidity::multiPath
bool multiPath() const
Definition
AMMLiquidity.h:78
xrpl::AMMLiquidity::~AMMLiquidity
~AMMLiquidity()=default
xrpl::AMMLiquidity::assetOut
Asset const & assetOut() const
Definition
AMMLiquidity.h:102
xrpl::AMMLiquidity::ammAccount
AccountID const & ammAccount() const
Definition
AMMLiquidity.h:72
xrpl::AMMLiquidity::AMMLiquidity
AMMLiquidity(AMMLiquidity const &)=delete
xrpl::AMMLiquidity::initialBalances_
TAmounts< TIn, TOut > const initialBalances_
Definition
AMMLiquidity.h:45
xrpl::AMMLiquidity::assetIn_
Asset const assetIn_
Definition
AMMLiquidity.h:42
xrpl::AMMLiquidity::ammAccountID_
AccountID const ammAccountID_
Definition
AMMLiquidity.h:40
xrpl::AMMLiquidity::operator=
AMMLiquidity & operator=(AMMLiquidity const &)=delete
xrpl::AMMLiquidity::fetchBalances
TAmounts< TIn, TOut > fetchBalances(ReadView const &view) const
Fetches current AMM balances.
Definition
AMMLiquidity.cpp:52
xrpl::AMMLiquidity::assetIn
Asset const & assetIn() const
Definition
AMMLiquidity.h:96
xrpl::AMMLiquidity::getOffer
std::optional< AMMOffer< TIn, TOut > > getOffer(ReadView const &view, std::optional< Quality > const &clobQuality) const
Generate AMM offer.
Definition
AMMLiquidity.cpp:147
xrpl::AMMLiquidity::assetOut_
Asset const assetOut_
Definition
AMMLiquidity.h:43
xrpl::AMMLiquidity::maxOffer
std::optional< AMMOffer< TIn, TOut > > maxOffer(TAmounts< TIn, TOut > const &balances) const
Generate max offer.
Definition
AMMLiquidity.cpp:136
xrpl::AMMLiquidity::AMMLiquidity
AMMLiquidity(ReadView const &view, AccountID const &ammAccountID, std::uint32_t tradingFee, Asset const &in, Asset const &out, AMMContext &ammContext, beast::Journal j)
Definition
AMMLiquidity.cpp:32
xrpl::AMMLiquidity::kInitialFibSeqPct
static Number const kInitialFibSeqPct
Definition
AMMLiquidity.h:38
xrpl::AMMLiquidity::context
AMMContext & context() const
Definition
AMMLiquidity.h:90
xrpl::AMMLiquidity::tradingFee_
std::uint32_t const tradingFee_
Definition
AMMLiquidity.h:41
xrpl::AMMLiquidity::tradingFee
std::uint32_t tradingFee() const
Definition
AMMLiquidity.h:84
xrpl::AMMLiquidity::ammContext_
AMMContext & ammContext_
Definition
AMMLiquidity.h:39
xrpl::AMMOffer
Represents synthetic AMM offer in BookStep.
Definition
AMMOffer.h:30
xrpl::Asset
Definition
Asset.h:52
xrpl::Number
Number is a floating point type that can represent a wide range of values.
Definition
Number.h:351
xrpl::ReadView
A view into a ledger.
Definition
ReadView.h:41
cstdint
std::uint32_t
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
optional
xrpl::TAmounts
Represents a pair of input and output currencies.
Definition
Quality.h:29
Generated by
1.17.0