xrpld
Loading...
Searching...
No Matches
AMMCore.h
1#pragma once
2
3#include <xrpl/basics/Number.h>
4#include <xrpl/protocol/AccountID.h>
5#include <xrpl/protocol/Asset.h>
6#include <xrpl/protocol/Issue.h>
7#include <xrpl/protocol/TER.h>
8#include <xrpl/protocol/UintTypes.h>
9
10#include <cstdint>
11#include <optional>
12#include <utility>
13
14namespace xrpl {
15
16constexpr std::uint16_t kTradingFeeThreshold = 1000; // 1%
17
18// Auction slot
19constexpr std::uint32_t kTotalTimeSlotSecs = 24 * 3600;
27
28// Votes
31
32class STObject;
33class STAmount;
34class Rules;
35
40ammLPTCurrency(Asset const& asset1, Asset const& asset2);
41
46ammLPTIssue(Asset const& asset1, Asset const& asset2, AccountID const& ammAccountID);
47
56 STAmount const& amount,
57 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt,
58 bool validZero = false);
59
62 Asset const& asset,
63 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt);
64
67 Asset const& asset1,
68 Asset const& asset2,
69 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt);
70
75ammAuctionTimeSlot(std::uint64_t current, STObject const& auctionSlot);
76
80bool
81ammEnabled(Rules const&);
82
88inline Number
90{
92}
93
98inline Number
100{
101 return 1 - getFee(tfee);
102}
103
108inline Number
110{
111 return 1 - getFee(tfee) / 2;
112}
113
114} // namespace xrpl
A currency issued by an account.
Definition Issue.h:18
Number is a floating point type that can represent a wide range of values.
Definition Number.h:351
Rules controlling protocol behavior.
Definition Rules.h:40
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
constexpr std::uint16_t kVoteMaxSlots
Definition AMMCore.h:29
NotTEC invalidAMMAmount(STAmount const &amount, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt, bool validZero=false)
Validate the amount.
Definition AMMCore.cpp:98
constexpr std::uint16_t kTradingFeeThreshold
Definition AMMCore.h:16
constexpr std::uint32_t kTotalTimeSlotSecs
Definition AMMCore.h:19
Number feeMultHalf(std::uint16_t tfee)
Get fee multiplier (1 - tfee / 2) @tfee trading fee in basis points.
Definition AMMCore.h:109
constexpr std::uint32_t kAuctionSlotDiscountedFeeFraction
Definition AMMCore.h:23
bool ammEnabled(Rules const &)
Return true if required AMM amendment is enabled.
Definition AMMCore.cpp:129
NotTEC invalidAMMAssetPair(Asset const &asset1, Asset const &asset2, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt)
Definition AMMCore.cpp:83
BaseUInt< 160, detail::CurrencyTag > Currency
Currency is a hash representing a specific currency.
Definition UintTypes.h:42
Currency ammLPTCurrency(Asset const &asset1, Asset const &asset2)
Calculate Liquidity Provider Token (LPT) Currency.
Definition AMMCore.cpp:30
TERSubset< CanCvtToNotTEC > NotTEC
Definition TER.h:607
Number feeMult(std::uint16_t tfee)
Get fee multiplier (1 - tfee) @tfee trading fee in basis points.
Definition AMMCore.h:99
constexpr std::uint32_t kAuctionSlotMinFeeFraction
Definition AMMCore.h:24
constexpr std::uint32_t kAuctionSlotFeeScaleFactor
Definition AMMCore.h:22
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:34
constexpr std::uint16_t kAuctionSlotTimeIntervals
Definition AMMCore.h:20
Number getFee(std::uint16_t tfee)
Convert to the fee from the basis points.
Definition AMMCore.h:89
std::optional< std::uint8_t > ammAuctionTimeSlot(std::uint64_t current, STObject const &auctionSlot)
Get time slot of the auction slot.
Definition AMMCore.cpp:111
constexpr std::uint32_t kVoteWeightScaleFactor
Definition AMMCore.h:30
Issue ammLPTIssue(Asset const &asset1, Asset const &asset2, AccountID const &ammAccountID)
Calculate LPT Issue from AMM asset pair.
Definition AMMCore.cpp:54
constexpr std::uint16_t kAuctionSlotMaxAuthAccounts
Definition AMMCore.h:21
NotTEC invalidAMMAsset(Asset const &asset, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt)
Definition AMMCore.cpp:60
constexpr std::uint32_t kAuctionSlotIntervalDuration
Definition AMMCore.h:25