rippled
Loading...
Searching...
No Matches
TER.h
1#ifndef XRPL_PROTOCOL_TER_H_INCLUDED
2#define XRPL_PROTOCOL_TER_H_INCLUDED
3
4#include <xrpl/basics/safe_cast.h>
5#include <xrpl/json/json_value.h>
6
7#include <optional>
8#include <ostream>
9#include <string>
10#include <unordered_map>
11
12namespace ripple {
13
14// See https://xrpl.org/transaction-results.html
15//
16// "Transaction Engine Result"
17// or Transaction ERror.
18//
20
21//------------------------------------------------------------------------------
22
24 // Note: Range is stable.
25 // Exact numbers are used in ripple-binary-codec:
26 // https://github.com/XRPLF/xrpl.js/blob/main/packages/ripple-binary-codec/src/enums/definitions.json
27 // Use tokens.
28
29 // -399 .. -300: L Local error (transaction fee inadequate, exceeds local
30 // limit) Only valid during non-consensus processing. Implications:
31 // - Not forwarded
32 // - No fee check
50};
51
52//------------------------------------------------------------------------------
53
55 // Note: Range is stable.
56 // Exact numbers are used in ripple-binary-codec:
57 // https://github.com/XRPLF/xrpl.js/blob/main/packages/ripple-binary-codec/src/enums/definitions.json
58 // Use tokens.
59
60 // -299 .. -200: M Malformed (bad signature)
61 // Causes:
62 // - Transaction corrupt.
63 // Implications:
64 // - Not applied
65 // - Not forwarded
66 // - Reject
67 // - Cannot succeed in any imagined ledger.
69
103
104 temUNCERTAIN, // An internal intermediate result; should never be returned.
105 temUNKNOWN, // An internal intermediate result; should never be returned.
106
109
111
118
120
125};
126
127//------------------------------------------------------------------------------
128
130 // Note: Range is stable.
131 // Exact numbers are used in ripple-binary-codec:
132 // https://github.com/XRPLF/xrpl.js/blob/main/packages/ripple-binary-codec/src/enums/definitions.json
133 // Use tokens.
134
135 // -199 .. -100: F
136 // Failure (sequence number previously used)
137 //
138 // Causes:
139 // - Transaction cannot succeed because of ledger state.
140 // - Unexpected ledger state.
141 // - C++ exception.
142 //
143 // Implications:
144 // - Not applied
145 // - Not forwarded
146 // - Could succeed in an imagined ledger.
155 tefNO_AUTH_REQUIRED, // Can't set auth if auth is not required.
169};
170
171//------------------------------------------------------------------------------
172
174 // Note: Range is stable.
175 // Exact numbers are used in ripple-binary-codec:
176 // https://github.com/XRPLF/xrpl.js/blob/main/packages/ripple-binary-codec/src/enums/definitions.json
177 // Use tokens.
178
179 // -99 .. -1: R Retry
180 // sequence too high, no funds for txn fee, originating -account
181 // non-existent
182 //
183 // Cause:
184 // Prior application of another, possibly non-existent, transaction could
185 // allow this transaction to succeed.
186 //
187 // Implications:
188 // - Not applied
189 // - May be forwarded
190 // - Results indicating the txn was forwarded: terQUEUED
191 // - All others are not forwarded.
192 // - Might succeed later
193 // - Hold
194 // - Makes hole in sequence which jams transactions.
195 terRETRY = -99,
196 terFUNDS_SPENT, // DEPRECATED.
197 terINSUF_FEE_B, // Can't pay fee, therefore don't burden network.
198 terNO_ACCOUNT, // Can't pay fee, therefore don't burden network.
199 terNO_AUTH, // Not authorized to hold IOUs.
200 terNO_LINE, // Internal flag.
201 terOWNERS, // Can't succeed with non-zero owner count.
202 terPRE_SEQ, // Can't pay fee, no point in forwarding, so don't
203 // burden network.
204 terLAST, // DEPRECATED.
205 terNO_RIPPLE, // Rippling not allowed
206 terQUEUED, // Transaction is being held in TxQ until fee drops
207 terPRE_TICKET, // Ticket is not yet in ledger but might be on its way
208 terNO_AMM, // AMM doesn't exist for the asset pair
209 terADDRESS_COLLISION, // Failed to allocate AccountID when trying to
210 // create a pseudo-account
211 terNO_DELEGATE_PERMISSION, // Delegate does not have permission
212};
213
214//------------------------------------------------------------------------------
215
217 // Note: Exact number must stay stable. This code is stored by value
218 // in metadata for historic transactions.
219
220 // 0: S Success (success)
221 // Causes:
222 // - Success.
223 // Implications:
224 // - Applied
225 // - Forwarded
226 tesSUCCESS = 0
228
229//------------------------------------------------------------------------------
230
232 // Note: Exact numbers must stay stable. These codes are stored by
233 // value in metadata for historic transactions.
234
235 // 100 .. 255 C
236 // Claim fee only (ripple transaction with no good paths, pay to
237 // non-existent account, no path)
238 //
239 // Causes:
240 // - Success, but does not achieve optimal result.
241 // - Invalid transaction or no effect, but claim fee to use the sequence
242 // number.
243 //
244 // Implications:
245 // - Applied
246 // - Forwarded
247 //
248 // Only allowed as a return code of appliedTransaction when !tapRETRY.
249 // Otherwise, treated as terRETRY.
250 //
251 // DO NOT CHANGE THESE NUMBERS: They appear in ledger meta data.
252 //
253 // Note:
254 // tecNO_ENTRY is often used interchangeably with tecOBJECT_NOT_FOUND.
255 // While there does not seem to be a clear rule which to use when, the
256 // following guidance will help to keep errors consistent with the
257 // majority of (but not all) transaction types:
258 // - tecNO_ENTRY : cannot find the primary ledger object on which the
259 // transaction is being attempted
260 // - tecOBJECT_NOT_FOUND : cannot find the additional object(s) needed to
261 // complete the transaction
262
263 tecCLAIM = 100,
265 tecUNFUNDED_ADD = 102, // Unused legacy code
301 tecHOOK_REJECTED [[maybe_unused]] = 153,
346 // DEPRECATED: This error code tecNO_DELEGATE_PERMISSION is reserved for
347 // backward compatibility with historical data on non-prod networks, can be
348 // reclaimed after those networks reset.
350};
351
352//------------------------------------------------------------------------------
353
354// For generic purposes, a free function that returns the value of a TE*codes.
355constexpr TERUnderlyingType
357{
358 return safe_cast<TERUnderlyingType>(v);
359}
360
361constexpr TERUnderlyingType
363{
364 return safe_cast<TERUnderlyingType>(v);
365}
366
367constexpr TERUnderlyingType
369{
370 return safe_cast<TERUnderlyingType>(v);
371}
372
373constexpr TERUnderlyingType
375{
376 return safe_cast<TERUnderlyingType>(v);
377}
378
379constexpr TERUnderlyingType
381{
382 return safe_cast<TERUnderlyingType>(v);
383}
384
385constexpr TERUnderlyingType
387{
388 return safe_cast<TERUnderlyingType>(v);
389}
390
391//------------------------------------------------------------------------------
392// Template class that is specific to selected ranges of error codes. The
393// Trait tells std::enable_if which ranges are allowed.
394template <template <typename> class Trait>
396{
398
399public:
400 // Constructors
402 {
403 }
404 constexpr TERSubset(TERSubset const& rhs) = default;
405 constexpr TERSubset(TERSubset&& rhs) = default;
406
407private:
408 constexpr explicit TERSubset(int rhs) : code_(rhs)
409 {
410 }
411
412public:
413 static constexpr TERSubset
414 fromInt(int from)
415 {
416 return TERSubset(from);
417 }
418
419 // Trait tells enable_if which types are allowed for construction.
420 template <
421 typename T,
422 typename = std::enable_if_t<
423 Trait<std::remove_cv_t<std::remove_reference_t<T>>>::value>>
424 constexpr TERSubset(T rhs) : code_(TERtoInt(rhs))
425 {
426 }
427
428 // Assignment
429 constexpr TERSubset&
430 operator=(TERSubset const& rhs) = default;
431 constexpr TERSubset&
432 operator=(TERSubset&& rhs) = default;
433
434 // Trait tells enable_if which types are allowed for assignment.
435 template <typename T>
436 constexpr auto
438 {
439 code_ = TERtoInt(rhs);
440 return *this;
441 }
442
443 // Conversion to bool.
444 explicit
445 operator bool() const
446 {
447 return code_ != tesSUCCESS;
448 }
449
450 // Conversion to Json::Value allows assignment to Json::Objects
451 // without casting.
452 operator Json::Value() const
453 {
454 return Json::Value{code_};
455 }
456
457 // Streaming operator.
459 operator<<(std::ostream& os, TERSubset const& rhs)
460 {
461 return os << rhs.code_;
462 }
463
464 // Return the underlying value. Not a member so similarly named free
465 // functions can do the same work for the enums.
466 //
467 // It's worth noting that an explicit conversion operator was considered
468 // and rejected. Consider this case, taken from Status.h
469 //
470 // class Status {
471 // int code_;
472 // public:
473 // Status (TER ter)
474 // : code_ (ter) {}
475 // }
476 //
477 // This code compiles with no errors or warnings if TER has an explicit
478 // (unnamed) conversion to int. To avoid silent conversions like these
479 // we provide (only) a named conversion.
480 friend constexpr TERUnderlyingType
482 {
483 return v.code_;
484 }
485};
486
487// Comparison operators.
488// Only enabled if both arguments return int if TERtiInt is called with them.
489template <typename L, typename R>
490constexpr auto
491operator==(L const& lhs, R const& rhs)
493 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
494 std::is_same<decltype(TERtoInt(rhs)), int>::value,
495 bool>
496{
497 return TERtoInt(lhs) == TERtoInt(rhs);
498}
499
500template <typename L, typename R>
501constexpr auto
502operator!=(L const& lhs, R const& rhs)
504 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
505 std::is_same<decltype(TERtoInt(rhs)), int>::value,
506 bool>
507{
508 return TERtoInt(lhs) != TERtoInt(rhs);
509}
510
511template <typename L, typename R>
512constexpr auto
513operator<(L const& lhs, R const& rhs)
515 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
516 std::is_same<decltype(TERtoInt(rhs)), int>::value,
517 bool>
518{
519 return TERtoInt(lhs) < TERtoInt(rhs);
520}
521
522template <typename L, typename R>
523constexpr auto
524operator<=(L const& lhs, R const& rhs)
526 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
527 std::is_same<decltype(TERtoInt(rhs)), int>::value,
528 bool>
529{
530 return TERtoInt(lhs) <= TERtoInt(rhs);
531}
532
533template <typename L, typename R>
534constexpr auto
535operator>(L const& lhs, R const& rhs)
537 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
538 std::is_same<decltype(TERtoInt(rhs)), int>::value,
539 bool>
540{
541 return TERtoInt(lhs) > TERtoInt(rhs);
542}
543
544template <typename L, typename R>
545constexpr auto
546operator>=(L const& lhs, R const& rhs)
548 std::is_same<decltype(TERtoInt(lhs)), int>::value &&
549 std::is_same<decltype(TERtoInt(rhs)), int>::value,
550 bool>
551{
552 return TERtoInt(lhs) >= TERtoInt(rhs);
553}
554
555//------------------------------------------------------------------------------
556
557// Use traits to build a TERSubset that can convert from any of the TE*codes
558// enums *except* TECcodes: NotTEC
559
560// NOTE: NotTEC is useful for codes returned by preflight in transactors.
561// Preflight checks occur prior to signature checking. If preflight returned
562// a tec code, then a malicious user could submit a transaction with a very
563// large fee and have that fee charged against an account without using that
564// account's valid signature.
565template <typename FROM>
567{
568};
569template <>
571{
572};
573template <>
575{
576};
577template <>
579{
580};
581template <>
583{
584};
585template <>
587{
588};
589
591
592//------------------------------------------------------------------------------
593
594// Use traits to build a TERSubset that can convert from any of the TE*codes
595// enums as well as from NotTEC.
596template <typename FROM>
598{
599};
600template <>
602{
603};
604template <>
606{
607};
608template <>
610{
611};
612template <>
614{
615};
616template <>
618{
619};
620template <>
622{
623};
624template <>
626{
627};
628
629// TER allows all of the subsets.
631
632//------------------------------------------------------------------------------
633
634inline bool
635isTelLocal(TER x) noexcept
636{
637 return (x >= telLOCAL_ERROR && x < temMALFORMED);
638}
639
640inline bool
642{
643 return (x >= temMALFORMED && x < tefFAILURE);
644}
645
646inline bool
647isTefFailure(TER x) noexcept
648{
649 return (x >= tefFAILURE && x < terRETRY);
650}
651
652inline bool
653isTerRetry(TER x) noexcept
654{
655 return (x >= terRETRY && x < tesSUCCESS);
656}
657
658inline bool
659isTesSuccess(TER x) noexcept
660{
661 // Makes use of TERSubset::operator bool()
662 return !(x);
663}
664
665inline bool
666isTecClaim(TER x) noexcept
667{
668 return ((x) >= tecCLAIM);
669}
670
675
676bool
677transResultInfo(TER code, std::string& token, std::string& text);
678
680transToken(TER code);
681
683transHuman(TER code);
684
686transCode(std::string const& token);
687
688} // namespace ripple
689
690#endif
Represents a JSON value.
Definition json_value.h:131
constexpr TERSubset()
Definition TER.h:401
constexpr TERSubset(TERSubset const &rhs)=default
TERUnderlyingType code_
Definition TER.h:397
constexpr TERSubset & operator=(TERSubset const &rhs)=default
constexpr TERSubset(T rhs)
Definition TER.h:424
friend constexpr TERUnderlyingType TERtoInt(TERSubset v)
Definition TER.h:481
constexpr TERSubset(int rhs)
Definition TER.h:408
constexpr auto operator=(T rhs) -> std::enable_if_t< Trait< T >::value, TERSubset & >
Definition TER.h:437
constexpr TERSubset(TERSubset &&rhs)=default
static constexpr TERSubset fromInt(int from)
Definition TER.h:414
friend std::ostream & operator<<(std::ostream &os, TERSubset const &rhs)
Definition TER.h:459
constexpr TERSubset & operator=(TERSubset &&rhs)=default
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
bool operator<=(STAmount const &lhs, STAmount const &rhs)
Definition STAmount.h:610
std::string transHuman(TER code)
Definition TER.cpp:254
bool operator!=(Buffer const &lhs, Buffer const &rhs) noexcept
Definition Buffer.h:213
TELcodes
Definition TER.h:23
@ telWRONG_NETWORK
Definition TER.h:46
@ telLOCAL_ERROR
Definition TER.h:33
@ telCAN_NOT_QUEUE_BLOCKED
Definition TER.h:43
@ telBAD_PUBLIC_KEY
Definition TER.h:36
@ telBAD_PATH_COUNT
Definition TER.h:35
@ telFAILED_PROCESSING
Definition TER.h:37
@ telINSUF_FEE_P
Definition TER.h:38
@ telNO_DST_PARTIAL
Definition TER.h:39
@ telREQUIRES_NETWORK_ID
Definition TER.h:47
@ telCAN_NOT_QUEUE_FULL
Definition TER.h:45
@ telBAD_DOMAIN
Definition TER.h:34
@ telNETWORK_ID_MAKES_TX_NON_CANONICAL
Definition TER.h:48
@ telCAN_NOT_QUEUE
Definition TER.h:40
@ telCAN_NOT_QUEUE_BALANCE
Definition TER.h:41
@ telCAN_NOT_QUEUE_FEE
Definition TER.h:44
@ telCAN_NOT_QUEUE_BLOCKS
Definition TER.h:42
@ telENV_RPC_FAILED
Definition TER.h:49
TEFcodes
Definition TER.h:129
@ tefNOT_MULTI_SIGNING
Definition TER.h:162
@ tefNO_AUTH_REQUIRED
Definition TER.h:155
@ tefPAST_SEQ
Definition TER.h:156
@ tefNO_TICKET
Definition TER.h:166
@ tefBAD_AUTH_MASTER
Definition TER.h:163
@ tefMAX_LEDGER
Definition TER.h:159
@ tefINVARIANT_FAILED
Definition TER.h:164
@ tefNFTOKEN_IS_NOT_TRANSFERABLE
Definition TER.h:167
@ tefFAILURE
Definition TER.h:147
@ tefINVALID_LEDGER_FIX_TYPE
Definition TER.h:168
@ tefEXCEPTION
Definition TER.h:153
@ tefWRONG_PRIOR
Definition TER.h:157
@ tefBAD_AUTH
Definition TER.h:150
@ tefBAD_QUORUM
Definition TER.h:161
@ tefBAD_SIGNATURE
Definition TER.h:160
@ tefBAD_LEDGER
Definition TER.h:151
@ tefBAD_ADD_AUTH
Definition TER.h:149
@ tefALREADY
Definition TER.h:148
@ tefMASTER_DISABLED
Definition TER.h:158
@ tefTOO_BIG
Definition TER.h:165
@ tefCREATED
Definition TER.h:152
@ tefINTERNAL
Definition TER.h:154
bool isTefFailure(TER x) noexcept
Definition TER.h:647
int TERUnderlyingType
Definition TER.h:19
bool operator>(STAmount const &lhs, STAmount const &rhs)
Definition STAmount.h:604
std::string transToken(TER code)
Definition TER.cpp:245
TECcodes
Definition TER.h:231
@ tecNO_LINE_REDUNDANT
Definition TER.h:275
@ tecNO_DELEGATE_PERMISSION
Definition TER.h:349
@ tecNO_ENTRY
Definition TER.h:288
@ tecCRYPTOCONDITION_ERROR
Definition TER.h:294
@ tecPSEUDO_ACCOUNT
Definition TER.h:344
@ tecNO_SUITABLE_NFTOKEN_PAGE
Definition TER.h:303
@ tecNO_DST
Definition TER.h:272
@ tecHOOK_REJECTED
Definition TER.h:301
@ tecNO_LINE_INSUF_RESERVE
Definition TER.h:274
@ tecNEED_MASTER_KEY
Definition TER.h:290
@ tecINSUFF_FEE
Definition TER.h:284
@ tecXCHAIN_SELF_COMMIT
Definition TER.h:332
@ tecXCHAIN_WRONG_CHAIN
Definition TER.h:324
@ tecLIMIT_EXCEEDED
Definition TER.h:343
@ tecXCHAIN_INSUFF_CREATE_AMOUNT
Definition TER.h:328
@ tecXCHAIN_CREATE_ACCOUNT_DISABLED
Definition TER.h:334
@ tecINSUF_RESERVE_LINE
Definition TER.h:270
@ tecOBJECT_NOT_FOUND
Definition TER.h:308
@ tecINSUF_RESERVE_OFFER
Definition TER.h:271
@ tecNO_ISSUER
Definition TER.h:281
@ tecUNFUNDED
Definition TER.h:277
@ tecXCHAIN_NO_CLAIM_ID
Definition TER.h:319
@ tecTOO_SOON
Definition TER.h:300
@ tecXCHAIN_CREATE_ACCOUNT_NONXRP_ISSUE
Definition TER.h:323
@ tecNO_TARGET
Definition TER.h:286
@ tecDIR_FULL
Definition TER.h:269
@ tecNO_REGULAR_KEY
Definition TER.h:279
@ tecINCOMPLETE
Definition TER.h:317
@ tecNFTOKEN_OFFER_TYPE_MISMATCH
Definition TER.h:305
@ tecXCHAIN_PAYMENT_FAILED
Definition TER.h:331
@ tecUNFUNDED_OFFER
Definition TER.h:266
@ tecFROZEN
Definition TER.h:285
@ tecXCHAIN_CLAIM_NO_QUORUM
Definition TER.h:321
@ tecAMM_EMPTY
Definition TER.h:314
@ tecUNFUNDED_ADD
Definition TER.h:265
@ tecOWNERS
Definition TER.h:280
@ tecKILLED
Definition TER.h:298
@ tecXCHAIN_BAD_CLAIM_ID
Definition TER.h:320
@ tecXCHAIN_PROOF_UNKNOWN_KEY
Definition TER.h:322
@ tecDUPLICATE
Definition TER.h:297
@ tecINSUFFICIENT_FUNDS
Definition TER.h:307
@ tecNFTOKEN_BUY_SELL_MISMATCH
Definition TER.h:304
@ tecXCHAIN_ACCOUNT_CREATE_PAST
Definition TER.h:329
@ tecINTERNAL
Definition TER.h:292
@ tecBAD_CREDENTIALS
Definition TER.h:341
@ tecXCHAIN_BAD_TRANSFER_ISSUE
Definition TER.h:318
@ tecNO_PERMISSION
Definition TER.h:287
@ tecDST_TAG_NEEDED
Definition TER.h:291
@ tecPRECISION_LOSS
Definition TER.h:345
@ tecHAS_OBLIGATIONS
Definition TER.h:299
@ tecINVARIANT_FAILED
Definition TER.h:295
@ tecAMM_NOT_EMPTY
Definition TER.h:315
@ tecOVERSIZE
Definition TER.h:293
@ tecARRAY_TOO_LARGE
Definition TER.h:339
@ tecWRONG_ASSET
Definition TER.h:342
@ tecXCHAIN_REWARD_MISMATCH
Definition TER.h:325
@ tecCLAIM
Definition TER.h:263
@ tecINVALID_UPDATE_TIME
Definition TER.h:336
@ tecPATH_PARTIAL
Definition TER.h:264
@ tecUNFUNDED_AMM
Definition TER.h:310
@ tecAMM_ACCOUNT
Definition TER.h:316
@ tecAMM_FAILED
Definition TER.h:312
@ tecNO_LINE
Definition TER.h:283
@ tecMAX_SEQUENCE_REACHED
Definition TER.h:302
@ tecXCHAIN_SENDING_ACCOUNT_MISMATCH
Definition TER.h:327
@ tecINSUFFICIENT_PAYMENT
Definition TER.h:309
@ tecEMPTY_DID
Definition TER.h:335
@ tecNO_ALTERNATIVE_KEY
Definition TER.h:278
@ tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR
Definition TER.h:333
@ tecUNFUNDED_PAYMENT
Definition TER.h:267
@ tecPATH_DRY
Definition TER.h:276
@ tecXCHAIN_NO_SIGNERS_LIST
Definition TER.h:326
@ tecAMM_INVALID_TOKENS
Definition TER.h:313
@ tecAMM_BALANCE
Definition TER.h:311
@ tecINSUFFICIENT_RESERVE
Definition TER.h:289
@ tecARRAY_EMPTY
Definition TER.h:338
@ tecXCHAIN_ACCOUNT_CREATE_TOO_MANY
Definition TER.h:330
@ tecCANT_ACCEPT_OWN_NFTOKEN_OFFER
Definition TER.h:306
@ tecFAILED_PROCESSING
Definition TER.h:268
@ tecEXPIRED
Definition TER.h:296
@ tecTOKEN_PAIR_NOT_FOUND
Definition TER.h:337
@ tecNO_DST_INSUF_XRP
Definition TER.h:273
@ tecNO_AUTH
Definition TER.h:282
@ tecLOCKED
Definition TER.h:340
bool isTerRetry(TER x) noexcept
Definition TER.h:653
TEScodes
Definition TER.h:216
@ tesSUCCESS
Definition TER.h:226
bool operator<(Slice const &lhs, Slice const &rhs) noexcept
Definition Slice.h:204
bool isTesSuccess(TER x) noexcept
Definition TER.h:659
constexpr TERUnderlyingType TERtoInt(TELcodes v)
Definition TER.h:356
bool isTemMalformed(TER x) noexcept
Definition TER.h:641
std::unordered_map< TERUnderlyingType, std::pair< char const *const, char const *const > > const & transResults()
Definition TER.cpp:16
constexpr bool operator==(base_uint< Bits, Tag > const &lhs, base_uint< Bits, Tag > const &rhs)
Definition base_uint.h:566
TERcodes
Definition TER.h:173
@ terADDRESS_COLLISION
Definition TER.h:209
@ terINSUF_FEE_B
Definition TER.h:197
@ terOWNERS
Definition TER.h:201
@ terRETRY
Definition TER.h:195
@ terFUNDS_SPENT
Definition TER.h:196
@ terNO_ACCOUNT
Definition TER.h:198
@ terLAST
Definition TER.h:204
@ terNO_RIPPLE
Definition TER.h:205
@ terNO_AMM
Definition TER.h:208
@ terPRE_SEQ
Definition TER.h:202
@ terQUEUED
Definition TER.h:206
@ terNO_AUTH
Definition TER.h:199
@ terPRE_TICKET
Definition TER.h:207
@ terNO_DELEGATE_PERMISSION
Definition TER.h:211
@ terNO_LINE
Definition TER.h:200
TERSubset< CanCvtToTER > TER
Definition TER.h:630
bool transResultInfo(TER code, std::string &token, std::string &text)
Definition TER.cpp:230
bool operator>=(STAmount const &lhs, STAmount const &rhs)
Definition STAmount.h:616
bool isTecClaim(TER x) noexcept
Definition TER.h:666
bool isTelLocal(TER x) noexcept
Definition TER.h:635
std::optional< TER > transCode(std::string const &token)
Definition TER.cpp:263
TEMcodes
Definition TER.h:54
@ temBAD_ISSUER
Definition TER.h:74
@ temBAD_SEND_XRP_PARTIAL
Definition TER.h:83
@ temBAD_AMOUNT
Definition TER.h:70
@ temBAD_SRC_ACCOUNT
Definition TER.h:87
@ temREDUNDANT
Definition TER.h:93
@ temBAD_LIMIT
Definition TER.h:75
@ temBAD_PATH_LOOP
Definition TER.h:78
@ temUNKNOWN
Definition TER.h:105
@ temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT
Definition TER.h:116
@ temBAD_PATH
Definition TER.h:77
@ temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT
Definition TER.h:117
@ temBAD_FEE
Definition TER.h:73
@ temBAD_SIGNER
Definition TER.h:96
@ temSEQ_AND_TICKET
Definition TER.h:107
@ temXCHAIN_EQUAL_DOOR_ACCOUNTS
Definition TER.h:112
@ temDST_NEEDED
Definition TER.h:90
@ temUNCERTAIN
Definition TER.h:104
@ temINVALID_INNER_BATCH
Definition TER.h:124
@ temBAD_REGKEY
Definition TER.h:79
@ temBAD_CURRENCY
Definition TER.h:71
@ temBAD_TRANSFER_FEE
Definition TER.h:123
@ temBAD_SEND_XRP_LIMIT
Definition TER.h:80
@ temBAD_SEQUENCE
Definition TER.h:85
@ temINVALID_COUNT
Definition TER.h:102
@ temXCHAIN_BRIDGE_NONDOOR_OWNER
Definition TER.h:115
@ temMALFORMED
Definition TER.h:68
@ temINVALID
Definition TER.h:91
@ temBAD_SEND_XRP_PATHS
Definition TER.h:84
@ temBAD_EXPIRATION
Definition TER.h:72
@ temBAD_AMM_TOKENS
Definition TER.h:110
@ temBAD_OFFER
Definition TER.h:76
@ temINVALID_FLAG
Definition TER.h:92
@ temXCHAIN_BRIDGE_BAD_ISSUES
Definition TER.h:114
@ temARRAY_EMPTY
Definition TER.h:121
@ temBAD_SEND_XRP_NO_DIRECT
Definition TER.h:82
@ temBAD_QUORUM
Definition TER.h:97
@ temARRAY_TOO_LARGE
Definition TER.h:122
@ temBAD_TICK_SIZE
Definition TER.h:99
@ temBAD_WEIGHT
Definition TER.h:98
@ temDISABLED
Definition TER.h:95
@ temDST_IS_SRC
Definition TER.h:89
@ temBAD_TRANSFER_RATE
Definition TER.h:88
@ temXCHAIN_BAD_PROOF
Definition TER.h:113
@ temEMPTY_DID
Definition TER.h:119
@ temRIPPLE_EMPTY
Definition TER.h:94
@ temCANNOT_PREAUTH_SELF
Definition TER.h:101
@ temBAD_SEND_XRP_MAX
Definition TER.h:81
@ temINVALID_ACCOUNT_ID
Definition TER.h:100
@ temBAD_SIGNATURE
Definition TER.h:86
@ temBAD_NFTOKEN_TRANSFER_FEE
Definition TER.h:108