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/AccountID.h>
6#include <xrpl/protocol/STAmount.h>
7#include <xrpl/protocol/STLedgerEntry.h>
8#include <xrpl/protocol/STTx.h>
9#include <xrpl/protocol/TER.h>
10#include <xrpl/protocol/XRPAmount.h>
11
12#include <optional>
13
14namespace xrpl {
15
17{
22 bool ammPoolChanged_{false};
23 bool ammDeleted_{false};
24
25public:
26 enum class ZeroAllowed : bool { No = false, Yes = true };
27
28 ValidAMM() = default;
29 void
31
32 bool
33 finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&);
34
35private:
36 [[nodiscard]] bool
37 finalizeBid(bool enforce, beast::Journal const&) const;
38 [[nodiscard]] bool
39 finalizeVote(bool enforce, beast::Journal const&) const;
40 [[nodiscard]] bool
41 finalizeCreate(STTx const&, ReadView const&, bool enforce, beast::Journal const&) const;
42 [[nodiscard]] bool
43 finalizeDelete(bool enforce, bool enforceAMMDelete, TER res, beast::Journal const&) const;
44 [[nodiscard]] bool
45 finalizeDeposit(STTx const&, ReadView const&, bool enforce, beast::Journal const&) const;
46 // Includes clawback
47 [[nodiscard]] bool
49 STTx const&,
50 ReadView const&,
51 bool enforce,
52 bool enforceAMMDelete,
53 beast::Journal const&) const;
54 [[nodiscard]] bool
55 finalizeDEX(bool enforce, beast::Journal const&) const;
56 [[nodiscard]] bool
57 generalInvariant(STTx const&, ReadView const&, ZeroAllowed zeroAllowed, beast::Journal const&)
58 const;
59};
60
61} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:44
A view into a ledger.
Definition ReadView.h:41
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:647