rippled
Loading...
Searching...
No Matches
AMMDeposit.h
1#ifndef XRPL_TX_AMMDEPOSIT_H_INCLUDED
2#define XRPL_TX_AMMDEPOSIT_H_INCLUDED
3
4#include <xrpld/app/tx/detail/Transactor.h>
5
6namespace ripple {
7
8class Sandbox;
9
43class AMMDeposit : public Transactor
44{
45public:
47
48 explicit AMMDeposit(ApplyContext& ctx) : Transactor(ctx)
49 {
50 }
51
52 static bool
54
55 static std::uint32_t
57
58 static NotTEC
59 preflight(PreflightContext const& ctx);
60
61 static TER
62 preclaim(PreclaimContext const& ctx);
63
64 TER
65 doApply() override;
66
67private:
70
87 deposit(
89 AccountID const& ammAccount,
90 STAmount const& amountBalance,
91 STAmount const& amountDeposit,
92 std::optional<STAmount> const& amount2Deposit,
93 STAmount const& lptAMMBalance,
94 STAmount const& lpTokensDeposit,
95 std::optional<STAmount> const& depositMin,
96 std::optional<STAmount> const& deposit2Min,
97 std::optional<STAmount> const& lpTokensDepositMin,
98 std::uint16_t tfee);
99
115 Sandbox& view,
116 AccountID const& ammAccount,
117 STAmount const& amountBalance,
118 STAmount const& amount2Balance,
119 STAmount const& lptAMMBalance,
120 STAmount const& lpTokensDeposit,
121 std::optional<STAmount> const& depositMin,
122 std::optional<STAmount> const& deposit2Min,
123 std::uint16_t tfee);
124
141 Sandbox& view,
142 AccountID const& ammAccount,
143 STAmount const& amountBalance,
144 STAmount const& amount2Balance,
145 STAmount const& lptAMMBalance,
146 STAmount const& amount,
147 STAmount const& amount2,
148 std::optional<STAmount> const& lpTokensDepositMin,
149 std::uint16_t tfee);
150
164 Sandbox& view,
165 AccountID const& ammAccount,
166 STAmount const& amountBalance,
167 STAmount const& lptAMMBalance,
168 STAmount const& amount,
169 std::optional<STAmount> const& lpTokensDepositMin,
170 std::uint16_t tfee);
171
185 Sandbox& view,
186 AccountID const& ammAccount,
187 STAmount const& amountBalance,
188 STAmount const& amount,
189 STAmount const& lptAMMBalance,
190 STAmount const& lpTokensDeposit,
191 std::uint16_t tfee);
192
206 Sandbox& view,
207 AccountID const& ammAccount,
208 STAmount const& amountBalance,
209 STAmount const& amount,
210 STAmount const& lptAMMBalance,
211 STAmount const& ePrice,
212 std::uint16_t tfee);
213
224 Sandbox& view,
225 AccountID const& ammAccount,
226 STAmount const& amount,
227 STAmount const& amount2,
228 Issue const& lptIssue,
229 std::uint16_t tfee);
230};
231
232} // namespace ripple
233
234#endif // XRPL_TX_AMMDEPOSIT_H_INCLUDED
AMMDeposit implements AMM deposit Transactor.
Definition AMMDeposit.h:44
std::pair< TER, bool > applyGuts(Sandbox &view)
std::pair< TER, STAmount > equalDepositLimit(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount2Balance, STAmount const &lptAMMBalance, STAmount const &amount, STAmount const &amount2, std::optional< STAmount > const &lpTokensDepositMin, std::uint16_t tfee)
Equal asset deposit (Asset1In, Asset2In) with the constraint on the maximum amount of both assets tha...
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
std::pair< TER, STAmount > singleDepositEPrice(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount, STAmount const &lptAMMBalance, STAmount const &ePrice, std::uint16_t tfee)
Single asset deposit (Asset1In, EPrice) with two constraints.
static TER preclaim(PreclaimContext const &ctx)
std::pair< TER, STAmount > singleDeposit(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &lptAMMBalance, STAmount const &amount, std::optional< STAmount > const &lpTokensDepositMin, std::uint16_t tfee)
Single asset deposit (Asset1In) by the amount.
static NotTEC preflight(PreflightContext const &ctx)
std::pair< TER, STAmount > equalDepositTokens(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount2Balance, STAmount const &lptAMMBalance, STAmount const &lpTokensDeposit, std::optional< STAmount > const &depositMin, std::optional< STAmount > const &deposit2Min, std::uint16_t tfee)
Equal asset deposit (LPTokens) for the specified share of the AMM instance pools.
static bool checkExtraFeatures(PreflightContext const &ctx)
static constexpr ConsequencesFactoryType ConsequencesFactory
Definition AMMDeposit.h:46
TER doApply() override
std::pair< TER, STAmount > equalDepositInEmptyState(Sandbox &view, AccountID const &ammAccount, STAmount const &amount, STAmount const &amount2, Issue const &lptIssue, std::uint16_t tfee)
Equal deposit in empty AMM state (LP tokens balance is 0)
std::pair< TER, STAmount > singleDepositTokens(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount, STAmount const &lptAMMBalance, STAmount const &lpTokensDeposit, std::uint16_t tfee)
Single asset deposit (Asset1In, LPTokens) by the tokens.
std::pair< TER, STAmount > deposit(Sandbox &view, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amountDeposit, std::optional< STAmount > const &amount2Deposit, STAmount const &lptAMMBalance, STAmount const &lpTokensDeposit, std::optional< STAmount > const &depositMin, std::optional< STAmount > const &deposit2Min, std::optional< STAmount > const &lpTokensDepositMin, std::uint16_t tfee)
Deposit requested assets and token amount into LP account.
AMMDeposit(ApplyContext &ctx)
Definition AMMDeposit.h:48
State information when applying a tx.
A currency issued by an account.
Definition Issue.h:14
Discardable, editable view to a ledger.
Definition Sandbox.h:16
ApplyView & view()
Definition Transactor.h:144
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
State information when determining if a tx is likely to claim a fee.
Definition Transactor.h:61
State information when preflighting a tx.
Definition Transactor.h:16