xrpld
Loading...
Searching...
No Matches
IOU.h
1#pragma once
2
3#include <xrpl/basics/Number.h>
4#include <xrpl/protocol/Asset.h>
5#include <xrpl/protocol/Issue.h>
6#include <xrpl/protocol/STAmount.h>
7#include <xrpl/protocol/UintTypes.h>
8
9#include <helpers/Account.h>
10
11#include <concepts>
12#include <string>
13#include <string_view>
14#include <type_traits>
15
16namespace xrpl::test {
17
33class IOU
34{
35public:
41 IOU(std::string_view currencyCode, Account const& issuer)
42 : currency_(toCurrency(std::string(currencyCode))), issuer_(issuer.id())
43 {
44 XRPL_ASSERT(!isXRP(currency_), "IOU: currency code must not resolve to XRP");
45 }
46
53 {
54 XRPL_ASSERT(!isXRP(currency_), "IOU: currency code must not resolve to XRP");
55 }
56
61 [[nodiscard]] Issue
62 issue() const
63 {
64 return Issue{currency_, issuer_};
65 }
66
71 [[nodiscard]] Asset
72 asset() const
73 {
74 return Asset{issue()};
75 }
76
87 template <typename T>
89 [[nodiscard]] STAmount
90 amount(T value) const
91 {
92 return amountFromString(issue(), to_string(value));
93 }
94
100 [[nodiscard]] STAmount
101 amount(Number const& value) const
102 {
103 return STAmount{issue(), value};
104 }
105
110 [[nodiscard]] Currency const&
111 currency() const
112 {
113 return currency_;
114 }
115
120 [[nodiscard]] AccountID const&
121 issuer() const
122 {
123 return issuer_;
124 }
125
126private:
129};
130
131} // namespace xrpl::test
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
Asset asset() const
Get the Asset.
Definition IOU.h:72
STAmount amount(Number const &value) const
Create an STAmount of this IOU from a Number.
Definition IOU.h:101
Currency currency_
Definition IOU.h:127
AccountID const & issuer() const
Get the issuer account ID.
Definition IOU.h:121
Currency const & currency() const
Get the currency.
Definition IOU.h:111
STAmount amount(T value) const
Create an STAmount of this IOU.
Definition IOU.h:90
IOU(Currency currency, Account const &issuer)
Construct an IOU from a Currency and issuing account.
Definition IOU.h:52
AccountID issuer_
Definition IOU.h:128
IOU(std::string_view currencyCode, Account const &issuer)
Construct an IOU from a currency code and issuing account.
Definition IOU.h:41
Issue issue() const
Get the Issue (currency + issuer pair).
Definition IOU.h:62
Immutable cryptographic account descriptor.
Definition jtx/Account.h:17
T is_arithmetic_v
STL namespace.
bool isXRP(AccountID const &c)
Definition AccountID.h:70
BaseUInt< 160, detail::CurrencyTag > Currency
Currency is a hash representing a specific currency.
Definition UintTypes.h:36
STAmount amountFromString(Asset const &asset, std::string const &amount)
Definition STAmount.cpp:907
bool toCurrency(Currency &, std::string const &)
Tries to convert a string to a Currency, returns true on success.
Definition UintTypes.cpp:65
std::string to_string(BaseUInt< Bits, Tag > const &a)
Definition base_uint.h:633
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:28