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/TER.h>
7#include <xrpl/protocol/UintTypes.h>
8
9namespace xrpl {
10
11constexpr std::uint16_t kTradingFeeThreshold = 1000; // 1%
12
13// Auction slot
14constexpr std::uint32_t kTotalTimeSlotSecs = 24 * 3600;
22
23// Votes
26
27class STObject;
28class STAmount;
29class Rules;
30
34ammLPTCurrency(Asset const& asset1, Asset const& asset2);
35
39ammLPTIssue(Asset const& asset1, Asset const& asset2, AccountID const& ammAccountID);
40
48 STAmount const& amount,
49 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt,
50 bool validZero = false);
51
54 Asset const& asset,
55 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt);
56
59 Asset const& asset1,
60 Asset const& asset2,
61 std::optional<std::pair<Asset, Asset>> const& pair = std::nullopt);
62
66ammAuctionTimeSlot(std::uint64_t current, STObject const& auctionSlot);
67
70bool
71ammEnabled(Rules const&);
72
77inline Number
79{
81}
82
86inline Number
88{
89 return 1 - getFee(tfee);
90}
91
95inline Number
97{
98 return 1 - getFee(tfee) / 2;
99}
100
101} // namespace xrpl
A currency issued by an account.
Definition Issue.h:13
Number is a floating point type that can represent a wide range of values.
Definition Number.h:306
Rules controlling protocol behavior.
Definition Rules.h:33
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:24
NotTEC invalidAMMAmount(STAmount const &amount, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt, bool validZero=false)
Validate the amount.
Definition AMMCore.cpp:97
constexpr std::uint16_t kTradingFeeThreshold
Definition AMMCore.h:11
constexpr std::uint32_t kTotalTimeSlotSecs
Definition AMMCore.h:14
Number feeMultHalf(std::uint16_t tfee)
Get fee multiplier (1 - tfee / 2) @tfee trading fee in basis points.
Definition AMMCore.h:96
constexpr std::uint32_t kAuctionSlotDiscountedFeeFraction
Definition AMMCore.h:18
bool ammEnabled(Rules const &)
Return true if required AMM amendment is enabled.
Definition AMMCore.cpp:128
NotTEC invalidAMMAssetPair(Asset const &asset1, Asset const &asset2, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt)
Definition AMMCore.cpp:82
BaseUInt< 160, detail::CurrencyTag > Currency
Currency is a hash representing a specific currency.
Definition UintTypes.h:36
Currency ammLPTCurrency(Asset const &asset1, Asset const &asset2)
Calculate Liquidity Provider Token (LPT) Currency.
Definition AMMCore.cpp:29
TERSubset< CanCvtToNotTEC > NotTEC
Definition TER.h:594
Number feeMult(std::uint16_t tfee)
Get fee multiplier (1 - tfee) @tfee trading fee in basis points.
Definition AMMCore.h:87
constexpr std::uint32_t kAuctionSlotMinFeeFraction
Definition AMMCore.h:19
constexpr std::uint32_t kAuctionSlotFeeScaleFactor
Definition AMMCore.h:17
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:28
constexpr std::uint16_t kAuctionSlotTimeIntervals
Definition AMMCore.h:15
Number getFee(std::uint16_t tfee)
Convert to the fee from the basis points.
Definition AMMCore.h:78
std::optional< std::uint8_t > ammAuctionTimeSlot(std::uint64_t current, STObject const &auctionSlot)
Get time slot of the auction slot.
Definition AMMCore.cpp:110
constexpr std::uint32_t kVoteWeightScaleFactor
Definition AMMCore.h:25
Issue ammLPTIssue(Asset const &asset1, Asset const &asset2, AccountID const &ammAccountID)
Calculate LPT Issue from AMM asset pair.
Definition AMMCore.cpp:53
constexpr std::uint16_t kAuctionSlotMaxAuthAccounts
Definition AMMCore.h:16
NotTEC invalidAMMAsset(Asset const &asset, std::optional< std::pair< Asset, Asset > > const &pair=std::nullopt)
Definition AMMCore.cpp:59
constexpr std::uint32_t kAuctionSlotIntervalDuration
Definition AMMCore.h:20