mirror of
https://github.com/XRPLF/rippled.git
synced 2026-03-21 04:02:25 +00:00
Compare commits
45 Commits
copilot/ad
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf2eb149ee | ||
|
|
762922a07f | ||
|
|
fd28656ded | ||
|
|
9316da784a | ||
|
|
6efd31229a | ||
|
|
12954d5392 | ||
|
|
b1e5ba0518 | ||
|
|
d360e7c5b6 | ||
|
|
804a351773 | ||
|
|
697fb64e8c | ||
|
|
57e4cbbcd9 | ||
|
|
b92a9a3053 | ||
|
|
dcaef828b4 | ||
|
|
6fbeb04d9e | ||
|
|
2a325e7e2c | ||
|
|
808e814489 | ||
|
|
9e14707e77 | ||
|
|
95a45d7442 | ||
|
|
5fc4ab3e37 | ||
|
|
b129b71c33 | ||
|
|
013c2d6a56 | ||
|
|
72f4cb097f | ||
|
|
b523770486 | ||
|
|
a5185890ff | ||
|
|
0a9513e7f3 | ||
|
|
78b2d70a11 | ||
|
|
252c6768df | ||
|
|
5ae97fa8ae | ||
|
|
eff344faf9 | ||
|
|
7e7b71d84c | ||
|
|
ffea3977f0 | ||
|
|
47a235b7be | ||
|
|
f5e2415c98 | ||
|
|
1a4c359351 | ||
|
|
e4dbaf5efc | ||
|
|
983816248a | ||
|
|
b585dc78bb | ||
|
|
918185e18f | ||
|
|
1738a69619 | ||
|
|
1bf9e6e7da | ||
|
|
0446bef7e5 | ||
|
|
7a3bf1692d | ||
|
|
c1d108e565 | ||
|
|
1ba1bf9ade | ||
|
|
7dd3e0b3cc |
71
.clang-tidy
71
.clang-tidy
@@ -8,6 +8,7 @@ Checks: "-*,
|
|||||||
bugprone-chained-comparison,
|
bugprone-chained-comparison,
|
||||||
bugprone-compare-pointer-to-member-virtual-function,
|
bugprone-compare-pointer-to-member-virtual-function,
|
||||||
bugprone-copy-constructor-init,
|
bugprone-copy-constructor-init,
|
||||||
|
bugprone-crtp-constructor-accessibility,
|
||||||
bugprone-dangling-handle,
|
bugprone-dangling-handle,
|
||||||
bugprone-dynamic-static-initializers,
|
bugprone-dynamic-static-initializers,
|
||||||
bugprone-empty-catch,
|
bugprone-empty-catch,
|
||||||
@@ -59,19 +60,29 @@ Checks: "-*,
|
|||||||
bugprone-suspicious-string-compare,
|
bugprone-suspicious-string-compare,
|
||||||
bugprone-suspicious-stringview-data-usage,
|
bugprone-suspicious-stringview-data-usage,
|
||||||
bugprone-swapped-arguments,
|
bugprone-swapped-arguments,
|
||||||
|
bugprone-switch-missing-default-case,
|
||||||
bugprone-terminating-continue,
|
bugprone-terminating-continue,
|
||||||
bugprone-throw-keyword-missing,
|
bugprone-throw-keyword-missing,
|
||||||
bugprone-too-small-loop-variable,
|
bugprone-too-small-loop-variable,
|
||||||
|
# bugprone-unchecked-optional-access, # see https://github.com/XRPLF/rippled/pull/6502
|
||||||
bugprone-undefined-memory-manipulation,
|
bugprone-undefined-memory-manipulation,
|
||||||
bugprone-undelegated-constructor,
|
bugprone-undelegated-constructor,
|
||||||
bugprone-unhandled-exception-at-new,
|
bugprone-unhandled-exception-at-new,
|
||||||
bugprone-unhandled-self-assignment,
|
bugprone-unhandled-self-assignment,
|
||||||
bugprone-unique-ptr-array-mismatch,
|
bugprone-unique-ptr-array-mismatch,
|
||||||
bugprone-unsafe-functions,
|
bugprone-unsafe-functions,
|
||||||
|
bugprone-use-after-move,
|
||||||
bugprone-unused-raii,
|
bugprone-unused-raii,
|
||||||
|
bugprone-unused-return-value,
|
||||||
bugprone-unused-local-non-trivial-variable,
|
bugprone-unused-local-non-trivial-variable,
|
||||||
bugprone-virtual-near-miss,
|
bugprone-virtual-near-miss,
|
||||||
|
cppcoreguidelines-init-variables,
|
||||||
|
cppcoreguidelines-misleading-capture-default-by-value,
|
||||||
cppcoreguidelines-no-suspend-with-lock,
|
cppcoreguidelines-no-suspend-with-lock,
|
||||||
|
cppcoreguidelines-pro-type-member-init,
|
||||||
|
cppcoreguidelines-pro-type-static-cast-downcast,
|
||||||
|
cppcoreguidelines-rvalue-reference-param-not-moved,
|
||||||
|
cppcoreguidelines-use-default-member-init,
|
||||||
cppcoreguidelines-virtual-class-destructor,
|
cppcoreguidelines-virtual-class-destructor,
|
||||||
hicpp-ignored-remove-result,
|
hicpp-ignored-remove-result,
|
||||||
misc-definitions-in-headers,
|
misc-definitions-in-headers,
|
||||||
@@ -81,62 +92,48 @@ Checks: "-*,
|
|||||||
misc-throw-by-value-catch-by-reference,
|
misc-throw-by-value-catch-by-reference,
|
||||||
misc-unused-alias-decls,
|
misc-unused-alias-decls,
|
||||||
misc-unused-using-decls,
|
misc-unused-using-decls,
|
||||||
readability-duplicate-include,
|
|
||||||
readability-enum-initial-value,
|
|
||||||
readability-misleading-indentation,
|
|
||||||
readability-non-const-parameter,
|
|
||||||
readability-redundant-declaration,
|
|
||||||
readability-reference-to-constructed-temporary,
|
|
||||||
modernize-deprecated-headers,
|
modernize-deprecated-headers,
|
||||||
modernize-make-shared,
|
modernize-make-shared,
|
||||||
modernize-make-unique,
|
modernize-make-unique,
|
||||||
performance-implicit-conversion-in-loop,
|
performance-implicit-conversion-in-loop,
|
||||||
performance-move-constructor-init,
|
performance-move-constructor-init,
|
||||||
performance-trivially-destructible
|
performance-trivially-destructible,
|
||||||
|
readability-avoid-nested-conditional-operator,
|
||||||
|
readability-avoid-return-with-void-value,
|
||||||
|
readability-braces-around-statements,
|
||||||
|
readability-const-return-type,
|
||||||
|
readability-container-contains,
|
||||||
|
readability-container-size-empty,
|
||||||
|
readability-duplicate-include,
|
||||||
|
readability-else-after-return,
|
||||||
|
readability-enum-initial-value,
|
||||||
|
readability-make-member-function-const,
|
||||||
|
readability-misleading-indentation,
|
||||||
|
readability-non-const-parameter,
|
||||||
|
readability-redundant-casting,
|
||||||
|
readability-redundant-declaration,
|
||||||
|
readability-redundant-inline-specifier,
|
||||||
|
readability-redundant-member-init,
|
||||||
|
readability-redundant-string-init,
|
||||||
|
readability-reference-to-constructed-temporary,
|
||||||
|
readability-static-definition-in-anonymous-namespace,
|
||||||
|
readability-use-std-min-max
|
||||||
"
|
"
|
||||||
# ---
|
# ---
|
||||||
# checks that have some issues that need to be resolved:
|
# checks that have some issues that need to be resolved:
|
||||||
#
|
#
|
||||||
# bugprone-crtp-constructor-accessibility,
|
|
||||||
# bugprone-move-forwarding-reference,
|
|
||||||
# bugprone-switch-missing-default-case,
|
|
||||||
# bugprone-unused-raii,
|
|
||||||
# bugprone-unused-return-value,
|
|
||||||
# bugprone-use-after-move,
|
|
||||||
#
|
|
||||||
# cppcoreguidelines-misleading-capture-default-by-value,
|
|
||||||
# cppcoreguidelines-init-variables,
|
|
||||||
# cppcoreguidelines-pro-type-member-init,
|
|
||||||
# cppcoreguidelines-pro-type-static-cast-downcast,
|
|
||||||
# cppcoreguidelines-use-default-member-init,
|
|
||||||
# cppcoreguidelines-rvalue-reference-param-not-moved,
|
|
||||||
#
|
|
||||||
# llvm-namespace-comment,
|
# llvm-namespace-comment,
|
||||||
# misc-const-correctness,
|
# misc-const-correctness,
|
||||||
# misc-include-cleaner,
|
# misc-include-cleaner,
|
||||||
# misc-redundant-expression,
|
# misc-redundant-expression,
|
||||||
#
|
#
|
||||||
# readability-avoid-nested-conditional-operator,
|
|
||||||
# readability-avoid-return-with-void-value,
|
|
||||||
# readability-braces-around-statements,
|
|
||||||
# readability-container-contains,
|
|
||||||
# readability-container-size-empty,
|
|
||||||
# readability-convert-member-functions-to-static,
|
# readability-convert-member-functions-to-static,
|
||||||
# readability-const-return-type,
|
|
||||||
# readability-else-after-return,
|
|
||||||
# readability-implicit-bool-conversion,
|
# readability-implicit-bool-conversion,
|
||||||
# readability-inconsistent-declaration-parameter-name,
|
# readability-inconsistent-declaration-parameter-name,
|
||||||
# readability-identifier-naming,
|
# readability-identifier-naming,
|
||||||
# readability-make-member-function-const,
|
|
||||||
# readability-math-missing-parentheses,
|
# readability-math-missing-parentheses,
|
||||||
# readability-redundant-inline-specifier,
|
|
||||||
# readability-redundant-member-init,
|
|
||||||
# readability-redundant-casting,
|
|
||||||
# readability-redundant-string-init,
|
|
||||||
# readability-simplify-boolean-expr,
|
# readability-simplify-boolean-expr,
|
||||||
# readability-static-definition-in-anonymous-namespace,
|
|
||||||
# readability-suspicious-call-argument,
|
# readability-suspicious-call-argument,
|
||||||
# readability-use-std-min-max,
|
|
||||||
# readability-static-accessed-through-instance,
|
# readability-static-accessed-through-instance,
|
||||||
#
|
#
|
||||||
# modernize-concat-nested-namespaces,
|
# modernize-concat-nested-namespaces,
|
||||||
@@ -160,7 +157,7 @@ Checks: "-*,
|
|||||||
# ---
|
# ---
|
||||||
#
|
#
|
||||||
CheckOptions:
|
CheckOptions:
|
||||||
# readability-braces-around-statements.ShortStatementLines: 2
|
readability-braces-around-statements.ShortStatementLines: 2
|
||||||
# readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
|
# readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
|
||||||
# readability-identifier-naming.ClassCase: CamelCase
|
# readability-identifier-naming.ClassCase: CamelCase
|
||||||
# readability-identifier-naming.StructCase: CamelCase
|
# readability-identifier-naming.StructCase: CamelCase
|
||||||
@@ -195,7 +192,7 @@ CheckOptions:
|
|||||||
# readability-identifier-naming.PublicMemberSuffix: ""
|
# readability-identifier-naming.PublicMemberSuffix: ""
|
||||||
# readability-identifier-naming.FunctionIgnoredRegexp: ".*tag_invoke.*"
|
# readability-identifier-naming.FunctionIgnoredRegexp: ".*tag_invoke.*"
|
||||||
bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
|
bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
|
||||||
# bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc
|
bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc
|
||||||
# misc-include-cleaner.IgnoreHeaders: '.*/(detail|impl)/.*;.*(expected|unexpected).*;.*ranges_lower_bound\.h;time.h;stdlib.h;__chrono/.*;fmt/chrono.h;boost/uuid/uuid_hash.hpp'
|
# misc-include-cleaner.IgnoreHeaders: '.*/(detail|impl)/.*;.*(expected|unexpected).*;.*ranges_lower_bound\.h;time.h;stdlib.h;__chrono/.*;fmt/chrono.h;boost/uuid/uuid_hash.hpp'
|
||||||
#
|
#
|
||||||
# HeaderFilterRegex: '^.*/(src|tests)/.*\.(h|hpp)$'
|
# HeaderFilterRegex: '^.*/(src|tests)/.*\.(h|hpp)$'
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ endfunction()
|
|||||||
function(add_module parent name)
|
function(add_module parent name)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(setup_protocol_autogen)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function(target_link_modules parent scope)
|
function(target_link_modules parent scope)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,79 @@
|
|||||||
# This feature requires Git >= 2.24
|
# This feature requires Git >= 2.24
|
||||||
# To use it by default in git blame:
|
# To use it by default in git blame:
|
||||||
# git config blame.ignoreRevsFile .git-blame-ignore-revs
|
# git config blame.ignoreRevsFile .git-blame-ignore-revs
|
||||||
50760c693510894ca368e90369b0cc2dabfd07f3
|
|
||||||
e2384885f5f630c8f0ffe4bf21a169b433a16858
|
# This file is sorted in reverse chronological order, with the most recent commits at the top.
|
||||||
241b9ddde9e11beb7480600fd5ed90e1ef109b21
|
# The commits listed here are ignored by git blame, which is useful for formatting-only commits that would otherwise obscure the history of changes to a file.
|
||||||
760f16f56835663d9286bd29294d074de26a7ba6
|
|
||||||
0eebe6a5f4246fced516d52b83ec4e7f47373edd
|
# refactor: Enable remaining clang-tidy `cppcoreguidelines` checks (#6538)
|
||||||
2189cc950c0cebb89e4e2fa3b2d8817205bf7cef
|
72f4cb097f626b08b02fc3efcb4aa11cb2e7adb8
|
||||||
b9d007813378ad0ff45660dc07285b823c7e9855
|
# refactor: Rename system name from 'ripple' to 'xrpld' (#6347)
|
||||||
fe9a5365b8a52d4acc42eb27369247e6f238a4f9
|
ffea3977f0b771fe8e43a8f74e4d393d63a7afd8
|
||||||
9a93577314e6a8d4b4a8368cc9d2b15a5d8303e8
|
# refactor: Update transaction folder structure (#6483)
|
||||||
552377c76f55b403a1c876df873a23d780fcc81c
|
5865bd017f777491b4a956f9210be0c4161f5442
|
||||||
97f0747e103f13e26e45b731731059b32f7679ac
|
# chore: Use gersemi instead of ancient cmake-format (#6486)
|
||||||
b13370ac0d207217354f1fc1c29aef87769fb8a1
|
0c74270b055133a57a497b5c9fc5a75f7647b1f4
|
||||||
|
# chore: Apply clang-format width 100 (#6387)
|
||||||
|
2c1fad102353e11293e3edde1c043224e7d3e983
|
||||||
|
# chore: Set clang-format width to 100 in config file (#6387)
|
||||||
|
25cca465538a56cce501477f9e5e2c1c7ea2d84c
|
||||||
|
# chore: Set cmake-format width to 100 (#6386)
|
||||||
|
469ce9f291a4480c38d4ee3baca5136b2f053cd0
|
||||||
|
# refactor: Modularize app/tx (#6228)
|
||||||
|
0976b2b68b64972af8e6e7c497900b5bce9fe22f
|
||||||
|
# chore: Update clang-format to 21.1.8 (#6352)
|
||||||
|
958d8f375453d80bb1aa4c293b5102c045a3e4b4
|
||||||
|
# refactor: Replace include guards by '#pragma once' (#6322)
|
||||||
|
34ef577604782ca8d6e1c17df8bd7470990a52ff
|
||||||
|
# chore: Format all cmake files without comments (#6294)
|
||||||
|
fe9c8d568fcf6ac21483024e01f58962dd5c8260
|
||||||
|
# chore: Add cmake-format pre-commit hook (#6279)
|
||||||
|
a0e09187b9370805d027c611a7e9ff5a0125282a
|
||||||
|
# chore: Set ColumnLimit to 120 in clang-format (#6288)
|
||||||
|
5f638f55536def0d88b970d1018a465a238e55f4
|
||||||
|
# refactor: Fix typos in comments, configure cspell (#6164)
|
||||||
|
3c9f5b62525cb1d6ca1153eeb10433db7d7379fd
|
||||||
|
# refactor: Rename `rippled.cfg` to `xrpld.cfg` (#6098)
|
||||||
|
3d1b3a49b3601a0a7037fa0b19d5df7b5e0e2fc1
|
||||||
|
# refactor: Rename `ripple` namespace to `xrpl` (#5982)
|
||||||
|
1eb0fdac6543706b4b9ddca57fd4102928a1f871
|
||||||
|
# refactor: Rename `rippled` binary to `xrpld` (#5983)
|
||||||
|
9eb84a561ef8bb066d89f098bd9b4ac71baed67c
|
||||||
|
# refactor: Replaces secp256k1 source by Conan package (#6089)
|
||||||
|
813bc4d9491b078bb950f8255f93b02f71320478
|
||||||
|
# refactor: Remove unnecessary copyright notices already covered by LICENSE.md (#5929)
|
||||||
|
1d42c4f6de6bf01d1286fc7459b17a37a5189e88
|
||||||
|
# refactor: Rename `RIPPLE_` and `RIPPLED_` definitions to `XRPL_` (#5821)
|
||||||
|
ada83564d894829424b0f4d922b0e737e07abbf7
|
||||||
|
# refactor: Modularize shamap and nodestore (#5668)
|
||||||
|
8eb233c2ea8ad5a159be73b77f0f5e1496d547ac
|
||||||
|
# refactor: Modularise ledger (#5493)
|
||||||
|
dc8b37a52448b005153c13a7f046ad494128cf94
|
||||||
|
# chore: Update clang-format and prettier with pre-commit (#5709)
|
||||||
|
c14ce956adeabe476ad73c18d73103f347c9c613
|
||||||
|
# chore: Fix file formatting (#5718)
|
||||||
896b8c3b54a22b0497cb0d1ce95e1095f9a227ce
|
896b8c3b54a22b0497cb0d1ce95e1095f9a227ce
|
||||||
|
# chore: Reverts formatting changes to external files, adds formatting changes to proto files (#5711)
|
||||||
|
b13370ac0d207217354f1fc1c29aef87769fb8a1
|
||||||
|
# chore: Run prettier on all files (#5657)
|
||||||
|
97f0747e103f13e26e45b731731059b32f7679ac
|
||||||
|
# Reformat code with clang-format-18
|
||||||
|
552377c76f55b403a1c876df873a23d780fcc81c
|
||||||
|
# Recompute loops (#4997)
|
||||||
|
d028005aa6319338b0adae1aebf8abe113162960
|
||||||
|
# Rewrite includes (#4997)
|
||||||
|
1d23148e6dd53957fcb6205c07a5c6cd7b64d50c
|
||||||
|
# Rearrange sources (#4997)
|
||||||
|
e416ee72ca26fa0c09d2aee1b68bdfb2b7046eed
|
||||||
|
# Move CMake directory (#4997)
|
||||||
|
2e902dee53aab2a8f27f32971047bb81e022f94f
|
||||||
|
# Rewrite includes
|
||||||
|
0eebe6a5f4246fced516d52b83ec4e7f47373edd
|
||||||
|
# Format formerly .hpp files
|
||||||
|
760f16f56835663d9286bd29294d074de26a7ba6
|
||||||
|
# Rename .hpp to .h
|
||||||
|
241b9ddde9e11beb7480600fd5ed90e1ef109b21
|
||||||
|
# Consolidate external libraries
|
||||||
|
e2384885f5f630c8f0ffe4bf21a169b433a16858
|
||||||
|
# Format first-party source according to .clang-format
|
||||||
|
50760c693510894ca368e90369b0cc2dabfd07f3
|
||||||
|
|||||||
4
.github/actions/generate-version/action.yml
vendored
4
.github/actions/generate-version/action.yml
vendored
@@ -11,7 +11,7 @@ runs:
|
|||||||
steps:
|
steps:
|
||||||
# When a tag is pushed, the version is used as-is.
|
# When a tag is pushed, the version is used as-is.
|
||||||
- name: Generate version for tag event
|
- name: Generate version for tag event
|
||||||
if: ${{ github.event_name == 'tag' }}
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
VERSION: ${{ github.ref_name }}
|
VERSION: ${{ github.ref_name }}
|
||||||
@@ -22,7 +22,7 @@ runs:
|
|||||||
# We use a plus sign instead of a hyphen because Conan recipe versions do
|
# We use a plus sign instead of a hyphen because Conan recipe versions do
|
||||||
# not support two hyphens.
|
# not support two hyphens.
|
||||||
- name: Generate version for non-tag event
|
- name: Generate version for non-tag event
|
||||||
if: ${{ github.event_name != 'tag' }}
|
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo 'Extracting version from BuildInfo.cpp.'
|
echo 'Extracting version from BuildInfo.cpp.'
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ libxrpl.nodestore > xrpl.protocol
|
|||||||
libxrpl.protocol > xrpl.basics
|
libxrpl.protocol > xrpl.basics
|
||||||
libxrpl.protocol > xrpl.json
|
libxrpl.protocol > xrpl.json
|
||||||
libxrpl.protocol > xrpl.protocol
|
libxrpl.protocol > xrpl.protocol
|
||||||
|
libxrpl.protocol_autogen > xrpl.protocol_autogen
|
||||||
libxrpl.rdb > xrpl.basics
|
libxrpl.rdb > xrpl.basics
|
||||||
libxrpl.rdb > xrpl.rdb
|
libxrpl.rdb > xrpl.rdb
|
||||||
libxrpl.resource > xrpl.basics
|
libxrpl.resource > xrpl.basics
|
||||||
@@ -134,6 +135,7 @@ test.peerfinder > xrpld.core
|
|||||||
test.peerfinder > xrpld.peerfinder
|
test.peerfinder > xrpld.peerfinder
|
||||||
test.peerfinder > xrpl.protocol
|
test.peerfinder > xrpl.protocol
|
||||||
test.protocol > test.toplevel
|
test.protocol > test.toplevel
|
||||||
|
test.protocol > test.unit_test
|
||||||
test.protocol > xrpl.basics
|
test.protocol > xrpl.basics
|
||||||
test.protocol > xrpl.json
|
test.protocol > xrpl.json
|
||||||
test.protocol > xrpl.protocol
|
test.protocol > xrpl.protocol
|
||||||
@@ -171,9 +173,12 @@ test.shamap > xrpl.shamap
|
|||||||
test.toplevel > test.csf
|
test.toplevel > test.csf
|
||||||
test.toplevel > xrpl.json
|
test.toplevel > xrpl.json
|
||||||
test.unit_test > xrpl.basics
|
test.unit_test > xrpl.basics
|
||||||
|
test.unit_test > xrpl.protocol
|
||||||
tests.libxrpl > xrpl.basics
|
tests.libxrpl > xrpl.basics
|
||||||
tests.libxrpl > xrpl.json
|
tests.libxrpl > xrpl.json
|
||||||
tests.libxrpl > xrpl.net
|
tests.libxrpl > xrpl.net
|
||||||
|
tests.libxrpl > xrpl.protocol
|
||||||
|
tests.libxrpl > xrpl.protocol_autogen
|
||||||
xrpl.conditions > xrpl.basics
|
xrpl.conditions > xrpl.basics
|
||||||
xrpl.conditions > xrpl.protocol
|
xrpl.conditions > xrpl.protocol
|
||||||
xrpl.core > xrpl.basics
|
xrpl.core > xrpl.basics
|
||||||
@@ -190,6 +195,8 @@ xrpl.nodestore > xrpl.basics
|
|||||||
xrpl.nodestore > xrpl.protocol
|
xrpl.nodestore > xrpl.protocol
|
||||||
xrpl.protocol > xrpl.basics
|
xrpl.protocol > xrpl.basics
|
||||||
xrpl.protocol > xrpl.json
|
xrpl.protocol > xrpl.json
|
||||||
|
xrpl.protocol_autogen > xrpl.json
|
||||||
|
xrpl.protocol_autogen > xrpl.protocol
|
||||||
xrpl.rdb > xrpl.basics
|
xrpl.rdb > xrpl.basics
|
||||||
xrpl.rdb > xrpl.core
|
xrpl.rdb > xrpl.core
|
||||||
xrpl.rdb > xrpl.protocol
|
xrpl.rdb > xrpl.protocol
|
||||||
|
|||||||
13
.github/workflows/check-pr-commits.yml
vendored
Normal file
13
.github/workflows/check-pr-commits.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Check PR commits
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
# The action needs to have write permissions to post comments on the PR.
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check_commits:
|
||||||
|
uses: XRPLF/actions/.github/workflows/check-pr-commits.yml@481048b78b94ac3343d1292b4ef125a813879f2b
|
||||||
8
.github/workflows/check-pr-title.yml
vendored
8
.github/workflows/check-pr-title.yml
vendored
@@ -1,10 +1,14 @@
|
|||||||
name: Check PR title
|
name: Check PR title
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
merge_group:
|
||||||
|
types:
|
||||||
|
- checks_requested
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [opened, edited, reopened, synchronize]
|
types: [opened, edited, reopened, synchronize, ready_for_review]
|
||||||
branches: [develop]
|
branches: [develop]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_title:
|
check_title:
|
||||||
uses: XRPLF/actions/.github/workflows/check-pr-title.yml@943eb8277e8f4b010fde0c826ce4154c36c39509
|
if: ${{ github.event.pull_request.draft != true }}
|
||||||
|
uses: XRPLF/actions/.github/workflows/check-pr-title.yml@e2c7f400d1e85ae65dad552fd425169fbacca4a3
|
||||||
|
|||||||
2
.github/workflows/on-tag.yml
vendored
2
.github/workflows/on-tag.yml
vendored
@@ -5,7 +5,7 @@ name: Tag
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- "v*"
|
- "[0-9]+.[0-9]+.[0-9]*"
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
|||||||
5
.github/workflows/pre-commit.yml
vendored
5
.github/workflows/pre-commit.yml
vendored
@@ -1,6 +1,9 @@
|
|||||||
name: Run pre-commit hooks
|
name: Run pre-commit hooks
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
merge_group:
|
||||||
|
types:
|
||||||
|
- checks_requested
|
||||||
pull_request:
|
pull_request:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@@ -11,7 +14,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
# Call the workflow in the XRPLF/actions repo that runs the pre-commit hooks.
|
# Call the workflow in the XRPLF/actions repo that runs the pre-commit hooks.
|
||||||
run-hooks:
|
run-hooks:
|
||||||
uses: XRPLF/actions/.github/workflows/pre-commit.yml@44856eb0d6ecb7d376370244324ab3dc8b863bad
|
uses: XRPLF/actions/.github/workflows/pre-commit.yml@e7896f15cc60d0da1a272c77ee5c4026b424f9c7
|
||||||
with:
|
with:
|
||||||
runs_on: ubuntu-latest
|
runs_on: ubuntu-latest
|
||||||
container: '{ "image": "ghcr.io/xrplf/ci/tools-rippled-pre-commit:sha-41ec7c1" }'
|
container: '{ "image": "ghcr.io/xrplf/ci/tools-rippled-pre-commit:sha-41ec7c1" }'
|
||||||
|
|||||||
2
.github/workflows/publish-docs.yml
vendored
2
.github/workflows/publish-docs.yml
vendored
@@ -48,7 +48,7 @@ jobs:
|
|||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
|
||||||
- name: Prepare runner
|
- name: Prepare runner
|
||||||
uses: XRPLF/actions/prepare-runner@2cbf481018d930656e9276fcc20dc0e3a0be5b6d
|
uses: XRPLF/actions/prepare-runner@2bbc2dc1abeec7bfaa886804ab86871ac201764e
|
||||||
with:
|
with:
|
||||||
enable_ccache: false
|
enable_ccache: false
|
||||||
|
|
||||||
|
|||||||
41
.github/workflows/reusable-build-test-config.yml
vendored
41
.github/workflows/reusable-build-test-config.yml
vendored
@@ -76,7 +76,7 @@ jobs:
|
|||||||
name: ${{ inputs.config_name }}
|
name: ${{ inputs.config_name }}
|
||||||
runs-on: ${{ fromJSON(inputs.runs_on) }}
|
runs-on: ${{ fromJSON(inputs.runs_on) }}
|
||||||
container: ${{ inputs.image != '' && inputs.image || null }}
|
container: ${{ inputs.image != '' && inputs.image || null }}
|
||||||
timeout-minutes: 60
|
timeout-minutes: ${{ inputs.sanitizers != '' && 360 || 60 }}
|
||||||
env:
|
env:
|
||||||
# Use a namespace to keep the objects separate for each configuration.
|
# Use a namespace to keep the objects separate for each configuration.
|
||||||
CCACHE_NAMESPACE: ${{ inputs.config_name }}
|
CCACHE_NAMESPACE: ${{ inputs.config_name }}
|
||||||
@@ -107,7 +107,7 @@ jobs:
|
|||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
|
||||||
- name: Prepare runner
|
- name: Prepare runner
|
||||||
uses: XRPLF/actions/prepare-runner@2cbf481018d930656e9276fcc20dc0e3a0be5b6d
|
uses: XRPLF/actions/prepare-runner@2bbc2dc1abeec7bfaa886804ab86871ac201764e
|
||||||
with:
|
with:
|
||||||
enable_ccache: ${{ inputs.ccache_enabled }}
|
enable_ccache: ${{ inputs.ccache_enabled }}
|
||||||
|
|
||||||
@@ -166,6 +166,29 @@ jobs:
|
|||||||
--parallel "${BUILD_NPROC}" \
|
--parallel "${BUILD_NPROC}" \
|
||||||
--target "${CMAKE_TARGET}"
|
--target "${CMAKE_TARGET}"
|
||||||
|
|
||||||
|
- name: Check protocol autogen files are up-to-date
|
||||||
|
env:
|
||||||
|
MESSAGE: |
|
||||||
|
|
||||||
|
The generated protocol wrapper classes are out of date.
|
||||||
|
|
||||||
|
This typically happens when your branch is behind develop and
|
||||||
|
the macro files or generator scripts have changed.
|
||||||
|
|
||||||
|
To fix this:
|
||||||
|
1. Update your branch from develop (merge or rebase)
|
||||||
|
2. Build with code generation enabled (XRPL_NO_CODEGEN=OFF)
|
||||||
|
3. Commit and push the regenerated files
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
DIFF=$(git status --porcelain -- include/xrpl/protocol_autogen src/tests/libxrpl/protocol_autogen)
|
||||||
|
if [ -n "${DIFF}" ]; then
|
||||||
|
echo "::error::Generated protocol files are out of date"
|
||||||
|
git diff -- include/xrpl/protocol_autogen src/tests/libxrpl/protocol_autogen
|
||||||
|
echo "${MESSAGE}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Show ccache statistics
|
- name: Show ccache statistics
|
||||||
if: ${{ inputs.ccache_enabled }}
|
if: ${{ inputs.ccache_enabled }}
|
||||||
run: |
|
run: |
|
||||||
@@ -204,11 +227,17 @@ jobs:
|
|||||||
|
|
||||||
- name: Set sanitizer options
|
- name: Set sanitizer options
|
||||||
if: ${{ !inputs.build_only && env.SANITIZERS_ENABLED == 'true' }}
|
if: ${{ !inputs.build_only && env.SANITIZERS_ENABLED == 'true' }}
|
||||||
|
env:
|
||||||
|
CONFIG_NAME: ${{ inputs.config_name }}
|
||||||
run: |
|
run: |
|
||||||
echo "ASAN_OPTIONS=print_stacktrace=1:detect_container_overflow=0:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/asan.supp" >> ${GITHUB_ENV}
|
ASAN_OPTS="include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-asan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/asan.supp"
|
||||||
echo "TSAN_OPTIONS=second_deadlock_stack=1:halt_on_error=0:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/tsan.supp" >> ${GITHUB_ENV}
|
if [[ "${CONFIG_NAME}" == *gcc* ]]; then
|
||||||
echo "UBSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/ubsan.supp" >> ${GITHUB_ENV}
|
ASAN_OPTS="${ASAN_OPTS}:alloc_dealloc_mismatch=0"
|
||||||
echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/lsan.supp" >> ${GITHUB_ENV}
|
fi
|
||||||
|
echo "ASAN_OPTIONS=${ASAN_OPTS}" >> ${GITHUB_ENV}
|
||||||
|
echo "TSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-tsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/tsan.supp" >> ${GITHUB_ENV}
|
||||||
|
echo "UBSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-ubsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/ubsan.supp" >> ${GITHUB_ENV}
|
||||||
|
echo "LSAN_OPTIONS=include=${GITHUB_WORKSPACE}/sanitizers/suppressions/runtime-lsan-options.txt:suppressions=${GITHUB_WORKSPACE}/sanitizers/suppressions/lsan.supp" >> ${GITHUB_ENV}
|
||||||
|
|
||||||
- name: Run the separate tests
|
- name: Run the separate tests
|
||||||
if: ${{ !inputs.build_only }}
|
if: ${{ !inputs.build_only }}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
|
||||||
- name: Prepare runner
|
- name: Prepare runner
|
||||||
uses: XRPLF/actions/prepare-runner@2cbf481018d930656e9276fcc20dc0e3a0be5b6d
|
uses: XRPLF/actions/prepare-runner@2bbc2dc1abeec7bfaa886804ab86871ac201764e
|
||||||
with:
|
with:
|
||||||
enable_ccache: false
|
enable_ccache: false
|
||||||
|
|
||||||
|
|||||||
4
.github/workflows/reusable-upload-recipe.yml
vendored
4
.github/workflows/reusable-upload-recipe.yml
vendored
@@ -89,10 +89,10 @@ jobs:
|
|||||||
conan export . --version=rc
|
conan export . --version=rc
|
||||||
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/rc
|
conan upload --confirm --check --remote="${REMOTE_NAME}" xrpl/rc
|
||||||
|
|
||||||
# When this workflow is triggered by a tag event, it will always be when tagging a final
|
# When this workflow is triggered by a push event, it will always be when tagging a final
|
||||||
# release, see on-tag.yml.
|
# release, see on-tag.yml.
|
||||||
- name: Upload Conan recipe (release)
|
- name: Upload Conan recipe (release)
|
||||||
if: ${{ github.event_name == 'tag' }}
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
env:
|
env:
|
||||||
REMOTE_NAME: ${{ inputs.remote_name }}
|
REMOTE_NAME: ${{ inputs.remote_name }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
2
.github/workflows/upload-conan-deps.yml
vendored
2
.github/workflows/upload-conan-deps.yml
vendored
@@ -70,7 +70,7 @@ jobs:
|
|||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
|
|
||||||
- name: Prepare runner
|
- name: Prepare runner
|
||||||
uses: XRPLF/actions/prepare-runner@2cbf481018d930656e9276fcc20dc0e3a0be5b6d
|
uses: XRPLF/actions/prepare-runner@2bbc2dc1abeec7bfaa886804ab86871ac201764e
|
||||||
with:
|
with:
|
||||||
enable_ccache: false
|
enable_ccache: false
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ repos:
|
|||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
|
rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # frozen: v6.0.0
|
||||||
hooks:
|
hooks:
|
||||||
|
- id: check-added-large-files
|
||||||
|
args: [--maxkb=400, --enforce-all]
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: mixed-line-ending
|
- id: mixed-line-ending
|
||||||
@@ -25,6 +27,7 @@ repos:
|
|||||||
- id: clang-format
|
- id: clang-format
|
||||||
args: [--style=file]
|
args: [--style=file]
|
||||||
"types_or": [c++, c, proto]
|
"types_or": [c++, c, proto]
|
||||||
|
exclude: ^include/xrpl/protocol_autogen/(transactions|ledger_entries)/
|
||||||
|
|
||||||
- repo: https://github.com/BlankSpruce/gersemi
|
- repo: https://github.com/BlankSpruce/gersemi
|
||||||
rev: 0.26.0
|
rev: 0.26.0
|
||||||
@@ -45,7 +48,7 @@ repos:
|
|||||||
rev: a42085ade523f591dca134379a595e7859986445 # frozen: v9.7.0
|
rev: a42085ade523f591dca134379a595e7859986445 # frozen: v9.7.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: cspell # Spell check changed files
|
- id: cspell # Spell check changed files
|
||||||
exclude: .config/cspell.config.yaml
|
exclude: (.config/cspell.config.yaml|^include/xrpl/protocol_autogen/(transactions|ledger_entries)/)
|
||||||
- id: cspell # Spell check the commit message
|
- id: cspell # Spell check the commit message
|
||||||
name: check commit message spelling
|
name: check commit message spelling
|
||||||
args:
|
args:
|
||||||
@@ -77,5 +80,6 @@ repos:
|
|||||||
exclude: |
|
exclude: |
|
||||||
(?x)^(
|
(?x)^(
|
||||||
external/.*|
|
external/.*|
|
||||||
.github/scripts/levelization/results/.*\.txt
|
.github/scripts/levelization/results/.*\.txt|
|
||||||
|
src/tests/libxrpl/protocol_autogen/(transactions|ledger_entries)/.*
|
||||||
)$
|
)$
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ This section contains changes targeting a future version.
|
|||||||
- `LEDGER_ENTRY_FLAGS`: Maps ledger entry type names to their flags and flag values.
|
- `LEDGER_ENTRY_FLAGS`: Maps ledger entry type names to their flags and flag values.
|
||||||
- `ACCOUNT_SET_FLAGS`: Maps AccountSet flag names (asf flags) to their numeric values.
|
- `ACCOUNT_SET_FLAGS`: Maps AccountSet flag names (asf flags) to their numeric values.
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
- Peer Crawler: The `port` field in `overlay.active[]` now consistently returns an integer instead of a string for outbound peers. [#6318](https://github.com/XRPLF/rippled/pull/6318)
|
||||||
|
|
||||||
## XRP Ledger server version 3.1.0
|
## XRP Ledger server version 3.1.0
|
||||||
|
|
||||||
[Version 3.1.0](https://github.com/XRPLF/rippled/releases/tag/3.1.0) was released on Jan 27, 2026.
|
[Version 3.1.0](https://github.com/XRPLF/rippled/releases/tag/3.1.0) was released on Jan 27, 2026.
|
||||||
@@ -84,12 +88,6 @@ This release contains bug fixes only and no API changes.
|
|||||||
|
|
||||||
This release contains bug fixes only and no API changes.
|
This release contains bug fixes only and no API changes.
|
||||||
|
|
||||||
## Unreleased Changes
|
|
||||||
|
|
||||||
### Additions and bugfixes
|
|
||||||
|
|
||||||
- `submit`: Augmented response fields (`accepted`, `applied`, `broadcast`, `queued`, `kept`, `account_sequence_next`, `account_sequence_available`, `open_ledger_cost`, `validated_ledger_index`) are now included in sign-and-submit mode. Previously, these fields were only returned when submitting a binary transaction blob. ([#6304](https://github.com/XRPLF/rippled/pull/6304))
|
|
||||||
|
|
||||||
## XRP Ledger server version 2.5.0
|
## XRP Ledger server version 2.5.0
|
||||||
|
|
||||||
[Version 2.5.0](https://github.com/XRPLF/rippled/releases/tag/2.5.0) was released on Jun 24, 2025.
|
[Version 2.5.0](https://github.com/XRPLF/rippled/releases/tag/2.5.0) was released on Jun 24, 2025.
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ if(MSVC)
|
|||||||
NOMINMAX
|
NOMINMAX
|
||||||
# TODO: Resolve these warnings, don't just silence them
|
# TODO: Resolve these warnings, don't just silence them
|
||||||
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
|
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
|
||||||
$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:Debug>>:_CRTDBG_MAP_ALLOC>
|
$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:Debug>,$<NOT:$<BOOL:${is_ci}>>>:_CRTDBG_MAP_ALLOC>
|
||||||
)
|
)
|
||||||
target_link_libraries(common INTERFACE -errorreport:none -machine:X64)
|
target_link_libraries(common INTERFACE -errorreport:none -machine:X64)
|
||||||
else()
|
else()
|
||||||
|
|||||||
@@ -108,17 +108,40 @@ target_link_libraries(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Level 05
|
# Level 05
|
||||||
|
## Set up code generation for protocol_autogen module
|
||||||
|
include(XrplProtocolAutogen)
|
||||||
|
# Must call setup_protocol_autogen before add_module so that:
|
||||||
|
# 1. Stale generated files are cleared before GLOB runs
|
||||||
|
# 2. Output file list is known for custom commands
|
||||||
|
setup_protocol_autogen()
|
||||||
|
|
||||||
|
add_module(xrpl protocol_autogen)
|
||||||
|
target_link_libraries(
|
||||||
|
xrpl.libxrpl.protocol_autogen
|
||||||
|
PUBLIC xrpl.libxrpl.protocol
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ensure code generation runs before compiling protocol_autogen
|
||||||
|
if(TARGET protocol_autogen_generate)
|
||||||
|
add_dependencies(xrpl.libxrpl.protocol_autogen protocol_autogen_generate)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Level 06
|
||||||
add_module(xrpl core)
|
add_module(xrpl core)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
xrpl.libxrpl.core
|
xrpl.libxrpl.core
|
||||||
PUBLIC xrpl.libxrpl.basics xrpl.libxrpl.json xrpl.libxrpl.protocol
|
PUBLIC
|
||||||
|
xrpl.libxrpl.basics
|
||||||
|
xrpl.libxrpl.json
|
||||||
|
xrpl.libxrpl.protocol
|
||||||
|
xrpl.libxrpl.protocol_autogen
|
||||||
)
|
)
|
||||||
|
|
||||||
# Level 06
|
# Level 07
|
||||||
add_module(xrpl resource)
|
add_module(xrpl resource)
|
||||||
target_link_libraries(xrpl.libxrpl.resource PUBLIC xrpl.libxrpl.protocol)
|
target_link_libraries(xrpl.libxrpl.resource PUBLIC xrpl.libxrpl.protocol)
|
||||||
|
|
||||||
# Level 07
|
# Level 08
|
||||||
add_module(xrpl net)
|
add_module(xrpl net)
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
xrpl.libxrpl.net
|
xrpl.libxrpl.net
|
||||||
@@ -171,6 +194,7 @@ target_link_libraries(
|
|||||||
xrpl.libxrpl.basics
|
xrpl.libxrpl.basics
|
||||||
xrpl.libxrpl.json
|
xrpl.libxrpl.json
|
||||||
xrpl.libxrpl.protocol
|
xrpl.libxrpl.protocol
|
||||||
|
xrpl.libxrpl.protocol_autogen
|
||||||
xrpl.libxrpl.rdb
|
xrpl.libxrpl.rdb
|
||||||
xrpl.libxrpl.server
|
xrpl.libxrpl.server
|
||||||
xrpl.libxrpl.shamap
|
xrpl.libxrpl.shamap
|
||||||
@@ -206,6 +230,7 @@ target_link_modules(
|
|||||||
net
|
net
|
||||||
nodestore
|
nodestore
|
||||||
protocol
|
protocol
|
||||||
|
protocol_autogen
|
||||||
rdb
|
rdb
|
||||||
resource
|
resource
|
||||||
server
|
server
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ target_compile_definitions(
|
|||||||
BOOST_FILESYSTEM_NO_DEPRECATED
|
BOOST_FILESYSTEM_NO_DEPRECATED
|
||||||
>
|
>
|
||||||
$<$<NOT:$<BOOL:${boost_show_deprecated}>>:
|
$<$<NOT:$<BOOL:${boost_show_deprecated}>>:
|
||||||
BOOST_COROUTINES_NO_DEPRECATION_WARNING
|
BOOST_COROUTINES2_NO_DEPRECATION_WARNING
|
||||||
BOOST_BEAST_ALLOW_DEPRECATED
|
BOOST_BEAST_ALLOW_DEPRECATED
|
||||||
BOOST_FILESYSTEM_DEPRECATED
|
BOOST_FILESYSTEM_DEPRECATED
|
||||||
>
|
>
|
||||||
|
|||||||
287
cmake/XrplProtocolAutogen.cmake
Normal file
287
cmake/XrplProtocolAutogen.cmake
Normal file
@@ -0,0 +1,287 @@
|
|||||||
|
#[===================================================================[
|
||||||
|
Protocol Autogen - Code generation for protocol wrapper classes
|
||||||
|
#]===================================================================]
|
||||||
|
|
||||||
|
# Options for code generation
|
||||||
|
option(
|
||||||
|
XRPL_NO_CODEGEN
|
||||||
|
"Disable code generation (use pre-generated files from repository)"
|
||||||
|
OFF
|
||||||
|
)
|
||||||
|
set(CODEGEN_VENV_DIR
|
||||||
|
""
|
||||||
|
CACHE PATH
|
||||||
|
"Path to Python virtual environment for code generation. If provided, automatic venv setup is skipped."
|
||||||
|
)
|
||||||
|
|
||||||
|
# Function to set up code generation for protocol_autogen module
|
||||||
|
# This runs at configure time to generate C++ wrapper classes from macro files
|
||||||
|
function(setup_protocol_autogen)
|
||||||
|
# Directory paths
|
||||||
|
set(MACRO_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/xrpl/protocol/detail")
|
||||||
|
set(AUTOGEN_HEADER_DIR
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/xrpl/protocol_autogen"
|
||||||
|
)
|
||||||
|
set(AUTOGEN_TEST_DIR
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/tests/libxrpl/protocol_autogen"
|
||||||
|
)
|
||||||
|
set(SCRIPTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/scripts")
|
||||||
|
|
||||||
|
# Input macro files
|
||||||
|
set(TRANSACTIONS_MACRO "${MACRO_DIR}/transactions.macro")
|
||||||
|
set(LEDGER_ENTRIES_MACRO "${MACRO_DIR}/ledger_entries.macro")
|
||||||
|
set(SFIELDS_MACRO "${MACRO_DIR}/sfields.macro")
|
||||||
|
|
||||||
|
# Python scripts and templates
|
||||||
|
set(GENERATE_TX_SCRIPT "${SCRIPTS_DIR}/generate_tx_classes.py")
|
||||||
|
set(GENERATE_LEDGER_SCRIPT "${SCRIPTS_DIR}/generate_ledger_classes.py")
|
||||||
|
set(REQUIREMENTS_FILE "${SCRIPTS_DIR}/requirements.txt")
|
||||||
|
set(MACRO_PARSER_COMMON "${SCRIPTS_DIR}/macro_parser_common.py")
|
||||||
|
set(TX_TEMPLATE "${SCRIPTS_DIR}/templates/Transaction.h.mako")
|
||||||
|
set(TX_TEST_TEMPLATE "${SCRIPTS_DIR}/templates/TransactionTests.cpp.mako")
|
||||||
|
set(LEDGER_TEMPLATE "${SCRIPTS_DIR}/templates/LedgerEntry.h.mako")
|
||||||
|
set(LEDGER_TEST_TEMPLATE
|
||||||
|
"${SCRIPTS_DIR}/templates/LedgerEntryTests.cpp.mako"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check if code generation is disabled
|
||||||
|
if(XRPL_NO_CODEGEN)
|
||||||
|
message(
|
||||||
|
WARNING
|
||||||
|
"Protocol autogen: Code generation is disabled (XRPL_NO_CODEGEN=ON). "
|
||||||
|
"Generated files may be out of date."
|
||||||
|
)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Create output directories
|
||||||
|
file(MAKE_DIRECTORY "${AUTOGEN_HEADER_DIR}/transactions")
|
||||||
|
file(MAKE_DIRECTORY "${AUTOGEN_HEADER_DIR}/ledger_entries")
|
||||||
|
file(MAKE_DIRECTORY "${AUTOGEN_TEST_DIR}/ledger_entries")
|
||||||
|
file(MAKE_DIRECTORY "${AUTOGEN_TEST_DIR}/transactions")
|
||||||
|
|
||||||
|
# Find Python3 - check if already found by Conan or find it ourselves
|
||||||
|
if(NOT Python3_EXECUTABLE)
|
||||||
|
find_package(Python3 COMPONENTS Interpreter QUIET)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT Python3_EXECUTABLE)
|
||||||
|
# Try finding python3 executable directly
|
||||||
|
find_program(Python3_EXECUTABLE NAMES python3 python)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT Python3_EXECUTABLE)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Python3 not found. Code generation cannot proceed.\n"
|
||||||
|
"Please install Python 3, or set -DXRPL_NO_CODEGEN=ON to use existing generated files."
|
||||||
|
)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Using Python3 for code generation: ${Python3_EXECUTABLE}")
|
||||||
|
|
||||||
|
# Set up Python virtual environment for code generation
|
||||||
|
if(CODEGEN_VENV_DIR)
|
||||||
|
# User-provided venv - skip automatic setup
|
||||||
|
set(VENV_DIR "${CODEGEN_VENV_DIR}")
|
||||||
|
message(STATUS "Using user-provided Python venv: ${VENV_DIR}")
|
||||||
|
else()
|
||||||
|
# Use default venv in build directory
|
||||||
|
set(VENV_DIR "${CMAKE_CURRENT_BINARY_DIR}/codegen_venv")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Determine the Python executable path in the venv
|
||||||
|
if(WIN32)
|
||||||
|
set(VENV_PYTHON "${VENV_DIR}/Scripts/python.exe")
|
||||||
|
set(VENV_PIP "${VENV_DIR}/Scripts/pip.exe")
|
||||||
|
else()
|
||||||
|
set(VENV_PYTHON "${VENV_DIR}/bin/python")
|
||||||
|
set(VENV_PIP "${VENV_DIR}/bin/pip")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Only auto-setup venv if not user-provided
|
||||||
|
if(NOT CODEGEN_VENV_DIR)
|
||||||
|
# Check if venv needs to be created or updated
|
||||||
|
set(VENV_NEEDS_UPDATE FALSE)
|
||||||
|
if(NOT EXISTS "${VENV_PYTHON}")
|
||||||
|
set(VENV_NEEDS_UPDATE TRUE)
|
||||||
|
message(
|
||||||
|
STATUS
|
||||||
|
"Creating Python virtual environment for code generation..."
|
||||||
|
)
|
||||||
|
elseif(
|
||||||
|
"${REQUIREMENTS_FILE}"
|
||||||
|
IS_NEWER_THAN
|
||||||
|
"${VENV_DIR}/.requirements_installed"
|
||||||
|
)
|
||||||
|
set(VENV_NEEDS_UPDATE TRUE)
|
||||||
|
message(
|
||||||
|
STATUS
|
||||||
|
"Updating Python virtual environment (requirements changed)..."
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Create/update virtual environment if needed
|
||||||
|
if(VENV_NEEDS_UPDATE)
|
||||||
|
message(
|
||||||
|
STATUS
|
||||||
|
"Setting up Python virtual environment at ${VENV_DIR}"
|
||||||
|
)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${Python3_EXECUTABLE} -m venv "${VENV_DIR}"
|
||||||
|
RESULT_VARIABLE VENV_RESULT
|
||||||
|
ERROR_VARIABLE VENV_ERROR
|
||||||
|
)
|
||||||
|
if(NOT VENV_RESULT EQUAL 0)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Failed to create virtual environment: ${VENV_ERROR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Installing Python dependencies...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${VENV_PIP} install --upgrade pip
|
||||||
|
RESULT_VARIABLE PIP_UPGRADE_RESULT
|
||||||
|
OUTPUT_QUIET
|
||||||
|
ERROR_VARIABLE PIP_UPGRADE_ERROR
|
||||||
|
)
|
||||||
|
if(NOT PIP_UPGRADE_RESULT EQUAL 0)
|
||||||
|
message(WARNING "Failed to upgrade pip: ${PIP_UPGRADE_ERROR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${VENV_PIP} install -r "${REQUIREMENTS_FILE}"
|
||||||
|
RESULT_VARIABLE PIP_INSTALL_RESULT
|
||||||
|
ERROR_VARIABLE PIP_INSTALL_ERROR
|
||||||
|
)
|
||||||
|
if(NOT PIP_INSTALL_RESULT EQUAL 0)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Failed to install Python dependencies: ${PIP_INSTALL_ERROR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Mark requirements as installed
|
||||||
|
file(TOUCH "${VENV_DIR}/.requirements_installed")
|
||||||
|
message(STATUS "Python virtual environment ready")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# At configure time - get list of output files for transactions
|
||||||
|
execute_process(
|
||||||
|
COMMAND
|
||||||
|
${VENV_PYTHON} "${GENERATE_TX_SCRIPT}" "${TRANSACTIONS_MACRO}"
|
||||||
|
--header-dir "${AUTOGEN_HEADER_DIR}/transactions" --test-dir
|
||||||
|
"${AUTOGEN_TEST_DIR}/transactions" --list-outputs
|
||||||
|
OUTPUT_VARIABLE TX_OUTPUT_FILES
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
RESULT_VARIABLE TX_LIST_RESULT
|
||||||
|
ERROR_VARIABLE TX_LIST_ERROR
|
||||||
|
)
|
||||||
|
if(NOT TX_LIST_RESULT EQUAL 0)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Failed to list transaction output files:\n${TX_LIST_ERROR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
# Convert newline-separated list to CMake list
|
||||||
|
string(REPLACE "\\" "/" TX_OUTPUT_FILES "${TX_OUTPUT_FILES}")
|
||||||
|
string(REPLACE "\n" ";" TX_OUTPUT_FILES "${TX_OUTPUT_FILES}")
|
||||||
|
|
||||||
|
# At configure time - get list of output files for ledger entries
|
||||||
|
execute_process(
|
||||||
|
COMMAND
|
||||||
|
${VENV_PYTHON} "${GENERATE_LEDGER_SCRIPT}" "${LEDGER_ENTRIES_MACRO}"
|
||||||
|
--header-dir "${AUTOGEN_HEADER_DIR}/ledger_entries" --test-dir
|
||||||
|
"${AUTOGEN_TEST_DIR}/ledger_entries" --list-outputs
|
||||||
|
OUTPUT_VARIABLE LEDGER_OUTPUT_FILES
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
RESULT_VARIABLE LEDGER_LIST_RESULT
|
||||||
|
ERROR_VARIABLE LEDGER_LIST_ERROR
|
||||||
|
)
|
||||||
|
if(NOT LEDGER_LIST_RESULT EQUAL 0)
|
||||||
|
message(
|
||||||
|
FATAL_ERROR
|
||||||
|
"Failed to list ledger entry output files:\n${LEDGER_LIST_ERROR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
# Convert newline-separated list to CMake list
|
||||||
|
string(REPLACE "\\" "/" LEDGER_OUTPUT_FILES "${LEDGER_OUTPUT_FILES}")
|
||||||
|
string(REPLACE "\n" ";" LEDGER_OUTPUT_FILES "${LEDGER_OUTPUT_FILES}")
|
||||||
|
|
||||||
|
# Custom command to generate transaction classes at build time
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${TX_OUTPUT_FILES}
|
||||||
|
COMMAND
|
||||||
|
${VENV_PYTHON} "${GENERATE_TX_SCRIPT}" "${TRANSACTIONS_MACRO}"
|
||||||
|
--header-dir "${AUTOGEN_HEADER_DIR}/transactions" --test-dir
|
||||||
|
"${AUTOGEN_TEST_DIR}/transactions" --sfields-macro
|
||||||
|
"${SFIELDS_MACRO}"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
DEPENDS
|
||||||
|
"${TRANSACTIONS_MACRO}"
|
||||||
|
"${SFIELDS_MACRO}"
|
||||||
|
"${GENERATE_TX_SCRIPT}"
|
||||||
|
"${MACRO_PARSER_COMMON}"
|
||||||
|
"${TX_TEMPLATE}"
|
||||||
|
"${TX_TEST_TEMPLATE}"
|
||||||
|
"${REQUIREMENTS_FILE}"
|
||||||
|
COMMENT "Generating transaction classes from transactions.macro..."
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
# Custom command to generate ledger entry classes at build time
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${LEDGER_OUTPUT_FILES}
|
||||||
|
COMMAND
|
||||||
|
${VENV_PYTHON} "${GENERATE_LEDGER_SCRIPT}" "${LEDGER_ENTRIES_MACRO}"
|
||||||
|
--header-dir "${AUTOGEN_HEADER_DIR}/ledger_entries" --test-dir
|
||||||
|
"${AUTOGEN_TEST_DIR}/ledger_entries" --sfields-macro
|
||||||
|
"${SFIELDS_MACRO}"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
DEPENDS
|
||||||
|
"${LEDGER_ENTRIES_MACRO}"
|
||||||
|
"${SFIELDS_MACRO}"
|
||||||
|
"${GENERATE_LEDGER_SCRIPT}"
|
||||||
|
"${MACRO_PARSER_COMMON}"
|
||||||
|
"${LEDGER_TEMPLATE}"
|
||||||
|
"${LEDGER_TEST_TEMPLATE}"
|
||||||
|
"${REQUIREMENTS_FILE}"
|
||||||
|
COMMENT "Generating ledger entry classes from ledger_entries.macro..."
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create a custom target that depends on all generated files
|
||||||
|
add_custom_target(
|
||||||
|
protocol_autogen_generate
|
||||||
|
DEPENDS ${TX_OUTPUT_FILES} ${LEDGER_OUTPUT_FILES}
|
||||||
|
COMMENT "Protocol autogen code generation"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Extract test files from output lists (files ending in Tests.cpp)
|
||||||
|
set(PROTOCOL_AUTOGEN_TEST_SOURCES "")
|
||||||
|
foreach(FILE ${TX_OUTPUT_FILES} ${LEDGER_OUTPUT_FILES})
|
||||||
|
if(FILE MATCHES "Tests\\.cpp$")
|
||||||
|
list(APPEND PROTOCOL_AUTOGEN_TEST_SOURCES "${FILE}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
# Export test sources to parent scope for use in test CMakeLists.txt
|
||||||
|
set(PROTOCOL_AUTOGEN_TEST_SOURCES
|
||||||
|
"${PROTOCOL_AUTOGEN_TEST_SOURCES}"
|
||||||
|
CACHE INTERNAL
|
||||||
|
"Generated protocol_autogen test sources"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Register dependencies so CMake reconfigures when macro files change
|
||||||
|
# (to update the list of output files)
|
||||||
|
set_property(
|
||||||
|
DIRECTORY
|
||||||
|
APPEND
|
||||||
|
PROPERTY
|
||||||
|
CMAKE_CONFIGURE_DEPENDS
|
||||||
|
"${TRANSACTIONS_MACRO}"
|
||||||
|
"${LEDGER_ENTRIES_MACRO}"
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
@@ -7,7 +7,7 @@ find_package(
|
|||||||
COMPONENTS
|
COMPONENTS
|
||||||
chrono
|
chrono
|
||||||
container
|
container
|
||||||
coroutine
|
context
|
||||||
date_time
|
date_time
|
||||||
filesystem
|
filesystem
|
||||||
json
|
json
|
||||||
@@ -26,7 +26,7 @@ target_link_libraries(
|
|||||||
Boost::headers
|
Boost::headers
|
||||||
Boost::chrono
|
Boost::chrono
|
||||||
Boost::container
|
Boost::container
|
||||||
Boost::coroutine
|
Boost::context
|
||||||
Boost::date_time
|
Boost::date_time
|
||||||
Boost::filesystem
|
Boost::filesystem
|
||||||
Boost::json
|
Boost::json
|
||||||
@@ -38,23 +38,26 @@ target_link_libraries(
|
|||||||
if(Boost_COMPILER)
|
if(Boost_COMPILER)
|
||||||
target_link_libraries(xrpl_boost INTERFACE Boost::disable_autolinking)
|
target_link_libraries(xrpl_boost INTERFACE Boost::disable_autolinking)
|
||||||
endif()
|
endif()
|
||||||
if(SANITIZERS_ENABLED AND is_clang)
|
|
||||||
# TODO: gcc does not support -fsanitize-blacklist...can we do something else for gcc ?
|
# GCC 14+ has a false positive -Wuninitialized warning in Boost.Coroutine2's
|
||||||
if(NOT Boost_INCLUDE_DIRS AND TARGET Boost::headers)
|
# state.hpp when compiled with -O3. This is due to GCC's intentional behavior
|
||||||
get_target_property(
|
# change (Bug #98871, #119388) where warnings from inlined system header code
|
||||||
Boost_INCLUDE_DIRS
|
# are no longer suppressed by -isystem. The warning occurs in operator|= in
|
||||||
Boost::headers
|
# boost/coroutine2/detail/state.hpp when inlined from push_control_block::destroy().
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
# See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119388
|
||||||
)
|
if(is_gcc AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14)
|
||||||
endif()
|
target_compile_options(xrpl_boost INTERFACE -Wno-uninitialized)
|
||||||
message(STATUS "Adding [${Boost_INCLUDE_DIRS}] to sanitizer blacklist")
|
endif()
|
||||||
file(
|
|
||||||
WRITE ${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt
|
# Boost.Context's ucontext backend has ASAN fiber-switching annotations
|
||||||
"src:${Boost_INCLUDE_DIRS}/*"
|
# (start/finish_switch_fiber) that are compiled in when BOOST_USE_ASAN is defined.
|
||||||
)
|
# This tells ASAN about coroutine stack switches, preventing false positive
|
||||||
target_compile_options(
|
# stack-use-after-scope errors. BOOST_USE_UCONTEXT ensures the ucontext backend
|
||||||
opts
|
# is selected (fcontext does not support ASAN annotations).
|
||||||
INTERFACE # ignore boost headers for sanitizing
|
# These defines must match what Boost was compiled with (see conan/profiles/sanitizers).
|
||||||
-fsanitize-blacklist=${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt
|
if(enable_asan)
|
||||||
|
target_compile_definitions(
|
||||||
|
xrpl_boost
|
||||||
|
INTERFACE BOOST_USE_ASAN BOOST_USE_UCONTEXT
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -7,16 +7,21 @@ include(default)
|
|||||||
{% if compiler == "gcc" %}
|
{% if compiler == "gcc" %}
|
||||||
{% if "address" in sanitizers or "thread" in sanitizers or "undefinedbehavior" in sanitizers %}
|
{% if "address" in sanitizers or "thread" in sanitizers or "undefinedbehavior" in sanitizers %}
|
||||||
{% set sanitizer_list = [] %}
|
{% set sanitizer_list = [] %}
|
||||||
|
{% set defines = [] %}
|
||||||
{% set model_code = "" %}
|
{% set model_code = "" %}
|
||||||
{% set extra_cxxflags = ["-fno-omit-frame-pointer", "-O1", "-Wno-stringop-overflow"] %}
|
{% set extra_cxxflags = ["-fno-omit-frame-pointer", "-O1", "-Wno-stringop-overflow"] %}
|
||||||
|
|
||||||
{% if "address" in sanitizers %}
|
{% if "address" in sanitizers %}
|
||||||
{% set _ = sanitizer_list.append("address") %}
|
{% set _ = sanitizer_list.append("address") %}
|
||||||
{% set model_code = "-mcmodel=large" %}
|
{% set model_code = "-mcmodel=large" %}
|
||||||
|
{% set _ = defines.append("BOOST_USE_ASAN")%}
|
||||||
|
{% set _ = defines.append("BOOST_USE_UCONTEXT")%}
|
||||||
{% elif "thread" in sanitizers %}
|
{% elif "thread" in sanitizers %}
|
||||||
{% set _ = sanitizer_list.append("thread") %}
|
{% set _ = sanitizer_list.append("thread") %}
|
||||||
{% set model_code = "-mcmodel=medium" %}
|
{% set model_code = "-mcmodel=medium" %}
|
||||||
{% set _ = extra_cxxflags.append("-Wno-tsan") %}
|
{% set _ = extra_cxxflags.append("-Wno-tsan") %}
|
||||||
|
{% set _ = defines.append("BOOST_USE_TSAN")%}
|
||||||
|
{% set _ = defines.append("BOOST_USE_UCONTEXT")%}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if "undefinedbehavior" in sanitizers %}
|
{% if "undefinedbehavior" in sanitizers %}
|
||||||
@@ -29,16 +34,22 @@ include(default)
|
|||||||
tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}']
|
tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}']
|
||||||
tools.build:sharedlinkflags+=['{{sanitizer_flags}}']
|
tools.build:sharedlinkflags+=['{{sanitizer_flags}}']
|
||||||
tools.build:exelinkflags+=['{{sanitizer_flags}}']
|
tools.build:exelinkflags+=['{{sanitizer_flags}}']
|
||||||
|
tools.build:defines+={{defines}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% elif compiler == "apple-clang" or compiler == "clang" %}
|
{% elif compiler == "apple-clang" or compiler == "clang" %}
|
||||||
{% if "address" in sanitizers or "thread" in sanitizers or "undefinedbehavior" in sanitizers %}
|
{% if "address" in sanitizers or "thread" in sanitizers or "undefinedbehavior" in sanitizers %}
|
||||||
{% set sanitizer_list = [] %}
|
{% set sanitizer_list = [] %}
|
||||||
|
{% set defines = [] %}
|
||||||
{% set extra_cxxflags = ["-fno-omit-frame-pointer", "-O1"] %}
|
{% set extra_cxxflags = ["-fno-omit-frame-pointer", "-O1"] %}
|
||||||
|
|
||||||
{% if "address" in sanitizers %}
|
{% if "address" in sanitizers %}
|
||||||
{% set _ = sanitizer_list.append("address") %}
|
{% set _ = sanitizer_list.append("address") %}
|
||||||
|
{% set _ = defines.append("BOOST_USE_ASAN")%}
|
||||||
|
{% set _ = defines.append("BOOST_USE_UCONTEXT")%}
|
||||||
{% elif "thread" in sanitizers %}
|
{% elif "thread" in sanitizers %}
|
||||||
{% set _ = sanitizer_list.append("thread") %}
|
{% set _ = sanitizer_list.append("thread") %}
|
||||||
|
{% set _ = defines.append("BOOST_USE_TSAN")%}
|
||||||
|
{% set _ = defines.append("BOOST_USE_UCONTEXT")%}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if "undefinedbehavior" in sanitizers %}
|
{% if "undefinedbehavior" in sanitizers %}
|
||||||
@@ -52,8 +63,24 @@ include(default)
|
|||||||
tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}']
|
tools.build:cxxflags+=['{{sanitizer_flags}} {{" ".join(extra_cxxflags)}}']
|
||||||
tools.build:sharedlinkflags+=['{{sanitizer_flags}}']
|
tools.build:sharedlinkflags+=['{{sanitizer_flags}}']
|
||||||
tools.build:exelinkflags+=['{{sanitizer_flags}}']
|
tools.build:exelinkflags+=['{{sanitizer_flags}}']
|
||||||
|
tools.build:defines+={{defines}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
tools.info.package_id:confs+=["tools.build:cxxflags", "tools.build:exelinkflags", "tools.build:sharedlinkflags"]
|
tools.info.package_id:confs+=["tools.build:cxxflags", "tools.build:exelinkflags", "tools.build:sharedlinkflags", "tools.build:defines"]
|
||||||
|
|
||||||
|
[options]
|
||||||
|
{% if sanitizers %}
|
||||||
|
{% if "address" in sanitizers %}
|
||||||
|
# Build Boost.Context with ucontext backend (not fcontext) so that
|
||||||
|
# ASAN fiber-switching annotations (__sanitizer_start/finish_switch_fiber)
|
||||||
|
# are compiled into the library. fcontext (assembly) has no ASAN support.
|
||||||
|
# define=BOOST_USE_ASAN=1 is critical: it must be defined when building
|
||||||
|
# Boost.Context itself so the ucontext backend compiles in the ASAN annotations.
|
||||||
|
boost/*:extra_b2_flags=context-impl=ucontext address-sanitizer=on define=BOOST_USE_ASAN=1
|
||||||
|
boost/*:without_context=False
|
||||||
|
# Boost stacktrace fails to build with some sanitizers
|
||||||
|
boost/*:without_stacktrace=True
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|||||||
12
conanfile.py
12
conanfile.py
@@ -1,4 +1,5 @@
|
|||||||
import re
|
import re
|
||||||
|
import os
|
||||||
|
|
||||||
from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
|
from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
|
||||||
|
|
||||||
@@ -57,6 +58,9 @@ class Xrpl(ConanFile):
|
|||||||
"tests": False,
|
"tests": False,
|
||||||
"unity": False,
|
"unity": False,
|
||||||
"xrpld": False,
|
"xrpld": False,
|
||||||
|
"boost/*:without_context": False,
|
||||||
|
"boost/*:without_coroutine": True,
|
||||||
|
"boost/*:without_coroutine2": False,
|
||||||
"date/*:header_only": True,
|
"date/*:header_only": True,
|
||||||
"ed25519/*:shared": False,
|
"ed25519/*:shared": False,
|
||||||
"grpc/*:shared": False,
|
"grpc/*:shared": False,
|
||||||
@@ -126,6 +130,12 @@ class Xrpl(ConanFile):
|
|||||||
if self.settings.compiler in ["clang", "gcc"]:
|
if self.settings.compiler in ["clang", "gcc"]:
|
||||||
self.options["boost"].without_cobalt = True
|
self.options["boost"].without_cobalt = True
|
||||||
|
|
||||||
|
# Check if environment variable exists
|
||||||
|
if "SANITIZERS" in os.environ:
|
||||||
|
sanitizers = os.environ["SANITIZERS"]
|
||||||
|
if "address" in sanitizers.lower():
|
||||||
|
self.default_options["fPIC"] = False
|
||||||
|
|
||||||
def requirements(self):
|
def requirements(self):
|
||||||
# Conan 2 requires transitive headers to be specified
|
# Conan 2 requires transitive headers to be specified
|
||||||
transitive_headers_opt = (
|
transitive_headers_opt = (
|
||||||
@@ -196,7 +206,7 @@ class Xrpl(ConanFile):
|
|||||||
"boost::headers",
|
"boost::headers",
|
||||||
"boost::chrono",
|
"boost::chrono",
|
||||||
"boost::container",
|
"boost::container",
|
||||||
"boost::coroutine",
|
"boost::context",
|
||||||
"boost::date_time",
|
"boost::date_time",
|
||||||
"boost::filesystem",
|
"boost::filesystem",
|
||||||
"boost::json",
|
"boost::json",
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ words:
|
|||||||
- endmacro
|
- endmacro
|
||||||
- exceptioned
|
- exceptioned
|
||||||
- Falco
|
- Falco
|
||||||
|
- fcontext
|
||||||
- finalizers
|
- finalizers
|
||||||
- firewalled
|
- firewalled
|
||||||
- fmtdur
|
- fmtdur
|
||||||
@@ -111,6 +112,7 @@ words:
|
|||||||
- gpgcheck
|
- gpgcheck
|
||||||
- gpgkey
|
- gpgkey
|
||||||
- hotwallet
|
- hotwallet
|
||||||
|
- hwaddress
|
||||||
- hwrap
|
- hwrap
|
||||||
- ifndef
|
- ifndef
|
||||||
- inequation
|
- inequation
|
||||||
@@ -204,6 +206,7 @@ words:
|
|||||||
- ptrs
|
- ptrs
|
||||||
- pushd
|
- pushd
|
||||||
- pyenv
|
- pyenv
|
||||||
|
- pyparsing
|
||||||
- qalloc
|
- qalloc
|
||||||
- queuable
|
- queuable
|
||||||
- Raphson
|
- Raphson
|
||||||
@@ -229,6 +232,7 @@ words:
|
|||||||
- seqit
|
- seqit
|
||||||
- sf
|
- sf
|
||||||
- SFIELD
|
- SFIELD
|
||||||
|
- sfields
|
||||||
- shamap
|
- shamap
|
||||||
- shamapitem
|
- shamapitem
|
||||||
- sidechain
|
- sidechain
|
||||||
|
|||||||
8
docs/build/sanitizers.md
vendored
8
docs/build/sanitizers.md
vendored
@@ -89,8 +89,8 @@ cmake --build . --parallel 4
|
|||||||
**IMPORTANT**: ASAN with Boost produces many false positives. Use these options:
|
**IMPORTANT**: ASAN with Boost produces many false positives. Use these options:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export ASAN_OPTIONS="print_stacktrace=1:detect_container_overflow=0:suppressions=path/to/asan.supp:halt_on_error=0:log_path=asan.log"
|
export ASAN_OPTIONS="include=sanitizers/suppressions/runtime-asan-options.txt:suppressions=sanitizers/suppressions/asan.supp"
|
||||||
export LSAN_OPTIONS="suppressions=path/to/lsan.supp:halt_on_error=0:log_path=lsan.log"
|
export LSAN_OPTIONS="include=sanitizers/suppressions/runtime-lsan-options.txt:suppressions=sanitizers/suppressions/lsan.supp"
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
./xrpld --unittest --unittest-jobs=5
|
./xrpld --unittest --unittest-jobs=5
|
||||||
@@ -108,7 +108,7 @@ export LSAN_OPTIONS="suppressions=path/to/lsan.supp:halt_on_error=0:log_path=lsa
|
|||||||
### ThreadSanitizer (TSan)
|
### ThreadSanitizer (TSan)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export TSAN_OPTIONS="suppressions=path/to/tsan.supp halt_on_error=0 log_path=tsan.log"
|
export TSAN_OPTIONS="include=sanitizers/suppressions/runtime-tsan-options.txt:suppressions=sanitizers/suppressions/tsan.supp"
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
./xrpld --unittest --unittest-jobs=5
|
./xrpld --unittest --unittest-jobs=5
|
||||||
@@ -129,7 +129,7 @@ More details [here](https://github.com/google/sanitizers/wiki/AddressSanitizerLe
|
|||||||
### UndefinedBehaviorSanitizer (UBSan)
|
### UndefinedBehaviorSanitizer (UBSan)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export UBSAN_OPTIONS="suppressions=path/to/ubsan.supp:print_stacktrace=1:halt_on_error=0:log_path=ubsan.log"
|
export UBSAN_OPTIONS="include=sanitizers/suppressions/runtime-ubsan-options.txt:suppressions=sanitizers/suppressions/ubsan.supp"
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
./xrpld --unittest --unittest-jobs=5
|
./xrpld --unittest --unittest-jobs=5
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/basics/sanitizers.h>
|
||||||
#include <xrpl/beast/type_name.h>
|
#include <xrpl/beast/type_name.h>
|
||||||
|
|
||||||
#include <exception>
|
#include <exception>
|
||||||
@@ -23,16 +24,28 @@ LogThrow(std::string const& title);
|
|||||||
When called from within a catch block, it will pass
|
When called from within a catch block, it will pass
|
||||||
control to the next matching exception handler, if any.
|
control to the next matching exception handler, if any.
|
||||||
Otherwise, std::terminate will be called.
|
Otherwise, std::terminate will be called.
|
||||||
|
|
||||||
|
ASAN can't handle sudden jumps in control flow very well. This
|
||||||
|
function is marked as XRPL_NO_SANITIZE_ADDRESS to prevent it from
|
||||||
|
triggering false positives, since it throws.
|
||||||
*/
|
*/
|
||||||
[[noreturn]] inline void
|
[[noreturn]] XRPL_NO_SANITIZE_ADDRESS inline void
|
||||||
Rethrow()
|
Rethrow()
|
||||||
{
|
{
|
||||||
LogThrow("Re-throwing exception");
|
LogThrow("Re-throwing exception");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Logs and throws an exception of type E.
|
||||||
|
|
||||||
|
ASAN can't handle sudden jumps in control flow very well. This
|
||||||
|
function is marked as XRPL_NO_SANITIZE_ADDRESS to prevent it from
|
||||||
|
triggering false positives, since it throws.
|
||||||
|
*/
|
||||||
|
|
||||||
template <class E, class... Args>
|
template <class E, class... Args>
|
||||||
[[noreturn]] inline void
|
[[noreturn]] XRPL_NO_SANITIZE_ADDRESS inline void
|
||||||
Throw(Args&&... args)
|
Throw(Args&&... args)
|
||||||
{
|
{
|
||||||
static_assert(
|
static_assert(
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/beast/utility/instrumentation.h>
|
||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
namespace xrpl {
|
namespace xrpl {
|
||||||
@@ -70,4 +72,31 @@ unsafe_cast(Src s) noexcept
|
|||||||
return unsafe_cast<Dest>(static_cast<std::underlying_type_t<Src>>(s));
|
return unsafe_cast<Dest>(static_cast<std::underlying_type_t<Src>>(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class Dest, class Src>
|
||||||
|
requires std::is_pointer_v<Dest>
|
||||||
|
inline Dest
|
||||||
|
safe_downcast(Src* s) noexcept
|
||||||
|
{
|
||||||
|
#ifdef NDEBUG
|
||||||
|
return static_cast<Dest>(s); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
|
||||||
|
#else
|
||||||
|
auto* result = dynamic_cast<Dest>(s);
|
||||||
|
XRPL_ASSERT(result != nullptr, "xrpl::safe_downcast : pointer downcast is valid");
|
||||||
|
return result;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Dest, class Src>
|
||||||
|
requires std::is_lvalue_reference_v<Dest>
|
||||||
|
inline Dest
|
||||||
|
safe_downcast(Src& s) noexcept
|
||||||
|
{
|
||||||
|
#ifndef NDEBUG
|
||||||
|
XRPL_ASSERT(
|
||||||
|
dynamic_cast<std::add_pointer_t<std::remove_reference_t<Dest>>>(&s) != nullptr,
|
||||||
|
"xrpl::safe_downcast : reference downcast is valid");
|
||||||
|
#endif
|
||||||
|
return static_cast<Dest>(s); // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|||||||
13
include/xrpl/basics/sanitizers.h
Normal file
13
include/xrpl/basics/sanitizers.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Helper to disable ASan/HwASan for specific functions
|
||||||
|
/*
|
||||||
|
ASAN flags some false positives with sudden jumps in control flow, like
|
||||||
|
exceptions, or when encountering coroutine stack switches. This macro can be used to disable ASAN
|
||||||
|
intrumentation for specific functions.
|
||||||
|
*/
|
||||||
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
#define XRPL_NO_SANITIZE_ADDRESS __attribute__((no_sanitize("address", "hwaddress")))
|
||||||
|
#else
|
||||||
|
#define XRPL_NO_SANITIZE_ADDRESS
|
||||||
|
#endif
|
||||||
@@ -43,8 +43,8 @@ private:
|
|||||||
template <typename>
|
template <typename>
|
||||||
friend class ListIterator;
|
friend class ListIterator;
|
||||||
|
|
||||||
ListNode* m_next;
|
ListNode* m_next = nullptr;
|
||||||
ListNode* m_prev;
|
ListNode* m_prev = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
@@ -567,7 +567,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_type m_size;
|
size_type m_size = 0u;
|
||||||
Node m_head;
|
Node m_head;
|
||||||
Node m_tail;
|
Node m_tail;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <xrpl/basics/ByteUtilities.h>
|
|
||||||
|
|
||||||
namespace xrpl {
|
namespace xrpl {
|
||||||
|
|
||||||
template <class F>
|
template <class F>
|
||||||
@@ -11,16 +9,18 @@ JobQueue::Coro::Coro(Coro_create_t, JobQueue& jq, JobType type, std::string cons
|
|||||||
, name_(name)
|
, name_(name)
|
||||||
, running_(false)
|
, running_(false)
|
||||||
, coro_(
|
, coro_(
|
||||||
|
// Stack size of 1MB wasn't sufficient for deep calls. ASAN tests flagged the issue. Hence
|
||||||
|
// increasing the size to 1.5MB.
|
||||||
|
boost::context::protected_fixedsize_stack(1536 * 1024),
|
||||||
[this, fn = std::forward<F>(f)](
|
[this, fn = std::forward<F>(f)](
|
||||||
boost::coroutines::asymmetric_coroutine<void>::push_type& do_yield) {
|
boost::coroutines2::asymmetric_coroutine<void>::push_type& do_yield) {
|
||||||
yield_ = &do_yield;
|
yield_ = &do_yield;
|
||||||
yield();
|
yield();
|
||||||
fn(shared_from_this());
|
fn(shared_from_this());
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
finished_ = true;
|
finished_ = true;
|
||||||
#endif
|
#endif
|
||||||
},
|
})
|
||||||
boost::coroutines::attributes(megabytes(1)))
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
#include <xrpl/core/detail/Workers.h>
|
#include <xrpl/core/detail/Workers.h>
|
||||||
#include <xrpl/json/json_value.h>
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
#include <boost/coroutine/all.hpp>
|
#include <boost/context/protected_fixedsize_stack.hpp>
|
||||||
|
#include <boost/coroutine2/all.hpp>
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
@@ -48,8 +49,8 @@ public:
|
|||||||
std::mutex mutex_;
|
std::mutex mutex_;
|
||||||
std::mutex mutex_run_;
|
std::mutex mutex_run_;
|
||||||
std::condition_variable cv_;
|
std::condition_variable cv_;
|
||||||
boost::coroutines::asymmetric_coroutine<void>::pull_type coro_;
|
boost::coroutines2::coroutine<void>::pull_type coro_;
|
||||||
boost::coroutines::asymmetric_coroutine<void>::push_type* yield_;
|
boost::coroutines2::coroutine<void>::push_type* yield_;
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
bool finished_ = false;
|
bool finished_ = false;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -421,7 +421,7 @@ private:
|
|||||||
ObjectValues* map_{nullptr};
|
ObjectValues* map_{nullptr};
|
||||||
} value_;
|
} value_;
|
||||||
ValueType type_ : 8;
|
ValueType type_ : 8;
|
||||||
int allocated_ : 1; // Notes: if declared as bool, bitfield is useless.
|
int allocated_ : 1 {}; // Notes: if declared as bool, bitfield is useless.
|
||||||
};
|
};
|
||||||
|
|
||||||
inline Value
|
inline Value
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ private:
|
|||||||
std::string indentString_;
|
std::string indentString_;
|
||||||
int rightMargin_;
|
int rightMargin_;
|
||||||
int indentSize_;
|
int indentSize_;
|
||||||
bool addChildValues_;
|
bool addChildValues_{};
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
|
/** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
|
||||||
@@ -175,7 +175,7 @@ private:
|
|||||||
std::string indentString_;
|
std::string indentString_;
|
||||||
int rightMargin_;
|
int rightMargin_;
|
||||||
std::string indentation_;
|
std::string indentation_;
|
||||||
bool addChildValues_;
|
bool addChildValues_{};
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ validDomain(ReadView const& view, uint256 domainID, AccountID const& subject);
|
|||||||
// This function is only called when we about to return tecNO_PERMISSION
|
// This function is only called when we about to return tecNO_PERMISSION
|
||||||
// because all the checks for the DepositPreauth authorization failed.
|
// because all the checks for the DepositPreauth authorization failed.
|
||||||
TER
|
TER
|
||||||
authorizedDepositPreauth(ApplyView const& view, STVector256 const& ctx, AccountID const& dst);
|
authorizedDepositPreauth(ReadView const& view, STVector256 const& ctx, AccountID const& dst);
|
||||||
|
|
||||||
// Sort credentials array, return empty set if there are duplicates
|
// Sort credentials array, return empty set if there are duplicates
|
||||||
std::set<std::pair<AccountID, Slice>>
|
std::set<std::pair<AccountID, Slice>>
|
||||||
@@ -74,7 +74,7 @@ verifyDepositPreauth(
|
|||||||
ApplyView& view,
|
ApplyView& view,
|
||||||
AccountID const& src,
|
AccountID const& src,
|
||||||
AccountID const& dst,
|
AccountID const& dst,
|
||||||
std::shared_ptr<SLE> const& sleDst,
|
std::shared_ptr<SLE const> const& sleDst,
|
||||||
beast::Journal j);
|
beast::Journal j);
|
||||||
|
|
||||||
} // namespace xrpl
|
} // namespace xrpl
|
||||||
|
|||||||
@@ -29,6 +29,18 @@ public:
|
|||||||
bool sslVerify,
|
bool sslVerify,
|
||||||
beast::Journal j);
|
beast::Journal j);
|
||||||
|
|
||||||
|
/** Destroys the global SSL context created by initializeSSLContext().
|
||||||
|
*
|
||||||
|
* This releases the underlying boost::asio::ssl::context and any
|
||||||
|
* associated OpenSSL resources. Must not be called while any
|
||||||
|
* HTTPClient requests are in flight.
|
||||||
|
*
|
||||||
|
* @note Currently only called from tests during teardown. In production,
|
||||||
|
* the SSL context lives for the lifetime of the process.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
cleanupSSLContext();
|
||||||
|
|
||||||
static void
|
static void
|
||||||
get(bool bSSL,
|
get(bool bSSL,
|
||||||
boost::asio::io_context& io_context,
|
boost::asio::io_context& io_context,
|
||||||
|
|||||||
@@ -64,6 +64,49 @@
|
|||||||
|
|
||||||
namespace xrpl {
|
namespace xrpl {
|
||||||
|
|
||||||
|
// Feature names must not exceed this length (in characters, excluding the null terminator).
|
||||||
|
static constexpr std::size_t maxFeatureNameSize = 63;
|
||||||
|
// Reserve this exact feature-name length (in characters/bytes, excluding the null terminator)
|
||||||
|
// so that a 32-byte uint256 (for example, in WASM or other interop contexts) can be used
|
||||||
|
// as a compact, fixed-size feature selector without conflicting with human-readable names.
|
||||||
|
static constexpr std::size_t reservedFeatureNameSize = 32;
|
||||||
|
|
||||||
|
// Both validFeatureNameSize and validFeatureName are consteval functions that can be used in
|
||||||
|
// static_asserts to validate feature names at compile time. They are only used inside
|
||||||
|
// enforceValidFeatureName in Feature.cpp, but are exposed here for testing. The expected
|
||||||
|
// parameter `auto fn` is a constexpr lambda which returns a const char*, making it available
|
||||||
|
// for compile-time evaluation. Read more in https://accu.org/journals/overload/30/172/wu/
|
||||||
|
consteval auto
|
||||||
|
validFeatureNameSize(auto fn) -> bool
|
||||||
|
{
|
||||||
|
constexpr char const* n = fn();
|
||||||
|
// Note, std::strlen is not constexpr, we need to implement our own here.
|
||||||
|
constexpr std::size_t N = [](auto n) {
|
||||||
|
std::size_t ret = 0;
|
||||||
|
for (auto ptr = n; *ptr != '\0'; ret++, ++ptr)
|
||||||
|
;
|
||||||
|
return ret;
|
||||||
|
}(n);
|
||||||
|
return N != reservedFeatureNameSize && //
|
||||||
|
N <= maxFeatureNameSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
consteval auto
|
||||||
|
validFeatureName(auto fn) -> bool
|
||||||
|
{
|
||||||
|
constexpr char const* n = fn();
|
||||||
|
// Prevent the use of visually confusable characters and enforce that feature names
|
||||||
|
// are always valid ASCII. This is needed because C++ allows Unicode identifiers.
|
||||||
|
// Characters below 0x20 are nonprintable control characters, and characters with the 0x80 bit
|
||||||
|
// set are non-ASCII (e.g. UTF-8 encoding of Unicode), so both are disallowed.
|
||||||
|
for (auto ptr = n; *ptr != '\0'; ++ptr)
|
||||||
|
{
|
||||||
|
if (*ptr & 0x80 || *ptr < 0x20)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
enum class VoteBehavior : int { Obsolete = -1, DefaultNo = 0, DefaultYes };
|
enum class VoteBehavior : int { Obsolete = -1, DefaultNo = 0, DefaultYes };
|
||||||
enum class AmendmentSupport : int { Retired = -1, Supported = 0, Unsupported };
|
enum class AmendmentSupport : int { Retired = -1, Supported = 0, Unsupported };
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
std::optional<TxType>
|
std::optional<TxType>
|
||||||
getGranularTxType(GranularPermissionType const& gpType) const;
|
getGranularTxType(GranularPermissionType const& gpType) const;
|
||||||
|
|
||||||
std::optional<std::reference_wrapper<uint256 const>> const
|
std::optional<std::reference_wrapper<uint256 const>>
|
||||||
getTxFeature(TxType txType) const;
|
getTxFeature(TxType txType) const;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ std::size_t constexpr maxDIDDocumentLength = 256;
|
|||||||
std::size_t constexpr maxDIDURILength = 256;
|
std::size_t constexpr maxDIDURILength = 256;
|
||||||
|
|
||||||
/** The maximum length of an Attestation inside a DID */
|
/** The maximum length of an Attestation inside a DID */
|
||||||
std::size_t constexpr maxDIDAttestationLength = 256;
|
std::size_t constexpr maxDIDDataLength = 256;
|
||||||
|
|
||||||
/** The maximum length of a domain */
|
/** The maximum length of a domain */
|
||||||
std::size_t constexpr maxDomainLength = 256;
|
std::size_t constexpr maxDomainLength = 256;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ protected:
|
|||||||
// All the constructed public keys are valid, non-empty and contain 33
|
// All the constructed public keys are valid, non-empty and contain 33
|
||||||
// bytes of data.
|
// bytes of data.
|
||||||
static constexpr std::size_t size_ = 33;
|
static constexpr std::size_t size_ = 33;
|
||||||
std::uint8_t buf_[size_]; // should be large enough
|
std::uint8_t buf_[size_]{}; // should be large enough
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using const_iterator = std::uint8_t const*;
|
using const_iterator = std::uint8_t const*;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public:
|
|||||||
STAccount();
|
STAccount();
|
||||||
|
|
||||||
STAccount(SField const& n);
|
STAccount(SField const& n);
|
||||||
STAccount(SField const& n, Buffer&& v);
|
STAccount(SField const& n, Buffer const& v);
|
||||||
STAccount(SerialIter& sit, SField const& name);
|
STAccount(SerialIter& sit, SField const& name);
|
||||||
STAccount(SField const& n, AccountID const& v);
|
STAccount(SField const& n, AccountID const& v);
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ class STObject : public STBase, public CountedObject<STObject>
|
|||||||
using list_type = std::vector<detail::STVar>;
|
using list_type = std::vector<detail::STVar>;
|
||||||
|
|
||||||
list_type v_;
|
list_type v_;
|
||||||
SOTemplate const* mType;
|
SOTemplate const* mType{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using iterator = boost::transform_iterator<Transform, STObject::list_type::const_iterator>;
|
using iterator = boost::transform_iterator<Transform, STObject::list_type::const_iterator>;
|
||||||
@@ -401,7 +401,7 @@ public:
|
|||||||
getStyle(SField const& field) const;
|
getStyle(SField const& field) const;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
hasMatchingEntry(STBase const&);
|
hasMatchingEntry(STBase const&) const;
|
||||||
|
|
||||||
bool
|
bool
|
||||||
operator==(STObject const& o) const;
|
operator==(STObject const& o) const;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
namespace xrpl {
|
namespace xrpl {
|
||||||
|
|
||||||
enum TxnSql : char {
|
enum class TxnSql : char {
|
||||||
txnSqlNew = 'N',
|
txnSqlNew = 'N',
|
||||||
txnSqlConflict = 'C',
|
txnSqlConflict = 'C',
|
||||||
txnSqlHeld = 'H',
|
txnSqlHeld = 'H',
|
||||||
@@ -83,6 +83,9 @@ public:
|
|||||||
std::uint32_t
|
std::uint32_t
|
||||||
getSeqValue() const;
|
getSeqValue() const;
|
||||||
|
|
||||||
|
AccountID
|
||||||
|
getFeePayer() const;
|
||||||
|
|
||||||
boost::container::flat_set<AccountID>
|
boost::container::flat_set<AccountID>
|
||||||
getMentionedAccounts() const;
|
getMentionedAccounts() const;
|
||||||
|
|
||||||
@@ -122,7 +125,7 @@ public:
|
|||||||
getMetaSQL(
|
getMetaSQL(
|
||||||
Serializer rawTxn,
|
Serializer rawTxn,
|
||||||
std::uint32_t inLedger,
|
std::uint32_t inLedger,
|
||||||
char status,
|
TxnSql status,
|
||||||
std::string const& escapedMetaData) const;
|
std::string const& escapedMetaData) const;
|
||||||
|
|
||||||
std::vector<uint256> const&
|
std::vector<uint256> const&
|
||||||
|
|||||||
@@ -16,8 +16,11 @@ namespace xrpl {
|
|||||||
/** A secret key. */
|
/** A secret key. */
|
||||||
class SecretKey
|
class SecretKey
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
static constexpr std::size_t size_ = 32;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::uint8_t buf_[32];
|
std::uint8_t buf_[size_]{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using const_iterator = std::uint8_t const*;
|
using const_iterator = std::uint8_t const*;
|
||||||
@@ -27,9 +30,14 @@ public:
|
|||||||
SecretKey&
|
SecretKey&
|
||||||
operator=(SecretKey const&) = default;
|
operator=(SecretKey const&) = default;
|
||||||
|
|
||||||
|
bool
|
||||||
|
operator==(SecretKey const&) = delete;
|
||||||
|
bool
|
||||||
|
operator!=(SecretKey const&) = delete;
|
||||||
|
|
||||||
~SecretKey();
|
~SecretKey();
|
||||||
|
|
||||||
SecretKey(std::array<std::uint8_t, 32> const& data);
|
SecretKey(std::array<std::uint8_t, size_> const& data);
|
||||||
SecretKey(Slice const& slice);
|
SecretKey(Slice const& slice);
|
||||||
|
|
||||||
std::uint8_t const*
|
std::uint8_t const*
|
||||||
@@ -78,16 +86,10 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
operator==(SecretKey const& lhs, SecretKey const& rhs)
|
operator==(SecretKey const& lhs, SecretKey const& rhs) = delete;
|
||||||
{
|
|
||||||
return lhs.size() == rhs.size() && std::memcmp(lhs.data(), rhs.data(), rhs.size()) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool
|
inline bool
|
||||||
operator!=(SecretKey const& lhs, SecretKey const& rhs)
|
operator!=(SecretKey const& lhs, SecretKey const& rhs) = delete;
|
||||||
{
|
|
||||||
return !(lhs == rhs);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace xrpl {
|
|||||||
class Seed
|
class Seed
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::array<uint8_t, 16> buf_;
|
std::array<uint8_t, 16> buf_{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
using const_iterator = std::array<uint8_t, 16>::const_iterator;
|
using const_iterator = std::array<uint8_t, 16>::const_iterator;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace xrpl {
|
|||||||
static inline std::string const&
|
static inline std::string const&
|
||||||
systemName()
|
systemName()
|
||||||
{
|
{
|
||||||
static std::string const name = "ripple";
|
static std::string const name = "xrpld";
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ private:
|
|||||||
// The largest "small object" we can accommodate
|
// The largest "small object" we can accommodate
|
||||||
static std::size_t constexpr max_size = 72;
|
static std::size_t constexpr max_size = 72;
|
||||||
|
|
||||||
std::aligned_storage<max_size>::type d_;
|
std::aligned_storage<max_size>::type d_ = {};
|
||||||
STBase* p_ = nullptr;
|
STBase* p_ = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ TRANSACTION(ttESCROW_FINISH, 2, EscrowFinish,
|
|||||||
|
|
||||||
/** This transaction type adjusts various account settings. */
|
/** This transaction type adjusts various account settings. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/account/SetAccount.h>
|
# include <xrpl/tx/transactors/account/AccountSet.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttACCOUNT_SET, 3, AccountSet,
|
TRANSACTION(ttACCOUNT_SET, 3, AccountSet,
|
||||||
Delegation::notDelegable,
|
Delegation::notDelegable,
|
||||||
@@ -124,7 +124,7 @@ TRANSACTION(ttREGULAR_KEY_SET, 5, SetRegularKey,
|
|||||||
|
|
||||||
/** This transaction type creates an offer to trade one asset for another. */
|
/** This transaction type creates an offer to trade one asset for another. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/dex/CreateOffer.h>
|
# include <xrpl/tx/transactors/dex/OfferCreate.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttOFFER_CREATE, 7, OfferCreate,
|
TRANSACTION(ttOFFER_CREATE, 7, OfferCreate,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -140,7 +140,7 @@ TRANSACTION(ttOFFER_CREATE, 7, OfferCreate,
|
|||||||
|
|
||||||
/** This transaction type cancels existing offers to trade one asset for another. */
|
/** This transaction type cancels existing offers to trade one asset for another. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/dex/CancelOffer.h>
|
# include <xrpl/tx/transactors/dex/OfferCancel.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttOFFER_CANCEL, 8, OfferCancel,
|
TRANSACTION(ttOFFER_CANCEL, 8, OfferCancel,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -154,7 +154,7 @@ TRANSACTION(ttOFFER_CANCEL, 8, OfferCancel,
|
|||||||
|
|
||||||
/** This transaction type creates a new set of tickets. */
|
/** This transaction type creates a new set of tickets. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/system/CreateTicket.h>
|
# include <xrpl/tx/transactors/system/TicketCreate.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttTICKET_CREATE, 10, TicketCreate,
|
TRANSACTION(ttTICKET_CREATE, 10, TicketCreate,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -170,7 +170,7 @@ TRANSACTION(ttTICKET_CREATE, 10, TicketCreate,
|
|||||||
// The SignerEntries are optional because a SignerList is deleted by
|
// The SignerEntries are optional because a SignerList is deleted by
|
||||||
// setting the SignerQuorum to zero and omitting SignerEntries.
|
// setting the SignerQuorum to zero and omitting SignerEntries.
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/account/SetSignerList.h>
|
# include <xrpl/tx/transactors/account/SignerListSet.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttSIGNER_LIST_SET, 12, SignerListSet,
|
TRANSACTION(ttSIGNER_LIST_SET, 12, SignerListSet,
|
||||||
Delegation::notDelegable,
|
Delegation::notDelegable,
|
||||||
@@ -183,7 +183,7 @@ TRANSACTION(ttSIGNER_LIST_SET, 12, SignerListSet,
|
|||||||
|
|
||||||
/** This transaction type creates a new unidirectional XRP payment channel. */
|
/** This transaction type creates a new unidirectional XRP payment channel. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/payment_channel/PayChanCreate.h>
|
# include <xrpl/tx/transactors/payment_channel/PaymentChannelCreate.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttPAYCHAN_CREATE, 13, PaymentChannelCreate,
|
TRANSACTION(ttPAYCHAN_CREATE, 13, PaymentChannelCreate,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -200,7 +200,7 @@ TRANSACTION(ttPAYCHAN_CREATE, 13, PaymentChannelCreate,
|
|||||||
|
|
||||||
/** This transaction type funds an existing unidirectional XRP payment channel. */
|
/** This transaction type funds an existing unidirectional XRP payment channel. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/payment_channel/PayChanFund.h>
|
# include <xrpl/tx/transactors/payment_channel/PaymentChannelFund.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttPAYCHAN_FUND, 14, PaymentChannelFund,
|
TRANSACTION(ttPAYCHAN_FUND, 14, PaymentChannelFund,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -214,7 +214,7 @@ TRANSACTION(ttPAYCHAN_FUND, 14, PaymentChannelFund,
|
|||||||
|
|
||||||
/** This transaction type submits a claim against an existing unidirectional payment channel. */
|
/** This transaction type submits a claim against an existing unidirectional payment channel. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/payment_channel/PayChanClaim.h>
|
# include <xrpl/tx/transactors/payment_channel/PaymentChannelClaim.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttPAYCHAN_CLAIM, 15, PaymentChannelClaim,
|
TRANSACTION(ttPAYCHAN_CLAIM, 15, PaymentChannelClaim,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -231,7 +231,7 @@ TRANSACTION(ttPAYCHAN_CLAIM, 15, PaymentChannelClaim,
|
|||||||
|
|
||||||
/** This transaction type creates a new check. */
|
/** This transaction type creates a new check. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/check/CreateCheck.h>
|
# include <xrpl/tx/transactors/check/CheckCreate.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttCHECK_CREATE, 16, CheckCreate,
|
TRANSACTION(ttCHECK_CREATE, 16, CheckCreate,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -247,7 +247,7 @@ TRANSACTION(ttCHECK_CREATE, 16, CheckCreate,
|
|||||||
|
|
||||||
/** This transaction type cashes an existing check. */
|
/** This transaction type cashes an existing check. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/check/CashCheck.h>
|
# include <xrpl/tx/transactors/check/CheckCash.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttCHECK_CASH, 17, CheckCash,
|
TRANSACTION(ttCHECK_CASH, 17, CheckCash,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -261,7 +261,7 @@ TRANSACTION(ttCHECK_CASH, 17, CheckCash,
|
|||||||
|
|
||||||
/** This transaction type cancels an existing check. */
|
/** This transaction type cancels an existing check. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/check/CancelCheck.h>
|
# include <xrpl/tx/transactors/check/CheckCancel.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttCHECK_CANCEL, 18, CheckCancel,
|
TRANSACTION(ttCHECK_CANCEL, 18, CheckCancel,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -288,7 +288,7 @@ TRANSACTION(ttDEPOSIT_PREAUTH, 19, DepositPreauth,
|
|||||||
|
|
||||||
/** This transaction type modifies a trustline between two accounts. */
|
/** This transaction type modifies a trustline between two accounts. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/token/SetTrust.h>
|
# include <xrpl/tx/transactors/token/TrustSet.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttTRUST_SET, 20, TrustSet,
|
TRANSACTION(ttTRUST_SET, 20, TrustSet,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -302,7 +302,7 @@ TRANSACTION(ttTRUST_SET, 20, TrustSet,
|
|||||||
|
|
||||||
/** This transaction type deletes an existing account. */
|
/** This transaction type deletes an existing account. */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/account/DeleteAccount.h>
|
# include <xrpl/tx/transactors/account/AccountDelete.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttACCOUNT_DELETE, 21, AccountDelete,
|
TRANSACTION(ttACCOUNT_DELETE, 21, AccountDelete,
|
||||||
Delegation::notDelegable,
|
Delegation::notDelegable,
|
||||||
@@ -650,7 +650,7 @@ TRANSACTION(ttDID_DELETE, 50, DIDDelete,
|
|||||||
|
|
||||||
/** This transaction type creates an Oracle instance */
|
/** This transaction type creates an Oracle instance */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/oracle/SetOracle.h>
|
# include <xrpl/tx/transactors/oracle/OracleSet.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttORACLE_SET, 51, OracleSet,
|
TRANSACTION(ttORACLE_SET, 51, OracleSet,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
@@ -667,7 +667,7 @@ TRANSACTION(ttORACLE_SET, 51, OracleSet,
|
|||||||
|
|
||||||
/** This transaction type deletes an Oracle instance */
|
/** This transaction type deletes an Oracle instance */
|
||||||
#if TRANSACTION_INCLUDE
|
#if TRANSACTION_INCLUDE
|
||||||
# include <xrpl/tx/transactors/oracle/DeleteOracle.h>
|
# include <xrpl/tx/transactors/oracle/OracleDelete.h>
|
||||||
#endif
|
#endif
|
||||||
TRANSACTION(ttORACLE_DELETE, 52, OracleDelete,
|
TRANSACTION(ttORACLE_DELETE, 52, OracleDelete,
|
||||||
Delegation::delegable,
|
Delegation::delegable,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public:
|
|||||||
operator result_type() noexcept;
|
operator result_type() noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char ctx_[96];
|
char ctx_[96]{};
|
||||||
};
|
};
|
||||||
|
|
||||||
/** SHA-512 digest
|
/** SHA-512 digest
|
||||||
@@ -63,7 +63,7 @@ public:
|
|||||||
operator result_type() noexcept;
|
operator result_type() noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char ctx_[216];
|
char ctx_[216]{};
|
||||||
};
|
};
|
||||||
|
|
||||||
/** SHA-256 digest
|
/** SHA-256 digest
|
||||||
@@ -86,7 +86,7 @@ public:
|
|||||||
operator result_type() noexcept;
|
operator result_type() noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char ctx_[112];
|
char ctx_[112]{};
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ JSS(accounts); // in: LedgerEntry, Subscribe,
|
|||||||
// handlers/Ledger, Unsubscribe
|
// handlers/Ledger, Unsubscribe
|
||||||
JSS(accounts_proposed); // in: Subscribe, Unsubscribe
|
JSS(accounts_proposed); // in: Subscribe, Unsubscribe
|
||||||
JSS(action);
|
JSS(action);
|
||||||
|
JSS(active); // out: OverlayImpl
|
||||||
JSS(acquiring); // out: LedgerRequest
|
JSS(acquiring); // out: LedgerRequest
|
||||||
JSS(address); // out: PeerImp
|
JSS(address); // out: PeerImp
|
||||||
JSS(affected); // out: AcceptedLedgerTx
|
JSS(affected); // out: AcceptedLedgerTx
|
||||||
@@ -300,6 +301,7 @@ JSS(id); // websocket.
|
|||||||
JSS(ident); // in: AccountCurrencies, AccountInfo,
|
JSS(ident); // in: AccountCurrencies, AccountInfo,
|
||||||
// OwnerInfo
|
// OwnerInfo
|
||||||
JSS(ignore_default); // in: AccountLines
|
JSS(ignore_default); // in: AccountLines
|
||||||
|
JSS(in); // out: OverlayImpl
|
||||||
JSS(inLedger); // out: tx/Transaction
|
JSS(inLedger); // out: tx/Transaction
|
||||||
JSS(inbound); // out: PeerImp
|
JSS(inbound); // out: PeerImp
|
||||||
JSS(index); // in: LedgerEntry
|
JSS(index); // in: LedgerEntry
|
||||||
@@ -464,6 +466,7 @@ JSS(open_ledger_level); // out: TxQ
|
|||||||
JSS(optionality); // out: server_definitions
|
JSS(optionality); // out: server_definitions
|
||||||
JSS(oracles); // in: get_aggregate_price
|
JSS(oracles); // in: get_aggregate_price
|
||||||
JSS(oracle_document_id); // in: get_aggregate_price
|
JSS(oracle_document_id); // in: get_aggregate_price
|
||||||
|
JSS(out); // out: OverlayImpl
|
||||||
JSS(owner); // in: LedgerEntry, out: NetworkOPs
|
JSS(owner); // in: LedgerEntry, out: NetworkOPs
|
||||||
JSS(owner_funds); // in/out: Ledger, NetworkOPs, AcceptedLedgerTx
|
JSS(owner_funds); // in/out: Ledger, NetworkOPs, AcceptedLedgerTx
|
||||||
JSS(page_index);
|
JSS(page_index);
|
||||||
|
|||||||
152
include/xrpl/protocol_autogen/LedgerEntryBase.h
Normal file
152
include/xrpl/protocol_autogen/LedgerEntryBase.h
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/LedgerFormats.h>
|
||||||
|
#include <xrpl/protocol/SField.h>
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol_autogen/STObjectValidation.h>
|
||||||
|
#include <xrpl/protocol_autogen/Utils.h>
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Base class for type-safe ledger entry wrappers.
|
||||||
|
*
|
||||||
|
* This class provides common functionality for all ledger entry types,
|
||||||
|
* including access to common fields (sfLedgerIndex, sfLedgerEntryType, sfFlags).
|
||||||
|
*
|
||||||
|
* This is an immutable wrapper around SLE (Serialized Ledger Entry).
|
||||||
|
* Use the corresponding Builder classes to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a ledger entry wrapper from an existing SLE object.
|
||||||
|
* @param sle The underlying serialized ledger entry to wrap
|
||||||
|
*/
|
||||||
|
explicit LedgerEntryBase(std::shared_ptr<SLE const> sle) : sle_(std::move(sle))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Validate the ledger entry
|
||||||
|
* @return true if validation passes, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
validate() const
|
||||||
|
{
|
||||||
|
if (!sle_->isFieldPresent(sfLedgerEntryType))
|
||||||
|
{
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
}
|
||||||
|
auto ledgerEntryType = static_cast<LedgerEntryType>(sle_->getFieldU16(sfLedgerEntryType));
|
||||||
|
return protocol_autogen::validateSTObject(
|
||||||
|
*sle_, LedgerFormats::getInstance().findByType(ledgerEntryType)->getSOTemplate());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the ledger entry type.
|
||||||
|
* @return The type of this ledger entry
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
LedgerEntryType
|
||||||
|
getType() const
|
||||||
|
{
|
||||||
|
return sle_->getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the key (index) of this ledger entry.
|
||||||
|
*
|
||||||
|
* The key uniquely identifies this ledger entry in the ledger state.
|
||||||
|
* @return A constant reference to the 256-bit key
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
uint256 const&
|
||||||
|
getKey() const
|
||||||
|
{
|
||||||
|
return sle_->key();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Common field getters (from LedgerFormats.cpp commonFields)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the ledger index (sfLedgerIndex).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and represents the index of the ledger entry.
|
||||||
|
* @return The ledger index if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint256>
|
||||||
|
getLedgerIndex() const
|
||||||
|
{
|
||||||
|
if (sle_->isFieldPresent(sfLedgerIndex))
|
||||||
|
{
|
||||||
|
return sle_->at(sfLedgerIndex);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the ledger entry has a ledger index.
|
||||||
|
* @return true if sfLedgerIndex is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLedgerIndex() const
|
||||||
|
{
|
||||||
|
return sle_->isFieldPresent(sfLedgerIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the ledger entry type field (sfLedgerEntryType).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all ledger entries and indicates the type
|
||||||
|
* of the ledger entry (e.g., AccountRoot, RippleState, Offer, etc.).
|
||||||
|
* @return The ledger entry type as a 16-bit unsigned integer
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
uint16_t
|
||||||
|
getLedgerEntryType() const
|
||||||
|
{
|
||||||
|
return sle_->at(sfLedgerEntryType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the flags field (sfFlags).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all ledger entries and contains
|
||||||
|
* type-specific flags that modify the behavior of the ledger entry.
|
||||||
|
* @return The flags value as a 32-bit unsigned integer
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::uint32_t
|
||||||
|
getFlags() const
|
||||||
|
{
|
||||||
|
return sle_->at(sfFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the underlying SLE object.
|
||||||
|
*
|
||||||
|
* Provides direct access to the wrapped serialized ledger entry object
|
||||||
|
* for cases where the type-safe accessors are insufficient.
|
||||||
|
* @return A constant reference to the underlying SLE object
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::shared_ptr<SLE const>
|
||||||
|
getSle() const
|
||||||
|
{
|
||||||
|
return sle_;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/** @brief The underlying serialized ledger entry being wrapped. */
|
||||||
|
std::shared_ptr<SLE const> sle_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
84
include/xrpl/protocol_autogen/LedgerEntryBuilderBase.h
Normal file
84
include/xrpl/protocol_autogen/LedgerEntryBuilderBase.h
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/LedgerFormats.h>
|
||||||
|
#include <xrpl/protocol/SField.h>
|
||||||
|
#include <xrpl/protocol/STAccount.h>
|
||||||
|
#include <xrpl/protocol/STAmount.h>
|
||||||
|
#include <xrpl/protocol/STBlob.h>
|
||||||
|
#include <xrpl/protocol/STInteger.h>
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STObject.h>
|
||||||
|
#include <xrpl/protocol_autogen/STObjectValidation.h>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for all ledger entry builders.
|
||||||
|
* Provides common field setters that are available for all ledger entry types.
|
||||||
|
*/
|
||||||
|
template <typename Derived>
|
||||||
|
class LedgerEntryBuilderBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LedgerEntryBuilderBase() = default;
|
||||||
|
|
||||||
|
LedgerEntryBuilderBase(
|
||||||
|
SF_UINT16::type::value_type ledgerEntryType,
|
||||||
|
SF_UINT32::type::value_type flags = 0)
|
||||||
|
{
|
||||||
|
// Don't call object_.set(soTemplate) - keep object_ as a free object.
|
||||||
|
// This avoids creating STBase placeholders for soeDEFAULT fields,
|
||||||
|
// which would cause applyTemplate() to throw "may not be explicitly
|
||||||
|
// set to default" when building the SLE.
|
||||||
|
// The SLE constructor will call applyTemplate() which properly
|
||||||
|
// handles missing fields.
|
||||||
|
object_[sfLedgerEntryType] = ledgerEntryType;
|
||||||
|
object_[sfFlags] = flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Validate the ledger entry
|
||||||
|
* @return true if validation passes, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
validate() const
|
||||||
|
{
|
||||||
|
if (!object_.isFieldPresent(sfLedgerEntryType))
|
||||||
|
{
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
}
|
||||||
|
auto ledgerEntryType = static_cast<LedgerEntryType>(object_.getFieldU16(sfLedgerEntryType));
|
||||||
|
return protocol_autogen::validateSTObject(
|
||||||
|
object_, LedgerFormats::getInstance().findByType(ledgerEntryType)->getSOTemplate());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the ledger index.
|
||||||
|
* @param value Ledger index
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setLedgerIndex(uint256 const& value)
|
||||||
|
{
|
||||||
|
object_[sfLedgerIndex] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the flags.
|
||||||
|
* @param value Flags value
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setFlags(uint32_t value)
|
||||||
|
{
|
||||||
|
object_.setFieldU32(sfFlags, value);
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
STObject object_{sfLedgerEntry};
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
79
include/xrpl/protocol_autogen/README.md
Normal file
79
include/xrpl/protocol_autogen/README.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Protocol Autogen
|
||||||
|
|
||||||
|
This directory contains auto-generated C++ wrapper classes for XRP Ledger protocol types.
|
||||||
|
|
||||||
|
## Generated Files
|
||||||
|
|
||||||
|
The files in this directory are automatically generated at **CMake configure time** from macro definition files:
|
||||||
|
|
||||||
|
- **Transaction classes** (in `transactions/`): Generated from `include/xrpl/protocol/detail/transactions.macro` by `scripts/generate_tx_classes.py`
|
||||||
|
- **Ledger entry classes** (in `ledger_entries/`): Generated from `include/xrpl/protocol/detail/ledger_entries.macro` by `scripts/generate_ledger_classes.py`
|
||||||
|
|
||||||
|
## Generation Process
|
||||||
|
|
||||||
|
The generation happens automatically when you **configure** the project (not during build). When you run CMake, the system:
|
||||||
|
|
||||||
|
1. Creates a Python virtual environment in the build directory (`codegen_venv`)
|
||||||
|
2. Installs Python dependencies from `scripts/requirements.txt` into the venv (only if needed)
|
||||||
|
3. Runs the Python generation scripts using the venv Python interpreter
|
||||||
|
4. Parses the macro files to extract type definitions
|
||||||
|
5. Generates type-safe C++ wrapper classes using Mako templates
|
||||||
|
6. Places the generated headers in this directory
|
||||||
|
|
||||||
|
### When Regeneration Happens
|
||||||
|
|
||||||
|
The code is regenerated when:
|
||||||
|
|
||||||
|
- You run CMake configure for the first time
|
||||||
|
- The Python virtual environment doesn't exist
|
||||||
|
- `scripts/requirements.txt` has been modified
|
||||||
|
|
||||||
|
To force regeneration, delete the build directory and reconfigure.
|
||||||
|
|
||||||
|
### Python Dependencies
|
||||||
|
|
||||||
|
The code generation requires the following Python packages (automatically installed):
|
||||||
|
|
||||||
|
- `pcpp` - C preprocessor for Python
|
||||||
|
- `pyparsing` - Parser combinator library
|
||||||
|
- `Mako` - Template engine
|
||||||
|
|
||||||
|
These are isolated in a virtual environment and won't affect your system Python installation.
|
||||||
|
|
||||||
|
## Version Control
|
||||||
|
|
||||||
|
The generated `.h` files **are checked into version control**. This means:
|
||||||
|
|
||||||
|
- Developers without Python 3 can still build the project using the committed files
|
||||||
|
- CI/CD systems don't need to run code generation if files are up to date
|
||||||
|
- Changes to generated files are visible in code review
|
||||||
|
|
||||||
|
## Modifying Generated Code
|
||||||
|
|
||||||
|
**Do not manually edit generated files.** Any changes will be overwritten the next time CMake configure runs.
|
||||||
|
|
||||||
|
To modify the generated classes:
|
||||||
|
|
||||||
|
- Edit the macro files in `include/xrpl/protocol/detail/`
|
||||||
|
- Edit the Mako templates in `scripts/templates/`
|
||||||
|
- Edit the generation scripts in `scripts/`
|
||||||
|
- Update Python dependencies in `scripts/requirements.txt`
|
||||||
|
- Run CMake configure to regenerate
|
||||||
|
|
||||||
|
## Adding Common Fields
|
||||||
|
|
||||||
|
If you add a new common field to `TxFormats.cpp` or `LedgerFormats.cpp`, you should also update the corresponding base classes and templates manually:
|
||||||
|
|
||||||
|
Base classes:
|
||||||
|
|
||||||
|
- `TransactionBase.h` - Add getters for new common transaction fields
|
||||||
|
- `TransactionBuilderBase.h` - Add setters, and if the field is required, add it to the constructor parameters
|
||||||
|
- `LedgerEntryBase.h` - Add getters for new common ledger entry fields
|
||||||
|
- `LedgerEntryBuilderBase.h` - Add setters, and if the field is required, add it to the constructor parameters
|
||||||
|
|
||||||
|
Templates (update to pass required common fields to base class constructors):
|
||||||
|
|
||||||
|
- `scripts/templates/Transaction.h.mako`
|
||||||
|
- `scripts/templates/LedgerEntry.h.mako`
|
||||||
|
|
||||||
|
These files are **not auto-generated** and must be updated by hand.
|
||||||
43
include/xrpl/protocol_autogen/STObjectValidation.h
Normal file
43
include/xrpl/protocol_autogen/STObjectValidation.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/SOTemplate.h>
|
||||||
|
#include <xrpl/protocol/STObject.h>
|
||||||
|
|
||||||
|
namespace xrpl::protocol_autogen {
|
||||||
|
|
||||||
|
[[nodiscard]]
|
||||||
|
inline bool
|
||||||
|
validateSTObject(STObject const& obj, SOTemplate const& format)
|
||||||
|
{
|
||||||
|
for (auto const& field : format)
|
||||||
|
{
|
||||||
|
if (!obj.isFieldPresent(field.sField()) && field.style() == soeREQUIRED)
|
||||||
|
{
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
}
|
||||||
|
|
||||||
|
if (field.supportMPT() == soeMPTNotSupported && obj.isFieldPresent(field.sField()))
|
||||||
|
{
|
||||||
|
if (field.sField().fieldType == STI_AMOUNT)
|
||||||
|
{
|
||||||
|
auto const& amount = obj.getFieldAmount(field.sField());
|
||||||
|
|
||||||
|
if (amount.asset().holds<MPTIssue>())
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
}
|
||||||
|
else if (field.sField().fieldType == STI_ISSUE)
|
||||||
|
{
|
||||||
|
auto issue = dynamic_cast<STIssue const*>(obj.peekAtPField(field.sField()));
|
||||||
|
if (!issue)
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
|
||||||
|
if (issue->holds<MPTIssue>())
|
||||||
|
return false; // LCOV_EXCL_LINE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace xrpl::protocol_autogen
|
||||||
457
include/xrpl/protocol_autogen/TransactionBase.h
Normal file
457
include/xrpl/protocol_autogen/TransactionBase.h
Normal file
@@ -0,0 +1,457 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/SField.h>
|
||||||
|
#include <xrpl/protocol/STAccount.h>
|
||||||
|
#include <xrpl/protocol/STArray.h>
|
||||||
|
#include <xrpl/protocol/STObject.h>
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/TxFormats.h>
|
||||||
|
#include <xrpl/protocol_autogen/STObjectValidation.h>
|
||||||
|
#include <xrpl/protocol_autogen/Utils.h>
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Base class for all transaction wrapper types.
|
||||||
|
*
|
||||||
|
* Provides type-safe read-only accessors for common transaction fields.
|
||||||
|
* This is an immutable wrapper around STTx. Use the corresponding Builder classes
|
||||||
|
* to construct new transactions.
|
||||||
|
*/
|
||||||
|
class TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a transaction wrapper from an existing STTx object.
|
||||||
|
* @param tx The underlying transaction object to wrap
|
||||||
|
*/
|
||||||
|
explicit TransactionBase(std::shared_ptr<STTx const> tx) : tx_(std::move(tx))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Validate the transaction
|
||||||
|
* @return true if validation passes, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
validate(std::string& reason) const
|
||||||
|
{
|
||||||
|
if (!protocol_autogen::validateSTObject(
|
||||||
|
*tx_, TxFormats::getInstance().findByType(tx_->getTxnType())->getSOTemplate()))
|
||||||
|
{
|
||||||
|
// LCOV_EXCL_START
|
||||||
|
reason = "Transaction failed schema validation";
|
||||||
|
return false;
|
||||||
|
// LCOV_EXCL_STOP
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pseudo transactions are not submitted to the network
|
||||||
|
if (isPseudoTx(*tx_))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return passesLocalChecks(*tx_, reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the transaction type.
|
||||||
|
* @return The type of this transaction
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
xrpl::TxType
|
||||||
|
getTransactionType() const
|
||||||
|
{
|
||||||
|
return tx_->getTxnType();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the account initiating the transaction (sfAccount).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all transactions.
|
||||||
|
* @return The account ID of the transaction sender
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
AccountID
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return tx_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the sequence number of the transaction (sfSequence).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all transactions.
|
||||||
|
* @return The sequence number
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::uint32_t
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return tx_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the transaction fee (sfFee).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all transactions.
|
||||||
|
* @return The fee amount
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STAmount
|
||||||
|
getFee() const
|
||||||
|
{
|
||||||
|
return tx_->at(sfFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the signing public key (sfSigningPubKey).
|
||||||
|
*
|
||||||
|
* This field is REQUIRED for all transactions.
|
||||||
|
* @return The public key used for signing as a blob
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
Blob
|
||||||
|
getSigningPubKey() const
|
||||||
|
{
|
||||||
|
return tx_->getFieldVL(sfSigningPubKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the transaction flags (sfFlags).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL.
|
||||||
|
* @return The flags value if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getFlags() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfFlags))
|
||||||
|
return tx_->at(sfFlags);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has flags set.
|
||||||
|
* @return true if sfFlags is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasFlags() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfFlags);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the source tag (sfSourceTag).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and used to identify the source of a payment.
|
||||||
|
* @return The source tag value if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getSourceTag() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfSourceTag))
|
||||||
|
return tx_->at(sfSourceTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a source tag.
|
||||||
|
* @return true if sfSourceTag is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSourceTag() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfSourceTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the previous transaction ID (sfPreviousTxnID).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and used for transaction chaining.
|
||||||
|
* @return The previous transaction ID if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint256>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfPreviousTxnID))
|
||||||
|
return tx_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a previous transaction ID.
|
||||||
|
* @return true if sfPreviousTxnID is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the last ledger sequence (sfLastLedgerSequence).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and specifies the latest ledger sequence
|
||||||
|
* in which this transaction can be included.
|
||||||
|
* @return The last ledger sequence if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getLastLedgerSequence() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfLastLedgerSequence))
|
||||||
|
return tx_->at(sfLastLedgerSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a last ledger sequence.
|
||||||
|
* @return true if sfLastLedgerSequence is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLastLedgerSequence() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfLastLedgerSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the account transaction ID (sfAccountTxnID).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and used to track transaction sequences.
|
||||||
|
* @return The account transaction ID if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint256>
|
||||||
|
getAccountTxnID() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfAccountTxnID))
|
||||||
|
return tx_->at(sfAccountTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has an account transaction ID.
|
||||||
|
* @return true if sfAccountTxnID is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAccountTxnID() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfAccountTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the operation limit (sfOperationLimit).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and limits the number of operations in a transaction.
|
||||||
|
* @return The operation limit if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getOperationLimit() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfOperationLimit))
|
||||||
|
return tx_->at(sfOperationLimit);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has an operation limit.
|
||||||
|
* @return true if sfOperationLimit is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOperationLimit() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfOperationLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the memos array (sfMemos).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and contains arbitrary data attached to the transaction.
|
||||||
|
* @note This is an untyped field (STArray).
|
||||||
|
* @return A reference wrapper to the memos array if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getMemos() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfMemos))
|
||||||
|
return tx_->getFieldArray(sfMemos);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has memos.
|
||||||
|
* @return true if sfMemos is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMemos() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfMemos);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the ticket sequence (sfTicketSequence).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and used when consuming a ticket instead of a sequence number.
|
||||||
|
* @return The ticket sequence if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getTicketSequence() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfTicketSequence))
|
||||||
|
return tx_->at(sfTicketSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a ticket sequence.
|
||||||
|
* @return true if sfTicketSequence is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTicketSequence() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfTicketSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the transaction signature (sfTxnSignature).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and contains the signature for single-signed transactions.
|
||||||
|
* @return The transaction signature as a blob if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<Blob>
|
||||||
|
getTxnSignature() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfTxnSignature))
|
||||||
|
return tx_->getFieldVL(sfTxnSignature);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a transaction signature.
|
||||||
|
* @return true if sfTxnSignature is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTxnSignature() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfTxnSignature);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the signers array (sfSigners).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and contains the list of signers for multi-signed transactions.
|
||||||
|
* @note This is an untyped field (STArray).
|
||||||
|
* @return A reference wrapper to the signers array if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getSigners() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfSigners))
|
||||||
|
return tx_->getFieldArray(sfSigners);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has signers.
|
||||||
|
* @return true if sfSigners is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSigners() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfSigners);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the network ID (sfNetworkID).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and identifies the network this transaction is intended for.
|
||||||
|
* @return The network ID if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<uint32_t>
|
||||||
|
getNetworkID() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfNetworkID))
|
||||||
|
return tx_->at(sfNetworkID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a network ID.
|
||||||
|
* @return true if sfNetworkID is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNetworkID() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfNetworkID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the delegate account (sfDelegate).
|
||||||
|
*
|
||||||
|
* This field is OPTIONAL and specifies a delegate account for the transaction.
|
||||||
|
* @return The delegate account ID if present, std::nullopt otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<AccountID>
|
||||||
|
getDelegate() const
|
||||||
|
{
|
||||||
|
if (tx_->isFieldPresent(sfDelegate))
|
||||||
|
return tx_->at(sfDelegate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if the transaction has a delegate account.
|
||||||
|
* @return true if sfDelegate is present, false otherwise
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDelegate() const
|
||||||
|
{
|
||||||
|
return tx_->isFieldPresent(sfDelegate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the underlying STTx object.
|
||||||
|
*
|
||||||
|
* Provides direct access to the wrapped transaction object for cases
|
||||||
|
* where the type-safe accessors are insufficient.
|
||||||
|
* @return A constant reference to the underlying STTx object
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::shared_ptr<STTx const>
|
||||||
|
getSTTx() const
|
||||||
|
{
|
||||||
|
return tx_;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/** @brief The underlying transaction object being wrapped. */
|
||||||
|
std::shared_ptr<STTx const> tx_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
269
include/xrpl/protocol_autogen/TransactionBuilderBase.h
Normal file
269
include/xrpl/protocol_autogen/TransactionBuilderBase.h
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/HashPrefix.h>
|
||||||
|
#include <xrpl/protocol/PublicKey.h>
|
||||||
|
#include <xrpl/protocol/SField.h>
|
||||||
|
#include <xrpl/protocol/STAccount.h>
|
||||||
|
#include <xrpl/protocol/STAmount.h>
|
||||||
|
#include <xrpl/protocol/STArray.h>
|
||||||
|
#include <xrpl/protocol/STBlob.h>
|
||||||
|
#include <xrpl/protocol/STInteger.h>
|
||||||
|
#include <xrpl/protocol/STObject.h>
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STXChainBridge.h>
|
||||||
|
#include <xrpl/protocol/SecretKey.h>
|
||||||
|
#include <xrpl/protocol/Serializer.h>
|
||||||
|
#include <xrpl/protocol/TxFormats.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for all transaction builders.
|
||||||
|
* Provides common field setters that are available for all transaction types.
|
||||||
|
*/
|
||||||
|
template <typename Derived>
|
||||||
|
class TransactionBuilderBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TransactionBuilderBase() = default;
|
||||||
|
|
||||||
|
TransactionBuilderBase(
|
||||||
|
SF_UINT16::type::value_type transactionType,
|
||||||
|
SF_ACCOUNT::type::value_type account,
|
||||||
|
std::optional<SF_UINT32::type::value_type> sequence,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee)
|
||||||
|
{
|
||||||
|
// Don't call object_.set(soTemplate) - keep object_ as a free object.
|
||||||
|
// This avoids creating STBase placeholders for soeDEFAULT fields,
|
||||||
|
// which would cause applyTemplate() to throw "may not be explicitly
|
||||||
|
// set to default" when building the STTx.
|
||||||
|
// The STTx constructor will call applyTemplate() which properly
|
||||||
|
// handles missing fields.
|
||||||
|
object_[sfTransactionType] = transactionType;
|
||||||
|
setAccount(account);
|
||||||
|
|
||||||
|
if (sequence)
|
||||||
|
{
|
||||||
|
setSequence(*sequence);
|
||||||
|
}
|
||||||
|
if (fee)
|
||||||
|
{
|
||||||
|
setFee(*fee);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the account that is sending the transaction.
|
||||||
|
* @param value Account address (typically as a string)
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setAccount(AccountID const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the transaction fee.
|
||||||
|
* @param value Fee in drops (typically as a string or number)
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setFee(STAmount const& value)
|
||||||
|
{
|
||||||
|
object_[sfFee] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the sequence number.
|
||||||
|
* @param value Sequence number
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setSequence(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the ticket sequence to use for this transaction.
|
||||||
|
* When using a ticket, the regular sequence number is set to 0.
|
||||||
|
* @param value Ticket sequence number
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setTicketSequence(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = 0u;
|
||||||
|
object_[sfTicketSequence] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set transaction flags.
|
||||||
|
* @param value Flags value
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setFlags(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfFlags] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the source tag.
|
||||||
|
* @param value Source tag
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setSourceTag(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfSourceTag] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the last ledger sequence.
|
||||||
|
* @param value Last ledger sequence number
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setLastLedgerSequence(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfLastLedgerSequence] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the account transaction ID.
|
||||||
|
* @param value Account transaction ID (typically as a hex string)
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setAccountTxnID(uint256 const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccountTxnID] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the previous transaction ID.
|
||||||
|
* Used for emulate027 compatibility.
|
||||||
|
* @param value Previous transaction ID
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setPreviousTxnID(uint256 const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the operation limit.
|
||||||
|
* @param value Operation limit
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setOperationLimit(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfOperationLimit] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the memos array.
|
||||||
|
* @param value Array of memo objects
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setMemos(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfMemos, value);
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the signers array for multi-signing.
|
||||||
|
* @param value Array of signer objects
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setSigners(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfSigners, value);
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the network ID.
|
||||||
|
* @param value Network ID
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setNetworkID(std::uint32_t const& value)
|
||||||
|
{
|
||||||
|
object_[sfNetworkID] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the delegate account for delegated transactions.
|
||||||
|
* @param value Delegate account ID
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
setDelegate(AccountID const& value)
|
||||||
|
{
|
||||||
|
object_[sfDelegate] = value;
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the underlying STObject.
|
||||||
|
* @return The STObject
|
||||||
|
*/
|
||||||
|
STObject const&
|
||||||
|
getSTObject() const
|
||||||
|
{
|
||||||
|
return object_;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* Sign the transaction with the given keys.
|
||||||
|
*
|
||||||
|
* This sets the SigningPubKey field and computes the TxnSignature.
|
||||||
|
*
|
||||||
|
* @param publicKey The public key for signing
|
||||||
|
* @param secretKey The secret key for signing
|
||||||
|
* @return Reference to the derived builder for method chaining.
|
||||||
|
*/
|
||||||
|
Derived&
|
||||||
|
sign(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
// Set the signing public key
|
||||||
|
object_.setFieldVL(sfSigningPubKey, publicKey.slice());
|
||||||
|
|
||||||
|
// Build the signing data: HashPrefix::txSign + serialized object
|
||||||
|
// (without signing fields)
|
||||||
|
Serializer s;
|
||||||
|
s.add32(HashPrefix::txSign);
|
||||||
|
object_.addWithoutSigningFields(s);
|
||||||
|
|
||||||
|
// Sign and set the signature
|
||||||
|
auto const sig = xrpl::sign(publicKey, secretKey, s.slice());
|
||||||
|
object_.setFieldVL(sfTxnSignature, sig);
|
||||||
|
|
||||||
|
return static_cast<Derived&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
STObject object_{sfTransaction};
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
14
include/xrpl/protocol_autogen/Utils.h
Normal file
14
include/xrpl/protocol_autogen/Utils.h
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
namespace xrpl::protocol_autogen {
|
||||||
|
|
||||||
|
template <typename ValueType>
|
||||||
|
using Optional = std::conditional_t<
|
||||||
|
std::is_reference_v<ValueType>,
|
||||||
|
std::optional<std::reference_wrapper<std::remove_reference_t<ValueType>>>,
|
||||||
|
std::optional<ValueType>>;
|
||||||
|
|
||||||
|
}
|
||||||
392
include/xrpl/protocol_autogen/ledger_entries/AMM.h
Normal file
392
include/xrpl/protocol_autogen/ledger_entries/AMM.h
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class AMMBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: AMM
|
||||||
|
*
|
||||||
|
* Type: ltAMM (0x0079)
|
||||||
|
* RPC Name: amm
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use AMMBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class AMM : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltAMM;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMM ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMM(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for AMM");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTradingFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT16::type::value_type>
|
||||||
|
getTradingFee() const
|
||||||
|
{
|
||||||
|
if (hasTradingFee())
|
||||||
|
return this->sle_->at(sfTradingFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTradingFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTradingFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTradingFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfVoteSlots (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getVoteSlots() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfVoteSlots))
|
||||||
|
return this->sle_->getFieldArray(sfVoteSlots);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfVoteSlots is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasVoteSlots() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfVoteSlots);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAuctionSlot (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<STObject>
|
||||||
|
getAuctionSlot() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfAuctionSlot))
|
||||||
|
return this->sle_->getFieldObject(sfAuctionSlot);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAuctionSlot is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAuctionSlot() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAuctionSlot);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLPTokenBalance (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getLPTokenBalance() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLPTokenBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnID())
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnLgrSeq())
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnLgrSeq is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMM ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMBuilder : public LedgerEntryBuilderBase<AMMBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param lPTokenBalance The sfLPTokenBalance field value.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
*/
|
||||||
|
AMMBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_AMOUNT::type::value_type> const& lPTokenBalance,std::decay_t<typename SF_ISSUE::type::value_type> const& asset,std::decay_t<typename SF_ISSUE::type::value_type> const& asset2,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode)
|
||||||
|
: LedgerEntryBuilderBase<AMMBuilder>(ltAMM)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setLPTokenBalance(lPTokenBalance);
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltAMM)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for AMM");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTradingFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setTradingFee(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTradingFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfVoteSlots (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setVoteSlots(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfVoteSlots, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAuctionSlot (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setAuctionSlot(STObject const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldObject(sfAuctionSlot, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLPTokenBalance (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setLPTokenBalance(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLPTokenBalance] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed AMM wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
AMM
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return AMM{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
834
include/xrpl/protocol_autogen/ledger_entries/AccountRoot.h
Normal file
834
include/xrpl/protocol_autogen/ledger_entries/AccountRoot.h
Normal file
@@ -0,0 +1,834 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class AccountRootBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: AccountRoot
|
||||||
|
*
|
||||||
|
* Type: ltACCOUNT_ROOT (0x0061)
|
||||||
|
* RPC Name: account
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use AccountRootBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class AccountRoot : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltACCOUNT_ROOT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountRoot ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AccountRoot(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for AccountRoot");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBalance (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getBalance() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerCount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getOwnerCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccountTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getAccountTxnID() const
|
||||||
|
{
|
||||||
|
if (hasAccountTxnID())
|
||||||
|
return this->sle_->at(sfAccountTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAccountTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAccountTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAccountTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfRegularKey (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getRegularKey() const
|
||||||
|
{
|
||||||
|
if (hasRegularKey())
|
||||||
|
return this->sle_->at(sfRegularKey);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfRegularKey is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasRegularKey() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfRegularKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfEmailHash (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT128::type::value_type>
|
||||||
|
getEmailHash() const
|
||||||
|
{
|
||||||
|
if (hasEmailHash())
|
||||||
|
return this->sle_->at(sfEmailHash);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfEmailHash is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasEmailHash() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfEmailHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfWalletLocator (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getWalletLocator() const
|
||||||
|
{
|
||||||
|
if (hasWalletLocator())
|
||||||
|
return this->sle_->at(sfWalletLocator);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfWalletLocator is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasWalletLocator() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfWalletLocator);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfWalletSize (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getWalletSize() const
|
||||||
|
{
|
||||||
|
if (hasWalletSize())
|
||||||
|
return this->sle_->at(sfWalletSize);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfWalletSize is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasWalletSize() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfWalletSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMessageKey (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getMessageKey() const
|
||||||
|
{
|
||||||
|
if (hasMessageKey())
|
||||||
|
return this->sle_->at(sfMessageKey);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMessageKey is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMessageKey() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMessageKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getTransferRate() const
|
||||||
|
{
|
||||||
|
if (hasTransferRate())
|
||||||
|
return this->sle_->at(sfTransferRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTransferRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTransferRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTransferRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDomain (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getDomain() const
|
||||||
|
{
|
||||||
|
if (hasDomain())
|
||||||
|
return this->sle_->at(sfDomain);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDomain is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDomain() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDomain);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTickSize (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT8::type::value_type>
|
||||||
|
getTickSize() const
|
||||||
|
{
|
||||||
|
if (hasTickSize())
|
||||||
|
return this->sle_->at(sfTickSize);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTickSize is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTickSize() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTickSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTicketCount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getTicketCount() const
|
||||||
|
{
|
||||||
|
if (hasTicketCount())
|
||||||
|
return this->sle_->at(sfTicketCount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTicketCount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTicketCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTicketCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokenMinter (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getNFTokenMinter() const
|
||||||
|
{
|
||||||
|
if (hasNFTokenMinter())
|
||||||
|
return this->sle_->at(sfNFTokenMinter);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfNFTokenMinter is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNFTokenMinter() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfNFTokenMinter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMintedNFTokens (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getMintedNFTokens() const
|
||||||
|
{
|
||||||
|
if (hasMintedNFTokens())
|
||||||
|
return this->sle_->at(sfMintedNFTokens);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMintedNFTokens is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMintedNFTokens() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMintedNFTokens);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBurnedNFTokens (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getBurnedNFTokens() const
|
||||||
|
{
|
||||||
|
if (hasBurnedNFTokens())
|
||||||
|
return this->sle_->at(sfBurnedNFTokens);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBurnedNFTokens is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBurnedNFTokens() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfBurnedNFTokens);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfFirstNFTokenSequence (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getFirstNFTokenSequence() const
|
||||||
|
{
|
||||||
|
if (hasFirstNFTokenSequence())
|
||||||
|
return this->sle_->at(sfFirstNFTokenSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfFirstNFTokenSequence is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasFirstNFTokenSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfFirstNFTokenSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAMMID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getAMMID() const
|
||||||
|
{
|
||||||
|
if (hasAMMID())
|
||||||
|
return this->sle_->at(sfAMMID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAMMID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAMMID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAMMID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfVaultID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getVaultID() const
|
||||||
|
{
|
||||||
|
if (hasVaultID())
|
||||||
|
return this->sle_->at(sfVaultID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfVaultID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasVaultID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfVaultID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanBrokerID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getLoanBrokerID() const
|
||||||
|
{
|
||||||
|
if (hasLoanBrokerID())
|
||||||
|
return this->sle_->at(sfLoanBrokerID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLoanBrokerID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLoanBrokerID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLoanBrokerID);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AccountRoot ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class AccountRootBuilder : public LedgerEntryBuilderBase<AccountRootBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AccountRootBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param balance The sfBalance field value.
|
||||||
|
* @param ownerCount The sfOwnerCount field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_AMOUNT::type::value_type> const& balance,std::decay_t<typename SF_UINT32::type::value_type> const& ownerCount,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<AccountRootBuilder>(ltACCOUNT_ROOT)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setSequence(sequence);
|
||||||
|
setBalance(balance);
|
||||||
|
setOwnerCount(ownerCount);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountRootBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltACCOUNT_ROOT)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for AccountRoot");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBalance (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setBalance(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBalance] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerCount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setOwnerCount(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccountTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setAccountTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccountTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfRegularKey (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setRegularKey(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfRegularKey] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfEmailHash (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setEmailHash(std::decay_t<typename SF_UINT128::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfEmailHash] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfWalletLocator (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setWalletLocator(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfWalletLocator] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfWalletSize (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setWalletSize(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfWalletSize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMessageKey (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setMessageKey(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMessageKey] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setTransferRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTransferRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDomain (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setDomain(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDomain] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTickSize (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setTickSize(std::decay_t<typename SF_UINT8::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTickSize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTicketCount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setTicketCount(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTicketCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokenMinter (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setNFTokenMinter(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNFTokenMinter] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMintedNFTokens (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setMintedNFTokens(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMintedNFTokens] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBurnedNFTokens (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setBurnedNFTokens(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBurnedNFTokens] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfFirstNFTokenSequence (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setFirstNFTokenSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfFirstNFTokenSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAMMID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setAMMID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAMMID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfVaultID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setVaultID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfVaultID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanBrokerID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountRootBuilder&
|
||||||
|
setLoanBrokerID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanBrokerID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed AccountRoot wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
AccountRoot
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return AccountRoot{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
236
include/xrpl/protocol_autogen/ledger_entries/Amendments.h
Normal file
236
include/xrpl/protocol_autogen/ledger_entries/Amendments.h
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class AmendmentsBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Amendments
|
||||||
|
*
|
||||||
|
* Type: ltAMENDMENTS (0x0066)
|
||||||
|
* RPC Name: amendments
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use AmendmentsBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Amendments : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltAMENDMENTS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Amendments ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Amendments(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Amendments");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmendments (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VECTOR256::type::value_type>
|
||||||
|
getAmendments() const
|
||||||
|
{
|
||||||
|
if (hasAmendments())
|
||||||
|
return this->sle_->at(sfAmendments);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmendments is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmendments() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAmendments);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMajorities (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getMajorities() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfMajorities))
|
||||||
|
return this->sle_->getFieldArray(sfMajorities);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMajorities is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMajorities() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMajorities);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnID())
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnLgrSeq())
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnLgrSeq is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Amendments ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class AmendmentsBuilder : public LedgerEntryBuilderBase<AmendmentsBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AmendmentsBuilder with required fields.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder()
|
||||||
|
: LedgerEntryBuilderBase<AmendmentsBuilder>(ltAMENDMENTS)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AmendmentsBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltAMENDMENTS)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Amendments");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmendments (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder&
|
||||||
|
setAmendments(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmendments] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMajorities (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder&
|
||||||
|
setMajorities(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfMajorities, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AmendmentsBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Amendments wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Amendments
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Amendments{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
346
include/xrpl/protocol_autogen/ledger_entries/Bridge.h
Normal file
346
include/xrpl/protocol_autogen/ledger_entries/Bridge.h
Normal file
@@ -0,0 +1,346 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class BridgeBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Bridge
|
||||||
|
*
|
||||||
|
* Type: ltBRIDGE (0x0069)
|
||||||
|
* RPC Name: bridge
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use BridgeBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Bridge : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltBRIDGE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Bridge ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Bridge(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Bridge");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSignatureReward (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getSignatureReward() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSignatureReward);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMinAccountCreateAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getMinAccountCreateAmount() const
|
||||||
|
{
|
||||||
|
if (hasMinAccountCreateAmount())
|
||||||
|
return this->sle_->at(sfMinAccountCreateAmount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMinAccountCreateAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMinAccountCreateAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMinAccountCreateAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_XCHAIN_BRIDGE::type::value_type
|
||||||
|
getXChainBridge() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainBridge);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainClaimID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getXChainClaimID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainClaimID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainAccountCreateCount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getXChainAccountCreateCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainAccountCreateCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainAccountClaimCount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getXChainAccountClaimCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainAccountClaimCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Bridge ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class BridgeBuilder : public LedgerEntryBuilderBase<BridgeBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new BridgeBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param signatureReward The sfSignatureReward field value.
|
||||||
|
* @param xChainBridge The sfXChainBridge field value.
|
||||||
|
* @param xChainClaimID The sfXChainClaimID field value.
|
||||||
|
* @param xChainAccountCreateCount The sfXChainAccountCreateCount field value.
|
||||||
|
* @param xChainAccountClaimCount The sfXChainAccountClaimCount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
BridgeBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_AMOUNT::type::value_type> const& signatureReward,std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& xChainBridge,std::decay_t<typename SF_UINT64::type::value_type> const& xChainClaimID,std::decay_t<typename SF_UINT64::type::value_type> const& xChainAccountCreateCount,std::decay_t<typename SF_UINT64::type::value_type> const& xChainAccountClaimCount,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<BridgeBuilder>(ltBRIDGE)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setSignatureReward(signatureReward);
|
||||||
|
setXChainBridge(xChainBridge);
|
||||||
|
setXChainClaimID(xChainClaimID);
|
||||||
|
setXChainAccountCreateCount(xChainAccountCreateCount);
|
||||||
|
setXChainAccountClaimCount(xChainAccountClaimCount);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a BridgeBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
BridgeBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltBRIDGE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Bridge");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSignatureReward (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setSignatureReward(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSignatureReward] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMinAccountCreateAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setMinAccountCreateAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMinAccountCreateAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setXChainBridge(std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainBridge] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainClaimID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setXChainClaimID(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainClaimID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainAccountCreateCount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setXChainAccountCreateCount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainAccountCreateCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainAccountClaimCount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setXChainAccountClaimCount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainAccountClaimCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BridgeBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Bridge wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Bridge
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Bridge{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
427
include/xrpl/protocol_autogen/ledger_entries/Check.h
Normal file
427
include/xrpl/protocol_autogen/ledger_entries/Check.h
Normal file
@@ -0,0 +1,427 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class CheckBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Check
|
||||||
|
*
|
||||||
|
* Type: ltCHECK (0x0043)
|
||||||
|
* RPC Name: check
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use CheckBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Check : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltCHECK;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Check ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Check(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Check");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSendMax (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getSendMax() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSendMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getDestinationNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfDestinationNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
return this->sle_->at(sfExpiration);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfInvoiceID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getInvoiceID() const
|
||||||
|
{
|
||||||
|
if (hasInvoiceID())
|
||||||
|
return this->sle_->at(sfInvoiceID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfInvoiceID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasInvoiceID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfInvoiceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSourceTag() const
|
||||||
|
{
|
||||||
|
if (hasSourceTag())
|
||||||
|
return this->sle_->at(sfSourceTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSourceTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSourceTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSourceTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getDestinationTag() const
|
||||||
|
{
|
||||||
|
if (hasDestinationTag())
|
||||||
|
return this->sle_->at(sfDestinationTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestinationTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Check ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class CheckBuilder : public LedgerEntryBuilderBase<CheckBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new CheckBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param destination The sfDestination field value.
|
||||||
|
* @param sendMax The sfSendMax field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param destinationNode The sfDestinationNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
CheckBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ACCOUNT::type::value_type> const& destination,std::decay_t<typename SF_AMOUNT::type::value_type> const& sendMax,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT64::type::value_type> const& destinationNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<CheckBuilder>(ltCHECK)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setDestination(destination);
|
||||||
|
setSendMax(sendMax);
|
||||||
|
setSequence(sequence);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setDestinationNode(destinationNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
CheckBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltCHECK)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Check");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSendMax (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setSendMax(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSendMax] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setDestinationNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfInvoiceID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setInvoiceID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfInvoiceID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setSourceTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSourceTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setDestinationTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Check wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Check
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Check{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
344
include/xrpl/protocol_autogen/ledger_entries/Credential.h
Normal file
344
include/xrpl/protocol_autogen/ledger_entries/Credential.h
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class CredentialBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Credential
|
||||||
|
*
|
||||||
|
* Type: ltCREDENTIAL (0x0081)
|
||||||
|
* RPC Name: credential
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use CredentialBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Credential : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltCREDENTIAL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Credential ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Credential(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Credential");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSubject (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getSubject() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSubject);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIssuer (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getIssuer() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfIssuer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCredentialType (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VL::type::value_type
|
||||||
|
getCredentialType() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfCredentialType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
return this->sle_->at(sfExpiration);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfURI (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getURI() const
|
||||||
|
{
|
||||||
|
if (hasURI())
|
||||||
|
return this->sle_->at(sfURI);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfURI is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasURI() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIssuerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getIssuerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfIssuerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSubjectNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getSubjectNode() const
|
||||||
|
{
|
||||||
|
if (hasSubjectNode())
|
||||||
|
return this->sle_->at(sfSubjectNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSubjectNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSubjectNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSubjectNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Credential ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class CredentialBuilder : public LedgerEntryBuilderBase<CredentialBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new CredentialBuilder with required fields.
|
||||||
|
* @param subject The sfSubject field value.
|
||||||
|
* @param issuer The sfIssuer field value.
|
||||||
|
* @param credentialType The sfCredentialType field value.
|
||||||
|
* @param issuerNode The sfIssuerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
CredentialBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& subject,std::decay_t<typename SF_ACCOUNT::type::value_type> const& issuer,std::decay_t<typename SF_VL::type::value_type> const& credentialType,std::decay_t<typename SF_UINT64::type::value_type> const& issuerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<CredentialBuilder>(ltCREDENTIAL)
|
||||||
|
{
|
||||||
|
setSubject(subject);
|
||||||
|
setIssuer(issuer);
|
||||||
|
setCredentialType(credentialType);
|
||||||
|
setIssuerNode(issuerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CredentialBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
CredentialBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltCREDENTIAL)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Credential");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSubject (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setSubject(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSubject] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIssuer (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setIssuer(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIssuer] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCredentialType (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setCredentialType(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCredentialType] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfURI (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setURI(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfURI] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIssuerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setIssuerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIssuerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSubjectNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setSubjectNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSubjectNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CredentialBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Credential wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Credential
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Credential{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
296
include/xrpl/protocol_autogen/ledger_entries/DID.h
Normal file
296
include/xrpl/protocol_autogen/ledger_entries/DID.h
Normal file
@@ -0,0 +1,296 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class DIDBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: DID
|
||||||
|
*
|
||||||
|
* Type: ltDID (0x0049)
|
||||||
|
* RPC Name: did
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use DIDBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class DID : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltDID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DID ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit DID(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DID");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDIDDocument (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getDIDDocument() const
|
||||||
|
{
|
||||||
|
if (hasDIDDocument())
|
||||||
|
return this->sle_->at(sfDIDDocument);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDIDDocument is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDIDDocument() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDIDDocument);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfURI (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getURI() const
|
||||||
|
{
|
||||||
|
if (hasURI())
|
||||||
|
return this->sle_->at(sfURI);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfURI is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasURI() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfData (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getData() const
|
||||||
|
{
|
||||||
|
if (hasData())
|
||||||
|
return this->sle_->at(sfData);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfData is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasData() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for DID ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class DIDBuilder : public LedgerEntryBuilderBase<DIDBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new DIDBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
DIDBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<DIDBuilder>(ltDID)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DIDBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
DIDBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltDID)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DID");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDIDDocument (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setDIDDocument(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDIDDocument] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfURI (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setURI(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfURI] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfData (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setData(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfData] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DIDBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed DID wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
DID
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return DID{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
240
include/xrpl/protocol_autogen/ledger_entries/Delegate.h
Normal file
240
include/xrpl/protocol_autogen/ledger_entries/Delegate.h
Normal file
@@ -0,0 +1,240 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class DelegateBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Delegate
|
||||||
|
*
|
||||||
|
* Type: ltDELEGATE (0x0083)
|
||||||
|
* RPC Name: delegate
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use DelegateBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Delegate : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltDELEGATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Delegate ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Delegate(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Delegate");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAuthorize (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAuthorize() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAuthorize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPermissions (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getPermissions() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfPermissions);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Delegate ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class DelegateBuilder : public LedgerEntryBuilderBase<DelegateBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new DelegateBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param authorize The sfAuthorize field value.
|
||||||
|
* @param permissions The sfPermissions field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
DelegateBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ACCOUNT::type::value_type> const& authorize,STArray const& permissions,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<DelegateBuilder>(ltDELEGATE)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setAuthorize(authorize);
|
||||||
|
setPermissions(permissions);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DelegateBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
DelegateBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltDELEGATE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Delegate");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAuthorize (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setAuthorize(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAuthorize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPermissions (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setPermissions(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfPermissions, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DelegateBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Delegate wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Delegate
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Delegate{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
262
include/xrpl/protocol_autogen/ledger_entries/DepositPreauth.h
Normal file
262
include/xrpl/protocol_autogen/ledger_entries/DepositPreauth.h
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class DepositPreauthBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: DepositPreauth
|
||||||
|
*
|
||||||
|
* Type: ltDEPOSIT_PREAUTH (0x0070)
|
||||||
|
* RPC Name: deposit_preauth
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use DepositPreauthBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class DepositPreauth : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltDEPOSIT_PREAUTH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DepositPreauth ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit DepositPreauth(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DepositPreauth");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAuthorize (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getAuthorize() const
|
||||||
|
{
|
||||||
|
if (hasAuthorize())
|
||||||
|
return this->sle_->at(sfAuthorize);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAuthorize is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAuthorize() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAuthorize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAuthorizeCredentials (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getAuthorizeCredentials() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfAuthorizeCredentials))
|
||||||
|
return this->sle_->getFieldArray(sfAuthorizeCredentials);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAuthorizeCredentials is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAuthorizeCredentials() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAuthorizeCredentials);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for DepositPreauth ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class DepositPreauthBuilder : public LedgerEntryBuilderBase<DepositPreauthBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new DepositPreauthBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<DepositPreauthBuilder>(ltDEPOSIT_PREAUTH)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DepositPreauthBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltDEPOSIT_PREAUTH)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DepositPreauth");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAuthorize (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setAuthorize(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAuthorize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAuthorizeCredentials (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DepositPreauthBuilder&
|
||||||
|
setAuthorizeCredentials(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfAuthorizeCredentials, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed DepositPreauth wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
DepositPreauth
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return DepositPreauth{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
563
include/xrpl/protocol_autogen/ledger_entries/DirectoryNode.h
Normal file
563
include/xrpl/protocol_autogen/ledger_entries/DirectoryNode.h
Normal file
@@ -0,0 +1,563 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class DirectoryNodeBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: DirectoryNode
|
||||||
|
*
|
||||||
|
* Type: ltDIR_NODE (0x0064)
|
||||||
|
* RPC Name: directory
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use DirectoryNodeBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class DirectoryNode : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltDIR_NODE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DirectoryNode ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit DirectoryNode(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DirectoryNode");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
if (hasOwner())
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOwner is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerPaysCurrency (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT160::type::value_type>
|
||||||
|
getTakerPaysCurrency() const
|
||||||
|
{
|
||||||
|
if (hasTakerPaysCurrency())
|
||||||
|
return this->sle_->at(sfTakerPaysCurrency);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTakerPaysCurrency is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTakerPaysCurrency() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTakerPaysCurrency);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerPaysIssuer (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT160::type::value_type>
|
||||||
|
getTakerPaysIssuer() const
|
||||||
|
{
|
||||||
|
if (hasTakerPaysIssuer())
|
||||||
|
return this->sle_->at(sfTakerPaysIssuer);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTakerPaysIssuer is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTakerPaysIssuer() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTakerPaysIssuer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerGetsCurrency (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT160::type::value_type>
|
||||||
|
getTakerGetsCurrency() const
|
||||||
|
{
|
||||||
|
if (hasTakerGetsCurrency())
|
||||||
|
return this->sle_->at(sfTakerGetsCurrency);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTakerGetsCurrency is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTakerGetsCurrency() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTakerGetsCurrency);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerGetsIssuer (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT160::type::value_type>
|
||||||
|
getTakerGetsIssuer() const
|
||||||
|
{
|
||||||
|
if (hasTakerGetsIssuer())
|
||||||
|
return this->sle_->at(sfTakerGetsIssuer);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTakerGetsIssuer is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTakerGetsIssuer() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTakerGetsIssuer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExchangeRate (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getExchangeRate() const
|
||||||
|
{
|
||||||
|
if (hasExchangeRate())
|
||||||
|
return this->sle_->at(sfExchangeRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExchangeRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExchangeRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExchangeRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIndexes (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VECTOR256::type::value_type
|
||||||
|
getIndexes() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfIndexes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfRootIndex (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getRootIndex() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfRootIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIndexNext (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getIndexNext() const
|
||||||
|
{
|
||||||
|
if (hasIndexNext())
|
||||||
|
return this->sle_->at(sfIndexNext);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfIndexNext is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasIndexNext() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfIndexNext);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIndexPrevious (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getIndexPrevious() const
|
||||||
|
{
|
||||||
|
if (hasIndexPrevious())
|
||||||
|
return this->sle_->at(sfIndexPrevious);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfIndexPrevious is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasIndexPrevious() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfIndexPrevious);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokenID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getNFTokenID() const
|
||||||
|
{
|
||||||
|
if (hasNFTokenID())
|
||||||
|
return this->sle_->at(sfNFTokenID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfNFTokenID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNFTokenID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfNFTokenID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnID())
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnLgrSeq())
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnLgrSeq is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDomainID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getDomainID() const
|
||||||
|
{
|
||||||
|
if (hasDomainID())
|
||||||
|
return this->sle_->at(sfDomainID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDomainID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDomainID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDomainID);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for DirectoryNode ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class DirectoryNodeBuilder : public LedgerEntryBuilderBase<DirectoryNodeBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new DirectoryNodeBuilder with required fields.
|
||||||
|
* @param indexes The sfIndexes field value.
|
||||||
|
* @param rootIndex The sfRootIndex field value.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder(std::decay_t<typename SF_VECTOR256::type::value_type> const& indexes,std::decay_t<typename SF_UINT256::type::value_type> const& rootIndex)
|
||||||
|
: LedgerEntryBuilderBase<DirectoryNodeBuilder>(ltDIR_NODE)
|
||||||
|
{
|
||||||
|
setIndexes(indexes);
|
||||||
|
setRootIndex(rootIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a DirectoryNodeBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltDIR_NODE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for DirectoryNode");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerPaysCurrency (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setTakerPaysCurrency(std::decay_t<typename SF_UINT160::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerPaysCurrency] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerPaysIssuer (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setTakerPaysIssuer(std::decay_t<typename SF_UINT160::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerPaysIssuer] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerGetsCurrency (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setTakerGetsCurrency(std::decay_t<typename SF_UINT160::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerGetsCurrency] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerGetsIssuer (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setTakerGetsIssuer(std::decay_t<typename SF_UINT160::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerGetsIssuer] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExchangeRate (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setExchangeRate(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExchangeRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIndexes (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setIndexes(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIndexes] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfRootIndex (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setRootIndex(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfRootIndex] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIndexNext (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setIndexNext(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIndexNext] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIndexPrevious (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setIndexPrevious(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIndexPrevious] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokenID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setNFTokenID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNFTokenID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDomainID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
DirectoryNodeBuilder&
|
||||||
|
setDomainID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDomainID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed DirectoryNode wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
DirectoryNode
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return DirectoryNode{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
554
include/xrpl/protocol_autogen/ledger_entries/Escrow.h
Normal file
554
include/xrpl/protocol_autogen/ledger_entries/Escrow.h
Normal file
@@ -0,0 +1,554 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class EscrowBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Escrow
|
||||||
|
*
|
||||||
|
* Type: ltESCROW (0x0075)
|
||||||
|
* RPC Name: escrow
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use EscrowBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Escrow : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltESCROW;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Escrow ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Escrow(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Escrow");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
if (hasSequence())
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSequence is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCondition (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getCondition() const
|
||||||
|
{
|
||||||
|
if (hasCondition())
|
||||||
|
return this->sle_->at(sfCondition);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCondition is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCondition() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCondition);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCancelAfter (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getCancelAfter() const
|
||||||
|
{
|
||||||
|
if (hasCancelAfter())
|
||||||
|
return this->sle_->at(sfCancelAfter);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCancelAfter is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCancelAfter() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCancelAfter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfFinishAfter (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getFinishAfter() const
|
||||||
|
{
|
||||||
|
if (hasFinishAfter())
|
||||||
|
return this->sle_->at(sfFinishAfter);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfFinishAfter is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasFinishAfter() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfFinishAfter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSourceTag() const
|
||||||
|
{
|
||||||
|
if (hasSourceTag())
|
||||||
|
return this->sle_->at(sfSourceTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSourceTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSourceTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSourceTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getDestinationTag() const
|
||||||
|
{
|
||||||
|
if (hasDestinationTag())
|
||||||
|
return this->sle_->at(sfDestinationTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestinationTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getDestinationNode() const
|
||||||
|
{
|
||||||
|
if (hasDestinationNode())
|
||||||
|
return this->sle_->at(sfDestinationNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestinationNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getTransferRate() const
|
||||||
|
{
|
||||||
|
if (hasTransferRate())
|
||||||
|
return this->sle_->at(sfTransferRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTransferRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTransferRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTransferRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIssuerNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getIssuerNode() const
|
||||||
|
{
|
||||||
|
if (hasIssuerNode())
|
||||||
|
return this->sle_->at(sfIssuerNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfIssuerNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasIssuerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfIssuerNode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Escrow ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class EscrowBuilder : public LedgerEntryBuilderBase<EscrowBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new EscrowBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param destination The sfDestination field value.
|
||||||
|
* @param amount The sfAmount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
EscrowBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ACCOUNT::type::value_type> const& destination,std::decay_t<typename SF_AMOUNT::type::value_type> const& amount,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<EscrowBuilder>(ltESCROW)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setDestination(destination);
|
||||||
|
setAmount(amount);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a EscrowBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
EscrowBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltESCROW)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Escrow");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCondition (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setCondition(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCondition] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCancelAfter (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setCancelAfter(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCancelAfter] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfFinishAfter (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setFinishAfter(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfFinishAfter] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setSourceTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSourceTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setDestinationTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setDestinationNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setTransferRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTransferRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIssuerNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
EscrowBuilder&
|
||||||
|
setIssuerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIssuerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Escrow wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Escrow
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Escrow{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
410
include/xrpl/protocol_autogen/ledger_entries/FeeSettings.h
Normal file
410
include/xrpl/protocol_autogen/ledger_entries/FeeSettings.h
Normal file
@@ -0,0 +1,410 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class FeeSettingsBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: FeeSettings
|
||||||
|
*
|
||||||
|
* Type: ltFEE_SETTINGS (0x0073)
|
||||||
|
* RPC Name: fee
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use FeeSettingsBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class FeeSettings : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltFEE_SETTINGS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a FeeSettings ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit FeeSettings(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for FeeSettings");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBaseFee (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getBaseFee() const
|
||||||
|
{
|
||||||
|
if (hasBaseFee())
|
||||||
|
return this->sle_->at(sfBaseFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBaseFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBaseFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfBaseFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfReferenceFeeUnits (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getReferenceFeeUnits() const
|
||||||
|
{
|
||||||
|
if (hasReferenceFeeUnits())
|
||||||
|
return this->sle_->at(sfReferenceFeeUnits);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfReferenceFeeUnits is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasReferenceFeeUnits() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfReferenceFeeUnits);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfReserveBase (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getReserveBase() const
|
||||||
|
{
|
||||||
|
if (hasReserveBase())
|
||||||
|
return this->sle_->at(sfReserveBase);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfReserveBase is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasReserveBase() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfReserveBase);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfReserveIncrement (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getReserveIncrement() const
|
||||||
|
{
|
||||||
|
if (hasReserveIncrement())
|
||||||
|
return this->sle_->at(sfReserveIncrement);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfReserveIncrement is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasReserveIncrement() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfReserveIncrement);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBaseFeeDrops (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getBaseFeeDrops() const
|
||||||
|
{
|
||||||
|
if (hasBaseFeeDrops())
|
||||||
|
return this->sle_->at(sfBaseFeeDrops);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBaseFeeDrops is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBaseFeeDrops() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfBaseFeeDrops);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfReserveBaseDrops (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getReserveBaseDrops() const
|
||||||
|
{
|
||||||
|
if (hasReserveBaseDrops())
|
||||||
|
return this->sle_->at(sfReserveBaseDrops);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfReserveBaseDrops is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasReserveBaseDrops() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfReserveBaseDrops);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfReserveIncrementDrops (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getReserveIncrementDrops() const
|
||||||
|
{
|
||||||
|
if (hasReserveIncrementDrops())
|
||||||
|
return this->sle_->at(sfReserveIncrementDrops);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfReserveIncrementDrops is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasReserveIncrementDrops() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfReserveIncrementDrops);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnID())
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnLgrSeq())
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnLgrSeq is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for FeeSettings ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class FeeSettingsBuilder : public LedgerEntryBuilderBase<FeeSettingsBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new FeeSettingsBuilder with required fields.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder()
|
||||||
|
: LedgerEntryBuilderBase<FeeSettingsBuilder>(ltFEE_SETTINGS)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a FeeSettingsBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltFEE_SETTINGS)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for FeeSettings");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBaseFee (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setBaseFee(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBaseFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfReferenceFeeUnits (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setReferenceFeeUnits(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfReferenceFeeUnits] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfReserveBase (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setReserveBase(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfReserveBase] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfReserveIncrement (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setReserveIncrement(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfReserveIncrement] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBaseFeeDrops (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setBaseFeeDrops(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBaseFeeDrops] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfReserveBaseDrops (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setReserveBaseDrops(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfReserveBaseDrops] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfReserveIncrementDrops (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setReserveIncrementDrops(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfReserveIncrementDrops] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
FeeSettingsBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed FeeSettings wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
FeeSettings
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return FeeSettings{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
189
include/xrpl/protocol_autogen/ledger_entries/LedgerHashes.h
Normal file
189
include/xrpl/protocol_autogen/ledger_entries/LedgerHashes.h
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class LedgerHashesBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: LedgerHashes
|
||||||
|
*
|
||||||
|
* Type: ltLEDGER_HASHES (0x0068)
|
||||||
|
* RPC Name: hashes
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use LedgerHashesBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class LedgerHashes : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltLEDGER_HASHES;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a LedgerHashes ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit LedgerHashes(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for LedgerHashes");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfFirstLedgerSequence (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getFirstLedgerSequence() const
|
||||||
|
{
|
||||||
|
if (hasFirstLedgerSequence())
|
||||||
|
return this->sle_->at(sfFirstLedgerSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfFirstLedgerSequence is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasFirstLedgerSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfFirstLedgerSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLastLedgerSequence (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getLastLedgerSequence() const
|
||||||
|
{
|
||||||
|
if (hasLastLedgerSequence())
|
||||||
|
return this->sle_->at(sfLastLedgerSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLastLedgerSequence is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLastLedgerSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLastLedgerSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHashes (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VECTOR256::type::value_type
|
||||||
|
getHashes() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfHashes);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for LedgerHashes ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class LedgerHashesBuilder : public LedgerEntryBuilderBase<LedgerHashesBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new LedgerHashesBuilder with required fields.
|
||||||
|
* @param hashes The sfHashes field value.
|
||||||
|
*/
|
||||||
|
LedgerHashesBuilder(std::decay_t<typename SF_VECTOR256::type::value_type> const& hashes)
|
||||||
|
: LedgerEntryBuilderBase<LedgerHashesBuilder>(ltLEDGER_HASHES)
|
||||||
|
{
|
||||||
|
setHashes(hashes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a LedgerHashesBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
LedgerHashesBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltLEDGER_HASHES)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for LedgerHashes");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfFirstLedgerSequence (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LedgerHashesBuilder&
|
||||||
|
setFirstLedgerSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfFirstLedgerSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLastLedgerSequence (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LedgerHashesBuilder&
|
||||||
|
setLastLedgerSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLastLedgerSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHashes (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LedgerHashesBuilder&
|
||||||
|
setHashes(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHashes] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed LedgerHashes wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
LedgerHashes
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return LedgerHashes{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
930
include/xrpl/protocol_autogen/ledger_entries/Loan.h
Normal file
930
include/xrpl/protocol_autogen/ledger_entries/Loan.h
Normal file
@@ -0,0 +1,930 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class LoanBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Loan
|
||||||
|
*
|
||||||
|
* Type: ltLOAN (0x0089)
|
||||||
|
* RPC Name: loan
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use LoanBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Loan : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltLOAN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Loan ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Loan(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Loan");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanBrokerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getLoanBrokerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLoanBrokerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanBrokerID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getLoanBrokerID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLoanBrokerID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getLoanSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLoanSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBorrower (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getBorrower() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBorrower);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanOriginationFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getLoanOriginationFee() const
|
||||||
|
{
|
||||||
|
if (hasLoanOriginationFee())
|
||||||
|
return this->sle_->at(sfLoanOriginationFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLoanOriginationFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLoanOriginationFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLoanOriginationFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanServiceFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getLoanServiceFee() const
|
||||||
|
{
|
||||||
|
if (hasLoanServiceFee())
|
||||||
|
return this->sle_->at(sfLoanServiceFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLoanServiceFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLoanServiceFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLoanServiceFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLatePaymentFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getLatePaymentFee() const
|
||||||
|
{
|
||||||
|
if (hasLatePaymentFee())
|
||||||
|
return this->sle_->at(sfLatePaymentFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLatePaymentFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLatePaymentFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLatePaymentFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfClosePaymentFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getClosePaymentFee() const
|
||||||
|
{
|
||||||
|
if (hasClosePaymentFee())
|
||||||
|
return this->sle_->at(sfClosePaymentFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfClosePaymentFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasClosePaymentFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfClosePaymentFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOverpaymentFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getOverpaymentFee() const
|
||||||
|
{
|
||||||
|
if (hasOverpaymentFee())
|
||||||
|
return this->sle_->at(sfOverpaymentFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOverpaymentFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOverpaymentFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOverpaymentFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfInterestRate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getInterestRate() const
|
||||||
|
{
|
||||||
|
if (hasInterestRate())
|
||||||
|
return this->sle_->at(sfInterestRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfInterestRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasInterestRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfInterestRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLateInterestRate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getLateInterestRate() const
|
||||||
|
{
|
||||||
|
if (hasLateInterestRate())
|
||||||
|
return this->sle_->at(sfLateInterestRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLateInterestRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLateInterestRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLateInterestRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCloseInterestRate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getCloseInterestRate() const
|
||||||
|
{
|
||||||
|
if (hasCloseInterestRate())
|
||||||
|
return this->sle_->at(sfCloseInterestRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCloseInterestRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCloseInterestRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCloseInterestRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOverpaymentInterestRate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getOverpaymentInterestRate() const
|
||||||
|
{
|
||||||
|
if (hasOverpaymentInterestRate())
|
||||||
|
return this->sle_->at(sfOverpaymentInterestRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOverpaymentInterestRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOverpaymentInterestRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOverpaymentInterestRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfStartDate (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getStartDate() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfStartDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPaymentInterval (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPaymentInterval() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPaymentInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfGracePeriod (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getGracePeriod() const
|
||||||
|
{
|
||||||
|
if (hasGracePeriod())
|
||||||
|
return this->sle_->at(sfGracePeriod);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfGracePeriod is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasGracePeriod() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfGracePeriod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousPaymentDueDate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousPaymentDueDate() const
|
||||||
|
{
|
||||||
|
if (hasPreviousPaymentDueDate())
|
||||||
|
return this->sle_->at(sfPreviousPaymentDueDate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousPaymentDueDate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousPaymentDueDate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousPaymentDueDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNextPaymentDueDate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getNextPaymentDueDate() const
|
||||||
|
{
|
||||||
|
if (hasNextPaymentDueDate())
|
||||||
|
return this->sle_->at(sfNextPaymentDueDate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfNextPaymentDueDate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNextPaymentDueDate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfNextPaymentDueDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPaymentRemaining (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPaymentRemaining() const
|
||||||
|
{
|
||||||
|
if (hasPaymentRemaining())
|
||||||
|
return this->sle_->at(sfPaymentRemaining);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPaymentRemaining is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPaymentRemaining() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPaymentRemaining);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPeriodicPayment (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_NUMBER::type::value_type
|
||||||
|
getPeriodicPayment() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPeriodicPayment);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPrincipalOutstanding (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getPrincipalOutstanding() const
|
||||||
|
{
|
||||||
|
if (hasPrincipalOutstanding())
|
||||||
|
return this->sle_->at(sfPrincipalOutstanding);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPrincipalOutstanding is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPrincipalOutstanding() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPrincipalOutstanding);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTotalValueOutstanding (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getTotalValueOutstanding() const
|
||||||
|
{
|
||||||
|
if (hasTotalValueOutstanding())
|
||||||
|
return this->sle_->at(sfTotalValueOutstanding);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTotalValueOutstanding is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTotalValueOutstanding() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTotalValueOutstanding);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfManagementFeeOutstanding (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getManagementFeeOutstanding() const
|
||||||
|
{
|
||||||
|
if (hasManagementFeeOutstanding())
|
||||||
|
return this->sle_->at(sfManagementFeeOutstanding);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfManagementFeeOutstanding is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasManagementFeeOutstanding() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfManagementFeeOutstanding);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanScale (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_INT32::type::value_type>
|
||||||
|
getLoanScale() const
|
||||||
|
{
|
||||||
|
if (hasLoanScale())
|
||||||
|
return this->sle_->at(sfLoanScale);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLoanScale is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLoanScale() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLoanScale);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Loan ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class LoanBuilder : public LedgerEntryBuilderBase<LoanBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new LoanBuilder with required fields.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param loanBrokerNode The sfLoanBrokerNode field value.
|
||||||
|
* @param loanBrokerID The sfLoanBrokerID field value.
|
||||||
|
* @param loanSequence The sfLoanSequence field value.
|
||||||
|
* @param borrower The sfBorrower field value.
|
||||||
|
* @param startDate The sfStartDate field value.
|
||||||
|
* @param paymentInterval The sfPaymentInterval field value.
|
||||||
|
* @param periodicPayment The sfPeriodicPayment field value.
|
||||||
|
*/
|
||||||
|
LoanBuilder(std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT64::type::value_type> const& loanBrokerNode,std::decay_t<typename SF_UINT256::type::value_type> const& loanBrokerID,std::decay_t<typename SF_UINT32::type::value_type> const& loanSequence,std::decay_t<typename SF_ACCOUNT::type::value_type> const& borrower,std::decay_t<typename SF_UINT32::type::value_type> const& startDate,std::decay_t<typename SF_UINT32::type::value_type> const& paymentInterval,std::decay_t<typename SF_NUMBER::type::value_type> const& periodicPayment)
|
||||||
|
: LedgerEntryBuilderBase<LoanBuilder>(ltLOAN)
|
||||||
|
{
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setLoanBrokerNode(loanBrokerNode);
|
||||||
|
setLoanBrokerID(loanBrokerID);
|
||||||
|
setLoanSequence(loanSequence);
|
||||||
|
setBorrower(borrower);
|
||||||
|
setStartDate(startDate);
|
||||||
|
setPaymentInterval(paymentInterval);
|
||||||
|
setPeriodicPayment(periodicPayment);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a LoanBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
LoanBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltLOAN)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Loan");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanBrokerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanBrokerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanBrokerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanBrokerID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanBrokerID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanBrokerID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBorrower (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setBorrower(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBorrower] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanOriginationFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanOriginationFee(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanOriginationFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanServiceFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanServiceFee(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanServiceFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLatePaymentFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLatePaymentFee(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLatePaymentFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfClosePaymentFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setClosePaymentFee(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfClosePaymentFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOverpaymentFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setOverpaymentFee(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOverpaymentFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfInterestRate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setInterestRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfInterestRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLateInterestRate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLateInterestRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLateInterestRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCloseInterestRate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setCloseInterestRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCloseInterestRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOverpaymentInterestRate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setOverpaymentInterestRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOverpaymentInterestRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfStartDate (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setStartDate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfStartDate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPaymentInterval (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPaymentInterval(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPaymentInterval] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfGracePeriod (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setGracePeriod(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfGracePeriod] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousPaymentDueDate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPreviousPaymentDueDate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousPaymentDueDate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNextPaymentDueDate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setNextPaymentDueDate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNextPaymentDueDate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPaymentRemaining (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPaymentRemaining(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPaymentRemaining] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPeriodicPayment (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPeriodicPayment(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPeriodicPayment] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPrincipalOutstanding (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setPrincipalOutstanding(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPrincipalOutstanding] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTotalValueOutstanding (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setTotalValueOutstanding(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTotalValueOutstanding] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfManagementFeeOutstanding (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setManagementFeeOutstanding(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfManagementFeeOutstanding] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanScale (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBuilder&
|
||||||
|
setLoanScale(std::decay_t<typename SF_INT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanScale] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Loan wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Loan
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Loan{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
591
include/xrpl/protocol_autogen/ledger_entries/LoanBroker.h
Normal file
591
include/xrpl/protocol_autogen/ledger_entries/LoanBroker.h
Normal file
@@ -0,0 +1,591 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class LoanBrokerBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: LoanBroker
|
||||||
|
*
|
||||||
|
* Type: ltLOAN_BROKER (0x0088)
|
||||||
|
* RPC Name: loan_broker
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use LoanBrokerBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class LoanBroker : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltLOAN_BROKER;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a LoanBroker ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit LoanBroker(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for LoanBroker");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfVaultNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getVaultNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfVaultNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfVaultID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getVaultID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfVaultID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLoanSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getLoanSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLoanSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfData (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getData() const
|
||||||
|
{
|
||||||
|
if (hasData())
|
||||||
|
return this->sle_->at(sfData);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfData is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasData() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfManagementFeeRate (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT16::type::value_type>
|
||||||
|
getManagementFeeRate() const
|
||||||
|
{
|
||||||
|
if (hasManagementFeeRate())
|
||||||
|
return this->sle_->at(sfManagementFeeRate);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfManagementFeeRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasManagementFeeRate() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfManagementFeeRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerCount (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getOwnerCount() const
|
||||||
|
{
|
||||||
|
if (hasOwnerCount())
|
||||||
|
return this->sle_->at(sfOwnerCount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOwnerCount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOwnerCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOwnerCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDebtTotal (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getDebtTotal() const
|
||||||
|
{
|
||||||
|
if (hasDebtTotal())
|
||||||
|
return this->sle_->at(sfDebtTotal);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDebtTotal is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDebtTotal() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDebtTotal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDebtMaximum (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getDebtMaximum() const
|
||||||
|
{
|
||||||
|
if (hasDebtMaximum())
|
||||||
|
return this->sle_->at(sfDebtMaximum);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDebtMaximum is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDebtMaximum() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDebtMaximum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCoverAvailable (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getCoverAvailable() const
|
||||||
|
{
|
||||||
|
if (hasCoverAvailable())
|
||||||
|
return this->sle_->at(sfCoverAvailable);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCoverAvailable is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCoverAvailable() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCoverAvailable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCoverRateMinimum (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getCoverRateMinimum() const
|
||||||
|
{
|
||||||
|
if (hasCoverRateMinimum())
|
||||||
|
return this->sle_->at(sfCoverRateMinimum);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCoverRateMinimum is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCoverRateMinimum() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCoverRateMinimum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCoverRateLiquidation (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getCoverRateLiquidation() const
|
||||||
|
{
|
||||||
|
if (hasCoverRateLiquidation())
|
||||||
|
return this->sle_->at(sfCoverRateLiquidation);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCoverRateLiquidation is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCoverRateLiquidation() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCoverRateLiquidation);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for LoanBroker ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class LoanBrokerBuilder : public LedgerEntryBuilderBase<LoanBrokerBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new LoanBrokerBuilder with required fields.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param vaultNode The sfVaultNode field value.
|
||||||
|
* @param vaultID The sfVaultID field value.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param owner The sfOwner field value.
|
||||||
|
* @param loanSequence The sfLoanSequence field value.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder(std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT64::type::value_type> const& vaultNode,std::decay_t<typename SF_UINT256::type::value_type> const& vaultID,std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ACCOUNT::type::value_type> const& owner,std::decay_t<typename SF_UINT32::type::value_type> const& loanSequence)
|
||||||
|
: LedgerEntryBuilderBase<LoanBrokerBuilder>(ltLOAN_BROKER)
|
||||||
|
{
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
setSequence(sequence);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setVaultNode(vaultNode);
|
||||||
|
setVaultID(vaultID);
|
||||||
|
setAccount(account);
|
||||||
|
setOwner(owner);
|
||||||
|
setLoanSequence(loanSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a LoanBrokerBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltLOAN_BROKER)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for LoanBroker");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfVaultNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setVaultNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfVaultNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfVaultID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setVaultID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfVaultID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLoanSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setLoanSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLoanSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfData (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setData(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfData] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfManagementFeeRate (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setManagementFeeRate(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfManagementFeeRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerCount (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setOwnerCount(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDebtTotal (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setDebtTotal(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDebtTotal] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDebtMaximum (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setDebtMaximum(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDebtMaximum] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCoverAvailable (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setCoverAvailable(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCoverAvailable] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCoverRateMinimum (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setCoverRateMinimum(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCoverRateMinimum] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCoverRateLiquidation (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
LoanBrokerBuilder&
|
||||||
|
setCoverRateLiquidation(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCoverRateLiquidation] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed LoanBroker wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
LoanBroker
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return LoanBroker{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
285
include/xrpl/protocol_autogen/ledger_entries/MPToken.h
Normal file
285
include/xrpl/protocol_autogen/ledger_entries/MPToken.h
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class MPTokenBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: MPToken
|
||||||
|
*
|
||||||
|
* Type: ltMPTOKEN (0x007f)
|
||||||
|
* RPC Name: mptoken
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use MPTokenBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class MPToken : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltMPTOKEN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a MPToken ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit MPToken(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for MPToken");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMPTokenIssuanceID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT192::type::value_type
|
||||||
|
getMPTokenIssuanceID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfMPTokenIssuanceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMPTAmount (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getMPTAmount() const
|
||||||
|
{
|
||||||
|
if (hasMPTAmount())
|
||||||
|
return this->sle_->at(sfMPTAmount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMPTAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMPTAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMPTAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLockedAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getLockedAmount() const
|
||||||
|
{
|
||||||
|
if (hasLockedAmount())
|
||||||
|
return this->sle_->at(sfLockedAmount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLockedAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLockedAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLockedAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for MPToken ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class MPTokenBuilder : public LedgerEntryBuilderBase<MPTokenBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new MPTokenBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param mPTokenIssuanceID The sfMPTokenIssuanceID field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT192::type::value_type> const& mPTokenIssuanceID,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<MPTokenBuilder>(ltMPTOKEN)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setMPTokenIssuanceID(mPTokenIssuanceID);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a MPTokenBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltMPTOKEN)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for MPToken");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMPTokenIssuanceID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setMPTokenIssuanceID(std::decay_t<typename SF_UINT192::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMPTokenIssuanceID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMPTAmount (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setMPTAmount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMPTAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLockedAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setLockedAmount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLockedAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed MPToken wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
MPToken
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return MPToken{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
484
include/xrpl/protocol_autogen/ledger_entries/MPTokenIssuance.h
Normal file
484
include/xrpl/protocol_autogen/ledger_entries/MPTokenIssuance.h
Normal file
@@ -0,0 +1,484 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class MPTokenIssuanceBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: MPTokenIssuance
|
||||||
|
*
|
||||||
|
* Type: ltMPTOKEN_ISSUANCE (0x007e)
|
||||||
|
* RPC Name: mpt_issuance
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use MPTokenIssuanceBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class MPTokenIssuance : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltMPTOKEN_ISSUANCE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a MPTokenIssuance ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit MPTokenIssuance(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for MPTokenIssuance");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfIssuer (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getIssuer() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfIssuer);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTransferFee (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT16::type::value_type>
|
||||||
|
getTransferFee() const
|
||||||
|
{
|
||||||
|
if (hasTransferFee())
|
||||||
|
return this->sle_->at(sfTransferFee);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTransferFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTransferFee() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfTransferFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAssetScale (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT8::type::value_type>
|
||||||
|
getAssetScale() const
|
||||||
|
{
|
||||||
|
if (hasAssetScale())
|
||||||
|
return this->sle_->at(sfAssetScale);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAssetScale is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAssetScale() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAssetScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMaximumAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getMaximumAmount() const
|
||||||
|
{
|
||||||
|
if (hasMaximumAmount())
|
||||||
|
return this->sle_->at(sfMaximumAmount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMaximumAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMaximumAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMaximumAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOutstandingAmount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOutstandingAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOutstandingAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLockedAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getLockedAmount() const
|
||||||
|
{
|
||||||
|
if (hasLockedAmount())
|
||||||
|
return this->sle_->at(sfLockedAmount);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLockedAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLockedAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLockedAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMPTokenMetadata (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getMPTokenMetadata() const
|
||||||
|
{
|
||||||
|
if (hasMPTokenMetadata())
|
||||||
|
return this->sle_->at(sfMPTokenMetadata);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMPTokenMetadata is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMPTokenMetadata() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMPTokenMetadata);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDomainID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getDomainID() const
|
||||||
|
{
|
||||||
|
if (hasDomainID())
|
||||||
|
return this->sle_->at(sfDomainID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDomainID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDomainID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDomainID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMutableFlags (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getMutableFlags() const
|
||||||
|
{
|
||||||
|
if (hasMutableFlags())
|
||||||
|
return this->sle_->at(sfMutableFlags);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMutableFlags is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMutableFlags() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfMutableFlags);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for MPTokenIssuance ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class MPTokenIssuanceBuilder : public LedgerEntryBuilderBase<MPTokenIssuanceBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new MPTokenIssuanceBuilder with required fields.
|
||||||
|
* @param issuer The sfIssuer field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param outstandingAmount The sfOutstandingAmount field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& issuer,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT64::type::value_type> const& outstandingAmount,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<MPTokenIssuanceBuilder>(ltMPTOKEN_ISSUANCE)
|
||||||
|
{
|
||||||
|
setIssuer(issuer);
|
||||||
|
setSequence(sequence);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setOutstandingAmount(outstandingAmount);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a MPTokenIssuanceBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltMPTOKEN_ISSUANCE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for MPTokenIssuance");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfIssuer (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setIssuer(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfIssuer] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTransferFee (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setTransferFee(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTransferFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAssetScale (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setAssetScale(std::decay_t<typename SF_UINT8::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAssetScale] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMaximumAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setMaximumAmount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMaximumAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOutstandingAmount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setOutstandingAmount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOutstandingAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLockedAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setLockedAmount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLockedAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMPTokenMetadata (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setMPTokenMetadata(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMPTokenMetadata] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDomainID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setDomainID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDomainID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMutableFlags (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
MPTokenIssuanceBuilder&
|
||||||
|
setMutableFlags(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMutableFlags] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed MPTokenIssuance wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
MPTokenIssuance
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return MPTokenIssuance{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
333
include/xrpl/protocol_autogen/ledger_entries/NFTokenOffer.h
Normal file
333
include/xrpl/protocol_autogen/ledger_entries/NFTokenOffer.h
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class NFTokenOfferBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: NFTokenOffer
|
||||||
|
*
|
||||||
|
* Type: ltNFTOKEN_OFFER (0x0037)
|
||||||
|
* RPC Name: nft_offer
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use NFTokenOfferBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class NFTokenOffer : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltNFTOKEN_OFFER;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NFTokenOffer ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit NFTokenOffer(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NFTokenOffer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokenID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getNFTokenID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfNFTokenID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokenOfferNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getNFTokenOfferNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfNFTokenOfferNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
if (hasDestination())
|
||||||
|
return this->sle_->at(sfDestination);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestination is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestination() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
return this->sle_->at(sfExpiration);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for NFTokenOffer ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class NFTokenOfferBuilder : public LedgerEntryBuilderBase<NFTokenOfferBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new NFTokenOfferBuilder with required fields.
|
||||||
|
* @param owner The sfOwner field value.
|
||||||
|
* @param nFTokenID The sfNFTokenID field value.
|
||||||
|
* @param amount The sfAmount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param nFTokenOfferNode The sfNFTokenOfferNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& owner,std::decay_t<typename SF_UINT256::type::value_type> const& nFTokenID,std::decay_t<typename SF_AMOUNT::type::value_type> const& amount,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT64::type::value_type> const& nFTokenOfferNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<NFTokenOfferBuilder>(ltNFTOKEN_OFFER)
|
||||||
|
{
|
||||||
|
setOwner(owner);
|
||||||
|
setNFTokenID(nFTokenID);
|
||||||
|
setAmount(amount);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setNFTokenOfferNode(nFTokenOfferNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NFTokenOfferBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltNFTOKEN_OFFER)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NFTokenOffer");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokenID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setNFTokenID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNFTokenID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokenOfferNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setNFTokenOfferNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNFTokenOfferNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenOfferBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed NFTokenOffer wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
NFTokenOffer
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return NFTokenOffer{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
238
include/xrpl/protocol_autogen/ledger_entries/NFTokenPage.h
Normal file
238
include/xrpl/protocol_autogen/ledger_entries/NFTokenPage.h
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class NFTokenPageBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: NFTokenPage
|
||||||
|
*
|
||||||
|
* Type: ltNFTOKEN_PAGE (0x0050)
|
||||||
|
* RPC Name: nft_page
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use NFTokenPageBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class NFTokenPage : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltNFTOKEN_PAGE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NFTokenPage ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit NFTokenPage(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NFTokenPage");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousPageMin (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousPageMin() const
|
||||||
|
{
|
||||||
|
if (hasPreviousPageMin())
|
||||||
|
return this->sle_->at(sfPreviousPageMin);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousPageMin is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousPageMin() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousPageMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNextPageMin (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getNextPageMin() const
|
||||||
|
{
|
||||||
|
if (hasNextPageMin())
|
||||||
|
return this->sle_->at(sfNextPageMin);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfNextPageMin is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNextPageMin() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfNextPageMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokens (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getNFTokens() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfNFTokens);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for NFTokenPage ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class NFTokenPageBuilder : public LedgerEntryBuilderBase<NFTokenPageBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new NFTokenPageBuilder with required fields.
|
||||||
|
* @param nFTokens The sfNFTokens field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder(STArray const& nFTokens,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<NFTokenPageBuilder>(ltNFTOKEN_PAGE)
|
||||||
|
{
|
||||||
|
setNFTokens(nFTokens);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NFTokenPageBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltNFTOKEN_PAGE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NFTokenPage");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousPageMin (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder&
|
||||||
|
setPreviousPageMin(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousPageMin] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNextPageMin (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder&
|
||||||
|
setNextPageMin(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNextPageMin] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokens (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder&
|
||||||
|
setNFTokens(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfNFTokens, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NFTokenPageBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed NFTokenPage wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
NFTokenPage
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return NFTokenPage{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
271
include/xrpl/protocol_autogen/ledger_entries/NegativeUNL.h
Normal file
271
include/xrpl/protocol_autogen/ledger_entries/NegativeUNL.h
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class NegativeUNLBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: NegativeUNL
|
||||||
|
*
|
||||||
|
* Type: ltNEGATIVE_UNL (0x004e)
|
||||||
|
* RPC Name: nunl
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use NegativeUNLBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class NegativeUNL : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltNEGATIVE_UNL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NegativeUNL ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit NegativeUNL(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NegativeUNL");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDisabledValidators (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getDisabledValidators() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfDisabledValidators))
|
||||||
|
return this->sle_->getFieldArray(sfDisabledValidators);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDisabledValidators is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDisabledValidators() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDisabledValidators);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfValidatorToDisable (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getValidatorToDisable() const
|
||||||
|
{
|
||||||
|
if (hasValidatorToDisable())
|
||||||
|
return this->sle_->at(sfValidatorToDisable);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfValidatorToDisable is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasValidatorToDisable() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfValidatorToDisable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfValidatorToReEnable (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getValidatorToReEnable() const
|
||||||
|
{
|
||||||
|
if (hasValidatorToReEnable())
|
||||||
|
return this->sle_->at(sfValidatorToReEnable);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfValidatorToReEnable is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasValidatorToReEnable() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfValidatorToReEnable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnID())
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
if (hasPreviousTxnLgrSeq())
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfPreviousTxnLgrSeq is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for NegativeUNL ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class NegativeUNLBuilder : public LedgerEntryBuilderBase<NegativeUNLBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new NegativeUNLBuilder with required fields.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder()
|
||||||
|
: LedgerEntryBuilderBase<NegativeUNLBuilder>(ltNEGATIVE_UNL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a NegativeUNLBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltNEGATIVE_UNL)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for NegativeUNL");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDisabledValidators (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder&
|
||||||
|
setDisabledValidators(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfDisabledValidators, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfValidatorToDisable (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder&
|
||||||
|
setValidatorToDisable(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfValidatorToDisable] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfValidatorToReEnable (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder&
|
||||||
|
setValidatorToReEnable(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfValidatorToReEnable] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
NegativeUNLBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed NegativeUNL wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
NegativeUNL
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return NegativeUNL{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
417
include/xrpl/protocol_autogen/ledger_entries/Offer.h
Normal file
417
include/xrpl/protocol_autogen/ledger_entries/Offer.h
Normal file
@@ -0,0 +1,417 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class OfferBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Offer
|
||||||
|
*
|
||||||
|
* Type: ltOFFER (0x006f)
|
||||||
|
* RPC Name: offer
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use OfferBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Offer : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltOFFER;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Offer ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Offer(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Offer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerPays (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getTakerPays() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfTakerPays);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTakerGets (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getTakerGets() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfTakerGets);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBookDirectory (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getBookDirectory() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBookDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBookNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getBookNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBookNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
return this->sle_->at(sfExpiration);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDomainID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getDomainID() const
|
||||||
|
{
|
||||||
|
if (hasDomainID())
|
||||||
|
return this->sle_->at(sfDomainID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDomainID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDomainID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDomainID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAdditionalBooks (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getAdditionalBooks() const
|
||||||
|
{
|
||||||
|
if (this->sle_->isFieldPresent(sfAdditionalBooks))
|
||||||
|
return this->sle_->getFieldArray(sfAdditionalBooks);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAdditionalBooks is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAdditionalBooks() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAdditionalBooks);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Offer ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class OfferBuilder : public LedgerEntryBuilderBase<OfferBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new OfferBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param takerPays The sfTakerPays field value.
|
||||||
|
* @param takerGets The sfTakerGets field value.
|
||||||
|
* @param bookDirectory The sfBookDirectory field value.
|
||||||
|
* @param bookNode The sfBookNode field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
OfferBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_AMOUNT::type::value_type> const& takerPays,std::decay_t<typename SF_AMOUNT::type::value_type> const& takerGets,std::decay_t<typename SF_UINT256::type::value_type> const& bookDirectory,std::decay_t<typename SF_UINT64::type::value_type> const& bookNode,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<OfferBuilder>(ltOFFER)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setSequence(sequence);
|
||||||
|
setTakerPays(takerPays);
|
||||||
|
setTakerGets(takerGets);
|
||||||
|
setBookDirectory(bookDirectory);
|
||||||
|
setBookNode(bookNode);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a OfferBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
OfferBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltOFFER)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Offer");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerPays (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setTakerPays(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerPays] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTakerGets (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setTakerGets(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTakerGets] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBookDirectory (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setBookDirectory(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBookDirectory] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBookNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setBookNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBookNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDomainID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setDomainID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDomainID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAdditionalBooks (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OfferBuilder&
|
||||||
|
setAdditionalBooks(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfAdditionalBooks, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Offer wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Offer
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Offer{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
358
include/xrpl/protocol_autogen/ledger_entries/Oracle.h
Normal file
358
include/xrpl/protocol_autogen/ledger_entries/Oracle.h
Normal file
@@ -0,0 +1,358 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class OracleBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Oracle
|
||||||
|
*
|
||||||
|
* Type: ltORACLE (0x0080)
|
||||||
|
* RPC Name: oracle
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use OracleBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Oracle : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltORACLE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Oracle ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Oracle(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Oracle");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOracleDocumentID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getOracleDocumentID() const
|
||||||
|
{
|
||||||
|
if (hasOracleDocumentID())
|
||||||
|
return this->sle_->at(sfOracleDocumentID);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOracleDocumentID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOracleDocumentID() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOracleDocumentID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfProvider (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VL::type::value_type
|
||||||
|
getProvider() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfProvider);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPriceDataSeries (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getPriceDataSeries() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfPriceDataSeries);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAssetClass (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VL::type::value_type
|
||||||
|
getAssetClass() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAssetClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLastUpdateTime (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getLastUpdateTime() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLastUpdateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfURI (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getURI() const
|
||||||
|
{
|
||||||
|
if (hasURI())
|
||||||
|
return this->sle_->at(sfURI);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfURI is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasURI() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfURI);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Oracle ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class OracleBuilder : public LedgerEntryBuilderBase<OracleBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new OracleBuilder with required fields.
|
||||||
|
* @param owner The sfOwner field value.
|
||||||
|
* @param provider The sfProvider field value.
|
||||||
|
* @param priceDataSeries The sfPriceDataSeries field value.
|
||||||
|
* @param assetClass The sfAssetClass field value.
|
||||||
|
* @param lastUpdateTime The sfLastUpdateTime field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
OracleBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& owner,std::decay_t<typename SF_VL::type::value_type> const& provider,STArray const& priceDataSeries,std::decay_t<typename SF_VL::type::value_type> const& assetClass,std::decay_t<typename SF_UINT32::type::value_type> const& lastUpdateTime,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<OracleBuilder>(ltORACLE)
|
||||||
|
{
|
||||||
|
setOwner(owner);
|
||||||
|
setProvider(provider);
|
||||||
|
setPriceDataSeries(priceDataSeries);
|
||||||
|
setAssetClass(assetClass);
|
||||||
|
setLastUpdateTime(lastUpdateTime);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a OracleBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
OracleBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltORACLE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Oracle");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOracleDocumentID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setOracleDocumentID(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOracleDocumentID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfProvider (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setProvider(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfProvider] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPriceDataSeries (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setPriceDataSeries(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfPriceDataSeries, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAssetClass (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setAssetClass(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAssetClass] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLastUpdateTime (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setLastUpdateTime(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLastUpdateTime] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfURI (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setURI(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfURI] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
OracleBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Oracle wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Oracle
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Oracle{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
521
include/xrpl/protocol_autogen/ledger_entries/PayChannel.h
Normal file
521
include/xrpl/protocol_autogen/ledger_entries/PayChannel.h
Normal file
@@ -0,0 +1,521 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class PayChannelBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: PayChannel
|
||||||
|
*
|
||||||
|
* Type: ltPAYCHAN (0x0078)
|
||||||
|
* RPC Name: payment_channel
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use PayChannelBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class PayChannel : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltPAYCHAN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a PayChannel ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit PayChannel(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for PayChannel");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
if (hasSequence())
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSequence is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBalance (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getBalance() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPublicKey (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_VL::type::value_type
|
||||||
|
getPublicKey() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPublicKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSettleDelay (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSettleDelay() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSettleDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
return this->sle_->at(sfExpiration);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCancelAfter (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getCancelAfter() const
|
||||||
|
{
|
||||||
|
if (hasCancelAfter())
|
||||||
|
return this->sle_->at(sfCancelAfter);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCancelAfter is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCancelAfter() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfCancelAfter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSourceTag() const
|
||||||
|
{
|
||||||
|
if (hasSourceTag())
|
||||||
|
return this->sle_->at(sfSourceTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSourceTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSourceTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfSourceTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getDestinationTag() const
|
||||||
|
{
|
||||||
|
if (hasDestinationTag())
|
||||||
|
return this->sle_->at(sfDestinationTag);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationTag() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestinationTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getDestinationNode() const
|
||||||
|
{
|
||||||
|
if (hasDestinationNode())
|
||||||
|
return this->sle_->at(sfDestinationNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfDestinationNode);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for PayChannel ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class PayChannelBuilder : public LedgerEntryBuilderBase<PayChannelBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new PayChannelBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param destination The sfDestination field value.
|
||||||
|
* @param amount The sfAmount field value.
|
||||||
|
* @param balance The sfBalance field value.
|
||||||
|
* @param publicKey The sfPublicKey field value.
|
||||||
|
* @param settleDelay The sfSettleDelay field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ACCOUNT::type::value_type> const& destination,std::decay_t<typename SF_AMOUNT::type::value_type> const& amount,std::decay_t<typename SF_AMOUNT::type::value_type> const& balance,std::decay_t<typename SF_VL::type::value_type> const& publicKey,std::decay_t<typename SF_UINT32::type::value_type> const& settleDelay,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<PayChannelBuilder>(ltPAYCHAN)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setDestination(destination);
|
||||||
|
setAmount(amount);
|
||||||
|
setBalance(balance);
|
||||||
|
setPublicKey(publicKey);
|
||||||
|
setSettleDelay(settleDelay);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a PayChannelBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltPAYCHAN)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for PayChannel");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBalance (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setBalance(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBalance] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPublicKey (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setPublicKey(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPublicKey] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSettleDelay (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setSettleDelay(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSettleDelay] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCancelAfter (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setCancelAfter(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCancelAfter] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSourceTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setSourceTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSourceTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setDestinationTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PayChannelBuilder&
|
||||||
|
setDestinationNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed PayChannel wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
PayChannel
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return PayChannel{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
@@ -0,0 +1,240 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class PermissionedDomainBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: PermissionedDomain
|
||||||
|
*
|
||||||
|
* Type: ltPERMISSIONED_DOMAIN (0x0082)
|
||||||
|
* RPC Name: permissioned_domain
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use PermissionedDomainBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class PermissionedDomain : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltPERMISSIONED_DOMAIN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a PermissionedDomain ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit PermissionedDomain(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for PermissionedDomain");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAcceptedCredentials (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getAcceptedCredentials() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfAcceptedCredentials);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for PermissionedDomain ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class PermissionedDomainBuilder : public LedgerEntryBuilderBase<PermissionedDomainBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new PermissionedDomainBuilder with required fields.
|
||||||
|
* @param owner The sfOwner field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param acceptedCredentials The sfAcceptedCredentials field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& owner,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,STArray const& acceptedCredentials,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<PermissionedDomainBuilder>(ltPERMISSIONED_DOMAIN)
|
||||||
|
{
|
||||||
|
setOwner(owner);
|
||||||
|
setSequence(sequence);
|
||||||
|
setAcceptedCredentials(acceptedCredentials);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a PermissionedDomainBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltPERMISSIONED_DOMAIN)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for PermissionedDomain");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAcceptedCredentials (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setAcceptedCredentials(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfAcceptedCredentials, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
PermissionedDomainBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed PermissionedDomain wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
PermissionedDomain
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return PermissionedDomain{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
425
include/xrpl/protocol_autogen/ledger_entries/RippleState.h
Normal file
425
include/xrpl/protocol_autogen/ledger_entries/RippleState.h
Normal file
@@ -0,0 +1,425 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class RippleStateBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: RippleState
|
||||||
|
*
|
||||||
|
* Type: ltRIPPLE_STATE (0x0072)
|
||||||
|
* RPC Name: state
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use RippleStateBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class RippleState : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltRIPPLE_STATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a RippleState ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit RippleState(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for RippleState");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBalance (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getBalance() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfBalance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLowLimit (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getLowLimit() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfLowLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHighLimit (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getHighLimit() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfHighLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLowNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getLowNode() const
|
||||||
|
{
|
||||||
|
if (hasLowNode())
|
||||||
|
return this->sle_->at(sfLowNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLowNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLowNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLowNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLowQualityIn (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getLowQualityIn() const
|
||||||
|
{
|
||||||
|
if (hasLowQualityIn())
|
||||||
|
return this->sle_->at(sfLowQualityIn);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLowQualityIn is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLowQualityIn() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLowQualityIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLowQualityOut (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getLowQualityOut() const
|
||||||
|
{
|
||||||
|
if (hasLowQualityOut())
|
||||||
|
return this->sle_->at(sfLowQualityOut);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLowQualityOut is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLowQualityOut() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLowQualityOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHighNode (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT64::type::value_type>
|
||||||
|
getHighNode() const
|
||||||
|
{
|
||||||
|
if (hasHighNode())
|
||||||
|
return this->sle_->at(sfHighNode);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfHighNode is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasHighNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfHighNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHighQualityIn (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getHighQualityIn() const
|
||||||
|
{
|
||||||
|
if (hasHighQualityIn())
|
||||||
|
return this->sle_->at(sfHighQualityIn);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfHighQualityIn is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasHighQualityIn() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfHighQualityIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHighQualityOut (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getHighQualityOut() const
|
||||||
|
{
|
||||||
|
if (hasHighQualityOut())
|
||||||
|
return this->sle_->at(sfHighQualityOut);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfHighQualityOut is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasHighQualityOut() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfHighQualityOut);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for RippleState ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class RippleStateBuilder : public LedgerEntryBuilderBase<RippleStateBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new RippleStateBuilder with required fields.
|
||||||
|
* @param balance The sfBalance field value.
|
||||||
|
* @param lowLimit The sfLowLimit field value.
|
||||||
|
* @param highLimit The sfHighLimit field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder(std::decay_t<typename SF_AMOUNT::type::value_type> const& balance,std::decay_t<typename SF_AMOUNT::type::value_type> const& lowLimit,std::decay_t<typename SF_AMOUNT::type::value_type> const& highLimit,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<RippleStateBuilder>(ltRIPPLE_STATE)
|
||||||
|
{
|
||||||
|
setBalance(balance);
|
||||||
|
setLowLimit(lowLimit);
|
||||||
|
setHighLimit(highLimit);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a RippleStateBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltRIPPLE_STATE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for RippleState");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBalance (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setBalance(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBalance] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLowLimit (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setLowLimit(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLowLimit] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHighLimit (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setHighLimit(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHighLimit] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLowNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setLowNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLowNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLowQualityIn (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setLowQualityIn(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLowQualityIn] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLowQualityOut (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setLowQualityOut(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLowQualityOut] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHighNode (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setHighNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHighNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHighQualityIn (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setHighQualityIn(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHighQualityIn] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHighQualityOut (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
RippleStateBuilder&
|
||||||
|
setHighQualityOut(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHighQualityOut] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed RippleState wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
RippleState
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return RippleState{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
275
include/xrpl/protocol_autogen/ledger_entries/SignerList.h
Normal file
275
include/xrpl/protocol_autogen/ledger_entries/SignerList.h
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class SignerListBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: SignerList
|
||||||
|
*
|
||||||
|
* Type: ltSIGNER_LIST (0x0053)
|
||||||
|
* RPC Name: signer_list
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use SignerListBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class SignerList : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltSIGNER_LIST;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a SignerList ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit SignerList(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for SignerList");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
if (hasOwner())
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfOwner is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSignerQuorum (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSignerQuorum() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSignerQuorum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSignerEntries (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getSignerEntries() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfSignerEntries);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSignerListID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSignerListID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSignerListID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for SignerList ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class SignerListBuilder : public LedgerEntryBuilderBase<SignerListBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new SignerListBuilder with required fields.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param signerQuorum The sfSignerQuorum field value.
|
||||||
|
* @param signerEntries The sfSignerEntries field value.
|
||||||
|
* @param signerListID The sfSignerListID field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
SignerListBuilder(std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT32::type::value_type> const& signerQuorum,STArray const& signerEntries,std::decay_t<typename SF_UINT32::type::value_type> const& signerListID,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<SignerListBuilder>(ltSIGNER_LIST)
|
||||||
|
{
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setSignerQuorum(signerQuorum);
|
||||||
|
setSignerEntries(signerEntries);
|
||||||
|
setSignerListID(signerListID);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a SignerListBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
SignerListBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltSIGNER_LIST)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for SignerList");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSignerQuorum (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setSignerQuorum(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSignerQuorum] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSignerEntries (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setSignerEntries(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfSignerEntries, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSignerListID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setSignerListID(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSignerListID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
SignerListBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed SignerList wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
SignerList
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return SignerList{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
215
include/xrpl/protocol_autogen/ledger_entries/Ticket.h
Normal file
215
include/xrpl/protocol_autogen/ledger_entries/Ticket.h
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class TicketBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Ticket
|
||||||
|
*
|
||||||
|
* Type: ltTICKET (0x0054)
|
||||||
|
* RPC Name: ticket
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use TicketBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Ticket : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltTICKET;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Ticket ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Ticket(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Ticket");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTicketSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getTicketSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfTicketSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Ticket ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class TicketBuilder : public LedgerEntryBuilderBase<TicketBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new TicketBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param ticketSequence The sfTicketSequence field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
TicketBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT32::type::value_type> const& ticketSequence,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<TicketBuilder>(ltTICKET)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setTicketSequence(ticketSequence);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a TicketBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
TicketBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltTICKET)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Ticket");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
TicketBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
TicketBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTicketSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
TicketBuilder&
|
||||||
|
setTicketSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTicketSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
TicketBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
TicketBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Ticket wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Ticket
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Ticket{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
521
include/xrpl/protocol_autogen/ledger_entries/Vault.h
Normal file
521
include/xrpl/protocol_autogen/ledger_entries/Vault.h
Normal file
@@ -0,0 +1,521 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class VaultBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: Vault
|
||||||
|
*
|
||||||
|
* Type: ltVAULT (0x0084)
|
||||||
|
* RPC Name: vault
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use VaultBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class Vault : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltVAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Vault ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Vault(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Vault");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSequence (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getSequence() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwner (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOwner() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfData (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getData() const
|
||||||
|
{
|
||||||
|
if (hasData())
|
||||||
|
return this->sle_->at(sfData);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfData is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasData() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfData);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAssetsTotal (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getAssetsTotal() const
|
||||||
|
{
|
||||||
|
if (hasAssetsTotal())
|
||||||
|
return this->sle_->at(sfAssetsTotal);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAssetsTotal is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAssetsTotal() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAssetsTotal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAssetsAvailable (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getAssetsAvailable() const
|
||||||
|
{
|
||||||
|
if (hasAssetsAvailable())
|
||||||
|
return this->sle_->at(sfAssetsAvailable);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAssetsAvailable is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAssetsAvailable() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAssetsAvailable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAssetsMaximum (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getAssetsMaximum() const
|
||||||
|
{
|
||||||
|
if (hasAssetsMaximum())
|
||||||
|
return this->sle_->at(sfAssetsMaximum);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAssetsMaximum is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAssetsMaximum() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfAssetsMaximum);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLossUnrealized (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_NUMBER::type::value_type>
|
||||||
|
getLossUnrealized() const
|
||||||
|
{
|
||||||
|
if (hasLossUnrealized())
|
||||||
|
return this->sle_->at(sfLossUnrealized);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLossUnrealized is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLossUnrealized() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfLossUnrealized);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfShareMPTID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT192::type::value_type
|
||||||
|
getShareMPTID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfShareMPTID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfWithdrawalPolicy (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT8::type::value_type
|
||||||
|
getWithdrawalPolicy() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfWithdrawalPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfScale (soeDEFAULT)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT8::type::value_type>
|
||||||
|
getScale() const
|
||||||
|
{
|
||||||
|
if (hasScale())
|
||||||
|
return this->sle_->at(sfScale);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfScale is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasScale() const
|
||||||
|
{
|
||||||
|
return this->sle_->isFieldPresent(sfScale);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Vault ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class VaultBuilder : public LedgerEntryBuilderBase<VaultBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new VaultBuilder with required fields.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
* @param sequence The sfSequence field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param owner The sfOwner field value.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param shareMPTID The sfShareMPTID field value.
|
||||||
|
* @param withdrawalPolicy The sfWithdrawalPolicy field value.
|
||||||
|
*/
|
||||||
|
VaultBuilder(std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq,std::decay_t<typename SF_UINT32::type::value_type> const& sequence,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_ACCOUNT::type::value_type> const& owner,std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_ISSUE::type::value_type> const& asset,std::decay_t<typename SF_UINT192::type::value_type> const& shareMPTID,std::decay_t<typename SF_UINT8::type::value_type> const& withdrawalPolicy)
|
||||||
|
: LedgerEntryBuilderBase<VaultBuilder>(ltVAULT)
|
||||||
|
{
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
setSequence(sequence);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setOwner(owner);
|
||||||
|
setAccount(account);
|
||||||
|
setAsset(asset);
|
||||||
|
setShareMPTID(shareMPTID);
|
||||||
|
setWithdrawalPolicy(withdrawalPolicy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a VaultBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
VaultBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltVAULT)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for Vault");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSequence (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setSequence(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSequence] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwner (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setOwner(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwner] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfData (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setData(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfData] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAssetsTotal (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setAssetsTotal(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAssetsTotal] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAssetsAvailable (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setAssetsAvailable(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAssetsAvailable] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAssetsMaximum (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setAssetsMaximum(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAssetsMaximum] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLossUnrealized (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setLossUnrealized(std::decay_t<typename SF_NUMBER::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLossUnrealized] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfShareMPTID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setShareMPTID(std::decay_t<typename SF_UINT192::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfShareMPTID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfWithdrawalPolicy (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setWithdrawalPolicy(std::decay_t<typename SF_UINT8::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfWithdrawalPolicy] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfScale (soeDEFAULT)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
VaultBuilder&
|
||||||
|
setScale(std::decay_t<typename SF_UINT8::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfScale] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed Vault wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
Vault
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return Vault{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
@@ -0,0 +1,312 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class XChainOwnedClaimIDBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: XChainOwnedClaimID
|
||||||
|
*
|
||||||
|
* Type: ltXCHAIN_OWNED_CLAIM_ID (0x0071)
|
||||||
|
* RPC Name: xchain_owned_claim_id
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use XChainOwnedClaimIDBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class XChainOwnedClaimID : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltXCHAIN_OWNED_CLAIM_ID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a XChainOwnedClaimID ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit XChainOwnedClaimID(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for XChainOwnedClaimID");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_XCHAIN_BRIDGE::type::value_type
|
||||||
|
getXChainBridge() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainBridge);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainClaimID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getXChainClaimID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainClaimID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOtherChainSource (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getOtherChainSource() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOtherChainSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainClaimAttestations (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getXChainClaimAttestations() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfXChainClaimAttestations);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSignatureReward (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getSignatureReward() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfSignatureReward);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for XChainOwnedClaimID ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class XChainOwnedClaimIDBuilder : public LedgerEntryBuilderBase<XChainOwnedClaimIDBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new XChainOwnedClaimIDBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param xChainBridge The sfXChainBridge field value.
|
||||||
|
* @param xChainClaimID The sfXChainClaimID field value.
|
||||||
|
* @param otherChainSource The sfOtherChainSource field value.
|
||||||
|
* @param xChainClaimAttestations The sfXChainClaimAttestations field value.
|
||||||
|
* @param signatureReward The sfSignatureReward field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& xChainBridge,std::decay_t<typename SF_UINT64::type::value_type> const& xChainClaimID,std::decay_t<typename SF_ACCOUNT::type::value_type> const& otherChainSource,STArray const& xChainClaimAttestations,std::decay_t<typename SF_AMOUNT::type::value_type> const& signatureReward,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<XChainOwnedClaimIDBuilder>(ltXCHAIN_OWNED_CLAIM_ID)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setXChainBridge(xChainBridge);
|
||||||
|
setXChainClaimID(xChainClaimID);
|
||||||
|
setOtherChainSource(otherChainSource);
|
||||||
|
setXChainClaimAttestations(xChainClaimAttestations);
|
||||||
|
setSignatureReward(signatureReward);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a XChainOwnedClaimIDBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltXCHAIN_OWNED_CLAIM_ID)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for XChainOwnedClaimID");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setXChainBridge(std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainBridge] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainClaimID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setXChainClaimID(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainClaimID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOtherChainSource (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setOtherChainSource(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOtherChainSource] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainClaimAttestations (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setXChainClaimAttestations(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfXChainClaimAttestations, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSignatureReward (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setSignatureReward(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSignatureReward] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimIDBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed XChainOwnedClaimID wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
XChainOwnedClaimID
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return XChainOwnedClaimID{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STLedgerEntry.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::ledger_entries {
|
||||||
|
|
||||||
|
class XChainOwnedCreateAccountClaimIDBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ledger Entry: XChainOwnedCreateAccountClaimID
|
||||||
|
*
|
||||||
|
* Type: ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID (0x0074)
|
||||||
|
* RPC Name: xchain_owned_create_account_claim_id
|
||||||
|
*
|
||||||
|
* Immutable wrapper around SLE providing type-safe field access.
|
||||||
|
* Use XChainOwnedCreateAccountClaimIDBuilder to construct new ledger entries.
|
||||||
|
*/
|
||||||
|
class XChainOwnedCreateAccountClaimID : public LedgerEntryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr LedgerEntryType entryType = ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a XChainOwnedCreateAccountClaimID ledger entry wrapper from an existing SLE object.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit XChainOwnedCreateAccountClaimID(std::shared_ptr<SLE const> sle)
|
||||||
|
: LedgerEntryBase(std::move(sle))
|
||||||
|
{
|
||||||
|
// Verify ledger entry type
|
||||||
|
if (sle_->getType() != entryType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for XChainOwnedCreateAccountClaimID");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ledger entry-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAccount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getAccount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfAccount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_XCHAIN_BRIDGE::type::value_type
|
||||||
|
getXChainBridge() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainBridge);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainAccountCreateCount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getXChainAccountCreateCount() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfXChainAccountCreateCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfXChainCreateAccountAttestations (soeREQUIRED)
|
||||||
|
* @note This is an untyped field (unknown).
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getXChainCreateAccountAttestations() const
|
||||||
|
{
|
||||||
|
return this->sle_->getFieldArray(sfXChainCreateAccountAttestations);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT64::type::value_type
|
||||||
|
getOwnerNode() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfOwnerNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getPreviousTxnID() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT32::type::value_type
|
||||||
|
getPreviousTxnLgrSeq() const
|
||||||
|
{
|
||||||
|
return this->sle_->at(sfPreviousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for XChainOwnedCreateAccountClaimID ledger entries.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing ledger entries with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible ledger entry construction.
|
||||||
|
* Inherits common field setters from LedgerEntryBuilderBase.
|
||||||
|
*/
|
||||||
|
class XChainOwnedCreateAccountClaimIDBuilder : public LedgerEntryBuilderBase<XChainOwnedCreateAccountClaimIDBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new XChainOwnedCreateAccountClaimIDBuilder with required fields.
|
||||||
|
* @param account The sfAccount field value.
|
||||||
|
* @param xChainBridge The sfXChainBridge field value.
|
||||||
|
* @param xChainAccountCreateCount The sfXChainAccountCreateCount field value.
|
||||||
|
* @param xChainCreateAccountAttestations The sfXChainCreateAccountAttestations field value.
|
||||||
|
* @param ownerNode The sfOwnerNode field value.
|
||||||
|
* @param previousTxnID The sfPreviousTxnID field value.
|
||||||
|
* @param previousTxnLgrSeq The sfPreviousTxnLgrSeq field value.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& account,std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& xChainBridge,std::decay_t<typename SF_UINT64::type::value_type> const& xChainAccountCreateCount,STArray const& xChainCreateAccountAttestations,std::decay_t<typename SF_UINT64::type::value_type> const& ownerNode,std::decay_t<typename SF_UINT256::type::value_type> const& previousTxnID,std::decay_t<typename SF_UINT32::type::value_type> const& previousTxnLgrSeq)
|
||||||
|
: LedgerEntryBuilderBase<XChainOwnedCreateAccountClaimIDBuilder>(ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID)
|
||||||
|
{
|
||||||
|
setAccount(account);
|
||||||
|
setXChainBridge(xChainBridge);
|
||||||
|
setXChainAccountCreateCount(xChainAccountCreateCount);
|
||||||
|
setXChainCreateAccountAttestations(xChainCreateAccountAttestations);
|
||||||
|
setOwnerNode(ownerNode);
|
||||||
|
setPreviousTxnID(previousTxnID);
|
||||||
|
setPreviousTxnLgrSeq(previousTxnLgrSeq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a XChainOwnedCreateAccountClaimIDBuilder from an existing SLE object.
|
||||||
|
* @param sle The existing ledger entry to copy from.
|
||||||
|
* @throws std::runtime_error if the ledger entry type doesn't match.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder(std::shared_ptr<SLE const> sle)
|
||||||
|
{
|
||||||
|
if (sle->at(sfLedgerEntryType) != ltXCHAIN_OWNED_CREATE_ACCOUNT_CLAIM_ID)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid ledger entry type for XChainOwnedCreateAccountClaimID");
|
||||||
|
}
|
||||||
|
object_ = *sle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Ledger entry-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAccount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setAccount(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAccount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainBridge (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setXChainBridge(std::decay_t<typename SF_XCHAIN_BRIDGE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainBridge] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainAccountCreateCount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setXChainAccountCreateCount(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfXChainAccountCreateCount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfXChainCreateAccountAttestations (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setXChainCreateAccountAttestations(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfXChainCreateAccountAttestations, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfOwnerNode (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setOwnerNode(std::decay_t<typename SF_UINT64::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfOwnerNode] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setPreviousTxnID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfPreviousTxnLgrSeq (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimIDBuilder&
|
||||||
|
setPreviousTxnLgrSeq(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfPreviousTxnLgrSeq] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the completed XChainOwnedCreateAccountClaimID wrapper.
|
||||||
|
* @param index The ledger entry index.
|
||||||
|
* @return The constructed ledger entry wrapper.
|
||||||
|
*/
|
||||||
|
XChainOwnedCreateAccountClaimID
|
||||||
|
build(uint256 const& index)
|
||||||
|
{
|
||||||
|
return XChainOwnedCreateAccountClaimID{std::make_shared<SLE>(std::move(object_), index)};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::ledger_entries
|
||||||
262
include/xrpl/protocol_autogen/transactions/AMMBid.h
Normal file
262
include/xrpl/protocol_autogen/transactions/AMMBid.h
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMBidBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMBid
|
||||||
|
*
|
||||||
|
* Type: ttAMM_BID (39)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMBidBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMBid : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_BID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMBid transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMBid(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMBid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBidMin (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getBidMin() const
|
||||||
|
{
|
||||||
|
if (hasBidMin())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfBidMin);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBidMin is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBidMin() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfBidMin);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfBidMax (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getBidMax() const
|
||||||
|
{
|
||||||
|
if (hasBidMax())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfBidMax);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBidMax is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBidMax() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfBidMax);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief Get sfAuthAccounts (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field.
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getAuthAccounts() const
|
||||||
|
{
|
||||||
|
if (this->tx_->isFieldPresent(sfAuthAccounts))
|
||||||
|
return this->tx_->getFieldArray(sfAuthAccounts);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAuthAccounts is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAuthAccounts() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAuthAccounts);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMBid transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMBidBuilder : public TransactionBuilderBase<AMMBidBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMBidBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMBidBuilder>(ttAMM_BID, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMBidBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_BID)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMBidBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBidMin (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder&
|
||||||
|
setBidMin(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBidMin] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBidMax (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder&
|
||||||
|
setBidMax(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfBidMax] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAuthAccounts (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMBidBuilder&
|
||||||
|
setAuthAccounts(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfAuthAccounts, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMBid wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMBid
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMBid{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
214
include/xrpl/protocol_autogen/transactions/AMMClawback.h
Normal file
214
include/xrpl/protocol_autogen/transactions/AMMClawback.h
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMClawbackBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMClawback
|
||||||
|
*
|
||||||
|
* Type: ttAMM_CLAWBACK (31)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMMClawback
|
||||||
|
* Privileges: mayDeleteAcct | overrideFreeze
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMClawbackBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMClawback : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_CLAWBACK;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMClawback transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMClawback(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMClawback");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHolder (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getHolder() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfHolder);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
if (hasAmount())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMClawback transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMClawbackBuilder : public TransactionBuilderBase<AMMClawbackBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMClawbackBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param holder The sfHolder field value.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ACCOUNT::type::value_type> const& holder, std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMClawbackBuilder>(ttAMM_CLAWBACK, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setHolder(holder);
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMClawbackBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_CLAWBACK)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMClawbackBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHolder (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder&
|
||||||
|
setHolder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHolder] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMClawbackBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMClawback wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMClawback
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMClawback{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
177
include/xrpl/protocol_autogen/transactions/AMMCreate.h
Normal file
177
include/xrpl/protocol_autogen/transactions/AMMCreate.h
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMCreateBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMCreate
|
||||||
|
*
|
||||||
|
* Type: ttAMM_CREATE (35)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: createPseudoAcct
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMCreateBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMCreate : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_CREATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMCreate transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMCreate(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMCreate");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTradingFee (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT16::type::value_type
|
||||||
|
getTradingFee() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfTradingFee);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMCreate transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMCreateBuilder : public TransactionBuilderBase<AMMCreateBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMCreateBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param amount The sfAmount field value.
|
||||||
|
* @param amount2 The sfAmount2 field value.
|
||||||
|
* @param tradingFee The sfTradingFee field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMCreateBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_AMOUNT::type::value_type> const& amount, std::decay_t<typename SF_AMOUNT::type::value_type> const& amount2, std::decay_t<typename SF_UINT16::type::value_type> const& tradingFee, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMCreateBuilder>(ttAMM_CREATE, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAmount(amount);
|
||||||
|
setAmount2(amount2);
|
||||||
|
setTradingFee(tradingFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMCreateBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMCreateBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_CREATE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMCreateBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMCreateBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMCreateBuilder&
|
||||||
|
setAmount2(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount2] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTradingFee (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMCreateBuilder&
|
||||||
|
setTradingFee(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTradingFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMCreate wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMCreate
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMCreate{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
153
include/xrpl/protocol_autogen/transactions/AMMDelete.h
Normal file
153
include/xrpl/protocol_autogen/transactions/AMMDelete.h
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMDeleteBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMDelete
|
||||||
|
*
|
||||||
|
* Type: ttAMM_DELETE (40)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: mustDeleteAcct
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMDeleteBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMDelete : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_DELETE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMDelete transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMDelete(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMDelete");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMDelete transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMDeleteBuilder : public TransactionBuilderBase<AMMDeleteBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMDeleteBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMDeleteBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMDeleteBuilder>(ttAMM_DELETE, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMDeleteBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMDeleteBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_DELETE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMDeleteBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDeleteBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDeleteBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMDelete wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMDelete
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMDelete{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
338
include/xrpl/protocol_autogen/transactions/AMMDeposit.h
Normal file
338
include/xrpl/protocol_autogen/transactions/AMMDeposit.h
Normal file
@@ -0,0 +1,338 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMDepositBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMDeposit
|
||||||
|
*
|
||||||
|
* Type: ttAMM_DEPOSIT (36)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMDepositBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMDeposit : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_DEPOSIT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMDeposit transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMDeposit(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMDeposit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
if (hasAmount())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount2 (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount2() const
|
||||||
|
{
|
||||||
|
if (hasAmount2())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount2);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount2 is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount2() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfEPrice (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getEPrice() const
|
||||||
|
{
|
||||||
|
if (hasEPrice())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfEPrice);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfEPrice is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasEPrice() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfEPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLPTokenOut (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getLPTokenOut() const
|
||||||
|
{
|
||||||
|
if (hasLPTokenOut())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfLPTokenOut);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLPTokenOut is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLPTokenOut() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfLPTokenOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTradingFee (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT16::type::value_type>
|
||||||
|
getTradingFee() const
|
||||||
|
{
|
||||||
|
if (hasTradingFee())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfTradingFee);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTradingFee is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTradingFee() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfTradingFee);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMDeposit transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMDepositBuilder : public TransactionBuilderBase<AMMDepositBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMDepositBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMDepositBuilder>(ttAMM_DEPOSIT, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMDepositBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_DEPOSIT)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMDepositBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount2 (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setAmount2(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount2] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfEPrice (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setEPrice(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfEPrice] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLPTokenOut (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setLPTokenOut(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLPTokenOut] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTradingFee (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMDepositBuilder&
|
||||||
|
setTradingFee(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTradingFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMDeposit wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMDeposit
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMDeposit{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
177
include/xrpl/protocol_autogen/transactions/AMMVote.h
Normal file
177
include/xrpl/protocol_autogen/transactions/AMMVote.h
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMVoteBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMVote
|
||||||
|
*
|
||||||
|
* Type: ttAMM_VOTE (38)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMVoteBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMVote : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_VOTE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMVote transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMVote(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMVote");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTradingFee (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT16::type::value_type
|
||||||
|
getTradingFee() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfTradingFee);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMVote transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMVoteBuilder : public TransactionBuilderBase<AMMVoteBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMVoteBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param tradingFee The sfTradingFee field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMVoteBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::decay_t<typename SF_UINT16::type::value_type> const& tradingFee, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMVoteBuilder>(ttAMM_VOTE, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
setTradingFee(tradingFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMVoteBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMVoteBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_VOTE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMVoteBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMVoteBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMVoteBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTradingFee (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMVoteBuilder&
|
||||||
|
setTradingFee(std::decay_t<typename SF_UINT16::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTradingFee] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMVote wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMVote
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMVote{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
301
include/xrpl/protocol_autogen/transactions/AMMWithdraw.h
Normal file
301
include/xrpl/protocol_autogen/transactions/AMMWithdraw.h
Normal file
@@ -0,0 +1,301 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AMMWithdrawBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AMMWithdraw
|
||||||
|
*
|
||||||
|
* Type: ttAMM_WITHDRAW (37)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureAMM
|
||||||
|
* Privileges: mayDeleteAcct
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AMMWithdrawBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AMMWithdraw : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttAMM_WITHDRAW;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMWithdraw transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AMMWithdraw(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMWithdraw");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAsset2 (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ISSUE::type::value_type
|
||||||
|
getAsset2() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAsset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
if (hasAmount())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount2 (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount2() const
|
||||||
|
{
|
||||||
|
if (hasAmount2())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount2);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount2 is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount2() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfEPrice (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getEPrice() const
|
||||||
|
{
|
||||||
|
if (hasEPrice())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfEPrice);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfEPrice is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasEPrice() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfEPrice);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfLPTokenIn (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getLPTokenIn() const
|
||||||
|
{
|
||||||
|
if (hasLPTokenIn())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfLPTokenIn);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfLPTokenIn is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasLPTokenIn() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfLPTokenIn);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AMMWithdraw transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AMMWithdrawBuilder : public TransactionBuilderBase<AMMWithdrawBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AMMWithdrawBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param asset The sfAsset field value.
|
||||||
|
* @param asset2 The sfAsset2 field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ISSUE::type::value_type> const& asset, std::decay_t<typename SF_ISSUE::type::value_type> const& asset2, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AMMWithdrawBuilder>(ttAMM_WITHDRAW, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAsset(asset);
|
||||||
|
setAsset2(asset2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AMMWithdrawBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttAMM_WITHDRAW)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AMMWithdrawBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setAsset(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset] = STIssue(sfAsset, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAsset2 (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setAsset2(std::decay_t<typename SF_ISSUE::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAsset2] = STIssue(sfAsset2, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount2 (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setAmount2(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount2] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfEPrice (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setEPrice(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfEPrice] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfLPTokenIn (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AMMWithdrawBuilder&
|
||||||
|
setLPTokenIn(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfLPTokenIn] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AMMWithdraw wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AMMWithdraw
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AMMWithdraw{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
203
include/xrpl/protocol_autogen/transactions/AccountDelete.h
Normal file
203
include/xrpl/protocol_autogen/transactions/AccountDelete.h
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AccountDeleteBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AccountDelete
|
||||||
|
*
|
||||||
|
* Type: ttACCOUNT_DELETE (21)
|
||||||
|
* Delegable: Delegation::notDelegable
|
||||||
|
* Amendment: uint256{}
|
||||||
|
* Privileges: mustDeleteAcct
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AccountDeleteBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AccountDelete : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttACCOUNT_DELETE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountDelete transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AccountDelete(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AccountDelete");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getDestinationTag() const
|
||||||
|
{
|
||||||
|
if (hasDestinationTag())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDestinationTag);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationTag() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfDestinationTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCredentialIDs (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VECTOR256::type::value_type>
|
||||||
|
getCredentialIDs() const
|
||||||
|
{
|
||||||
|
if (hasCredentialIDs())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfCredentialIDs);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfCredentialIDs is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasCredentialIDs() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfCredentialIDs);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AccountDelete transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AccountDeleteBuilder : public TransactionBuilderBase<AccountDeleteBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AccountDeleteBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param destination The sfDestination field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AccountDeleteBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ACCOUNT::type::value_type> const& destination, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AccountDeleteBuilder>(ttACCOUNT_DELETE, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setDestination(destination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountDeleteBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AccountDeleteBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttACCOUNT_DELETE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AccountDeleteBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountDeleteBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountDeleteBuilder&
|
||||||
|
setDestinationTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCredentialIDs (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountDeleteBuilder&
|
||||||
|
setCredentialIDs(std::decay_t<typename SF_VECTOR256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCredentialIDs] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AccountDelete wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AccountDelete
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AccountDelete{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
475
include/xrpl/protocol_autogen/transactions/AccountSet.h
Normal file
475
include/xrpl/protocol_autogen/transactions/AccountSet.h
Normal file
@@ -0,0 +1,475 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class AccountSetBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: AccountSet
|
||||||
|
*
|
||||||
|
* Type: ttACCOUNT_SET (3)
|
||||||
|
* Delegable: Delegation::notDelegable
|
||||||
|
* Amendment: uint256{}
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use AccountSetBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class AccountSet : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttACCOUNT_SET;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountSet transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit AccountSet(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AccountSet");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfEmailHash (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT128::type::value_type>
|
||||||
|
getEmailHash() const
|
||||||
|
{
|
||||||
|
if (hasEmailHash())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfEmailHash);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfEmailHash is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasEmailHash() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfEmailHash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfWalletLocator (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getWalletLocator() const
|
||||||
|
{
|
||||||
|
if (hasWalletLocator())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfWalletLocator);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfWalletLocator is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasWalletLocator() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfWalletLocator);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfWalletSize (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getWalletSize() const
|
||||||
|
{
|
||||||
|
if (hasWalletSize())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfWalletSize);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfWalletSize is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasWalletSize() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfWalletSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfMessageKey (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getMessageKey() const
|
||||||
|
{
|
||||||
|
if (hasMessageKey())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfMessageKey);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfMessageKey is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasMessageKey() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfMessageKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDomain (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_VL::type::value_type>
|
||||||
|
getDomain() const
|
||||||
|
{
|
||||||
|
if (hasDomain())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDomain);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDomain is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDomain() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfDomain);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getTransferRate() const
|
||||||
|
{
|
||||||
|
if (hasTransferRate())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfTransferRate);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTransferRate is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTransferRate() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfTransferRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSetFlag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getSetFlag() const
|
||||||
|
{
|
||||||
|
if (hasSetFlag())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfSetFlag);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfSetFlag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasSetFlag() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfSetFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfClearFlag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getClearFlag() const
|
||||||
|
{
|
||||||
|
if (hasClearFlag())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfClearFlag);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfClearFlag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasClearFlag() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfClearFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfTickSize (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT8::type::value_type>
|
||||||
|
getTickSize() const
|
||||||
|
{
|
||||||
|
if (hasTickSize())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfTickSize);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfTickSize is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasTickSize() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfTickSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfNFTokenMinter (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getNFTokenMinter() const
|
||||||
|
{
|
||||||
|
if (hasNFTokenMinter())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfNFTokenMinter);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfNFTokenMinter is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasNFTokenMinter() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfNFTokenMinter);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for AccountSet transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class AccountSetBuilder : public TransactionBuilderBase<AccountSetBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new AccountSetBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<AccountSetBuilder>(ttACCOUNT_SET, account, sequence, fee)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a AccountSetBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttACCOUNT_SET)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for AccountSetBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfEmailHash (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setEmailHash(std::decay_t<typename SF_UINT128::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfEmailHash] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfWalletLocator (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setWalletLocator(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfWalletLocator] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfWalletSize (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setWalletSize(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfWalletSize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfMessageKey (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setMessageKey(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfMessageKey] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDomain (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setDomain(std::decay_t<typename SF_VL::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDomain] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTransferRate (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setTransferRate(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTransferRate] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSetFlag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setSetFlag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSetFlag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfClearFlag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setClearFlag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfClearFlag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfTickSize (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setTickSize(std::decay_t<typename SF_UINT8::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfTickSize] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfNFTokenMinter (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
AccountSetBuilder&
|
||||||
|
setNFTokenMinter(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfNFTokenMinter] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the AccountSet wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
AccountSet
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return AccountSet{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
164
include/xrpl/protocol_autogen/transactions/Batch.h
Normal file
164
include/xrpl/protocol_autogen/transactions/Batch.h
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class BatchBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: Batch
|
||||||
|
*
|
||||||
|
* Type: ttBATCH (71)
|
||||||
|
* Delegable: Delegation::notDelegable
|
||||||
|
* Amendment: featureBatch
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use BatchBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class Batch : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttBATCH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Batch transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Batch(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for Batch");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
/**
|
||||||
|
* @brief Get sfRawTransactions (soeREQUIRED)
|
||||||
|
* @note This is an untyped field.
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
STArray const&
|
||||||
|
getRawTransactions() const
|
||||||
|
{
|
||||||
|
return this->tx_->getFieldArray(sfRawTransactions);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief Get sfBatchSigners (soeOPTIONAL)
|
||||||
|
* @note This is an untyped field.
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
std::optional<std::reference_wrapper<STArray const>>
|
||||||
|
getBatchSigners() const
|
||||||
|
{
|
||||||
|
if (this->tx_->isFieldPresent(sfBatchSigners))
|
||||||
|
return this->tx_->getFieldArray(sfBatchSigners);
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfBatchSigners is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasBatchSigners() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfBatchSigners);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Batch transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class BatchBuilder : public TransactionBuilderBase<BatchBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new BatchBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param rawTransactions The sfRawTransactions field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
BatchBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
STArray const& rawTransactions, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<BatchBuilder>(ttBATCH, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setRawTransactions(rawTransactions);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a BatchBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
BatchBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttBATCH)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for BatchBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfRawTransactions (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BatchBuilder&
|
||||||
|
setRawTransactions(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfRawTransactions, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfBatchSigners (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
BatchBuilder&
|
||||||
|
setBatchSigners(STArray const& value)
|
||||||
|
{
|
||||||
|
object_.setFieldArray(sfBatchSigners, value);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the Batch wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
Batch
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return Batch{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
129
include/xrpl/protocol_autogen/transactions/CheckCancel.h
Normal file
129
include/xrpl/protocol_autogen/transactions/CheckCancel.h
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class CheckCancelBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: CheckCancel
|
||||||
|
*
|
||||||
|
* Type: ttCHECK_CANCEL (18)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: uint256{}
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use CheckCancelBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class CheckCancel : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttCHECK_CANCEL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCancel transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit CheckCancel(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCancel");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCheckID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getCheckID() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfCheckID);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for CheckCancel transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class CheckCancelBuilder : public TransactionBuilderBase<CheckCancelBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new CheckCancelBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param checkID The sfCheckID field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
CheckCancelBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_UINT256::type::value_type> const& checkID, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<CheckCancelBuilder>(ttCHECK_CANCEL, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setCheckID(checkID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCancelBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
CheckCancelBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttCHECK_CANCEL)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCancelBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCheckID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCancelBuilder&
|
||||||
|
setCheckID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCheckID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the CheckCancel wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
CheckCancel
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return CheckCancel{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
203
include/xrpl/protocol_autogen/transactions/CheckCash.h
Normal file
203
include/xrpl/protocol_autogen/transactions/CheckCash.h
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class CheckCashBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: CheckCash
|
||||||
|
*
|
||||||
|
* Type: ttCHECK_CASH (17)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: uint256{}
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use CheckCashBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class CheckCash : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttCHECK_CASH;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCash transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit CheckCash(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCash");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfCheckID (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_UINT256::type::value_type
|
||||||
|
getCheckID() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfCheckID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
if (hasAmount())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfAmount is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDeliverMin (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_AMOUNT::type::value_type>
|
||||||
|
getDeliverMin() const
|
||||||
|
{
|
||||||
|
if (hasDeliverMin())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDeliverMin);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDeliverMin is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDeliverMin() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfDeliverMin);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for CheckCash transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class CheckCashBuilder : public TransactionBuilderBase<CheckCashBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new CheckCashBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param checkID The sfCheckID field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
CheckCashBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_UINT256::type::value_type> const& checkID, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<CheckCashBuilder>(ttCHECK_CASH, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setCheckID(checkID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCashBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
CheckCashBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttCHECK_CASH)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCashBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfCheckID (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCashBuilder&
|
||||||
|
setCheckID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfCheckID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCashBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDeliverMin (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCashBuilder&
|
||||||
|
setDeliverMin(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDeliverMin] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the CheckCash wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
CheckCash
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return CheckCash{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
264
include/xrpl/protocol_autogen/transactions/CheckCreate.h
Normal file
264
include/xrpl/protocol_autogen/transactions/CheckCreate.h
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class CheckCreateBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: CheckCreate
|
||||||
|
*
|
||||||
|
* Type: ttCHECK_CREATE (16)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: uint256{}
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use CheckCreateBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class CheckCreate : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttCHECK_CREATE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCreate transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit CheckCreate(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCreate");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestination (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_ACCOUNT::type::value_type
|
||||||
|
getDestination() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDestination);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfSendMax (soeREQUIRED)
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getSendMax() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfSendMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfExpiration (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getExpiration() const
|
||||||
|
{
|
||||||
|
if (hasExpiration())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfExpiration);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfExpiration is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasExpiration() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfExpiration);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT32::type::value_type>
|
||||||
|
getDestinationTag() const
|
||||||
|
{
|
||||||
|
if (hasDestinationTag())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfDestinationTag);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfDestinationTag is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasDestinationTag() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfDestinationTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfInvoiceID (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_UINT256::type::value_type>
|
||||||
|
getInvoiceID() const
|
||||||
|
{
|
||||||
|
if (hasInvoiceID())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfInvoiceID);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfInvoiceID is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasInvoiceID() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfInvoiceID);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for CheckCreate transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class CheckCreateBuilder : public TransactionBuilderBase<CheckCreateBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new CheckCreateBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param destination The sfDestination field value.
|
||||||
|
* @param sendMax The sfSendMax field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_ACCOUNT::type::value_type> const& destination, std::decay_t<typename SF_AMOUNT::type::value_type> const& sendMax, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<CheckCreateBuilder>(ttCHECK_CREATE, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setDestination(destination);
|
||||||
|
setSendMax(sendMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a CheckCreateBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttCHECK_CREATE)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for CheckCreateBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestination (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder&
|
||||||
|
setDestination(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestination] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfSendMax (soeREQUIRED)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder&
|
||||||
|
setSendMax(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfSendMax] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfExpiration (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder&
|
||||||
|
setExpiration(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfExpiration] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfDestinationTag (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder&
|
||||||
|
setDestinationTag(std::decay_t<typename SF_UINT32::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfDestinationTag] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfInvoiceID (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
CheckCreateBuilder&
|
||||||
|
setInvoiceID(std::decay_t<typename SF_UINT256::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfInvoiceID] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the CheckCreate wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
CheckCreate
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return CheckCreate{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
168
include/xrpl/protocol_autogen/transactions/Clawback.h
Normal file
168
include/xrpl/protocol_autogen/transactions/Clawback.h
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
// This file is auto-generated. Do not edit.
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <xrpl/protocol/STTx.h>
|
||||||
|
#include <xrpl/protocol/STParsedJSON.h>
|
||||||
|
#include <xrpl/protocol/jss.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBase.h>
|
||||||
|
#include <xrpl/protocol_autogen/TransactionBuilderBase.h>
|
||||||
|
#include <xrpl/json/json_value.h>
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
namespace xrpl::transactions {
|
||||||
|
|
||||||
|
class ClawbackBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transaction: Clawback
|
||||||
|
*
|
||||||
|
* Type: ttCLAWBACK (30)
|
||||||
|
* Delegable: Delegation::delegable
|
||||||
|
* Amendment: featureClawback
|
||||||
|
* Privileges: noPriv
|
||||||
|
*
|
||||||
|
* Immutable wrapper around STTx providing type-safe field access.
|
||||||
|
* Use ClawbackBuilder to construct new transactions.
|
||||||
|
*/
|
||||||
|
class Clawback : public TransactionBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static constexpr xrpl::TxType txType = ttCLAWBACK;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a Clawback transaction wrapper from an existing STTx object.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
explicit Clawback(std::shared_ptr<STTx const> tx)
|
||||||
|
: TransactionBase(std::move(tx))
|
||||||
|
{
|
||||||
|
// Verify transaction type
|
||||||
|
if (tx_->getTxnType() != txType)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for Clawback");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transaction-specific field getters
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfAmount (soeREQUIRED)
|
||||||
|
* @note This field supports MPT (Multi-Purpose Token) amounts.
|
||||||
|
* @return The field value.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
SF_AMOUNT::type::value_type
|
||||||
|
getAmount() const
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get sfHolder (soeOPTIONAL)
|
||||||
|
* @return The field value, or std::nullopt if not present.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
protocol_autogen::Optional<SF_ACCOUNT::type::value_type>
|
||||||
|
getHolder() const
|
||||||
|
{
|
||||||
|
if (hasHolder())
|
||||||
|
{
|
||||||
|
return this->tx_->at(sfHolder);
|
||||||
|
}
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Check if sfHolder is present.
|
||||||
|
* @return True if the field is present, false otherwise.
|
||||||
|
*/
|
||||||
|
[[nodiscard]]
|
||||||
|
bool
|
||||||
|
hasHolder() const
|
||||||
|
{
|
||||||
|
return this->tx_->isFieldPresent(sfHolder);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Builder for Clawback transactions.
|
||||||
|
*
|
||||||
|
* Provides a fluent interface for constructing transactions with method chaining.
|
||||||
|
* Uses Json::Value internally for flexible transaction construction.
|
||||||
|
* Inherits common field setters from TransactionBuilderBase.
|
||||||
|
*/
|
||||||
|
class ClawbackBuilder : public TransactionBuilderBase<ClawbackBuilder>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Construct a new ClawbackBuilder with required fields.
|
||||||
|
* @param account The account initiating the transaction.
|
||||||
|
* @param amount The sfAmount field value.
|
||||||
|
* @param sequence Optional sequence number for the transaction.
|
||||||
|
* @param fee Optional fee for the transaction.
|
||||||
|
*/
|
||||||
|
ClawbackBuilder(SF_ACCOUNT::type::value_type account,
|
||||||
|
std::decay_t<typename SF_AMOUNT::type::value_type> const& amount, std::optional<SF_UINT32::type::value_type> sequence = std::nullopt,
|
||||||
|
std::optional<SF_AMOUNT::type::value_type> fee = std::nullopt
|
||||||
|
)
|
||||||
|
: TransactionBuilderBase<ClawbackBuilder>(ttCLAWBACK, account, sequence, fee)
|
||||||
|
{
|
||||||
|
setAmount(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Construct a ClawbackBuilder from an existing STTx object.
|
||||||
|
* @param tx The existing transaction to copy from.
|
||||||
|
* @throws std::runtime_error if the transaction type doesn't match.
|
||||||
|
*/
|
||||||
|
ClawbackBuilder(std::shared_ptr<STTx const> tx)
|
||||||
|
{
|
||||||
|
if (tx->getTxnType() != ttCLAWBACK)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Invalid transaction type for ClawbackBuilder");
|
||||||
|
}
|
||||||
|
object_ = *tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @brief Transaction-specific field setters */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfAmount (soeREQUIRED)
|
||||||
|
* @note This field supports MPT (Multi-Purpose Token) amounts.
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
ClawbackBuilder&
|
||||||
|
setAmount(std::decay_t<typename SF_AMOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfAmount] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set sfHolder (soeOPTIONAL)
|
||||||
|
* @return Reference to this builder for method chaining.
|
||||||
|
*/
|
||||||
|
ClawbackBuilder&
|
||||||
|
setHolder(std::decay_t<typename SF_ACCOUNT::type::value_type> const& value)
|
||||||
|
{
|
||||||
|
object_[sfHolder] = value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Build and return the Clawback wrapper.
|
||||||
|
* @param publicKey The public key for signing.
|
||||||
|
* @param secretKey The secret key for signing.
|
||||||
|
* @return The constructed transaction wrapper.
|
||||||
|
*/
|
||||||
|
Clawback
|
||||||
|
build(PublicKey const& publicKey, SecretKey const& secretKey)
|
||||||
|
{
|
||||||
|
sign(publicKey, secretKey);
|
||||||
|
return Clawback{std::make_shared<STTx>(std::move(object_))};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace xrpl::transactions
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user