xrpld
Loading...
Searching...
No Matches
AMMInvariant.h
1#pragma once
2
3#include <xrpl/beast/utility/Journal.h>
4#include <xrpl/ledger/ReadView.h>
5#include <xrpl/protocol/STAmount.h>
6#include <xrpl/protocol/STTx.h>
7#include <xrpl/protocol/TER.h>
8
9#include <optional>
10
11namespace xrpl {
12
14{
19 bool ammPoolChanged_{false};
20 bool ammDeleted_{false};
21
22public:
23 enum class ZeroAllowed : bool { No = false, Yes = true };
24
25 ValidAMM() = default;
26 void
28
29 bool
30 finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&);
31
32private:
33 [[nodiscard]] bool
34 finalizeBid(bool enforce, beast::Journal const&) const;
35 [[nodiscard]] bool
36 finalizeVote(bool enforce, beast::Journal const&) const;
37 [[nodiscard]] bool
38 finalizeCreate(STTx const&, ReadView const&, bool enforce, beast::Journal const&) const;
39 [[nodiscard]] bool
40 finalizeDelete(bool enforce, bool enforceAMMDelete, TER res, beast::Journal const&) const;
41 [[nodiscard]] bool
42 finalizeDeposit(STTx const&, ReadView const&, bool enforce, beast::Journal const&) const;
43 // Includes clawback
44 [[nodiscard]] bool
46 STTx const&,
47 ReadView const&,
48 bool enforce,
49 bool enforceAMMDelete,
50 beast::Journal const&) const;
51 [[nodiscard]] bool
52 finalizeDEX(bool enforce, beast::Journal const&) const;
53 [[nodiscard]] bool
54 generalInvariant(STTx const&, ReadView const&, ZeroAllowed zeroAllowed, beast::Journal const&)
55 const;
56};
57
58} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:38
A view into a ledger.
Definition ReadView.h:31
std::shared_ptr< STLedgerEntry const > const & const_ref
std::optional< AccountID > ammAccount_
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
bool finalizeBid(bool enforce, beast::Journal const &) const
ValidAMM()=default
bool finalizeDelete(bool enforce, bool enforceAMMDelete, TER res, beast::Journal const &) const
bool finalizeCreate(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
bool finalizeWithdraw(STTx const &, ReadView const &, bool enforce, bool enforceAMMDelete, beast::Journal const &) const
bool finalizeDEX(bool enforce, beast::Journal const &) const
void visitEntry(bool, SLE::const_ref, SLE::const_ref)
bool finalizeDeposit(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
bool generalInvariant(STTx const &, ReadView const &, ZeroAllowed zeroAllowed, beast::Journal const &) const
std::optional< STAmount > lptAMMBalanceBeforeDeletion_
std::optional< STAmount > lptAMMBalanceAfter_
bool finalizeVote(bool enforce, beast::Journal const &) const
std::optional< STAmount > lptAMMBalanceBefore_
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
TERSubset< CanCvtToTER > TER
Definition TER.h:634