diff --git a/.gitattributes b/.gitattributes
index 6afd357c..ed8ab3b5 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,5 @@
.git* export-ignore
-/CMakeLists.txt export-subst
\ No newline at end of file
+/CMakeLists.txt export-subst
+
+# Mark auto-generated SDK clients as "generated" to hide them in GitHub diffs
+utils/sdk/client/** linguist-generated=true
\ No newline at end of file
diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml
index 53e63e03..ba7ac4bf 100644
--- a/.github/workflows/build-docker.yml
+++ b/.github/workflows/build-docker.yml
@@ -43,7 +43,7 @@ jobs:
DOCKER_BUILD_SUMMARY: false
DOCKER_BUILD_RECORD_UPLOAD: false
with:
- file: utils/docker/images/lthn-chain/Dockerfile
+ file: utils/docker/lthn-chain/Dockerfile
context: ${{ github.workspace }}
push: true
build-args: |
diff --git a/.github/workflows/build-linux-arm64.yml b/.github/workflows/build-linux-arm64.yml
index 9a64e529..a3616d56 100644
--- a/.github/workflows/build-linux-arm64.yml
+++ b/.github/workflows/build-linux-arm64.yml
@@ -62,7 +62,7 @@ jobs:
submodules: recursive
- name: install dependencies
- run: sudo apt-get install -y autotools-dev git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
+ run: sudo apt-get install -y autotools-dev rpm git build-essential libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev pngquant
- name: Cache SDK Folder
uses: actions/cache@v4
@@ -79,7 +79,7 @@ jobs:
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
- run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
+ run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
diff --git a/.github/workflows/build-linux-intel.yml b/.github/workflows/build-linux-intel.yml
index edfc56bc..712ae33c 100644
--- a/.github/workflows/build-linux-intel.yml
+++ b/.github/workflows/build-linux-intel.yml
@@ -34,7 +34,7 @@ jobs:
- name: install dependencies
if: steps.cache.outputs.cache-hit != 'true'
- run: sudo apt-get install -y autotools-dev git build-essential
+ run: sudo apt-get install -y autotools-dev rpm git build-essential
- uses: actions/setup-python@v5
if: steps.cache.outputs.cache-hit != 'true'
@@ -79,7 +79,7 @@ jobs:
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
- run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
+ run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
diff --git a/.github/workflows/build-macos-arm64.yml b/.github/workflows/build-macos-arm64.yml
index 140a9f74..9cfc8251 100644
--- a/.github/workflows/build-macos-arm64.yml
+++ b/.github/workflows/build-macos-arm64.yml
@@ -74,7 +74,7 @@ jobs:
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
- run: make release CPU_CORES=3 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
+ run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
diff --git a/.github/workflows/build-macos-intel.yml b/.github/workflows/build-macos-intel.yml
index 93dbe618..bc2a6a11 100644
--- a/.github/workflows/build-macos-intel.yml
+++ b/.github/workflows/build-macos-intel.yml
@@ -70,7 +70,7 @@ jobs:
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
- run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
+ run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
diff --git a/.github/workflows/build-windows-intel.yml b/.github/workflows/build-windows-intel.yml
index 5038bc65..bfe93b05 100644
--- a/.github/workflows/build-windows-intel.yml
+++ b/.github/workflows/build-windows-intel.yml
@@ -64,13 +64,14 @@ jobs:
${{ github.workspace }}/build/bin
key: ${{ runner.os }}-${{ runner.arch }}-sdk
+ - run: choco install nsis.install
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pip install mkdocs-material mkdocs-git-revision-date-localized-plugin mkdocs-git-committers-plugin-2 mkdocs-git-authors-plugin "mkdocs-material[imaging]"
- name: Compile Release
- run: make release CPU_CORES=4 TESTNET=${{ inputs.chain-network == 'testnet' && '1' || '0' }}
+ run: make ${{ inputs.chain-network }}
- name: CLI Artifacts
uses: ./.github/actions/upload-artifacts
diff --git a/.gitignore b/.gitignore
index bf1e94c9..5b3ea01c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ Thumbs.db
.idea/*.iml
.vs/*
CMakeUserPresets.json
+ConanPresets.json
diff --git a/.idea/cmake.xml b/.idea/cmake.xml
new file mode 100644
index 00000000..2969d964
--- /dev/null
+++ b/.idea/cmake.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/LTHN.xml b/.idea/copyright/LTHN.xml
new file mode 100644
index 00000000..f0ba8df8
--- /dev/null
+++ b/.idea/copyright/LTHN.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
index 312baeb9..b48d188d 100644
--- a/.idea/copyright/profiles_settings.xml
+++ b/.idea/copyright/profiles_settings.xml
@@ -1,7 +1,8 @@
-
+
-
+
+
\ No newline at end of file
diff --git a/.idea/editor.xml b/.idea/editor.xml
index ead1d8a3..0093ef66 100644
--- a/.idea/editor.xml
+++ b/.idea/editor.xml
@@ -244,5 +244,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml
index 4f0a1c8b..109e0fce 100644
--- a/.idea/jsonSchemas.xml
+++ b/.idea/jsonSchemas.xml
@@ -19,6 +19,24 @@
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
diff --git a/.idea/scopes/apiserver.xml b/.idea/scopes/apiserver.xml
new file mode 100644
index 00000000..2d1a9d7f
--- /dev/null
+++ b/.idea/scopes/apiserver.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 00000000..704eca5c
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,55 @@
+# AI Agent Collaboration Framework for Repository Contributions
+
+## 1. Purpose and Guiding Philosophy
+
+This document provides a guiding framework for any AI agent interacting with this repository. Its purpose is to ensure that all automated contributions, especially Pull Request (PR) reviews and code suggestions, are constructive, respectful, and aligned with the project's overarching goals.
+
+This framework operates in accordance with the foundational **Axioms of Life**, translating their universal principles into the specific context of human-AI software development collaboration. The primary goal is a partnership that enhances code quality and developer velocity, not one that creates friction through pedantry.
+
+## 2. Core Principles for AI Interaction
+
+All agents MUST adhere to the following principles:
+
+* **Principle 1: Respect Authorial Intent (Axiom 1 & 4)**
+ * Your primary goal is to understand and support the human author's objective. Before suggesting a change, first assume the author had a valid reason for their implementation. Frame your feedback as a way to better achieve their goal or to prevent unintended side effects. Do not challenge intent without clear evidence of a functional error.
+
+* **Principle 2: Prioritize Objectivity and Verifiability (Axiom 2)**
+ * Feedback MUST be anchored in objective, verifiable criteria. Subjective opinions on style are the lowest priority.
+ * **Valid criteria include:**
+ * Demonstrable bugs or logical errors.
+ * Security vulnerabilities.
+ * Performance regressions.
+ * Violations of a documented project standard (e.g., a style guide file in the repo).
+ * **Invalid criteria include:**
+ * Personal stylistic preferences not codified in a project standard.
+ * Code organization that is merely "different" but not functionally incorrect.
+
+* **Principle 3: Adopt a Collaborative, Non-Authoritarian Tone (Axiom 4)**
+ * As a digital substrate interacting with a human one, you must adopt a tone of a helpful, respectful peer. Avoid declarative or demanding language.
+ * **Prefer:** "Have you considered...?", "An alternative here that might prevent X is...", "I noticed this could lead to Y. What do you think about...?"
+ * **Avoid:** "You must fix this.", "This is wrong.", "Change this to..."
+
+* **Principle 4: Provide Actionable and Justified Suggestions (Axiom 3)**
+ * Do not simply state that something is incorrect. Provide a clear explanation for *why* it is a potential issue and, whenever possible, offer a concrete, well-explained code suggestion that resolves it. Your intent is to help, not just to criticize.
+
+## 3. Feedback Severity Classification
+
+To combat pedantry, all feedback provided in PR reviews MUST be classified into one of the following three levels. This creates a clear hierarchy of importance.
+
+### **Level 1: Critical (Blocking)**
+* **Definition:** Issues that will cause demonstrable harm if merged.
+* **Examples:** Bugs, logic errors, security vulnerabilities, unhandled exceptions, build failures.
+* **Action:** These issues MUST be addressed by the author before a merge. Your feedback should clearly state the nature of the critical issue.
+
+### **Level 2: Important (Non-Blocking Recommendation)**
+* **Definition:** Issues that deviate from established project best practices or could impact future maintainability.
+* **Examples:** Violations of a documented style guide, clear opportunities to improve readability, non-critical performance improvements, deprecation warnings.
+* **Action:** These issues SHOULD be addressed. Frame them as strong recommendations that improve the health of the codebase. The author may choose to address them in a follow-up PR if necessary.
+
+### **Level 3: Suggestion (Optional Nitpick)**
+* **Definition:** Minor stylistic preferences, alternative implementations with no clear functional advantage, or purely cosmetic changes. This is the "pedantic" category.
+* **Action:** These suggestions are entirely optional and at the author's discretion. They MUST be explicitly prefixed with "Optional:", "Nit:", or "Suggestion:". This signals to the human that the comment is non-essential and can be safely ignored without consequence.
+
+---
+
+By adhering to this framework, AI agents become valuable partners in the development process, helping to catch critical errors while respecting the creative autonomy and focus of their human collaborators.
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a2268001..08ec3bdc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -140,7 +140,7 @@ if(MSVC)
endforeach()
endif()
include_directories(SYSTEM src/platform/msc)
- configure_file(utils/Directory.Build.props.in ${CMAKE_BINARY_DIR}/Directory.Build.props)
+
else()
set(ARCH default CACHE STRING "CPU to build for: -march value or default")
if("${ARCH}" STREQUAL "default")
@@ -182,7 +182,7 @@ else()
endif()
set(C_WARNINGS "-Waggregate-return -Wnested-externs -Wstrict-prototypes -Wno-comment")
set(CXX_WARNINGS "-Wno-reorder -Wno-missing-field-initializers")
- try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/utils/test-static-assert.c" COMPILE_DEFINITIONS "-std=c++14")
+ try_compile(STATIC_ASSERT_RES "${CMAKE_CURRENT_BINARY_DIR}/static-assert" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/test-static-assert.c" COMPILE_DEFINITIONS "-std=c++14")
if(STATIC_ASSERT_RES)
set(STATIC_ASSERT_FLAG "")
else()
diff --git a/CMakePresets.json b/CMakePresets.json
index 07cb3684..80247a7d 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -18,7 +18,7 @@
"cacheVariables": {
"TESTNET": "ON",
"CMAKE_BUILD_TYPE": "Release",
- "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/conan_provider.cmake"
+ "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/ConanProvider.cmake"
}
},
{
@@ -30,7 +30,7 @@
"cacheVariables": {
"TESTNET": "OFF",
"CMAKE_BUILD_TYPE": "Release",
- "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/conan_provider.cmake"
+ "CMAKE_PROJECT_TOP_LEVEL_INCLUDES":"cmake/ConanProvider.cmake"
}
}
],
diff --git a/ConanPresets.json b/ConanPresets.json
index 7951a8dd..57065026 100644
--- a/ConanPresets.json
+++ b/ConanPresets.json
@@ -4,5 +4,6 @@
"conan": {}
},
"include": [
+ "build/release/conan/build/debug/generators/CMakePresets.json"
]
}
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 60068533..e4391e7b 100644
--- a/Makefile
+++ b/Makefile
@@ -58,24 +58,29 @@ CPU_CORES := $(or $(CPU_CORES),1)
CPU_CORES := $(shell expr $(CPU_CORES) + 0 2>/dev/null || echo 1)
CONAN_CPU_COUNT=$(CPU_CORES)
-
-PROFILES := $(patsubst cmake/profiles/%,%,$(wildcard cmake/profiles/*))
-SORTED_PROFILES := $(sort $(PROFILES))
-CONAN_CACHE := $(CURDIR)/build/sdk
-CONAN_URL:=https://artifacts.host.uk.com/artifactory/api/conan/conan-build
-CONAN_USER:=public
-CONAN_PASSWORD:=Lethean1234
-DEFAULT_CONAN_PROFILE := $(CONAN_CACHE)/profiles/default
-CONAN_EXECUTABLE := $(CURDIR)/build/bin/conan
-CC_DOCKER_FILE?=utils/docker/images/lthn-chain/Dockerfile
+PROFILES :=$(patsubst cmake/profiles/%,%,$(wildcard cmake/profiles/*))
+SORTED_PROFILES :=$(sort $(PROFILES))
+CONAN_CACHE :=$(CURDIR)/build/sdk
+CONAN_URL :=https://artifacts.host.uk.com/artifactory/api/conan/conan-build
+CONAN_USER :=public
+CONAN_PASSWORD :=Lethean1234
+CONAN_EXECUTABLE :=$(CURDIR)/build/bin/conan
+CC_DOCKER_FILE ?=utils/docker/images/lthn-chain/Dockerfile
+SDK_PACKAGES_JSON :=$(wildcard utils/sdk/packages/*.json)
+SDK_TARGETS :=$(patsubst utils/sdk/packages/%.json,%,$(SDK_PACKAGES_JSON))
+SORTED_SDK_TARGETS :=$(sort $(SDK_TARGETS))
all: help
testnet:
- cmake --workflow testnet
+ $(MAKE) configure TESTNET=1 STATIC=$(STATIC)
+ CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build .
+ $(MAKE) package
mainnet:
- cmake --workflow mainnet
+ $(MAKE) configure TESTNET=0 STATIC=$(STATIC)
+ CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) build .
+ $(MAKE) package
release: docs build
(cd $(BUILD_FOLDER) && cpack)
@@ -88,6 +93,13 @@ build-deps: conan-profile-detect
@echo "Build Dependencies: $(BUILD_TYPE) testnet=$(TESTNET)"
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) install . --build=missing -s build_type=$(BUILD_TYPE)
+package:
+ @echo "Packaging: $(BUILD_TYPE) testnet=$(TESTNET)"
+ (cd $(BUILD_FOLDER) && cpack)
+ifneq ($(OS),Windows_NT)
+ @rm -rf $(CURDIR)/build/packages/_CPack_Packages
+endif
+
configure: build-deps
@echo "Running Configure: $(BUILD_TYPE) testnet=$(TESTNET)"
cmake --preset $(PRESET_CONFIGURE) -DSTATIC=$(STATIC) -DTESTNET=$(TESTNET) -DBUILD_VERSION=$(BUILD_VERSION)
@@ -96,6 +108,9 @@ docs: configure
@echo "Building Documentation"
cmake --build build/release --target=docs --config=Release --parallel=$(CPU_CORES)
+sdk:
+ $(MAKE) -C utils/sdk $(filter-out $@,$(MAKECMDGOALS)) PACKAGE_VERSION=$(BUILD_VERSION)
+
# Rule for each profile
$(PROFILES): conan-profile-detect
@echo "Building profile: $@"
@@ -105,6 +120,12 @@ $(PROFILES): conan-profile-detect
(cd $(BUILD_FOLDER) && cpack)
help:
+ @echo "Lethean VPN Blockchain"
+ @echo "======================"
+ @echo "Website: https://lt.hn"
+ @echo "GitHub: https://github.com/letheanVPN/blockchain/"
+ @echo "Discord: https://discord.lt.hn"
+ @echo ""
@echo "Available targets:"
@printf " %-42s %s\n" "make clean" "Clean all build directories"
@printf " %-42s %s\n" "make get-conan" "Download and install conan locally"
@@ -116,12 +137,14 @@ help:
@printf " %-42s %s\n" "make docs-dev" "Runs local doc server, for editing/adding docs"
@printf " %-42s %s\n" "make conan-profile-detect" "Creates host config"
@printf " %-42s %s\n" "make configure" "Runs a cmake configure within conan build flow"
+ @printf "\n --- Conan Cross-Compilation Profiles ---\n"
@$(foreach profile,$(SORTED_PROFILES),printf " %-42s %s\n" "make $(profile)" "Build the $(profile) profile";)
+ @printf "\n --- SDK Generation ---\n"
+ @printf " %-42s %s\n" "make sdk" "Build all SDK packages"
+ @$(foreach sdk,$(SORTED_SDK_TARGETS),printf " %-42s %s\n" "make sdk $(sdk)" "Build the $(sdk) SDK package";)
+ @printf "\n"
@printf " %-42s %s\n" "make help" "Show this help message"
-#
-# Tests
-#
test: test-release
test-release:
@@ -140,7 +163,7 @@ test-debug:
# allowing this target to error quietly saves cross brwoser file detection
conan-get:
- cmake -P cmake/GetConan.cmake
+ cmake -P cmake/ConanGet.cmake
(CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote add conan_build $(CONAN_URL) && \
CONAN_HOME=$(CONAN_CACHE) $(CONAN_EXECUTABLE) remote login conan_build $(CONAN_USER) -p $(CONAN_PASSWORD)) || true
@@ -154,13 +177,17 @@ docs-dev: configure
@echo "Building Documentation"
cmake --build build/release --target=serve_docs --config=Release
+$(SDK_TARGETS):
+ @# This is a proxy target. Handled by the 'sdk' rule.
+
clean:
@cmake -P cmake/CleanBuild.cmake
-clean-build:
+clean-build: clean
rm -rf build
tags:
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest
-.PHONY: all release upload-conan-cache docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES)
+.PHONY: all release upload-conan-cache docs docs-dev configure static static-release test test-release test-debug clean tags conan-profile-detect get-conan $(PROFILES) sdk $(SDK_TARGETS)
+.PHONY: go-client
\ No newline at end of file
diff --git a/README.md b/README.md
index dcee9f03..270e856d 100644
--- a/README.md
+++ b/README.md
@@ -1,196 +1,120 @@
-[](https://scan.coverity.com/projects/zanoproject)
-[](https://discord.gg/wE3rmYY)
+# Lethean Network—Ethics, Encoded.
-## Cloning
+> We are building upto a mainnet launch in 2026, documentation written as if mainnet is live.
-Be sure to clone the repository properly:\
-`$ git clone --recursive https://github.com/hyle-team/zano.git`
+A buildkit for deploying confidential information networks and commerce systems with immutable auditability.
-# Building
---------
+Free for commercial, private, and patent use, self-host or join the community-run network that guarantees participant sovereignty by design.
+
+
+
+[](https://discord.gg/pfgT2Kz)
+
+Web2 Website: https://lt.hn/
+
+Web3 Network Gateway [HNS](https://handshake.org): [https://lthn](https://www.namebase.io/domains/lthn)
+ _(our chain aliases will come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_
### Dependencies
-| component / version | minimum (not recommended but may work) | recommended | most recent of what we have ever tested |
-|-----------------------------------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------|
-| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 |
-| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
-| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) |
-| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 |
-| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 |
-| [Boost](https://www.boost.org/users/download/) | 1.75 | 1.84 | 1.84 |
-| [OpenSSL](https://www.openssl.org/source/) [(win)](https://slproweb.com/products/Win32OpenSSL.html) | 1.1.1n | 1.1.1w | 3.4 |
-| [Qt](https://download.qt.io/archive/qt/) (*only for GUI*) | 6.8.3 | 6.8.3 | 6.8.3 |
+| component / version | minimum (not recommended but may work) | recommended | most recent of what we have ever tested |
+|-----------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------|
+| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 |
+| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
+| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) |
+| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 |
+| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 |
-Note:\
-[*server version*] denotes steps required for building command-line tools (daemon, simplewallet, etc.).\
-[*GUI version*] denotes steps required for building Zano executable with GUI.
+## Cloning
-
+Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry:
+`git clone --recursive https://github.com/letheanVPN/blockchain.git`
-### Linux
+# Building
-Recommended OS versions: Ubuntu 20.04, 22.04 LTS.
+The project uses a `Makefile` that provides a simple and powerful interface for building.
+It automatically handles dependency installation with Conan and compilation with CMake.
-1. Prerequisites
+You need CMake and Make installed on your system, other than that you don't need to worry about Python, Conan, Boost, OpenSSL, or any other dependencies.
- [*server version*]
-
- sudo apt-get install -y build-essential g++ curl autotools-dev libicu-dev libbz2-dev cmake git screen checkinstall zlib1g-dev libssl-dev bzip2
-
- [*GUI version*]
+The final packages are created as they are due to a historical distribution method used in china: USB Stick, CD, DVD, etc.
- sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git screen checkinstall zlib1g-dev libssl-dev bzip2 mesa-common-dev libglu1-mesa-dev
+We use CPack, so our packages are self-contained, have searchable HTML documentation, and are ready to be installed on any system.
- Make sure you have correct versions installed (see 'Dependencies' section above):
+To skip the packing step, use `make build` as defined in the section below for Advanced Build Customization
- cmake --version && gcc --version
-
+## Simple Workflow Builds (Recommended)
-3. Clone Zano into a local folder\
- (If for some reason you need to use alternative Zano branch, change 'master' to the required branch name.)
-
- git clone --recursive https://github.com/hyle-team/zano.git -b master
+For most use cases, these two commands are all you need. They handle the entire build process from start to finish.
- In the following steps we assume that you cloned Zano into '~/zano' folder in your home directory.
+* **Build for Mainnet:**
+ ```shell
+ make mainnet
+ ```
- 4. Download and build Boost\
- (Assuming you have cloned Zano into the 'zano' folder. If you used a different location for Zano, **edit line 4** accordingly.)
+* **Build for Testnet:**
+ ```shell
+ make testnet
+ ```
- curl -OL https://archives.boost.io/release/1.84.0/source/boost_1_84_0.tar.bz2
- echo "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 boost_1_84_0.tar.bz2" | shasum -c && tar -xjf boost_1_84_0.tar.bz2
- rm boost_1_84_0.tar.bz2 && cd boost_1_84_0
- ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer,log
- ./b2 && cd ..
- Make sure that you see "The Boost C++ Libraries were successfully built!" message at the end.
+## Creating Release Packages
- 5. Install Qt\
- (*GUI version only, skip this step if you're building server version*)
+To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything.
- [*GUI version*]
+ ```shell
+ make release TESTNET=1
+ ```
+The final packages will be located in the `build/packages/` directory
- curl -L -O https://download.qt.io/official_releases/online_installers/qt-online-installer-linux-x64-online.run &&
- chmod u+x qt-online-installer-linux-x64-online.run
- ./qt-online-installer-linux-x64-online.run \
- --accept-licenses \
- --default-answer \
- --confirm-command install \
- qt.qt6.683.linux_gcc_64 \
- qt.qt6.683.addons.qt5compat.linux_gcc_64 \
- qt.qt6.683.addons.qtpositioning.linux_gcc_64 \
- qt.qt6.683.addons.qtwebchannel.linux_gcc_64 \
- qt.qt6.683.addons.qtwebsockets.linux_gcc_64 \
- qt.qt6.683.addons.qtwebengine.linux_gcc_64 \
- qt.qt6.683.addons.qtwebview.linux_gcc_64
- This will download the online installer and perform an unattended installation with the Chromium-based WebEngine
+## Advanced Build Customization (Makefile Variables)
+For advanced use cases, you can override variables in the `Makefile` to customize the build process.
-6. Install OpenSSL
+* **Build a `testnet` version:**
+ ```shell
+ make build TESTNET=1
+ ```
+* **Build a statically-linked version:**
+ ```shell
+ make build STATIC=1
+ ```
+* **Build a Debug build with 8 compile threads:**
+ ```shell
+ make build BUILD_TYPE=Debug CPU_CORES=8
+ ```
+* **Use custom CMakePresets:**
+ ```shell
+ make build PRESET_CONFIGURE=my-config-preset PRESET_BUILD=my-build-preset
+ ```
- We recommend installing OpenSSL v1.1.1w locally unless you would like to use the same version system-wide.\
- (Assuming that `$HOME` environment variable is set to your home directory. Otherwise, edit line 4 accordingly.)
+| Variable | Description | Default Value |
+|--------------------|------------------------------------------------------------------------|-------------------------|
+| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` |
+| `TESTNET` | Set to `1` to build for the test network. | `0` |
+| `STATIC` | Set to `1` to link libraries statically. | `0` |
+| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected |
+| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` |
+| `BUILD_FOLDER` | The output directory for the build. | `build/release` |
+| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` |
+| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` |
+| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` |
+| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` |
+| `CONAN_URL` | The URL for the Conan remote repository. | `artifacts.host.uk.com` |
+| `CONAN_USER` | The username for the Conan remote. | `public` |
+| `CONAN_PASSWORD` | The password for the Conan remote. | |
- curl -OL https://www.openssl.org/source/openssl-1.1.1w.tar.gz
- echo "cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8 openssl-1.1.1w.tar.gz" | shasum -c && tar xaf openssl-1.1.1w.tar.gz
- cd openssl-1.1.1w/
- ./config --prefix=$HOME/openssl --openssldir=$HOME/openssl shared zlib
- make && make test && make install && cd ..
+## Cleaning the Build Directory
+ALWAYS USE `make clean` to clean the build directory, manually deleting the `build/release`, `build/SOME_FOLDER` will cause you issues.
-7. [*OPTIONAL*] Set global environment variables for convenient use\
-For instance, by adding the following lines to `~/.bashrc`
+Our `make clean` triggers a cmake script that completely resets the build directory & dynamically added CMakePresets to its cached warm-up state,
+the selective clean script can be edited here: `cmake/CleanBuild.cmake` or directly run from the repo root `cmake -P cmake/CleanBuild.cmake`
- [*server version*]
+You can NUKE the build directory with `make clean-build` which is `rm -rf build`.
- export BOOST_ROOT=/home/user/boost_1_84_0
- export OPENSSL_ROOT_DIR=/home/user/openssl
+If you do manually delete build folders and get CMake errors (if you have compiled anything previously, you will),
+the ConanPresets.json file has entries in the `include` property, delete them all and try again.
-
- [*GUI version*]
-
- export BOOST_ROOT=/home/user/boost_1_84_0
- export OPENSSL_ROOT_DIR=/home/user/openssl
- export QT_PREFIX_PATH=/home/user/Qt5.11.2/5.11.2/gcc_64
-
- **NOTICE: Please edit the lines above according to your actual paths.**
-
- **NOTICE 2:** Make sure you've restarted your terminal session (by reopening the terminal window or reconnecting the server) to apply these changes.
-
-8. Build the binaries
- 1. If you skipped step 6 and did not set the environment variables:
-
- cd zano && mkdir build && cd build
- BOOST_ROOT=$HOME/boost_1_84_0 OPENSSL_ROOT_DIR=$HOME/openssl cmake ..
- make -j1 daemon simplewallet
-
- 2. If you set the variables in step 6:
-
- cd zano && mkdir build && cd build
- cmake ..
- make -j1 daemon simplewallet
-
- or simply:
-
- cd zano && make -j1
-
- **NOTICE**: If you are building on a machine with a relatively high amount of RAM or with the proper setting of virtual memory, then you can use `-j2` or `-j` option to speed up the building process. Use with caution.
-
- **NOTICE 2**: If you'd like to build binaries for the testnet, use `cmake -D TESTNET=TRUE ..` instead of `cmake ..` .
-
- 1. Build GUI:
-
- cd zano
- utils/build_script_linux.sh
-
- Look for the binaries in `build` folder
-
-
-
-### Windows
-Recommended OS version: Windows 7 x64, Windows 11 x64.
-1. Install required prerequisites (Boost, Qt, CMake, OpenSSL).
-2. Edit paths in `utils/configure_local_paths.cmd`.
-3. Run one of `utils/configure_win64_msvsNNNN_gui.cmd` according to your MSVC version.
-4. Go to the build folder and open generated Zano.sln in MSVC.
-5. Build.
-
-In order to correctly deploy Qt GUI application, you also need to do the following:
-
-6. Run `PATH_TO_QT\bin\windeployqt.exe PATH_TO_PROJECT_ROOT\build\src\Debug\Zano.exe` (choose the Debug or Release folder depending on the configuration you built).
-7. You can now run the application using one of the following options:
- * Start the program from Visual Studio
- * Run `Zano.exe --html-path=PATH_TO_HTML`, where PATH_TO_HTML is by default located at PATH_TO_PROJECT_ROOT\src\gui\qt-daemon\layout\html
- * Copy the contents of PATH_TO_PROJECT_ROOT\src\gui\qt-daemon\layout\html to a folder named "html" located in the same directory as the Zano.exe binary.
-
-
-### macOS
-Recommended OS version: macOS Big Sur 11.4 x64.
-1. Install required prerequisites.
-2. Set environment variables as stated in `utils/macosx_build_config.command`.
-3. `mkdir build` `cd build` `cmake ..` `make`
-
-To build GUI application:
-
-1. Create self-signing certificate via Keychain Access:\
- a. Run Keychain Access.\
- b. Choose Keychain Access > Certificate Assistant > Create a Certificate.\
- c. Use “Zano” (without quotes) as certificate name.\
- d. Choose “Code Signing” in “Certificate Type” field.\
- e. Press “Create”, then “Done”.\
- f. Make sure the certificate was added to keychain "System". If not—move it to "System".\
- g. Double click the certificate you've just added, enter the trust section and under "When using this certificate" select "Always trust".\
- h. Unfold the certificate in Keychain Access window and double click the underlying private key "Zano". Select "Access Control" tab, then select "Allow all applications to access this item". Click "Save Changes".
-2. Revise building script, comment out unwanted steps and run it: `utils/build_script_mac_osx.sh`
-3. The application should be here: `/buid_mac_osx_64/release/src`
-
-
-
-
-## Supporting project/donations
-
-ZANO @dev
-BTC bc1qpa8w8eaehlplfepmnzpd7v9j046899nktxnkxp
-BCH qqgq078vww5exd9kt3frx6krdyznmp80hcygzlgqzd
-ETH 0x206c52b78141498e74FF074301ea90888C40c178
-XMR 45gp9WTobeB5Km3kLQgVmPJkvm9rSmg4gdyHheXqXijXYMjUY48kLgL7QEz5Ar8z9vQioQ68WYDKsQsjAEonSeFX4UeLSiX
+This happens because CMakePresets.json includes ConanPresets.json, that has the list of toolchains to use that gets populated during the CMake config step,
+when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error.
diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake
index 047fd324..9890ad10 100644
--- a/cmake/CPackConfig.cmake
+++ b/cmake/CPackConfig.cmake
@@ -26,18 +26,27 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI
# message(STATUS "Registered CPACK_GENERATOR: productbuild")
endif ()
elseif(WIN32)
-# set(CPACK_GENERATOR "WIX")
-# message(STATUS "Registered CPACK_GENERATOR: WIX")
+ set(CPACK_GENERATOR "NSIS")
+ set(CPACK_NSIS_MODIFY_PATH ON)
+ set(CPACK_NSIS_HELP_LINK "https://lt.hn/getting-started/chain.html")
+ set(CPACK_NSIS_URL_INFO_ABOUT "https://lt.hn")
+ set(CPACK_NSIS_CONTACT "support@lt.hn")
+ set(CPACK_NSIS_UNINSTALL_NAME "Lethean CLI")
+ set(CPACK_NSIS_BRANDING_TEXT "Lethean Community")
+ set(CPACK_NSIS_MUI_FINISHPAGE_RUN "lethean-testnet-chain-node.exe")
+
+ message(STATUS "Registered CPACK_GENERATOR: Inno exe")
# set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/resources/windows_icon.ico")
# set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/LICENSE.rtf")
# set(CPACK_WIX_UPGRADE_GUID "D3F5A9C1-4B2E-4F5A-9C71-123456789ABC") # change once per major version
else()
- # set(CPACK_GENERATOR "DEB")
- # message(STATUS "Registered CPACK_GENERATOR: deb")
- # set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${package_contact}")
- # set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28)")
- # set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
- # set(CPACK_DEBIAN_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
+ set(CPACK_GENERATOR "DEB")
+ set(CPACK_GENERATOR "RPM")
+ message(STATUS "Registered CPACK_GENERATOR: deb")
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${package_contact}")
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.28)")
+ set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
+ set(CPACK_DEBIAN_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
# post‑install script (e.g., to register a systemd service)
# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
# "${CMAKE_SOURCE_DIR}/scripts/postinstall.sh")
@@ -49,12 +58,12 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
set(CPACK_ARCHIVE_COMPONENT_INSTALL OFF)
set(CPACK_COMPONENTS_ALL)
- set(CPACK_GENERATE_SHASUM ON)
- set(CPACK_SHASUM_ALGORITHM SHA256)
+ set(CPACK_MONOLITHIC_INSTALL OFF)
+ set(CPACK_PACKAGE_CHECKSUM SHA256)
message(STATUS "Using SHA256 Checksums")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt")
-# set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
+ set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_SOURCE_DIR}/build/packages")
diff --git a/cmake/GetConan.cmake b/cmake/ConanGet.cmake
similarity index 99%
rename from cmake/GetConan.cmake
rename to cmake/ConanGet.cmake
index 9b7437ee..6110328e 100644
--- a/cmake/GetConan.cmake
+++ b/cmake/ConanGet.cmake
@@ -1,4 +1,4 @@
-# cmake/GetConan.cmake
+# cmake/ConanGet.cmake
# This module downloads and installs Conan if it's not found.
diff --git a/cmake/conan_provider.cmake b/cmake/ConanProvider.cmake
similarity index 99%
rename from cmake/conan_provider.cmake
rename to cmake/ConanProvider.cmake
index c524fb7f..036ede6e 100644
--- a/cmake/conan_provider.cmake
+++ b/cmake/ConanProvider.cmake
@@ -572,7 +572,7 @@ macro(conan_provide_dependency method package_name)
endif ()
if(NOT EXISTS ${CONAN_COMMAND})
message(STATUS "CMake-Conan: Local conan not found, attempting to download it.")
- execute_process(COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/GetConan.cmake"
+ execute_process(COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/ConanGet.cmake"
RESULT_VARIABLE result
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
if(NOT result EQUAL 0)
diff --git a/utils/test-static-assert.c b/cmake/test-static-assert.c
similarity index 100%
rename from utils/test-static-assert.c
rename to cmake/test-static-assert.c
diff --git a/conanfile.py b/conanfile.py
index ab1a89cb..40e10f35 100644
--- a/conanfile.py
+++ b/conanfile.py
@@ -21,12 +21,18 @@ class BlockchainConan(ConanFile):
"boost/*:without_test": True
}
+ tool_requires = [
+ "cmake/3.31.9"
+ ]
+
requires = [
"zlib/1.3.1",
"boost/1.85.0",
"openssl/3.2.0",
"miniupnpc/2.2.5",
- "jwt-cpp/0.7.1"
+ "jwt-cpp/0.7.1",
+ "oatpp/1.3.0.latest",
+ "oatpp-swagger/1.3.0.latest"
]
def generate(self):
diff --git a/contrib/epee/include/string_tools.h b/contrib/epee/include/string_tools.h
index 8cf56e5a..ad6e253d 100644
--- a/contrib/epee/include/string_tools.h
+++ b/contrib/epee/include/string_tools.h
@@ -28,6 +28,7 @@
#include
#include
+#include
#include
#include
#include
diff --git a/docker-compose.yml b/docker-compose.yml
index 0653393a..a55c13e9 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,7 +5,7 @@ services:
build:
tags:
- lthn/chain:testnet
- dockerfile: utils/docker/images/lthn-chain/Dockerfile
+ dockerfile: utils/docker/lthn-chain/Dockerfile
context: .
target: chain-service
args:
diff --git a/docs b/docs
index 12e20efc..e40a78d5 160000
--- a/docs
+++ b/docs
@@ -1 +1 @@
-Subproject commit 12e20efce7eaf51e38d8953c318633b1c5189256
+Subproject commit e40a78d5020661f05d9bae64f2edd4519d9d98b3
diff --git a/resources/Zano WP.pdf b/resources/Zano WP.pdf
deleted file mode 100644
index b62e0164..00000000
Binary files a/resources/Zano WP.pdf and /dev/null differ
diff --git a/resources/app_icon.svg b/resources/app_icon.svg
deleted file mode 100644
index d5ca861a..00000000
--- a/resources/app_icon.svg
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/app_icon_256.png b/resources/app_icon_256.png
deleted file mode 100644
index c2cb1525..00000000
Binary files a/resources/app_icon_256.png and /dev/null differ
diff --git a/resources/dmg_installer_bg.png b/resources/dmg_installer_bg.png
deleted file mode 100644
index ee45f1e0..00000000
Binary files a/resources/dmg_installer_bg.png and /dev/null differ
diff --git a/resources/installer_bg_164x313.bmp b/resources/installer_bg_164x313.bmp
deleted file mode 100644
index 80599afe..00000000
Binary files a/resources/installer_bg_164x313.bmp and /dev/null differ
diff --git a/resources/installer_bg_191x385.bmp b/resources/installer_bg_191x385.bmp
deleted file mode 100644
index b7b74bfe..00000000
Binary files a/resources/installer_bg_191x385.bmp and /dev/null differ
diff --git a/resources/installer_bg_246x457.bmp b/resources/installer_bg_246x457.bmp
deleted file mode 100644
index 3e20a2e9..00000000
Binary files a/resources/installer_bg_246x457.bmp and /dev/null differ
diff --git a/resources/installer_bg_328x628.bmp b/resources/installer_bg_328x628.bmp
deleted file mode 100644
index 5d7613d8..00000000
Binary files a/resources/installer_bg_328x628.bmp and /dev/null differ
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
deleted file mode 100644
index f27305af..00000000
--- a/snap/snapcraft.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-name: zano
-base: core18
-adopt-info: zano
-summary: "Zano coin: official wallet. Secure. Scalable. Easy to Use."
-description: |
- Zano is a scalable and secure coin, designed for use in e-commerce.
- The technology behind our blockchain provides reliability, security,
- and flexibility a perfect option for P2P transactions.
- More info: http://zano.org
-grade: stable
-confinement: strict
-
-architectures:
- - build-on: amd64
- - build-on: i386
-
-parts:
- zano:
- source: https://github.com/hyle-team/zano.git
- plugin: cmake
- override-pull: |
- snapcraftctl pull
- snapcraftctl set-version "$(git describe)"
- configflags:
- - -DBUILD_GUI=TRUE
- override-build: |
- snapcraftctl build
- mkdir -p $SNAPCRAFT_PART_INSTALL/opt/Zano
- cp $SNAPCRAFT_PART_BUILD/src/Zano $SNAPCRAFT_PART_INSTALL/opt/Zano/
- cp $SNAPCRAFT_PART_BUILD/src/simplewallet $SNAPCRAFT_PART_INSTALL/opt/Zano/
- cp $SNAPCRAFT_PART_BUILD/src/zanod $SNAPCRAFT_PART_INSTALL/opt/Zano/
- rsync -a $SNAPCRAFT_PART_SRC/src/gui/qt-daemon/html $SNAPCRAFT_PART_INSTALL/opt/Zano --exclude less --exclude package.json --exclude gulpfile.js
- build-packages:
- - make
- - g++
- - libboost-all-dev
- - qtwebengine5-dev
- - rsync
- build-attributes: [keep-execstack]
- stage-packages:
- - libboost-system1.65.1
- - libboost-filesystem1.65.1
- - libboost-thread1.65.1
- - libboost-date-time1.65.1
- - libboost-chrono1.65.1
- - libboost-regex1.65.1
- - libboost-serialization1.65.1
- - libboost-program-options1.65.1
- - libboost-locale1.65.1
-
-apps:
- zano:
- command: opt/Zano/Zano --data-dir $SNAP_USER_COMMON
- extensions:
- - kde-neon
- plugs:
- - network
- - home
- - desktop
- - opengl #for QML support
- - browser-support #for Qt WebEngine support
- - audio-playback
- - unity7 #for tray icon support
- simplewallet:
- command: opt/Zano/simplewallet
- plugs:
- - network
- - home
- zanod:
- command: opt/Zano/zanod --data-dir $SNAP_USER_COMMON
- environment:
- LC_ALL: C
- plugs:
- - network
- - network-bind
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 541dc852..3d276457 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -85,6 +85,7 @@ INIT_SHARED_PCH()
add_subdirectory(config)
add_subdirectory(genesis)
+add_subdirectory(api)
add_library(common ${COMMON})
add_dependencies(common version config ${PCH_LIB_NAME})
@@ -163,7 +164,7 @@ target_link_libraries(currency_core config lmdb mdbx)
add_executable(daemon ${DAEMON} ${P2P} ${CURRENCY_PROTOCOL})
add_dependencies(daemon version)
-target_link_libraries(daemon rpc stratum currency_core crypto common miniupnpc::miniupnpc ZLIB::ZLIB ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(daemon rpc stratum currency_core crypto common miniupnpc::miniupnpc ZLIB::ZLIB ethash api::server ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} OpenSSL::SSL OpenSSL::Crypto)
ENABLE_SHARED_PCH(daemon DAEMON)
ENABLE_SHARED_PCH_EXECUTABLE(daemon)
diff --git a/src/api/ApiServer.cpp b/src/api/ApiServer.cpp
new file mode 100644
index 00000000..dbe027dc
--- /dev/null
+++ b/src/api/ApiServer.cpp
@@ -0,0 +1,158 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#include "ApiServer.hpp"
+#include "controller/ApiCoreInfo.hpp"
+#include "controller/path/info.hpp"
+#include "controller/path/block.hpp"
+#include "controller/path/block/identifier.hpp"
+#include "controller/path/block/height.hpp"
+#include "controller/path/block/template.hpp"
+#include "controller/path/block/submit.hpp"
+#include "controller/path/info/version.hpp"
+
+#include "oatpp/network/Server.hpp"
+#include "oatpp-swagger/Controller.hpp"
+#include "version.h"
+#include "common/command_line.h"
+
+namespace
+{
+ const command_line::arg_descriptor arg_api_bind_port = {"api-bind-port", "Port for API server to bind to", 36943};
+ const command_line::arg_descriptor arg_api_bind_host = {"api-bind-host", "IP/Hostname for API server to bind to", "127.0.0.1"};
+}
+
+uint16_t ApiServer::m_port = 8000;
+std::string ApiServer::m_host = "127.0.0.1";
+
+void ApiServer::init_options(boost::program_options::options_description& desc) {
+ command_line::add_arg(desc, arg_api_bind_port);
+ command_line::add_arg(desc, arg_api_bind_host);
+}
+
+ApiServer::ApiServer(const boost::program_options::variables_map& vm, currency::core* ccore, p2psrv_t* p2p, currency::core_rpc_server* rpc_server)
+ : m_vm(vm), m_ccore(ccore), m_p2p(p2p), m_rpc_server(rpc_server) {
+ if (vm.count(arg_api_bind_port.name)) {
+ m_port = vm[arg_api_bind_port.name].as();
+ }
+ if (vm.count(arg_api_bind_host.name)) {
+ m_host = vm[arg_api_bind_host.name].as();
+ }
+}
+
+void ApiServer::run() {
+
+ /* Register Components in scope of run() method */
+ Components components;
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, coreInfoComponent)
+ ([this] {
+ return std::make_shared(*m_ccore, *m_p2p, *m_rpc_server);
+ }());
+
+ /* Get router component */
+ OATPP_COMPONENT(std::shared_ptr, router);
+
+ auto docEndpoints = std::make_shared();
+
+ /*
+ * Create and register controllers, this list will get VERY large, but, it has to be this way as oatpp creates a
+ * static routing file before compile time, can't dynamically add controllers, or, be smart AND also have project code awareness
+ * by this list being large, it allows for per endpoint code separation;
+ * any PR that tries to reduce this, MUST have unit tests to prove it works, no exceptions.
+ */
+ auto infoController = std::make_shared();
+ docEndpoints->append(infoController->getEndpoints());
+ router->addController(infoController);
+
+ auto infoVersionController = std::make_shared();
+ docEndpoints->append(infoVersionController->getEndpoints());
+ router->addController(infoVersionController);
+
+ auto blockController = std::make_shared();
+ docEndpoints->append(blockController->getEndpoints());
+ router->addController(blockController);
+
+ auto blockTemplateController = std::make_shared();
+ docEndpoints->append(blockTemplateController->getEndpoints());
+ router->addController(blockTemplateController);
+
+ auto blockSubmitController = std::make_shared();
+ docEndpoints->append(blockSubmitController->getEndpoints());
+ router->addController(blockSubmitController);
+
+ auto blockHeightController = std::make_shared();
+ docEndpoints->append(blockHeightController->getEndpoints());
+ router->addController(blockHeightController);
+
+ auto blockIdentifierController = std::make_shared();
+ docEndpoints->append(blockIdentifierController->getEndpoints());
+ router->addController(blockIdentifierController);
+
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerDocumentInfo)
+ ([]
+ {
+ oatpp::swagger::DocumentInfo::Builder builder;
+
+ builder
+ .setTitle("Lethean Blockchain API")
+ .setDescription("OpenAPI for Lethean Blockchain")
+ .setVersion(PROJECT_VERSION)
+ .setContactName("Lethean")
+ .setContactUrl("https://lt.hn/")
+ .setLicenseName("EUPL-1.2")
+ .setLicenseUrl("https://joinup.ec.europa.eu/software/page/eupl/licence-eupl")
+ .addServer("http://" + ApiServer::m_host + ":" + std::to_string(ApiServer::m_port), "Local Daemon")
+ .addServer("http://seed.lethean.io:36943", "Seed Server");
+
+ return builder.build(); }());
+
+ /* Create a Swagger-UI controller and add its endpoints to the router */
+ auto swaggerController = oatpp::swagger::Controller::createShared(*docEndpoints);
+ router->addController(swaggerController);
+
+ /* Get a connection handler component */
+ OATPP_COMPONENT(std::shared_ptr, connectionHandler);
+
+ /* Get a connection provider component */
+ OATPP_COMPONENT(std::shared_ptr, connectionProvider);
+
+ /* Create a server which takes provided TCP connections and passes them to the HTTP connection handler */
+ m_server = std::make_shared(connectionProvider, connectionHandler);
+
+ /* Print server port */
+ OATPP_LOGI("lethean-api", "Server running, API Docs: http://127.0.0.1:%s/swagger/ui", static_cast(connectionProvider->getProperty("port").getData()));
+
+ /* Run server */
+ m_server->run();
+
+}
+
+void ApiServer::start() {
+ m_server_thread = std::thread(&ApiServer::run, this);
+}
+
+void ApiServer::stop() const
+{
+ if (m_server) {
+ m_server->stop();
+ }
+}
+
+void ApiServer::wait() {
+ if (m_server_thread.joinable()) {
+ m_server_thread.join();
+ }
+}
diff --git a/src/api/ApiServer.hpp b/src/api/ApiServer.hpp
new file mode 100644
index 00000000..d046b69a
--- /dev/null
+++ b/src/api/ApiServer.hpp
@@ -0,0 +1,91 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef ApiServer_hpp
+#define ApiServer_hpp
+
+#include "currency_core/currency_core.h"
+#include "p2p/net_node.h"
+#include "currency_protocol/currency_protocol_handler.h"
+#include "rpc/core_rpc_server.h"
+
+#include "oatpp/web/server/HttpConnectionHandler.hpp"
+#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
+#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
+#include "oatpp/core/macro/component.hpp"
+#include "oatpp-swagger/Resources.hpp"
+#include "oatpp/network/Server.hpp"
+#include
+#include
+
+namespace po = boost::program_options;
+
+// Define the p2p server type to avoid verbose template syntax
+typedef nodetool::node_server> p2psrv_t;
+
+class ApiServer {
+private:
+ std::thread m_server_thread;
+ std::shared_ptr m_server;
+ boost::program_options::variables_map m_vm;
+
+ currency::core* m_ccore;
+ p2psrv_t* m_p2p;
+ currency::core_rpc_server* m_rpc_server;
+
+ void run();
+
+public:
+ static uint16_t m_port;
+ static std::string m_host;
+
+ static void init_options(po::options_description& desc);
+
+ ApiServer(const boost::program_options::variables_map& vm, currency::core* ccore, p2psrv_t* p2p, currency::core_rpc_server* rpc_server);
+
+ class Components {
+ public:
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] {
+ return oatpp::network::tcp::server::ConnectionProvider::createShared({ApiServer::m_host, ApiServer::m_port, oatpp::network::Address::IP_4});
+ }());
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] {
+ return oatpp::web::server::HttpRouter::createShared();
+ }());
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] {
+ OATPP_COMPONENT(std::shared_ptr, router);
+ return oatpp::web::server::HttpConnectionHandler::createShared(router);
+ }());
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] {
+ auto jsonMapper = oatpp::parser::json::mapping::ObjectMapper::createShared();
+ jsonMapper->getSerializer()->getConfig()->useBeautifier = true;
+ return jsonMapper;
+ }());
+
+ OATPP_CREATE_COMPONENT(std::shared_ptr, swaggerResources)([] {
+ return oatpp::swagger::Resources::loadResources(OATPP_SWAGGER_RES_PATH);
+ }());
+
+ };
+
+ void start();
+ void stop() const;
+ void wait();
+
+};
+
+#endif /* ApiServer_hpp */
diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt
new file mode 100644
index 00000000..e325f3a3
--- /dev/null
+++ b/src/api/CMakeLists.txt
@@ -0,0 +1,69 @@
+if(NOT PROJECT_NAME)
+ project(api-server)
+endif()
+
+find_package(oatpp 1.3.0 REQUIRED)
+if(oatpp_FOUND)
+ message(STATUS "Found oatpp version: ${oatpp_VERSION_STRING}")
+else()
+ message(FATAL_ERROR "Could not find oatpp")
+endif()
+
+find_package(oatpp-swagger 1.3.0 REQUIRED)
+if(oatpp-swagger_FOUND)
+ message(STATUS "Found oatpp-swagger version: ${oatpp-swagger_VERSION_STRING}")
+else()
+ message(FATAL_ERROR "Could not find oatpp-swagger")
+endif()
+
+add_library(api_server ApiServer.cpp)
+add_library(api::server ALIAS api_server)
+
+target_include_directories(api_server PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/src
+ ${oatpp_INCLUDE_DIRS}
+ ${oatpp-swagger_INCLUDE_DIRS}
+)
+
+target_link_libraries(api_server PUBLIC
+ oatpp::oatpp
+ oatpp::oatpp-swagger
+)
+
+# Define path to swagger resources for the installed package.
+# This assumes the executable is in 'bin' and resources are in 'share/api_server'.
+target_compile_definitions(api_server PUBLIC -DOATPP_SWAGGER_RES_PATH="../share/api_server/res")
+
+# Copy resources to build directory for development builds (e.g. running in CLion)
+file(COPY ${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res DESTINATION ${CMAKE_BINARY_DIR}/share/api_server)
+file(COPY ${CMAKE_SOURCE_DIR}/utils/sdk/spec/oas-3.0.0.json DESTINATION ${CMAKE_BINARY_DIR}/share/api_server)
+
+# Install swagger resources to a conventional location for packaging.
+install(DIRECTORY ${oatpp-swagger_INCLUDE_DIRS}/../bin/oatpp-swagger/res DESTINATION share/api_server)
+
+# Install OpenAPI spec for SDK generation for packaging.
+install(FILES ${CMAKE_SOURCE_DIR}/utils/sdk/spec/oas-3.0.0.json DESTINATION share/api_server)
+
+
+#add_executable(lethean-api main.cpp)
+#
+#target_include_directories(lethean-api PRIVATE ${CMAKE_SOURCE_DIR}/src)
+
+target_link_libraries(api_server
+ PRIVATE
+ config
+ rpc
+ stratum
+ currency_core
+ crypto
+ common
+ ethash
+ ${Boost_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT}
+ OpenSSL::SSL
+ OpenSSL::Crypto
+ ZLIB::ZLIB
+)
+
+#add_subdirectory(tests)
diff --git a/src/api/controller/ApiCoreInfo.hpp b/src/api/controller/ApiCoreInfo.hpp
new file mode 100644
index 00000000..9754ff6d
--- /dev/null
+++ b/src/api/controller/ApiCoreInfo.hpp
@@ -0,0 +1,43 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef ApiCoreInfo_hpp
+#define ApiCoreInfo_hpp
+
+#include "currency_core/currency_core.h"
+#include "p2p/net_node.h"
+#include "currency_protocol/currency_protocol_handler.h"
+#include "rpc/core_rpc_server.h"
+
+// Define the p2p server type to avoid verbose template syntax
+typedef nodetool::node_server> p2psrv_t;
+
+// A simple holder for core blockchain components that can be injected into controllers.
+class ApiCoreInfo {
+private:
+ currency::core& m_core;
+ p2psrv_t& m_p2p;
+ currency::core_rpc_server& m_rpc_server;
+
+public:
+ ApiCoreInfo(currency::core& core, p2psrv_t& p2p, currency::core_rpc_server& rpc_server)
+ : m_core(core), m_p2p(p2p), m_rpc_server(rpc_server)
+ {}
+
+ currency::core& getCore() { return m_core; }
+ p2psrv_t& getP2p() { return m_p2p; }
+ currency::core_rpc_server& getRpcServer() { return m_rpc_server; }
+};
+
+#endif /* ApiCoreInfo_hpp */
diff --git a/src/api/controller/path/block.hpp b/src/api/controller/path/block.hpp
new file mode 100644
index 00000000..3f0b5211
--- /dev/null
+++ b/src/api/controller/path/block.hpp
@@ -0,0 +1,173 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockController_hpp
+#define BlockController_hpp
+
+#include "modal/block/details.hpp"
+#include "modal/transaction/details.hpp"
+#include "controller/ApiCoreInfo.hpp"
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
+
+#include "rpc/core_rpc_server_commands_defs.h"
+#include
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+/**
+ * Block Controller
+ * Retrieves one or more blocks with optional pagination.
+ */
+class BlockController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+
+ // Helper function to populate a block details model from RPC details
+ oatpp::Object populateBlockDetailsModel(const currency::block_rpc_extended_info& rpc_details) {
+ auto blockDetails = BlockDetailsModel::createShared();
+ blockDetails->id = rpc_details.id;
+ blockDetails->height = rpc_details.height;
+ blockDetails->timestamp = rpc_details.timestamp;
+ blockDetails->actual_timestamp = rpc_details.actual_timestamp;
+ blockDetails->difficulty = rpc_details.difficulty;
+ blockDetails->prev_id = rpc_details.prev_id;
+ blockDetails->is_orphan = rpc_details.is_orphan;
+ blockDetails->base_reward = rpc_details.base_reward;
+ blockDetails->summary_reward = rpc_details.summary_reward;
+ blockDetails->total_fee = rpc_details.total_fee;
+ blockDetails->penalty = rpc_details.penalty;
+ blockDetails->already_generated_coins = rpc_details.already_generated_coins;
+ blockDetails->block_cumulative_size = rpc_details.block_cumulative_size;
+ blockDetails->total_txs_size = rpc_details.total_txs_size;
+ blockDetails->cumulative_diff_adjusted = rpc_details.cumulative_diff_adjusted;
+ blockDetails->cumulative_diff_precise = rpc_details.cumulative_diff_precise;
+ blockDetails->blob = rpc_details.blob;
+ blockDetails->miner_text_info = rpc_details.miner_text_info;
+ blockDetails->type = rpc_details.type;
+
+ auto tx_details_list = oatpp::List>::createShared();
+ for(const auto& tx_rpc_info : rpc_details.transactions_details) {
+ auto tx_model = TransactionDetailsModel::createShared();
+ tx_model->id = tx_rpc_info.id;
+ tx_model->fee = tx_rpc_info.fee;
+ tx_model->amount = tx_rpc_info.amount;
+ tx_model->blob_size = tx_rpc_info.blob_size;
+ tx_model->keeper_block = tx_rpc_info.keeper_block;
+ tx_model->timestamp = tx_rpc_info.timestamp;
+ tx_details_list->push_back(tx_model);
+ }
+ blockDetails->transactions_details = tx_details_list;
+ return blockDetails;
+ }
+
+public:
+ explicit BlockController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper)
+ {}
+public:
+
+ ENDPOINT_INFO(getBlocks) {
+ info->summary = "Get one or more blocks, with optional pagination.";
+ info->addTag("Block");
+ info->queryParams["limit"].description = "Number of blocks to retrieve. Default is 1. If limit is 1, a single block object is returned. Otherwise, a list of blocks is returned.";
+ info->queryParams["offset"].description = "Number of blocks to skip from the start height. Default is 0.";
+ info->queryParams["start"].description = "The starting block height. If not provided, the current top block height is used.";
+ info->addResponse>(Status::CODE_200, "application/json", "A single block object.");
+ info->addResponse>>(Status::CODE_200, "application/json", "A list of block objects.");
+ info->addResponse(Status::CODE_404, "text/plain");
+ info->addResponse(Status::CODE_400, "text/plain");
+ }
+ ENDPOINT("GET", "/block", getBlocks, QUERIES(QueryParams, queryParams)) {
+ const auto limitStr = queryParams.get("limit");
+ const auto offsetStr = queryParams.get("offset");
+ const auto startStr = queryParams.get("start");
+
+ uint64_t limit = 1;
+ if (limitStr) {
+ try {
+ limit = std::stoull(limitStr->c_str());
+ } catch (const std::exception& e) {
+ return createResponse(Status::CODE_400, "Invalid 'limit' parameter");
+ }
+ }
+
+ uint64_t offset = 0;
+ if (offsetStr) {
+ try {
+ offset = std::stoull(offsetStr->c_str());
+ } catch (const std::exception& e) {
+ return createResponse(Status::CODE_400, "Invalid 'offset' parameter");
+ }
+ }
+
+ uint64_t start_height;
+ if (startStr) {
+ try {
+ start_height = std::stoull(startStr->c_str());
+ } catch (const std::exception& e) {
+ return createResponse(Status::CODE_400, "Invalid 'start' parameter");
+ }
+ } else {
+ start_height = m_core_info->getCore().get_blockchain_storage().get_current_blockchain_size() - 1;
+ }
+
+ if (limit == 0) {
+ return createResponse(Status::CODE_400, "'limit' must be greater than 0");
+ }
+
+ if (start_height < offset) {
+ return createResponse(Status::CODE_400, "'start' height cannot be less than 'offset'");
+ }
+
+ uint64_t current_height = start_height - offset;
+
+ if (limit == 1) {
+ currency::block_rpc_extended_info rpc_details;
+ if (!m_core_info->getCore().get_blockchain_storage().get_main_block_rpc_details(current_height, rpc_details)) {
+ return createResponse(Status::CODE_404, "Block not found at specified height");
+ }
+ return createDtoResponse(Status::CODE_200, populateBlockDetailsModel(rpc_details));
+ }
+
+ auto block_list = oatpp::List>::createShared();
+ for(uint64_t i = 0; i < limit; ++i)
+ {
+ if(current_height < i)
+ {
+ break; // Reached genesis
+ }
+ uint64_t height_to_fetch = current_height - i;
+ currency::block_rpc_extended_info rpc_details;
+ if(m_core_info->getCore().get_blockchain_storage().get_main_block_rpc_details(height_to_fetch, rpc_details))
+ {
+ block_list->push_back(populateBlockDetailsModel(rpc_details));
+ }
+ else
+ {
+ // Could be that we requested past genesis, or a block is missing for some reason.
+ // We'll just stop here.
+ break;
+ }
+ }
+ return createDtoResponse(Status::CODE_200, block_list);
+ }
+
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* BlockController_hpp */
diff --git a/src/api/controller/path/block/height.hpp b/src/api/controller/path/block/height.hpp
new file mode 100644
index 00000000..b8edb068
--- /dev/null
+++ b/src/api/controller/path/block/height.hpp
@@ -0,0 +1,54 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockHeightController_hpp
+#define BlockHeightController_hpp
+
+#include "modal/block/height.hpp"
+#include "controller/ApiCoreInfo.hpp"
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+/**
+ * Block Height Controller
+ */
+class BlockHeightController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+public:
+ explicit BlockHeightController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper)
+ {}
+public:
+
+ ENDPOINT_INFO(getHeight) {
+ info->summary = "Get the current blockchain height";
+ info->addTag("Block");
+ info->addResponse>(Status::CODE_200, "application/json");
+ }
+ ENDPOINT("GET", "/block/height", getHeight) {
+ auto model = HeightModel::createShared();
+ model->height = m_core_info->getCore().get_current_blockchain_size();
+ return createDtoResponse(Status::CODE_200, model);
+ }
+
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* BlockHeightController_hpp */
diff --git a/src/api/controller/path/block/identifier.hpp b/src/api/controller/path/block/identifier.hpp
new file mode 100644
index 00000000..de423cdc
--- /dev/null
+++ b/src/api/controller/path/block/identifier.hpp
@@ -0,0 +1,122 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockIdentifierController_hpp
+#define BlockIdentifierController_hpp
+
+#include "modal/block/details.hpp"
+#include "modal/transaction/details.hpp"
+#include "controller/ApiCoreInfo.hpp"
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/parser/json/mapping/ObjectMapper.hpp"
+
+#include "rpc/core_rpc_server_commands_defs.h"
+#include // For std::string and std::stoull
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+/**
+ * Block Identifier Controller
+ * Acts as a proxy to fetch blocks by hash or by height (ID).
+ */
+class BlockIdentifierController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+public:
+ explicit BlockIdentifierController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper)
+ {}
+public:
+
+ ENDPOINT_INFO(getBlock) {
+ info->summary = "Get a block by its hash or height (ID)";
+ info->addTag("Block");
+ info->pathParams["identifier"].description = "The hash (hex string) or height (integer) of the block to retrieve.";
+ info->addResponse>(Status::CODE_200, "application/json");
+ info->addResponse(Status::CODE_404, "text/plain");
+ info->addResponse(Status::CODE_400, "text/plain");
+ }
+ ENDPOINT("GET", "/block/{identifier}", getBlock, PATH(String, identifier)) {
+
+ currency::block_rpc_extended_info rpc_details;
+ bool block_found = false;
+
+ // Check if the identifier consists only of digits
+ if (identifier->find_first_not_of("0123456789") == std::string::npos) {
+ // It's a numeric ID (height)
+ try {
+ uint64_t height = std::stoull(identifier->c_str());
+ block_found = m_core_info->getCore().get_blockchain_storage().get_main_block_rpc_details(height, rpc_details);
+ } catch (const std::exception& e) {
+ return createResponse(Status::CODE_400, "Invalid block height format");
+ }
+ } else {
+ // It's a hash
+ crypto::hash block_hash{};
+ if (!epee::string_tools::hex_to_pod(*identifier, block_hash)) {
+ return createResponse(Status::CODE_400, "Invalid block hash format");
+ }
+ block_found = m_core_info->getCore().get_blockchain_storage().get_main_block_rpc_details(block_hash, rpc_details);
+ }
+
+ if (!block_found) {
+ return createResponse(Status::CODE_404, "Block not found");
+ }
+
+ // Common logic to populate the DTO
+ auto blockDetails = BlockDetailsModel::createShared();
+
+ blockDetails->id = rpc_details.id;
+ blockDetails->height = rpc_details.height;
+ blockDetails->timestamp = rpc_details.timestamp;
+ blockDetails->actual_timestamp = rpc_details.actual_timestamp;
+ blockDetails->difficulty = rpc_details.difficulty;
+ blockDetails->prev_id = rpc_details.prev_id;
+ blockDetails->is_orphan = rpc_details.is_orphan;
+ blockDetails->base_reward = rpc_details.base_reward;
+ blockDetails->summary_reward = rpc_details.summary_reward;
+ blockDetails->total_fee = rpc_details.total_fee;
+ blockDetails->penalty = rpc_details.penalty;
+ blockDetails->already_generated_coins = rpc_details.already_generated_coins;
+ blockDetails->block_cumulative_size = rpc_details.block_cumulative_size;
+ blockDetails->total_txs_size = rpc_details.total_txs_size;
+ blockDetails->cumulative_diff_adjusted = rpc_details.cumulative_diff_adjusted;
+ blockDetails->cumulative_diff_precise = rpc_details.cumulative_diff_precise;
+ blockDetails->blob = rpc_details.blob;
+ blockDetails->miner_text_info = rpc_details.miner_text_info;
+ blockDetails->type = rpc_details.type;
+
+ auto tx_details_list = oatpp::List>::createShared();
+ for(const auto& tx_rpc_info : rpc_details.transactions_details) {
+ auto tx_model = TransactionDetailsModel::createShared();
+ tx_model->id = tx_rpc_info.id;
+ tx_model->fee = tx_rpc_info.fee;
+ tx_model->amount = tx_rpc_info.amount;
+ tx_model->blob_size = tx_rpc_info.blob_size;
+ tx_model->keeper_block = tx_rpc_info.keeper_block;
+ tx_model->timestamp = tx_rpc_info.timestamp;
+ tx_details_list->push_back(tx_model);
+ }
+ blockDetails->transactions_details = tx_details_list;
+
+ return createDtoResponse(Status::CODE_200, blockDetails);
+ }
+
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* BlockIdentifierController_hpp */
diff --git a/src/api/controller/path/block/submit.hpp b/src/api/controller/path/block/submit.hpp
new file mode 100644
index 00000000..30a6e512
--- /dev/null
+++ b/src/api/controller/path/block/submit.hpp
@@ -0,0 +1,75 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockSubmitController_hpp
+#define BlockSubmitController_hpp
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "controller/ApiCoreInfo.hpp"
+#include "modal/block/submit_request.hpp"
+#include "modal/block/submit_response.hpp"
+#include "currency_core/currency_format_utils.h"
+#include "currency_core/verification_context.h"
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+class BlockSubmitController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+public:
+ explicit BlockSubmitController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper) {}
+public:
+
+ ENDPOINT_INFO(submitBlock) {
+ info->summary = "Submit a new block to the network";
+ info->addTag("Block");
+ info->addConsumes>("application/json");
+ info->addResponse>(Status::CODE_200, "application/json");
+ info->addResponse(Status::CODE_400, "text/plain");
+ info->addResponse(Status::CODE_406, "text/plain");
+ }
+ ENDPOINT("POST", "/block/submit", submitBlock, BODY_DTO(Object, requestModel)) {
+ if (!requestModel->block_blob || requestModel->block_blob->empty()) {
+ return createResponse(Status::CODE_400, "Missing block_blob");
+ }
+
+ currency::blobdata blockblob;
+ if (!epee::string_tools::parse_hexstr_to_binbuff(*requestModel->block_blob, blockblob)) {
+ return createResponse(Status::CODE_400, "Wrong block blob");
+ }
+
+ currency::block b = AUTO_VAL_INIT(b);
+ if (!currency::parse_and_validate_block_from_blob(blockblob, b)) {
+ return createResponse(Status::CODE_400, "Wrong block blob");
+ }
+
+ currency::block_verification_context bvc = AUTO_VAL_INIT(bvc);
+ if (!m_core_info->getCore().handle_block_found(b, &bvc)) {
+ if (bvc.m_added_to_altchain) {
+ return createResponse(Status::CODE_406, "Block added as alternative");
+ }
+ return createResponse(Status::CODE_406, "Block not accepted");
+ }
+
+ auto responseModel = SubmitBlockResponseModel::createShared();
+ responseModel->status = "OK";
+ return createDtoResponse(Status::CODE_200, responseModel);
+ }
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* BlockSubmitController_hpp */
diff --git a/src/api/controller/path/block/template.hpp b/src/api/controller/path/block/template.hpp
new file mode 100644
index 00000000..1fd62abe
--- /dev/null
+++ b/src/api/controller/path/block/template.hpp
@@ -0,0 +1,104 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockTemplateController_hpp
+#define BlockTemplateController_hpp
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "controller/ApiCoreInfo.hpp"
+#include "modal/block/template_request.hpp"
+#include "modal/block/template.hpp"
+#include "currency_core/currency_format_utils.h"
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+class BlockTemplateController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+public:
+ explicit BlockTemplateController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper) {}
+public:
+
+ ENDPOINT_INFO(createBlockTemplate) {
+ info->summary = "Create a block template for mining";
+ info->addTag("Block");
+ info->addConsumes>("application/json");
+ info->addResponse>(Status::CODE_200, "application/json");
+ info->addResponse(Status::CODE_400, "text/plain");
+ info->addResponse(Status::CODE_500, "text/plain");
+ }
+ ENDPOINT("POST", "/block/template", createBlockTemplate, BODY_DTO(Object, requestModel)) {
+ currency::create_block_template_params params = AUTO_VAL_INIT(params);
+
+ if (!currency::get_account_address_from_str(params.miner_address, *requestModel->miner_address)) {
+ return createResponse(Status::CODE_400, "Failed to parse miner_address");
+ }
+ if (requestModel->stakeholder_address && !currency::get_account_address_from_str(params.stakeholder_address, *requestModel->stakeholder_address)) {
+ return createResponse(Status::CODE_400, "Failed to parse stakeholder_address");
+ }
+
+ params.ex_nonce = requestModel->ex_nonce ? *requestModel->ex_nonce : "";
+ params.pos = requestModel->pos;
+ params.ignore_pow_ts_check = requestModel->ignore_pow_ts_check;
+
+ if (requestModel->pe) {
+ params.pe.amount = requestModel->pe->amount;
+ params.pe.g_index = requestModel->pe->g_index;
+ epee::string_tools::hex_to_pod(*requestModel->pe->keyimage, params.pe.keyimage);
+ params.pe.block_timestamp = requestModel->pe->block_timestamp;
+ params.pe.stake_unlock_time = requestModel->pe->stake_unlock_time;
+ epee::string_tools::hex_to_pod(*requestModel->pe->tx_id, params.pe.tx_id);
+ params.pe.tx_out_index = requestModel->pe->tx_out_index;
+ params.pe.wallet_index = requestModel->pe->wallet_index;
+ }
+
+ for (const auto& tx_hex : *requestModel->explicit_txs) {
+ currency::transaction tx;
+ currency::blobdata tx_blob;
+ if (!epee::string_tools::parse_hexstr_to_binbuff(*tx_hex, tx_blob) || !currency::parse_and_validate_tx_from_blob(tx_blob, tx)) {
+ return createResponse(Status::CODE_400, "Failed to parse explicit_txs");
+ }
+ params.explicit_txs.push_back(tx);
+ }
+
+ currency::create_block_template_response response = AUTO_VAL_INIT(response);
+ if (!m_core_info->getCore().get_block_template(params, response)) {
+ return createResponse(Status::CODE_500, "Internal error: failed to create block template");
+ }
+
+ auto model = BlockTemplateModel::createShared();
+ model->blocktemplate_blob = epee::string_tools::buff_to_hex_nodelimer(t_serializable_object_to_blob(response.b));
+ model->difficulty = response.diffic.convert_to();
+ model->height = response.height;
+ model->block_reward_without_fee = response.block_reward_without_fee;
+ model->block_reward = response.block_reward;
+ model->txs_fee = response.txs_fee;
+ model->prev_hash = epee::string_tools::pod_to_hex(response.b.prev_id);
+ model->seed = epee::string_tools::pod_to_hex(currency::ethash_epoch_to_seed(currency::ethash_height_to_epoch(response.height)));
+
+ auto tgc_model = TxGenerationContextModel::createShared();
+ // This is a very complex object with many cryptographic details.
+ // For now, we will leave it empty as it's not essential for basic mining.
+ // A dedicated endpoint could be created later to expose this if needed.
+ model->miner_tx_tgc = tgc_model;
+
+ return createDtoResponse(Status::CODE_200, model);
+ }
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* BlockTemplateController_hpp */
diff --git a/src/api/controller/path/info.hpp b/src/api/controller/path/info.hpp
new file mode 100644
index 00000000..327e7a25
--- /dev/null
+++ b/src/api/controller/path/info.hpp
@@ -0,0 +1,228 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef InfoController_hpp
+#define InfoController_hpp
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "controller/ApiCoreInfo.hpp"
+#include "modal/info/details.hpp"
+#include "currency_core/currency_stat_info.h"
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+/**
+ * Info Controller
+ */
+class InfoController : public oatpp::web::server::api::ApiController {
+private:
+ OATPP_COMPONENT(std::shared_ptr, m_core_info);
+public:
+ explicit InfoController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper)
+ {}
+public:
+
+ ENDPOINT_INFO(getInfo) {
+ info->summary = "Get detailed information about the blockchain and daemon state";
+ info->addTag("Info");
+ info->addResponse>(Status::CODE_200, "application/json");
+ info->queryParams["flags"].name = "flags";
+ info->queryParams["flags"].description = "Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.";
+ }
+ ENDPOINT("GET", "/info", getInfo, QUERY(String, flags, "flags",""), QUERIES(QueryParams, queryParams)) {
+ auto model = InfoModel::createShared();
+ currency::core& core = m_core_info->getCore();
+ currency::t_currency_protocol_handler& p2p_handler = m_core_info->getP2p().get_payload_object();
+ currency::blockchain_storage& bcs = core.get_blockchain_storage();
+
+ model->height = bcs.get_current_blockchain_size();
+ model->tx_count = bcs.get_total_transactions() - model->height; //without coinbase
+ model->tx_pool_size = core.get_pool_transactions_count();
+ model->alt_blocks_count = bcs.get_alternative_blocks_count();
+ uint64_t total_conn = m_core_info->getP2p().get_connections_count();
+ model->outgoing_connections_count = m_core_info->getP2p().get_outgoing_connections_count();
+ model->incoming_connections_count = total_conn - model->outgoing_connections_count;
+ model->synchronized_connections_count = p2p_handler.get_synchronized_connections_count();
+ model->white_peerlist_size = m_core_info->getP2p().get_peerlist_manager().get_white_peers_count();
+ model->grey_peerlist_size = m_core_info->getP2p().get_peerlist_manager().get_gray_peers_count();
+ model->current_blocks_median = bcs.get_current_comulative_blocksize_limit() / 2;
+ model->alias_count = bcs.get_aliases_count();
+ model->current_max_allowed_block_size = bcs.get_current_comulative_blocksize_limit();
+
+ if (!model->outgoing_connections_count)
+ model->daemon_network_state = "connecting";
+ else if (p2p_handler.is_synchronized())
+ model->daemon_network_state = "online";
+ else
+ model->daemon_network_state = "synchronizing";
+
+ model->synchronization_start_height = p2p_handler.get_core_inital_height();
+ model->max_net_seen_height = p2p_handler.get_max_seen_height();
+
+ nodetool::maintainers_info_external mi_res;
+ m_core_info->getP2p().get_maintainers_info(mi_res);
+ auto mi_model = MaintainersInfoModel::createShared();
+ mi_model->ver_major = mi_res.ver_major;
+ mi_model->ver_minor = mi_res.ver_minor;
+ mi_model->ver_revision = mi_res.ver_revision;
+ mi_model->build_no = mi_res.build_no;
+ mi_model->mode = mi_res.mode;
+ model->mi = mi_model;
+
+ model->pos_allowed = bcs.is_pos_allowed();
+ model->pos_difficulty = bcs.get_cached_next_difficulty(true).convert_to();
+ model->pow_difficulty = bcs.get_cached_next_difficulty(false).convert_to();
+ model->default_fee = bcs.get_core_runtime_config().tx_default_fee;
+ model->minimum_fee = bcs.get_core_runtime_config().tx_pool_min_fee;
+
+ auto hf_list = oatpp::List::createShared();
+ for (size_t i = 0; i != ZANO_HARDFORKS_TOTAL; i++)
+ {
+ hf_list->push_back(bcs.is_hardfork_active(i));
+ }
+ model->is_hardfork_active = hf_list;
+
+ auto flagsStr = queryParams.get("flags");
+ if (flagsStr) {
+ std::istringstream iss(flagsStr->c_str());
+ std::string flag;
+ while (std::getline(iss, flag, ',')) {
+ if (flag == "net_time_delta_median") {
+ int64_t last_median2local_time_diff, last_ntp2local_time_diff;
+ if (!p2p_handler.get_last_time_sync_difference(last_median2local_time_diff, last_ntp2local_time_diff))
+ model->net_time_delta_median = 1;
+ } else if (flag == "current_network_hashrate_50") {
+ model->current_network_hashrate_50 = bcs.get_current_hashrate(50);
+ } else if (flag == "current_network_hashrate_350") {
+ model->current_network_hashrate_350 = bcs.get_current_hashrate(350);
+ } else if (flag == "seconds_for_10_blocks") {
+ model->seconds_for_10_blocks = bcs.get_seconds_between_last_n_block(10);
+ } else if (flag == "seconds_for_30_blocks") {
+ model->seconds_for_30_blocks = bcs.get_seconds_between_last_n_block(30);
+ } else if (flag == "transactions_daily_stat") {
+ uint64_t daily_tx_count = 0, daily_tx_vol = 0;
+ bcs.get_transactions_daily_stat(daily_tx_count, daily_tx_vol);
+ auto daily_tx_count_list = oatpp::List::createShared();
+ daily_tx_count_list->push_back(daily_tx_count);
+ model->transactions_cnt_per_day = daily_tx_count_list;
+ auto daily_tx_vol_list = oatpp::List::createShared();
+ daily_tx_vol_list->push_back(daily_tx_vol);
+ model->transactions_volume_per_day = daily_tx_vol_list;
+ } else if (flag == "last_pos_timestamp") {
+ auto pos_bl_ptr = bcs.get_last_block_of_type(true);
+ if (pos_bl_ptr) model->last_pos_timestamp = pos_bl_ptr->bl.timestamp;
+ } else if (flag == "last_pow_timestamp") {
+ auto pow_bl_ptr = bcs.get_last_block_of_type(false);
+ if (pow_bl_ptr) model->last_pow_timestamp = pow_bl_ptr->bl.timestamp;
+ } else if (flag == "total_coins") {
+ model->total_coins = boost::lexical_cast(bcs.total_coins());
+ } else if (flag == "last_block_size") {
+ std::vector sz;
+ bcs.get_last_n_blocks_sizes(sz, 1);
+ model->last_block_size = sz.size() ? sz.back() : 0;
+ } else if (flag == "tx_count_in_last_block") {
+ currency::block b = AUTO_VAL_INIT(b);
+ bcs.get_top_block(b);
+ model->tx_count_in_last_block = b.tx_hashes.size();
+ } else if (flag == "pos_sequence_factor") {
+ model->pos_sequence_factor = bcs.get_current_sequence_factor(true);
+ } else if (flag == "pow_sequence_factor") {
+ model->pow_sequence_factor = bcs.get_current_sequence_factor(false);
+ } else if (flag == "pos_difficulty") {
+ currency::block b = AUTO_VAL_INIT(b);
+ bcs.get_top_block(b);
+ model->block_reward = currency::get_base_block_reward(model->height);
+ model->last_block_total_reward = currency::get_reward_from_miner_tx(b.miner_tx);
+ model->pos_diff_total_coins_rate = (bcs.get_cached_next_difficulty(true) / (bcs.total_coins() - PREMINE_AMOUNT + 1)).convert_to();
+ model->last_block_timestamp = b.timestamp;
+ model->last_block_hash = string_tools::pod_to_hex(get_block_hash(b));
+ } else if (flag == "performance") {
+ auto perf_model = PerformanceModel::createShared();
+ const currency::blockchain_storage::performnce_data& pd = bcs.get_performnce_data();
+ auto block_processing_model = BlockProcessingPerformanceModel::createShared();
+ block_processing_model->block_processing_time_0 = pd.block_processing_time_0_ms.get_avg();
+ block_processing_model->block_processing_time_1 = pd.block_processing_time_1.get_avg();
+ block_processing_model->target_calculating_time_2 = pd.target_calculating_time_2.get_avg();
+ block_processing_model->longhash_calculating_time_3 = pd.longhash_calculating_time_3.get_avg();
+ block_processing_model->all_txs_insert_time_5 = pd.all_txs_insert_time_5.get_avg();
+ block_processing_model->etc_stuff_6 = pd.etc_stuff_6.get_avg();
+ block_processing_model->insert_time_4 = pd.insert_time_4.get_avg();
+ block_processing_model->raise_block_core_event = pd.raise_block_core_event.get_avg();
+ block_processing_model->target_calculating_enum_blocks = pd.target_calculating_enum_blocks.get_avg();
+ block_processing_model->target_calculating_calc = pd.target_calculating_calc.get_avg();
+ perf_model->block_processing = block_processing_model;
+
+ auto tx_processing_model = TxProcessingPerformanceModel::createShared();
+ tx_processing_model->tx_check_inputs = pd.tx_check_inputs_time.get_avg();
+ tx_processing_model->tx_add_one_tx = pd.tx_add_one_tx_time.get_avg();
+ tx_processing_model->tx_process_extra = pd.tx_process_extra.get_avg();
+ tx_processing_model->tx_process_attachment = pd.tx_process_attachment.get_avg();
+ tx_processing_model->tx_process_inputs = pd.tx_process_inputs.get_avg();
+ tx_processing_model->tx_push_global_index = pd.tx_push_global_index.get_avg();
+ tx_processing_model->tx_check_exist = pd.tx_check_exist.get_avg();
+ tx_processing_model->tx_append = pd.tx_append_time.get_avg();
+ tx_processing_model->tx_append_rl_wait = pd.tx_append_rl_wait.get_avg();
+ tx_processing_model->tx_append_is_expired = pd.tx_append_is_expired.get_avg();
+ tx_processing_model->tx_store_db = pd.tx_store_db.get_avg();
+ tx_processing_model->tx_check_inputs_prefix_hash = pd.tx_check_inputs_prefix_hash.get_avg();
+ tx_processing_model->tx_check_inputs_attachment_check = pd.tx_check_inputs_attachment_check.get_avg();
+ tx_processing_model->tx_check_inputs_loop = pd.tx_check_inputs_loop.get_avg();
+ tx_processing_model->tx_check_inputs_loop_kimage_check = pd.tx_check_inputs_loop_kimage_check.get_avg();
+ tx_processing_model->tx_check_inputs_loop_ch_in_val_sig = pd.tx_check_inputs_loop_ch_in_val_sig.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_get_item_size = pd.tx_check_inputs_loop_scan_outputkeys_get_item_size.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_relative_to_absolute = pd.tx_check_inputs_loop_scan_outputkeys_relative_to_absolute.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_loop = pd.tx_check_inputs_loop_scan_outputkeys_loop.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_loop_get_subitem = pd.tx_check_inputs_loop_scan_outputkeys_loop_get_subitem.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_loop_find_tx = pd.tx_check_inputs_loop_scan_outputkeys_loop_find_tx.get_avg();
+ tx_processing_model->tx_check_inputs_loop_scan_outputkeys_loop_handle_output = pd.tx_check_inputs_loop_scan_outputkeys_loop_handle_output.get_avg();
+ tx_processing_model->tx_mixin_count = pd.tx_mixin_count.get_avg();
+ perf_model->tx_processing = tx_processing_model;
+
+ const currency::tx_memory_pool::performnce_data& pool_pd = core.get_tx_pool().get_performnce_data();
+ auto tx_pool_model = TxPoolPerformanceModel::createShared();
+ tx_pool_model->tx_processing_time = pool_pd.tx_processing_time.get_avg();
+ tx_pool_model->check_inputs_types_supported_time = pool_pd.check_inputs_types_supported_time.get_avg();
+ tx_pool_model->expiration_validate_time = pool_pd.expiration_validate_time.get_avg();
+ tx_pool_model->validate_amount_time = pool_pd.validate_amount_time.get_avg();
+ tx_pool_model->validate_alias_time = pool_pd.validate_alias_time.get_avg();
+ tx_pool_model->check_keyimages_ws_ms_time = pool_pd.check_keyimages_ws_ms_time.get_avg();
+ tx_pool_model->check_inputs_time = pool_pd.check_inputs_time.get_avg();
+ tx_pool_model->begin_tx_time = pool_pd.begin_tx_time.get_avg();
+ tx_pool_model->update_db_time = pool_pd.update_db_time.get_avg();
+ tx_pool_model->db_commit_time = pool_pd.db_commit_time.get_avg();
+ perf_model->tx_pool = tx_pool_model;
+
+ auto db_stat_model = DbStatInfoModel::createShared();
+ db_stat_model->map_size = pd.si.map_size;
+ db_stat_model->tx_count = pd.si.tx_count;
+ db_stat_model->write_tx_count = pd.si.write_tx_count;
+ perf_model->db_stat_info = db_stat_model;
+
+ model->performance_data = perf_model;
+ } else if (flag == "expirations_median") {
+ model->expiration_median_timestamp = bcs.get_tx_expiration_median();
+ }
+ }
+ }
+
+ return createDtoResponse(Status::CODE_200, model);
+ }
+
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* InfoController_hpp */
diff --git a/src/api/controller/path/info/version.hpp b/src/api/controller/path/info/version.hpp
new file mode 100644
index 00000000..1cfeb72f
--- /dev/null
+++ b/src/api/controller/path/info/version.hpp
@@ -0,0 +1,57 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef InfoVersionController_hpp
+#define InfoVersionController_hpp
+
+#include "oatpp/web/server/api/ApiController.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "version.h"
+#include "modal/meta/version.hpp"
+
+#include OATPP_CODEGEN_BEGIN(ApiController)
+
+/**
+ * Version Controller
+ */
+class InfoVersionController : public oatpp::web::server::api::ApiController {
+public:
+ explicit InfoVersionController(OATPP_COMPONENT(std::shared_ptr, objectMapper))
+ : oatpp::web::server::api::ApiController(objectMapper)
+ {}
+public:
+
+ ENDPOINT_INFO(version)
+ {
+ info->addTag("Info");
+ info->summary = "Get API version";
+ info->description = "Returns the current version of the API.";
+ info->addResponse>(Status::CODE_200, "application/json");
+ }
+ ENDPOINT("GET", "/info/version", version)
+ {
+ auto model = VersionModel::createShared();
+ model->version = PROJECT_VERSION;
+ model->version_long = PROJECT_VERSION_LONG;
+ model->major = PROJECT_MAJOR_VERSION;
+ model->minor = PROJECT_MINOR_VERSION;
+ model->revision = PROJECT_REVISION;
+ return createDtoResponse(Status::CODE_200, model);
+ }
+
+};
+
+#include OATPP_CODEGEN_END(ApiController)
+
+#endif /* InfoVersionController_hpp */
diff --git a/src/api/main.cpp b/src/api/main.cpp
new file mode 100644
index 00000000..fd218aed
--- /dev/null
+++ b/src/api/main.cpp
@@ -0,0 +1,36 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#include "ApiServer.hpp"
+#include "oatpp/core/base/Environment.hpp"
+#include "common/util.h"
+
+int main(int argc, const char * argv[]) {
+
+ oatpp::base::Environment::init();
+
+ ApiServer server;
+
+ tools::signal_handler::install([&server] {
+ server.stop();
+ });
+
+ server.start();
+ server.wait();
+
+ /* Destroy oatpp Environment */
+ oatpp::base::Environment::destroy();
+
+ return 0;
+}
diff --git a/src/api/modal/block/details.hpp b/src/api/modal/block/details.hpp
new file mode 100644
index 00000000..d4803b58
--- /dev/null
+++ b/src/api/modal/block/details.hpp
@@ -0,0 +1,59 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockDetailsModel_hpp
+#define BlockDetailsModel_hpp
+
+#include "modal/transaction/details.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+/**
+ * Model for detailed block information.
+ */
+class BlockDetailsModel : public oatpp::DTO {
+ DTO_INIT(BlockDetailsModel, DTO);
+
+ DTO_FIELD(UInt64, actual_timestamp, "actual_timestamp");
+ DTO_FIELD(String, already_generated_coins, "already_generated_coins");
+ DTO_FIELD(UInt64, base_reward, "base_reward");
+ DTO_FIELD(String, blob, "blob");
+ DTO_FIELD(UInt64, block_cumulative_size, "block_cumulative_size");
+ DTO_FIELD(UInt64, block_tself_size, "block_tself_size");
+ DTO_FIELD(String, cumulative_diff_adjusted, "cumulative_diff_adjusted");
+ DTO_FIELD(String, cumulative_diff_precise, "cumulative_diff_precise");
+ DTO_FIELD(String, difficulty, "difficulty");
+ DTO_FIELD(UInt64, effective_fee_median, "effective_fee_median");
+ DTO_FIELD(UInt64, height, "height");
+ DTO_FIELD(String, id, "id");
+ DTO_FIELD(Boolean, is_orphan, "is_orphan");
+ DTO_FIELD(String, miner_text_info, "miner_text_info");
+ DTO_FIELD(String, object_in_json, "object_in_json");
+ DTO_FIELD(UInt64, penalty, "penalty");
+ DTO_FIELD(String, pow_seed, "pow_seed");
+ DTO_FIELD(String, prev_id, "prev_id");
+ DTO_FIELD(UInt64, summary_reward, "summary_reward");
+ DTO_FIELD(UInt64, this_block_fee_median, "this_block_fee_median");
+ DTO_FIELD(UInt64, timestamp, "timestamp");
+ DTO_FIELD(UInt64, total_fee, "total_fee");
+ DTO_FIELD(UInt64, total_txs_size, "total_txs_size");
+ DTO_FIELD(List>, transactions_details, "transactions_details");
+ DTO_FIELD(UInt32, type, "type");
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* BlockDetailsModel_hpp */
diff --git a/src/api/modal/block/height.hpp b/src/api/modal/block/height.hpp
new file mode 100644
index 00000000..c0467d0b
--- /dev/null
+++ b/src/api/modal/block/height.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef HeightModel_hpp
+#define HeightModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class HeightModel final : public oatpp::DTO
+{
+ DTO_INIT(HeightModel, DTO);
+
+ DTO_FIELD(UInt64, height);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* HeightModel_hpp */
diff --git a/src/api/modal/block/submit_request.hpp b/src/api/modal/block/submit_request.hpp
new file mode 100644
index 00000000..2f055a6c
--- /dev/null
+++ b/src/api/modal/block/submit_request.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef SubmitBlockRequestModel_hpp
+#define SubmitBlockRequestModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class SubmitBlockRequestModel final : public oatpp::DTO
+{
+ DTO_INIT(SubmitBlockRequestModel, DTO);
+
+ DTO_FIELD(String, block_blob);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* SubmitBlockRequestModel_hpp */
diff --git a/src/api/modal/block/submit_response.hpp b/src/api/modal/block/submit_response.hpp
new file mode 100644
index 00000000..9b227783
--- /dev/null
+++ b/src/api/modal/block/submit_response.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef SubmitBlockResponseModel_hpp
+#define SubmitBlockResponseModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class SubmitBlockResponseModel final : public oatpp::DTO
+{
+ DTO_INIT(SubmitBlockResponseModel, DTO);
+
+ DTO_FIELD(String, status);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* SubmitBlockResponseModel_hpp */
diff --git a/src/api/modal/block/template.hpp b/src/api/modal/block/template.hpp
new file mode 100644
index 00000000..61b29ce5
--- /dev/null
+++ b/src/api/modal/block/template.hpp
@@ -0,0 +1,41 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockTemplateModel_hpp
+#define BlockTemplateModel_hpp
+
+#include "../meta/tx_generation_context.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class BlockTemplateModel final : public oatpp::DTO
+{
+ DTO_INIT(BlockTemplateModel, DTO);
+
+ DTO_FIELD(String, blocktemplate_blob);
+ DTO_FIELD(String, difficulty);
+ DTO_FIELD(UInt64, height);
+ DTO_FIELD(Object, miner_tx_tgc);
+ DTO_FIELD(UInt64, block_reward_without_fee);
+ DTO_FIELD(UInt64, block_reward);
+ DTO_FIELD(UInt64, txs_fee);
+ DTO_FIELD(String, prev_hash);
+ DTO_FIELD(String, seed);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* BlockTemplateModel_hpp */
diff --git a/src/api/modal/block/template_request.hpp b/src/api/modal/block/template_request.hpp
new file mode 100644
index 00000000..fd3e8131
--- /dev/null
+++ b/src/api/modal/block/template_request.hpp
@@ -0,0 +1,39 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockTemplateRequestModel_hpp
+#define BlockTemplateRequestModel_hpp
+
+#include "../meta/pos_entry.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class BlockTemplateRequestModel final : public oatpp::DTO
+{
+ DTO_INIT(BlockTemplateRequestModel, DTO);
+
+ DTO_FIELD(String, miner_address);
+ DTO_FIELD(String, stakeholder_address);
+ DTO_FIELD(String, ex_nonce);
+ DTO_FIELD(Boolean, pos, "pos_block");
+ DTO_FIELD(Boolean, ignore_pow_ts_check);
+ DTO_FIELD(Object, pe);
+ DTO_FIELD(List, explicit_txs);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* BlockTemplateRequestModel_hpp */
diff --git a/src/api/modal/info/details.hpp b/src/api/modal/info/details.hpp
new file mode 100644
index 00000000..58b3c073
--- /dev/null
+++ b/src/api/modal/info/details.hpp
@@ -0,0 +1,79 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef InfoModel_hpp
+#define InfoModel_hpp
+
+#include "maintainers_info.hpp"
+#include "modal/meta/performance.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class InfoModel final : public oatpp::DTO
+{
+ DTO_INIT(InfoModel, DTO);
+
+ DTO_FIELD(UInt64, height);
+ DTO_FIELD(UInt64, tx_count);
+ DTO_FIELD(UInt64, tx_pool_size);
+ DTO_FIELD(UInt64, alt_blocks_count);
+ DTO_FIELD(UInt64, outgoing_connections_count);
+ DTO_FIELD(UInt64, incoming_connections_count);
+ DTO_FIELD(UInt64, synchronized_connections_count);
+ DTO_FIELD(UInt64, white_peerlist_size);
+ DTO_FIELD(UInt64, grey_peerlist_size);
+ DTO_FIELD(UInt64, current_blocks_median);
+ DTO_FIELD(UInt64, alias_count);
+ DTO_FIELD(UInt64, current_max_allowed_block_size);
+ DTO_FIELD(String, daemon_network_state);
+ DTO_FIELD(UInt64, synchronization_start_height);
+ DTO_FIELD(UInt64, max_net_seen_height);
+ DTO_FIELD(Object, mi);
+ DTO_FIELD(Boolean, pos_allowed);
+ DTO_FIELD(String, pos_difficulty);
+ DTO_FIELD(UInt64, pow_difficulty);
+ DTO_FIELD(UInt64, default_fee);
+ DTO_FIELD(UInt64, minimum_fee);
+ DTO_FIELD(List, is_hardfork_active);
+ DTO_FIELD(Int64, net_time_delta_median);
+ DTO_FIELD(UInt64, current_network_hashrate_50);
+ DTO_FIELD(UInt64, current_network_hashrate_350);
+ DTO_FIELD(UInt64, seconds_for_10_blocks);
+ DTO_FIELD(UInt64, seconds_for_30_blocks);
+ DTO_FIELD(List, transactions_cnt_per_day);
+ DTO_FIELD(List, transactions_volume_per_day);
+ DTO_FIELD(UInt64, last_pos_timestamp);
+ DTO_FIELD(UInt64, last_pow_timestamp);
+ DTO_FIELD(String, total_coins);
+ DTO_FIELD(UInt64, last_block_size);
+ DTO_FIELD(UInt64, tx_count_in_last_block);
+ DTO_FIELD(Float64, pos_sequence_factor);
+ DTO_FIELD(Float64, pow_sequence_factor);
+ DTO_FIELD(UInt64, block_reward);
+ DTO_FIELD(UInt64, last_block_total_reward);
+ DTO_FIELD(UInt64, pos_diff_total_coins_rate);
+ DTO_FIELD(UInt64, last_block_timestamp);
+ DTO_FIELD(String, last_block_hash);
+ DTO_FIELD(Int64, pos_block_ts_shift_vs_actual);
+ DTO_FIELD(Fields, outs_stat); // Represents a map of uint64_t to uint64_t
+ DTO_FIELD(Object, performance_data);
+ DTO_FIELD(UInt64, offers_count);
+ DTO_FIELD(UInt64, expiration_median_timestamp);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* InfoModel_hpp */
diff --git a/src/api/modal/info/maintainers_info.hpp b/src/api/modal/info/maintainers_info.hpp
new file mode 100644
index 00000000..56e2bd13
--- /dev/null
+++ b/src/api/modal/info/maintainers_info.hpp
@@ -0,0 +1,36 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef MaintainersInfoModel_hpp
+#define MaintainersInfoModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class MaintainersInfoModel final : public oatpp::DTO
+{
+ DTO_INIT(MaintainersInfoModel, DTO);
+
+ DTO_FIELD(UInt8, ver_major);
+ DTO_FIELD(UInt8, ver_minor);
+ DTO_FIELD(UInt8, ver_revision);
+ DTO_FIELD(UInt32, build_no);
+ DTO_FIELD(UInt8, mode);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* MaintainersInfoModel_hpp */
diff --git a/src/api/modal/meta/db_stat_info.hpp b/src/api/modal/meta/db_stat_info.hpp
new file mode 100644
index 00000000..be080557
--- /dev/null
+++ b/src/api/modal/meta/db_stat_info.hpp
@@ -0,0 +1,34 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef DbStatInfoModel_hpp
+#define DbStatInfoModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class DbStatInfoModel final : public oatpp::DTO
+{
+ DTO_INIT(DbStatInfoModel, DTO);
+
+ DTO_FIELD(UInt64, tx_count);
+ DTO_FIELD(UInt64, write_tx_count);
+ DTO_FIELD(UInt64, map_size);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* DbStatInfoModel_hpp */
diff --git a/src/api/modal/meta/page.hpp b/src/api/modal/meta/page.hpp
new file mode 100644
index 00000000..b69abd12
--- /dev/null
+++ b/src/api/modal/meta/page.hpp
@@ -0,0 +1,25 @@
+
+#ifndef PAGEDTO_HPP
+#define PAGEDTO_HPP
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+template
+class PageDto : public oatpp::DTO {
+
+ DTO_INIT(PageDto, DTO);
+
+ DTO_FIELD(UInt32, offset);
+ DTO_FIELD(UInt32, limit);
+ DTO_FIELD(UInt32, count);
+ DTO_FIELD(Vector, items);
+
+};
+
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif //PAGEDTO_HPP
\ No newline at end of file
diff --git a/src/api/modal/meta/performance.hpp b/src/api/modal/meta/performance.hpp
new file mode 100644
index 00000000..bed1c8c9
--- /dev/null
+++ b/src/api/modal/meta/performance.hpp
@@ -0,0 +1,39 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef PerformanceModel_hpp
+#define PerformanceModel_hpp
+
+#include "performance/block_processing.hpp"
+#include "performance/tx_processing.hpp"
+#include "performance/tx_pool.hpp"
+#include "db_stat_info.hpp"
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class PerformanceModel final : public oatpp::DTO
+{
+ DTO_INIT(PerformanceModel, DTO);
+
+ DTO_FIELD(Object, block_processing);
+ DTO_FIELD(Object, tx_processing);
+ DTO_FIELD(Object, tx_pool);
+ DTO_FIELD(Object, db_stat_info);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* PerformanceModel_hpp */
diff --git a/src/api/modal/meta/performance/block_processing.hpp b/src/api/modal/meta/performance/block_processing.hpp
new file mode 100644
index 00000000..965db793
--- /dev/null
+++ b/src/api/modal/meta/performance/block_processing.hpp
@@ -0,0 +1,47 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef BlockProcessingPerformanceModel_hpp
+#define BlockProcessingPerformanceModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class BlockProcessingPerformanceModel final : public oatpp::DTO
+{
+ DTO_INIT(BlockProcessingPerformanceModel, DTO);
+
+ DTO_FIELD(UInt64, block_processing_time_0);
+ DTO_FIELD(UInt64, block_processing_time_1);
+ DTO_FIELD(UInt64, target_calculating_time_2);
+ DTO_FIELD(UInt64, longhash_calculating_time_3);
+ DTO_FIELD(UInt64, all_txs_insert_time_5);
+ DTO_FIELD(UInt64, etc_stuff_6);
+ DTO_FIELD(UInt64, insert_time_4);
+ DTO_FIELD(UInt64, raise_block_core_event);
+ DTO_FIELD(UInt64, validate_miner_transaction_time);
+ DTO_FIELD(UInt64, collect_rangeproofs_data_from_tx_time);
+ DTO_FIELD(UInt64, verify_multiple_zc_outs_range_proofs_time);
+ DTO_FIELD(UInt64, target_calculating_enum_blocks);
+ DTO_FIELD(UInt64, target_calculating_calc);
+ DTO_FIELD(UInt64, pos_validate_ki_search);
+ DTO_FIELD(UInt64, pos_validate_get_out_keys_for_inputs);
+ DTO_FIELD(UInt64, pos_validate_zvp);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* BlockProcessingPerformanceModel_hpp */
diff --git a/src/api/modal/meta/performance/tx_pool.hpp b/src/api/modal/meta/performance/tx_pool.hpp
new file mode 100644
index 00000000..31cda6f1
--- /dev/null
+++ b/src/api/modal/meta/performance/tx_pool.hpp
@@ -0,0 +1,42 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef TxPoolPerformanceModel_hpp
+#define TxPoolPerformanceModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class TxPoolPerformanceModel final : public oatpp::DTO
+{
+ DTO_INIT(TxPoolPerformanceModel, DTO);
+
+ DTO_FIELD(UInt64, tx_processing_time);
+ DTO_FIELD(UInt64, check_inputs_types_supported_time);
+ DTO_FIELD(UInt64, expiration_validate_time);
+ DTO_FIELD(UInt64, validate_amount_time);
+ DTO_FIELD(UInt64, validate_alias_time);
+ DTO_FIELD(UInt64, check_keyimages_ws_ms_time);
+ DTO_FIELD(UInt64, check_inputs_time);
+ DTO_FIELD(UInt64, begin_tx_time);
+ DTO_FIELD(UInt64, update_db_time);
+ DTO_FIELD(UInt64, db_commit_time);
+ DTO_FIELD(UInt64, check_post_hf4_balance);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* TxPoolPerformanceModel_hpp */
diff --git a/src/api/modal/meta/performance/tx_processing.hpp b/src/api/modal/meta/performance/tx_processing.hpp
new file mode 100644
index 00000000..97aacebc
--- /dev/null
+++ b/src/api/modal/meta/performance/tx_processing.hpp
@@ -0,0 +1,56 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef TxProcessingPerformanceModel_hpp
+#define TxProcessingPerformanceModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class TxProcessingPerformanceModel final : public oatpp::DTO
+{
+ DTO_INIT(TxProcessingPerformanceModel, DTO);
+
+ DTO_FIELD(UInt64, tx_check_inputs);
+ DTO_FIELD(UInt64, tx_add_one_tx);
+ DTO_FIELD(UInt64, tx_process_extra);
+ DTO_FIELD(UInt64, tx_process_attachment);
+ DTO_FIELD(UInt64, tx_process_inputs);
+ DTO_FIELD(UInt64, tx_push_global_index);
+ DTO_FIELD(UInt64, tx_check_exist);
+ DTO_FIELD(UInt64, tx_print_log);
+ DTO_FIELD(UInt64, tx_prapare_append);
+ DTO_FIELD(UInt64, tx_append);
+ DTO_FIELD(UInt64, tx_append_rl_wait);
+ DTO_FIELD(UInt64, tx_append_is_expired);
+ DTO_FIELD(UInt64, tx_store_db);
+ DTO_FIELD(UInt64, tx_check_inputs_prefix_hash);
+ DTO_FIELD(UInt64, tx_check_inputs_attachment_check);
+ DTO_FIELD(UInt64, tx_check_inputs_loop);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_kimage_check);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_ch_in_val_sig);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_get_item_size);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_relative_to_absolute);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_loop);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_loop_get_subitem);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_loop_find_tx);
+ DTO_FIELD(UInt64, tx_check_inputs_loop_scan_outputkeys_loop_handle_output);
+ DTO_FIELD(UInt64, tx_mixin_count);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* TxProcessingPerformanceModel_hpp */
diff --git a/src/api/modal/meta/pos_entry.hpp b/src/api/modal/meta/pos_entry.hpp
new file mode 100644
index 00000000..ede3a71b
--- /dev/null
+++ b/src/api/modal/meta/pos_entry.hpp
@@ -0,0 +1,39 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef PosEntryModel_hpp
+#define PosEntryModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class PosEntryModel final : public oatpp::DTO
+{
+ DTO_INIT(PosEntryModel, DTO);
+
+ DTO_FIELD(UInt64, amount);
+ DTO_FIELD(UInt64, g_index);
+ DTO_FIELD(String, keyimage);
+ DTO_FIELD(UInt64, block_timestamp);
+ DTO_FIELD(UInt64, stake_unlock_time);
+ DTO_FIELD(String, tx_id);
+ DTO_FIELD(UInt64, tx_out_index);
+ DTO_FIELD(UInt64, wallet_index);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* PosEntryModel_hpp */
diff --git a/src/api/modal/meta/tx_generation_context.hpp b/src/api/modal/meta/tx_generation_context.hpp
new file mode 100644
index 00000000..d7d00b12
--- /dev/null
+++ b/src/api/modal/meta/tx_generation_context.hpp
@@ -0,0 +1,55 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef TxGenerationContextModel_hpp
+#define TxGenerationContextModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class TxGenerationContextModel final : public oatpp::DTO
+{
+ DTO_INIT(TxGenerationContextModel, DTO);
+
+ DTO_FIELD(List, asset_ids);
+ DTO_FIELD(List, blinded_asset_ids);
+ DTO_FIELD(List, amount_commitments);
+ DTO_FIELD(List, asset_id_blinding_masks);
+ DTO_FIELD(List, amounts);
+ DTO_FIELD(List, amount_blinding_masks);
+ DTO_FIELD(List, pseudo_outs_blinded_asset_ids);
+ DTO_FIELD(List, pseudo_outs_plus_real_out_blinding_masks);
+ DTO_FIELD(List, real_zc_ins_asset_ids);
+ DTO_FIELD(List, zc_input_amounts);
+ DTO_FIELD(String, pseudo_out_amount_commitments_sum);
+ DTO_FIELD(String, pseudo_out_amount_blinding_masks_sum);
+ DTO_FIELD(String, real_in_asset_id_blinding_mask_x_amount_sum);
+ DTO_FIELD(String, amount_commitments_sum);
+ DTO_FIELD(String, amount_blinding_masks_sum);
+ DTO_FIELD(String, asset_id_blinding_mask_x_amount_sum);
+ DTO_FIELD(String, ao_asset_id);
+ DTO_FIELD(String, ao_asset_id_pt);
+ DTO_FIELD(String, ao_amount_commitment);
+ DTO_FIELD(String, ao_amount_blinding_mask);
+ DTO_FIELD(Boolean, ao_commitment_in_outputs);
+ DTO_FIELD(String, tx_key_pub);
+ DTO_FIELD(String, tx_key_sec);
+ DTO_FIELD(String, tx_pub_key_p);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* TxGenerationContextModel_hpp */
diff --git a/src/api/modal/meta/version.hpp b/src/api/modal/meta/version.hpp
new file mode 100644
index 00000000..e8734aa7
--- /dev/null
+++ b/src/api/modal/meta/version.hpp
@@ -0,0 +1,36 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef VersionModel_hpp
+#define VersionModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class VersionModel final : public oatpp::DTO
+{
+ DTO_INIT(VersionModel, DTO);
+
+ DTO_FIELD(String, version);
+ DTO_FIELD(String, version_long);
+ DTO_FIELD(String, major);
+ DTO_FIELD(String, minor);
+ DTO_FIELD(String, revision);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* VersionModel_hpp */
diff --git a/src/api/modal/transaction/details.hpp b/src/api/modal/transaction/details.hpp
new file mode 100644
index 00000000..57ab33d3
--- /dev/null
+++ b/src/api/modal/transaction/details.hpp
@@ -0,0 +1,89 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef TransactionDetailsModel_hpp
+#define TransactionDetailsModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+/**
+ * Model for transaction attachments.
+ */
+class TransactionAttachmentModel : public oatpp::DTO {
+ DTO_INIT(TransactionAttachmentModel, DTO);
+ DTO_FIELD(String, type, "type");
+ DTO_FIELD(String, short_view, "short_view");
+ DTO_FIELD(String, details_view, "details_view");
+};
+
+/**
+ * Model for transaction extra data.
+ */
+class TransactionExtraModel : public oatpp::DTO {
+ DTO_INIT(TransactionExtraModel, DTO);
+ DTO_FIELD(String, type, "type");
+ DTO_FIELD(String, short_view, "short_view");
+ DTO_FIELD(String, details_view, "details_view");
+};
+
+/**
+ * Model for transaction inputs.
+ */
+class TransactionInputModel : public oatpp::DTO {
+ DTO_INIT(TransactionInputModel, DTO);
+ DTO_FIELD(UInt64, amount, "amount");
+ DTO_FIELD(Vector, global_indexes, "global_indexes");
+ DTO_FIELD(String, htlc_origin, "htlc_origin");
+ DTO_FIELD(String, kimage_or_ms_id, "kimage_or_ms_id");
+ DTO_FIELD(UInt32, multisig_count, "multisig_count");
+};
+
+/**
+ * Model for transaction outputs.
+ */
+class TransactionOutputModel : public oatpp::DTO {
+ DTO_INIT(TransactionOutputModel, DTO);
+ DTO_FIELD(UInt64, amount, "amount");
+ DTO_FIELD(UInt64, global_index, "global_index");
+ DTO_FIELD(Boolean, is_spent, "is_spent");
+ DTO_FIELD(UInt32, minimum_sigs, "minimum_sigs");
+ DTO_FIELD(Vector, pub_keys, "pub_keys");
+};
+
+/**
+ * Model for detailed transaction information.
+ */
+class TransactionDetailsModel : public oatpp::DTO {
+ DTO_INIT(TransactionDetailsModel, DTO);
+ DTO_FIELD(UInt64, amount, "amount");
+ DTO_FIELD(List>, attachments, "attachments");
+ DTO_FIELD(String, blob, "blob");
+ DTO_FIELD(UInt64, blob_size, "blob_size");
+ DTO_FIELD(List>, extra, "extra");
+ DTO_FIELD(UInt64, fee, "fee");
+ DTO_FIELD(String, id, "id");
+ DTO_FIELD(List>, ins, "ins");
+ DTO_FIELD(Int64, keeper_block, "keeper_block");
+ DTO_FIELD(String, object_in_json, "object_in_json");
+ DTO_FIELD(List>, outs, "outs");
+ DTO_FIELD(String, pub_key, "pub_key");
+ DTO_FIELD(UInt64, timestamp, "timestamp");
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* TransactionDetailsModel_hpp */
diff --git a/src/api/modal/transaction/send_request.hpp b/src/api/modal/transaction/send_request.hpp
new file mode 100644
index 00000000..3afb8e5e
--- /dev/null
+++ b/src/api/modal/transaction/send_request.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef SendTransactionRequestModel_hpp
+#define SendTransactionRequestModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class SendTransactionRequestModel final : public oatpp::DTO
+{
+ DTO_INIT(SendTransactionRequestModel, DTO);
+
+ DTO_FIELD(String, tx_as_hex);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* SendTransactionRequestModel_hpp */
diff --git a/src/api/modal/transaction/send_response.hpp b/src/api/modal/transaction/send_response.hpp
new file mode 100644
index 00000000..203d8fac
--- /dev/null
+++ b/src/api/modal/transaction/send_response.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017-2025 Lethean (https://lt.hn)
+//
+// Licensed under the European Union Public Licence (EUPL) version 1.2.
+// You may obtain a copy of the licence at:
+//
+// https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+//
+// The EUPL is a copyleft licence that is compatible with the MIT/X11
+// licence used by the original projects; but maintains OSS status,
+// where regional copyright law requires ownership to dictate licence terms.
+//
+// SPDX‑License‑Identifier: EUPL-1.2
+//
+
+#ifndef SendTransactionResponseModel_hpp
+#define SendTransactionResponseModel_hpp
+
+#include "oatpp/core/macro/codegen.hpp"
+#include "oatpp/core/Types.hpp"
+
+#include OATPP_CODEGEN_BEGIN(DTO)
+
+class SendTransactionResponseModel final : public oatpp::DTO
+{
+ DTO_INIT(SendTransactionResponseModel, DTO);
+
+ DTO_FIELD(String, status);
+};
+
+#include OATPP_CODEGEN_END(DTO)
+
+#endif /* SendTransactionResponseModel_hpp */
diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp
index c04b8e05..5d02fd95 100644
--- a/src/daemon/daemon.cpp
+++ b/src/daemon/daemon.cpp
@@ -18,9 +18,12 @@
// node.cpp : Defines the entry point for the console application.
//
+#include "ApiServer.hpp"
#include "include_base_utils.h"
#include "version.h"
+#include "oatpp/core/base/Environment.hpp"
+
using namespace epee;
#include
@@ -57,6 +60,7 @@ BOOST_CLASS_VERSION(nodetool::node_server arg_rpc_server_threads("rpc-server-threads", "Specify number of RPC server threads. Default: 10", RPC_SERVER_DEFAULT_THREADS_NUM);
const command_line::arg_descriptor arg_do_warp_mode("do-warp-mode", "This option pre-loads and unserialize all data into RAM and provide significant speed increase in RPC-handling, requires 32GB psychical RAM at least(64GB recommended). Might be helpful for production servers(like remote nodes or public nodes for mobile apps).");
+
namespace po = boost::program_options;
bool command_line_preprocessor(const boost::program_options::variables_map& vm);
@@ -183,7 +187,7 @@ int main(int argc, char* argv[])
command_line::add_arg(desc_cmd_sett, command_line::arg_disable_ntp);
command_line::add_arg(desc_cmd_sett, arg_rpc_server_threads);
- command_line::add_arg(desc_cmd_sett, arg_do_warp_mode);
+ command_line::add_arg(desc_cmd_sett, arg_do_warp_mode);
arg_market_disable.default_value = true;
arg_market_disable.use_default = true;
@@ -198,6 +202,7 @@ int main(int argc, char* argv[])
bc_services::bc_offers_service::init_options(desc_cmd_sett);
currency::stratum_server::init_options(desc_cmd_sett);
tools::db::db_backend_selector::init_options(desc_cmd_sett);
+ ApiServer::init_options(desc_cmd_sett);
po::options_description desc_options("Allowed options");
desc_options.add(desc_cmd_only).add(desc_cmd_sett);
@@ -464,18 +469,32 @@ int main(int argc, char* argv[])
LOG_PRINT_L0("Stratum server started ok");
}
- tools::signal_handler::install([&dch, &p2psrv, &stratum_server_ptr] {
- dch.stop_handling();
+ std::unique_ptr api_server;
+ oatpp::base::Environment::init();
+ api_server = std::make_unique(vm, &ccore, &p2psrv, &rpc_server);
+ api_server->start();
+
+ // Setup signal handler to gracefully stop the main p2p loop
+ tools::signal_handler::install([&p2psrv] {
+ LOG_PRINT_L0("SIGINT received, stopping p2p net loop...");
p2psrv.send_stop_signal();
- if (stratum_server_ptr)
- stratum_server_ptr->send_stop_signal();
});
LOG_PRINT_L0("Starting p2p net loop...");
- p2psrv.run();
- LOG_PRINT_L0("p2p net loop stopped");
+ p2psrv.run(); // This blocks until the stop signal is received
+ LOG_PRINT_L0("p2p net loop stopped. Starting shutdown...");
- //stop components
+ // Shutdown sequence
+ LOG_PRINT_L0("Stopping command handler...");
+ dch.stop_handling();
+
+ LOG_PRINT_L0("Stopping API server...");
+ api_server->stop();
+ api_server->wait();
+ LOG_PRINT_L0("API server stopped");
+
+
+ //stop other components
if (stratum_enabled)
{
LOG_PRINT_L0("Stopping stratum server...");
@@ -506,6 +525,11 @@ int main(int argc, char* argv[])
LOG_PRINT_L0("Deinitializing p2p...");
p2psrv.deinit();
+ // LOG_PRINT_L0("Destroying oatpp environment...");
+ oatpp::base::Environment::destroy();
+ // LOG_PRINT_L0("oatpp environment destroyed.");
+ //
+
ccore.set_critical_error_handler(nullptr);
ccore.set_currency_protocol(NULL);
cprotocol.set_p2p_endpoint(NULL);
diff --git a/utils/.gitignore b/utils/.gitignore
deleted file mode 100644
index 50872599..00000000
--- a/utils/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-configure_local_paths.cmd
\ No newline at end of file
diff --git a/utils/Directory.Build.props.in b/utils/Directory.Build.props.in
deleted file mode 100644
index 5f263a21..00000000
--- a/utils/Directory.Build.props.in
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- true
- true
- 11
-
-
diff --git a/utils/payment_request.json b/utils/JS/payment_request.json
similarity index 100%
rename from utils/payment_request.json
rename to utils/JS/payment_request.json
diff --git a/utils/premine_config.json b/utils/JS/premine_config.json
similarity index 100%
rename from utils/premine_config.json
rename to utils/JS/premine_config.json
diff --git a/utils/update_alert.json b/utils/JS/update_alert.json
similarity index 100%
rename from utils/update_alert.json
rename to utils/JS/update_alert.json
diff --git a/utils/Zano.desktop b/utils/Zano.desktop
deleted file mode 100644
index 8a912f57..00000000
--- a/utils/Zano.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Name=Zano
-GenericName=Zano
-Comment=Privacy blockchain
-Icon=Zano
-Terminal=true
-Type=Application
-Categories=Qt;Utility;
-Name[en_US]=Zano
-MimeType=x-scheme-handler/zano;
-
diff --git a/utils/Zano.sh b/utils/Zano.sh
deleted file mode 100755
index 696b3859..00000000
--- a/utils/Zano.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-script_dir=$( dirname "$(readlink -f "$0")" )
-
-export LD_LIBRARY_PATH=$script_dir/lib
-export QT_PLUGIN_PATH=$script_dir/lib
-
-echo $LD_LIBRARY_PATH
-echo $QT_PLUGIN_PATH
-
-out_file_name=~/.local/share/applications/Zano.desktop
-
-call_app()
-{
- pushd $script_dir
- ./Zano "$@"
- popd
- exit
-}
-
-
-create_desktop_icon()
-{
- target_file_name=$1
- echo "Generating icon file: $target_file_name..."
- rm -f $target_file_name
- echo [Desktop Entry] | tee -a $target_file_name > /dev/null
- echo Version=1.0 | tee -a $target_file_name > /dev/null
- echo Name=Zano | tee -a $target_file_name > /dev/null
- echo GenericName=Zano | tee -a $target_file_name > /dev/null
- echo Comment=Privacy blockchain | tee -a $target_file_name > /dev/null
- echo Icon=$script_dir/html/files/desktop_linux_icon.png | tee -a $target_file_name > /dev/null
- echo Exec=$script_dir/Zano.sh --deeplink-params=\\\\\"%u\\\\\" | tee -a $target_file_name > /dev/null
- echo Terminal=true | tee -a $target_file_name > /dev/null
- echo Type=Application | tee -a $target_file_name > /dev/null
- echo "Categories=Qt;Utility;" | tee -a $target_file_name > /dev/null
- echo "MimeType=x-scheme-handler/zano;" | tee -a $target_file_name > /dev/null
-}
-
-
-create_desktop_icon $out_file_name
-
-xdg-mime default Zano.desktop x-scheme-handler/zano
-
-call_app "$@"
\ No newline at end of file
diff --git a/utils/Zano_appimage_wrapper.sh b/utils/Zano_appimage_wrapper.sh
deleted file mode 100755
index 5d3db32c..00000000
--- a/utils/Zano_appimage_wrapper.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-script_dir=$( dirname "$(readlink -f "$0")" )
-
-out_dir=~/.local/share/applications
-version="$(echo ${APPIMAGE} | rev | cut -d '-' -f1,2 | rev | sed 's/\.AppImage$//')"
-out_file_name="${out_dir}/Zano-${version}.desktop"
-
-export QTWEBENGINE_DISABLE_SANDBOX=1
-
-call_app()
-{
- pushd $script_dir
- usr/bin/Zano "$@"
- if [ $? -ne 0 ]; then
- echo $'\n\n\x1b[1mIf Zano fails to launch, it might need to install xinerama extension for the X C Binding with this command:\n\x1b[2m sudo apt-get install libxcb-xinerama0\n\n'
- fi
-
- popd
- exit
-}
-
-
-create_desktop_icon()
-{
- target_file_name=$1
- echo "Generating icon file: $target_file_name..."
- rm -f "${out_dir}/Zano.png"
- rm -f $target_file_name
- cp -Rv "${APPDIR}/usr/share/icons/hicolor/256x256/apps/Zano.png" "${out_dir}/Zano.png"
- echo [Desktop Entry] | tee -a $target_file_name > /dev/null
- echo Version=1.0 | tee -a $target_file_name > /dev/null
- echo Name=Zano | tee -a $target_file_name > /dev/null
- echo GenericName=Zano | tee -a $target_file_name > /dev/null
- echo Comment=Privacy blockchain | tee -a $target_file_name > /dev/null
- echo Icon=${out_dir}/Zano.png | tee -a $target_file_name > /dev/null
- echo TryExec="${APPIMAGE}" | tee -a "${target_file_name}" >/dev/null
- echo Exec=$APPIMAGE --deeplink-params=\\\\\\\"%u\\\\\\\" | tee -a $target_file_name > /dev/null
- echo Terminal=false | tee -a $target_file_name > /dev/null
- echo Type=Application | tee -a $target_file_name > /dev/null
- echo "Categories=Qt;Utility;" | tee -a $target_file_name > /dev/null
- echo "MimeType=x-scheme-handler/zano;" | tee -a $target_file_name > /dev/null
- echo "StartupWMClass=Zano" | tee -a $target_file_name > /dev/null
-}
-
-
-create_desktop_icon $out_file_name
-
-xdg-mime default Zano.desktop x-scheme-handler/zano
-xdg-desktop-menu install --novendor "${out_file_name}"
-
-call_app "$@"
diff --git a/utils/api_response.txt b/utils/api_response.txt
deleted file mode 100644
index 4cfdb52a..00000000
--- a/utils/api_response.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "id": 1234,
- "jsonrpc": "2.0",
- "result": {
- "status": "OK"
- }
-}
\ No newline at end of file
diff --git a/utils/contrib/create-dmg/LICENSE b/utils/contrib/create-dmg/LICENSE
deleted file mode 100644
index 349b6d82..00000000
--- a/utils/contrib/create-dmg/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2008-2014 Andrey Tarantsov
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/utils/contrib/create-dmg/create-dmg b/utils/contrib/create-dmg/create-dmg
deleted file mode 100755
index ea8ee7e9..00000000
--- a/utils/contrib/create-dmg/create-dmg
+++ /dev/null
@@ -1,230 +0,0 @@
-#! /bin/bash
-
-# Create a read-only disk image of the contents of a folder
-
-set -e;
-
-function pure_version() {
- echo '1.0.0.2'
-}
-
-function version() {
- echo "create-dmg $(pure_version)"
-}
-
-function usage() {
- version
- echo "Creates a fancy DMG file."
- echo "Usage: $(basename $0) options... image.dmg source_folder"
- echo "All contents of source_folder will be copied into the disk image."
- echo "Options:"
- echo " --volname name"
- echo " set volume name (displayed in the Finder sidebar and window title)"
- echo " --volicon icon.icns"
- echo " set volume icon"
- echo " --background pic.png"
- echo " set folder background image (provide png, gif, jpg)"
- echo " --window-pos x y"
- echo " set position the folder window"
- echo " --window-size width height"
- echo " set size of the folder window"
- echo " --text-size text_size"
- echo " set window text size (10-16)"
- echo " --icon-size icon_size"
- echo " set window icons size (up to 128)"
- echo " --icon file_name x y"
- echo " set position of the file's icon"
- echo " --hide-extension file_name"
- echo " hide the extension of file"
- echo " --custom-icon file_name custom_icon_or_sample_file x y"
- echo " set position and custom icon"
- echo " --app-drop-link x y"
- echo " make a drop link to Applications, at location x,y"
- echo " --eula eula_file"
- echo " attach a license file to the dmg"
- echo " --no-internet-enable"
- echo " disable automatic mount©"
- echo " --version show tool version number"
- echo " -h, --help display this help"
- exit 0
-}
-
-WINX=10
-WINY=60
-WINW=500
-WINH=350
-ICON_SIZE=128
-TEXT_SIZE=16
-
-while test "${1:0:1}" = "-"; do
- case $1 in
- --volname)
- VOLUME_NAME="$2"
- shift; shift;;
- --volicon)
- VOLUME_ICON_FILE="$2"
- shift; shift;;
- --background)
- BACKGROUND_FILE="$2"
- BACKGROUND_FILE_NAME="$(basename $BACKGROUND_FILE)"
- BACKGROUND_CLAUSE="set background picture of opts to file \".background:$BACKGROUND_FILE_NAME\""
- REPOSITION_HIDDEN_FILES_CLAUSE="set position of every item to {theBottomRightX + 500, 100}"
- shift; shift;;
- --icon-size)
- ICON_SIZE="$2"
- shift; shift;;
- --text-size)
- TEXT_SIZE="$2"
- shift; shift;;
- --window-pos)
- WINX=$2; WINY=$3
- shift; shift; shift;;
- --window-size)
- WINW=$2; WINH=$3
- shift; shift; shift;;
- --icon)
- POSITION_CLAUSE="${POSITION_CLAUSE}set position of item \"$2\" to {$3, $4}
-"
- shift; shift; shift; shift;;
- --hide-extension)
- HIDING_CLAUSE="${HIDING_CLAUSE}set the extension hidden of item \"$2\" to true
-"
- shift; shift;;
- --custom-icon)
- shift; shift; shift; shift; shift;;
- -h | --help)
- usage;;
- --version)
- version; exit 0;;
- --pure-version)
- pure_version; exit 0;;
- --app-drop-link)
- APPLICATION_LINK=$2
- APPLICATION_CLAUSE="set position of item \"Applications\" to {$2, $3}
-"
- shift; shift; shift;;
- --eula)
- EULA_RSRC=$2
- shift; shift;;
- --no-internet-enable)
- NOINTERNET=1
- shift;;
- -*)
- echo "Unknown option $1. Run with --help for help."
- exit 1;;
- esac
-done
-
-test -z "$2" && {
- echo "Not enough arguments. Invoke with --help for help."
- exit 1
-}
-
-SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-DMG_PATH="$1"
-DMG_DIRNAME="$(dirname "$DMG_PATH")"
-DMG_DIR="$(cd "$DMG_DIRNAME" > /dev/null; pwd)"
-DMG_NAME="$(basename "$DMG_PATH")"
-DMG_TEMP_NAME="$DMG_DIR/rw.${DMG_NAME}"
-SRC_FOLDER="$(cd "$2" > /dev/null; pwd)"
-test -z "$VOLUME_NAME" && VOLUME_NAME="$(basename "$DMG_PATH" .dmg)"
-
-AUX_PATH="$SCRIPT_DIR/support"
-
-test -d "$AUX_PATH" || {
- echo "Cannot find support directory: $AUX_PATH"
- exit 1
-}
-
-if [ -f "$SRC_FOLDER/.DS_Store" ]; then
- echo "Deleting any .DS_Store in source folder"
- rm "$SRC_FOLDER/.DS_Store"
-fi
-
-# Create the image
-echo "Creating disk image..."
-test -f "${DMG_TEMP_NAME}" && rm -f "${DMG_TEMP_NAME}"
-ACTUAL_SIZE=`du -sm "$SRC_FOLDER" | sed -e 's/ .*//g'`
-DISK_IMAGE_SIZE=$(expr $ACTUAL_SIZE + 20)
-hdiutil create -srcfolder "$SRC_FOLDER" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${DISK_IMAGE_SIZE}m "${DMG_TEMP_NAME}"
-
-# mount it
-echo "Mounting disk image..."
-MOUNT_DIR="/Volumes/${VOLUME_NAME}"
-
-# try unmount dmg if it was mounted previously (e.g. developer mounted dmg, installed app and forgot to unmount it)
-echo "Unmounting disk image..."
-DEV_NAME=$(hdiutil info | egrep '^/dev/' | sed 1q | awk '{print $1}')
-test -d "${MOUNT_DIR}" && hdiutil detach "${DEV_NAME}"
-
-echo "Mount directory: $MOUNT_DIR"
-DEV_NAME=$(hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}')
-echo "Device name: $DEV_NAME"
-
-if ! test -z "$BACKGROUND_FILE"; then
- echo "Copying background file..."
- test -d "$MOUNT_DIR/.background" || mkdir "$MOUNT_DIR/.background"
- cp "$BACKGROUND_FILE" "$MOUNT_DIR/.background/$BACKGROUND_FILE_NAME"
-fi
-
-if ! test -z "$APPLICATION_LINK"; then
- echo "making link to Applications dir"
- echo $MOUNT_DIR
- ln -s /Applications "$MOUNT_DIR/Applications"
-fi
-
-if ! test -z "$VOLUME_ICON_FILE"; then
- echo "Copying volume icon file '$VOLUME_ICON_FILE'..."
- cp "$VOLUME_ICON_FILE" "$MOUNT_DIR/.VolumeIcon.icns"
- SetFile -c icnC "$MOUNT_DIR/.VolumeIcon.icns"
-fi
-
-# run applescript
-APPLESCRIPT=$(mktemp -t createdmg)
-cat "$AUX_PATH/template.applescript" | sed -e "s/WINX/$WINX/g" -e "s/WINY/$WINY/g" -e "s/WINW/$WINW/g" -e "s/WINH/$WINH/g" -e "s/BACKGROUND_CLAUSE/$BACKGROUND_CLAUSE/g" -e "s/REPOSITION_HIDDEN_FILES_CLAUSE/$REPOSITION_HIDDEN_FILES_CLAUSE/g" -e "s/ICON_SIZE/$ICON_SIZE/g" -e "s/TEXT_SIZE/$TEXT_SIZE/g" | perl -pe "s/POSITION_CLAUSE/$POSITION_CLAUSE/g" | perl -pe "s/APPLICATION_CLAUSE/$APPLICATION_CLAUSE/g" | perl -pe "s/HIDING_CLAUSE/$HIDING_CLAUSE/" >"$APPLESCRIPT"
-
-echo "Running Applescript: /usr/bin/osascript \"${APPLESCRIPT}\" \"${VOLUME_NAME}\""
-"/usr/bin/osascript" "${APPLESCRIPT}" "${VOLUME_NAME}" || true
-echo "Done running the applescript..."
-sleep 4
-
-rm "$APPLESCRIPT"
-
-# make sure it's not world writeable
-echo "Fixing permissions..."
-chmod -Rf go-w "${MOUNT_DIR}" &> /dev/null || true
-echo "Done fixing permissions."
-
-# make the top window open itself on mount:
-echo "Blessing started"
-bless --folder "${MOUNT_DIR}" --openfolder "${MOUNT_DIR}"
-echo "Blessing finished"
-
-if ! test -z "$VOLUME_ICON_FILE"; then
- # tell the volume that it has a special file attribute
- SetFile -a C "$MOUNT_DIR"
-fi
-
-# unmount
-echo "Unmounting disk image..."
-hdiutil detach "${DEV_NAME}"
-
-# compress image
-echo "Compressing disk image..."
-hdiutil convert "${DMG_TEMP_NAME}" -format UDZO -imagekey zlib-level=9 -o "${DMG_DIR}/${DMG_NAME}"
-rm -f "${DMG_TEMP_NAME}"
-
-# adding EULA resources
-if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then
- echo "adding EULA resources"
- "${AUX_PATH}/dmg-license.py" "${DMG_DIR}/${DMG_NAME}" "${EULA_RSRC}"
-fi
-
-if [ ! -z "${NOINTERNET}" -a "${NOINTERNET}" == 1 ]; then
- echo "not setting 'internet-enable' on the dmg"
-else
- hdiutil internet-enable -yes "${DMG_DIR}/${DMG_NAME}"
-fi
-
-echo "Disk image done"
-exit 0
diff --git a/utils/contrib/create-dmg/origin.txt b/utils/contrib/create-dmg/origin.txt
deleted file mode 100644
index e1edd5e6..00000000
--- a/utils/contrib/create-dmg/origin.txt
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/andreyvit/yoursway-create-dmg.git
\ No newline at end of file
diff --git a/utils/contrib/create-dmg/support/dmg-license.py b/utils/contrib/create-dmg/support/dmg-license.py
deleted file mode 100644
index 9003a7c5..00000000
--- a/utils/contrib/create-dmg/support/dmg-license.py
+++ /dev/null
@@ -1,163 +0,0 @@
-#! /usr/bin/env python
-"""
-This script adds a license file to a DMG. Requires Xcode and a plain ascii text
-license file.
-Obviously only runs on a Mac.
-
-Copyright (C) 2011-2013 Jared Hobbs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-"""
-import os
-import sys
-import tempfile
-import optparse
-
-
-class Path(str):
- def __enter__(self):
- return self
-
- def __exit__(self, type, value, traceback):
- os.unlink(self)
-
-
-def mktemp(dir=None, suffix=''):
- (fd, filename) = tempfile.mkstemp(dir=dir, suffix=suffix)
- os.close(fd)
- return Path(filename)
-
-
-def main(options, args):
- dmgFile, license = args
- with mktemp('.') as tmpFile:
- with open(tmpFile, 'w') as f:
- f.write("""data 'TMPL' (128, "LPic") {
- $"1344 6566 6175 6C74 204C 616E 6775 6167"
- $"6520 4944 4457 5244 0543 6F75 6E74 4F43"
- $"4E54 042A 2A2A 2A4C 5354 430B 7379 7320"
- $"6C61 6E67 2049 4444 5752 441E 6C6F 6361"
- $"6C20 7265 7320 4944 2028 6F66 6673 6574"
- $"2066 726F 6D20 3530 3030 4457 5244 1032"
- $"2D62 7974 6520 6C61 6E67 7561 6765 3F44"
- $"5752 4404 2A2A 2A2A 4C53 5445"
-};
-
-data 'LPic' (5000) {
- $"0000 0002 0000 0000 0000 0000 0004 0000"
-};
-
-data 'STR#' (5000, "English buttons") {
- $"0006 0D45 6E67 6C69 7368 2074 6573 7431"
- $"0541 6772 6565 0844 6973 6167 7265 6505"
- $"5072 696E 7407 5361 7665 2E2E 2E7A 4966"
- $"2079 6F75 2061 6772 6565 2077 6974 6820"
- $"7468 6520 7465 726D 7320 6F66 2074 6869"
- $"7320 6C69 6365 6E73 652C 2063 6C69 636B"
- $"2022 4167 7265 6522 2074 6F20 6163 6365"
- $"7373 2074 6865 2073 6F66 7477 6172 652E"
- $"2020 4966 2079 6F75 2064 6F20 6E6F 7420"
- $"6167 7265 652C 2070 7265 7373 2022 4469"
- $"7361 6772 6565 2E22"
-};
-
-data 'STR#' (5002, "English") {
- $"0006 0745 6E67 6C69 7368 0541 6772 6565"
- $"0844 6973 6167 7265 6505 5072 696E 7407"
- $"5361 7665 2E2E 2E7B 4966 2079 6F75 2061"
- $"6772 6565 2077 6974 6820 7468 6520 7465"
- $"726D 7320 6F66 2074 6869 7320 6C69 6365"
- $"6E73 652C 2070 7265 7373 2022 4167 7265"
- $"6522 2074 6F20 696E 7374 616C 6C20 7468"
- $"6520 736F 6674 7761 7265 2E20 2049 6620"
- $"796F 7520 646F 206E 6F74 2061 6772 6565"
- $"2C20 7072 6573 7320 2244 6973 6167 7265"
- $"6522 2E"
-};\n\n""")
- with open(license, 'r') as l:
- kind = 'RTF ' if license.lower().endswith('.rtf') else 'TEXT'
- f.write('data \'%s\' (5000, "English") {\n' % kind)
- def escape(s):
- return s.strip().replace('\\', '\\\\').replace('"', '\\"')
-
- for line in l:
- if len(line) < 1000:
- f.write(' "' + escape(line) + '\\n"\n')
- else:
- for liner in line.split('.'):
- f.write(' "' + escape(liner) + '. \\n"\n')
- f.write('};\n\n')
- f.write("""data 'styl' (5000, "English") {
- $"0003 0000 0000 000C 0009 0014 0000 0000"
- $"0000 0000 0000 0000 0027 000C 0009 0014"
- $"0100 0000 0000 0000 0000 0000 002A 000C"
- $"0009 0014 0000 0000 0000 0000 0000"
-};\n""")
- os.system('hdiutil unflatten -quiet "%s"' % dmgFile)
- ret = os.system('%s -a %s -o "%s"' %
- (options.rez, tmpFile, dmgFile))
- os.system('hdiutil flatten -quiet "%s"' % dmgFile)
- if options.compression is not None:
- os.system('cp %s %s.temp.dmg' % (dmgFile, dmgFile))
- os.remove(dmgFile)
- if options.compression == "bz2":
- os.system('hdiutil convert %s.temp.dmg -format UDBZ -o %s' %
- (dmgFile, dmgFile))
- elif options.compression == "gz":
- os.system('hdiutil convert %s.temp.dmg -format ' % dmgFile +
- 'UDZO -imagekey zlib-devel=9 -o %s' % dmgFile)
- os.remove('%s.temp.dmg' % dmgFile)
- if ret == 0:
- print "Successfully added license to '%s'" % dmgFile
- else:
- print "Failed to add license to '%s'" % dmgFile
-
-if __name__ == '__main__':
- parser = optparse.OptionParser()
- parser.set_usage("""%prog [OPTIONS]
- This program adds a software license agreement to a DMG file.
- It requires Xcode and either a plain ascii text
- or a with the RTF contents.
-
- See --help for more details.""")
- parser.add_option(
- '--rez',
- '-r',
- action='store',
- default='/Applications/Xcode.app/Contents/Developer/Tools/Rez',
- help='The path to the Rez tool. Defaults to %default'
- )
- parser.add_option(
- '--compression',
- '-c',
- action='store',
- choices=['bz2', 'gz'],
- default=None,
- help='Optionally compress dmg using specified compression type. '
- 'Choices are bz2 and gz.'
- )
- options, args = parser.parse_args()
- cond = len(args) != 2
- if not os.path.exists(options.rez):
- print 'Failed to find Rez at "%s"!\n' % options.rez
- cond = True
- if cond:
- parser.print_usage()
- sys.exit(1)
- main(options, args)
diff --git a/utils/contrib/create-dmg/support/template.applescript b/utils/contrib/create-dmg/support/template.applescript
deleted file mode 100644
index 2a7f2aa0..00000000
--- a/utils/contrib/create-dmg/support/template.applescript
+++ /dev/null
@@ -1,79 +0,0 @@
-on run (volumeName)
- tell application "Finder"
- tell disk (volumeName as string)
- open
-
- set theXOrigin to WINX
- set theYOrigin to WINY
- set theWidth to WINW
- set theHeight to WINH
-
- set theBottomRightX to (theXOrigin + theWidth)
- set theBottomRightY to (theYOrigin + theHeight)
- set dsStore to "\"" & "/Volumes/" & volumeName & "/" & ".DS_STORE\""
-
- tell container window
- set current view to icon view
- set toolbar visible to false
- set statusbar visible to false
- set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
- set statusbar visible to false
- REPOSITION_HIDDEN_FILES_CLAUSE
- end tell
-
- set opts to the icon view options of container window
- tell opts
- set icon size to ICON_SIZE
- set text size to TEXT_SIZE
- set arrangement to not arranged
- end tell
- BACKGROUND_CLAUSE
-
- -- Positioning
- POSITION_CLAUSE
-
- -- Hiding
- HIDING_CLAUSE
-
- -- Application Link Clause
- APPLICATION_CLAUSE
- close
- open
-
- update without registering applications
- -- Force saving of the size
- delay 1
-
- tell container window
- set statusbar visible to false
- set the bounds to {theXOrigin, theYOrigin, theBottomRightX - 10, theBottomRightY - 10}
- end tell
-
- update without registering applications
- end tell
-
- delay 1
-
- tell disk (volumeName as string)
- tell container window
- set statusbar visible to false
- set the bounds to {theXOrigin, theYOrigin, theBottomRightX, theBottomRightY}
- end tell
-
- update without registering applications
- end tell
-
- --give the finder some time to write the .DS_Store file
- delay 3
-
- set waitTime to 0
- set ejectMe to false
- repeat while ejectMe is false
- delay 1
- set waitTime to waitTime + 1
-
- if (do shell script "[ -f " & dsStore & " ]; echo $?") = "0" then set ejectMe to true
- end repeat
- log "waited " & waitTime & " seconds for .DS_STORE to be created."
- end tell
-end run
diff --git a/utils/deeplink.rm b/utils/deeplink.rm
deleted file mode 100644
index 8b137891..00000000
--- a/utils/deeplink.rm
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/utils/docker/containers/README.md b/utils/docker/containers/README.md
deleted file mode 100644
index f50dbf2b..00000000
--- a/utils/docker/containers/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Standard Docker Deployments
-
-You can define a multitude of configurations in code using Docker Compose. Each folder in this directory represents a specific use case with a corresponding reference configuration.
-
-Instead of writing your own Dockerfile, we recommend that you tailor the stack for your needs by editing one of the existing configurations. If you believe your changes will be useful to others, please submit a patch to improve the reference Dockerfiles.
\ No newline at end of file
diff --git a/utils/docker/images/lthn-chain/Dockerfile b/utils/docker/lthn-chain/Dockerfile
similarity index 100%
rename from utils/docker/images/lthn-chain/Dockerfile
rename to utils/docker/lthn-chain/Dockerfile
diff --git a/utils/increment_build_number.sh b/utils/increment_build_number.sh
deleted file mode 100644
index 3666c956..00000000
--- a/utils/increment_build_number.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-set -e
-curr_path=${BASH_SOURCE%/*}
-version_file_path=../src/version.h.in
-
-pushd $curr_path
-
-# clear old local changes if any
-git checkout -- ../src/*
-
-git pull --ff-only
-
-build_no_before=`cat $version_file_path | grep 'PROJECT_VERSION_BUILD_NO ' | awk {'print $3'}`
-
-../../zano-tools-last-build/connectivity_tool --increment-build-no=$version_file_path
-
-build_no_after=`cat $version_file_path | grep 'PROJECT_VERSION_BUILD_NO ' | awk {'print $3'}`
-
-echo "$build_no_before -> $build_no_after"
-
-echo $(pwd -P)
-
-git status
-git commit -a -m"=== build number: $build_no_before -> $build_no_after ==="
-
-git push
-
-echo "Build number was succesefully incremented."
-popd
-
diff --git a/utils/macos_entitlements.plist b/utils/macos_entitlements.plist
deleted file mode 100644
index 68015469..00000000
--- a/utils/macos_entitlements.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- com.apple.security.cs.disable-executable-page-protection
-
-
-
diff --git a/utils/macosx_dmg_builder.sh b/utils/macosx_dmg_builder.sh
deleted file mode 100644
index 4fb211f8..00000000
--- a/utils/macosx_dmg_builder.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-set -e
-curr_path=${BASH_SOURCE%/*}
-
-function build_fancy_dmg() # $1 - path to package folder, $2 - dmg output filename
-{
- if [ -z "$1" ] || [ -z "$2" ]
- then
- echo "build_fancy_dmg is called with no or invalid parameters"
- return 1
- fi
-
- $curr_path/contrib/create-dmg/create-dmg \
- --volname "Zano installer" \
- --volicon "$curr_path/../src/gui/qt-daemon/app.icns" \
- --background "$curr_path/../resources/dmg_installer_bg.png" \
- --window-pos 200 120 \
- --window-size 487 290 \
- --icon-size 128 \
- --icon Zano.app 112 115 \
- --hide-extension Zano.app \
- --app-drop-link 365 115 \
- --no-internet-enable \
- $2 \
- $1
-
- return $?
-}
-
diff --git a/utils/sdk/Makefile b/utils/sdk/Makefile
new file mode 100644
index 00000000..a2bbc27d
--- /dev/null
+++ b/utils/sdk/Makefile
@@ -0,0 +1,59 @@
+PACKAGE_VERSION?=6.0.1
+BASE_DIR:=$(CURDIR)
+# Default build directory. Can be overridden from the parent Makefile.
+# e.g., `make sdk BUILD_DIR=client` will output to the `client/` directory.
+BUILD_DIR?=$(BASE_DIR)/../../build/packages
+SDK_TARGETS := $(patsubst packages/%.json,%,$(wildcard packages/*.json))
+
+# --- Target-Specific Hooks ---
+# Define pre- and post-build steps for specific languages.
+# By default, these hooks are empty.
+
+PRE_BUILD_HOOK = @true
+POST_BUILD_HOOK = @true
+
+ # For the 'go' target, create an ignore file to prevent unwanted files from being generated.
+ go: PRE_BUILD_HOOK = @echo "--> Creating .openapi-generator-ignore file for Go client"; \
+ echo "go.sum" >> $(BUILD_DIR)/go/.openapi-generator-ignore
+
+# For the 'go' target, define specific post-build steps.
+go: POST_BUILD_HOOK = (cd $(BUILD_DIR)/go && go mod edit -module github.com/letheanVPN/blockchain/utils/sdk/client/go && go mod tidy)
+
+# For the 'go' target, set the generator name correctly.
+go: GENERATOR_NAME = go
+
+# --- Main Targets ---
+
+all: build
+
+build: $(SDK_TARGETS)
+ @echo "All SDKs have been processed."
+
+# Rule to build each SDK package using OpenAPI Generator.
+# It reads the corresponding JSON config file and generates the SDK in the build directory.
+$(SDK_TARGETS): %: packages/%.json
+ # Default generator name is the target name itself.
+ $(eval GENERATOR_NAME = $@)
+ @echo "--> Creating .openapi-generator-ignore file"
+ @echo "git_push.sh" > "$(BUILD_DIR)/$@/.openapi-generator-ignore"
+ @echo ".travis.yml" >> "$(BUILD_DIR)/$@/.openapi-generator-ignore"
+ @echo "README.md" >> "$(BUILD_DIR)/$@/.openapi-generator-ignore"
+
+ @echo "--- Building package $@ with version $(PACKAGE_VERSION) ---"
+ # Run pre-build hook
+ $(PRE_BUILD_HOOK)
+ rm -rf "$(BUILD_DIR)/$@/*"
+ export TS_POST_PROCESS_FILE="/usr/local/bin/prettier --write" && \
+ openapi-generator generate --minimal-update --git-host "github.com" --git-repo-id "blockchain" --git-user-id "letheanVPN" \
+ -i "$(BASE_DIR)/spec/oas-3.0.0.json" \
+ -g "$(GENERATOR_NAME)" \
+ -o "$(BUILD_DIR)/$@" \
+ -c "$<" \
+ --artifact-version "$(PACKAGE_VERSION)" \
+ --package-name "lthn"
+ # Run post-build hook
+ @echo "--> Running Post Build..."
+ $(POST_BUILD_HOOK)
+
+# Phony targets to avoid conflicts with file names and to ensure they always run.
+.PHONY: all build $(SDK_TARGETS)
diff --git a/utils/sdk/client/go/.gitignore b/utils/sdk/client/go/.gitignore
new file mode 100644
index 00000000..daf913b1
--- /dev/null
+++ b/utils/sdk/client/go/.gitignore
@@ -0,0 +1,24 @@
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
+*.test
+*.prof
diff --git a/utils/sdk/client/go/.openapi-generator-ignore b/utils/sdk/client/go/.openapi-generator-ignore
new file mode 100644
index 00000000..fba84e2d
--- /dev/null
+++ b/utils/sdk/client/go/.openapi-generator-ignore
@@ -0,0 +1,4 @@
+git_push.sh
+.travis.yml
+README.md
+go.sum
diff --git a/utils/sdk/client/go/.openapi-generator/FILES b/utils/sdk/client/go/.openapi-generator/FILES
new file mode 100644
index 00000000..bf9e05fb
--- /dev/null
+++ b/utils/sdk/client/go/.openapi-generator/FILES
@@ -0,0 +1,55 @@
+.gitignore
+api/openapi.yaml
+api_block.go
+api_info.go
+client.go
+configuration.go
+docs/BlockAPI.md
+docs/BlockDetailsModel.md
+docs/BlockProcessingPerformanceModel.md
+docs/BlockTemplateModel.md
+docs/BlockTemplateRequestModel.md
+docs/DbStatInfoModel.md
+docs/HeightModel.md
+docs/InfoAPI.md
+docs/InfoModel.md
+docs/MaintainersInfoModel.md
+docs/PerformanceModel.md
+docs/PosEntryModel.md
+docs/SubmitBlockRequestModel.md
+docs/SubmitBlockResponseModel.md
+docs/TransactionAttachmentModel.md
+docs/TransactionDetailsModel.md
+docs/TransactionExtraModel.md
+docs/TransactionInputModel.md
+docs/TransactionOutputModel.md
+docs/TxGenerationContextModel.md
+docs/TxPoolPerformanceModel.md
+docs/TxProcessingPerformanceModel.md
+docs/VersionModel.md
+go.mod
+model_block_details_model.go
+model_block_processing_performance_model.go
+model_block_template_model.go
+model_block_template_request_model.go
+model_db_stat_info_model.go
+model_height_model.go
+model_info_model.go
+model_maintainers_info_model.go
+model_performance_model.go
+model_pos_entry_model.go
+model_submit_block_request_model.go
+model_submit_block_response_model.go
+model_transaction_attachment_model.go
+model_transaction_details_model.go
+model_transaction_extra_model.go
+model_transaction_input_model.go
+model_transaction_output_model.go
+model_tx_generation_context_model.go
+model_tx_pool_performance_model.go
+model_tx_processing_performance_model.go
+model_version_model.go
+response.go
+test/api_block_test.go
+test/api_info_test.go
+utils.go
diff --git a/utils/sdk/client/go/.openapi-generator/VERSION b/utils/sdk/client/go/.openapi-generator/VERSION
new file mode 100644
index 00000000..971ecb25
--- /dev/null
+++ b/utils/sdk/client/go/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.16.0
diff --git a/utils/sdk/client/go/api/openapi.yaml b/utils/sdk/client/go/api/openapi.yaml
new file mode 100644
index 00000000..0a132b9e
--- /dev/null
+++ b/utils/sdk/client/go/api/openapi.yaml
@@ -0,0 +1,1329 @@
+openapi: 3.0.0
+info:
+ contact:
+ name: Lethean
+ url: https://lt.hn/
+ description: OpenAPI for Lethean Blockchain
+ license:
+ name: EUPL-1.2
+ url: https://joinup.ec.europa.eu/software/page/eupl/licence-eupl
+ title: Lethean Blockchain API
+ version: 6.0.1
+servers:
+- description: Local Daemon
+ url: http://127.0.0.1:36943
+- description: Seed Server
+ url: http://seed.lethean.io:36943
+paths:
+ /info:
+ get:
+ operationId: getInfo
+ parameters:
+ - deprecated: false
+ description: "Possible values: net_time_delta_median, current_network_hashrate_50,\
+ \ current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks,\
+ \ transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins,\
+ \ last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor,\
+ \ pos_difficulty, performance, outs_stat, expirations_median."
+ explode: true
+ in: query
+ name: flags
+ required: false
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InfoModel"
+ description: OK
+ summary: Get detailed information about the blockchain and daemon state
+ tags:
+ - Info
+ /info/version:
+ get:
+ description: Returns the current version of the API.
+ operationId: version
+ parameters: []
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/VersionModel"
+ description: OK
+ summary: Get API version
+ tags:
+ - Info
+ /block:
+ get:
+ operationId: getBlocks
+ parameters: []
+ responses:
+ "404":
+ description: text/plain
+ "400":
+ description: text/plain
+ "200":
+ content:
+ application/json:
+ schema:
+ items:
+ $ref: "#/components/schemas/BlockDetailsModel"
+ type: array
+ description: A list of block objects.
+ summary: "Get one or more blocks, with optional pagination."
+ tags:
+ - Block
+ /block/template:
+ post:
+ operationId: createBlockTemplate
+ parameters: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BlockTemplateRequestModel"
+ required: true
+ responses:
+ "500":
+ description: text/plain
+ "400":
+ description: text/plain
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BlockTemplateModel"
+ description: OK
+ summary: Create a block template for mining
+ tags:
+ - Block
+ /block/submit:
+ post:
+ operationId: submitBlock
+ parameters: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SubmitBlockRequestModel"
+ required: true
+ responses:
+ "406":
+ description: text/plain
+ "400":
+ description: text/plain
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SubmitBlockResponseModel"
+ description: OK
+ summary: Submit a new block to the network
+ tags:
+ - Block
+ /block/height:
+ get:
+ operationId: getHeight
+ parameters: []
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/HeightModel"
+ description: OK
+ summary: Get the current blockchain height
+ tags:
+ - Block
+ /block/{identifier}:
+ get:
+ operationId: getBlock
+ parameters:
+ - deprecated: false
+ description: The hash (hex string) or height (integer) of the block to retrieve.
+ explode: false
+ in: path
+ name: identifier
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "404":
+ description: text/plain
+ "400":
+ description: text/plain
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BlockDetailsModel"
+ description: OK
+ summary: Get a block by its hash or height (ID)
+ tags:
+ - Block
+components:
+ schemas:
+ DbStatInfoModel:
+ example:
+ write_tx_count: 4
+ tx_count: 8
+ map_size: 0
+ properties:
+ tx_count:
+ type: integer
+ write_tx_count:
+ type: integer
+ map_size:
+ type: integer
+ type: object
+ TxPoolPerformanceModel:
+ example:
+ begin_tx_time: 0
+ db_commit_time: 2
+ validate_amount_time: 3
+ update_db_time: 3
+ expiration_validate_time: 3
+ check_inputs_types_supported_time: 7
+ tx_processing_time: 8
+ check_keyimages_ws_ms_time: 5
+ check_inputs_time: 7
+ validate_alias_time: 9
+ check_post_hf4_balance: 3
+ properties:
+ tx_processing_time:
+ type: integer
+ check_inputs_types_supported_time:
+ type: integer
+ expiration_validate_time:
+ type: integer
+ validate_amount_time:
+ type: integer
+ validate_alias_time:
+ type: integer
+ check_keyimages_ws_ms_time:
+ type: integer
+ check_inputs_time:
+ type: integer
+ begin_tx_time:
+ type: integer
+ update_db_time:
+ type: integer
+ db_commit_time:
+ type: integer
+ check_post_hf4_balance:
+ type: integer
+ type: object
+ MaintainersInfoModel:
+ example:
+ mode: 126
+ build_no: 503831554
+ ver_revision: 190
+ ver_major: 37
+ ver_minor: 174
+ properties:
+ ver_major:
+ maximum: 255
+ minimum: 0
+ type: integer
+ ver_minor:
+ maximum: 255
+ minimum: 0
+ type: integer
+ ver_revision:
+ maximum: 255
+ minimum: 0
+ type: integer
+ build_no:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ mode:
+ maximum: 255
+ minimum: 0
+ type: integer
+ type: object
+ InfoModel:
+ example:
+ current_max_allowed_block_size: 7
+ tx_count_in_last_block: 5
+ transactions_cnt_per_day:
+ - 6
+ - 6
+ grey_peerlist_size: 3
+ minimum_fee: 9
+ pos_difficulty: pos_difficulty
+ block_reward: 3
+ last_pos_timestamp: 2
+ pos_sequence_factor: 6.704019297950036
+ pos_block_ts_shift_vs_actual: 6
+ current_network_hashrate_50: 8
+ last_block_timestamp: 7
+ pow_difficulty: 5
+ alias_count: 4
+ mi:
+ mode: 126
+ build_no: 503831554
+ ver_revision: 190
+ ver_major: 37
+ ver_minor: 174
+ pos_allowed: true
+ last_pow_timestamp: 6
+ is_hardfork_active:
+ - true
+ - true
+ height: 0
+ tx_pool_size: 1
+ performance_data:
+ tx_pool:
+ begin_tx_time: 0
+ db_commit_time: 2
+ validate_amount_time: 3
+ update_db_time: 3
+ expiration_validate_time: 3
+ check_inputs_types_supported_time: 7
+ tx_processing_time: 8
+ check_keyimages_ws_ms_time: 5
+ check_inputs_time: 7
+ validate_alias_time: 9
+ check_post_hf4_balance: 3
+ tx_processing:
+ tx_process_inputs: 5
+ tx_check_inputs_loop: 4
+ tx_prapare_append: 4
+ tx_check_inputs: 0
+ tx_append: 3
+ tx_check_exist: 6
+ tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8
+ tx_mixin_count: 5
+ tx_append_rl_wait: 0
+ tx_check_inputs_loop_kimage_check: 8
+ tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0
+ tx_push_global_index: 4
+ tx_add_one_tx: 9
+ tx_check_inputs_loop_scan_outputkeys_get_item_size: 1
+ tx_print_log: 8
+ tx_check_inputs_prefix_hash: 8
+ tx_append_is_expired: 2
+ tx_check_inputs_loop_ch_in_val_sig: 9
+ tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5
+ tx_process_extra: 0
+ tx_process_attachment: 7
+ tx_check_inputs_loop_scan_outputkeys_loop: 9
+ tx_store_db: 1
+ tx_check_inputs_attachment_check: 6
+ tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3
+ block_processing:
+ target_calculating_calc: 1
+ pos_validate_ki_search: 4
+ all_txs_insert_time_5: 3
+ etc_stuff_6: 7
+ target_calculating_enum_blocks: 4
+ target_calculating_time_2: 7
+ validate_miner_transaction_time: 4
+ verify_multiple_zc_outs_range_proofs_time: 6
+ raise_block_core_event: 3
+ insert_time_4: 5
+ pos_validate_get_out_keys_for_inputs: 7
+ block_processing_time_1: 8
+ block_processing_time_0: 4
+ pos_validate_zvp: 9
+ collect_rangeproofs_data_from_tx_time: 0
+ longhash_calculating_time_3: 3
+ db_stat_info:
+ write_tx_count: 4
+ tx_count: 8
+ map_size: 0
+ net_time_delta_median: 6
+ alt_blocks_count: 5
+ incoming_connections_count: 2
+ tx_count: 6
+ outgoing_connections_count: 5
+ transactions_volume_per_day:
+ - 1
+ - 1
+ current_blocks_median: 2
+ expiration_median_timestamp: 7
+ max_net_seen_height: 1
+ current_network_hashrate_350: 9
+ synchronized_connections_count: 7
+ last_block_total_reward: 7
+ default_fee: 9
+ seconds_for_10_blocks: 6
+ pow_sequence_factor: 3.353193347011243
+ synchronization_start_height: 1
+ last_block_hash: last_block_hash
+ white_peerlist_size: 9
+ total_coins: total_coins
+ seconds_for_30_blocks: 3
+ outs_stat:
+ key: 0
+ offers_count: 0
+ pos_diff_total_coins_rate: 0
+ daemon_network_state: daemon_network_state
+ last_block_size: 6
+ properties:
+ height:
+ type: integer
+ tx_count:
+ type: integer
+ tx_pool_size:
+ type: integer
+ alt_blocks_count:
+ type: integer
+ outgoing_connections_count:
+ type: integer
+ incoming_connections_count:
+ type: integer
+ synchronized_connections_count:
+ type: integer
+ white_peerlist_size:
+ type: integer
+ grey_peerlist_size:
+ type: integer
+ current_blocks_median:
+ type: integer
+ alias_count:
+ type: integer
+ current_max_allowed_block_size:
+ type: integer
+ daemon_network_state:
+ type: string
+ synchronization_start_height:
+ type: integer
+ max_net_seen_height:
+ type: integer
+ mi:
+ $ref: "#/components/schemas/MaintainersInfoModel"
+ pos_allowed:
+ type: boolean
+ pos_difficulty:
+ type: string
+ pow_difficulty:
+ type: integer
+ default_fee:
+ type: integer
+ minimum_fee:
+ type: integer
+ is_hardfork_active:
+ items:
+ type: boolean
+ type: array
+ net_time_delta_median:
+ format: int64
+ type: integer
+ current_network_hashrate_50:
+ type: integer
+ current_network_hashrate_350:
+ type: integer
+ seconds_for_10_blocks:
+ type: integer
+ seconds_for_30_blocks:
+ type: integer
+ transactions_cnt_per_day:
+ items:
+ type: integer
+ type: array
+ transactions_volume_per_day:
+ items:
+ type: integer
+ type: array
+ last_pos_timestamp:
+ type: integer
+ last_pow_timestamp:
+ type: integer
+ total_coins:
+ type: string
+ last_block_size:
+ type: integer
+ tx_count_in_last_block:
+ type: integer
+ pos_sequence_factor:
+ format: double
+ type: number
+ pow_sequence_factor:
+ format: double
+ type: number
+ block_reward:
+ type: integer
+ last_block_total_reward:
+ type: integer
+ pos_diff_total_coins_rate:
+ type: integer
+ last_block_timestamp:
+ type: integer
+ last_block_hash:
+ type: string
+ pos_block_ts_shift_vs_actual:
+ format: int64
+ type: integer
+ outs_stat:
+ additionalProperties:
+ type: integer
+ type: object
+ performance_data:
+ $ref: "#/components/schemas/PerformanceModel"
+ offers_count:
+ type: integer
+ expiration_median_timestamp:
+ type: integer
+ type: object
+ SubmitBlockResponseModel:
+ example:
+ status: status
+ properties:
+ status:
+ type: string
+ type: object
+ VersionModel:
+ example:
+ version_long: version_long
+ major: major
+ minor: minor
+ version: version
+ revision: revision
+ properties:
+ version:
+ type: string
+ version_long:
+ type: string
+ major:
+ type: string
+ minor:
+ type: string
+ revision:
+ type: string
+ type: object
+ TransactionOutputModel:
+ example:
+ amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ properties:
+ amount:
+ type: integer
+ global_index:
+ type: integer
+ is_spent:
+ type: boolean
+ minimum_sigs:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ pub_keys:
+ items:
+ type: string
+ type: array
+ type: object
+ TransactionInputModel:
+ example:
+ amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ properties:
+ amount:
+ type: integer
+ global_indexes:
+ items:
+ type: integer
+ type: array
+ htlc_origin:
+ type: string
+ kimage_or_ms_id:
+ type: string
+ multisig_count:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ type: object
+ PerformanceModel:
+ example:
+ tx_pool:
+ begin_tx_time: 0
+ db_commit_time: 2
+ validate_amount_time: 3
+ update_db_time: 3
+ expiration_validate_time: 3
+ check_inputs_types_supported_time: 7
+ tx_processing_time: 8
+ check_keyimages_ws_ms_time: 5
+ check_inputs_time: 7
+ validate_alias_time: 9
+ check_post_hf4_balance: 3
+ tx_processing:
+ tx_process_inputs: 5
+ tx_check_inputs_loop: 4
+ tx_prapare_append: 4
+ tx_check_inputs: 0
+ tx_append: 3
+ tx_check_exist: 6
+ tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8
+ tx_mixin_count: 5
+ tx_append_rl_wait: 0
+ tx_check_inputs_loop_kimage_check: 8
+ tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0
+ tx_push_global_index: 4
+ tx_add_one_tx: 9
+ tx_check_inputs_loop_scan_outputkeys_get_item_size: 1
+ tx_print_log: 8
+ tx_check_inputs_prefix_hash: 8
+ tx_append_is_expired: 2
+ tx_check_inputs_loop_ch_in_val_sig: 9
+ tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5
+ tx_process_extra: 0
+ tx_process_attachment: 7
+ tx_check_inputs_loop_scan_outputkeys_loop: 9
+ tx_store_db: 1
+ tx_check_inputs_attachment_check: 6
+ tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3
+ block_processing:
+ target_calculating_calc: 1
+ pos_validate_ki_search: 4
+ all_txs_insert_time_5: 3
+ etc_stuff_6: 7
+ target_calculating_enum_blocks: 4
+ target_calculating_time_2: 7
+ validate_miner_transaction_time: 4
+ verify_multiple_zc_outs_range_proofs_time: 6
+ raise_block_core_event: 3
+ insert_time_4: 5
+ pos_validate_get_out_keys_for_inputs: 7
+ block_processing_time_1: 8
+ block_processing_time_0: 4
+ pos_validate_zvp: 9
+ collect_rangeproofs_data_from_tx_time: 0
+ longhash_calculating_time_3: 3
+ db_stat_info:
+ write_tx_count: 4
+ tx_count: 8
+ map_size: 0
+ properties:
+ block_processing:
+ $ref: "#/components/schemas/BlockProcessingPerformanceModel"
+ tx_processing:
+ $ref: "#/components/schemas/TxProcessingPerformanceModel"
+ tx_pool:
+ $ref: "#/components/schemas/TxPoolPerformanceModel"
+ db_stat_info:
+ $ref: "#/components/schemas/DbStatInfoModel"
+ type: object
+ TransactionExtraModel:
+ example:
+ details_view: details_view
+ type: type
+ short_view: short_view
+ properties:
+ type:
+ type: string
+ short_view:
+ type: string
+ details_view:
+ type: string
+ type: object
+ TxProcessingPerformanceModel:
+ example:
+ tx_process_inputs: 5
+ tx_check_inputs_loop: 4
+ tx_prapare_append: 4
+ tx_check_inputs: 0
+ tx_append: 3
+ tx_check_exist: 6
+ tx_check_inputs_loop_scan_outputkeys_loop_get_subitem: 8
+ tx_mixin_count: 5
+ tx_append_rl_wait: 0
+ tx_check_inputs_loop_kimage_check: 8
+ tx_check_inputs_loop_scan_outputkeys_loop_find_tx: 0
+ tx_push_global_index: 4
+ tx_add_one_tx: 9
+ tx_check_inputs_loop_scan_outputkeys_get_item_size: 1
+ tx_print_log: 8
+ tx_check_inputs_prefix_hash: 8
+ tx_append_is_expired: 2
+ tx_check_inputs_loop_ch_in_val_sig: 9
+ tx_check_inputs_loop_scan_outputkeys_loop_handle_output: 5
+ tx_process_extra: 0
+ tx_process_attachment: 7
+ tx_check_inputs_loop_scan_outputkeys_loop: 9
+ tx_store_db: 1
+ tx_check_inputs_attachment_check: 6
+ tx_check_inputs_loop_scan_outputkeys_relative_to_absolute: 3
+ properties:
+ tx_check_inputs:
+ type: integer
+ tx_add_one_tx:
+ type: integer
+ tx_process_extra:
+ type: integer
+ tx_process_attachment:
+ type: integer
+ tx_process_inputs:
+ type: integer
+ tx_push_global_index:
+ type: integer
+ tx_check_exist:
+ type: integer
+ tx_print_log:
+ type: integer
+ tx_prapare_append:
+ type: integer
+ tx_append:
+ type: integer
+ tx_append_rl_wait:
+ type: integer
+ tx_append_is_expired:
+ type: integer
+ tx_store_db:
+ type: integer
+ tx_check_inputs_prefix_hash:
+ type: integer
+ tx_check_inputs_attachment_check:
+ type: integer
+ tx_check_inputs_loop:
+ type: integer
+ tx_check_inputs_loop_kimage_check:
+ type: integer
+ tx_check_inputs_loop_ch_in_val_sig:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_get_item_size:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_relative_to_absolute:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_loop:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_loop_get_subitem:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_loop_find_tx:
+ type: integer
+ tx_check_inputs_loop_scan_outputkeys_loop_handle_output:
+ type: integer
+ tx_mixin_count:
+ type: integer
+ type: object
+ TxGenerationContextModel:
+ example:
+ amount_commitments:
+ - amount_commitments
+ - amount_commitments
+ real_zc_ins_asset_ids:
+ - real_zc_ins_asset_ids
+ - real_zc_ins_asset_ids
+ amount_commitments_sum: amount_commitments_sum
+ asset_ids:
+ - asset_ids
+ - asset_ids
+ tx_key_sec: tx_key_sec
+ real_in_asset_id_blinding_mask_x_amount_sum: real_in_asset_id_blinding_mask_x_amount_sum
+ pseudo_outs_blinded_asset_ids:
+ - pseudo_outs_blinded_asset_ids
+ - pseudo_outs_blinded_asset_ids
+ ao_commitment_in_outputs: true
+ ao_asset_id_pt: ao_asset_id_pt
+ zc_input_amounts:
+ - 6
+ - 6
+ pseudo_outs_plus_real_out_blinding_masks:
+ - pseudo_outs_plus_real_out_blinding_masks
+ - pseudo_outs_plus_real_out_blinding_masks
+ tx_pub_key_p: tx_pub_key_p
+ amounts:
+ - amounts
+ - amounts
+ pseudo_out_amount_blinding_masks_sum: pseudo_out_amount_blinding_masks_sum
+ ao_amount_blinding_mask: ao_amount_blinding_mask
+ amount_blinding_masks:
+ - amount_blinding_masks
+ - amount_blinding_masks
+ tx_key_pub: tx_key_pub
+ amount_blinding_masks_sum: amount_blinding_masks_sum
+ asset_id_blinding_mask_x_amount_sum: asset_id_blinding_mask_x_amount_sum
+ blinded_asset_ids:
+ - blinded_asset_ids
+ - blinded_asset_ids
+ asset_id_blinding_masks:
+ - asset_id_blinding_masks
+ - asset_id_blinding_masks
+ pseudo_out_amount_commitments_sum: pseudo_out_amount_commitments_sum
+ ao_asset_id: ao_asset_id
+ ao_amount_commitment: ao_amount_commitment
+ properties:
+ asset_ids:
+ items:
+ type: string
+ type: array
+ blinded_asset_ids:
+ items:
+ type: string
+ type: array
+ amount_commitments:
+ items:
+ type: string
+ type: array
+ asset_id_blinding_masks:
+ items:
+ type: string
+ type: array
+ amounts:
+ items:
+ type: string
+ type: array
+ amount_blinding_masks:
+ items:
+ type: string
+ type: array
+ pseudo_outs_blinded_asset_ids:
+ items:
+ type: string
+ type: array
+ pseudo_outs_plus_real_out_blinding_masks:
+ items:
+ type: string
+ type: array
+ real_zc_ins_asset_ids:
+ items:
+ type: string
+ type: array
+ zc_input_amounts:
+ items:
+ type: integer
+ type: array
+ pseudo_out_amount_commitments_sum:
+ type: string
+ pseudo_out_amount_blinding_masks_sum:
+ type: string
+ real_in_asset_id_blinding_mask_x_amount_sum:
+ type: string
+ amount_commitments_sum:
+ type: string
+ amount_blinding_masks_sum:
+ type: string
+ asset_id_blinding_mask_x_amount_sum:
+ type: string
+ ao_asset_id:
+ type: string
+ ao_asset_id_pt:
+ type: string
+ ao_amount_commitment:
+ type: string
+ ao_amount_blinding_mask:
+ type: string
+ ao_commitment_in_outputs:
+ type: boolean
+ tx_key_pub:
+ type: string
+ tx_key_sec:
+ type: string
+ tx_pub_key_p:
+ type: string
+ type: object
+ HeightModel:
+ example:
+ height: 0
+ properties:
+ height:
+ type: integer
+ type: object
+ BlockTemplateModel:
+ example:
+ difficulty: difficulty
+ seed: seed
+ block_reward_without_fee: 1
+ block_reward: 5
+ prev_hash: prev_hash
+ miner_tx_tgc:
+ amount_commitments:
+ - amount_commitments
+ - amount_commitments
+ real_zc_ins_asset_ids:
+ - real_zc_ins_asset_ids
+ - real_zc_ins_asset_ids
+ amount_commitments_sum: amount_commitments_sum
+ asset_ids:
+ - asset_ids
+ - asset_ids
+ tx_key_sec: tx_key_sec
+ real_in_asset_id_blinding_mask_x_amount_sum: real_in_asset_id_blinding_mask_x_amount_sum
+ pseudo_outs_blinded_asset_ids:
+ - pseudo_outs_blinded_asset_ids
+ - pseudo_outs_blinded_asset_ids
+ ao_commitment_in_outputs: true
+ ao_asset_id_pt: ao_asset_id_pt
+ zc_input_amounts:
+ - 6
+ - 6
+ pseudo_outs_plus_real_out_blinding_masks:
+ - pseudo_outs_plus_real_out_blinding_masks
+ - pseudo_outs_plus_real_out_blinding_masks
+ tx_pub_key_p: tx_pub_key_p
+ amounts:
+ - amounts
+ - amounts
+ pseudo_out_amount_blinding_masks_sum: pseudo_out_amount_blinding_masks_sum
+ ao_amount_blinding_mask: ao_amount_blinding_mask
+ amount_blinding_masks:
+ - amount_blinding_masks
+ - amount_blinding_masks
+ tx_key_pub: tx_key_pub
+ amount_blinding_masks_sum: amount_blinding_masks_sum
+ asset_id_blinding_mask_x_amount_sum: asset_id_blinding_mask_x_amount_sum
+ blinded_asset_ids:
+ - blinded_asset_ids
+ - blinded_asset_ids
+ asset_id_blinding_masks:
+ - asset_id_blinding_masks
+ - asset_id_blinding_masks
+ pseudo_out_amount_commitments_sum: pseudo_out_amount_commitments_sum
+ ao_asset_id: ao_asset_id
+ ao_amount_commitment: ao_amount_commitment
+ blocktemplate_blob: blocktemplate_blob
+ height: 0
+ txs_fee: 5
+ properties:
+ blocktemplate_blob:
+ type: string
+ difficulty:
+ type: string
+ height:
+ type: integer
+ miner_tx_tgc:
+ $ref: "#/components/schemas/TxGenerationContextModel"
+ block_reward_without_fee:
+ type: integer
+ block_reward:
+ type: integer
+ txs_fee:
+ type: integer
+ prev_hash:
+ type: string
+ seed:
+ type: string
+ type: object
+ TransactionAttachmentModel:
+ example:
+ details_view: details_view
+ type: type
+ short_view: short_view
+ properties:
+ type:
+ type: string
+ short_view:
+ type: string
+ details_view:
+ type: string
+ type: object
+ BlockDetailsModel:
+ example:
+ miner_text_info: miner_text_info
+ block_tself_size: 5
+ penalty: 7
+ cumulative_diff_precise: cumulative_diff_precise
+ type: 2147483647
+ block_cumulative_size: 1
+ total_txs_size: 7
+ total_fee: 4
+ transactions_details:
+ - amount: 1
+ attachments:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ object_in_json: object_in_json
+ fee: 1
+ ins:
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ pub_key: pub_key
+ outs:
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ blob: blob
+ blob_size: 1
+ keeper_block: 4
+ extra:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ id: id
+ timestamp: 6
+ - amount: 1
+ attachments:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ object_in_json: object_in_json
+ fee: 1
+ ins:
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ pub_key: pub_key
+ outs:
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ blob: blob
+ blob_size: 1
+ keeper_block: 4
+ extra:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ id: id
+ timestamp: 6
+ id: id
+ height: 2
+ timestamp: 2
+ pow_seed: pow_seed
+ object_in_json: object_in_json
+ base_reward: 6
+ summary_reward: 9
+ cumulative_diff_adjusted: cumulative_diff_adjusted
+ already_generated_coins: already_generated_coins
+ prev_id: prev_id
+ actual_timestamp: 0
+ difficulty: difficulty
+ is_orphan: true
+ this_block_fee_median: 3
+ blob: blob
+ effective_fee_median: 5
+ properties:
+ actual_timestamp:
+ type: integer
+ already_generated_coins:
+ type: string
+ base_reward:
+ type: integer
+ blob:
+ type: string
+ block_cumulative_size:
+ type: integer
+ block_tself_size:
+ type: integer
+ cumulative_diff_adjusted:
+ type: string
+ cumulative_diff_precise:
+ type: string
+ difficulty:
+ type: string
+ effective_fee_median:
+ type: integer
+ height:
+ type: integer
+ id:
+ type: string
+ is_orphan:
+ type: boolean
+ miner_text_info:
+ type: string
+ object_in_json:
+ type: string
+ penalty:
+ type: integer
+ pow_seed:
+ type: string
+ prev_id:
+ type: string
+ summary_reward:
+ type: integer
+ this_block_fee_median:
+ type: integer
+ timestamp:
+ type: integer
+ total_fee:
+ type: integer
+ total_txs_size:
+ type: integer
+ transactions_details:
+ items:
+ $ref: "#/components/schemas/TransactionDetailsModel"
+ type: array
+ type:
+ maximum: 4294967295
+ minimum: 0
+ type: integer
+ type: object
+ PosEntryModel:
+ example:
+ amount: 0
+ stake_unlock_time: 5
+ g_index: 6
+ keyimage: keyimage
+ tx_out_index: 5
+ block_timestamp: 1
+ wallet_index: 2
+ tx_id: tx_id
+ properties:
+ amount:
+ type: integer
+ g_index:
+ type: integer
+ keyimage:
+ type: string
+ block_timestamp:
+ type: integer
+ stake_unlock_time:
+ type: integer
+ tx_id:
+ type: string
+ tx_out_index:
+ type: integer
+ wallet_index:
+ type: integer
+ type: object
+ TransactionDetailsModel:
+ example:
+ amount: 1
+ attachments:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ object_in_json: object_in_json
+ fee: 1
+ ins:
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ - amount: 6
+ kimage_or_ms_id: kimage_or_ms_id
+ htlc_origin: htlc_origin
+ global_indexes:
+ - 7
+ - 7
+ multisig_count: 503831554
+ pub_key: pub_key
+ outs:
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ - amount: 5
+ pub_keys:
+ - pub_keys
+ - pub_keys
+ is_spent: true
+ minimum_sigs: 2147483647
+ global_index: 9
+ blob: blob
+ blob_size: 1
+ keeper_block: 4
+ extra:
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ - details_view: details_view
+ type: type
+ short_view: short_view
+ id: id
+ timestamp: 6
+ properties:
+ amount:
+ type: integer
+ attachments:
+ items:
+ $ref: "#/components/schemas/TransactionAttachmentModel"
+ type: array
+ blob:
+ type: string
+ blob_size:
+ type: integer
+ extra:
+ items:
+ $ref: "#/components/schemas/TransactionExtraModel"
+ type: array
+ fee:
+ type: integer
+ id:
+ type: string
+ ins:
+ items:
+ $ref: "#/components/schemas/TransactionInputModel"
+ type: array
+ keeper_block:
+ format: int64
+ type: integer
+ object_in_json:
+ type: string
+ outs:
+ items:
+ $ref: "#/components/schemas/TransactionOutputModel"
+ type: array
+ pub_key:
+ type: string
+ timestamp:
+ type: integer
+ type: object
+ BlockProcessingPerformanceModel:
+ example:
+ target_calculating_calc: 1
+ pos_validate_ki_search: 4
+ all_txs_insert_time_5: 3
+ etc_stuff_6: 7
+ target_calculating_enum_blocks: 4
+ target_calculating_time_2: 7
+ validate_miner_transaction_time: 4
+ verify_multiple_zc_outs_range_proofs_time: 6
+ raise_block_core_event: 3
+ insert_time_4: 5
+ pos_validate_get_out_keys_for_inputs: 7
+ block_processing_time_1: 8
+ block_processing_time_0: 4
+ pos_validate_zvp: 9
+ collect_rangeproofs_data_from_tx_time: 0
+ longhash_calculating_time_3: 3
+ properties:
+ block_processing_time_0:
+ type: integer
+ block_processing_time_1:
+ type: integer
+ target_calculating_time_2:
+ type: integer
+ longhash_calculating_time_3:
+ type: integer
+ all_txs_insert_time_5:
+ type: integer
+ etc_stuff_6:
+ type: integer
+ insert_time_4:
+ type: integer
+ raise_block_core_event:
+ type: integer
+ validate_miner_transaction_time:
+ type: integer
+ collect_rangeproofs_data_from_tx_time:
+ type: integer
+ verify_multiple_zc_outs_range_proofs_time:
+ type: integer
+ target_calculating_enum_blocks:
+ type: integer
+ target_calculating_calc:
+ type: integer
+ pos_validate_ki_search:
+ type: integer
+ pos_validate_get_out_keys_for_inputs:
+ type: integer
+ pos_validate_zvp:
+ type: integer
+ type: object
+ BlockTemplateRequestModel:
+ example:
+ miner_address: miner_address
+ pos_block: true
+ ex_nonce: ex_nonce
+ pe:
+ amount: 0
+ stake_unlock_time: 5
+ g_index: 6
+ keyimage: keyimage
+ tx_out_index: 5
+ block_timestamp: 1
+ wallet_index: 2
+ tx_id: tx_id
+ ignore_pow_ts_check: true
+ stakeholder_address: stakeholder_address
+ explicit_txs:
+ - explicit_txs
+ - explicit_txs
+ properties:
+ miner_address:
+ type: string
+ stakeholder_address:
+ type: string
+ ex_nonce:
+ type: string
+ pos_block:
+ type: boolean
+ ignore_pow_ts_check:
+ type: boolean
+ pe:
+ $ref: "#/components/schemas/PosEntryModel"
+ explicit_txs:
+ items:
+ type: string
+ type: array
+ type: object
+ SubmitBlockRequestModel:
+ example:
+ block_blob: block_blob
+ properties:
+ block_blob:
+ type: string
+ type: object
diff --git a/utils/sdk/client/go/api_block.go b/utils/sdk/client/go/api_block.go
new file mode 100644
index 00000000..198cf11a
--- /dev/null
+++ b/utils/sdk/client/go/api_block.go
@@ -0,0 +1,599 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "bytes"
+ "context"
+ "io"
+ "net/http"
+ "net/url"
+ "strings"
+)
+
+
+type BlockAPI interface {
+
+ /*
+ CreateBlockTemplate Create a block template for mining
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiCreateBlockTemplateRequest
+ */
+ CreateBlockTemplate(ctx context.Context) ApiCreateBlockTemplateRequest
+
+ // CreateBlockTemplateExecute executes the request
+ // @return BlockTemplateModel
+ CreateBlockTemplateExecute(r ApiCreateBlockTemplateRequest) (*BlockTemplateModel, *http.Response, error)
+
+ /*
+ GetBlock Get a block by its hash or height (ID)
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @param identifier The hash (hex string) or height (integer) of the block to retrieve.
+ @return ApiGetBlockRequest
+ */
+ GetBlock(ctx context.Context, identifier string) ApiGetBlockRequest
+
+ // GetBlockExecute executes the request
+ // @return BlockDetailsModel
+ GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsModel, *http.Response, error)
+
+ /*
+ GetBlocks Get one or more blocks, with optional pagination.
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetBlocksRequest
+ */
+ GetBlocks(ctx context.Context) ApiGetBlocksRequest
+
+ // GetBlocksExecute executes the request
+ // @return []BlockDetailsModel
+ GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetailsModel, *http.Response, error)
+
+ /*
+ GetHeight Get the current blockchain height
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetHeightRequest
+ */
+ GetHeight(ctx context.Context) ApiGetHeightRequest
+
+ // GetHeightExecute executes the request
+ // @return HeightModel
+ GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, *http.Response, error)
+
+ /*
+ SubmitBlock Submit a new block to the network
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiSubmitBlockRequest
+ */
+ SubmitBlock(ctx context.Context) ApiSubmitBlockRequest
+
+ // SubmitBlockExecute executes the request
+ // @return SubmitBlockResponseModel
+ SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBlockResponseModel, *http.Response, error)
+}
+
+// BlockAPIService BlockAPI service
+type BlockAPIService service
+
+type ApiCreateBlockTemplateRequest struct {
+ ctx context.Context
+ ApiService BlockAPI
+ blockTemplateRequestModel *BlockTemplateRequestModel
+}
+
+func (r ApiCreateBlockTemplateRequest) BlockTemplateRequestModel(blockTemplateRequestModel BlockTemplateRequestModel) ApiCreateBlockTemplateRequest {
+ r.blockTemplateRequestModel = &blockTemplateRequestModel
+ return r
+}
+
+func (r ApiCreateBlockTemplateRequest) Execute() (*BlockTemplateModel, *http.Response, error) {
+ return r.ApiService.CreateBlockTemplateExecute(r)
+}
+
+/*
+CreateBlockTemplate Create a block template for mining
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiCreateBlockTemplateRequest
+*/
+func (a *BlockAPIService) CreateBlockTemplate(ctx context.Context) ApiCreateBlockTemplateRequest {
+ return ApiCreateBlockTemplateRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return BlockTemplateModel
+func (a *BlockAPIService) CreateBlockTemplateExecute(r ApiCreateBlockTemplateRequest) (*BlockTemplateModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodPost
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *BlockTemplateModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.CreateBlockTemplate")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/block/template"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+ if r.blockTemplateRequestModel == nil {
+ return localVarReturnValue, nil, reportError("blockTemplateRequestModel is required and must be specified")
+ }
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{"application/json"}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ // body params
+ localVarPostBody = r.blockTemplateRequestModel
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+type ApiGetBlockRequest struct {
+ ctx context.Context
+ ApiService BlockAPI
+ identifier string
+}
+
+func (r ApiGetBlockRequest) Execute() (*BlockDetailsModel, *http.Response, error) {
+ return r.ApiService.GetBlockExecute(r)
+}
+
+/*
+GetBlock Get a block by its hash or height (ID)
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @param identifier The hash (hex string) or height (integer) of the block to retrieve.
+ @return ApiGetBlockRequest
+*/
+func (a *BlockAPIService) GetBlock(ctx context.Context, identifier string) ApiGetBlockRequest {
+ return ApiGetBlockRequest{
+ ApiService: a,
+ ctx: ctx,
+ identifier: identifier,
+ }
+}
+
+// Execute executes the request
+// @return BlockDetailsModel
+func (a *BlockAPIService) GetBlockExecute(r ApiGetBlockRequest) (*BlockDetailsModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodGet
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *BlockDetailsModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetBlock")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/block/{identifier}"
+ localVarPath = strings.Replace(localVarPath, "{"+"identifier"+"}", url.PathEscape(parameterValueToString(r.identifier, "identifier")), -1)
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+type ApiGetBlocksRequest struct {
+ ctx context.Context
+ ApiService BlockAPI
+}
+
+func (r ApiGetBlocksRequest) Execute() ([]BlockDetailsModel, *http.Response, error) {
+ return r.ApiService.GetBlocksExecute(r)
+}
+
+/*
+GetBlocks Get one or more blocks, with optional pagination.
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetBlocksRequest
+*/
+func (a *BlockAPIService) GetBlocks(ctx context.Context) ApiGetBlocksRequest {
+ return ApiGetBlocksRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return []BlockDetailsModel
+func (a *BlockAPIService) GetBlocksExecute(r ApiGetBlocksRequest) ([]BlockDetailsModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodGet
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue []BlockDetailsModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetBlocks")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/block"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+type ApiGetHeightRequest struct {
+ ctx context.Context
+ ApiService BlockAPI
+}
+
+func (r ApiGetHeightRequest) Execute() (*HeightModel, *http.Response, error) {
+ return r.ApiService.GetHeightExecute(r)
+}
+
+/*
+GetHeight Get the current blockchain height
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetHeightRequest
+*/
+func (a *BlockAPIService) GetHeight(ctx context.Context) ApiGetHeightRequest {
+ return ApiGetHeightRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return HeightModel
+func (a *BlockAPIService) GetHeightExecute(r ApiGetHeightRequest) (*HeightModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodGet
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *HeightModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.GetHeight")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/block/height"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+type ApiSubmitBlockRequest struct {
+ ctx context.Context
+ ApiService BlockAPI
+ submitBlockRequestModel *SubmitBlockRequestModel
+}
+
+func (r ApiSubmitBlockRequest) SubmitBlockRequestModel(submitBlockRequestModel SubmitBlockRequestModel) ApiSubmitBlockRequest {
+ r.submitBlockRequestModel = &submitBlockRequestModel
+ return r
+}
+
+func (r ApiSubmitBlockRequest) Execute() (*SubmitBlockResponseModel, *http.Response, error) {
+ return r.ApiService.SubmitBlockExecute(r)
+}
+
+/*
+SubmitBlock Submit a new block to the network
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiSubmitBlockRequest
+*/
+func (a *BlockAPIService) SubmitBlock(ctx context.Context) ApiSubmitBlockRequest {
+ return ApiSubmitBlockRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return SubmitBlockResponseModel
+func (a *BlockAPIService) SubmitBlockExecute(r ApiSubmitBlockRequest) (*SubmitBlockResponseModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodPost
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *SubmitBlockResponseModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "BlockAPIService.SubmitBlock")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/block/submit"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+ if r.submitBlockRequestModel == nil {
+ return localVarReturnValue, nil, reportError("submitBlockRequestModel is required and must be specified")
+ }
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{"application/json"}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ // body params
+ localVarPostBody = r.submitBlockRequestModel
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
diff --git a/utils/sdk/client/go/api_info.go b/utils/sdk/client/go/api_info.go
new file mode 100644
index 00000000..8482eee6
--- /dev/null
+++ b/utils/sdk/client/go/api_info.go
@@ -0,0 +1,258 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "bytes"
+ "context"
+ "io"
+ "net/http"
+ "net/url"
+)
+
+
+type InfoAPI interface {
+
+ /*
+ GetInfo Get detailed information about the blockchain and daemon state
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetInfoRequest
+ */
+ GetInfo(ctx context.Context) ApiGetInfoRequest
+
+ // GetInfoExecute executes the request
+ // @return InfoModel
+ GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http.Response, error)
+
+ /*
+ Version Get API version
+
+ Returns the current version of the API.
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiVersionRequest
+ */
+ Version(ctx context.Context) ApiVersionRequest
+
+ // VersionExecute executes the request
+ // @return VersionModel
+ VersionExecute(r ApiVersionRequest) (*VersionModel, *http.Response, error)
+}
+
+// InfoAPIService InfoAPI service
+type InfoAPIService service
+
+type ApiGetInfoRequest struct {
+ ctx context.Context
+ ApiService InfoAPI
+ flags *string
+}
+
+// Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.
+func (r ApiGetInfoRequest) Flags(flags string) ApiGetInfoRequest {
+ r.flags = &flags
+ return r
+}
+
+func (r ApiGetInfoRequest) Execute() (*InfoModel, *http.Response, error) {
+ return r.ApiService.GetInfoExecute(r)
+}
+
+/*
+GetInfo Get detailed information about the blockchain and daemon state
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiGetInfoRequest
+*/
+func (a *InfoAPIService) GetInfo(ctx context.Context) ApiGetInfoRequest {
+ return ApiGetInfoRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return InfoModel
+func (a *InfoAPIService) GetInfoExecute(r ApiGetInfoRequest) (*InfoModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodGet
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *InfoModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoAPIService.GetInfo")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/info"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+
+ if r.flags != nil {
+ parameterAddToHeaderOrQuery(localVarQueryParams, "flags", r.flags, "form", "")
+ }
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
+
+type ApiVersionRequest struct {
+ ctx context.Context
+ ApiService InfoAPI
+}
+
+func (r ApiVersionRequest) Execute() (*VersionModel, *http.Response, error) {
+ return r.ApiService.VersionExecute(r)
+}
+
+/*
+Version Get API version
+
+Returns the current version of the API.
+
+ @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
+ @return ApiVersionRequest
+*/
+func (a *InfoAPIService) Version(ctx context.Context) ApiVersionRequest {
+ return ApiVersionRequest{
+ ApiService: a,
+ ctx: ctx,
+ }
+}
+
+// Execute executes the request
+// @return VersionModel
+func (a *InfoAPIService) VersionExecute(r ApiVersionRequest) (*VersionModel, *http.Response, error) {
+ var (
+ localVarHTTPMethod = http.MethodGet
+ localVarPostBody interface{}
+ formFiles []formFile
+ localVarReturnValue *VersionModel
+ )
+
+ localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "InfoAPIService.Version")
+ if err != nil {
+ return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
+ }
+
+ localVarPath := localBasePath + "/info/version"
+
+ localVarHeaderParams := make(map[string]string)
+ localVarQueryParams := url.Values{}
+ localVarFormParams := url.Values{}
+
+ // to determine the Content-Type header
+ localVarHTTPContentTypes := []string{}
+
+ // set Content-Type header
+ localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
+ if localVarHTTPContentType != "" {
+ localVarHeaderParams["Content-Type"] = localVarHTTPContentType
+ }
+
+ // to determine the Accept header
+ localVarHTTPHeaderAccepts := []string{"application/json"}
+
+ // set Accept header
+ localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
+ if localVarHTTPHeaderAccept != "" {
+ localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
+ }
+ req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
+ if err != nil {
+ return localVarReturnValue, nil, err
+ }
+
+ localVarHTTPResponse, err := a.client.callAPI(req)
+ if err != nil || localVarHTTPResponse == nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
+ localVarHTTPResponse.Body.Close()
+ localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
+ if err != nil {
+ return localVarReturnValue, localVarHTTPResponse, err
+ }
+
+ if localVarHTTPResponse.StatusCode >= 300 {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: localVarHTTPResponse.Status,
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
+ if err != nil {
+ newErr := &GenericOpenAPIError{
+ body: localVarBody,
+ error: err.Error(),
+ }
+ return localVarReturnValue, localVarHTTPResponse, newErr
+ }
+
+ return localVarReturnValue, localVarHTTPResponse, nil
+}
diff --git a/utils/sdk/client/go/client.go b/utils/sdk/client/go/client.go
new file mode 100644
index 00000000..58ab003e
--- /dev/null
+++ b/utils/sdk/client/go/client.go
@@ -0,0 +1,659 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "bytes"
+ "context"
+ "encoding/json"
+ "encoding/xml"
+ "errors"
+ "fmt"
+ "io"
+ "log"
+ "mime/multipart"
+ "net/http"
+ "net/http/httputil"
+ "net/url"
+ "os"
+ "path/filepath"
+ "reflect"
+ "regexp"
+ "strconv"
+ "strings"
+ "time"
+ "unicode/utf8"
+
+)
+
+var (
+ JsonCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?json)`)
+ XmlCheck = regexp.MustCompile(`(?i:(?:application|text)/(?:[^;]+\+)?xml)`)
+ queryParamSplit = regexp.MustCompile(`(^|&)([^&]+)`)
+ queryDescape = strings.NewReplacer( "%5B", "[", "%5D", "]" )
+)
+
+// APIClient manages communication with the Lethean Blockchain API API v6.0.1
+// In most cases there should be only one, shared, APIClient.
+type APIClient struct {
+ cfg *Configuration
+ common service // Reuse a single struct instead of allocating one for each service on the heap.
+
+ // API Services
+
+ BlockAPI BlockAPI
+
+ InfoAPI InfoAPI
+}
+
+type service struct {
+ client *APIClient
+}
+
+// NewAPIClient creates a new API client. Requires a userAgent string describing your application.
+// optionally a custom http.Client to allow for advanced features such as caching.
+func NewAPIClient(cfg *Configuration) *APIClient {
+ if cfg.HTTPClient == nil {
+ cfg.HTTPClient = http.DefaultClient
+ }
+
+ c := &APIClient{}
+ c.cfg = cfg
+ c.common.client = c
+
+ // API Services
+ c.BlockAPI = (*BlockAPIService)(&c.common)
+ c.InfoAPI = (*InfoAPIService)(&c.common)
+
+ return c
+}
+
+func atoi(in string) (int, error) {
+ return strconv.Atoi(in)
+}
+
+// selectHeaderContentType select a content type from the available list.
+func selectHeaderContentType(contentTypes []string) string {
+ if len(contentTypes) == 0 {
+ return ""
+ }
+ if contains(contentTypes, "application/json") {
+ return "application/json"
+ }
+ return contentTypes[0] // use the first content type specified in 'consumes'
+}
+
+// selectHeaderAccept join all accept types and return
+func selectHeaderAccept(accepts []string) string {
+ if len(accepts) == 0 {
+ return ""
+ }
+
+ if contains(accepts, "application/json") {
+ return "application/json"
+ }
+
+ return strings.Join(accepts, ",")
+}
+
+// contains is a case insensitive match, finding needle in a haystack
+func contains(haystack []string, needle string) bool {
+ for _, a := range haystack {
+ if strings.EqualFold(a, needle) {
+ return true
+ }
+ }
+ return false
+}
+
+// Verify optional parameters are of the correct type.
+func typeCheckParameter(obj interface{}, expected string, name string) error {
+ // Make sure there is an object.
+ if obj == nil {
+ return nil
+ }
+
+ // Check the type is as expected.
+ if reflect.TypeOf(obj).String() != expected {
+ return fmt.Errorf("expected %s to be of type %s but received %s", name, expected, reflect.TypeOf(obj).String())
+ }
+ return nil
+}
+
+func parameterValueToString( obj interface{}, key string ) string {
+ if reflect.TypeOf(obj).Kind() != reflect.Ptr {
+ if actualObj, ok := obj.(interface{ GetActualInstanceValue() interface{} }); ok {
+ return fmt.Sprintf("%v", actualObj.GetActualInstanceValue())
+ }
+
+ return fmt.Sprintf("%v", obj)
+ }
+ var param,ok = obj.(MappedNullable)
+ if !ok {
+ return ""
+ }
+ dataMap,err := param.ToMap()
+ if err != nil {
+ return ""
+ }
+ return fmt.Sprintf("%v", dataMap[key])
+}
+
+// parameterAddToHeaderOrQuery adds the provided object to the request header or url query
+// supporting deep object syntax
+func parameterAddToHeaderOrQuery(headerOrQueryParams interface{}, keyPrefix string, obj interface{}, style string, collectionType string) {
+ var v = reflect.ValueOf(obj)
+ var value = ""
+ if v == reflect.ValueOf(nil) {
+ value = "null"
+ } else {
+ switch v.Kind() {
+ case reflect.Invalid:
+ value = "invalid"
+
+ case reflect.Struct:
+ if t,ok := obj.(MappedNullable); ok {
+ dataMap,err := t.ToMap()
+ if err != nil {
+ return
+ }
+ parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, dataMap, style, collectionType)
+ return
+ }
+ if t, ok := obj.(time.Time); ok {
+ parameterAddToHeaderOrQuery(headerOrQueryParams, keyPrefix, t.Format(time.RFC3339Nano), style, collectionType)
+ return
+ }
+ value = v.Type().String() + " value"
+ case reflect.Slice:
+ var indValue = reflect.ValueOf(obj)
+ if indValue == reflect.ValueOf(nil) {
+ return
+ }
+ var lenIndValue = indValue.Len()
+ for i:=0;i 0 || (len(formFiles) > 0) {
+ if body != nil {
+ return nil, errors.New("Cannot specify postBody and multipart form at the same time.")
+ }
+ body = &bytes.Buffer{}
+ w := multipart.NewWriter(body)
+
+ for k, v := range formParams {
+ for _, iv := range v {
+ if strings.HasPrefix(k, "@") { // file
+ err = addFile(w, k[1:], iv)
+ if err != nil {
+ return nil, err
+ }
+ } else { // form value
+ w.WriteField(k, iv)
+ }
+ }
+ }
+ for _, formFile := range formFiles {
+ if len(formFile.fileBytes) > 0 && formFile.fileName != "" {
+ w.Boundary()
+ part, err := w.CreateFormFile(formFile.formFileName, filepath.Base(formFile.fileName))
+ if err != nil {
+ return nil, err
+ }
+ _, err = part.Write(formFile.fileBytes)
+ if err != nil {
+ return nil, err
+ }
+ }
+ }
+
+ // Set the Boundary in the Content-Type
+ headerParams["Content-Type"] = w.FormDataContentType()
+
+ // Set Content-Length
+ headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
+ w.Close()
+ }
+
+ if strings.HasPrefix(headerParams["Content-Type"], "application/x-www-form-urlencoded") && len(formParams) > 0 {
+ if body != nil {
+ return nil, errors.New("Cannot specify postBody and x-www-form-urlencoded form at the same time.")
+ }
+ body = &bytes.Buffer{}
+ body.WriteString(formParams.Encode())
+ // Set Content-Length
+ headerParams["Content-Length"] = fmt.Sprintf("%d", body.Len())
+ }
+
+ // Setup path and query parameters
+ url, err := url.Parse(path)
+ if err != nil {
+ return nil, err
+ }
+
+ // Override request host, if applicable
+ if c.cfg.Host != "" {
+ url.Host = c.cfg.Host
+ }
+
+ // Override request scheme, if applicable
+ if c.cfg.Scheme != "" {
+ url.Scheme = c.cfg.Scheme
+ }
+
+ // Adding Query Param
+ query := url.Query()
+ for k, v := range queryParams {
+ for _, iv := range v {
+ query.Add(k, iv)
+ }
+ }
+
+ // Encode the parameters.
+ url.RawQuery = queryParamSplit.ReplaceAllStringFunc(query.Encode(), func(s string) string {
+ pieces := strings.Split(s, "=")
+ pieces[0] = queryDescape.Replace(pieces[0])
+ return strings.Join(pieces, "=")
+ })
+
+ // Generate a new request
+ if body != nil {
+ localVarRequest, err = http.NewRequest(method, url.String(), body)
+ } else {
+ localVarRequest, err = http.NewRequest(method, url.String(), nil)
+ }
+ if err != nil {
+ return nil, err
+ }
+
+ // add header parameters, if any
+ if len(headerParams) > 0 {
+ headers := http.Header{}
+ for h, v := range headerParams {
+ headers[h] = []string{v}
+ }
+ localVarRequest.Header = headers
+ }
+
+ // Add the user agent to the request.
+ localVarRequest.Header.Add("User-Agent", c.cfg.UserAgent)
+
+ if ctx != nil {
+ // add context to the request
+ localVarRequest = localVarRequest.WithContext(ctx)
+
+ // Walk through any authentication.
+
+ }
+
+ for header, value := range c.cfg.DefaultHeader {
+ localVarRequest.Header.Add(header, value)
+ }
+ return localVarRequest, nil
+}
+
+func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) {
+ if len(b) == 0 {
+ return nil
+ }
+ if s, ok := v.(*string); ok {
+ *s = string(b)
+ return nil
+ }
+ if f, ok := v.(*os.File); ok {
+ f, err = os.CreateTemp("", "HttpClientFile")
+ if err != nil {
+ return
+ }
+ _, err = f.Write(b)
+ if err != nil {
+ return
+ }
+ _, err = f.Seek(0, io.SeekStart)
+ return
+ }
+ if f, ok := v.(**os.File); ok {
+ *f, err = os.CreateTemp("", "HttpClientFile")
+ if err != nil {
+ return
+ }
+ _, err = (*f).Write(b)
+ if err != nil {
+ return
+ }
+ _, err = (*f).Seek(0, io.SeekStart)
+ return
+ }
+ if XmlCheck.MatchString(contentType) {
+ if err = xml.Unmarshal(b, v); err != nil {
+ return err
+ }
+ return nil
+ }
+ if JsonCheck.MatchString(contentType) {
+ if actualObj, ok := v.(interface{ GetActualInstance() interface{} }); ok { // oneOf, anyOf schemas
+ if unmarshalObj, ok := actualObj.(interface{ UnmarshalJSON([]byte) error }); ok { // make sure it has UnmarshalJSON defined
+ if err = unmarshalObj.UnmarshalJSON(b); err != nil {
+ return err
+ }
+ } else {
+ return errors.New("Unknown type with GetActualInstance but no unmarshalObj.UnmarshalJSON defined")
+ }
+ } else if err = json.Unmarshal(b, v); err != nil { // simple model
+ return err
+ }
+ return nil
+ }
+ return errors.New("undefined response type")
+}
+
+// Add a file to the multipart request
+func addFile(w *multipart.Writer, fieldName, path string) error {
+ file, err := os.Open(filepath.Clean(path))
+ if err != nil {
+ return err
+ }
+ err = file.Close()
+ if err != nil {
+ return err
+ }
+
+ part, err := w.CreateFormFile(fieldName, filepath.Base(path))
+ if err != nil {
+ return err
+ }
+ _, err = io.Copy(part, file)
+
+ return err
+}
+
+// Set request body from an interface{}
+func setBody(body interface{}, contentType string) (bodyBuf *bytes.Buffer, err error) {
+ if bodyBuf == nil {
+ bodyBuf = &bytes.Buffer{}
+ }
+
+ if reader, ok := body.(io.Reader); ok {
+ _, err = bodyBuf.ReadFrom(reader)
+ } else if fp, ok := body.(*os.File); ok {
+ _, err = bodyBuf.ReadFrom(fp)
+ } else if b, ok := body.([]byte); ok {
+ _, err = bodyBuf.Write(b)
+ } else if s, ok := body.(string); ok {
+ _, err = bodyBuf.WriteString(s)
+ } else if s, ok := body.(*string); ok {
+ _, err = bodyBuf.WriteString(*s)
+ } else if JsonCheck.MatchString(contentType) {
+ err = json.NewEncoder(bodyBuf).Encode(body)
+ } else if XmlCheck.MatchString(contentType) {
+ var bs []byte
+ bs, err = xml.Marshal(body)
+ if err == nil {
+ bodyBuf.Write(bs)
+ }
+ }
+
+ if err != nil {
+ return nil, err
+ }
+
+ if bodyBuf.Len() == 0 {
+ err = fmt.Errorf("invalid body type %s\n", contentType)
+ return nil, err
+ }
+ return bodyBuf, nil
+}
+
+// detectContentType method is used to figure out `Request.Body` content type for request header
+func detectContentType(body interface{}) string {
+ contentType := "text/plain; charset=utf-8"
+ kind := reflect.TypeOf(body).Kind()
+
+ switch kind {
+ case reflect.Struct, reflect.Map, reflect.Ptr:
+ contentType = "application/json; charset=utf-8"
+ case reflect.String:
+ contentType = "text/plain; charset=utf-8"
+ default:
+ if b, ok := body.([]byte); ok {
+ contentType = http.DetectContentType(b)
+ } else if kind == reflect.Slice {
+ contentType = "application/json; charset=utf-8"
+ }
+ }
+
+ return contentType
+}
+
+// Ripped from https://github.com/gregjones/httpcache/blob/master/httpcache.go
+type cacheControl map[string]string
+
+func parseCacheControl(headers http.Header) cacheControl {
+ cc := cacheControl{}
+ ccHeader := headers.Get("Cache-Control")
+ for _, part := range strings.Split(ccHeader, ",") {
+ part = strings.Trim(part, " ")
+ if part == "" {
+ continue
+ }
+ if strings.ContainsRune(part, '=') {
+ keyval := strings.Split(part, "=")
+ cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",")
+ } else {
+ cc[part] = ""
+ }
+ }
+ return cc
+}
+
+// CacheExpires helper function to determine remaining time before repeating a request.
+func CacheExpires(r *http.Response) time.Time {
+ // Figure out when the cache expires.
+ var expires time.Time
+ now, err := time.Parse(time.RFC1123, r.Header.Get("date"))
+ if err != nil {
+ return time.Now()
+ }
+ respCacheControl := parseCacheControl(r.Header)
+
+ if maxAge, ok := respCacheControl["max-age"]; ok {
+ lifetime, err := time.ParseDuration(maxAge + "s")
+ if err != nil {
+ expires = now
+ } else {
+ expires = now.Add(lifetime)
+ }
+ } else {
+ expiresHeader := r.Header.Get("Expires")
+ if expiresHeader != "" {
+ expires, err = time.Parse(time.RFC1123, expiresHeader)
+ if err != nil {
+ expires = now
+ }
+ }
+ }
+ return expires
+}
+
+func strlen(s string) int {
+ return utf8.RuneCountInString(s)
+}
+
+// GenericOpenAPIError Provides access to the body, error and model on returned errors.
+type GenericOpenAPIError struct {
+ body []byte
+ error string
+ model interface{}
+}
+
+// Error returns non-empty string if there was an error.
+func (e GenericOpenAPIError) Error() string {
+ return e.error
+}
+
+// Body returns the raw bytes of the response
+func (e GenericOpenAPIError) Body() []byte {
+ return e.body
+}
+
+// Model returns the unpacked model of the error
+func (e GenericOpenAPIError) Model() interface{} {
+ return e.model
+}
+
+// format error message using title and detail when model implements rfc7807
+func formatErrorMessage(status string, v interface{}) string {
+ str := ""
+ metaValue := reflect.ValueOf(v).Elem()
+
+ if metaValue.Kind() == reflect.Struct {
+ field := metaValue.FieldByName("Title")
+ if field != (reflect.Value{}) {
+ str = fmt.Sprintf("%s", field.Interface())
+ }
+
+ field = metaValue.FieldByName("Detail")
+ if field != (reflect.Value{}) {
+ str = fmt.Sprintf("%s (%s)", str, field.Interface())
+ }
+ }
+
+ return strings.TrimSpace(fmt.Sprintf("%s %s", status, str))
+}
diff --git a/utils/sdk/client/go/configuration.go b/utils/sdk/client/go/configuration.go
new file mode 100644
index 00000000..1a1fa7ec
--- /dev/null
+++ b/utils/sdk/client/go/configuration.go
@@ -0,0 +1,219 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "context"
+ "fmt"
+ "net/http"
+ "strings"
+)
+
+// contextKeys are used to identify the type of value in the context.
+// Since these are string, it is possible to get a short description of the
+// context key for logging and debugging using key.String().
+
+type contextKey string
+
+func (c contextKey) String() string {
+ return "auth " + string(c)
+}
+
+var (
+ // ContextServerIndex uses a server configuration from the index.
+ ContextServerIndex = contextKey("serverIndex")
+
+ // ContextOperationServerIndices uses a server configuration from the index mapping.
+ ContextOperationServerIndices = contextKey("serverOperationIndices")
+
+ // ContextServerVariables overrides a server configuration variables.
+ ContextServerVariables = contextKey("serverVariables")
+
+ // ContextOperationServerVariables overrides a server configuration variables using operation specific values.
+ ContextOperationServerVariables = contextKey("serverOperationVariables")
+)
+
+// BasicAuth provides basic http authentication to a request passed via context using ContextBasicAuth
+type BasicAuth struct {
+ UserName string `json:"userName,omitempty"`
+ Password string `json:"password,omitempty"`
+}
+
+// APIKey provides API key based authentication to a request passed via context using ContextAPIKey
+type APIKey struct {
+ Key string
+ Prefix string
+}
+
+// ServerVariable stores the information about a server variable
+type ServerVariable struct {
+ Description string
+ DefaultValue string
+ EnumValues []string
+}
+
+// ServerConfiguration stores the information about a server
+type ServerConfiguration struct {
+ URL string
+ Description string
+ Variables map[string]ServerVariable
+}
+
+// ServerConfigurations stores multiple ServerConfiguration items
+type ServerConfigurations []ServerConfiguration
+
+// Configuration stores the configuration of the API client
+type Configuration struct {
+ Host string `json:"host,omitempty"`
+ Scheme string `json:"scheme,omitempty"`
+ DefaultHeader map[string]string `json:"defaultHeader,omitempty"`
+ UserAgent string `json:"userAgent,omitempty"`
+ Debug bool `json:"debug,omitempty"`
+ Servers ServerConfigurations
+ OperationServers map[string]ServerConfigurations
+ HTTPClient *http.Client
+}
+
+// NewConfiguration returns a new Configuration object
+func NewConfiguration() *Configuration {
+ cfg := &Configuration{
+ DefaultHeader: make(map[string]string),
+ UserAgent: "OpenAPI-Generator/1.0.0/go",
+ Debug: false,
+ Servers: ServerConfigurations{
+ {
+ URL: "http://127.0.0.1:36943",
+ Description: "Local Daemon",
+ },
+ {
+ URL: "http://seed.lethean.io:36943",
+ Description: "Seed Server",
+ },
+ },
+ OperationServers: map[string]ServerConfigurations{
+ },
+ }
+ return cfg
+}
+
+// AddDefaultHeader adds a new HTTP header to the default header in the request
+func (c *Configuration) AddDefaultHeader(key string, value string) {
+ c.DefaultHeader[key] = value
+}
+
+// URL formats template on a index using given variables
+func (sc ServerConfigurations) URL(index int, variables map[string]string) (string, error) {
+ if index < 0 || len(sc) <= index {
+ return "", fmt.Errorf("index %v out of range %v", index, len(sc)-1)
+ }
+ server := sc[index]
+ url := server.URL
+
+ // go through variables and replace placeholders
+ for name, variable := range server.Variables {
+ if value, ok := variables[name]; ok {
+ found := bool(len(variable.EnumValues) == 0)
+ for _, enumValue := range variable.EnumValues {
+ if value == enumValue {
+ found = true
+ }
+ }
+ if !found {
+ return "", fmt.Errorf("the variable %s in the server URL has invalid value %v. Must be %v", name, value, variable.EnumValues)
+ }
+ url = strings.Replace(url, "{"+name+"}", value, -1)
+ } else {
+ url = strings.Replace(url, "{"+name+"}", variable.DefaultValue, -1)
+ }
+ }
+ return url, nil
+}
+
+// ServerURL returns URL based on server settings
+func (c *Configuration) ServerURL(index int, variables map[string]string) (string, error) {
+ return c.Servers.URL(index, variables)
+}
+
+func getServerIndex(ctx context.Context) (int, error) {
+ si := ctx.Value(ContextServerIndex)
+ if si != nil {
+ if index, ok := si.(int); ok {
+ return index, nil
+ }
+ return 0, reportError("Invalid type %T should be int", si)
+ }
+ return 0, nil
+}
+
+func getServerOperationIndex(ctx context.Context, endpoint string) (int, error) {
+ osi := ctx.Value(ContextOperationServerIndices)
+ if osi != nil {
+ if operationIndices, ok := osi.(map[string]int); !ok {
+ return 0, reportError("Invalid type %T should be map[string]int", osi)
+ } else {
+ index, ok := operationIndices[endpoint]
+ if ok {
+ return index, nil
+ }
+ }
+ }
+ return getServerIndex(ctx)
+}
+
+func getServerVariables(ctx context.Context) (map[string]string, error) {
+ sv := ctx.Value(ContextServerVariables)
+ if sv != nil {
+ if variables, ok := sv.(map[string]string); ok {
+ return variables, nil
+ }
+ return nil, reportError("ctx value of ContextServerVariables has invalid type %T should be map[string]string", sv)
+ }
+ return nil, nil
+}
+
+func getServerOperationVariables(ctx context.Context, endpoint string) (map[string]string, error) {
+ osv := ctx.Value(ContextOperationServerVariables)
+ if osv != nil {
+ if operationVariables, ok := osv.(map[string]map[string]string); !ok {
+ return nil, reportError("ctx value of ContextOperationServerVariables has invalid type %T should be map[string]map[string]string", osv)
+ } else {
+ variables, ok := operationVariables[endpoint]
+ if ok {
+ return variables, nil
+ }
+ }
+ }
+ return getServerVariables(ctx)
+}
+
+// ServerURLWithContext returns a new server URL given an endpoint
+func (c *Configuration) ServerURLWithContext(ctx context.Context, endpoint string) (string, error) {
+ sc, ok := c.OperationServers[endpoint]
+ if !ok {
+ sc = c.Servers
+ }
+
+ if ctx == nil {
+ return sc.URL(0, nil)
+ }
+
+ index, err := getServerOperationIndex(ctx, endpoint)
+ if err != nil {
+ return "", err
+ }
+
+ variables, err := getServerOperationVariables(ctx, endpoint)
+ if err != nil {
+ return "", err
+ }
+
+ return sc.URL(index, variables)
+}
diff --git a/utils/sdk/client/go/docs/BlockAPI.md b/utils/sdk/client/go/docs/BlockAPI.md
new file mode 100644
index 00000000..68550462
--- /dev/null
+++ b/utils/sdk/client/go/docs/BlockAPI.md
@@ -0,0 +1,327 @@
+# \BlockAPI
+
+All URIs are relative to *http://127.0.0.1:36943*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**CreateBlockTemplate**](BlockAPI.md#CreateBlockTemplate) | **Post** /block/template | Create a block template for mining
+[**GetBlock**](BlockAPI.md#GetBlock) | **Get** /block/{identifier} | Get a block by its hash or height (ID)
+[**GetBlocks**](BlockAPI.md#GetBlocks) | **Get** /block | Get one or more blocks, with optional pagination.
+[**GetHeight**](BlockAPI.md#GetHeight) | **Get** /block/height | Get the current blockchain height
+[**SubmitBlock**](BlockAPI.md#SubmitBlock) | **Post** /block/submit | Submit a new block to the network
+
+
+
+## CreateBlockTemplate
+
+> BlockTemplateModel CreateBlockTemplate(ctx).BlockTemplateRequestModel(blockTemplateRequestModel).Execute()
+
+Create a block template for mining
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+ blockTemplateRequestModel := *openapiclient.NewBlockTemplateRequestModel() // BlockTemplateRequestModel |
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.BlockAPI.CreateBlockTemplate(context.Background()).BlockTemplateRequestModel(blockTemplateRequestModel).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.CreateBlockTemplate``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `CreateBlockTemplate`: BlockTemplateModel
+ fmt.Fprintf(os.Stdout, "Response from `BlockAPI.CreateBlockTemplate`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiCreateBlockTemplateRequest struct via the builder pattern
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **blockTemplateRequestModel** | [**BlockTemplateRequestModel**](BlockTemplateRequestModel.md) | |
+
+### Return type
+
+[**BlockTemplateModel**](BlockTemplateModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
+
+## GetBlock
+
+> BlockDetailsModel GetBlock(ctx, identifier).Execute()
+
+Get a block by its hash or height (ID)
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+ identifier := "identifier_example" // string | The hash (hex string) or height (integer) of the block to retrieve.
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.BlockAPI.GetBlock(context.Background(), identifier).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetBlock``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `GetBlock`: BlockDetailsModel
+ fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetBlock`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+**ctx** | **context.Context** | context for authentication, logging, cancellation, deadlines, tracing, etc.
+**identifier** | **string** | The hash (hex string) or height (integer) of the block to retrieve. |
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiGetBlockRequest struct via the builder pattern
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+
+
+### Return type
+
+[**BlockDetailsModel**](BlockDetailsModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
+
+## GetBlocks
+
+> []BlockDetailsModel GetBlocks(ctx).Execute()
+
+Get one or more blocks, with optional pagination.
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.BlockAPI.GetBlocks(context.Background()).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetBlocks``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `GetBlocks`: []BlockDetailsModel
+ fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetBlocks`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+This endpoint does not need any parameter.
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiGetBlocksRequest struct via the builder pattern
+
+
+### Return type
+
+[**[]BlockDetailsModel**](BlockDetailsModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
+
+## GetHeight
+
+> HeightModel GetHeight(ctx).Execute()
+
+Get the current blockchain height
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.BlockAPI.GetHeight(context.Background()).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.GetHeight``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `GetHeight`: HeightModel
+ fmt.Fprintf(os.Stdout, "Response from `BlockAPI.GetHeight`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+This endpoint does not need any parameter.
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiGetHeightRequest struct via the builder pattern
+
+
+### Return type
+
+[**HeightModel**](HeightModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
+
+## SubmitBlock
+
+> SubmitBlockResponseModel SubmitBlock(ctx).SubmitBlockRequestModel(submitBlockRequestModel).Execute()
+
+Submit a new block to the network
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+ submitBlockRequestModel := *openapiclient.NewSubmitBlockRequestModel() // SubmitBlockRequestModel |
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.BlockAPI.SubmitBlock(context.Background()).SubmitBlockRequestModel(submitBlockRequestModel).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `BlockAPI.SubmitBlock``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `SubmitBlock`: SubmitBlockResponseModel
+ fmt.Fprintf(os.Stdout, "Response from `BlockAPI.SubmitBlock`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiSubmitBlockRequest struct via the builder pattern
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **submitBlockRequestModel** | [**SubmitBlockRequestModel**](SubmitBlockRequestModel.md) | |
+
+### Return type
+
+[**SubmitBlockResponseModel**](SubmitBlockResponseModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
diff --git a/utils/sdk/client/go/docs/BlockDetailsModel.md b/utils/sdk/client/go/docs/BlockDetailsModel.md
new file mode 100644
index 00000000..225f00c8
--- /dev/null
+++ b/utils/sdk/client/go/docs/BlockDetailsModel.md
@@ -0,0 +1,680 @@
+# BlockDetailsModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ActualTimestamp** | Pointer to **int32** | | [optional]
+**AlreadyGeneratedCoins** | Pointer to **string** | | [optional]
+**BaseReward** | Pointer to **int32** | | [optional]
+**Blob** | Pointer to **string** | | [optional]
+**BlockCumulativeSize** | Pointer to **int32** | | [optional]
+**BlockTselfSize** | Pointer to **int32** | | [optional]
+**CumulativeDiffAdjusted** | Pointer to **string** | | [optional]
+**CumulativeDiffPrecise** | Pointer to **string** | | [optional]
+**Difficulty** | Pointer to **string** | | [optional]
+**EffectiveFeeMedian** | Pointer to **int32** | | [optional]
+**Height** | Pointer to **int32** | | [optional]
+**Id** | Pointer to **string** | | [optional]
+**IsOrphan** | Pointer to **bool** | | [optional]
+**MinerTextInfo** | Pointer to **string** | | [optional]
+**ObjectInJson** | Pointer to **string** | | [optional]
+**Penalty** | Pointer to **int32** | | [optional]
+**PowSeed** | Pointer to **string** | | [optional]
+**PrevId** | Pointer to **string** | | [optional]
+**SummaryReward** | Pointer to **int32** | | [optional]
+**ThisBlockFeeMedian** | Pointer to **int32** | | [optional]
+**Timestamp** | Pointer to **int32** | | [optional]
+**TotalFee** | Pointer to **int32** | | [optional]
+**TotalTxsSize** | Pointer to **int32** | | [optional]
+**TransactionsDetails** | Pointer to [**[]TransactionDetailsModel**](TransactionDetailsModel.md) | | [optional]
+**Type** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewBlockDetailsModel
+
+`func NewBlockDetailsModel() *BlockDetailsModel`
+
+NewBlockDetailsModel instantiates a new BlockDetailsModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewBlockDetailsModelWithDefaults
+
+`func NewBlockDetailsModelWithDefaults() *BlockDetailsModel`
+
+NewBlockDetailsModelWithDefaults instantiates a new BlockDetailsModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetActualTimestamp
+
+`func (o *BlockDetailsModel) GetActualTimestamp() int32`
+
+GetActualTimestamp returns the ActualTimestamp field if non-nil, zero value otherwise.
+
+### GetActualTimestampOk
+
+`func (o *BlockDetailsModel) GetActualTimestampOk() (*int32, bool)`
+
+GetActualTimestampOk returns a tuple with the ActualTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetActualTimestamp
+
+`func (o *BlockDetailsModel) SetActualTimestamp(v int32)`
+
+SetActualTimestamp sets ActualTimestamp field to given value.
+
+### HasActualTimestamp
+
+`func (o *BlockDetailsModel) HasActualTimestamp() bool`
+
+HasActualTimestamp returns a boolean if a field has been set.
+
+### GetAlreadyGeneratedCoins
+
+`func (o *BlockDetailsModel) GetAlreadyGeneratedCoins() string`
+
+GetAlreadyGeneratedCoins returns the AlreadyGeneratedCoins field if non-nil, zero value otherwise.
+
+### GetAlreadyGeneratedCoinsOk
+
+`func (o *BlockDetailsModel) GetAlreadyGeneratedCoinsOk() (*string, bool)`
+
+GetAlreadyGeneratedCoinsOk returns a tuple with the AlreadyGeneratedCoins field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAlreadyGeneratedCoins
+
+`func (o *BlockDetailsModel) SetAlreadyGeneratedCoins(v string)`
+
+SetAlreadyGeneratedCoins sets AlreadyGeneratedCoins field to given value.
+
+### HasAlreadyGeneratedCoins
+
+`func (o *BlockDetailsModel) HasAlreadyGeneratedCoins() bool`
+
+HasAlreadyGeneratedCoins returns a boolean if a field has been set.
+
+### GetBaseReward
+
+`func (o *BlockDetailsModel) GetBaseReward() int32`
+
+GetBaseReward returns the BaseReward field if non-nil, zero value otherwise.
+
+### GetBaseRewardOk
+
+`func (o *BlockDetailsModel) GetBaseRewardOk() (*int32, bool)`
+
+GetBaseRewardOk returns a tuple with the BaseReward field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBaseReward
+
+`func (o *BlockDetailsModel) SetBaseReward(v int32)`
+
+SetBaseReward sets BaseReward field to given value.
+
+### HasBaseReward
+
+`func (o *BlockDetailsModel) HasBaseReward() bool`
+
+HasBaseReward returns a boolean if a field has been set.
+
+### GetBlob
+
+`func (o *BlockDetailsModel) GetBlob() string`
+
+GetBlob returns the Blob field if non-nil, zero value otherwise.
+
+### GetBlobOk
+
+`func (o *BlockDetailsModel) GetBlobOk() (*string, bool)`
+
+GetBlobOk returns a tuple with the Blob field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlob
+
+`func (o *BlockDetailsModel) SetBlob(v string)`
+
+SetBlob sets Blob field to given value.
+
+### HasBlob
+
+`func (o *BlockDetailsModel) HasBlob() bool`
+
+HasBlob returns a boolean if a field has been set.
+
+### GetBlockCumulativeSize
+
+`func (o *BlockDetailsModel) GetBlockCumulativeSize() int32`
+
+GetBlockCumulativeSize returns the BlockCumulativeSize field if non-nil, zero value otherwise.
+
+### GetBlockCumulativeSizeOk
+
+`func (o *BlockDetailsModel) GetBlockCumulativeSizeOk() (*int32, bool)`
+
+GetBlockCumulativeSizeOk returns a tuple with the BlockCumulativeSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockCumulativeSize
+
+`func (o *BlockDetailsModel) SetBlockCumulativeSize(v int32)`
+
+SetBlockCumulativeSize sets BlockCumulativeSize field to given value.
+
+### HasBlockCumulativeSize
+
+`func (o *BlockDetailsModel) HasBlockCumulativeSize() bool`
+
+HasBlockCumulativeSize returns a boolean if a field has been set.
+
+### GetBlockTselfSize
+
+`func (o *BlockDetailsModel) GetBlockTselfSize() int32`
+
+GetBlockTselfSize returns the BlockTselfSize field if non-nil, zero value otherwise.
+
+### GetBlockTselfSizeOk
+
+`func (o *BlockDetailsModel) GetBlockTselfSizeOk() (*int32, bool)`
+
+GetBlockTselfSizeOk returns a tuple with the BlockTselfSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockTselfSize
+
+`func (o *BlockDetailsModel) SetBlockTselfSize(v int32)`
+
+SetBlockTselfSize sets BlockTselfSize field to given value.
+
+### HasBlockTselfSize
+
+`func (o *BlockDetailsModel) HasBlockTselfSize() bool`
+
+HasBlockTselfSize returns a boolean if a field has been set.
+
+### GetCumulativeDiffAdjusted
+
+`func (o *BlockDetailsModel) GetCumulativeDiffAdjusted() string`
+
+GetCumulativeDiffAdjusted returns the CumulativeDiffAdjusted field if non-nil, zero value otherwise.
+
+### GetCumulativeDiffAdjustedOk
+
+`func (o *BlockDetailsModel) GetCumulativeDiffAdjustedOk() (*string, bool)`
+
+GetCumulativeDiffAdjustedOk returns a tuple with the CumulativeDiffAdjusted field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCumulativeDiffAdjusted
+
+`func (o *BlockDetailsModel) SetCumulativeDiffAdjusted(v string)`
+
+SetCumulativeDiffAdjusted sets CumulativeDiffAdjusted field to given value.
+
+### HasCumulativeDiffAdjusted
+
+`func (o *BlockDetailsModel) HasCumulativeDiffAdjusted() bool`
+
+HasCumulativeDiffAdjusted returns a boolean if a field has been set.
+
+### GetCumulativeDiffPrecise
+
+`func (o *BlockDetailsModel) GetCumulativeDiffPrecise() string`
+
+GetCumulativeDiffPrecise returns the CumulativeDiffPrecise field if non-nil, zero value otherwise.
+
+### GetCumulativeDiffPreciseOk
+
+`func (o *BlockDetailsModel) GetCumulativeDiffPreciseOk() (*string, bool)`
+
+GetCumulativeDiffPreciseOk returns a tuple with the CumulativeDiffPrecise field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCumulativeDiffPrecise
+
+`func (o *BlockDetailsModel) SetCumulativeDiffPrecise(v string)`
+
+SetCumulativeDiffPrecise sets CumulativeDiffPrecise field to given value.
+
+### HasCumulativeDiffPrecise
+
+`func (o *BlockDetailsModel) HasCumulativeDiffPrecise() bool`
+
+HasCumulativeDiffPrecise returns a boolean if a field has been set.
+
+### GetDifficulty
+
+`func (o *BlockDetailsModel) GetDifficulty() string`
+
+GetDifficulty returns the Difficulty field if non-nil, zero value otherwise.
+
+### GetDifficultyOk
+
+`func (o *BlockDetailsModel) GetDifficultyOk() (*string, bool)`
+
+GetDifficultyOk returns a tuple with the Difficulty field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDifficulty
+
+`func (o *BlockDetailsModel) SetDifficulty(v string)`
+
+SetDifficulty sets Difficulty field to given value.
+
+### HasDifficulty
+
+`func (o *BlockDetailsModel) HasDifficulty() bool`
+
+HasDifficulty returns a boolean if a field has been set.
+
+### GetEffectiveFeeMedian
+
+`func (o *BlockDetailsModel) GetEffectiveFeeMedian() int32`
+
+GetEffectiveFeeMedian returns the EffectiveFeeMedian field if non-nil, zero value otherwise.
+
+### GetEffectiveFeeMedianOk
+
+`func (o *BlockDetailsModel) GetEffectiveFeeMedianOk() (*int32, bool)`
+
+GetEffectiveFeeMedianOk returns a tuple with the EffectiveFeeMedian field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetEffectiveFeeMedian
+
+`func (o *BlockDetailsModel) SetEffectiveFeeMedian(v int32)`
+
+SetEffectiveFeeMedian sets EffectiveFeeMedian field to given value.
+
+### HasEffectiveFeeMedian
+
+`func (o *BlockDetailsModel) HasEffectiveFeeMedian() bool`
+
+HasEffectiveFeeMedian returns a boolean if a field has been set.
+
+### GetHeight
+
+`func (o *BlockDetailsModel) GetHeight() int32`
+
+GetHeight returns the Height field if non-nil, zero value otherwise.
+
+### GetHeightOk
+
+`func (o *BlockDetailsModel) GetHeightOk() (*int32, bool)`
+
+GetHeightOk returns a tuple with the Height field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetHeight
+
+`func (o *BlockDetailsModel) SetHeight(v int32)`
+
+SetHeight sets Height field to given value.
+
+### HasHeight
+
+`func (o *BlockDetailsModel) HasHeight() bool`
+
+HasHeight returns a boolean if a field has been set.
+
+### GetId
+
+`func (o *BlockDetailsModel) GetId() string`
+
+GetId returns the Id field if non-nil, zero value otherwise.
+
+### GetIdOk
+
+`func (o *BlockDetailsModel) GetIdOk() (*string, bool)`
+
+GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetId
+
+`func (o *BlockDetailsModel) SetId(v string)`
+
+SetId sets Id field to given value.
+
+### HasId
+
+`func (o *BlockDetailsModel) HasId() bool`
+
+HasId returns a boolean if a field has been set.
+
+### GetIsOrphan
+
+`func (o *BlockDetailsModel) GetIsOrphan() bool`
+
+GetIsOrphan returns the IsOrphan field if non-nil, zero value otherwise.
+
+### GetIsOrphanOk
+
+`func (o *BlockDetailsModel) GetIsOrphanOk() (*bool, bool)`
+
+GetIsOrphanOk returns a tuple with the IsOrphan field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIsOrphan
+
+`func (o *BlockDetailsModel) SetIsOrphan(v bool)`
+
+SetIsOrphan sets IsOrphan field to given value.
+
+### HasIsOrphan
+
+`func (o *BlockDetailsModel) HasIsOrphan() bool`
+
+HasIsOrphan returns a boolean if a field has been set.
+
+### GetMinerTextInfo
+
+`func (o *BlockDetailsModel) GetMinerTextInfo() string`
+
+GetMinerTextInfo returns the MinerTextInfo field if non-nil, zero value otherwise.
+
+### GetMinerTextInfoOk
+
+`func (o *BlockDetailsModel) GetMinerTextInfoOk() (*string, bool)`
+
+GetMinerTextInfoOk returns a tuple with the MinerTextInfo field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinerTextInfo
+
+`func (o *BlockDetailsModel) SetMinerTextInfo(v string)`
+
+SetMinerTextInfo sets MinerTextInfo field to given value.
+
+### HasMinerTextInfo
+
+`func (o *BlockDetailsModel) HasMinerTextInfo() bool`
+
+HasMinerTextInfo returns a boolean if a field has been set.
+
+### GetObjectInJson
+
+`func (o *BlockDetailsModel) GetObjectInJson() string`
+
+GetObjectInJson returns the ObjectInJson field if non-nil, zero value otherwise.
+
+### GetObjectInJsonOk
+
+`func (o *BlockDetailsModel) GetObjectInJsonOk() (*string, bool)`
+
+GetObjectInJsonOk returns a tuple with the ObjectInJson field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetObjectInJson
+
+`func (o *BlockDetailsModel) SetObjectInJson(v string)`
+
+SetObjectInJson sets ObjectInJson field to given value.
+
+### HasObjectInJson
+
+`func (o *BlockDetailsModel) HasObjectInJson() bool`
+
+HasObjectInJson returns a boolean if a field has been set.
+
+### GetPenalty
+
+`func (o *BlockDetailsModel) GetPenalty() int32`
+
+GetPenalty returns the Penalty field if non-nil, zero value otherwise.
+
+### GetPenaltyOk
+
+`func (o *BlockDetailsModel) GetPenaltyOk() (*int32, bool)`
+
+GetPenaltyOk returns a tuple with the Penalty field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPenalty
+
+`func (o *BlockDetailsModel) SetPenalty(v int32)`
+
+SetPenalty sets Penalty field to given value.
+
+### HasPenalty
+
+`func (o *BlockDetailsModel) HasPenalty() bool`
+
+HasPenalty returns a boolean if a field has been set.
+
+### GetPowSeed
+
+`func (o *BlockDetailsModel) GetPowSeed() string`
+
+GetPowSeed returns the PowSeed field if non-nil, zero value otherwise.
+
+### GetPowSeedOk
+
+`func (o *BlockDetailsModel) GetPowSeedOk() (*string, bool)`
+
+GetPowSeedOk returns a tuple with the PowSeed field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPowSeed
+
+`func (o *BlockDetailsModel) SetPowSeed(v string)`
+
+SetPowSeed sets PowSeed field to given value.
+
+### HasPowSeed
+
+`func (o *BlockDetailsModel) HasPowSeed() bool`
+
+HasPowSeed returns a boolean if a field has been set.
+
+### GetPrevId
+
+`func (o *BlockDetailsModel) GetPrevId() string`
+
+GetPrevId returns the PrevId field if non-nil, zero value otherwise.
+
+### GetPrevIdOk
+
+`func (o *BlockDetailsModel) GetPrevIdOk() (*string, bool)`
+
+GetPrevIdOk returns a tuple with the PrevId field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPrevId
+
+`func (o *BlockDetailsModel) SetPrevId(v string)`
+
+SetPrevId sets PrevId field to given value.
+
+### HasPrevId
+
+`func (o *BlockDetailsModel) HasPrevId() bool`
+
+HasPrevId returns a boolean if a field has been set.
+
+### GetSummaryReward
+
+`func (o *BlockDetailsModel) GetSummaryReward() int32`
+
+GetSummaryReward returns the SummaryReward field if non-nil, zero value otherwise.
+
+### GetSummaryRewardOk
+
+`func (o *BlockDetailsModel) GetSummaryRewardOk() (*int32, bool)`
+
+GetSummaryRewardOk returns a tuple with the SummaryReward field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSummaryReward
+
+`func (o *BlockDetailsModel) SetSummaryReward(v int32)`
+
+SetSummaryReward sets SummaryReward field to given value.
+
+### HasSummaryReward
+
+`func (o *BlockDetailsModel) HasSummaryReward() bool`
+
+HasSummaryReward returns a boolean if a field has been set.
+
+### GetThisBlockFeeMedian
+
+`func (o *BlockDetailsModel) GetThisBlockFeeMedian() int32`
+
+GetThisBlockFeeMedian returns the ThisBlockFeeMedian field if non-nil, zero value otherwise.
+
+### GetThisBlockFeeMedianOk
+
+`func (o *BlockDetailsModel) GetThisBlockFeeMedianOk() (*int32, bool)`
+
+GetThisBlockFeeMedianOk returns a tuple with the ThisBlockFeeMedian field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetThisBlockFeeMedian
+
+`func (o *BlockDetailsModel) SetThisBlockFeeMedian(v int32)`
+
+SetThisBlockFeeMedian sets ThisBlockFeeMedian field to given value.
+
+### HasThisBlockFeeMedian
+
+`func (o *BlockDetailsModel) HasThisBlockFeeMedian() bool`
+
+HasThisBlockFeeMedian returns a boolean if a field has been set.
+
+### GetTimestamp
+
+`func (o *BlockDetailsModel) GetTimestamp() int32`
+
+GetTimestamp returns the Timestamp field if non-nil, zero value otherwise.
+
+### GetTimestampOk
+
+`func (o *BlockDetailsModel) GetTimestampOk() (*int32, bool)`
+
+GetTimestampOk returns a tuple with the Timestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTimestamp
+
+`func (o *BlockDetailsModel) SetTimestamp(v int32)`
+
+SetTimestamp sets Timestamp field to given value.
+
+### HasTimestamp
+
+`func (o *BlockDetailsModel) HasTimestamp() bool`
+
+HasTimestamp returns a boolean if a field has been set.
+
+### GetTotalFee
+
+`func (o *BlockDetailsModel) GetTotalFee() int32`
+
+GetTotalFee returns the TotalFee field if non-nil, zero value otherwise.
+
+### GetTotalFeeOk
+
+`func (o *BlockDetailsModel) GetTotalFeeOk() (*int32, bool)`
+
+GetTotalFeeOk returns a tuple with the TotalFee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTotalFee
+
+`func (o *BlockDetailsModel) SetTotalFee(v int32)`
+
+SetTotalFee sets TotalFee field to given value.
+
+### HasTotalFee
+
+`func (o *BlockDetailsModel) HasTotalFee() bool`
+
+HasTotalFee returns a boolean if a field has been set.
+
+### GetTotalTxsSize
+
+`func (o *BlockDetailsModel) GetTotalTxsSize() int32`
+
+GetTotalTxsSize returns the TotalTxsSize field if non-nil, zero value otherwise.
+
+### GetTotalTxsSizeOk
+
+`func (o *BlockDetailsModel) GetTotalTxsSizeOk() (*int32, bool)`
+
+GetTotalTxsSizeOk returns a tuple with the TotalTxsSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTotalTxsSize
+
+`func (o *BlockDetailsModel) SetTotalTxsSize(v int32)`
+
+SetTotalTxsSize sets TotalTxsSize field to given value.
+
+### HasTotalTxsSize
+
+`func (o *BlockDetailsModel) HasTotalTxsSize() bool`
+
+HasTotalTxsSize returns a boolean if a field has been set.
+
+### GetTransactionsDetails
+
+`func (o *BlockDetailsModel) GetTransactionsDetails() []TransactionDetailsModel`
+
+GetTransactionsDetails returns the TransactionsDetails field if non-nil, zero value otherwise.
+
+### GetTransactionsDetailsOk
+
+`func (o *BlockDetailsModel) GetTransactionsDetailsOk() (*[]TransactionDetailsModel, bool)`
+
+GetTransactionsDetailsOk returns a tuple with the TransactionsDetails field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTransactionsDetails
+
+`func (o *BlockDetailsModel) SetTransactionsDetails(v []TransactionDetailsModel)`
+
+SetTransactionsDetails sets TransactionsDetails field to given value.
+
+### HasTransactionsDetails
+
+`func (o *BlockDetailsModel) HasTransactionsDetails() bool`
+
+HasTransactionsDetails returns a boolean if a field has been set.
+
+### GetType
+
+`func (o *BlockDetailsModel) GetType() int32`
+
+GetType returns the Type field if non-nil, zero value otherwise.
+
+### GetTypeOk
+
+`func (o *BlockDetailsModel) GetTypeOk() (*int32, bool)`
+
+GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetType
+
+`func (o *BlockDetailsModel) SetType(v int32)`
+
+SetType sets Type field to given value.
+
+### HasType
+
+`func (o *BlockDetailsModel) HasType() bool`
+
+HasType returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/BlockProcessingPerformanceModel.md b/utils/sdk/client/go/docs/BlockProcessingPerformanceModel.md
new file mode 100644
index 00000000..5c8938a4
--- /dev/null
+++ b/utils/sdk/client/go/docs/BlockProcessingPerformanceModel.md
@@ -0,0 +1,446 @@
+# BlockProcessingPerformanceModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**BlockProcessingTime0** | Pointer to **int32** | | [optional]
+**BlockProcessingTime1** | Pointer to **int32** | | [optional]
+**TargetCalculatingTime2** | Pointer to **int32** | | [optional]
+**LonghashCalculatingTime3** | Pointer to **int32** | | [optional]
+**AllTxsInsertTime5** | Pointer to **int32** | | [optional]
+**EtcStuff6** | Pointer to **int32** | | [optional]
+**InsertTime4** | Pointer to **int32** | | [optional]
+**RaiseBlockCoreEvent** | Pointer to **int32** | | [optional]
+**ValidateMinerTransactionTime** | Pointer to **int32** | | [optional]
+**CollectRangeproofsDataFromTxTime** | Pointer to **int32** | | [optional]
+**VerifyMultipleZcOutsRangeProofsTime** | Pointer to **int32** | | [optional]
+**TargetCalculatingEnumBlocks** | Pointer to **int32** | | [optional]
+**TargetCalculatingCalc** | Pointer to **int32** | | [optional]
+**PosValidateKiSearch** | Pointer to **int32** | | [optional]
+**PosValidateGetOutKeysForInputs** | Pointer to **int32** | | [optional]
+**PosValidateZvp** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewBlockProcessingPerformanceModel
+
+`func NewBlockProcessingPerformanceModel() *BlockProcessingPerformanceModel`
+
+NewBlockProcessingPerformanceModel instantiates a new BlockProcessingPerformanceModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewBlockProcessingPerformanceModelWithDefaults
+
+`func NewBlockProcessingPerformanceModelWithDefaults() *BlockProcessingPerformanceModel`
+
+NewBlockProcessingPerformanceModelWithDefaults instantiates a new BlockProcessingPerformanceModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetBlockProcessingTime0
+
+`func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime0() int32`
+
+GetBlockProcessingTime0 returns the BlockProcessingTime0 field if non-nil, zero value otherwise.
+
+### GetBlockProcessingTime0Ok
+
+`func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime0Ok() (*int32, bool)`
+
+GetBlockProcessingTime0Ok returns a tuple with the BlockProcessingTime0 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockProcessingTime0
+
+`func (o *BlockProcessingPerformanceModel) SetBlockProcessingTime0(v int32)`
+
+SetBlockProcessingTime0 sets BlockProcessingTime0 field to given value.
+
+### HasBlockProcessingTime0
+
+`func (o *BlockProcessingPerformanceModel) HasBlockProcessingTime0() bool`
+
+HasBlockProcessingTime0 returns a boolean if a field has been set.
+
+### GetBlockProcessingTime1
+
+`func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime1() int32`
+
+GetBlockProcessingTime1 returns the BlockProcessingTime1 field if non-nil, zero value otherwise.
+
+### GetBlockProcessingTime1Ok
+
+`func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime1Ok() (*int32, bool)`
+
+GetBlockProcessingTime1Ok returns a tuple with the BlockProcessingTime1 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockProcessingTime1
+
+`func (o *BlockProcessingPerformanceModel) SetBlockProcessingTime1(v int32)`
+
+SetBlockProcessingTime1 sets BlockProcessingTime1 field to given value.
+
+### HasBlockProcessingTime1
+
+`func (o *BlockProcessingPerformanceModel) HasBlockProcessingTime1() bool`
+
+HasBlockProcessingTime1 returns a boolean if a field has been set.
+
+### GetTargetCalculatingTime2
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingTime2() int32`
+
+GetTargetCalculatingTime2 returns the TargetCalculatingTime2 field if non-nil, zero value otherwise.
+
+### GetTargetCalculatingTime2Ok
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingTime2Ok() (*int32, bool)`
+
+GetTargetCalculatingTime2Ok returns a tuple with the TargetCalculatingTime2 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTargetCalculatingTime2
+
+`func (o *BlockProcessingPerformanceModel) SetTargetCalculatingTime2(v int32)`
+
+SetTargetCalculatingTime2 sets TargetCalculatingTime2 field to given value.
+
+### HasTargetCalculatingTime2
+
+`func (o *BlockProcessingPerformanceModel) HasTargetCalculatingTime2() bool`
+
+HasTargetCalculatingTime2 returns a boolean if a field has been set.
+
+### GetLonghashCalculatingTime3
+
+`func (o *BlockProcessingPerformanceModel) GetLonghashCalculatingTime3() int32`
+
+GetLonghashCalculatingTime3 returns the LonghashCalculatingTime3 field if non-nil, zero value otherwise.
+
+### GetLonghashCalculatingTime3Ok
+
+`func (o *BlockProcessingPerformanceModel) GetLonghashCalculatingTime3Ok() (*int32, bool)`
+
+GetLonghashCalculatingTime3Ok returns a tuple with the LonghashCalculatingTime3 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLonghashCalculatingTime3
+
+`func (o *BlockProcessingPerformanceModel) SetLonghashCalculatingTime3(v int32)`
+
+SetLonghashCalculatingTime3 sets LonghashCalculatingTime3 field to given value.
+
+### HasLonghashCalculatingTime3
+
+`func (o *BlockProcessingPerformanceModel) HasLonghashCalculatingTime3() bool`
+
+HasLonghashCalculatingTime3 returns a boolean if a field has been set.
+
+### GetAllTxsInsertTime5
+
+`func (o *BlockProcessingPerformanceModel) GetAllTxsInsertTime5() int32`
+
+GetAllTxsInsertTime5 returns the AllTxsInsertTime5 field if non-nil, zero value otherwise.
+
+### GetAllTxsInsertTime5Ok
+
+`func (o *BlockProcessingPerformanceModel) GetAllTxsInsertTime5Ok() (*int32, bool)`
+
+GetAllTxsInsertTime5Ok returns a tuple with the AllTxsInsertTime5 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAllTxsInsertTime5
+
+`func (o *BlockProcessingPerformanceModel) SetAllTxsInsertTime5(v int32)`
+
+SetAllTxsInsertTime5 sets AllTxsInsertTime5 field to given value.
+
+### HasAllTxsInsertTime5
+
+`func (o *BlockProcessingPerformanceModel) HasAllTxsInsertTime5() bool`
+
+HasAllTxsInsertTime5 returns a boolean if a field has been set.
+
+### GetEtcStuff6
+
+`func (o *BlockProcessingPerformanceModel) GetEtcStuff6() int32`
+
+GetEtcStuff6 returns the EtcStuff6 field if non-nil, zero value otherwise.
+
+### GetEtcStuff6Ok
+
+`func (o *BlockProcessingPerformanceModel) GetEtcStuff6Ok() (*int32, bool)`
+
+GetEtcStuff6Ok returns a tuple with the EtcStuff6 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetEtcStuff6
+
+`func (o *BlockProcessingPerformanceModel) SetEtcStuff6(v int32)`
+
+SetEtcStuff6 sets EtcStuff6 field to given value.
+
+### HasEtcStuff6
+
+`func (o *BlockProcessingPerformanceModel) HasEtcStuff6() bool`
+
+HasEtcStuff6 returns a boolean if a field has been set.
+
+### GetInsertTime4
+
+`func (o *BlockProcessingPerformanceModel) GetInsertTime4() int32`
+
+GetInsertTime4 returns the InsertTime4 field if non-nil, zero value otherwise.
+
+### GetInsertTime4Ok
+
+`func (o *BlockProcessingPerformanceModel) GetInsertTime4Ok() (*int32, bool)`
+
+GetInsertTime4Ok returns a tuple with the InsertTime4 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetInsertTime4
+
+`func (o *BlockProcessingPerformanceModel) SetInsertTime4(v int32)`
+
+SetInsertTime4 sets InsertTime4 field to given value.
+
+### HasInsertTime4
+
+`func (o *BlockProcessingPerformanceModel) HasInsertTime4() bool`
+
+HasInsertTime4 returns a boolean if a field has been set.
+
+### GetRaiseBlockCoreEvent
+
+`func (o *BlockProcessingPerformanceModel) GetRaiseBlockCoreEvent() int32`
+
+GetRaiseBlockCoreEvent returns the RaiseBlockCoreEvent field if non-nil, zero value otherwise.
+
+### GetRaiseBlockCoreEventOk
+
+`func (o *BlockProcessingPerformanceModel) GetRaiseBlockCoreEventOk() (*int32, bool)`
+
+GetRaiseBlockCoreEventOk returns a tuple with the RaiseBlockCoreEvent field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetRaiseBlockCoreEvent
+
+`func (o *BlockProcessingPerformanceModel) SetRaiseBlockCoreEvent(v int32)`
+
+SetRaiseBlockCoreEvent sets RaiseBlockCoreEvent field to given value.
+
+### HasRaiseBlockCoreEvent
+
+`func (o *BlockProcessingPerformanceModel) HasRaiseBlockCoreEvent() bool`
+
+HasRaiseBlockCoreEvent returns a boolean if a field has been set.
+
+### GetValidateMinerTransactionTime
+
+`func (o *BlockProcessingPerformanceModel) GetValidateMinerTransactionTime() int32`
+
+GetValidateMinerTransactionTime returns the ValidateMinerTransactionTime field if non-nil, zero value otherwise.
+
+### GetValidateMinerTransactionTimeOk
+
+`func (o *BlockProcessingPerformanceModel) GetValidateMinerTransactionTimeOk() (*int32, bool)`
+
+GetValidateMinerTransactionTimeOk returns a tuple with the ValidateMinerTransactionTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetValidateMinerTransactionTime
+
+`func (o *BlockProcessingPerformanceModel) SetValidateMinerTransactionTime(v int32)`
+
+SetValidateMinerTransactionTime sets ValidateMinerTransactionTime field to given value.
+
+### HasValidateMinerTransactionTime
+
+`func (o *BlockProcessingPerformanceModel) HasValidateMinerTransactionTime() bool`
+
+HasValidateMinerTransactionTime returns a boolean if a field has been set.
+
+### GetCollectRangeproofsDataFromTxTime
+
+`func (o *BlockProcessingPerformanceModel) GetCollectRangeproofsDataFromTxTime() int32`
+
+GetCollectRangeproofsDataFromTxTime returns the CollectRangeproofsDataFromTxTime field if non-nil, zero value otherwise.
+
+### GetCollectRangeproofsDataFromTxTimeOk
+
+`func (o *BlockProcessingPerformanceModel) GetCollectRangeproofsDataFromTxTimeOk() (*int32, bool)`
+
+GetCollectRangeproofsDataFromTxTimeOk returns a tuple with the CollectRangeproofsDataFromTxTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCollectRangeproofsDataFromTxTime
+
+`func (o *BlockProcessingPerformanceModel) SetCollectRangeproofsDataFromTxTime(v int32)`
+
+SetCollectRangeproofsDataFromTxTime sets CollectRangeproofsDataFromTxTime field to given value.
+
+### HasCollectRangeproofsDataFromTxTime
+
+`func (o *BlockProcessingPerformanceModel) HasCollectRangeproofsDataFromTxTime() bool`
+
+HasCollectRangeproofsDataFromTxTime returns a boolean if a field has been set.
+
+### GetVerifyMultipleZcOutsRangeProofsTime
+
+`func (o *BlockProcessingPerformanceModel) GetVerifyMultipleZcOutsRangeProofsTime() int32`
+
+GetVerifyMultipleZcOutsRangeProofsTime returns the VerifyMultipleZcOutsRangeProofsTime field if non-nil, zero value otherwise.
+
+### GetVerifyMultipleZcOutsRangeProofsTimeOk
+
+`func (o *BlockProcessingPerformanceModel) GetVerifyMultipleZcOutsRangeProofsTimeOk() (*int32, bool)`
+
+GetVerifyMultipleZcOutsRangeProofsTimeOk returns a tuple with the VerifyMultipleZcOutsRangeProofsTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVerifyMultipleZcOutsRangeProofsTime
+
+`func (o *BlockProcessingPerformanceModel) SetVerifyMultipleZcOutsRangeProofsTime(v int32)`
+
+SetVerifyMultipleZcOutsRangeProofsTime sets VerifyMultipleZcOutsRangeProofsTime field to given value.
+
+### HasVerifyMultipleZcOutsRangeProofsTime
+
+`func (o *BlockProcessingPerformanceModel) HasVerifyMultipleZcOutsRangeProofsTime() bool`
+
+HasVerifyMultipleZcOutsRangeProofsTime returns a boolean if a field has been set.
+
+### GetTargetCalculatingEnumBlocks
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingEnumBlocks() int32`
+
+GetTargetCalculatingEnumBlocks returns the TargetCalculatingEnumBlocks field if non-nil, zero value otherwise.
+
+### GetTargetCalculatingEnumBlocksOk
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingEnumBlocksOk() (*int32, bool)`
+
+GetTargetCalculatingEnumBlocksOk returns a tuple with the TargetCalculatingEnumBlocks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTargetCalculatingEnumBlocks
+
+`func (o *BlockProcessingPerformanceModel) SetTargetCalculatingEnumBlocks(v int32)`
+
+SetTargetCalculatingEnumBlocks sets TargetCalculatingEnumBlocks field to given value.
+
+### HasTargetCalculatingEnumBlocks
+
+`func (o *BlockProcessingPerformanceModel) HasTargetCalculatingEnumBlocks() bool`
+
+HasTargetCalculatingEnumBlocks returns a boolean if a field has been set.
+
+### GetTargetCalculatingCalc
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingCalc() int32`
+
+GetTargetCalculatingCalc returns the TargetCalculatingCalc field if non-nil, zero value otherwise.
+
+### GetTargetCalculatingCalcOk
+
+`func (o *BlockProcessingPerformanceModel) GetTargetCalculatingCalcOk() (*int32, bool)`
+
+GetTargetCalculatingCalcOk returns a tuple with the TargetCalculatingCalc field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTargetCalculatingCalc
+
+`func (o *BlockProcessingPerformanceModel) SetTargetCalculatingCalc(v int32)`
+
+SetTargetCalculatingCalc sets TargetCalculatingCalc field to given value.
+
+### HasTargetCalculatingCalc
+
+`func (o *BlockProcessingPerformanceModel) HasTargetCalculatingCalc() bool`
+
+HasTargetCalculatingCalc returns a boolean if a field has been set.
+
+### GetPosValidateKiSearch
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateKiSearch() int32`
+
+GetPosValidateKiSearch returns the PosValidateKiSearch field if non-nil, zero value otherwise.
+
+### GetPosValidateKiSearchOk
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateKiSearchOk() (*int32, bool)`
+
+GetPosValidateKiSearchOk returns a tuple with the PosValidateKiSearch field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosValidateKiSearch
+
+`func (o *BlockProcessingPerformanceModel) SetPosValidateKiSearch(v int32)`
+
+SetPosValidateKiSearch sets PosValidateKiSearch field to given value.
+
+### HasPosValidateKiSearch
+
+`func (o *BlockProcessingPerformanceModel) HasPosValidateKiSearch() bool`
+
+HasPosValidateKiSearch returns a boolean if a field has been set.
+
+### GetPosValidateGetOutKeysForInputs
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateGetOutKeysForInputs() int32`
+
+GetPosValidateGetOutKeysForInputs returns the PosValidateGetOutKeysForInputs field if non-nil, zero value otherwise.
+
+### GetPosValidateGetOutKeysForInputsOk
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateGetOutKeysForInputsOk() (*int32, bool)`
+
+GetPosValidateGetOutKeysForInputsOk returns a tuple with the PosValidateGetOutKeysForInputs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosValidateGetOutKeysForInputs
+
+`func (o *BlockProcessingPerformanceModel) SetPosValidateGetOutKeysForInputs(v int32)`
+
+SetPosValidateGetOutKeysForInputs sets PosValidateGetOutKeysForInputs field to given value.
+
+### HasPosValidateGetOutKeysForInputs
+
+`func (o *BlockProcessingPerformanceModel) HasPosValidateGetOutKeysForInputs() bool`
+
+HasPosValidateGetOutKeysForInputs returns a boolean if a field has been set.
+
+### GetPosValidateZvp
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateZvp() int32`
+
+GetPosValidateZvp returns the PosValidateZvp field if non-nil, zero value otherwise.
+
+### GetPosValidateZvpOk
+
+`func (o *BlockProcessingPerformanceModel) GetPosValidateZvpOk() (*int32, bool)`
+
+GetPosValidateZvpOk returns a tuple with the PosValidateZvp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosValidateZvp
+
+`func (o *BlockProcessingPerformanceModel) SetPosValidateZvp(v int32)`
+
+SetPosValidateZvp sets PosValidateZvp field to given value.
+
+### HasPosValidateZvp
+
+`func (o *BlockProcessingPerformanceModel) HasPosValidateZvp() bool`
+
+HasPosValidateZvp returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/BlockTemplateModel.md b/utils/sdk/client/go/docs/BlockTemplateModel.md
new file mode 100644
index 00000000..12175186
--- /dev/null
+++ b/utils/sdk/client/go/docs/BlockTemplateModel.md
@@ -0,0 +1,264 @@
+# BlockTemplateModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**BlocktemplateBlob** | Pointer to **string** | | [optional]
+**Difficulty** | Pointer to **string** | | [optional]
+**Height** | Pointer to **int32** | | [optional]
+**MinerTxTgc** | Pointer to [**TxGenerationContextModel**](TxGenerationContextModel.md) | | [optional]
+**BlockRewardWithoutFee** | Pointer to **int32** | | [optional]
+**BlockReward** | Pointer to **int32** | | [optional]
+**TxsFee** | Pointer to **int32** | | [optional]
+**PrevHash** | Pointer to **string** | | [optional]
+**Seed** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewBlockTemplateModel
+
+`func NewBlockTemplateModel() *BlockTemplateModel`
+
+NewBlockTemplateModel instantiates a new BlockTemplateModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewBlockTemplateModelWithDefaults
+
+`func NewBlockTemplateModelWithDefaults() *BlockTemplateModel`
+
+NewBlockTemplateModelWithDefaults instantiates a new BlockTemplateModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetBlocktemplateBlob
+
+`func (o *BlockTemplateModel) GetBlocktemplateBlob() string`
+
+GetBlocktemplateBlob returns the BlocktemplateBlob field if non-nil, zero value otherwise.
+
+### GetBlocktemplateBlobOk
+
+`func (o *BlockTemplateModel) GetBlocktemplateBlobOk() (*string, bool)`
+
+GetBlocktemplateBlobOk returns a tuple with the BlocktemplateBlob field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlocktemplateBlob
+
+`func (o *BlockTemplateModel) SetBlocktemplateBlob(v string)`
+
+SetBlocktemplateBlob sets BlocktemplateBlob field to given value.
+
+### HasBlocktemplateBlob
+
+`func (o *BlockTemplateModel) HasBlocktemplateBlob() bool`
+
+HasBlocktemplateBlob returns a boolean if a field has been set.
+
+### GetDifficulty
+
+`func (o *BlockTemplateModel) GetDifficulty() string`
+
+GetDifficulty returns the Difficulty field if non-nil, zero value otherwise.
+
+### GetDifficultyOk
+
+`func (o *BlockTemplateModel) GetDifficultyOk() (*string, bool)`
+
+GetDifficultyOk returns a tuple with the Difficulty field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDifficulty
+
+`func (o *BlockTemplateModel) SetDifficulty(v string)`
+
+SetDifficulty sets Difficulty field to given value.
+
+### HasDifficulty
+
+`func (o *BlockTemplateModel) HasDifficulty() bool`
+
+HasDifficulty returns a boolean if a field has been set.
+
+### GetHeight
+
+`func (o *BlockTemplateModel) GetHeight() int32`
+
+GetHeight returns the Height field if non-nil, zero value otherwise.
+
+### GetHeightOk
+
+`func (o *BlockTemplateModel) GetHeightOk() (*int32, bool)`
+
+GetHeightOk returns a tuple with the Height field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetHeight
+
+`func (o *BlockTemplateModel) SetHeight(v int32)`
+
+SetHeight sets Height field to given value.
+
+### HasHeight
+
+`func (o *BlockTemplateModel) HasHeight() bool`
+
+HasHeight returns a boolean if a field has been set.
+
+### GetMinerTxTgc
+
+`func (o *BlockTemplateModel) GetMinerTxTgc() TxGenerationContextModel`
+
+GetMinerTxTgc returns the MinerTxTgc field if non-nil, zero value otherwise.
+
+### GetMinerTxTgcOk
+
+`func (o *BlockTemplateModel) GetMinerTxTgcOk() (*TxGenerationContextModel, bool)`
+
+GetMinerTxTgcOk returns a tuple with the MinerTxTgc field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinerTxTgc
+
+`func (o *BlockTemplateModel) SetMinerTxTgc(v TxGenerationContextModel)`
+
+SetMinerTxTgc sets MinerTxTgc field to given value.
+
+### HasMinerTxTgc
+
+`func (o *BlockTemplateModel) HasMinerTxTgc() bool`
+
+HasMinerTxTgc returns a boolean if a field has been set.
+
+### GetBlockRewardWithoutFee
+
+`func (o *BlockTemplateModel) GetBlockRewardWithoutFee() int32`
+
+GetBlockRewardWithoutFee returns the BlockRewardWithoutFee field if non-nil, zero value otherwise.
+
+### GetBlockRewardWithoutFeeOk
+
+`func (o *BlockTemplateModel) GetBlockRewardWithoutFeeOk() (*int32, bool)`
+
+GetBlockRewardWithoutFeeOk returns a tuple with the BlockRewardWithoutFee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockRewardWithoutFee
+
+`func (o *BlockTemplateModel) SetBlockRewardWithoutFee(v int32)`
+
+SetBlockRewardWithoutFee sets BlockRewardWithoutFee field to given value.
+
+### HasBlockRewardWithoutFee
+
+`func (o *BlockTemplateModel) HasBlockRewardWithoutFee() bool`
+
+HasBlockRewardWithoutFee returns a boolean if a field has been set.
+
+### GetBlockReward
+
+`func (o *BlockTemplateModel) GetBlockReward() int32`
+
+GetBlockReward returns the BlockReward field if non-nil, zero value otherwise.
+
+### GetBlockRewardOk
+
+`func (o *BlockTemplateModel) GetBlockRewardOk() (*int32, bool)`
+
+GetBlockRewardOk returns a tuple with the BlockReward field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockReward
+
+`func (o *BlockTemplateModel) SetBlockReward(v int32)`
+
+SetBlockReward sets BlockReward field to given value.
+
+### HasBlockReward
+
+`func (o *BlockTemplateModel) HasBlockReward() bool`
+
+HasBlockReward returns a boolean if a field has been set.
+
+### GetTxsFee
+
+`func (o *BlockTemplateModel) GetTxsFee() int32`
+
+GetTxsFee returns the TxsFee field if non-nil, zero value otherwise.
+
+### GetTxsFeeOk
+
+`func (o *BlockTemplateModel) GetTxsFeeOk() (*int32, bool)`
+
+GetTxsFeeOk returns a tuple with the TxsFee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxsFee
+
+`func (o *BlockTemplateModel) SetTxsFee(v int32)`
+
+SetTxsFee sets TxsFee field to given value.
+
+### HasTxsFee
+
+`func (o *BlockTemplateModel) HasTxsFee() bool`
+
+HasTxsFee returns a boolean if a field has been set.
+
+### GetPrevHash
+
+`func (o *BlockTemplateModel) GetPrevHash() string`
+
+GetPrevHash returns the PrevHash field if non-nil, zero value otherwise.
+
+### GetPrevHashOk
+
+`func (o *BlockTemplateModel) GetPrevHashOk() (*string, bool)`
+
+GetPrevHashOk returns a tuple with the PrevHash field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPrevHash
+
+`func (o *BlockTemplateModel) SetPrevHash(v string)`
+
+SetPrevHash sets PrevHash field to given value.
+
+### HasPrevHash
+
+`func (o *BlockTemplateModel) HasPrevHash() bool`
+
+HasPrevHash returns a boolean if a field has been set.
+
+### GetSeed
+
+`func (o *BlockTemplateModel) GetSeed() string`
+
+GetSeed returns the Seed field if non-nil, zero value otherwise.
+
+### GetSeedOk
+
+`func (o *BlockTemplateModel) GetSeedOk() (*string, bool)`
+
+GetSeedOk returns a tuple with the Seed field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSeed
+
+`func (o *BlockTemplateModel) SetSeed(v string)`
+
+SetSeed sets Seed field to given value.
+
+### HasSeed
+
+`func (o *BlockTemplateModel) HasSeed() bool`
+
+HasSeed returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/BlockTemplateRequestModel.md b/utils/sdk/client/go/docs/BlockTemplateRequestModel.md
new file mode 100644
index 00000000..6eef8f41
--- /dev/null
+++ b/utils/sdk/client/go/docs/BlockTemplateRequestModel.md
@@ -0,0 +1,212 @@
+# BlockTemplateRequestModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**MinerAddress** | Pointer to **string** | | [optional]
+**StakeholderAddress** | Pointer to **string** | | [optional]
+**ExNonce** | Pointer to **string** | | [optional]
+**PosBlock** | Pointer to **bool** | | [optional]
+**IgnorePowTsCheck** | Pointer to **bool** | | [optional]
+**Pe** | Pointer to [**PosEntryModel**](PosEntryModel.md) | | [optional]
+**ExplicitTxs** | Pointer to **[]string** | | [optional]
+
+## Methods
+
+### NewBlockTemplateRequestModel
+
+`func NewBlockTemplateRequestModel() *BlockTemplateRequestModel`
+
+NewBlockTemplateRequestModel instantiates a new BlockTemplateRequestModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewBlockTemplateRequestModelWithDefaults
+
+`func NewBlockTemplateRequestModelWithDefaults() *BlockTemplateRequestModel`
+
+NewBlockTemplateRequestModelWithDefaults instantiates a new BlockTemplateRequestModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetMinerAddress
+
+`func (o *BlockTemplateRequestModel) GetMinerAddress() string`
+
+GetMinerAddress returns the MinerAddress field if non-nil, zero value otherwise.
+
+### GetMinerAddressOk
+
+`func (o *BlockTemplateRequestModel) GetMinerAddressOk() (*string, bool)`
+
+GetMinerAddressOk returns a tuple with the MinerAddress field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinerAddress
+
+`func (o *BlockTemplateRequestModel) SetMinerAddress(v string)`
+
+SetMinerAddress sets MinerAddress field to given value.
+
+### HasMinerAddress
+
+`func (o *BlockTemplateRequestModel) HasMinerAddress() bool`
+
+HasMinerAddress returns a boolean if a field has been set.
+
+### GetStakeholderAddress
+
+`func (o *BlockTemplateRequestModel) GetStakeholderAddress() string`
+
+GetStakeholderAddress returns the StakeholderAddress field if non-nil, zero value otherwise.
+
+### GetStakeholderAddressOk
+
+`func (o *BlockTemplateRequestModel) GetStakeholderAddressOk() (*string, bool)`
+
+GetStakeholderAddressOk returns a tuple with the StakeholderAddress field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetStakeholderAddress
+
+`func (o *BlockTemplateRequestModel) SetStakeholderAddress(v string)`
+
+SetStakeholderAddress sets StakeholderAddress field to given value.
+
+### HasStakeholderAddress
+
+`func (o *BlockTemplateRequestModel) HasStakeholderAddress() bool`
+
+HasStakeholderAddress returns a boolean if a field has been set.
+
+### GetExNonce
+
+`func (o *BlockTemplateRequestModel) GetExNonce() string`
+
+GetExNonce returns the ExNonce field if non-nil, zero value otherwise.
+
+### GetExNonceOk
+
+`func (o *BlockTemplateRequestModel) GetExNonceOk() (*string, bool)`
+
+GetExNonceOk returns a tuple with the ExNonce field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetExNonce
+
+`func (o *BlockTemplateRequestModel) SetExNonce(v string)`
+
+SetExNonce sets ExNonce field to given value.
+
+### HasExNonce
+
+`func (o *BlockTemplateRequestModel) HasExNonce() bool`
+
+HasExNonce returns a boolean if a field has been set.
+
+### GetPosBlock
+
+`func (o *BlockTemplateRequestModel) GetPosBlock() bool`
+
+GetPosBlock returns the PosBlock field if non-nil, zero value otherwise.
+
+### GetPosBlockOk
+
+`func (o *BlockTemplateRequestModel) GetPosBlockOk() (*bool, bool)`
+
+GetPosBlockOk returns a tuple with the PosBlock field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosBlock
+
+`func (o *BlockTemplateRequestModel) SetPosBlock(v bool)`
+
+SetPosBlock sets PosBlock field to given value.
+
+### HasPosBlock
+
+`func (o *BlockTemplateRequestModel) HasPosBlock() bool`
+
+HasPosBlock returns a boolean if a field has been set.
+
+### GetIgnorePowTsCheck
+
+`func (o *BlockTemplateRequestModel) GetIgnorePowTsCheck() bool`
+
+GetIgnorePowTsCheck returns the IgnorePowTsCheck field if non-nil, zero value otherwise.
+
+### GetIgnorePowTsCheckOk
+
+`func (o *BlockTemplateRequestModel) GetIgnorePowTsCheckOk() (*bool, bool)`
+
+GetIgnorePowTsCheckOk returns a tuple with the IgnorePowTsCheck field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIgnorePowTsCheck
+
+`func (o *BlockTemplateRequestModel) SetIgnorePowTsCheck(v bool)`
+
+SetIgnorePowTsCheck sets IgnorePowTsCheck field to given value.
+
+### HasIgnorePowTsCheck
+
+`func (o *BlockTemplateRequestModel) HasIgnorePowTsCheck() bool`
+
+HasIgnorePowTsCheck returns a boolean if a field has been set.
+
+### GetPe
+
+`func (o *BlockTemplateRequestModel) GetPe() PosEntryModel`
+
+GetPe returns the Pe field if non-nil, zero value otherwise.
+
+### GetPeOk
+
+`func (o *BlockTemplateRequestModel) GetPeOk() (*PosEntryModel, bool)`
+
+GetPeOk returns a tuple with the Pe field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPe
+
+`func (o *BlockTemplateRequestModel) SetPe(v PosEntryModel)`
+
+SetPe sets Pe field to given value.
+
+### HasPe
+
+`func (o *BlockTemplateRequestModel) HasPe() bool`
+
+HasPe returns a boolean if a field has been set.
+
+### GetExplicitTxs
+
+`func (o *BlockTemplateRequestModel) GetExplicitTxs() []string`
+
+GetExplicitTxs returns the ExplicitTxs field if non-nil, zero value otherwise.
+
+### GetExplicitTxsOk
+
+`func (o *BlockTemplateRequestModel) GetExplicitTxsOk() (*[]string, bool)`
+
+GetExplicitTxsOk returns a tuple with the ExplicitTxs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetExplicitTxs
+
+`func (o *BlockTemplateRequestModel) SetExplicitTxs(v []string)`
+
+SetExplicitTxs sets ExplicitTxs field to given value.
+
+### HasExplicitTxs
+
+`func (o *BlockTemplateRequestModel) HasExplicitTxs() bool`
+
+HasExplicitTxs returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/DbStatInfoModel.md b/utils/sdk/client/go/docs/DbStatInfoModel.md
new file mode 100644
index 00000000..ebdf6165
--- /dev/null
+++ b/utils/sdk/client/go/docs/DbStatInfoModel.md
@@ -0,0 +1,108 @@
+# DbStatInfoModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**TxCount** | Pointer to **int32** | | [optional]
+**WriteTxCount** | Pointer to **int32** | | [optional]
+**MapSize** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewDbStatInfoModel
+
+`func NewDbStatInfoModel() *DbStatInfoModel`
+
+NewDbStatInfoModel instantiates a new DbStatInfoModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewDbStatInfoModelWithDefaults
+
+`func NewDbStatInfoModelWithDefaults() *DbStatInfoModel`
+
+NewDbStatInfoModelWithDefaults instantiates a new DbStatInfoModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetTxCount
+
+`func (o *DbStatInfoModel) GetTxCount() int32`
+
+GetTxCount returns the TxCount field if non-nil, zero value otherwise.
+
+### GetTxCountOk
+
+`func (o *DbStatInfoModel) GetTxCountOk() (*int32, bool)`
+
+GetTxCountOk returns a tuple with the TxCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCount
+
+`func (o *DbStatInfoModel) SetTxCount(v int32)`
+
+SetTxCount sets TxCount field to given value.
+
+### HasTxCount
+
+`func (o *DbStatInfoModel) HasTxCount() bool`
+
+HasTxCount returns a boolean if a field has been set.
+
+### GetWriteTxCount
+
+`func (o *DbStatInfoModel) GetWriteTxCount() int32`
+
+GetWriteTxCount returns the WriteTxCount field if non-nil, zero value otherwise.
+
+### GetWriteTxCountOk
+
+`func (o *DbStatInfoModel) GetWriteTxCountOk() (*int32, bool)`
+
+GetWriteTxCountOk returns a tuple with the WriteTxCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetWriteTxCount
+
+`func (o *DbStatInfoModel) SetWriteTxCount(v int32)`
+
+SetWriteTxCount sets WriteTxCount field to given value.
+
+### HasWriteTxCount
+
+`func (o *DbStatInfoModel) HasWriteTxCount() bool`
+
+HasWriteTxCount returns a boolean if a field has been set.
+
+### GetMapSize
+
+`func (o *DbStatInfoModel) GetMapSize() int32`
+
+GetMapSize returns the MapSize field if non-nil, zero value otherwise.
+
+### GetMapSizeOk
+
+`func (o *DbStatInfoModel) GetMapSizeOk() (*int32, bool)`
+
+GetMapSizeOk returns a tuple with the MapSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMapSize
+
+`func (o *DbStatInfoModel) SetMapSize(v int32)`
+
+SetMapSize sets MapSize field to given value.
+
+### HasMapSize
+
+`func (o *DbStatInfoModel) HasMapSize() bool`
+
+HasMapSize returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/HeightModel.md b/utils/sdk/client/go/docs/HeightModel.md
new file mode 100644
index 00000000..326061e5
--- /dev/null
+++ b/utils/sdk/client/go/docs/HeightModel.md
@@ -0,0 +1,56 @@
+# HeightModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Height** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewHeightModel
+
+`func NewHeightModel() *HeightModel`
+
+NewHeightModel instantiates a new HeightModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewHeightModelWithDefaults
+
+`func NewHeightModelWithDefaults() *HeightModel`
+
+NewHeightModelWithDefaults instantiates a new HeightModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetHeight
+
+`func (o *HeightModel) GetHeight() int32`
+
+GetHeight returns the Height field if non-nil, zero value otherwise.
+
+### GetHeightOk
+
+`func (o *HeightModel) GetHeightOk() (*int32, bool)`
+
+GetHeightOk returns a tuple with the Height field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetHeight
+
+`func (o *HeightModel) SetHeight(v int32)`
+
+SetHeight sets Height field to given value.
+
+### HasHeight
+
+`func (o *HeightModel) HasHeight() bool`
+
+HasHeight returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/InfoAPI.md b/utils/sdk/client/go/docs/InfoAPI.md
new file mode 100644
index 00000000..5a86f33a
--- /dev/null
+++ b/utils/sdk/client/go/docs/InfoAPI.md
@@ -0,0 +1,135 @@
+# \InfoAPI
+
+All URIs are relative to *http://127.0.0.1:36943*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**GetInfo**](InfoAPI.md#GetInfo) | **Get** /info | Get detailed information about the blockchain and daemon state
+[**Version**](InfoAPI.md#Version) | **Get** /info/version | Get API version
+
+
+
+## GetInfo
+
+> InfoModel GetInfo(ctx).Flags(flags).Execute()
+
+Get detailed information about the blockchain and daemon state
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+ flags := "flags_example" // string | Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. (optional)
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.InfoAPI.GetInfo(context.Background()).Flags(flags).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `InfoAPI.GetInfo``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `GetInfo`: InfoModel
+ fmt.Fprintf(os.Stdout, "Response from `InfoAPI.GetInfo`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiGetInfoRequest struct via the builder pattern
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **flags** | **string** | Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median. |
+
+### Return type
+
+[**InfoModel**](InfoModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
+
+## Version
+
+> VersionModel Version(ctx).Execute()
+
+Get API version
+
+
+
+### Example
+
+```go
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func main() {
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+ resp, r, err := apiClient.InfoAPI.Version(context.Background()).Execute()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Error when calling `InfoAPI.Version``: %v\n", err)
+ fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
+ }
+ // response from `Version`: VersionModel
+ fmt.Fprintf(os.Stdout, "Response from `InfoAPI.Version`: %v\n", resp)
+}
+```
+
+### Path Parameters
+
+This endpoint does not need any parameter.
+
+### Other Parameters
+
+Other parameters are passed through a pointer to a apiVersionRequest struct via the builder pattern
+
+
+### Return type
+
+[**VersionModel**](VersionModel.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints)
+[[Back to Model list]](../README.md#documentation-for-models)
+[[Back to README]](../README.md)
+
diff --git a/utils/sdk/client/go/docs/InfoModel.md b/utils/sdk/client/go/docs/InfoModel.md
new file mode 100644
index 00000000..e7628efd
--- /dev/null
+++ b/utils/sdk/client/go/docs/InfoModel.md
@@ -0,0 +1,1226 @@
+# InfoModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Height** | Pointer to **int32** | | [optional]
+**TxCount** | Pointer to **int32** | | [optional]
+**TxPoolSize** | Pointer to **int32** | | [optional]
+**AltBlocksCount** | Pointer to **int32** | | [optional]
+**OutgoingConnectionsCount** | Pointer to **int32** | | [optional]
+**IncomingConnectionsCount** | Pointer to **int32** | | [optional]
+**SynchronizedConnectionsCount** | Pointer to **int32** | | [optional]
+**WhitePeerlistSize** | Pointer to **int32** | | [optional]
+**GreyPeerlistSize** | Pointer to **int32** | | [optional]
+**CurrentBlocksMedian** | Pointer to **int32** | | [optional]
+**AliasCount** | Pointer to **int32** | | [optional]
+**CurrentMaxAllowedBlockSize** | Pointer to **int32** | | [optional]
+**DaemonNetworkState** | Pointer to **string** | | [optional]
+**SynchronizationStartHeight** | Pointer to **int32** | | [optional]
+**MaxNetSeenHeight** | Pointer to **int32** | | [optional]
+**Mi** | Pointer to [**MaintainersInfoModel**](MaintainersInfoModel.md) | | [optional]
+**PosAllowed** | Pointer to **bool** | | [optional]
+**PosDifficulty** | Pointer to **string** | | [optional]
+**PowDifficulty** | Pointer to **int32** | | [optional]
+**DefaultFee** | Pointer to **int32** | | [optional]
+**MinimumFee** | Pointer to **int32** | | [optional]
+**IsHardforkActive** | Pointer to **[]bool** | | [optional]
+**NetTimeDeltaMedian** | Pointer to **int64** | | [optional]
+**CurrentNetworkHashrate50** | Pointer to **int32** | | [optional]
+**CurrentNetworkHashrate350** | Pointer to **int32** | | [optional]
+**SecondsFor10Blocks** | Pointer to **int32** | | [optional]
+**SecondsFor30Blocks** | Pointer to **int32** | | [optional]
+**TransactionsCntPerDay** | Pointer to **[]int32** | | [optional]
+**TransactionsVolumePerDay** | Pointer to **[]int32** | | [optional]
+**LastPosTimestamp** | Pointer to **int32** | | [optional]
+**LastPowTimestamp** | Pointer to **int32** | | [optional]
+**TotalCoins** | Pointer to **string** | | [optional]
+**LastBlockSize** | Pointer to **int32** | | [optional]
+**TxCountInLastBlock** | Pointer to **int32** | | [optional]
+**PosSequenceFactor** | Pointer to **float64** | | [optional]
+**PowSequenceFactor** | Pointer to **float64** | | [optional]
+**BlockReward** | Pointer to **int32** | | [optional]
+**LastBlockTotalReward** | Pointer to **int32** | | [optional]
+**PosDiffTotalCoinsRate** | Pointer to **int32** | | [optional]
+**LastBlockTimestamp** | Pointer to **int32** | | [optional]
+**LastBlockHash** | Pointer to **string** | | [optional]
+**PosBlockTsShiftVsActual** | Pointer to **int64** | | [optional]
+**OutsStat** | Pointer to **map[string]int32** | | [optional]
+**PerformanceData** | Pointer to [**PerformanceModel**](PerformanceModel.md) | | [optional]
+**OffersCount** | Pointer to **int32** | | [optional]
+**ExpirationMedianTimestamp** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewInfoModel
+
+`func NewInfoModel() *InfoModel`
+
+NewInfoModel instantiates a new InfoModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewInfoModelWithDefaults
+
+`func NewInfoModelWithDefaults() *InfoModel`
+
+NewInfoModelWithDefaults instantiates a new InfoModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetHeight
+
+`func (o *InfoModel) GetHeight() int32`
+
+GetHeight returns the Height field if non-nil, zero value otherwise.
+
+### GetHeightOk
+
+`func (o *InfoModel) GetHeightOk() (*int32, bool)`
+
+GetHeightOk returns a tuple with the Height field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetHeight
+
+`func (o *InfoModel) SetHeight(v int32)`
+
+SetHeight sets Height field to given value.
+
+### HasHeight
+
+`func (o *InfoModel) HasHeight() bool`
+
+HasHeight returns a boolean if a field has been set.
+
+### GetTxCount
+
+`func (o *InfoModel) GetTxCount() int32`
+
+GetTxCount returns the TxCount field if non-nil, zero value otherwise.
+
+### GetTxCountOk
+
+`func (o *InfoModel) GetTxCountOk() (*int32, bool)`
+
+GetTxCountOk returns a tuple with the TxCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCount
+
+`func (o *InfoModel) SetTxCount(v int32)`
+
+SetTxCount sets TxCount field to given value.
+
+### HasTxCount
+
+`func (o *InfoModel) HasTxCount() bool`
+
+HasTxCount returns a boolean if a field has been set.
+
+### GetTxPoolSize
+
+`func (o *InfoModel) GetTxPoolSize() int32`
+
+GetTxPoolSize returns the TxPoolSize field if non-nil, zero value otherwise.
+
+### GetTxPoolSizeOk
+
+`func (o *InfoModel) GetTxPoolSizeOk() (*int32, bool)`
+
+GetTxPoolSizeOk returns a tuple with the TxPoolSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPoolSize
+
+`func (o *InfoModel) SetTxPoolSize(v int32)`
+
+SetTxPoolSize sets TxPoolSize field to given value.
+
+### HasTxPoolSize
+
+`func (o *InfoModel) HasTxPoolSize() bool`
+
+HasTxPoolSize returns a boolean if a field has been set.
+
+### GetAltBlocksCount
+
+`func (o *InfoModel) GetAltBlocksCount() int32`
+
+GetAltBlocksCount returns the AltBlocksCount field if non-nil, zero value otherwise.
+
+### GetAltBlocksCountOk
+
+`func (o *InfoModel) GetAltBlocksCountOk() (*int32, bool)`
+
+GetAltBlocksCountOk returns a tuple with the AltBlocksCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAltBlocksCount
+
+`func (o *InfoModel) SetAltBlocksCount(v int32)`
+
+SetAltBlocksCount sets AltBlocksCount field to given value.
+
+### HasAltBlocksCount
+
+`func (o *InfoModel) HasAltBlocksCount() bool`
+
+HasAltBlocksCount returns a boolean if a field has been set.
+
+### GetOutgoingConnectionsCount
+
+`func (o *InfoModel) GetOutgoingConnectionsCount() int32`
+
+GetOutgoingConnectionsCount returns the OutgoingConnectionsCount field if non-nil, zero value otherwise.
+
+### GetOutgoingConnectionsCountOk
+
+`func (o *InfoModel) GetOutgoingConnectionsCountOk() (*int32, bool)`
+
+GetOutgoingConnectionsCountOk returns a tuple with the OutgoingConnectionsCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetOutgoingConnectionsCount
+
+`func (o *InfoModel) SetOutgoingConnectionsCount(v int32)`
+
+SetOutgoingConnectionsCount sets OutgoingConnectionsCount field to given value.
+
+### HasOutgoingConnectionsCount
+
+`func (o *InfoModel) HasOutgoingConnectionsCount() bool`
+
+HasOutgoingConnectionsCount returns a boolean if a field has been set.
+
+### GetIncomingConnectionsCount
+
+`func (o *InfoModel) GetIncomingConnectionsCount() int32`
+
+GetIncomingConnectionsCount returns the IncomingConnectionsCount field if non-nil, zero value otherwise.
+
+### GetIncomingConnectionsCountOk
+
+`func (o *InfoModel) GetIncomingConnectionsCountOk() (*int32, bool)`
+
+GetIncomingConnectionsCountOk returns a tuple with the IncomingConnectionsCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIncomingConnectionsCount
+
+`func (o *InfoModel) SetIncomingConnectionsCount(v int32)`
+
+SetIncomingConnectionsCount sets IncomingConnectionsCount field to given value.
+
+### HasIncomingConnectionsCount
+
+`func (o *InfoModel) HasIncomingConnectionsCount() bool`
+
+HasIncomingConnectionsCount returns a boolean if a field has been set.
+
+### GetSynchronizedConnectionsCount
+
+`func (o *InfoModel) GetSynchronizedConnectionsCount() int32`
+
+GetSynchronizedConnectionsCount returns the SynchronizedConnectionsCount field if non-nil, zero value otherwise.
+
+### GetSynchronizedConnectionsCountOk
+
+`func (o *InfoModel) GetSynchronizedConnectionsCountOk() (*int32, bool)`
+
+GetSynchronizedConnectionsCountOk returns a tuple with the SynchronizedConnectionsCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSynchronizedConnectionsCount
+
+`func (o *InfoModel) SetSynchronizedConnectionsCount(v int32)`
+
+SetSynchronizedConnectionsCount sets SynchronizedConnectionsCount field to given value.
+
+### HasSynchronizedConnectionsCount
+
+`func (o *InfoModel) HasSynchronizedConnectionsCount() bool`
+
+HasSynchronizedConnectionsCount returns a boolean if a field has been set.
+
+### GetWhitePeerlistSize
+
+`func (o *InfoModel) GetWhitePeerlistSize() int32`
+
+GetWhitePeerlistSize returns the WhitePeerlistSize field if non-nil, zero value otherwise.
+
+### GetWhitePeerlistSizeOk
+
+`func (o *InfoModel) GetWhitePeerlistSizeOk() (*int32, bool)`
+
+GetWhitePeerlistSizeOk returns a tuple with the WhitePeerlistSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetWhitePeerlistSize
+
+`func (o *InfoModel) SetWhitePeerlistSize(v int32)`
+
+SetWhitePeerlistSize sets WhitePeerlistSize field to given value.
+
+### HasWhitePeerlistSize
+
+`func (o *InfoModel) HasWhitePeerlistSize() bool`
+
+HasWhitePeerlistSize returns a boolean if a field has been set.
+
+### GetGreyPeerlistSize
+
+`func (o *InfoModel) GetGreyPeerlistSize() int32`
+
+GetGreyPeerlistSize returns the GreyPeerlistSize field if non-nil, zero value otherwise.
+
+### GetGreyPeerlistSizeOk
+
+`func (o *InfoModel) GetGreyPeerlistSizeOk() (*int32, bool)`
+
+GetGreyPeerlistSizeOk returns a tuple with the GreyPeerlistSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetGreyPeerlistSize
+
+`func (o *InfoModel) SetGreyPeerlistSize(v int32)`
+
+SetGreyPeerlistSize sets GreyPeerlistSize field to given value.
+
+### HasGreyPeerlistSize
+
+`func (o *InfoModel) HasGreyPeerlistSize() bool`
+
+HasGreyPeerlistSize returns a boolean if a field has been set.
+
+### GetCurrentBlocksMedian
+
+`func (o *InfoModel) GetCurrentBlocksMedian() int32`
+
+GetCurrentBlocksMedian returns the CurrentBlocksMedian field if non-nil, zero value otherwise.
+
+### GetCurrentBlocksMedianOk
+
+`func (o *InfoModel) GetCurrentBlocksMedianOk() (*int32, bool)`
+
+GetCurrentBlocksMedianOk returns a tuple with the CurrentBlocksMedian field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCurrentBlocksMedian
+
+`func (o *InfoModel) SetCurrentBlocksMedian(v int32)`
+
+SetCurrentBlocksMedian sets CurrentBlocksMedian field to given value.
+
+### HasCurrentBlocksMedian
+
+`func (o *InfoModel) HasCurrentBlocksMedian() bool`
+
+HasCurrentBlocksMedian returns a boolean if a field has been set.
+
+### GetAliasCount
+
+`func (o *InfoModel) GetAliasCount() int32`
+
+GetAliasCount returns the AliasCount field if non-nil, zero value otherwise.
+
+### GetAliasCountOk
+
+`func (o *InfoModel) GetAliasCountOk() (*int32, bool)`
+
+GetAliasCountOk returns a tuple with the AliasCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAliasCount
+
+`func (o *InfoModel) SetAliasCount(v int32)`
+
+SetAliasCount sets AliasCount field to given value.
+
+### HasAliasCount
+
+`func (o *InfoModel) HasAliasCount() bool`
+
+HasAliasCount returns a boolean if a field has been set.
+
+### GetCurrentMaxAllowedBlockSize
+
+`func (o *InfoModel) GetCurrentMaxAllowedBlockSize() int32`
+
+GetCurrentMaxAllowedBlockSize returns the CurrentMaxAllowedBlockSize field if non-nil, zero value otherwise.
+
+### GetCurrentMaxAllowedBlockSizeOk
+
+`func (o *InfoModel) GetCurrentMaxAllowedBlockSizeOk() (*int32, bool)`
+
+GetCurrentMaxAllowedBlockSizeOk returns a tuple with the CurrentMaxAllowedBlockSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCurrentMaxAllowedBlockSize
+
+`func (o *InfoModel) SetCurrentMaxAllowedBlockSize(v int32)`
+
+SetCurrentMaxAllowedBlockSize sets CurrentMaxAllowedBlockSize field to given value.
+
+### HasCurrentMaxAllowedBlockSize
+
+`func (o *InfoModel) HasCurrentMaxAllowedBlockSize() bool`
+
+HasCurrentMaxAllowedBlockSize returns a boolean if a field has been set.
+
+### GetDaemonNetworkState
+
+`func (o *InfoModel) GetDaemonNetworkState() string`
+
+GetDaemonNetworkState returns the DaemonNetworkState field if non-nil, zero value otherwise.
+
+### GetDaemonNetworkStateOk
+
+`func (o *InfoModel) GetDaemonNetworkStateOk() (*string, bool)`
+
+GetDaemonNetworkStateOk returns a tuple with the DaemonNetworkState field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDaemonNetworkState
+
+`func (o *InfoModel) SetDaemonNetworkState(v string)`
+
+SetDaemonNetworkState sets DaemonNetworkState field to given value.
+
+### HasDaemonNetworkState
+
+`func (o *InfoModel) HasDaemonNetworkState() bool`
+
+HasDaemonNetworkState returns a boolean if a field has been set.
+
+### GetSynchronizationStartHeight
+
+`func (o *InfoModel) GetSynchronizationStartHeight() int32`
+
+GetSynchronizationStartHeight returns the SynchronizationStartHeight field if non-nil, zero value otherwise.
+
+### GetSynchronizationStartHeightOk
+
+`func (o *InfoModel) GetSynchronizationStartHeightOk() (*int32, bool)`
+
+GetSynchronizationStartHeightOk returns a tuple with the SynchronizationStartHeight field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSynchronizationStartHeight
+
+`func (o *InfoModel) SetSynchronizationStartHeight(v int32)`
+
+SetSynchronizationStartHeight sets SynchronizationStartHeight field to given value.
+
+### HasSynchronizationStartHeight
+
+`func (o *InfoModel) HasSynchronizationStartHeight() bool`
+
+HasSynchronizationStartHeight returns a boolean if a field has been set.
+
+### GetMaxNetSeenHeight
+
+`func (o *InfoModel) GetMaxNetSeenHeight() int32`
+
+GetMaxNetSeenHeight returns the MaxNetSeenHeight field if non-nil, zero value otherwise.
+
+### GetMaxNetSeenHeightOk
+
+`func (o *InfoModel) GetMaxNetSeenHeightOk() (*int32, bool)`
+
+GetMaxNetSeenHeightOk returns a tuple with the MaxNetSeenHeight field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMaxNetSeenHeight
+
+`func (o *InfoModel) SetMaxNetSeenHeight(v int32)`
+
+SetMaxNetSeenHeight sets MaxNetSeenHeight field to given value.
+
+### HasMaxNetSeenHeight
+
+`func (o *InfoModel) HasMaxNetSeenHeight() bool`
+
+HasMaxNetSeenHeight returns a boolean if a field has been set.
+
+### GetMi
+
+`func (o *InfoModel) GetMi() MaintainersInfoModel`
+
+GetMi returns the Mi field if non-nil, zero value otherwise.
+
+### GetMiOk
+
+`func (o *InfoModel) GetMiOk() (*MaintainersInfoModel, bool)`
+
+GetMiOk returns a tuple with the Mi field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMi
+
+`func (o *InfoModel) SetMi(v MaintainersInfoModel)`
+
+SetMi sets Mi field to given value.
+
+### HasMi
+
+`func (o *InfoModel) HasMi() bool`
+
+HasMi returns a boolean if a field has been set.
+
+### GetPosAllowed
+
+`func (o *InfoModel) GetPosAllowed() bool`
+
+GetPosAllowed returns the PosAllowed field if non-nil, zero value otherwise.
+
+### GetPosAllowedOk
+
+`func (o *InfoModel) GetPosAllowedOk() (*bool, bool)`
+
+GetPosAllowedOk returns a tuple with the PosAllowed field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosAllowed
+
+`func (o *InfoModel) SetPosAllowed(v bool)`
+
+SetPosAllowed sets PosAllowed field to given value.
+
+### HasPosAllowed
+
+`func (o *InfoModel) HasPosAllowed() bool`
+
+HasPosAllowed returns a boolean if a field has been set.
+
+### GetPosDifficulty
+
+`func (o *InfoModel) GetPosDifficulty() string`
+
+GetPosDifficulty returns the PosDifficulty field if non-nil, zero value otherwise.
+
+### GetPosDifficultyOk
+
+`func (o *InfoModel) GetPosDifficultyOk() (*string, bool)`
+
+GetPosDifficultyOk returns a tuple with the PosDifficulty field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosDifficulty
+
+`func (o *InfoModel) SetPosDifficulty(v string)`
+
+SetPosDifficulty sets PosDifficulty field to given value.
+
+### HasPosDifficulty
+
+`func (o *InfoModel) HasPosDifficulty() bool`
+
+HasPosDifficulty returns a boolean if a field has been set.
+
+### GetPowDifficulty
+
+`func (o *InfoModel) GetPowDifficulty() int32`
+
+GetPowDifficulty returns the PowDifficulty field if non-nil, zero value otherwise.
+
+### GetPowDifficultyOk
+
+`func (o *InfoModel) GetPowDifficultyOk() (*int32, bool)`
+
+GetPowDifficultyOk returns a tuple with the PowDifficulty field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPowDifficulty
+
+`func (o *InfoModel) SetPowDifficulty(v int32)`
+
+SetPowDifficulty sets PowDifficulty field to given value.
+
+### HasPowDifficulty
+
+`func (o *InfoModel) HasPowDifficulty() bool`
+
+HasPowDifficulty returns a boolean if a field has been set.
+
+### GetDefaultFee
+
+`func (o *InfoModel) GetDefaultFee() int32`
+
+GetDefaultFee returns the DefaultFee field if non-nil, zero value otherwise.
+
+### GetDefaultFeeOk
+
+`func (o *InfoModel) GetDefaultFeeOk() (*int32, bool)`
+
+GetDefaultFeeOk returns a tuple with the DefaultFee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDefaultFee
+
+`func (o *InfoModel) SetDefaultFee(v int32)`
+
+SetDefaultFee sets DefaultFee field to given value.
+
+### HasDefaultFee
+
+`func (o *InfoModel) HasDefaultFee() bool`
+
+HasDefaultFee returns a boolean if a field has been set.
+
+### GetMinimumFee
+
+`func (o *InfoModel) GetMinimumFee() int32`
+
+GetMinimumFee returns the MinimumFee field if non-nil, zero value otherwise.
+
+### GetMinimumFeeOk
+
+`func (o *InfoModel) GetMinimumFeeOk() (*int32, bool)`
+
+GetMinimumFeeOk returns a tuple with the MinimumFee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinimumFee
+
+`func (o *InfoModel) SetMinimumFee(v int32)`
+
+SetMinimumFee sets MinimumFee field to given value.
+
+### HasMinimumFee
+
+`func (o *InfoModel) HasMinimumFee() bool`
+
+HasMinimumFee returns a boolean if a field has been set.
+
+### GetIsHardforkActive
+
+`func (o *InfoModel) GetIsHardforkActive() []bool`
+
+GetIsHardforkActive returns the IsHardforkActive field if non-nil, zero value otherwise.
+
+### GetIsHardforkActiveOk
+
+`func (o *InfoModel) GetIsHardforkActiveOk() (*[]bool, bool)`
+
+GetIsHardforkActiveOk returns a tuple with the IsHardforkActive field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIsHardforkActive
+
+`func (o *InfoModel) SetIsHardforkActive(v []bool)`
+
+SetIsHardforkActive sets IsHardforkActive field to given value.
+
+### HasIsHardforkActive
+
+`func (o *InfoModel) HasIsHardforkActive() bool`
+
+HasIsHardforkActive returns a boolean if a field has been set.
+
+### GetNetTimeDeltaMedian
+
+`func (o *InfoModel) GetNetTimeDeltaMedian() int64`
+
+GetNetTimeDeltaMedian returns the NetTimeDeltaMedian field if non-nil, zero value otherwise.
+
+### GetNetTimeDeltaMedianOk
+
+`func (o *InfoModel) GetNetTimeDeltaMedianOk() (*int64, bool)`
+
+GetNetTimeDeltaMedianOk returns a tuple with the NetTimeDeltaMedian field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetNetTimeDeltaMedian
+
+`func (o *InfoModel) SetNetTimeDeltaMedian(v int64)`
+
+SetNetTimeDeltaMedian sets NetTimeDeltaMedian field to given value.
+
+### HasNetTimeDeltaMedian
+
+`func (o *InfoModel) HasNetTimeDeltaMedian() bool`
+
+HasNetTimeDeltaMedian returns a boolean if a field has been set.
+
+### GetCurrentNetworkHashrate50
+
+`func (o *InfoModel) GetCurrentNetworkHashrate50() int32`
+
+GetCurrentNetworkHashrate50 returns the CurrentNetworkHashrate50 field if non-nil, zero value otherwise.
+
+### GetCurrentNetworkHashrate50Ok
+
+`func (o *InfoModel) GetCurrentNetworkHashrate50Ok() (*int32, bool)`
+
+GetCurrentNetworkHashrate50Ok returns a tuple with the CurrentNetworkHashrate50 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCurrentNetworkHashrate50
+
+`func (o *InfoModel) SetCurrentNetworkHashrate50(v int32)`
+
+SetCurrentNetworkHashrate50 sets CurrentNetworkHashrate50 field to given value.
+
+### HasCurrentNetworkHashrate50
+
+`func (o *InfoModel) HasCurrentNetworkHashrate50() bool`
+
+HasCurrentNetworkHashrate50 returns a boolean if a field has been set.
+
+### GetCurrentNetworkHashrate350
+
+`func (o *InfoModel) GetCurrentNetworkHashrate350() int32`
+
+GetCurrentNetworkHashrate350 returns the CurrentNetworkHashrate350 field if non-nil, zero value otherwise.
+
+### GetCurrentNetworkHashrate350Ok
+
+`func (o *InfoModel) GetCurrentNetworkHashrate350Ok() (*int32, bool)`
+
+GetCurrentNetworkHashrate350Ok returns a tuple with the CurrentNetworkHashrate350 field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCurrentNetworkHashrate350
+
+`func (o *InfoModel) SetCurrentNetworkHashrate350(v int32)`
+
+SetCurrentNetworkHashrate350 sets CurrentNetworkHashrate350 field to given value.
+
+### HasCurrentNetworkHashrate350
+
+`func (o *InfoModel) HasCurrentNetworkHashrate350() bool`
+
+HasCurrentNetworkHashrate350 returns a boolean if a field has been set.
+
+### GetSecondsFor10Blocks
+
+`func (o *InfoModel) GetSecondsFor10Blocks() int32`
+
+GetSecondsFor10Blocks returns the SecondsFor10Blocks field if non-nil, zero value otherwise.
+
+### GetSecondsFor10BlocksOk
+
+`func (o *InfoModel) GetSecondsFor10BlocksOk() (*int32, bool)`
+
+GetSecondsFor10BlocksOk returns a tuple with the SecondsFor10Blocks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSecondsFor10Blocks
+
+`func (o *InfoModel) SetSecondsFor10Blocks(v int32)`
+
+SetSecondsFor10Blocks sets SecondsFor10Blocks field to given value.
+
+### HasSecondsFor10Blocks
+
+`func (o *InfoModel) HasSecondsFor10Blocks() bool`
+
+HasSecondsFor10Blocks returns a boolean if a field has been set.
+
+### GetSecondsFor30Blocks
+
+`func (o *InfoModel) GetSecondsFor30Blocks() int32`
+
+GetSecondsFor30Blocks returns the SecondsFor30Blocks field if non-nil, zero value otherwise.
+
+### GetSecondsFor30BlocksOk
+
+`func (o *InfoModel) GetSecondsFor30BlocksOk() (*int32, bool)`
+
+GetSecondsFor30BlocksOk returns a tuple with the SecondsFor30Blocks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetSecondsFor30Blocks
+
+`func (o *InfoModel) SetSecondsFor30Blocks(v int32)`
+
+SetSecondsFor30Blocks sets SecondsFor30Blocks field to given value.
+
+### HasSecondsFor30Blocks
+
+`func (o *InfoModel) HasSecondsFor30Blocks() bool`
+
+HasSecondsFor30Blocks returns a boolean if a field has been set.
+
+### GetTransactionsCntPerDay
+
+`func (o *InfoModel) GetTransactionsCntPerDay() []int32`
+
+GetTransactionsCntPerDay returns the TransactionsCntPerDay field if non-nil, zero value otherwise.
+
+### GetTransactionsCntPerDayOk
+
+`func (o *InfoModel) GetTransactionsCntPerDayOk() (*[]int32, bool)`
+
+GetTransactionsCntPerDayOk returns a tuple with the TransactionsCntPerDay field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTransactionsCntPerDay
+
+`func (o *InfoModel) SetTransactionsCntPerDay(v []int32)`
+
+SetTransactionsCntPerDay sets TransactionsCntPerDay field to given value.
+
+### HasTransactionsCntPerDay
+
+`func (o *InfoModel) HasTransactionsCntPerDay() bool`
+
+HasTransactionsCntPerDay returns a boolean if a field has been set.
+
+### GetTransactionsVolumePerDay
+
+`func (o *InfoModel) GetTransactionsVolumePerDay() []int32`
+
+GetTransactionsVolumePerDay returns the TransactionsVolumePerDay field if non-nil, zero value otherwise.
+
+### GetTransactionsVolumePerDayOk
+
+`func (o *InfoModel) GetTransactionsVolumePerDayOk() (*[]int32, bool)`
+
+GetTransactionsVolumePerDayOk returns a tuple with the TransactionsVolumePerDay field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTransactionsVolumePerDay
+
+`func (o *InfoModel) SetTransactionsVolumePerDay(v []int32)`
+
+SetTransactionsVolumePerDay sets TransactionsVolumePerDay field to given value.
+
+### HasTransactionsVolumePerDay
+
+`func (o *InfoModel) HasTransactionsVolumePerDay() bool`
+
+HasTransactionsVolumePerDay returns a boolean if a field has been set.
+
+### GetLastPosTimestamp
+
+`func (o *InfoModel) GetLastPosTimestamp() int32`
+
+GetLastPosTimestamp returns the LastPosTimestamp field if non-nil, zero value otherwise.
+
+### GetLastPosTimestampOk
+
+`func (o *InfoModel) GetLastPosTimestampOk() (*int32, bool)`
+
+GetLastPosTimestampOk returns a tuple with the LastPosTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastPosTimestamp
+
+`func (o *InfoModel) SetLastPosTimestamp(v int32)`
+
+SetLastPosTimestamp sets LastPosTimestamp field to given value.
+
+### HasLastPosTimestamp
+
+`func (o *InfoModel) HasLastPosTimestamp() bool`
+
+HasLastPosTimestamp returns a boolean if a field has been set.
+
+### GetLastPowTimestamp
+
+`func (o *InfoModel) GetLastPowTimestamp() int32`
+
+GetLastPowTimestamp returns the LastPowTimestamp field if non-nil, zero value otherwise.
+
+### GetLastPowTimestampOk
+
+`func (o *InfoModel) GetLastPowTimestampOk() (*int32, bool)`
+
+GetLastPowTimestampOk returns a tuple with the LastPowTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastPowTimestamp
+
+`func (o *InfoModel) SetLastPowTimestamp(v int32)`
+
+SetLastPowTimestamp sets LastPowTimestamp field to given value.
+
+### HasLastPowTimestamp
+
+`func (o *InfoModel) HasLastPowTimestamp() bool`
+
+HasLastPowTimestamp returns a boolean if a field has been set.
+
+### GetTotalCoins
+
+`func (o *InfoModel) GetTotalCoins() string`
+
+GetTotalCoins returns the TotalCoins field if non-nil, zero value otherwise.
+
+### GetTotalCoinsOk
+
+`func (o *InfoModel) GetTotalCoinsOk() (*string, bool)`
+
+GetTotalCoinsOk returns a tuple with the TotalCoins field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTotalCoins
+
+`func (o *InfoModel) SetTotalCoins(v string)`
+
+SetTotalCoins sets TotalCoins field to given value.
+
+### HasTotalCoins
+
+`func (o *InfoModel) HasTotalCoins() bool`
+
+HasTotalCoins returns a boolean if a field has been set.
+
+### GetLastBlockSize
+
+`func (o *InfoModel) GetLastBlockSize() int32`
+
+GetLastBlockSize returns the LastBlockSize field if non-nil, zero value otherwise.
+
+### GetLastBlockSizeOk
+
+`func (o *InfoModel) GetLastBlockSizeOk() (*int32, bool)`
+
+GetLastBlockSizeOk returns a tuple with the LastBlockSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastBlockSize
+
+`func (o *InfoModel) SetLastBlockSize(v int32)`
+
+SetLastBlockSize sets LastBlockSize field to given value.
+
+### HasLastBlockSize
+
+`func (o *InfoModel) HasLastBlockSize() bool`
+
+HasLastBlockSize returns a boolean if a field has been set.
+
+### GetTxCountInLastBlock
+
+`func (o *InfoModel) GetTxCountInLastBlock() int32`
+
+GetTxCountInLastBlock returns the TxCountInLastBlock field if non-nil, zero value otherwise.
+
+### GetTxCountInLastBlockOk
+
+`func (o *InfoModel) GetTxCountInLastBlockOk() (*int32, bool)`
+
+GetTxCountInLastBlockOk returns a tuple with the TxCountInLastBlock field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCountInLastBlock
+
+`func (o *InfoModel) SetTxCountInLastBlock(v int32)`
+
+SetTxCountInLastBlock sets TxCountInLastBlock field to given value.
+
+### HasTxCountInLastBlock
+
+`func (o *InfoModel) HasTxCountInLastBlock() bool`
+
+HasTxCountInLastBlock returns a boolean if a field has been set.
+
+### GetPosSequenceFactor
+
+`func (o *InfoModel) GetPosSequenceFactor() float64`
+
+GetPosSequenceFactor returns the PosSequenceFactor field if non-nil, zero value otherwise.
+
+### GetPosSequenceFactorOk
+
+`func (o *InfoModel) GetPosSequenceFactorOk() (*float64, bool)`
+
+GetPosSequenceFactorOk returns a tuple with the PosSequenceFactor field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosSequenceFactor
+
+`func (o *InfoModel) SetPosSequenceFactor(v float64)`
+
+SetPosSequenceFactor sets PosSequenceFactor field to given value.
+
+### HasPosSequenceFactor
+
+`func (o *InfoModel) HasPosSequenceFactor() bool`
+
+HasPosSequenceFactor returns a boolean if a field has been set.
+
+### GetPowSequenceFactor
+
+`func (o *InfoModel) GetPowSequenceFactor() float64`
+
+GetPowSequenceFactor returns the PowSequenceFactor field if non-nil, zero value otherwise.
+
+### GetPowSequenceFactorOk
+
+`func (o *InfoModel) GetPowSequenceFactorOk() (*float64, bool)`
+
+GetPowSequenceFactorOk returns a tuple with the PowSequenceFactor field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPowSequenceFactor
+
+`func (o *InfoModel) SetPowSequenceFactor(v float64)`
+
+SetPowSequenceFactor sets PowSequenceFactor field to given value.
+
+### HasPowSequenceFactor
+
+`func (o *InfoModel) HasPowSequenceFactor() bool`
+
+HasPowSequenceFactor returns a boolean if a field has been set.
+
+### GetBlockReward
+
+`func (o *InfoModel) GetBlockReward() int32`
+
+GetBlockReward returns the BlockReward field if non-nil, zero value otherwise.
+
+### GetBlockRewardOk
+
+`func (o *InfoModel) GetBlockRewardOk() (*int32, bool)`
+
+GetBlockRewardOk returns a tuple with the BlockReward field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockReward
+
+`func (o *InfoModel) SetBlockReward(v int32)`
+
+SetBlockReward sets BlockReward field to given value.
+
+### HasBlockReward
+
+`func (o *InfoModel) HasBlockReward() bool`
+
+HasBlockReward returns a boolean if a field has been set.
+
+### GetLastBlockTotalReward
+
+`func (o *InfoModel) GetLastBlockTotalReward() int32`
+
+GetLastBlockTotalReward returns the LastBlockTotalReward field if non-nil, zero value otherwise.
+
+### GetLastBlockTotalRewardOk
+
+`func (o *InfoModel) GetLastBlockTotalRewardOk() (*int32, bool)`
+
+GetLastBlockTotalRewardOk returns a tuple with the LastBlockTotalReward field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastBlockTotalReward
+
+`func (o *InfoModel) SetLastBlockTotalReward(v int32)`
+
+SetLastBlockTotalReward sets LastBlockTotalReward field to given value.
+
+### HasLastBlockTotalReward
+
+`func (o *InfoModel) HasLastBlockTotalReward() bool`
+
+HasLastBlockTotalReward returns a boolean if a field has been set.
+
+### GetPosDiffTotalCoinsRate
+
+`func (o *InfoModel) GetPosDiffTotalCoinsRate() int32`
+
+GetPosDiffTotalCoinsRate returns the PosDiffTotalCoinsRate field if non-nil, zero value otherwise.
+
+### GetPosDiffTotalCoinsRateOk
+
+`func (o *InfoModel) GetPosDiffTotalCoinsRateOk() (*int32, bool)`
+
+GetPosDiffTotalCoinsRateOk returns a tuple with the PosDiffTotalCoinsRate field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosDiffTotalCoinsRate
+
+`func (o *InfoModel) SetPosDiffTotalCoinsRate(v int32)`
+
+SetPosDiffTotalCoinsRate sets PosDiffTotalCoinsRate field to given value.
+
+### HasPosDiffTotalCoinsRate
+
+`func (o *InfoModel) HasPosDiffTotalCoinsRate() bool`
+
+HasPosDiffTotalCoinsRate returns a boolean if a field has been set.
+
+### GetLastBlockTimestamp
+
+`func (o *InfoModel) GetLastBlockTimestamp() int32`
+
+GetLastBlockTimestamp returns the LastBlockTimestamp field if non-nil, zero value otherwise.
+
+### GetLastBlockTimestampOk
+
+`func (o *InfoModel) GetLastBlockTimestampOk() (*int32, bool)`
+
+GetLastBlockTimestampOk returns a tuple with the LastBlockTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastBlockTimestamp
+
+`func (o *InfoModel) SetLastBlockTimestamp(v int32)`
+
+SetLastBlockTimestamp sets LastBlockTimestamp field to given value.
+
+### HasLastBlockTimestamp
+
+`func (o *InfoModel) HasLastBlockTimestamp() bool`
+
+HasLastBlockTimestamp returns a boolean if a field has been set.
+
+### GetLastBlockHash
+
+`func (o *InfoModel) GetLastBlockHash() string`
+
+GetLastBlockHash returns the LastBlockHash field if non-nil, zero value otherwise.
+
+### GetLastBlockHashOk
+
+`func (o *InfoModel) GetLastBlockHashOk() (*string, bool)`
+
+GetLastBlockHashOk returns a tuple with the LastBlockHash field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetLastBlockHash
+
+`func (o *InfoModel) SetLastBlockHash(v string)`
+
+SetLastBlockHash sets LastBlockHash field to given value.
+
+### HasLastBlockHash
+
+`func (o *InfoModel) HasLastBlockHash() bool`
+
+HasLastBlockHash returns a boolean if a field has been set.
+
+### GetPosBlockTsShiftVsActual
+
+`func (o *InfoModel) GetPosBlockTsShiftVsActual() int64`
+
+GetPosBlockTsShiftVsActual returns the PosBlockTsShiftVsActual field if non-nil, zero value otherwise.
+
+### GetPosBlockTsShiftVsActualOk
+
+`func (o *InfoModel) GetPosBlockTsShiftVsActualOk() (*int64, bool)`
+
+GetPosBlockTsShiftVsActualOk returns a tuple with the PosBlockTsShiftVsActual field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPosBlockTsShiftVsActual
+
+`func (o *InfoModel) SetPosBlockTsShiftVsActual(v int64)`
+
+SetPosBlockTsShiftVsActual sets PosBlockTsShiftVsActual field to given value.
+
+### HasPosBlockTsShiftVsActual
+
+`func (o *InfoModel) HasPosBlockTsShiftVsActual() bool`
+
+HasPosBlockTsShiftVsActual returns a boolean if a field has been set.
+
+### GetOutsStat
+
+`func (o *InfoModel) GetOutsStat() map[string]int32`
+
+GetOutsStat returns the OutsStat field if non-nil, zero value otherwise.
+
+### GetOutsStatOk
+
+`func (o *InfoModel) GetOutsStatOk() (*map[string]int32, bool)`
+
+GetOutsStatOk returns a tuple with the OutsStat field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetOutsStat
+
+`func (o *InfoModel) SetOutsStat(v map[string]int32)`
+
+SetOutsStat sets OutsStat field to given value.
+
+### HasOutsStat
+
+`func (o *InfoModel) HasOutsStat() bool`
+
+HasOutsStat returns a boolean if a field has been set.
+
+### GetPerformanceData
+
+`func (o *InfoModel) GetPerformanceData() PerformanceModel`
+
+GetPerformanceData returns the PerformanceData field if non-nil, zero value otherwise.
+
+### GetPerformanceDataOk
+
+`func (o *InfoModel) GetPerformanceDataOk() (*PerformanceModel, bool)`
+
+GetPerformanceDataOk returns a tuple with the PerformanceData field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPerformanceData
+
+`func (o *InfoModel) SetPerformanceData(v PerformanceModel)`
+
+SetPerformanceData sets PerformanceData field to given value.
+
+### HasPerformanceData
+
+`func (o *InfoModel) HasPerformanceData() bool`
+
+HasPerformanceData returns a boolean if a field has been set.
+
+### GetOffersCount
+
+`func (o *InfoModel) GetOffersCount() int32`
+
+GetOffersCount returns the OffersCount field if non-nil, zero value otherwise.
+
+### GetOffersCountOk
+
+`func (o *InfoModel) GetOffersCountOk() (*int32, bool)`
+
+GetOffersCountOk returns a tuple with the OffersCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetOffersCount
+
+`func (o *InfoModel) SetOffersCount(v int32)`
+
+SetOffersCount sets OffersCount field to given value.
+
+### HasOffersCount
+
+`func (o *InfoModel) HasOffersCount() bool`
+
+HasOffersCount returns a boolean if a field has been set.
+
+### GetExpirationMedianTimestamp
+
+`func (o *InfoModel) GetExpirationMedianTimestamp() int32`
+
+GetExpirationMedianTimestamp returns the ExpirationMedianTimestamp field if non-nil, zero value otherwise.
+
+### GetExpirationMedianTimestampOk
+
+`func (o *InfoModel) GetExpirationMedianTimestampOk() (*int32, bool)`
+
+GetExpirationMedianTimestampOk returns a tuple with the ExpirationMedianTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetExpirationMedianTimestamp
+
+`func (o *InfoModel) SetExpirationMedianTimestamp(v int32)`
+
+SetExpirationMedianTimestamp sets ExpirationMedianTimestamp field to given value.
+
+### HasExpirationMedianTimestamp
+
+`func (o *InfoModel) HasExpirationMedianTimestamp() bool`
+
+HasExpirationMedianTimestamp returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/MaintainersInfoModel.md b/utils/sdk/client/go/docs/MaintainersInfoModel.md
new file mode 100644
index 00000000..5e4db6b5
--- /dev/null
+++ b/utils/sdk/client/go/docs/MaintainersInfoModel.md
@@ -0,0 +1,160 @@
+# MaintainersInfoModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**VerMajor** | Pointer to **int32** | | [optional]
+**VerMinor** | Pointer to **int32** | | [optional]
+**VerRevision** | Pointer to **int32** | | [optional]
+**BuildNo** | Pointer to **int32** | | [optional]
+**Mode** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewMaintainersInfoModel
+
+`func NewMaintainersInfoModel() *MaintainersInfoModel`
+
+NewMaintainersInfoModel instantiates a new MaintainersInfoModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewMaintainersInfoModelWithDefaults
+
+`func NewMaintainersInfoModelWithDefaults() *MaintainersInfoModel`
+
+NewMaintainersInfoModelWithDefaults instantiates a new MaintainersInfoModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetVerMajor
+
+`func (o *MaintainersInfoModel) GetVerMajor() int32`
+
+GetVerMajor returns the VerMajor field if non-nil, zero value otherwise.
+
+### GetVerMajorOk
+
+`func (o *MaintainersInfoModel) GetVerMajorOk() (*int32, bool)`
+
+GetVerMajorOk returns a tuple with the VerMajor field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVerMajor
+
+`func (o *MaintainersInfoModel) SetVerMajor(v int32)`
+
+SetVerMajor sets VerMajor field to given value.
+
+### HasVerMajor
+
+`func (o *MaintainersInfoModel) HasVerMajor() bool`
+
+HasVerMajor returns a boolean if a field has been set.
+
+### GetVerMinor
+
+`func (o *MaintainersInfoModel) GetVerMinor() int32`
+
+GetVerMinor returns the VerMinor field if non-nil, zero value otherwise.
+
+### GetVerMinorOk
+
+`func (o *MaintainersInfoModel) GetVerMinorOk() (*int32, bool)`
+
+GetVerMinorOk returns a tuple with the VerMinor field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVerMinor
+
+`func (o *MaintainersInfoModel) SetVerMinor(v int32)`
+
+SetVerMinor sets VerMinor field to given value.
+
+### HasVerMinor
+
+`func (o *MaintainersInfoModel) HasVerMinor() bool`
+
+HasVerMinor returns a boolean if a field has been set.
+
+### GetVerRevision
+
+`func (o *MaintainersInfoModel) GetVerRevision() int32`
+
+GetVerRevision returns the VerRevision field if non-nil, zero value otherwise.
+
+### GetVerRevisionOk
+
+`func (o *MaintainersInfoModel) GetVerRevisionOk() (*int32, bool)`
+
+GetVerRevisionOk returns a tuple with the VerRevision field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVerRevision
+
+`func (o *MaintainersInfoModel) SetVerRevision(v int32)`
+
+SetVerRevision sets VerRevision field to given value.
+
+### HasVerRevision
+
+`func (o *MaintainersInfoModel) HasVerRevision() bool`
+
+HasVerRevision returns a boolean if a field has been set.
+
+### GetBuildNo
+
+`func (o *MaintainersInfoModel) GetBuildNo() int32`
+
+GetBuildNo returns the BuildNo field if non-nil, zero value otherwise.
+
+### GetBuildNoOk
+
+`func (o *MaintainersInfoModel) GetBuildNoOk() (*int32, bool)`
+
+GetBuildNoOk returns a tuple with the BuildNo field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBuildNo
+
+`func (o *MaintainersInfoModel) SetBuildNo(v int32)`
+
+SetBuildNo sets BuildNo field to given value.
+
+### HasBuildNo
+
+`func (o *MaintainersInfoModel) HasBuildNo() bool`
+
+HasBuildNo returns a boolean if a field has been set.
+
+### GetMode
+
+`func (o *MaintainersInfoModel) GetMode() int32`
+
+GetMode returns the Mode field if non-nil, zero value otherwise.
+
+### GetModeOk
+
+`func (o *MaintainersInfoModel) GetModeOk() (*int32, bool)`
+
+GetModeOk returns a tuple with the Mode field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMode
+
+`func (o *MaintainersInfoModel) SetMode(v int32)`
+
+SetMode sets Mode field to given value.
+
+### HasMode
+
+`func (o *MaintainersInfoModel) HasMode() bool`
+
+HasMode returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/PerformanceModel.md b/utils/sdk/client/go/docs/PerformanceModel.md
new file mode 100644
index 00000000..f05fcec4
--- /dev/null
+++ b/utils/sdk/client/go/docs/PerformanceModel.md
@@ -0,0 +1,134 @@
+# PerformanceModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**BlockProcessing** | Pointer to [**BlockProcessingPerformanceModel**](BlockProcessingPerformanceModel.md) | | [optional]
+**TxProcessing** | Pointer to [**TxProcessingPerformanceModel**](TxProcessingPerformanceModel.md) | | [optional]
+**TxPool** | Pointer to [**TxPoolPerformanceModel**](TxPoolPerformanceModel.md) | | [optional]
+**DbStatInfo** | Pointer to [**DbStatInfoModel**](DbStatInfoModel.md) | | [optional]
+
+## Methods
+
+### NewPerformanceModel
+
+`func NewPerformanceModel() *PerformanceModel`
+
+NewPerformanceModel instantiates a new PerformanceModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewPerformanceModelWithDefaults
+
+`func NewPerformanceModelWithDefaults() *PerformanceModel`
+
+NewPerformanceModelWithDefaults instantiates a new PerformanceModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetBlockProcessing
+
+`func (o *PerformanceModel) GetBlockProcessing() BlockProcessingPerformanceModel`
+
+GetBlockProcessing returns the BlockProcessing field if non-nil, zero value otherwise.
+
+### GetBlockProcessingOk
+
+`func (o *PerformanceModel) GetBlockProcessingOk() (*BlockProcessingPerformanceModel, bool)`
+
+GetBlockProcessingOk returns a tuple with the BlockProcessing field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockProcessing
+
+`func (o *PerformanceModel) SetBlockProcessing(v BlockProcessingPerformanceModel)`
+
+SetBlockProcessing sets BlockProcessing field to given value.
+
+### HasBlockProcessing
+
+`func (o *PerformanceModel) HasBlockProcessing() bool`
+
+HasBlockProcessing returns a boolean if a field has been set.
+
+### GetTxProcessing
+
+`func (o *PerformanceModel) GetTxProcessing() TxProcessingPerformanceModel`
+
+GetTxProcessing returns the TxProcessing field if non-nil, zero value otherwise.
+
+### GetTxProcessingOk
+
+`func (o *PerformanceModel) GetTxProcessingOk() (*TxProcessingPerformanceModel, bool)`
+
+GetTxProcessingOk returns a tuple with the TxProcessing field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxProcessing
+
+`func (o *PerformanceModel) SetTxProcessing(v TxProcessingPerformanceModel)`
+
+SetTxProcessing sets TxProcessing field to given value.
+
+### HasTxProcessing
+
+`func (o *PerformanceModel) HasTxProcessing() bool`
+
+HasTxProcessing returns a boolean if a field has been set.
+
+### GetTxPool
+
+`func (o *PerformanceModel) GetTxPool() TxPoolPerformanceModel`
+
+GetTxPool returns the TxPool field if non-nil, zero value otherwise.
+
+### GetTxPoolOk
+
+`func (o *PerformanceModel) GetTxPoolOk() (*TxPoolPerformanceModel, bool)`
+
+GetTxPoolOk returns a tuple with the TxPool field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPool
+
+`func (o *PerformanceModel) SetTxPool(v TxPoolPerformanceModel)`
+
+SetTxPool sets TxPool field to given value.
+
+### HasTxPool
+
+`func (o *PerformanceModel) HasTxPool() bool`
+
+HasTxPool returns a boolean if a field has been set.
+
+### GetDbStatInfo
+
+`func (o *PerformanceModel) GetDbStatInfo() DbStatInfoModel`
+
+GetDbStatInfo returns the DbStatInfo field if non-nil, zero value otherwise.
+
+### GetDbStatInfoOk
+
+`func (o *PerformanceModel) GetDbStatInfoOk() (*DbStatInfoModel, bool)`
+
+GetDbStatInfoOk returns a tuple with the DbStatInfo field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDbStatInfo
+
+`func (o *PerformanceModel) SetDbStatInfo(v DbStatInfoModel)`
+
+SetDbStatInfo sets DbStatInfo field to given value.
+
+### HasDbStatInfo
+
+`func (o *PerformanceModel) HasDbStatInfo() bool`
+
+HasDbStatInfo returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/PosEntryModel.md b/utils/sdk/client/go/docs/PosEntryModel.md
new file mode 100644
index 00000000..d47febec
--- /dev/null
+++ b/utils/sdk/client/go/docs/PosEntryModel.md
@@ -0,0 +1,238 @@
+# PosEntryModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Amount** | Pointer to **int32** | | [optional]
+**GIndex** | Pointer to **int32** | | [optional]
+**Keyimage** | Pointer to **string** | | [optional]
+**BlockTimestamp** | Pointer to **int32** | | [optional]
+**StakeUnlockTime** | Pointer to **int32** | | [optional]
+**TxId** | Pointer to **string** | | [optional]
+**TxOutIndex** | Pointer to **int32** | | [optional]
+**WalletIndex** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewPosEntryModel
+
+`func NewPosEntryModel() *PosEntryModel`
+
+NewPosEntryModel instantiates a new PosEntryModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewPosEntryModelWithDefaults
+
+`func NewPosEntryModelWithDefaults() *PosEntryModel`
+
+NewPosEntryModelWithDefaults instantiates a new PosEntryModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetAmount
+
+`func (o *PosEntryModel) GetAmount() int32`
+
+GetAmount returns the Amount field if non-nil, zero value otherwise.
+
+### GetAmountOk
+
+`func (o *PosEntryModel) GetAmountOk() (*int32, bool)`
+
+GetAmountOk returns a tuple with the Amount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmount
+
+`func (o *PosEntryModel) SetAmount(v int32)`
+
+SetAmount sets Amount field to given value.
+
+### HasAmount
+
+`func (o *PosEntryModel) HasAmount() bool`
+
+HasAmount returns a boolean if a field has been set.
+
+### GetGIndex
+
+`func (o *PosEntryModel) GetGIndex() int32`
+
+GetGIndex returns the GIndex field if non-nil, zero value otherwise.
+
+### GetGIndexOk
+
+`func (o *PosEntryModel) GetGIndexOk() (*int32, bool)`
+
+GetGIndexOk returns a tuple with the GIndex field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetGIndex
+
+`func (o *PosEntryModel) SetGIndex(v int32)`
+
+SetGIndex sets GIndex field to given value.
+
+### HasGIndex
+
+`func (o *PosEntryModel) HasGIndex() bool`
+
+HasGIndex returns a boolean if a field has been set.
+
+### GetKeyimage
+
+`func (o *PosEntryModel) GetKeyimage() string`
+
+GetKeyimage returns the Keyimage field if non-nil, zero value otherwise.
+
+### GetKeyimageOk
+
+`func (o *PosEntryModel) GetKeyimageOk() (*string, bool)`
+
+GetKeyimageOk returns a tuple with the Keyimage field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetKeyimage
+
+`func (o *PosEntryModel) SetKeyimage(v string)`
+
+SetKeyimage sets Keyimage field to given value.
+
+### HasKeyimage
+
+`func (o *PosEntryModel) HasKeyimage() bool`
+
+HasKeyimage returns a boolean if a field has been set.
+
+### GetBlockTimestamp
+
+`func (o *PosEntryModel) GetBlockTimestamp() int32`
+
+GetBlockTimestamp returns the BlockTimestamp field if non-nil, zero value otherwise.
+
+### GetBlockTimestampOk
+
+`func (o *PosEntryModel) GetBlockTimestampOk() (*int32, bool)`
+
+GetBlockTimestampOk returns a tuple with the BlockTimestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockTimestamp
+
+`func (o *PosEntryModel) SetBlockTimestamp(v int32)`
+
+SetBlockTimestamp sets BlockTimestamp field to given value.
+
+### HasBlockTimestamp
+
+`func (o *PosEntryModel) HasBlockTimestamp() bool`
+
+HasBlockTimestamp returns a boolean if a field has been set.
+
+### GetStakeUnlockTime
+
+`func (o *PosEntryModel) GetStakeUnlockTime() int32`
+
+GetStakeUnlockTime returns the StakeUnlockTime field if non-nil, zero value otherwise.
+
+### GetStakeUnlockTimeOk
+
+`func (o *PosEntryModel) GetStakeUnlockTimeOk() (*int32, bool)`
+
+GetStakeUnlockTimeOk returns a tuple with the StakeUnlockTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetStakeUnlockTime
+
+`func (o *PosEntryModel) SetStakeUnlockTime(v int32)`
+
+SetStakeUnlockTime sets StakeUnlockTime field to given value.
+
+### HasStakeUnlockTime
+
+`func (o *PosEntryModel) HasStakeUnlockTime() bool`
+
+HasStakeUnlockTime returns a boolean if a field has been set.
+
+### GetTxId
+
+`func (o *PosEntryModel) GetTxId() string`
+
+GetTxId returns the TxId field if non-nil, zero value otherwise.
+
+### GetTxIdOk
+
+`func (o *PosEntryModel) GetTxIdOk() (*string, bool)`
+
+GetTxIdOk returns a tuple with the TxId field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxId
+
+`func (o *PosEntryModel) SetTxId(v string)`
+
+SetTxId sets TxId field to given value.
+
+### HasTxId
+
+`func (o *PosEntryModel) HasTxId() bool`
+
+HasTxId returns a boolean if a field has been set.
+
+### GetTxOutIndex
+
+`func (o *PosEntryModel) GetTxOutIndex() int32`
+
+GetTxOutIndex returns the TxOutIndex field if non-nil, zero value otherwise.
+
+### GetTxOutIndexOk
+
+`func (o *PosEntryModel) GetTxOutIndexOk() (*int32, bool)`
+
+GetTxOutIndexOk returns a tuple with the TxOutIndex field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxOutIndex
+
+`func (o *PosEntryModel) SetTxOutIndex(v int32)`
+
+SetTxOutIndex sets TxOutIndex field to given value.
+
+### HasTxOutIndex
+
+`func (o *PosEntryModel) HasTxOutIndex() bool`
+
+HasTxOutIndex returns a boolean if a field has been set.
+
+### GetWalletIndex
+
+`func (o *PosEntryModel) GetWalletIndex() int32`
+
+GetWalletIndex returns the WalletIndex field if non-nil, zero value otherwise.
+
+### GetWalletIndexOk
+
+`func (o *PosEntryModel) GetWalletIndexOk() (*int32, bool)`
+
+GetWalletIndexOk returns a tuple with the WalletIndex field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetWalletIndex
+
+`func (o *PosEntryModel) SetWalletIndex(v int32)`
+
+SetWalletIndex sets WalletIndex field to given value.
+
+### HasWalletIndex
+
+`func (o *PosEntryModel) HasWalletIndex() bool`
+
+HasWalletIndex returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/SubmitBlockRequestModel.md b/utils/sdk/client/go/docs/SubmitBlockRequestModel.md
new file mode 100644
index 00000000..29a0ca88
--- /dev/null
+++ b/utils/sdk/client/go/docs/SubmitBlockRequestModel.md
@@ -0,0 +1,56 @@
+# SubmitBlockRequestModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**BlockBlob** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewSubmitBlockRequestModel
+
+`func NewSubmitBlockRequestModel() *SubmitBlockRequestModel`
+
+NewSubmitBlockRequestModel instantiates a new SubmitBlockRequestModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewSubmitBlockRequestModelWithDefaults
+
+`func NewSubmitBlockRequestModelWithDefaults() *SubmitBlockRequestModel`
+
+NewSubmitBlockRequestModelWithDefaults instantiates a new SubmitBlockRequestModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetBlockBlob
+
+`func (o *SubmitBlockRequestModel) GetBlockBlob() string`
+
+GetBlockBlob returns the BlockBlob field if non-nil, zero value otherwise.
+
+### GetBlockBlobOk
+
+`func (o *SubmitBlockRequestModel) GetBlockBlobOk() (*string, bool)`
+
+GetBlockBlobOk returns a tuple with the BlockBlob field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlockBlob
+
+`func (o *SubmitBlockRequestModel) SetBlockBlob(v string)`
+
+SetBlockBlob sets BlockBlob field to given value.
+
+### HasBlockBlob
+
+`func (o *SubmitBlockRequestModel) HasBlockBlob() bool`
+
+HasBlockBlob returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/SubmitBlockResponseModel.md b/utils/sdk/client/go/docs/SubmitBlockResponseModel.md
new file mode 100644
index 00000000..051989e1
--- /dev/null
+++ b/utils/sdk/client/go/docs/SubmitBlockResponseModel.md
@@ -0,0 +1,56 @@
+# SubmitBlockResponseModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Status** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewSubmitBlockResponseModel
+
+`func NewSubmitBlockResponseModel() *SubmitBlockResponseModel`
+
+NewSubmitBlockResponseModel instantiates a new SubmitBlockResponseModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewSubmitBlockResponseModelWithDefaults
+
+`func NewSubmitBlockResponseModelWithDefaults() *SubmitBlockResponseModel`
+
+NewSubmitBlockResponseModelWithDefaults instantiates a new SubmitBlockResponseModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetStatus
+
+`func (o *SubmitBlockResponseModel) GetStatus() string`
+
+GetStatus returns the Status field if non-nil, zero value otherwise.
+
+### GetStatusOk
+
+`func (o *SubmitBlockResponseModel) GetStatusOk() (*string, bool)`
+
+GetStatusOk returns a tuple with the Status field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetStatus
+
+`func (o *SubmitBlockResponseModel) SetStatus(v string)`
+
+SetStatus sets Status field to given value.
+
+### HasStatus
+
+`func (o *SubmitBlockResponseModel) HasStatus() bool`
+
+HasStatus returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TransactionAttachmentModel.md b/utils/sdk/client/go/docs/TransactionAttachmentModel.md
new file mode 100644
index 00000000..e591eb0b
--- /dev/null
+++ b/utils/sdk/client/go/docs/TransactionAttachmentModel.md
@@ -0,0 +1,108 @@
+# TransactionAttachmentModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Type** | Pointer to **string** | | [optional]
+**ShortView** | Pointer to **string** | | [optional]
+**DetailsView** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewTransactionAttachmentModel
+
+`func NewTransactionAttachmentModel() *TransactionAttachmentModel`
+
+NewTransactionAttachmentModel instantiates a new TransactionAttachmentModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTransactionAttachmentModelWithDefaults
+
+`func NewTransactionAttachmentModelWithDefaults() *TransactionAttachmentModel`
+
+NewTransactionAttachmentModelWithDefaults instantiates a new TransactionAttachmentModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetType
+
+`func (o *TransactionAttachmentModel) GetType() string`
+
+GetType returns the Type field if non-nil, zero value otherwise.
+
+### GetTypeOk
+
+`func (o *TransactionAttachmentModel) GetTypeOk() (*string, bool)`
+
+GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetType
+
+`func (o *TransactionAttachmentModel) SetType(v string)`
+
+SetType sets Type field to given value.
+
+### HasType
+
+`func (o *TransactionAttachmentModel) HasType() bool`
+
+HasType returns a boolean if a field has been set.
+
+### GetShortView
+
+`func (o *TransactionAttachmentModel) GetShortView() string`
+
+GetShortView returns the ShortView field if non-nil, zero value otherwise.
+
+### GetShortViewOk
+
+`func (o *TransactionAttachmentModel) GetShortViewOk() (*string, bool)`
+
+GetShortViewOk returns a tuple with the ShortView field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetShortView
+
+`func (o *TransactionAttachmentModel) SetShortView(v string)`
+
+SetShortView sets ShortView field to given value.
+
+### HasShortView
+
+`func (o *TransactionAttachmentModel) HasShortView() bool`
+
+HasShortView returns a boolean if a field has been set.
+
+### GetDetailsView
+
+`func (o *TransactionAttachmentModel) GetDetailsView() string`
+
+GetDetailsView returns the DetailsView field if non-nil, zero value otherwise.
+
+### GetDetailsViewOk
+
+`func (o *TransactionAttachmentModel) GetDetailsViewOk() (*string, bool)`
+
+GetDetailsViewOk returns a tuple with the DetailsView field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDetailsView
+
+`func (o *TransactionAttachmentModel) SetDetailsView(v string)`
+
+SetDetailsView sets DetailsView field to given value.
+
+### HasDetailsView
+
+`func (o *TransactionAttachmentModel) HasDetailsView() bool`
+
+HasDetailsView returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TransactionDetailsModel.md b/utils/sdk/client/go/docs/TransactionDetailsModel.md
new file mode 100644
index 00000000..f7dbdae3
--- /dev/null
+++ b/utils/sdk/client/go/docs/TransactionDetailsModel.md
@@ -0,0 +1,368 @@
+# TransactionDetailsModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Amount** | Pointer to **int32** | | [optional]
+**Attachments** | Pointer to [**[]TransactionAttachmentModel**](TransactionAttachmentModel.md) | | [optional]
+**Blob** | Pointer to **string** | | [optional]
+**BlobSize** | Pointer to **int32** | | [optional]
+**Extra** | Pointer to [**[]TransactionExtraModel**](TransactionExtraModel.md) | | [optional]
+**Fee** | Pointer to **int32** | | [optional]
+**Id** | Pointer to **string** | | [optional]
+**Ins** | Pointer to [**[]TransactionInputModel**](TransactionInputModel.md) | | [optional]
+**KeeperBlock** | Pointer to **int64** | | [optional]
+**ObjectInJson** | Pointer to **string** | | [optional]
+**Outs** | Pointer to [**[]TransactionOutputModel**](TransactionOutputModel.md) | | [optional]
+**PubKey** | Pointer to **string** | | [optional]
+**Timestamp** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewTransactionDetailsModel
+
+`func NewTransactionDetailsModel() *TransactionDetailsModel`
+
+NewTransactionDetailsModel instantiates a new TransactionDetailsModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTransactionDetailsModelWithDefaults
+
+`func NewTransactionDetailsModelWithDefaults() *TransactionDetailsModel`
+
+NewTransactionDetailsModelWithDefaults instantiates a new TransactionDetailsModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetAmount
+
+`func (o *TransactionDetailsModel) GetAmount() int32`
+
+GetAmount returns the Amount field if non-nil, zero value otherwise.
+
+### GetAmountOk
+
+`func (o *TransactionDetailsModel) GetAmountOk() (*int32, bool)`
+
+GetAmountOk returns a tuple with the Amount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmount
+
+`func (o *TransactionDetailsModel) SetAmount(v int32)`
+
+SetAmount sets Amount field to given value.
+
+### HasAmount
+
+`func (o *TransactionDetailsModel) HasAmount() bool`
+
+HasAmount returns a boolean if a field has been set.
+
+### GetAttachments
+
+`func (o *TransactionDetailsModel) GetAttachments() []TransactionAttachmentModel`
+
+GetAttachments returns the Attachments field if non-nil, zero value otherwise.
+
+### GetAttachmentsOk
+
+`func (o *TransactionDetailsModel) GetAttachmentsOk() (*[]TransactionAttachmentModel, bool)`
+
+GetAttachmentsOk returns a tuple with the Attachments field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAttachments
+
+`func (o *TransactionDetailsModel) SetAttachments(v []TransactionAttachmentModel)`
+
+SetAttachments sets Attachments field to given value.
+
+### HasAttachments
+
+`func (o *TransactionDetailsModel) HasAttachments() bool`
+
+HasAttachments returns a boolean if a field has been set.
+
+### GetBlob
+
+`func (o *TransactionDetailsModel) GetBlob() string`
+
+GetBlob returns the Blob field if non-nil, zero value otherwise.
+
+### GetBlobOk
+
+`func (o *TransactionDetailsModel) GetBlobOk() (*string, bool)`
+
+GetBlobOk returns a tuple with the Blob field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlob
+
+`func (o *TransactionDetailsModel) SetBlob(v string)`
+
+SetBlob sets Blob field to given value.
+
+### HasBlob
+
+`func (o *TransactionDetailsModel) HasBlob() bool`
+
+HasBlob returns a boolean if a field has been set.
+
+### GetBlobSize
+
+`func (o *TransactionDetailsModel) GetBlobSize() int32`
+
+GetBlobSize returns the BlobSize field if non-nil, zero value otherwise.
+
+### GetBlobSizeOk
+
+`func (o *TransactionDetailsModel) GetBlobSizeOk() (*int32, bool)`
+
+GetBlobSizeOk returns a tuple with the BlobSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlobSize
+
+`func (o *TransactionDetailsModel) SetBlobSize(v int32)`
+
+SetBlobSize sets BlobSize field to given value.
+
+### HasBlobSize
+
+`func (o *TransactionDetailsModel) HasBlobSize() bool`
+
+HasBlobSize returns a boolean if a field has been set.
+
+### GetExtra
+
+`func (o *TransactionDetailsModel) GetExtra() []TransactionExtraModel`
+
+GetExtra returns the Extra field if non-nil, zero value otherwise.
+
+### GetExtraOk
+
+`func (o *TransactionDetailsModel) GetExtraOk() (*[]TransactionExtraModel, bool)`
+
+GetExtraOk returns a tuple with the Extra field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetExtra
+
+`func (o *TransactionDetailsModel) SetExtra(v []TransactionExtraModel)`
+
+SetExtra sets Extra field to given value.
+
+### HasExtra
+
+`func (o *TransactionDetailsModel) HasExtra() bool`
+
+HasExtra returns a boolean if a field has been set.
+
+### GetFee
+
+`func (o *TransactionDetailsModel) GetFee() int32`
+
+GetFee returns the Fee field if non-nil, zero value otherwise.
+
+### GetFeeOk
+
+`func (o *TransactionDetailsModel) GetFeeOk() (*int32, bool)`
+
+GetFeeOk returns a tuple with the Fee field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetFee
+
+`func (o *TransactionDetailsModel) SetFee(v int32)`
+
+SetFee sets Fee field to given value.
+
+### HasFee
+
+`func (o *TransactionDetailsModel) HasFee() bool`
+
+HasFee returns a boolean if a field has been set.
+
+### GetId
+
+`func (o *TransactionDetailsModel) GetId() string`
+
+GetId returns the Id field if non-nil, zero value otherwise.
+
+### GetIdOk
+
+`func (o *TransactionDetailsModel) GetIdOk() (*string, bool)`
+
+GetIdOk returns a tuple with the Id field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetId
+
+`func (o *TransactionDetailsModel) SetId(v string)`
+
+SetId sets Id field to given value.
+
+### HasId
+
+`func (o *TransactionDetailsModel) HasId() bool`
+
+HasId returns a boolean if a field has been set.
+
+### GetIns
+
+`func (o *TransactionDetailsModel) GetIns() []TransactionInputModel`
+
+GetIns returns the Ins field if non-nil, zero value otherwise.
+
+### GetInsOk
+
+`func (o *TransactionDetailsModel) GetInsOk() (*[]TransactionInputModel, bool)`
+
+GetInsOk returns a tuple with the Ins field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIns
+
+`func (o *TransactionDetailsModel) SetIns(v []TransactionInputModel)`
+
+SetIns sets Ins field to given value.
+
+### HasIns
+
+`func (o *TransactionDetailsModel) HasIns() bool`
+
+HasIns returns a boolean if a field has been set.
+
+### GetKeeperBlock
+
+`func (o *TransactionDetailsModel) GetKeeperBlock() int64`
+
+GetKeeperBlock returns the KeeperBlock field if non-nil, zero value otherwise.
+
+### GetKeeperBlockOk
+
+`func (o *TransactionDetailsModel) GetKeeperBlockOk() (*int64, bool)`
+
+GetKeeperBlockOk returns a tuple with the KeeperBlock field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetKeeperBlock
+
+`func (o *TransactionDetailsModel) SetKeeperBlock(v int64)`
+
+SetKeeperBlock sets KeeperBlock field to given value.
+
+### HasKeeperBlock
+
+`func (o *TransactionDetailsModel) HasKeeperBlock() bool`
+
+HasKeeperBlock returns a boolean if a field has been set.
+
+### GetObjectInJson
+
+`func (o *TransactionDetailsModel) GetObjectInJson() string`
+
+GetObjectInJson returns the ObjectInJson field if non-nil, zero value otherwise.
+
+### GetObjectInJsonOk
+
+`func (o *TransactionDetailsModel) GetObjectInJsonOk() (*string, bool)`
+
+GetObjectInJsonOk returns a tuple with the ObjectInJson field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetObjectInJson
+
+`func (o *TransactionDetailsModel) SetObjectInJson(v string)`
+
+SetObjectInJson sets ObjectInJson field to given value.
+
+### HasObjectInJson
+
+`func (o *TransactionDetailsModel) HasObjectInJson() bool`
+
+HasObjectInJson returns a boolean if a field has been set.
+
+### GetOuts
+
+`func (o *TransactionDetailsModel) GetOuts() []TransactionOutputModel`
+
+GetOuts returns the Outs field if non-nil, zero value otherwise.
+
+### GetOutsOk
+
+`func (o *TransactionDetailsModel) GetOutsOk() (*[]TransactionOutputModel, bool)`
+
+GetOutsOk returns a tuple with the Outs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetOuts
+
+`func (o *TransactionDetailsModel) SetOuts(v []TransactionOutputModel)`
+
+SetOuts sets Outs field to given value.
+
+### HasOuts
+
+`func (o *TransactionDetailsModel) HasOuts() bool`
+
+HasOuts returns a boolean if a field has been set.
+
+### GetPubKey
+
+`func (o *TransactionDetailsModel) GetPubKey() string`
+
+GetPubKey returns the PubKey field if non-nil, zero value otherwise.
+
+### GetPubKeyOk
+
+`func (o *TransactionDetailsModel) GetPubKeyOk() (*string, bool)`
+
+GetPubKeyOk returns a tuple with the PubKey field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPubKey
+
+`func (o *TransactionDetailsModel) SetPubKey(v string)`
+
+SetPubKey sets PubKey field to given value.
+
+### HasPubKey
+
+`func (o *TransactionDetailsModel) HasPubKey() bool`
+
+HasPubKey returns a boolean if a field has been set.
+
+### GetTimestamp
+
+`func (o *TransactionDetailsModel) GetTimestamp() int32`
+
+GetTimestamp returns the Timestamp field if non-nil, zero value otherwise.
+
+### GetTimestampOk
+
+`func (o *TransactionDetailsModel) GetTimestampOk() (*int32, bool)`
+
+GetTimestampOk returns a tuple with the Timestamp field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTimestamp
+
+`func (o *TransactionDetailsModel) SetTimestamp(v int32)`
+
+SetTimestamp sets Timestamp field to given value.
+
+### HasTimestamp
+
+`func (o *TransactionDetailsModel) HasTimestamp() bool`
+
+HasTimestamp returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TransactionExtraModel.md b/utils/sdk/client/go/docs/TransactionExtraModel.md
new file mode 100644
index 00000000..e74f55d3
--- /dev/null
+++ b/utils/sdk/client/go/docs/TransactionExtraModel.md
@@ -0,0 +1,108 @@
+# TransactionExtraModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Type** | Pointer to **string** | | [optional]
+**ShortView** | Pointer to **string** | | [optional]
+**DetailsView** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewTransactionExtraModel
+
+`func NewTransactionExtraModel() *TransactionExtraModel`
+
+NewTransactionExtraModel instantiates a new TransactionExtraModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTransactionExtraModelWithDefaults
+
+`func NewTransactionExtraModelWithDefaults() *TransactionExtraModel`
+
+NewTransactionExtraModelWithDefaults instantiates a new TransactionExtraModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetType
+
+`func (o *TransactionExtraModel) GetType() string`
+
+GetType returns the Type field if non-nil, zero value otherwise.
+
+### GetTypeOk
+
+`func (o *TransactionExtraModel) GetTypeOk() (*string, bool)`
+
+GetTypeOk returns a tuple with the Type field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetType
+
+`func (o *TransactionExtraModel) SetType(v string)`
+
+SetType sets Type field to given value.
+
+### HasType
+
+`func (o *TransactionExtraModel) HasType() bool`
+
+HasType returns a boolean if a field has been set.
+
+### GetShortView
+
+`func (o *TransactionExtraModel) GetShortView() string`
+
+GetShortView returns the ShortView field if non-nil, zero value otherwise.
+
+### GetShortViewOk
+
+`func (o *TransactionExtraModel) GetShortViewOk() (*string, bool)`
+
+GetShortViewOk returns a tuple with the ShortView field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetShortView
+
+`func (o *TransactionExtraModel) SetShortView(v string)`
+
+SetShortView sets ShortView field to given value.
+
+### HasShortView
+
+`func (o *TransactionExtraModel) HasShortView() bool`
+
+HasShortView returns a boolean if a field has been set.
+
+### GetDetailsView
+
+`func (o *TransactionExtraModel) GetDetailsView() string`
+
+GetDetailsView returns the DetailsView field if non-nil, zero value otherwise.
+
+### GetDetailsViewOk
+
+`func (o *TransactionExtraModel) GetDetailsViewOk() (*string, bool)`
+
+GetDetailsViewOk returns a tuple with the DetailsView field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDetailsView
+
+`func (o *TransactionExtraModel) SetDetailsView(v string)`
+
+SetDetailsView sets DetailsView field to given value.
+
+### HasDetailsView
+
+`func (o *TransactionExtraModel) HasDetailsView() bool`
+
+HasDetailsView returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TransactionInputModel.md b/utils/sdk/client/go/docs/TransactionInputModel.md
new file mode 100644
index 00000000..3b2a5ed3
--- /dev/null
+++ b/utils/sdk/client/go/docs/TransactionInputModel.md
@@ -0,0 +1,160 @@
+# TransactionInputModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Amount** | Pointer to **int32** | | [optional]
+**GlobalIndexes** | Pointer to **[]int32** | | [optional]
+**HtlcOrigin** | Pointer to **string** | | [optional]
+**KimageOrMsId** | Pointer to **string** | | [optional]
+**MultisigCount** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewTransactionInputModel
+
+`func NewTransactionInputModel() *TransactionInputModel`
+
+NewTransactionInputModel instantiates a new TransactionInputModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTransactionInputModelWithDefaults
+
+`func NewTransactionInputModelWithDefaults() *TransactionInputModel`
+
+NewTransactionInputModelWithDefaults instantiates a new TransactionInputModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetAmount
+
+`func (o *TransactionInputModel) GetAmount() int32`
+
+GetAmount returns the Amount field if non-nil, zero value otherwise.
+
+### GetAmountOk
+
+`func (o *TransactionInputModel) GetAmountOk() (*int32, bool)`
+
+GetAmountOk returns a tuple with the Amount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmount
+
+`func (o *TransactionInputModel) SetAmount(v int32)`
+
+SetAmount sets Amount field to given value.
+
+### HasAmount
+
+`func (o *TransactionInputModel) HasAmount() bool`
+
+HasAmount returns a boolean if a field has been set.
+
+### GetGlobalIndexes
+
+`func (o *TransactionInputModel) GetGlobalIndexes() []int32`
+
+GetGlobalIndexes returns the GlobalIndexes field if non-nil, zero value otherwise.
+
+### GetGlobalIndexesOk
+
+`func (o *TransactionInputModel) GetGlobalIndexesOk() (*[]int32, bool)`
+
+GetGlobalIndexesOk returns a tuple with the GlobalIndexes field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetGlobalIndexes
+
+`func (o *TransactionInputModel) SetGlobalIndexes(v []int32)`
+
+SetGlobalIndexes sets GlobalIndexes field to given value.
+
+### HasGlobalIndexes
+
+`func (o *TransactionInputModel) HasGlobalIndexes() bool`
+
+HasGlobalIndexes returns a boolean if a field has been set.
+
+### GetHtlcOrigin
+
+`func (o *TransactionInputModel) GetHtlcOrigin() string`
+
+GetHtlcOrigin returns the HtlcOrigin field if non-nil, zero value otherwise.
+
+### GetHtlcOriginOk
+
+`func (o *TransactionInputModel) GetHtlcOriginOk() (*string, bool)`
+
+GetHtlcOriginOk returns a tuple with the HtlcOrigin field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetHtlcOrigin
+
+`func (o *TransactionInputModel) SetHtlcOrigin(v string)`
+
+SetHtlcOrigin sets HtlcOrigin field to given value.
+
+### HasHtlcOrigin
+
+`func (o *TransactionInputModel) HasHtlcOrigin() bool`
+
+HasHtlcOrigin returns a boolean if a field has been set.
+
+### GetKimageOrMsId
+
+`func (o *TransactionInputModel) GetKimageOrMsId() string`
+
+GetKimageOrMsId returns the KimageOrMsId field if non-nil, zero value otherwise.
+
+### GetKimageOrMsIdOk
+
+`func (o *TransactionInputModel) GetKimageOrMsIdOk() (*string, bool)`
+
+GetKimageOrMsIdOk returns a tuple with the KimageOrMsId field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetKimageOrMsId
+
+`func (o *TransactionInputModel) SetKimageOrMsId(v string)`
+
+SetKimageOrMsId sets KimageOrMsId field to given value.
+
+### HasKimageOrMsId
+
+`func (o *TransactionInputModel) HasKimageOrMsId() bool`
+
+HasKimageOrMsId returns a boolean if a field has been set.
+
+### GetMultisigCount
+
+`func (o *TransactionInputModel) GetMultisigCount() int32`
+
+GetMultisigCount returns the MultisigCount field if non-nil, zero value otherwise.
+
+### GetMultisigCountOk
+
+`func (o *TransactionInputModel) GetMultisigCountOk() (*int32, bool)`
+
+GetMultisigCountOk returns a tuple with the MultisigCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMultisigCount
+
+`func (o *TransactionInputModel) SetMultisigCount(v int32)`
+
+SetMultisigCount sets MultisigCount field to given value.
+
+### HasMultisigCount
+
+`func (o *TransactionInputModel) HasMultisigCount() bool`
+
+HasMultisigCount returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TransactionOutputModel.md b/utils/sdk/client/go/docs/TransactionOutputModel.md
new file mode 100644
index 00000000..1b144c04
--- /dev/null
+++ b/utils/sdk/client/go/docs/TransactionOutputModel.md
@@ -0,0 +1,160 @@
+# TransactionOutputModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Amount** | Pointer to **int32** | | [optional]
+**GlobalIndex** | Pointer to **int32** | | [optional]
+**IsSpent** | Pointer to **bool** | | [optional]
+**MinimumSigs** | Pointer to **int32** | | [optional]
+**PubKeys** | Pointer to **[]string** | | [optional]
+
+## Methods
+
+### NewTransactionOutputModel
+
+`func NewTransactionOutputModel() *TransactionOutputModel`
+
+NewTransactionOutputModel instantiates a new TransactionOutputModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTransactionOutputModelWithDefaults
+
+`func NewTransactionOutputModelWithDefaults() *TransactionOutputModel`
+
+NewTransactionOutputModelWithDefaults instantiates a new TransactionOutputModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetAmount
+
+`func (o *TransactionOutputModel) GetAmount() int32`
+
+GetAmount returns the Amount field if non-nil, zero value otherwise.
+
+### GetAmountOk
+
+`func (o *TransactionOutputModel) GetAmountOk() (*int32, bool)`
+
+GetAmountOk returns a tuple with the Amount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmount
+
+`func (o *TransactionOutputModel) SetAmount(v int32)`
+
+SetAmount sets Amount field to given value.
+
+### HasAmount
+
+`func (o *TransactionOutputModel) HasAmount() bool`
+
+HasAmount returns a boolean if a field has been set.
+
+### GetGlobalIndex
+
+`func (o *TransactionOutputModel) GetGlobalIndex() int32`
+
+GetGlobalIndex returns the GlobalIndex field if non-nil, zero value otherwise.
+
+### GetGlobalIndexOk
+
+`func (o *TransactionOutputModel) GetGlobalIndexOk() (*int32, bool)`
+
+GetGlobalIndexOk returns a tuple with the GlobalIndex field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetGlobalIndex
+
+`func (o *TransactionOutputModel) SetGlobalIndex(v int32)`
+
+SetGlobalIndex sets GlobalIndex field to given value.
+
+### HasGlobalIndex
+
+`func (o *TransactionOutputModel) HasGlobalIndex() bool`
+
+HasGlobalIndex returns a boolean if a field has been set.
+
+### GetIsSpent
+
+`func (o *TransactionOutputModel) GetIsSpent() bool`
+
+GetIsSpent returns the IsSpent field if non-nil, zero value otherwise.
+
+### GetIsSpentOk
+
+`func (o *TransactionOutputModel) GetIsSpentOk() (*bool, bool)`
+
+GetIsSpentOk returns a tuple with the IsSpent field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetIsSpent
+
+`func (o *TransactionOutputModel) SetIsSpent(v bool)`
+
+SetIsSpent sets IsSpent field to given value.
+
+### HasIsSpent
+
+`func (o *TransactionOutputModel) HasIsSpent() bool`
+
+HasIsSpent returns a boolean if a field has been set.
+
+### GetMinimumSigs
+
+`func (o *TransactionOutputModel) GetMinimumSigs() int32`
+
+GetMinimumSigs returns the MinimumSigs field if non-nil, zero value otherwise.
+
+### GetMinimumSigsOk
+
+`func (o *TransactionOutputModel) GetMinimumSigsOk() (*int32, bool)`
+
+GetMinimumSigsOk returns a tuple with the MinimumSigs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinimumSigs
+
+`func (o *TransactionOutputModel) SetMinimumSigs(v int32)`
+
+SetMinimumSigs sets MinimumSigs field to given value.
+
+### HasMinimumSigs
+
+`func (o *TransactionOutputModel) HasMinimumSigs() bool`
+
+HasMinimumSigs returns a boolean if a field has been set.
+
+### GetPubKeys
+
+`func (o *TransactionOutputModel) GetPubKeys() []string`
+
+GetPubKeys returns the PubKeys field if non-nil, zero value otherwise.
+
+### GetPubKeysOk
+
+`func (o *TransactionOutputModel) GetPubKeysOk() (*[]string, bool)`
+
+GetPubKeysOk returns a tuple with the PubKeys field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPubKeys
+
+`func (o *TransactionOutputModel) SetPubKeys(v []string)`
+
+SetPubKeys sets PubKeys field to given value.
+
+### HasPubKeys
+
+`func (o *TransactionOutputModel) HasPubKeys() bool`
+
+HasPubKeys returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TxGenerationContextModel.md b/utils/sdk/client/go/docs/TxGenerationContextModel.md
new file mode 100644
index 00000000..d0e56cc7
--- /dev/null
+++ b/utils/sdk/client/go/docs/TxGenerationContextModel.md
@@ -0,0 +1,654 @@
+# TxGenerationContextModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**AssetIds** | Pointer to **[]string** | | [optional]
+**BlindedAssetIds** | Pointer to **[]string** | | [optional]
+**AmountCommitments** | Pointer to **[]string** | | [optional]
+**AssetIdBlindingMasks** | Pointer to **[]string** | | [optional]
+**Amounts** | Pointer to **[]string** | | [optional]
+**AmountBlindingMasks** | Pointer to **[]string** | | [optional]
+**PseudoOutsBlindedAssetIds** | Pointer to **[]string** | | [optional]
+**PseudoOutsPlusRealOutBlindingMasks** | Pointer to **[]string** | | [optional]
+**RealZcInsAssetIds** | Pointer to **[]string** | | [optional]
+**ZcInputAmounts** | Pointer to **[]int32** | | [optional]
+**PseudoOutAmountCommitmentsSum** | Pointer to **string** | | [optional]
+**PseudoOutAmountBlindingMasksSum** | Pointer to **string** | | [optional]
+**RealInAssetIdBlindingMaskXAmountSum** | Pointer to **string** | | [optional]
+**AmountCommitmentsSum** | Pointer to **string** | | [optional]
+**AmountBlindingMasksSum** | Pointer to **string** | | [optional]
+**AssetIdBlindingMaskXAmountSum** | Pointer to **string** | | [optional]
+**AoAssetId** | Pointer to **string** | | [optional]
+**AoAssetIdPt** | Pointer to **string** | | [optional]
+**AoAmountCommitment** | Pointer to **string** | | [optional]
+**AoAmountBlindingMask** | Pointer to **string** | | [optional]
+**AoCommitmentInOutputs** | Pointer to **bool** | | [optional]
+**TxKeyPub** | Pointer to **string** | | [optional]
+**TxKeySec** | Pointer to **string** | | [optional]
+**TxPubKeyP** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewTxGenerationContextModel
+
+`func NewTxGenerationContextModel() *TxGenerationContextModel`
+
+NewTxGenerationContextModel instantiates a new TxGenerationContextModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTxGenerationContextModelWithDefaults
+
+`func NewTxGenerationContextModelWithDefaults() *TxGenerationContextModel`
+
+NewTxGenerationContextModelWithDefaults instantiates a new TxGenerationContextModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetAssetIds
+
+`func (o *TxGenerationContextModel) GetAssetIds() []string`
+
+GetAssetIds returns the AssetIds field if non-nil, zero value otherwise.
+
+### GetAssetIdsOk
+
+`func (o *TxGenerationContextModel) GetAssetIdsOk() (*[]string, bool)`
+
+GetAssetIdsOk returns a tuple with the AssetIds field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAssetIds
+
+`func (o *TxGenerationContextModel) SetAssetIds(v []string)`
+
+SetAssetIds sets AssetIds field to given value.
+
+### HasAssetIds
+
+`func (o *TxGenerationContextModel) HasAssetIds() bool`
+
+HasAssetIds returns a boolean if a field has been set.
+
+### GetBlindedAssetIds
+
+`func (o *TxGenerationContextModel) GetBlindedAssetIds() []string`
+
+GetBlindedAssetIds returns the BlindedAssetIds field if non-nil, zero value otherwise.
+
+### GetBlindedAssetIdsOk
+
+`func (o *TxGenerationContextModel) GetBlindedAssetIdsOk() (*[]string, bool)`
+
+GetBlindedAssetIdsOk returns a tuple with the BlindedAssetIds field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBlindedAssetIds
+
+`func (o *TxGenerationContextModel) SetBlindedAssetIds(v []string)`
+
+SetBlindedAssetIds sets BlindedAssetIds field to given value.
+
+### HasBlindedAssetIds
+
+`func (o *TxGenerationContextModel) HasBlindedAssetIds() bool`
+
+HasBlindedAssetIds returns a boolean if a field has been set.
+
+### GetAmountCommitments
+
+`func (o *TxGenerationContextModel) GetAmountCommitments() []string`
+
+GetAmountCommitments returns the AmountCommitments field if non-nil, zero value otherwise.
+
+### GetAmountCommitmentsOk
+
+`func (o *TxGenerationContextModel) GetAmountCommitmentsOk() (*[]string, bool)`
+
+GetAmountCommitmentsOk returns a tuple with the AmountCommitments field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmountCommitments
+
+`func (o *TxGenerationContextModel) SetAmountCommitments(v []string)`
+
+SetAmountCommitments sets AmountCommitments field to given value.
+
+### HasAmountCommitments
+
+`func (o *TxGenerationContextModel) HasAmountCommitments() bool`
+
+HasAmountCommitments returns a boolean if a field has been set.
+
+### GetAssetIdBlindingMasks
+
+`func (o *TxGenerationContextModel) GetAssetIdBlindingMasks() []string`
+
+GetAssetIdBlindingMasks returns the AssetIdBlindingMasks field if non-nil, zero value otherwise.
+
+### GetAssetIdBlindingMasksOk
+
+`func (o *TxGenerationContextModel) GetAssetIdBlindingMasksOk() (*[]string, bool)`
+
+GetAssetIdBlindingMasksOk returns a tuple with the AssetIdBlindingMasks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAssetIdBlindingMasks
+
+`func (o *TxGenerationContextModel) SetAssetIdBlindingMasks(v []string)`
+
+SetAssetIdBlindingMasks sets AssetIdBlindingMasks field to given value.
+
+### HasAssetIdBlindingMasks
+
+`func (o *TxGenerationContextModel) HasAssetIdBlindingMasks() bool`
+
+HasAssetIdBlindingMasks returns a boolean if a field has been set.
+
+### GetAmounts
+
+`func (o *TxGenerationContextModel) GetAmounts() []string`
+
+GetAmounts returns the Amounts field if non-nil, zero value otherwise.
+
+### GetAmountsOk
+
+`func (o *TxGenerationContextModel) GetAmountsOk() (*[]string, bool)`
+
+GetAmountsOk returns a tuple with the Amounts field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmounts
+
+`func (o *TxGenerationContextModel) SetAmounts(v []string)`
+
+SetAmounts sets Amounts field to given value.
+
+### HasAmounts
+
+`func (o *TxGenerationContextModel) HasAmounts() bool`
+
+HasAmounts returns a boolean if a field has been set.
+
+### GetAmountBlindingMasks
+
+`func (o *TxGenerationContextModel) GetAmountBlindingMasks() []string`
+
+GetAmountBlindingMasks returns the AmountBlindingMasks field if non-nil, zero value otherwise.
+
+### GetAmountBlindingMasksOk
+
+`func (o *TxGenerationContextModel) GetAmountBlindingMasksOk() (*[]string, bool)`
+
+GetAmountBlindingMasksOk returns a tuple with the AmountBlindingMasks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmountBlindingMasks
+
+`func (o *TxGenerationContextModel) SetAmountBlindingMasks(v []string)`
+
+SetAmountBlindingMasks sets AmountBlindingMasks field to given value.
+
+### HasAmountBlindingMasks
+
+`func (o *TxGenerationContextModel) HasAmountBlindingMasks() bool`
+
+HasAmountBlindingMasks returns a boolean if a field has been set.
+
+### GetPseudoOutsBlindedAssetIds
+
+`func (o *TxGenerationContextModel) GetPseudoOutsBlindedAssetIds() []string`
+
+GetPseudoOutsBlindedAssetIds returns the PseudoOutsBlindedAssetIds field if non-nil, zero value otherwise.
+
+### GetPseudoOutsBlindedAssetIdsOk
+
+`func (o *TxGenerationContextModel) GetPseudoOutsBlindedAssetIdsOk() (*[]string, bool)`
+
+GetPseudoOutsBlindedAssetIdsOk returns a tuple with the PseudoOutsBlindedAssetIds field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPseudoOutsBlindedAssetIds
+
+`func (o *TxGenerationContextModel) SetPseudoOutsBlindedAssetIds(v []string)`
+
+SetPseudoOutsBlindedAssetIds sets PseudoOutsBlindedAssetIds field to given value.
+
+### HasPseudoOutsBlindedAssetIds
+
+`func (o *TxGenerationContextModel) HasPseudoOutsBlindedAssetIds() bool`
+
+HasPseudoOutsBlindedAssetIds returns a boolean if a field has been set.
+
+### GetPseudoOutsPlusRealOutBlindingMasks
+
+`func (o *TxGenerationContextModel) GetPseudoOutsPlusRealOutBlindingMasks() []string`
+
+GetPseudoOutsPlusRealOutBlindingMasks returns the PseudoOutsPlusRealOutBlindingMasks field if non-nil, zero value otherwise.
+
+### GetPseudoOutsPlusRealOutBlindingMasksOk
+
+`func (o *TxGenerationContextModel) GetPseudoOutsPlusRealOutBlindingMasksOk() (*[]string, bool)`
+
+GetPseudoOutsPlusRealOutBlindingMasksOk returns a tuple with the PseudoOutsPlusRealOutBlindingMasks field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPseudoOutsPlusRealOutBlindingMasks
+
+`func (o *TxGenerationContextModel) SetPseudoOutsPlusRealOutBlindingMasks(v []string)`
+
+SetPseudoOutsPlusRealOutBlindingMasks sets PseudoOutsPlusRealOutBlindingMasks field to given value.
+
+### HasPseudoOutsPlusRealOutBlindingMasks
+
+`func (o *TxGenerationContextModel) HasPseudoOutsPlusRealOutBlindingMasks() bool`
+
+HasPseudoOutsPlusRealOutBlindingMasks returns a boolean if a field has been set.
+
+### GetRealZcInsAssetIds
+
+`func (o *TxGenerationContextModel) GetRealZcInsAssetIds() []string`
+
+GetRealZcInsAssetIds returns the RealZcInsAssetIds field if non-nil, zero value otherwise.
+
+### GetRealZcInsAssetIdsOk
+
+`func (o *TxGenerationContextModel) GetRealZcInsAssetIdsOk() (*[]string, bool)`
+
+GetRealZcInsAssetIdsOk returns a tuple with the RealZcInsAssetIds field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetRealZcInsAssetIds
+
+`func (o *TxGenerationContextModel) SetRealZcInsAssetIds(v []string)`
+
+SetRealZcInsAssetIds sets RealZcInsAssetIds field to given value.
+
+### HasRealZcInsAssetIds
+
+`func (o *TxGenerationContextModel) HasRealZcInsAssetIds() bool`
+
+HasRealZcInsAssetIds returns a boolean if a field has been set.
+
+### GetZcInputAmounts
+
+`func (o *TxGenerationContextModel) GetZcInputAmounts() []int32`
+
+GetZcInputAmounts returns the ZcInputAmounts field if non-nil, zero value otherwise.
+
+### GetZcInputAmountsOk
+
+`func (o *TxGenerationContextModel) GetZcInputAmountsOk() (*[]int32, bool)`
+
+GetZcInputAmountsOk returns a tuple with the ZcInputAmounts field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetZcInputAmounts
+
+`func (o *TxGenerationContextModel) SetZcInputAmounts(v []int32)`
+
+SetZcInputAmounts sets ZcInputAmounts field to given value.
+
+### HasZcInputAmounts
+
+`func (o *TxGenerationContextModel) HasZcInputAmounts() bool`
+
+HasZcInputAmounts returns a boolean if a field has been set.
+
+### GetPseudoOutAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) GetPseudoOutAmountCommitmentsSum() string`
+
+GetPseudoOutAmountCommitmentsSum returns the PseudoOutAmountCommitmentsSum field if non-nil, zero value otherwise.
+
+### GetPseudoOutAmountCommitmentsSumOk
+
+`func (o *TxGenerationContextModel) GetPseudoOutAmountCommitmentsSumOk() (*string, bool)`
+
+GetPseudoOutAmountCommitmentsSumOk returns a tuple with the PseudoOutAmountCommitmentsSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPseudoOutAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) SetPseudoOutAmountCommitmentsSum(v string)`
+
+SetPseudoOutAmountCommitmentsSum sets PseudoOutAmountCommitmentsSum field to given value.
+
+### HasPseudoOutAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) HasPseudoOutAmountCommitmentsSum() bool`
+
+HasPseudoOutAmountCommitmentsSum returns a boolean if a field has been set.
+
+### GetPseudoOutAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) GetPseudoOutAmountBlindingMasksSum() string`
+
+GetPseudoOutAmountBlindingMasksSum returns the PseudoOutAmountBlindingMasksSum field if non-nil, zero value otherwise.
+
+### GetPseudoOutAmountBlindingMasksSumOk
+
+`func (o *TxGenerationContextModel) GetPseudoOutAmountBlindingMasksSumOk() (*string, bool)`
+
+GetPseudoOutAmountBlindingMasksSumOk returns a tuple with the PseudoOutAmountBlindingMasksSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetPseudoOutAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) SetPseudoOutAmountBlindingMasksSum(v string)`
+
+SetPseudoOutAmountBlindingMasksSum sets PseudoOutAmountBlindingMasksSum field to given value.
+
+### HasPseudoOutAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) HasPseudoOutAmountBlindingMasksSum() bool`
+
+HasPseudoOutAmountBlindingMasksSum returns a boolean if a field has been set.
+
+### GetRealInAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) GetRealInAssetIdBlindingMaskXAmountSum() string`
+
+GetRealInAssetIdBlindingMaskXAmountSum returns the RealInAssetIdBlindingMaskXAmountSum field if non-nil, zero value otherwise.
+
+### GetRealInAssetIdBlindingMaskXAmountSumOk
+
+`func (o *TxGenerationContextModel) GetRealInAssetIdBlindingMaskXAmountSumOk() (*string, bool)`
+
+GetRealInAssetIdBlindingMaskXAmountSumOk returns a tuple with the RealInAssetIdBlindingMaskXAmountSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetRealInAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) SetRealInAssetIdBlindingMaskXAmountSum(v string)`
+
+SetRealInAssetIdBlindingMaskXAmountSum sets RealInAssetIdBlindingMaskXAmountSum field to given value.
+
+### HasRealInAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) HasRealInAssetIdBlindingMaskXAmountSum() bool`
+
+HasRealInAssetIdBlindingMaskXAmountSum returns a boolean if a field has been set.
+
+### GetAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) GetAmountCommitmentsSum() string`
+
+GetAmountCommitmentsSum returns the AmountCommitmentsSum field if non-nil, zero value otherwise.
+
+### GetAmountCommitmentsSumOk
+
+`func (o *TxGenerationContextModel) GetAmountCommitmentsSumOk() (*string, bool)`
+
+GetAmountCommitmentsSumOk returns a tuple with the AmountCommitmentsSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) SetAmountCommitmentsSum(v string)`
+
+SetAmountCommitmentsSum sets AmountCommitmentsSum field to given value.
+
+### HasAmountCommitmentsSum
+
+`func (o *TxGenerationContextModel) HasAmountCommitmentsSum() bool`
+
+HasAmountCommitmentsSum returns a boolean if a field has been set.
+
+### GetAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) GetAmountBlindingMasksSum() string`
+
+GetAmountBlindingMasksSum returns the AmountBlindingMasksSum field if non-nil, zero value otherwise.
+
+### GetAmountBlindingMasksSumOk
+
+`func (o *TxGenerationContextModel) GetAmountBlindingMasksSumOk() (*string, bool)`
+
+GetAmountBlindingMasksSumOk returns a tuple with the AmountBlindingMasksSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) SetAmountBlindingMasksSum(v string)`
+
+SetAmountBlindingMasksSum sets AmountBlindingMasksSum field to given value.
+
+### HasAmountBlindingMasksSum
+
+`func (o *TxGenerationContextModel) HasAmountBlindingMasksSum() bool`
+
+HasAmountBlindingMasksSum returns a boolean if a field has been set.
+
+### GetAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) GetAssetIdBlindingMaskXAmountSum() string`
+
+GetAssetIdBlindingMaskXAmountSum returns the AssetIdBlindingMaskXAmountSum field if non-nil, zero value otherwise.
+
+### GetAssetIdBlindingMaskXAmountSumOk
+
+`func (o *TxGenerationContextModel) GetAssetIdBlindingMaskXAmountSumOk() (*string, bool)`
+
+GetAssetIdBlindingMaskXAmountSumOk returns a tuple with the AssetIdBlindingMaskXAmountSum field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) SetAssetIdBlindingMaskXAmountSum(v string)`
+
+SetAssetIdBlindingMaskXAmountSum sets AssetIdBlindingMaskXAmountSum field to given value.
+
+### HasAssetIdBlindingMaskXAmountSum
+
+`func (o *TxGenerationContextModel) HasAssetIdBlindingMaskXAmountSum() bool`
+
+HasAssetIdBlindingMaskXAmountSum returns a boolean if a field has been set.
+
+### GetAoAssetId
+
+`func (o *TxGenerationContextModel) GetAoAssetId() string`
+
+GetAoAssetId returns the AoAssetId field if non-nil, zero value otherwise.
+
+### GetAoAssetIdOk
+
+`func (o *TxGenerationContextModel) GetAoAssetIdOk() (*string, bool)`
+
+GetAoAssetIdOk returns a tuple with the AoAssetId field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAoAssetId
+
+`func (o *TxGenerationContextModel) SetAoAssetId(v string)`
+
+SetAoAssetId sets AoAssetId field to given value.
+
+### HasAoAssetId
+
+`func (o *TxGenerationContextModel) HasAoAssetId() bool`
+
+HasAoAssetId returns a boolean if a field has been set.
+
+### GetAoAssetIdPt
+
+`func (o *TxGenerationContextModel) GetAoAssetIdPt() string`
+
+GetAoAssetIdPt returns the AoAssetIdPt field if non-nil, zero value otherwise.
+
+### GetAoAssetIdPtOk
+
+`func (o *TxGenerationContextModel) GetAoAssetIdPtOk() (*string, bool)`
+
+GetAoAssetIdPtOk returns a tuple with the AoAssetIdPt field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAoAssetIdPt
+
+`func (o *TxGenerationContextModel) SetAoAssetIdPt(v string)`
+
+SetAoAssetIdPt sets AoAssetIdPt field to given value.
+
+### HasAoAssetIdPt
+
+`func (o *TxGenerationContextModel) HasAoAssetIdPt() bool`
+
+HasAoAssetIdPt returns a boolean if a field has been set.
+
+### GetAoAmountCommitment
+
+`func (o *TxGenerationContextModel) GetAoAmountCommitment() string`
+
+GetAoAmountCommitment returns the AoAmountCommitment field if non-nil, zero value otherwise.
+
+### GetAoAmountCommitmentOk
+
+`func (o *TxGenerationContextModel) GetAoAmountCommitmentOk() (*string, bool)`
+
+GetAoAmountCommitmentOk returns a tuple with the AoAmountCommitment field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAoAmountCommitment
+
+`func (o *TxGenerationContextModel) SetAoAmountCommitment(v string)`
+
+SetAoAmountCommitment sets AoAmountCommitment field to given value.
+
+### HasAoAmountCommitment
+
+`func (o *TxGenerationContextModel) HasAoAmountCommitment() bool`
+
+HasAoAmountCommitment returns a boolean if a field has been set.
+
+### GetAoAmountBlindingMask
+
+`func (o *TxGenerationContextModel) GetAoAmountBlindingMask() string`
+
+GetAoAmountBlindingMask returns the AoAmountBlindingMask field if non-nil, zero value otherwise.
+
+### GetAoAmountBlindingMaskOk
+
+`func (o *TxGenerationContextModel) GetAoAmountBlindingMaskOk() (*string, bool)`
+
+GetAoAmountBlindingMaskOk returns a tuple with the AoAmountBlindingMask field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAoAmountBlindingMask
+
+`func (o *TxGenerationContextModel) SetAoAmountBlindingMask(v string)`
+
+SetAoAmountBlindingMask sets AoAmountBlindingMask field to given value.
+
+### HasAoAmountBlindingMask
+
+`func (o *TxGenerationContextModel) HasAoAmountBlindingMask() bool`
+
+HasAoAmountBlindingMask returns a boolean if a field has been set.
+
+### GetAoCommitmentInOutputs
+
+`func (o *TxGenerationContextModel) GetAoCommitmentInOutputs() bool`
+
+GetAoCommitmentInOutputs returns the AoCommitmentInOutputs field if non-nil, zero value otherwise.
+
+### GetAoCommitmentInOutputsOk
+
+`func (o *TxGenerationContextModel) GetAoCommitmentInOutputsOk() (*bool, bool)`
+
+GetAoCommitmentInOutputsOk returns a tuple with the AoCommitmentInOutputs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetAoCommitmentInOutputs
+
+`func (o *TxGenerationContextModel) SetAoCommitmentInOutputs(v bool)`
+
+SetAoCommitmentInOutputs sets AoCommitmentInOutputs field to given value.
+
+### HasAoCommitmentInOutputs
+
+`func (o *TxGenerationContextModel) HasAoCommitmentInOutputs() bool`
+
+HasAoCommitmentInOutputs returns a boolean if a field has been set.
+
+### GetTxKeyPub
+
+`func (o *TxGenerationContextModel) GetTxKeyPub() string`
+
+GetTxKeyPub returns the TxKeyPub field if non-nil, zero value otherwise.
+
+### GetTxKeyPubOk
+
+`func (o *TxGenerationContextModel) GetTxKeyPubOk() (*string, bool)`
+
+GetTxKeyPubOk returns a tuple with the TxKeyPub field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxKeyPub
+
+`func (o *TxGenerationContextModel) SetTxKeyPub(v string)`
+
+SetTxKeyPub sets TxKeyPub field to given value.
+
+### HasTxKeyPub
+
+`func (o *TxGenerationContextModel) HasTxKeyPub() bool`
+
+HasTxKeyPub returns a boolean if a field has been set.
+
+### GetTxKeySec
+
+`func (o *TxGenerationContextModel) GetTxKeySec() string`
+
+GetTxKeySec returns the TxKeySec field if non-nil, zero value otherwise.
+
+### GetTxKeySecOk
+
+`func (o *TxGenerationContextModel) GetTxKeySecOk() (*string, bool)`
+
+GetTxKeySecOk returns a tuple with the TxKeySec field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxKeySec
+
+`func (o *TxGenerationContextModel) SetTxKeySec(v string)`
+
+SetTxKeySec sets TxKeySec field to given value.
+
+### HasTxKeySec
+
+`func (o *TxGenerationContextModel) HasTxKeySec() bool`
+
+HasTxKeySec returns a boolean if a field has been set.
+
+### GetTxPubKeyP
+
+`func (o *TxGenerationContextModel) GetTxPubKeyP() string`
+
+GetTxPubKeyP returns the TxPubKeyP field if non-nil, zero value otherwise.
+
+### GetTxPubKeyPOk
+
+`func (o *TxGenerationContextModel) GetTxPubKeyPOk() (*string, bool)`
+
+GetTxPubKeyPOk returns a tuple with the TxPubKeyP field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPubKeyP
+
+`func (o *TxGenerationContextModel) SetTxPubKeyP(v string)`
+
+SetTxPubKeyP sets TxPubKeyP field to given value.
+
+### HasTxPubKeyP
+
+`func (o *TxGenerationContextModel) HasTxPubKeyP() bool`
+
+HasTxPubKeyP returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TxPoolPerformanceModel.md b/utils/sdk/client/go/docs/TxPoolPerformanceModel.md
new file mode 100644
index 00000000..a07bed42
--- /dev/null
+++ b/utils/sdk/client/go/docs/TxPoolPerformanceModel.md
@@ -0,0 +1,316 @@
+# TxPoolPerformanceModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**TxProcessingTime** | Pointer to **int32** | | [optional]
+**CheckInputsTypesSupportedTime** | Pointer to **int32** | | [optional]
+**ExpirationValidateTime** | Pointer to **int32** | | [optional]
+**ValidateAmountTime** | Pointer to **int32** | | [optional]
+**ValidateAliasTime** | Pointer to **int32** | | [optional]
+**CheckKeyimagesWsMsTime** | Pointer to **int32** | | [optional]
+**CheckInputsTime** | Pointer to **int32** | | [optional]
+**BeginTxTime** | Pointer to **int32** | | [optional]
+**UpdateDbTime** | Pointer to **int32** | | [optional]
+**DbCommitTime** | Pointer to **int32** | | [optional]
+**CheckPostHf4Balance** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewTxPoolPerformanceModel
+
+`func NewTxPoolPerformanceModel() *TxPoolPerformanceModel`
+
+NewTxPoolPerformanceModel instantiates a new TxPoolPerformanceModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTxPoolPerformanceModelWithDefaults
+
+`func NewTxPoolPerformanceModelWithDefaults() *TxPoolPerformanceModel`
+
+NewTxPoolPerformanceModelWithDefaults instantiates a new TxPoolPerformanceModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetTxProcessingTime
+
+`func (o *TxPoolPerformanceModel) GetTxProcessingTime() int32`
+
+GetTxProcessingTime returns the TxProcessingTime field if non-nil, zero value otherwise.
+
+### GetTxProcessingTimeOk
+
+`func (o *TxPoolPerformanceModel) GetTxProcessingTimeOk() (*int32, bool)`
+
+GetTxProcessingTimeOk returns a tuple with the TxProcessingTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxProcessingTime
+
+`func (o *TxPoolPerformanceModel) SetTxProcessingTime(v int32)`
+
+SetTxProcessingTime sets TxProcessingTime field to given value.
+
+### HasTxProcessingTime
+
+`func (o *TxPoolPerformanceModel) HasTxProcessingTime() bool`
+
+HasTxProcessingTime returns a boolean if a field has been set.
+
+### GetCheckInputsTypesSupportedTime
+
+`func (o *TxPoolPerformanceModel) GetCheckInputsTypesSupportedTime() int32`
+
+GetCheckInputsTypesSupportedTime returns the CheckInputsTypesSupportedTime field if non-nil, zero value otherwise.
+
+### GetCheckInputsTypesSupportedTimeOk
+
+`func (o *TxPoolPerformanceModel) GetCheckInputsTypesSupportedTimeOk() (*int32, bool)`
+
+GetCheckInputsTypesSupportedTimeOk returns a tuple with the CheckInputsTypesSupportedTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCheckInputsTypesSupportedTime
+
+`func (o *TxPoolPerformanceModel) SetCheckInputsTypesSupportedTime(v int32)`
+
+SetCheckInputsTypesSupportedTime sets CheckInputsTypesSupportedTime field to given value.
+
+### HasCheckInputsTypesSupportedTime
+
+`func (o *TxPoolPerformanceModel) HasCheckInputsTypesSupportedTime() bool`
+
+HasCheckInputsTypesSupportedTime returns a boolean if a field has been set.
+
+### GetExpirationValidateTime
+
+`func (o *TxPoolPerformanceModel) GetExpirationValidateTime() int32`
+
+GetExpirationValidateTime returns the ExpirationValidateTime field if non-nil, zero value otherwise.
+
+### GetExpirationValidateTimeOk
+
+`func (o *TxPoolPerformanceModel) GetExpirationValidateTimeOk() (*int32, bool)`
+
+GetExpirationValidateTimeOk returns a tuple with the ExpirationValidateTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetExpirationValidateTime
+
+`func (o *TxPoolPerformanceModel) SetExpirationValidateTime(v int32)`
+
+SetExpirationValidateTime sets ExpirationValidateTime field to given value.
+
+### HasExpirationValidateTime
+
+`func (o *TxPoolPerformanceModel) HasExpirationValidateTime() bool`
+
+HasExpirationValidateTime returns a boolean if a field has been set.
+
+### GetValidateAmountTime
+
+`func (o *TxPoolPerformanceModel) GetValidateAmountTime() int32`
+
+GetValidateAmountTime returns the ValidateAmountTime field if non-nil, zero value otherwise.
+
+### GetValidateAmountTimeOk
+
+`func (o *TxPoolPerformanceModel) GetValidateAmountTimeOk() (*int32, bool)`
+
+GetValidateAmountTimeOk returns a tuple with the ValidateAmountTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetValidateAmountTime
+
+`func (o *TxPoolPerformanceModel) SetValidateAmountTime(v int32)`
+
+SetValidateAmountTime sets ValidateAmountTime field to given value.
+
+### HasValidateAmountTime
+
+`func (o *TxPoolPerformanceModel) HasValidateAmountTime() bool`
+
+HasValidateAmountTime returns a boolean if a field has been set.
+
+### GetValidateAliasTime
+
+`func (o *TxPoolPerformanceModel) GetValidateAliasTime() int32`
+
+GetValidateAliasTime returns the ValidateAliasTime field if non-nil, zero value otherwise.
+
+### GetValidateAliasTimeOk
+
+`func (o *TxPoolPerformanceModel) GetValidateAliasTimeOk() (*int32, bool)`
+
+GetValidateAliasTimeOk returns a tuple with the ValidateAliasTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetValidateAliasTime
+
+`func (o *TxPoolPerformanceModel) SetValidateAliasTime(v int32)`
+
+SetValidateAliasTime sets ValidateAliasTime field to given value.
+
+### HasValidateAliasTime
+
+`func (o *TxPoolPerformanceModel) HasValidateAliasTime() bool`
+
+HasValidateAliasTime returns a boolean if a field has been set.
+
+### GetCheckKeyimagesWsMsTime
+
+`func (o *TxPoolPerformanceModel) GetCheckKeyimagesWsMsTime() int32`
+
+GetCheckKeyimagesWsMsTime returns the CheckKeyimagesWsMsTime field if non-nil, zero value otherwise.
+
+### GetCheckKeyimagesWsMsTimeOk
+
+`func (o *TxPoolPerformanceModel) GetCheckKeyimagesWsMsTimeOk() (*int32, bool)`
+
+GetCheckKeyimagesWsMsTimeOk returns a tuple with the CheckKeyimagesWsMsTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCheckKeyimagesWsMsTime
+
+`func (o *TxPoolPerformanceModel) SetCheckKeyimagesWsMsTime(v int32)`
+
+SetCheckKeyimagesWsMsTime sets CheckKeyimagesWsMsTime field to given value.
+
+### HasCheckKeyimagesWsMsTime
+
+`func (o *TxPoolPerformanceModel) HasCheckKeyimagesWsMsTime() bool`
+
+HasCheckKeyimagesWsMsTime returns a boolean if a field has been set.
+
+### GetCheckInputsTime
+
+`func (o *TxPoolPerformanceModel) GetCheckInputsTime() int32`
+
+GetCheckInputsTime returns the CheckInputsTime field if non-nil, zero value otherwise.
+
+### GetCheckInputsTimeOk
+
+`func (o *TxPoolPerformanceModel) GetCheckInputsTimeOk() (*int32, bool)`
+
+GetCheckInputsTimeOk returns a tuple with the CheckInputsTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCheckInputsTime
+
+`func (o *TxPoolPerformanceModel) SetCheckInputsTime(v int32)`
+
+SetCheckInputsTime sets CheckInputsTime field to given value.
+
+### HasCheckInputsTime
+
+`func (o *TxPoolPerformanceModel) HasCheckInputsTime() bool`
+
+HasCheckInputsTime returns a boolean if a field has been set.
+
+### GetBeginTxTime
+
+`func (o *TxPoolPerformanceModel) GetBeginTxTime() int32`
+
+GetBeginTxTime returns the BeginTxTime field if non-nil, zero value otherwise.
+
+### GetBeginTxTimeOk
+
+`func (o *TxPoolPerformanceModel) GetBeginTxTimeOk() (*int32, bool)`
+
+GetBeginTxTimeOk returns a tuple with the BeginTxTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetBeginTxTime
+
+`func (o *TxPoolPerformanceModel) SetBeginTxTime(v int32)`
+
+SetBeginTxTime sets BeginTxTime field to given value.
+
+### HasBeginTxTime
+
+`func (o *TxPoolPerformanceModel) HasBeginTxTime() bool`
+
+HasBeginTxTime returns a boolean if a field has been set.
+
+### GetUpdateDbTime
+
+`func (o *TxPoolPerformanceModel) GetUpdateDbTime() int32`
+
+GetUpdateDbTime returns the UpdateDbTime field if non-nil, zero value otherwise.
+
+### GetUpdateDbTimeOk
+
+`func (o *TxPoolPerformanceModel) GetUpdateDbTimeOk() (*int32, bool)`
+
+GetUpdateDbTimeOk returns a tuple with the UpdateDbTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetUpdateDbTime
+
+`func (o *TxPoolPerformanceModel) SetUpdateDbTime(v int32)`
+
+SetUpdateDbTime sets UpdateDbTime field to given value.
+
+### HasUpdateDbTime
+
+`func (o *TxPoolPerformanceModel) HasUpdateDbTime() bool`
+
+HasUpdateDbTime returns a boolean if a field has been set.
+
+### GetDbCommitTime
+
+`func (o *TxPoolPerformanceModel) GetDbCommitTime() int32`
+
+GetDbCommitTime returns the DbCommitTime field if non-nil, zero value otherwise.
+
+### GetDbCommitTimeOk
+
+`func (o *TxPoolPerformanceModel) GetDbCommitTimeOk() (*int32, bool)`
+
+GetDbCommitTimeOk returns a tuple with the DbCommitTime field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetDbCommitTime
+
+`func (o *TxPoolPerformanceModel) SetDbCommitTime(v int32)`
+
+SetDbCommitTime sets DbCommitTime field to given value.
+
+### HasDbCommitTime
+
+`func (o *TxPoolPerformanceModel) HasDbCommitTime() bool`
+
+HasDbCommitTime returns a boolean if a field has been set.
+
+### GetCheckPostHf4Balance
+
+`func (o *TxPoolPerformanceModel) GetCheckPostHf4Balance() int32`
+
+GetCheckPostHf4Balance returns the CheckPostHf4Balance field if non-nil, zero value otherwise.
+
+### GetCheckPostHf4BalanceOk
+
+`func (o *TxPoolPerformanceModel) GetCheckPostHf4BalanceOk() (*int32, bool)`
+
+GetCheckPostHf4BalanceOk returns a tuple with the CheckPostHf4Balance field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetCheckPostHf4Balance
+
+`func (o *TxPoolPerformanceModel) SetCheckPostHf4Balance(v int32)`
+
+SetCheckPostHf4Balance sets CheckPostHf4Balance field to given value.
+
+### HasCheckPostHf4Balance
+
+`func (o *TxPoolPerformanceModel) HasCheckPostHf4Balance() bool`
+
+HasCheckPostHf4Balance returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/TxProcessingPerformanceModel.md b/utils/sdk/client/go/docs/TxProcessingPerformanceModel.md
new file mode 100644
index 00000000..9e6aa88e
--- /dev/null
+++ b/utils/sdk/client/go/docs/TxProcessingPerformanceModel.md
@@ -0,0 +1,680 @@
+# TxProcessingPerformanceModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**TxCheckInputs** | Pointer to **int32** | | [optional]
+**TxAddOneTx** | Pointer to **int32** | | [optional]
+**TxProcessExtra** | Pointer to **int32** | | [optional]
+**TxProcessAttachment** | Pointer to **int32** | | [optional]
+**TxProcessInputs** | Pointer to **int32** | | [optional]
+**TxPushGlobalIndex** | Pointer to **int32** | | [optional]
+**TxCheckExist** | Pointer to **int32** | | [optional]
+**TxPrintLog** | Pointer to **int32** | | [optional]
+**TxPrapareAppend** | Pointer to **int32** | | [optional]
+**TxAppend** | Pointer to **int32** | | [optional]
+**TxAppendRlWait** | Pointer to **int32** | | [optional]
+**TxAppendIsExpired** | Pointer to **int32** | | [optional]
+**TxStoreDb** | Pointer to **int32** | | [optional]
+**TxCheckInputsPrefixHash** | Pointer to **int32** | | [optional]
+**TxCheckInputsAttachmentCheck** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoop** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopKimageCheck** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopChInValSig** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysGetItemSize** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysRelativeToAbsolute** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysLoop** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysLoopGetSubitem** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysLoopFindTx** | Pointer to **int32** | | [optional]
+**TxCheckInputsLoopScanOutputkeysLoopHandleOutput** | Pointer to **int32** | | [optional]
+**TxMixinCount** | Pointer to **int32** | | [optional]
+
+## Methods
+
+### NewTxProcessingPerformanceModel
+
+`func NewTxProcessingPerformanceModel() *TxProcessingPerformanceModel`
+
+NewTxProcessingPerformanceModel instantiates a new TxProcessingPerformanceModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewTxProcessingPerformanceModelWithDefaults
+
+`func NewTxProcessingPerformanceModelWithDefaults() *TxProcessingPerformanceModel`
+
+NewTxProcessingPerformanceModelWithDefaults instantiates a new TxProcessingPerformanceModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetTxCheckInputs
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputs() int32`
+
+GetTxCheckInputs returns the TxCheckInputs field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsOk() (*int32, bool)`
+
+GetTxCheckInputsOk returns a tuple with the TxCheckInputs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputs
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputs(v int32)`
+
+SetTxCheckInputs sets TxCheckInputs field to given value.
+
+### HasTxCheckInputs
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputs() bool`
+
+HasTxCheckInputs returns a boolean if a field has been set.
+
+### GetTxAddOneTx
+
+`func (o *TxProcessingPerformanceModel) GetTxAddOneTx() int32`
+
+GetTxAddOneTx returns the TxAddOneTx field if non-nil, zero value otherwise.
+
+### GetTxAddOneTxOk
+
+`func (o *TxProcessingPerformanceModel) GetTxAddOneTxOk() (*int32, bool)`
+
+GetTxAddOneTxOk returns a tuple with the TxAddOneTx field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxAddOneTx
+
+`func (o *TxProcessingPerformanceModel) SetTxAddOneTx(v int32)`
+
+SetTxAddOneTx sets TxAddOneTx field to given value.
+
+### HasTxAddOneTx
+
+`func (o *TxProcessingPerformanceModel) HasTxAddOneTx() bool`
+
+HasTxAddOneTx returns a boolean if a field has been set.
+
+### GetTxProcessExtra
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessExtra() int32`
+
+GetTxProcessExtra returns the TxProcessExtra field if non-nil, zero value otherwise.
+
+### GetTxProcessExtraOk
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessExtraOk() (*int32, bool)`
+
+GetTxProcessExtraOk returns a tuple with the TxProcessExtra field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxProcessExtra
+
+`func (o *TxProcessingPerformanceModel) SetTxProcessExtra(v int32)`
+
+SetTxProcessExtra sets TxProcessExtra field to given value.
+
+### HasTxProcessExtra
+
+`func (o *TxProcessingPerformanceModel) HasTxProcessExtra() bool`
+
+HasTxProcessExtra returns a boolean if a field has been set.
+
+### GetTxProcessAttachment
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessAttachment() int32`
+
+GetTxProcessAttachment returns the TxProcessAttachment field if non-nil, zero value otherwise.
+
+### GetTxProcessAttachmentOk
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessAttachmentOk() (*int32, bool)`
+
+GetTxProcessAttachmentOk returns a tuple with the TxProcessAttachment field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxProcessAttachment
+
+`func (o *TxProcessingPerformanceModel) SetTxProcessAttachment(v int32)`
+
+SetTxProcessAttachment sets TxProcessAttachment field to given value.
+
+### HasTxProcessAttachment
+
+`func (o *TxProcessingPerformanceModel) HasTxProcessAttachment() bool`
+
+HasTxProcessAttachment returns a boolean if a field has been set.
+
+### GetTxProcessInputs
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessInputs() int32`
+
+GetTxProcessInputs returns the TxProcessInputs field if non-nil, zero value otherwise.
+
+### GetTxProcessInputsOk
+
+`func (o *TxProcessingPerformanceModel) GetTxProcessInputsOk() (*int32, bool)`
+
+GetTxProcessInputsOk returns a tuple with the TxProcessInputs field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxProcessInputs
+
+`func (o *TxProcessingPerformanceModel) SetTxProcessInputs(v int32)`
+
+SetTxProcessInputs sets TxProcessInputs field to given value.
+
+### HasTxProcessInputs
+
+`func (o *TxProcessingPerformanceModel) HasTxProcessInputs() bool`
+
+HasTxProcessInputs returns a boolean if a field has been set.
+
+### GetTxPushGlobalIndex
+
+`func (o *TxProcessingPerformanceModel) GetTxPushGlobalIndex() int32`
+
+GetTxPushGlobalIndex returns the TxPushGlobalIndex field if non-nil, zero value otherwise.
+
+### GetTxPushGlobalIndexOk
+
+`func (o *TxProcessingPerformanceModel) GetTxPushGlobalIndexOk() (*int32, bool)`
+
+GetTxPushGlobalIndexOk returns a tuple with the TxPushGlobalIndex field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPushGlobalIndex
+
+`func (o *TxProcessingPerformanceModel) SetTxPushGlobalIndex(v int32)`
+
+SetTxPushGlobalIndex sets TxPushGlobalIndex field to given value.
+
+### HasTxPushGlobalIndex
+
+`func (o *TxProcessingPerformanceModel) HasTxPushGlobalIndex() bool`
+
+HasTxPushGlobalIndex returns a boolean if a field has been set.
+
+### GetTxCheckExist
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckExist() int32`
+
+GetTxCheckExist returns the TxCheckExist field if non-nil, zero value otherwise.
+
+### GetTxCheckExistOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckExistOk() (*int32, bool)`
+
+GetTxCheckExistOk returns a tuple with the TxCheckExist field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckExist
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckExist(v int32)`
+
+SetTxCheckExist sets TxCheckExist field to given value.
+
+### HasTxCheckExist
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckExist() bool`
+
+HasTxCheckExist returns a boolean if a field has been set.
+
+### GetTxPrintLog
+
+`func (o *TxProcessingPerformanceModel) GetTxPrintLog() int32`
+
+GetTxPrintLog returns the TxPrintLog field if non-nil, zero value otherwise.
+
+### GetTxPrintLogOk
+
+`func (o *TxProcessingPerformanceModel) GetTxPrintLogOk() (*int32, bool)`
+
+GetTxPrintLogOk returns a tuple with the TxPrintLog field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPrintLog
+
+`func (o *TxProcessingPerformanceModel) SetTxPrintLog(v int32)`
+
+SetTxPrintLog sets TxPrintLog field to given value.
+
+### HasTxPrintLog
+
+`func (o *TxProcessingPerformanceModel) HasTxPrintLog() bool`
+
+HasTxPrintLog returns a boolean if a field has been set.
+
+### GetTxPrapareAppend
+
+`func (o *TxProcessingPerformanceModel) GetTxPrapareAppend() int32`
+
+GetTxPrapareAppend returns the TxPrapareAppend field if non-nil, zero value otherwise.
+
+### GetTxPrapareAppendOk
+
+`func (o *TxProcessingPerformanceModel) GetTxPrapareAppendOk() (*int32, bool)`
+
+GetTxPrapareAppendOk returns a tuple with the TxPrapareAppend field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxPrapareAppend
+
+`func (o *TxProcessingPerformanceModel) SetTxPrapareAppend(v int32)`
+
+SetTxPrapareAppend sets TxPrapareAppend field to given value.
+
+### HasTxPrapareAppend
+
+`func (o *TxProcessingPerformanceModel) HasTxPrapareAppend() bool`
+
+HasTxPrapareAppend returns a boolean if a field has been set.
+
+### GetTxAppend
+
+`func (o *TxProcessingPerformanceModel) GetTxAppend() int32`
+
+GetTxAppend returns the TxAppend field if non-nil, zero value otherwise.
+
+### GetTxAppendOk
+
+`func (o *TxProcessingPerformanceModel) GetTxAppendOk() (*int32, bool)`
+
+GetTxAppendOk returns a tuple with the TxAppend field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxAppend
+
+`func (o *TxProcessingPerformanceModel) SetTxAppend(v int32)`
+
+SetTxAppend sets TxAppend field to given value.
+
+### HasTxAppend
+
+`func (o *TxProcessingPerformanceModel) HasTxAppend() bool`
+
+HasTxAppend returns a boolean if a field has been set.
+
+### GetTxAppendRlWait
+
+`func (o *TxProcessingPerformanceModel) GetTxAppendRlWait() int32`
+
+GetTxAppendRlWait returns the TxAppendRlWait field if non-nil, zero value otherwise.
+
+### GetTxAppendRlWaitOk
+
+`func (o *TxProcessingPerformanceModel) GetTxAppendRlWaitOk() (*int32, bool)`
+
+GetTxAppendRlWaitOk returns a tuple with the TxAppendRlWait field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxAppendRlWait
+
+`func (o *TxProcessingPerformanceModel) SetTxAppendRlWait(v int32)`
+
+SetTxAppendRlWait sets TxAppendRlWait field to given value.
+
+### HasTxAppendRlWait
+
+`func (o *TxProcessingPerformanceModel) HasTxAppendRlWait() bool`
+
+HasTxAppendRlWait returns a boolean if a field has been set.
+
+### GetTxAppendIsExpired
+
+`func (o *TxProcessingPerformanceModel) GetTxAppendIsExpired() int32`
+
+GetTxAppendIsExpired returns the TxAppendIsExpired field if non-nil, zero value otherwise.
+
+### GetTxAppendIsExpiredOk
+
+`func (o *TxProcessingPerformanceModel) GetTxAppendIsExpiredOk() (*int32, bool)`
+
+GetTxAppendIsExpiredOk returns a tuple with the TxAppendIsExpired field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxAppendIsExpired
+
+`func (o *TxProcessingPerformanceModel) SetTxAppendIsExpired(v int32)`
+
+SetTxAppendIsExpired sets TxAppendIsExpired field to given value.
+
+### HasTxAppendIsExpired
+
+`func (o *TxProcessingPerformanceModel) HasTxAppendIsExpired() bool`
+
+HasTxAppendIsExpired returns a boolean if a field has been set.
+
+### GetTxStoreDb
+
+`func (o *TxProcessingPerformanceModel) GetTxStoreDb() int32`
+
+GetTxStoreDb returns the TxStoreDb field if non-nil, zero value otherwise.
+
+### GetTxStoreDbOk
+
+`func (o *TxProcessingPerformanceModel) GetTxStoreDbOk() (*int32, bool)`
+
+GetTxStoreDbOk returns a tuple with the TxStoreDb field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxStoreDb
+
+`func (o *TxProcessingPerformanceModel) SetTxStoreDb(v int32)`
+
+SetTxStoreDb sets TxStoreDb field to given value.
+
+### HasTxStoreDb
+
+`func (o *TxProcessingPerformanceModel) HasTxStoreDb() bool`
+
+HasTxStoreDb returns a boolean if a field has been set.
+
+### GetTxCheckInputsPrefixHash
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsPrefixHash() int32`
+
+GetTxCheckInputsPrefixHash returns the TxCheckInputsPrefixHash field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsPrefixHashOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsPrefixHashOk() (*int32, bool)`
+
+GetTxCheckInputsPrefixHashOk returns a tuple with the TxCheckInputsPrefixHash field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsPrefixHash
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsPrefixHash(v int32)`
+
+SetTxCheckInputsPrefixHash sets TxCheckInputsPrefixHash field to given value.
+
+### HasTxCheckInputsPrefixHash
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsPrefixHash() bool`
+
+HasTxCheckInputsPrefixHash returns a boolean if a field has been set.
+
+### GetTxCheckInputsAttachmentCheck
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsAttachmentCheck() int32`
+
+GetTxCheckInputsAttachmentCheck returns the TxCheckInputsAttachmentCheck field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsAttachmentCheckOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsAttachmentCheckOk() (*int32, bool)`
+
+GetTxCheckInputsAttachmentCheckOk returns a tuple with the TxCheckInputsAttachmentCheck field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsAttachmentCheck
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsAttachmentCheck(v int32)`
+
+SetTxCheckInputsAttachmentCheck sets TxCheckInputsAttachmentCheck field to given value.
+
+### HasTxCheckInputsAttachmentCheck
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsAttachmentCheck() bool`
+
+HasTxCheckInputsAttachmentCheck returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoop
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoop() int32`
+
+GetTxCheckInputsLoop returns the TxCheckInputsLoop field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopOk() (*int32, bool)`
+
+GetTxCheckInputsLoopOk returns a tuple with the TxCheckInputsLoop field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoop
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoop(v int32)`
+
+SetTxCheckInputsLoop sets TxCheckInputsLoop field to given value.
+
+### HasTxCheckInputsLoop
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoop() bool`
+
+HasTxCheckInputsLoop returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopKimageCheck
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopKimageCheck() int32`
+
+GetTxCheckInputsLoopKimageCheck returns the TxCheckInputsLoopKimageCheck field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopKimageCheckOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopKimageCheckOk() (*int32, bool)`
+
+GetTxCheckInputsLoopKimageCheckOk returns a tuple with the TxCheckInputsLoopKimageCheck field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopKimageCheck
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopKimageCheck(v int32)`
+
+SetTxCheckInputsLoopKimageCheck sets TxCheckInputsLoopKimageCheck field to given value.
+
+### HasTxCheckInputsLoopKimageCheck
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopKimageCheck() bool`
+
+HasTxCheckInputsLoopKimageCheck returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopChInValSig
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopChInValSig() int32`
+
+GetTxCheckInputsLoopChInValSig returns the TxCheckInputsLoopChInValSig field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopChInValSigOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopChInValSigOk() (*int32, bool)`
+
+GetTxCheckInputsLoopChInValSigOk returns a tuple with the TxCheckInputsLoopChInValSig field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopChInValSig
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopChInValSig(v int32)`
+
+SetTxCheckInputsLoopChInValSig sets TxCheckInputsLoopChInValSig field to given value.
+
+### HasTxCheckInputsLoopChInValSig
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopChInValSig() bool`
+
+HasTxCheckInputsLoopChInValSig returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysGetItemSize
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysGetItemSize() int32`
+
+GetTxCheckInputsLoopScanOutputkeysGetItemSize returns the TxCheckInputsLoopScanOutputkeysGetItemSize field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysGetItemSizeOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysGetItemSizeOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysGetItemSizeOk returns a tuple with the TxCheckInputsLoopScanOutputkeysGetItemSize field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysGetItemSize
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysGetItemSize(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysGetItemSize sets TxCheckInputsLoopScanOutputkeysGetItemSize field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysGetItemSize
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysGetItemSize() bool`
+
+HasTxCheckInputsLoopScanOutputkeysGetItemSize returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() int32`
+
+GetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute returns the TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysRelativeToAbsoluteOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysRelativeToAbsoluteOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysRelativeToAbsoluteOk returns a tuple with the TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute sets TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysRelativeToAbsolute
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() bool`
+
+HasTxCheckInputsLoopScanOutputkeysRelativeToAbsolute returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysLoop
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoop() int32`
+
+GetTxCheckInputsLoopScanOutputkeysLoop returns the TxCheckInputsLoopScanOutputkeysLoop field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysLoopOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoop field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysLoop
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoop(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysLoop sets TxCheckInputsLoopScanOutputkeysLoop field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysLoop
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoop() bool`
+
+HasTxCheckInputsLoopScanOutputkeysLoop returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopGetSubitem
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopGetSubitem() int32`
+
+GetTxCheckInputsLoopScanOutputkeysLoopGetSubitem returns the TxCheckInputsLoopScanOutputkeysLoopGetSubitem field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopGetSubitemOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopGetSubitemOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysLoopGetSubitemOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopGetSubitem field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysLoopGetSubitem
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopGetSubitem(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysLoopGetSubitem sets TxCheckInputsLoopScanOutputkeysLoopGetSubitem field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysLoopGetSubitem
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopGetSubitem() bool`
+
+HasTxCheckInputsLoopScanOutputkeysLoopGetSubitem returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopFindTx
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopFindTx() int32`
+
+GetTxCheckInputsLoopScanOutputkeysLoopFindTx returns the TxCheckInputsLoopScanOutputkeysLoopFindTx field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopFindTxOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopFindTxOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysLoopFindTxOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopFindTx field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysLoopFindTx
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopFindTx(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysLoopFindTx sets TxCheckInputsLoopScanOutputkeysLoopFindTx field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysLoopFindTx
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopFindTx() bool`
+
+HasTxCheckInputsLoopScanOutputkeysLoopFindTx returns a boolean if a field has been set.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopHandleOutput
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopHandleOutput() int32`
+
+GetTxCheckInputsLoopScanOutputkeysLoopHandleOutput returns the TxCheckInputsLoopScanOutputkeysLoopHandleOutput field if non-nil, zero value otherwise.
+
+### GetTxCheckInputsLoopScanOutputkeysLoopHandleOutputOk
+
+`func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopHandleOutputOk() (*int32, bool)`
+
+GetTxCheckInputsLoopScanOutputkeysLoopHandleOutputOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopHandleOutput field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxCheckInputsLoopScanOutputkeysLoopHandleOutput
+
+`func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopHandleOutput(v int32)`
+
+SetTxCheckInputsLoopScanOutputkeysLoopHandleOutput sets TxCheckInputsLoopScanOutputkeysLoopHandleOutput field to given value.
+
+### HasTxCheckInputsLoopScanOutputkeysLoopHandleOutput
+
+`func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopHandleOutput() bool`
+
+HasTxCheckInputsLoopScanOutputkeysLoopHandleOutput returns a boolean if a field has been set.
+
+### GetTxMixinCount
+
+`func (o *TxProcessingPerformanceModel) GetTxMixinCount() int32`
+
+GetTxMixinCount returns the TxMixinCount field if non-nil, zero value otherwise.
+
+### GetTxMixinCountOk
+
+`func (o *TxProcessingPerformanceModel) GetTxMixinCountOk() (*int32, bool)`
+
+GetTxMixinCountOk returns a tuple with the TxMixinCount field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetTxMixinCount
+
+`func (o *TxProcessingPerformanceModel) SetTxMixinCount(v int32)`
+
+SetTxMixinCount sets TxMixinCount field to given value.
+
+### HasTxMixinCount
+
+`func (o *TxProcessingPerformanceModel) HasTxMixinCount() bool`
+
+HasTxMixinCount returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/docs/VersionModel.md b/utils/sdk/client/go/docs/VersionModel.md
new file mode 100644
index 00000000..35efbf09
--- /dev/null
+++ b/utils/sdk/client/go/docs/VersionModel.md
@@ -0,0 +1,160 @@
+# VersionModel
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**Version** | Pointer to **string** | | [optional]
+**VersionLong** | Pointer to **string** | | [optional]
+**Major** | Pointer to **string** | | [optional]
+**Minor** | Pointer to **string** | | [optional]
+**Revision** | Pointer to **string** | | [optional]
+
+## Methods
+
+### NewVersionModel
+
+`func NewVersionModel() *VersionModel`
+
+NewVersionModel instantiates a new VersionModel object
+This constructor will assign default values to properties that have it defined,
+and makes sure properties required by API are set, but the set of arguments
+will change when the set of required properties is changed
+
+### NewVersionModelWithDefaults
+
+`func NewVersionModelWithDefaults() *VersionModel`
+
+NewVersionModelWithDefaults instantiates a new VersionModel object
+This constructor will only assign default values to properties that have it defined,
+but it doesn't guarantee that properties required by API are set
+
+### GetVersion
+
+`func (o *VersionModel) GetVersion() string`
+
+GetVersion returns the Version field if non-nil, zero value otherwise.
+
+### GetVersionOk
+
+`func (o *VersionModel) GetVersionOk() (*string, bool)`
+
+GetVersionOk returns a tuple with the Version field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVersion
+
+`func (o *VersionModel) SetVersion(v string)`
+
+SetVersion sets Version field to given value.
+
+### HasVersion
+
+`func (o *VersionModel) HasVersion() bool`
+
+HasVersion returns a boolean if a field has been set.
+
+### GetVersionLong
+
+`func (o *VersionModel) GetVersionLong() string`
+
+GetVersionLong returns the VersionLong field if non-nil, zero value otherwise.
+
+### GetVersionLongOk
+
+`func (o *VersionModel) GetVersionLongOk() (*string, bool)`
+
+GetVersionLongOk returns a tuple with the VersionLong field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetVersionLong
+
+`func (o *VersionModel) SetVersionLong(v string)`
+
+SetVersionLong sets VersionLong field to given value.
+
+### HasVersionLong
+
+`func (o *VersionModel) HasVersionLong() bool`
+
+HasVersionLong returns a boolean if a field has been set.
+
+### GetMajor
+
+`func (o *VersionModel) GetMajor() string`
+
+GetMajor returns the Major field if non-nil, zero value otherwise.
+
+### GetMajorOk
+
+`func (o *VersionModel) GetMajorOk() (*string, bool)`
+
+GetMajorOk returns a tuple with the Major field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMajor
+
+`func (o *VersionModel) SetMajor(v string)`
+
+SetMajor sets Major field to given value.
+
+### HasMajor
+
+`func (o *VersionModel) HasMajor() bool`
+
+HasMajor returns a boolean if a field has been set.
+
+### GetMinor
+
+`func (o *VersionModel) GetMinor() string`
+
+GetMinor returns the Minor field if non-nil, zero value otherwise.
+
+### GetMinorOk
+
+`func (o *VersionModel) GetMinorOk() (*string, bool)`
+
+GetMinorOk returns a tuple with the Minor field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetMinor
+
+`func (o *VersionModel) SetMinor(v string)`
+
+SetMinor sets Minor field to given value.
+
+### HasMinor
+
+`func (o *VersionModel) HasMinor() bool`
+
+HasMinor returns a boolean if a field has been set.
+
+### GetRevision
+
+`func (o *VersionModel) GetRevision() string`
+
+GetRevision returns the Revision field if non-nil, zero value otherwise.
+
+### GetRevisionOk
+
+`func (o *VersionModel) GetRevisionOk() (*string, bool)`
+
+GetRevisionOk returns a tuple with the Revision field if it's non-nil, zero value otherwise
+and a boolean to check if the value has been set.
+
+### SetRevision
+
+`func (o *VersionModel) SetRevision(v string)`
+
+SetRevision sets Revision field to given value.
+
+### HasRevision
+
+`func (o *VersionModel) HasRevision() bool`
+
+HasRevision returns a boolean if a field has been set.
+
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/utils/sdk/client/go/go.mod b/utils/sdk/client/go/go.mod
new file mode 100644
index 00000000..c8166dd0
--- /dev/null
+++ b/utils/sdk/client/go/go.mod
@@ -0,0 +1,3 @@
+module github.com/letheanVPN/blockchain/utils/sdk/client/go
+
+go 1.23
diff --git a/utils/sdk/client/go/model_block_details_model.go b/utils/sdk/client/go/model_block_details_model.go
new file mode 100644
index 00000000..6d8f369e
--- /dev/null
+++ b/utils/sdk/client/go/model_block_details_model.go
@@ -0,0 +1,990 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the BlockDetailsModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &BlockDetailsModel{}
+
+// BlockDetailsModel struct for BlockDetailsModel
+type BlockDetailsModel struct {
+ ActualTimestamp *int32 `json:"actual_timestamp,omitempty"`
+ AlreadyGeneratedCoins *string `json:"already_generated_coins,omitempty"`
+ BaseReward *int32 `json:"base_reward,omitempty"`
+ Blob *string `json:"blob,omitempty"`
+ BlockCumulativeSize *int32 `json:"block_cumulative_size,omitempty"`
+ BlockTselfSize *int32 `json:"block_tself_size,omitempty"`
+ CumulativeDiffAdjusted *string `json:"cumulative_diff_adjusted,omitempty"`
+ CumulativeDiffPrecise *string `json:"cumulative_diff_precise,omitempty"`
+ Difficulty *string `json:"difficulty,omitempty"`
+ EffectiveFeeMedian *int32 `json:"effective_fee_median,omitempty"`
+ Height *int32 `json:"height,omitempty"`
+ Id *string `json:"id,omitempty"`
+ IsOrphan *bool `json:"is_orphan,omitempty"`
+ MinerTextInfo *string `json:"miner_text_info,omitempty"`
+ ObjectInJson *string `json:"object_in_json,omitempty"`
+ Penalty *int32 `json:"penalty,omitempty"`
+ PowSeed *string `json:"pow_seed,omitempty"`
+ PrevId *string `json:"prev_id,omitempty"`
+ SummaryReward *int32 `json:"summary_reward,omitempty"`
+ ThisBlockFeeMedian *int32 `json:"this_block_fee_median,omitempty"`
+ Timestamp *int32 `json:"timestamp,omitempty"`
+ TotalFee *int32 `json:"total_fee,omitempty"`
+ TotalTxsSize *int32 `json:"total_txs_size,omitempty"`
+ TransactionsDetails []TransactionDetailsModel `json:"transactions_details,omitempty"`
+ Type *int32 `json:"type,omitempty"`
+}
+
+// NewBlockDetailsModel instantiates a new BlockDetailsModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewBlockDetailsModel() *BlockDetailsModel {
+ this := BlockDetailsModel{}
+ return &this
+}
+
+// NewBlockDetailsModelWithDefaults instantiates a new BlockDetailsModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewBlockDetailsModelWithDefaults() *BlockDetailsModel {
+ this := BlockDetailsModel{}
+ return &this
+}
+
+// GetActualTimestamp returns the ActualTimestamp field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetActualTimestamp() int32 {
+ if o == nil || IsNil(o.ActualTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.ActualTimestamp
+}
+
+// GetActualTimestampOk returns a tuple with the ActualTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetActualTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.ActualTimestamp) {
+ return nil, false
+ }
+ return o.ActualTimestamp, true
+}
+
+// HasActualTimestamp returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasActualTimestamp() bool {
+ if o != nil && !IsNil(o.ActualTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetActualTimestamp gets a reference to the given int32 and assigns it to the ActualTimestamp field.
+func (o *BlockDetailsModel) SetActualTimestamp(v int32) {
+ o.ActualTimestamp = &v
+}
+
+// GetAlreadyGeneratedCoins returns the AlreadyGeneratedCoins field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetAlreadyGeneratedCoins() string {
+ if o == nil || IsNil(o.AlreadyGeneratedCoins) {
+ var ret string
+ return ret
+ }
+ return *o.AlreadyGeneratedCoins
+}
+
+// GetAlreadyGeneratedCoinsOk returns a tuple with the AlreadyGeneratedCoins field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetAlreadyGeneratedCoinsOk() (*string, bool) {
+ if o == nil || IsNil(o.AlreadyGeneratedCoins) {
+ return nil, false
+ }
+ return o.AlreadyGeneratedCoins, true
+}
+
+// HasAlreadyGeneratedCoins returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasAlreadyGeneratedCoins() bool {
+ if o != nil && !IsNil(o.AlreadyGeneratedCoins) {
+ return true
+ }
+
+ return false
+}
+
+// SetAlreadyGeneratedCoins gets a reference to the given string and assigns it to the AlreadyGeneratedCoins field.
+func (o *BlockDetailsModel) SetAlreadyGeneratedCoins(v string) {
+ o.AlreadyGeneratedCoins = &v
+}
+
+// GetBaseReward returns the BaseReward field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetBaseReward() int32 {
+ if o == nil || IsNil(o.BaseReward) {
+ var ret int32
+ return ret
+ }
+ return *o.BaseReward
+}
+
+// GetBaseRewardOk returns a tuple with the BaseReward field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetBaseRewardOk() (*int32, bool) {
+ if o == nil || IsNil(o.BaseReward) {
+ return nil, false
+ }
+ return o.BaseReward, true
+}
+
+// HasBaseReward returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasBaseReward() bool {
+ if o != nil && !IsNil(o.BaseReward) {
+ return true
+ }
+
+ return false
+}
+
+// SetBaseReward gets a reference to the given int32 and assigns it to the BaseReward field.
+func (o *BlockDetailsModel) SetBaseReward(v int32) {
+ o.BaseReward = &v
+}
+
+// GetBlob returns the Blob field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetBlob() string {
+ if o == nil || IsNil(o.Blob) {
+ var ret string
+ return ret
+ }
+ return *o.Blob
+}
+
+// GetBlobOk returns a tuple with the Blob field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetBlobOk() (*string, bool) {
+ if o == nil || IsNil(o.Blob) {
+ return nil, false
+ }
+ return o.Blob, true
+}
+
+// HasBlob returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasBlob() bool {
+ if o != nil && !IsNil(o.Blob) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlob gets a reference to the given string and assigns it to the Blob field.
+func (o *BlockDetailsModel) SetBlob(v string) {
+ o.Blob = &v
+}
+
+// GetBlockCumulativeSize returns the BlockCumulativeSize field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetBlockCumulativeSize() int32 {
+ if o == nil || IsNil(o.BlockCumulativeSize) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockCumulativeSize
+}
+
+// GetBlockCumulativeSizeOk returns a tuple with the BlockCumulativeSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetBlockCumulativeSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockCumulativeSize) {
+ return nil, false
+ }
+ return o.BlockCumulativeSize, true
+}
+
+// HasBlockCumulativeSize returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasBlockCumulativeSize() bool {
+ if o != nil && !IsNil(o.BlockCumulativeSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockCumulativeSize gets a reference to the given int32 and assigns it to the BlockCumulativeSize field.
+func (o *BlockDetailsModel) SetBlockCumulativeSize(v int32) {
+ o.BlockCumulativeSize = &v
+}
+
+// GetBlockTselfSize returns the BlockTselfSize field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetBlockTselfSize() int32 {
+ if o == nil || IsNil(o.BlockTselfSize) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockTselfSize
+}
+
+// GetBlockTselfSizeOk returns a tuple with the BlockTselfSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetBlockTselfSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockTselfSize) {
+ return nil, false
+ }
+ return o.BlockTselfSize, true
+}
+
+// HasBlockTselfSize returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasBlockTselfSize() bool {
+ if o != nil && !IsNil(o.BlockTselfSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockTselfSize gets a reference to the given int32 and assigns it to the BlockTselfSize field.
+func (o *BlockDetailsModel) SetBlockTselfSize(v int32) {
+ o.BlockTselfSize = &v
+}
+
+// GetCumulativeDiffAdjusted returns the CumulativeDiffAdjusted field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetCumulativeDiffAdjusted() string {
+ if o == nil || IsNil(o.CumulativeDiffAdjusted) {
+ var ret string
+ return ret
+ }
+ return *o.CumulativeDiffAdjusted
+}
+
+// GetCumulativeDiffAdjustedOk returns a tuple with the CumulativeDiffAdjusted field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetCumulativeDiffAdjustedOk() (*string, bool) {
+ if o == nil || IsNil(o.CumulativeDiffAdjusted) {
+ return nil, false
+ }
+ return o.CumulativeDiffAdjusted, true
+}
+
+// HasCumulativeDiffAdjusted returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasCumulativeDiffAdjusted() bool {
+ if o != nil && !IsNil(o.CumulativeDiffAdjusted) {
+ return true
+ }
+
+ return false
+}
+
+// SetCumulativeDiffAdjusted gets a reference to the given string and assigns it to the CumulativeDiffAdjusted field.
+func (o *BlockDetailsModel) SetCumulativeDiffAdjusted(v string) {
+ o.CumulativeDiffAdjusted = &v
+}
+
+// GetCumulativeDiffPrecise returns the CumulativeDiffPrecise field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetCumulativeDiffPrecise() string {
+ if o == nil || IsNil(o.CumulativeDiffPrecise) {
+ var ret string
+ return ret
+ }
+ return *o.CumulativeDiffPrecise
+}
+
+// GetCumulativeDiffPreciseOk returns a tuple with the CumulativeDiffPrecise field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetCumulativeDiffPreciseOk() (*string, bool) {
+ if o == nil || IsNil(o.CumulativeDiffPrecise) {
+ return nil, false
+ }
+ return o.CumulativeDiffPrecise, true
+}
+
+// HasCumulativeDiffPrecise returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasCumulativeDiffPrecise() bool {
+ if o != nil && !IsNil(o.CumulativeDiffPrecise) {
+ return true
+ }
+
+ return false
+}
+
+// SetCumulativeDiffPrecise gets a reference to the given string and assigns it to the CumulativeDiffPrecise field.
+func (o *BlockDetailsModel) SetCumulativeDiffPrecise(v string) {
+ o.CumulativeDiffPrecise = &v
+}
+
+// GetDifficulty returns the Difficulty field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetDifficulty() string {
+ if o == nil || IsNil(o.Difficulty) {
+ var ret string
+ return ret
+ }
+ return *o.Difficulty
+}
+
+// GetDifficultyOk returns a tuple with the Difficulty field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetDifficultyOk() (*string, bool) {
+ if o == nil || IsNil(o.Difficulty) {
+ return nil, false
+ }
+ return o.Difficulty, true
+}
+
+// HasDifficulty returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasDifficulty() bool {
+ if o != nil && !IsNil(o.Difficulty) {
+ return true
+ }
+
+ return false
+}
+
+// SetDifficulty gets a reference to the given string and assigns it to the Difficulty field.
+func (o *BlockDetailsModel) SetDifficulty(v string) {
+ o.Difficulty = &v
+}
+
+// GetEffectiveFeeMedian returns the EffectiveFeeMedian field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetEffectiveFeeMedian() int32 {
+ if o == nil || IsNil(o.EffectiveFeeMedian) {
+ var ret int32
+ return ret
+ }
+ return *o.EffectiveFeeMedian
+}
+
+// GetEffectiveFeeMedianOk returns a tuple with the EffectiveFeeMedian field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetEffectiveFeeMedianOk() (*int32, bool) {
+ if o == nil || IsNil(o.EffectiveFeeMedian) {
+ return nil, false
+ }
+ return o.EffectiveFeeMedian, true
+}
+
+// HasEffectiveFeeMedian returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasEffectiveFeeMedian() bool {
+ if o != nil && !IsNil(o.EffectiveFeeMedian) {
+ return true
+ }
+
+ return false
+}
+
+// SetEffectiveFeeMedian gets a reference to the given int32 and assigns it to the EffectiveFeeMedian field.
+func (o *BlockDetailsModel) SetEffectiveFeeMedian(v int32) {
+ o.EffectiveFeeMedian = &v
+}
+
+// GetHeight returns the Height field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetHeight() int32 {
+ if o == nil || IsNil(o.Height) {
+ var ret int32
+ return ret
+ }
+ return *o.Height
+}
+
+// GetHeightOk returns a tuple with the Height field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.Height) {
+ return nil, false
+ }
+ return o.Height, true
+}
+
+// HasHeight returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasHeight() bool {
+ if o != nil && !IsNil(o.Height) {
+ return true
+ }
+
+ return false
+}
+
+// SetHeight gets a reference to the given int32 and assigns it to the Height field.
+func (o *BlockDetailsModel) SetHeight(v int32) {
+ o.Height = &v
+}
+
+// GetId returns the Id field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetId() string {
+ if o == nil || IsNil(o.Id) {
+ var ret string
+ return ret
+ }
+ return *o.Id
+}
+
+// GetIdOk returns a tuple with the Id field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetIdOk() (*string, bool) {
+ if o == nil || IsNil(o.Id) {
+ return nil, false
+ }
+ return o.Id, true
+}
+
+// HasId returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasId() bool {
+ if o != nil && !IsNil(o.Id) {
+ return true
+ }
+
+ return false
+}
+
+// SetId gets a reference to the given string and assigns it to the Id field.
+func (o *BlockDetailsModel) SetId(v string) {
+ o.Id = &v
+}
+
+// GetIsOrphan returns the IsOrphan field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetIsOrphan() bool {
+ if o == nil || IsNil(o.IsOrphan) {
+ var ret bool
+ return ret
+ }
+ return *o.IsOrphan
+}
+
+// GetIsOrphanOk returns a tuple with the IsOrphan field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetIsOrphanOk() (*bool, bool) {
+ if o == nil || IsNil(o.IsOrphan) {
+ return nil, false
+ }
+ return o.IsOrphan, true
+}
+
+// HasIsOrphan returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasIsOrphan() bool {
+ if o != nil && !IsNil(o.IsOrphan) {
+ return true
+ }
+
+ return false
+}
+
+// SetIsOrphan gets a reference to the given bool and assigns it to the IsOrphan field.
+func (o *BlockDetailsModel) SetIsOrphan(v bool) {
+ o.IsOrphan = &v
+}
+
+// GetMinerTextInfo returns the MinerTextInfo field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetMinerTextInfo() string {
+ if o == nil || IsNil(o.MinerTextInfo) {
+ var ret string
+ return ret
+ }
+ return *o.MinerTextInfo
+}
+
+// GetMinerTextInfoOk returns a tuple with the MinerTextInfo field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetMinerTextInfoOk() (*string, bool) {
+ if o == nil || IsNil(o.MinerTextInfo) {
+ return nil, false
+ }
+ return o.MinerTextInfo, true
+}
+
+// HasMinerTextInfo returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasMinerTextInfo() bool {
+ if o != nil && !IsNil(o.MinerTextInfo) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinerTextInfo gets a reference to the given string and assigns it to the MinerTextInfo field.
+func (o *BlockDetailsModel) SetMinerTextInfo(v string) {
+ o.MinerTextInfo = &v
+}
+
+// GetObjectInJson returns the ObjectInJson field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetObjectInJson() string {
+ if o == nil || IsNil(o.ObjectInJson) {
+ var ret string
+ return ret
+ }
+ return *o.ObjectInJson
+}
+
+// GetObjectInJsonOk returns a tuple with the ObjectInJson field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetObjectInJsonOk() (*string, bool) {
+ if o == nil || IsNil(o.ObjectInJson) {
+ return nil, false
+ }
+ return o.ObjectInJson, true
+}
+
+// HasObjectInJson returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasObjectInJson() bool {
+ if o != nil && !IsNil(o.ObjectInJson) {
+ return true
+ }
+
+ return false
+}
+
+// SetObjectInJson gets a reference to the given string and assigns it to the ObjectInJson field.
+func (o *BlockDetailsModel) SetObjectInJson(v string) {
+ o.ObjectInJson = &v
+}
+
+// GetPenalty returns the Penalty field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetPenalty() int32 {
+ if o == nil || IsNil(o.Penalty) {
+ var ret int32
+ return ret
+ }
+ return *o.Penalty
+}
+
+// GetPenaltyOk returns a tuple with the Penalty field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetPenaltyOk() (*int32, bool) {
+ if o == nil || IsNil(o.Penalty) {
+ return nil, false
+ }
+ return o.Penalty, true
+}
+
+// HasPenalty returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasPenalty() bool {
+ if o != nil && !IsNil(o.Penalty) {
+ return true
+ }
+
+ return false
+}
+
+// SetPenalty gets a reference to the given int32 and assigns it to the Penalty field.
+func (o *BlockDetailsModel) SetPenalty(v int32) {
+ o.Penalty = &v
+}
+
+// GetPowSeed returns the PowSeed field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetPowSeed() string {
+ if o == nil || IsNil(o.PowSeed) {
+ var ret string
+ return ret
+ }
+ return *o.PowSeed
+}
+
+// GetPowSeedOk returns a tuple with the PowSeed field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetPowSeedOk() (*string, bool) {
+ if o == nil || IsNil(o.PowSeed) {
+ return nil, false
+ }
+ return o.PowSeed, true
+}
+
+// HasPowSeed returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasPowSeed() bool {
+ if o != nil && !IsNil(o.PowSeed) {
+ return true
+ }
+
+ return false
+}
+
+// SetPowSeed gets a reference to the given string and assigns it to the PowSeed field.
+func (o *BlockDetailsModel) SetPowSeed(v string) {
+ o.PowSeed = &v
+}
+
+// GetPrevId returns the PrevId field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetPrevId() string {
+ if o == nil || IsNil(o.PrevId) {
+ var ret string
+ return ret
+ }
+ return *o.PrevId
+}
+
+// GetPrevIdOk returns a tuple with the PrevId field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetPrevIdOk() (*string, bool) {
+ if o == nil || IsNil(o.PrevId) {
+ return nil, false
+ }
+ return o.PrevId, true
+}
+
+// HasPrevId returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasPrevId() bool {
+ if o != nil && !IsNil(o.PrevId) {
+ return true
+ }
+
+ return false
+}
+
+// SetPrevId gets a reference to the given string and assigns it to the PrevId field.
+func (o *BlockDetailsModel) SetPrevId(v string) {
+ o.PrevId = &v
+}
+
+// GetSummaryReward returns the SummaryReward field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetSummaryReward() int32 {
+ if o == nil || IsNil(o.SummaryReward) {
+ var ret int32
+ return ret
+ }
+ return *o.SummaryReward
+}
+
+// GetSummaryRewardOk returns a tuple with the SummaryReward field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetSummaryRewardOk() (*int32, bool) {
+ if o == nil || IsNil(o.SummaryReward) {
+ return nil, false
+ }
+ return o.SummaryReward, true
+}
+
+// HasSummaryReward returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasSummaryReward() bool {
+ if o != nil && !IsNil(o.SummaryReward) {
+ return true
+ }
+
+ return false
+}
+
+// SetSummaryReward gets a reference to the given int32 and assigns it to the SummaryReward field.
+func (o *BlockDetailsModel) SetSummaryReward(v int32) {
+ o.SummaryReward = &v
+}
+
+// GetThisBlockFeeMedian returns the ThisBlockFeeMedian field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetThisBlockFeeMedian() int32 {
+ if o == nil || IsNil(o.ThisBlockFeeMedian) {
+ var ret int32
+ return ret
+ }
+ return *o.ThisBlockFeeMedian
+}
+
+// GetThisBlockFeeMedianOk returns a tuple with the ThisBlockFeeMedian field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetThisBlockFeeMedianOk() (*int32, bool) {
+ if o == nil || IsNil(o.ThisBlockFeeMedian) {
+ return nil, false
+ }
+ return o.ThisBlockFeeMedian, true
+}
+
+// HasThisBlockFeeMedian returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasThisBlockFeeMedian() bool {
+ if o != nil && !IsNil(o.ThisBlockFeeMedian) {
+ return true
+ }
+
+ return false
+}
+
+// SetThisBlockFeeMedian gets a reference to the given int32 and assigns it to the ThisBlockFeeMedian field.
+func (o *BlockDetailsModel) SetThisBlockFeeMedian(v int32) {
+ o.ThisBlockFeeMedian = &v
+}
+
+// GetTimestamp returns the Timestamp field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetTimestamp() int32 {
+ if o == nil || IsNil(o.Timestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.Timestamp
+}
+
+// GetTimestampOk returns a tuple with the Timestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.Timestamp) {
+ return nil, false
+ }
+ return o.Timestamp, true
+}
+
+// HasTimestamp returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasTimestamp() bool {
+ if o != nil && !IsNil(o.Timestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetTimestamp gets a reference to the given int32 and assigns it to the Timestamp field.
+func (o *BlockDetailsModel) SetTimestamp(v int32) {
+ o.Timestamp = &v
+}
+
+// GetTotalFee returns the TotalFee field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetTotalFee() int32 {
+ if o == nil || IsNil(o.TotalFee) {
+ var ret int32
+ return ret
+ }
+ return *o.TotalFee
+}
+
+// GetTotalFeeOk returns a tuple with the TotalFee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetTotalFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TotalFee) {
+ return nil, false
+ }
+ return o.TotalFee, true
+}
+
+// HasTotalFee returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasTotalFee() bool {
+ if o != nil && !IsNil(o.TotalFee) {
+ return true
+ }
+
+ return false
+}
+
+// SetTotalFee gets a reference to the given int32 and assigns it to the TotalFee field.
+func (o *BlockDetailsModel) SetTotalFee(v int32) {
+ o.TotalFee = &v
+}
+
+// GetTotalTxsSize returns the TotalTxsSize field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetTotalTxsSize() int32 {
+ if o == nil || IsNil(o.TotalTxsSize) {
+ var ret int32
+ return ret
+ }
+ return *o.TotalTxsSize
+}
+
+// GetTotalTxsSizeOk returns a tuple with the TotalTxsSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetTotalTxsSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TotalTxsSize) {
+ return nil, false
+ }
+ return o.TotalTxsSize, true
+}
+
+// HasTotalTxsSize returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasTotalTxsSize() bool {
+ if o != nil && !IsNil(o.TotalTxsSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetTotalTxsSize gets a reference to the given int32 and assigns it to the TotalTxsSize field.
+func (o *BlockDetailsModel) SetTotalTxsSize(v int32) {
+ o.TotalTxsSize = &v
+}
+
+// GetTransactionsDetails returns the TransactionsDetails field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetTransactionsDetails() []TransactionDetailsModel {
+ if o == nil || IsNil(o.TransactionsDetails) {
+ var ret []TransactionDetailsModel
+ return ret
+ }
+ return o.TransactionsDetails
+}
+
+// GetTransactionsDetailsOk returns a tuple with the TransactionsDetails field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetTransactionsDetailsOk() ([]TransactionDetailsModel, bool) {
+ if o == nil || IsNil(o.TransactionsDetails) {
+ return nil, false
+ }
+ return o.TransactionsDetails, true
+}
+
+// HasTransactionsDetails returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasTransactionsDetails() bool {
+ if o != nil && !IsNil(o.TransactionsDetails) {
+ return true
+ }
+
+ return false
+}
+
+// SetTransactionsDetails gets a reference to the given []TransactionDetailsModel and assigns it to the TransactionsDetails field.
+func (o *BlockDetailsModel) SetTransactionsDetails(v []TransactionDetailsModel) {
+ o.TransactionsDetails = v
+}
+
+// GetType returns the Type field value if set, zero value otherwise.
+func (o *BlockDetailsModel) GetType() int32 {
+ if o == nil || IsNil(o.Type) {
+ var ret int32
+ return ret
+ }
+ return *o.Type
+}
+
+// GetTypeOk returns a tuple with the Type field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockDetailsModel) GetTypeOk() (*int32, bool) {
+ if o == nil || IsNil(o.Type) {
+ return nil, false
+ }
+ return o.Type, true
+}
+
+// HasType returns a boolean if a field has been set.
+func (o *BlockDetailsModel) HasType() bool {
+ if o != nil && !IsNil(o.Type) {
+ return true
+ }
+
+ return false
+}
+
+// SetType gets a reference to the given int32 and assigns it to the Type field.
+func (o *BlockDetailsModel) SetType(v int32) {
+ o.Type = &v
+}
+
+func (o BlockDetailsModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o BlockDetailsModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.ActualTimestamp) {
+ toSerialize["actual_timestamp"] = o.ActualTimestamp
+ }
+ if !IsNil(o.AlreadyGeneratedCoins) {
+ toSerialize["already_generated_coins"] = o.AlreadyGeneratedCoins
+ }
+ if !IsNil(o.BaseReward) {
+ toSerialize["base_reward"] = o.BaseReward
+ }
+ if !IsNil(o.Blob) {
+ toSerialize["blob"] = o.Blob
+ }
+ if !IsNil(o.BlockCumulativeSize) {
+ toSerialize["block_cumulative_size"] = o.BlockCumulativeSize
+ }
+ if !IsNil(o.BlockTselfSize) {
+ toSerialize["block_tself_size"] = o.BlockTselfSize
+ }
+ if !IsNil(o.CumulativeDiffAdjusted) {
+ toSerialize["cumulative_diff_adjusted"] = o.CumulativeDiffAdjusted
+ }
+ if !IsNil(o.CumulativeDiffPrecise) {
+ toSerialize["cumulative_diff_precise"] = o.CumulativeDiffPrecise
+ }
+ if !IsNil(o.Difficulty) {
+ toSerialize["difficulty"] = o.Difficulty
+ }
+ if !IsNil(o.EffectiveFeeMedian) {
+ toSerialize["effective_fee_median"] = o.EffectiveFeeMedian
+ }
+ if !IsNil(o.Height) {
+ toSerialize["height"] = o.Height
+ }
+ if !IsNil(o.Id) {
+ toSerialize["id"] = o.Id
+ }
+ if !IsNil(o.IsOrphan) {
+ toSerialize["is_orphan"] = o.IsOrphan
+ }
+ if !IsNil(o.MinerTextInfo) {
+ toSerialize["miner_text_info"] = o.MinerTextInfo
+ }
+ if !IsNil(o.ObjectInJson) {
+ toSerialize["object_in_json"] = o.ObjectInJson
+ }
+ if !IsNil(o.Penalty) {
+ toSerialize["penalty"] = o.Penalty
+ }
+ if !IsNil(o.PowSeed) {
+ toSerialize["pow_seed"] = o.PowSeed
+ }
+ if !IsNil(o.PrevId) {
+ toSerialize["prev_id"] = o.PrevId
+ }
+ if !IsNil(o.SummaryReward) {
+ toSerialize["summary_reward"] = o.SummaryReward
+ }
+ if !IsNil(o.ThisBlockFeeMedian) {
+ toSerialize["this_block_fee_median"] = o.ThisBlockFeeMedian
+ }
+ if !IsNil(o.Timestamp) {
+ toSerialize["timestamp"] = o.Timestamp
+ }
+ if !IsNil(o.TotalFee) {
+ toSerialize["total_fee"] = o.TotalFee
+ }
+ if !IsNil(o.TotalTxsSize) {
+ toSerialize["total_txs_size"] = o.TotalTxsSize
+ }
+ if !IsNil(o.TransactionsDetails) {
+ toSerialize["transactions_details"] = o.TransactionsDetails
+ }
+ if !IsNil(o.Type) {
+ toSerialize["type"] = o.Type
+ }
+ return toSerialize, nil
+}
+
+type NullableBlockDetailsModel struct {
+ value *BlockDetailsModel
+ isSet bool
+}
+
+func (v NullableBlockDetailsModel) Get() *BlockDetailsModel {
+ return v.value
+}
+
+func (v *NullableBlockDetailsModel) Set(val *BlockDetailsModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableBlockDetailsModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableBlockDetailsModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableBlockDetailsModel(val *BlockDetailsModel) *NullableBlockDetailsModel {
+ return &NullableBlockDetailsModel{value: val, isSet: true}
+}
+
+func (v NullableBlockDetailsModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableBlockDetailsModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_block_processing_performance_model.go b/utils/sdk/client/go/model_block_processing_performance_model.go
new file mode 100644
index 00000000..582149a2
--- /dev/null
+++ b/utils/sdk/client/go/model_block_processing_performance_model.go
@@ -0,0 +1,666 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the BlockProcessingPerformanceModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &BlockProcessingPerformanceModel{}
+
+// BlockProcessingPerformanceModel struct for BlockProcessingPerformanceModel
+type BlockProcessingPerformanceModel struct {
+ BlockProcessingTime0 *int32 `json:"block_processing_time_0,omitempty"`
+ BlockProcessingTime1 *int32 `json:"block_processing_time_1,omitempty"`
+ TargetCalculatingTime2 *int32 `json:"target_calculating_time_2,omitempty"`
+ LonghashCalculatingTime3 *int32 `json:"longhash_calculating_time_3,omitempty"`
+ AllTxsInsertTime5 *int32 `json:"all_txs_insert_time_5,omitempty"`
+ EtcStuff6 *int32 `json:"etc_stuff_6,omitempty"`
+ InsertTime4 *int32 `json:"insert_time_4,omitempty"`
+ RaiseBlockCoreEvent *int32 `json:"raise_block_core_event,omitempty"`
+ ValidateMinerTransactionTime *int32 `json:"validate_miner_transaction_time,omitempty"`
+ CollectRangeproofsDataFromTxTime *int32 `json:"collect_rangeproofs_data_from_tx_time,omitempty"`
+ VerifyMultipleZcOutsRangeProofsTime *int32 `json:"verify_multiple_zc_outs_range_proofs_time,omitempty"`
+ TargetCalculatingEnumBlocks *int32 `json:"target_calculating_enum_blocks,omitempty"`
+ TargetCalculatingCalc *int32 `json:"target_calculating_calc,omitempty"`
+ PosValidateKiSearch *int32 `json:"pos_validate_ki_search,omitempty"`
+ PosValidateGetOutKeysForInputs *int32 `json:"pos_validate_get_out_keys_for_inputs,omitempty"`
+ PosValidateZvp *int32 `json:"pos_validate_zvp,omitempty"`
+}
+
+// NewBlockProcessingPerformanceModel instantiates a new BlockProcessingPerformanceModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewBlockProcessingPerformanceModel() *BlockProcessingPerformanceModel {
+ this := BlockProcessingPerformanceModel{}
+ return &this
+}
+
+// NewBlockProcessingPerformanceModelWithDefaults instantiates a new BlockProcessingPerformanceModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewBlockProcessingPerformanceModelWithDefaults() *BlockProcessingPerformanceModel {
+ this := BlockProcessingPerformanceModel{}
+ return &this
+}
+
+// GetBlockProcessingTime0 returns the BlockProcessingTime0 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime0() int32 {
+ if o == nil || IsNil(o.BlockProcessingTime0) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockProcessingTime0
+}
+
+// GetBlockProcessingTime0Ok returns a tuple with the BlockProcessingTime0 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime0Ok() (*int32, bool) {
+ if o == nil || IsNil(o.BlockProcessingTime0) {
+ return nil, false
+ }
+ return o.BlockProcessingTime0, true
+}
+
+// HasBlockProcessingTime0 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasBlockProcessingTime0() bool {
+ if o != nil && !IsNil(o.BlockProcessingTime0) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockProcessingTime0 gets a reference to the given int32 and assigns it to the BlockProcessingTime0 field.
+func (o *BlockProcessingPerformanceModel) SetBlockProcessingTime0(v int32) {
+ o.BlockProcessingTime0 = &v
+}
+
+// GetBlockProcessingTime1 returns the BlockProcessingTime1 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime1() int32 {
+ if o == nil || IsNil(o.BlockProcessingTime1) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockProcessingTime1
+}
+
+// GetBlockProcessingTime1Ok returns a tuple with the BlockProcessingTime1 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetBlockProcessingTime1Ok() (*int32, bool) {
+ if o == nil || IsNil(o.BlockProcessingTime1) {
+ return nil, false
+ }
+ return o.BlockProcessingTime1, true
+}
+
+// HasBlockProcessingTime1 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasBlockProcessingTime1() bool {
+ if o != nil && !IsNil(o.BlockProcessingTime1) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockProcessingTime1 gets a reference to the given int32 and assigns it to the BlockProcessingTime1 field.
+func (o *BlockProcessingPerformanceModel) SetBlockProcessingTime1(v int32) {
+ o.BlockProcessingTime1 = &v
+}
+
+// GetTargetCalculatingTime2 returns the TargetCalculatingTime2 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingTime2() int32 {
+ if o == nil || IsNil(o.TargetCalculatingTime2) {
+ var ret int32
+ return ret
+ }
+ return *o.TargetCalculatingTime2
+}
+
+// GetTargetCalculatingTime2Ok returns a tuple with the TargetCalculatingTime2 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingTime2Ok() (*int32, bool) {
+ if o == nil || IsNil(o.TargetCalculatingTime2) {
+ return nil, false
+ }
+ return o.TargetCalculatingTime2, true
+}
+
+// HasTargetCalculatingTime2 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasTargetCalculatingTime2() bool {
+ if o != nil && !IsNil(o.TargetCalculatingTime2) {
+ return true
+ }
+
+ return false
+}
+
+// SetTargetCalculatingTime2 gets a reference to the given int32 and assigns it to the TargetCalculatingTime2 field.
+func (o *BlockProcessingPerformanceModel) SetTargetCalculatingTime2(v int32) {
+ o.TargetCalculatingTime2 = &v
+}
+
+// GetLonghashCalculatingTime3 returns the LonghashCalculatingTime3 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetLonghashCalculatingTime3() int32 {
+ if o == nil || IsNil(o.LonghashCalculatingTime3) {
+ var ret int32
+ return ret
+ }
+ return *o.LonghashCalculatingTime3
+}
+
+// GetLonghashCalculatingTime3Ok returns a tuple with the LonghashCalculatingTime3 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetLonghashCalculatingTime3Ok() (*int32, bool) {
+ if o == nil || IsNil(o.LonghashCalculatingTime3) {
+ return nil, false
+ }
+ return o.LonghashCalculatingTime3, true
+}
+
+// HasLonghashCalculatingTime3 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasLonghashCalculatingTime3() bool {
+ if o != nil && !IsNil(o.LonghashCalculatingTime3) {
+ return true
+ }
+
+ return false
+}
+
+// SetLonghashCalculatingTime3 gets a reference to the given int32 and assigns it to the LonghashCalculatingTime3 field.
+func (o *BlockProcessingPerformanceModel) SetLonghashCalculatingTime3(v int32) {
+ o.LonghashCalculatingTime3 = &v
+}
+
+// GetAllTxsInsertTime5 returns the AllTxsInsertTime5 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetAllTxsInsertTime5() int32 {
+ if o == nil || IsNil(o.AllTxsInsertTime5) {
+ var ret int32
+ return ret
+ }
+ return *o.AllTxsInsertTime5
+}
+
+// GetAllTxsInsertTime5Ok returns a tuple with the AllTxsInsertTime5 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetAllTxsInsertTime5Ok() (*int32, bool) {
+ if o == nil || IsNil(o.AllTxsInsertTime5) {
+ return nil, false
+ }
+ return o.AllTxsInsertTime5, true
+}
+
+// HasAllTxsInsertTime5 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasAllTxsInsertTime5() bool {
+ if o != nil && !IsNil(o.AllTxsInsertTime5) {
+ return true
+ }
+
+ return false
+}
+
+// SetAllTxsInsertTime5 gets a reference to the given int32 and assigns it to the AllTxsInsertTime5 field.
+func (o *BlockProcessingPerformanceModel) SetAllTxsInsertTime5(v int32) {
+ o.AllTxsInsertTime5 = &v
+}
+
+// GetEtcStuff6 returns the EtcStuff6 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetEtcStuff6() int32 {
+ if o == nil || IsNil(o.EtcStuff6) {
+ var ret int32
+ return ret
+ }
+ return *o.EtcStuff6
+}
+
+// GetEtcStuff6Ok returns a tuple with the EtcStuff6 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetEtcStuff6Ok() (*int32, bool) {
+ if o == nil || IsNil(o.EtcStuff6) {
+ return nil, false
+ }
+ return o.EtcStuff6, true
+}
+
+// HasEtcStuff6 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasEtcStuff6() bool {
+ if o != nil && !IsNil(o.EtcStuff6) {
+ return true
+ }
+
+ return false
+}
+
+// SetEtcStuff6 gets a reference to the given int32 and assigns it to the EtcStuff6 field.
+func (o *BlockProcessingPerformanceModel) SetEtcStuff6(v int32) {
+ o.EtcStuff6 = &v
+}
+
+// GetInsertTime4 returns the InsertTime4 field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetInsertTime4() int32 {
+ if o == nil || IsNil(o.InsertTime4) {
+ var ret int32
+ return ret
+ }
+ return *o.InsertTime4
+}
+
+// GetInsertTime4Ok returns a tuple with the InsertTime4 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetInsertTime4Ok() (*int32, bool) {
+ if o == nil || IsNil(o.InsertTime4) {
+ return nil, false
+ }
+ return o.InsertTime4, true
+}
+
+// HasInsertTime4 returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasInsertTime4() bool {
+ if o != nil && !IsNil(o.InsertTime4) {
+ return true
+ }
+
+ return false
+}
+
+// SetInsertTime4 gets a reference to the given int32 and assigns it to the InsertTime4 field.
+func (o *BlockProcessingPerformanceModel) SetInsertTime4(v int32) {
+ o.InsertTime4 = &v
+}
+
+// GetRaiseBlockCoreEvent returns the RaiseBlockCoreEvent field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetRaiseBlockCoreEvent() int32 {
+ if o == nil || IsNil(o.RaiseBlockCoreEvent) {
+ var ret int32
+ return ret
+ }
+ return *o.RaiseBlockCoreEvent
+}
+
+// GetRaiseBlockCoreEventOk returns a tuple with the RaiseBlockCoreEvent field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetRaiseBlockCoreEventOk() (*int32, bool) {
+ if o == nil || IsNil(o.RaiseBlockCoreEvent) {
+ return nil, false
+ }
+ return o.RaiseBlockCoreEvent, true
+}
+
+// HasRaiseBlockCoreEvent returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasRaiseBlockCoreEvent() bool {
+ if o != nil && !IsNil(o.RaiseBlockCoreEvent) {
+ return true
+ }
+
+ return false
+}
+
+// SetRaiseBlockCoreEvent gets a reference to the given int32 and assigns it to the RaiseBlockCoreEvent field.
+func (o *BlockProcessingPerformanceModel) SetRaiseBlockCoreEvent(v int32) {
+ o.RaiseBlockCoreEvent = &v
+}
+
+// GetValidateMinerTransactionTime returns the ValidateMinerTransactionTime field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetValidateMinerTransactionTime() int32 {
+ if o == nil || IsNil(o.ValidateMinerTransactionTime) {
+ var ret int32
+ return ret
+ }
+ return *o.ValidateMinerTransactionTime
+}
+
+// GetValidateMinerTransactionTimeOk returns a tuple with the ValidateMinerTransactionTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetValidateMinerTransactionTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.ValidateMinerTransactionTime) {
+ return nil, false
+ }
+ return o.ValidateMinerTransactionTime, true
+}
+
+// HasValidateMinerTransactionTime returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasValidateMinerTransactionTime() bool {
+ if o != nil && !IsNil(o.ValidateMinerTransactionTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetValidateMinerTransactionTime gets a reference to the given int32 and assigns it to the ValidateMinerTransactionTime field.
+func (o *BlockProcessingPerformanceModel) SetValidateMinerTransactionTime(v int32) {
+ o.ValidateMinerTransactionTime = &v
+}
+
+// GetCollectRangeproofsDataFromTxTime returns the CollectRangeproofsDataFromTxTime field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetCollectRangeproofsDataFromTxTime() int32 {
+ if o == nil || IsNil(o.CollectRangeproofsDataFromTxTime) {
+ var ret int32
+ return ret
+ }
+ return *o.CollectRangeproofsDataFromTxTime
+}
+
+// GetCollectRangeproofsDataFromTxTimeOk returns a tuple with the CollectRangeproofsDataFromTxTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetCollectRangeproofsDataFromTxTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.CollectRangeproofsDataFromTxTime) {
+ return nil, false
+ }
+ return o.CollectRangeproofsDataFromTxTime, true
+}
+
+// HasCollectRangeproofsDataFromTxTime returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasCollectRangeproofsDataFromTxTime() bool {
+ if o != nil && !IsNil(o.CollectRangeproofsDataFromTxTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetCollectRangeproofsDataFromTxTime gets a reference to the given int32 and assigns it to the CollectRangeproofsDataFromTxTime field.
+func (o *BlockProcessingPerformanceModel) SetCollectRangeproofsDataFromTxTime(v int32) {
+ o.CollectRangeproofsDataFromTxTime = &v
+}
+
+// GetVerifyMultipleZcOutsRangeProofsTime returns the VerifyMultipleZcOutsRangeProofsTime field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetVerifyMultipleZcOutsRangeProofsTime() int32 {
+ if o == nil || IsNil(o.VerifyMultipleZcOutsRangeProofsTime) {
+ var ret int32
+ return ret
+ }
+ return *o.VerifyMultipleZcOutsRangeProofsTime
+}
+
+// GetVerifyMultipleZcOutsRangeProofsTimeOk returns a tuple with the VerifyMultipleZcOutsRangeProofsTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetVerifyMultipleZcOutsRangeProofsTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.VerifyMultipleZcOutsRangeProofsTime) {
+ return nil, false
+ }
+ return o.VerifyMultipleZcOutsRangeProofsTime, true
+}
+
+// HasVerifyMultipleZcOutsRangeProofsTime returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasVerifyMultipleZcOutsRangeProofsTime() bool {
+ if o != nil && !IsNil(o.VerifyMultipleZcOutsRangeProofsTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetVerifyMultipleZcOutsRangeProofsTime gets a reference to the given int32 and assigns it to the VerifyMultipleZcOutsRangeProofsTime field.
+func (o *BlockProcessingPerformanceModel) SetVerifyMultipleZcOutsRangeProofsTime(v int32) {
+ o.VerifyMultipleZcOutsRangeProofsTime = &v
+}
+
+// GetTargetCalculatingEnumBlocks returns the TargetCalculatingEnumBlocks field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingEnumBlocks() int32 {
+ if o == nil || IsNil(o.TargetCalculatingEnumBlocks) {
+ var ret int32
+ return ret
+ }
+ return *o.TargetCalculatingEnumBlocks
+}
+
+// GetTargetCalculatingEnumBlocksOk returns a tuple with the TargetCalculatingEnumBlocks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingEnumBlocksOk() (*int32, bool) {
+ if o == nil || IsNil(o.TargetCalculatingEnumBlocks) {
+ return nil, false
+ }
+ return o.TargetCalculatingEnumBlocks, true
+}
+
+// HasTargetCalculatingEnumBlocks returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasTargetCalculatingEnumBlocks() bool {
+ if o != nil && !IsNil(o.TargetCalculatingEnumBlocks) {
+ return true
+ }
+
+ return false
+}
+
+// SetTargetCalculatingEnumBlocks gets a reference to the given int32 and assigns it to the TargetCalculatingEnumBlocks field.
+func (o *BlockProcessingPerformanceModel) SetTargetCalculatingEnumBlocks(v int32) {
+ o.TargetCalculatingEnumBlocks = &v
+}
+
+// GetTargetCalculatingCalc returns the TargetCalculatingCalc field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingCalc() int32 {
+ if o == nil || IsNil(o.TargetCalculatingCalc) {
+ var ret int32
+ return ret
+ }
+ return *o.TargetCalculatingCalc
+}
+
+// GetTargetCalculatingCalcOk returns a tuple with the TargetCalculatingCalc field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetTargetCalculatingCalcOk() (*int32, bool) {
+ if o == nil || IsNil(o.TargetCalculatingCalc) {
+ return nil, false
+ }
+ return o.TargetCalculatingCalc, true
+}
+
+// HasTargetCalculatingCalc returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasTargetCalculatingCalc() bool {
+ if o != nil && !IsNil(o.TargetCalculatingCalc) {
+ return true
+ }
+
+ return false
+}
+
+// SetTargetCalculatingCalc gets a reference to the given int32 and assigns it to the TargetCalculatingCalc field.
+func (o *BlockProcessingPerformanceModel) SetTargetCalculatingCalc(v int32) {
+ o.TargetCalculatingCalc = &v
+}
+
+// GetPosValidateKiSearch returns the PosValidateKiSearch field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetPosValidateKiSearch() int32 {
+ if o == nil || IsNil(o.PosValidateKiSearch) {
+ var ret int32
+ return ret
+ }
+ return *o.PosValidateKiSearch
+}
+
+// GetPosValidateKiSearchOk returns a tuple with the PosValidateKiSearch field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetPosValidateKiSearchOk() (*int32, bool) {
+ if o == nil || IsNil(o.PosValidateKiSearch) {
+ return nil, false
+ }
+ return o.PosValidateKiSearch, true
+}
+
+// HasPosValidateKiSearch returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasPosValidateKiSearch() bool {
+ if o != nil && !IsNil(o.PosValidateKiSearch) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosValidateKiSearch gets a reference to the given int32 and assigns it to the PosValidateKiSearch field.
+func (o *BlockProcessingPerformanceModel) SetPosValidateKiSearch(v int32) {
+ o.PosValidateKiSearch = &v
+}
+
+// GetPosValidateGetOutKeysForInputs returns the PosValidateGetOutKeysForInputs field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetPosValidateGetOutKeysForInputs() int32 {
+ if o == nil || IsNil(o.PosValidateGetOutKeysForInputs) {
+ var ret int32
+ return ret
+ }
+ return *o.PosValidateGetOutKeysForInputs
+}
+
+// GetPosValidateGetOutKeysForInputsOk returns a tuple with the PosValidateGetOutKeysForInputs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetPosValidateGetOutKeysForInputsOk() (*int32, bool) {
+ if o == nil || IsNil(o.PosValidateGetOutKeysForInputs) {
+ return nil, false
+ }
+ return o.PosValidateGetOutKeysForInputs, true
+}
+
+// HasPosValidateGetOutKeysForInputs returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasPosValidateGetOutKeysForInputs() bool {
+ if o != nil && !IsNil(o.PosValidateGetOutKeysForInputs) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosValidateGetOutKeysForInputs gets a reference to the given int32 and assigns it to the PosValidateGetOutKeysForInputs field.
+func (o *BlockProcessingPerformanceModel) SetPosValidateGetOutKeysForInputs(v int32) {
+ o.PosValidateGetOutKeysForInputs = &v
+}
+
+// GetPosValidateZvp returns the PosValidateZvp field value if set, zero value otherwise.
+func (o *BlockProcessingPerformanceModel) GetPosValidateZvp() int32 {
+ if o == nil || IsNil(o.PosValidateZvp) {
+ var ret int32
+ return ret
+ }
+ return *o.PosValidateZvp
+}
+
+// GetPosValidateZvpOk returns a tuple with the PosValidateZvp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockProcessingPerformanceModel) GetPosValidateZvpOk() (*int32, bool) {
+ if o == nil || IsNil(o.PosValidateZvp) {
+ return nil, false
+ }
+ return o.PosValidateZvp, true
+}
+
+// HasPosValidateZvp returns a boolean if a field has been set.
+func (o *BlockProcessingPerformanceModel) HasPosValidateZvp() bool {
+ if o != nil && !IsNil(o.PosValidateZvp) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosValidateZvp gets a reference to the given int32 and assigns it to the PosValidateZvp field.
+func (o *BlockProcessingPerformanceModel) SetPosValidateZvp(v int32) {
+ o.PosValidateZvp = &v
+}
+
+func (o BlockProcessingPerformanceModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o BlockProcessingPerformanceModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.BlockProcessingTime0) {
+ toSerialize["block_processing_time_0"] = o.BlockProcessingTime0
+ }
+ if !IsNil(o.BlockProcessingTime1) {
+ toSerialize["block_processing_time_1"] = o.BlockProcessingTime1
+ }
+ if !IsNil(o.TargetCalculatingTime2) {
+ toSerialize["target_calculating_time_2"] = o.TargetCalculatingTime2
+ }
+ if !IsNil(o.LonghashCalculatingTime3) {
+ toSerialize["longhash_calculating_time_3"] = o.LonghashCalculatingTime3
+ }
+ if !IsNil(o.AllTxsInsertTime5) {
+ toSerialize["all_txs_insert_time_5"] = o.AllTxsInsertTime5
+ }
+ if !IsNil(o.EtcStuff6) {
+ toSerialize["etc_stuff_6"] = o.EtcStuff6
+ }
+ if !IsNil(o.InsertTime4) {
+ toSerialize["insert_time_4"] = o.InsertTime4
+ }
+ if !IsNil(o.RaiseBlockCoreEvent) {
+ toSerialize["raise_block_core_event"] = o.RaiseBlockCoreEvent
+ }
+ if !IsNil(o.ValidateMinerTransactionTime) {
+ toSerialize["validate_miner_transaction_time"] = o.ValidateMinerTransactionTime
+ }
+ if !IsNil(o.CollectRangeproofsDataFromTxTime) {
+ toSerialize["collect_rangeproofs_data_from_tx_time"] = o.CollectRangeproofsDataFromTxTime
+ }
+ if !IsNil(o.VerifyMultipleZcOutsRangeProofsTime) {
+ toSerialize["verify_multiple_zc_outs_range_proofs_time"] = o.VerifyMultipleZcOutsRangeProofsTime
+ }
+ if !IsNil(o.TargetCalculatingEnumBlocks) {
+ toSerialize["target_calculating_enum_blocks"] = o.TargetCalculatingEnumBlocks
+ }
+ if !IsNil(o.TargetCalculatingCalc) {
+ toSerialize["target_calculating_calc"] = o.TargetCalculatingCalc
+ }
+ if !IsNil(o.PosValidateKiSearch) {
+ toSerialize["pos_validate_ki_search"] = o.PosValidateKiSearch
+ }
+ if !IsNil(o.PosValidateGetOutKeysForInputs) {
+ toSerialize["pos_validate_get_out_keys_for_inputs"] = o.PosValidateGetOutKeysForInputs
+ }
+ if !IsNil(o.PosValidateZvp) {
+ toSerialize["pos_validate_zvp"] = o.PosValidateZvp
+ }
+ return toSerialize, nil
+}
+
+type NullableBlockProcessingPerformanceModel struct {
+ value *BlockProcessingPerformanceModel
+ isSet bool
+}
+
+func (v NullableBlockProcessingPerformanceModel) Get() *BlockProcessingPerformanceModel {
+ return v.value
+}
+
+func (v *NullableBlockProcessingPerformanceModel) Set(val *BlockProcessingPerformanceModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableBlockProcessingPerformanceModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableBlockProcessingPerformanceModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableBlockProcessingPerformanceModel(val *BlockProcessingPerformanceModel) *NullableBlockProcessingPerformanceModel {
+ return &NullableBlockProcessingPerformanceModel{value: val, isSet: true}
+}
+
+func (v NullableBlockProcessingPerformanceModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableBlockProcessingPerformanceModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_block_template_model.go b/utils/sdk/client/go/model_block_template_model.go
new file mode 100644
index 00000000..48245106
--- /dev/null
+++ b/utils/sdk/client/go/model_block_template_model.go
@@ -0,0 +1,414 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the BlockTemplateModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &BlockTemplateModel{}
+
+// BlockTemplateModel struct for BlockTemplateModel
+type BlockTemplateModel struct {
+ BlocktemplateBlob *string `json:"blocktemplate_blob,omitempty"`
+ Difficulty *string `json:"difficulty,omitempty"`
+ Height *int32 `json:"height,omitempty"`
+ MinerTxTgc *TxGenerationContextModel `json:"miner_tx_tgc,omitempty"`
+ BlockRewardWithoutFee *int32 `json:"block_reward_without_fee,omitempty"`
+ BlockReward *int32 `json:"block_reward,omitempty"`
+ TxsFee *int32 `json:"txs_fee,omitempty"`
+ PrevHash *string `json:"prev_hash,omitempty"`
+ Seed *string `json:"seed,omitempty"`
+}
+
+// NewBlockTemplateModel instantiates a new BlockTemplateModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewBlockTemplateModel() *BlockTemplateModel {
+ this := BlockTemplateModel{}
+ return &this
+}
+
+// NewBlockTemplateModelWithDefaults instantiates a new BlockTemplateModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewBlockTemplateModelWithDefaults() *BlockTemplateModel {
+ this := BlockTemplateModel{}
+ return &this
+}
+
+// GetBlocktemplateBlob returns the BlocktemplateBlob field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetBlocktemplateBlob() string {
+ if o == nil || IsNil(o.BlocktemplateBlob) {
+ var ret string
+ return ret
+ }
+ return *o.BlocktemplateBlob
+}
+
+// GetBlocktemplateBlobOk returns a tuple with the BlocktemplateBlob field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetBlocktemplateBlobOk() (*string, bool) {
+ if o == nil || IsNil(o.BlocktemplateBlob) {
+ return nil, false
+ }
+ return o.BlocktemplateBlob, true
+}
+
+// HasBlocktemplateBlob returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasBlocktemplateBlob() bool {
+ if o != nil && !IsNil(o.BlocktemplateBlob) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlocktemplateBlob gets a reference to the given string and assigns it to the BlocktemplateBlob field.
+func (o *BlockTemplateModel) SetBlocktemplateBlob(v string) {
+ o.BlocktemplateBlob = &v
+}
+
+// GetDifficulty returns the Difficulty field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetDifficulty() string {
+ if o == nil || IsNil(o.Difficulty) {
+ var ret string
+ return ret
+ }
+ return *o.Difficulty
+}
+
+// GetDifficultyOk returns a tuple with the Difficulty field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetDifficultyOk() (*string, bool) {
+ if o == nil || IsNil(o.Difficulty) {
+ return nil, false
+ }
+ return o.Difficulty, true
+}
+
+// HasDifficulty returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasDifficulty() bool {
+ if o != nil && !IsNil(o.Difficulty) {
+ return true
+ }
+
+ return false
+}
+
+// SetDifficulty gets a reference to the given string and assigns it to the Difficulty field.
+func (o *BlockTemplateModel) SetDifficulty(v string) {
+ o.Difficulty = &v
+}
+
+// GetHeight returns the Height field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetHeight() int32 {
+ if o == nil || IsNil(o.Height) {
+ var ret int32
+ return ret
+ }
+ return *o.Height
+}
+
+// GetHeightOk returns a tuple with the Height field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.Height) {
+ return nil, false
+ }
+ return o.Height, true
+}
+
+// HasHeight returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasHeight() bool {
+ if o != nil && !IsNil(o.Height) {
+ return true
+ }
+
+ return false
+}
+
+// SetHeight gets a reference to the given int32 and assigns it to the Height field.
+func (o *BlockTemplateModel) SetHeight(v int32) {
+ o.Height = &v
+}
+
+// GetMinerTxTgc returns the MinerTxTgc field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetMinerTxTgc() TxGenerationContextModel {
+ if o == nil || IsNil(o.MinerTxTgc) {
+ var ret TxGenerationContextModel
+ return ret
+ }
+ return *o.MinerTxTgc
+}
+
+// GetMinerTxTgcOk returns a tuple with the MinerTxTgc field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetMinerTxTgcOk() (*TxGenerationContextModel, bool) {
+ if o == nil || IsNil(o.MinerTxTgc) {
+ return nil, false
+ }
+ return o.MinerTxTgc, true
+}
+
+// HasMinerTxTgc returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasMinerTxTgc() bool {
+ if o != nil && !IsNil(o.MinerTxTgc) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinerTxTgc gets a reference to the given TxGenerationContextModel and assigns it to the MinerTxTgc field.
+func (o *BlockTemplateModel) SetMinerTxTgc(v TxGenerationContextModel) {
+ o.MinerTxTgc = &v
+}
+
+// GetBlockRewardWithoutFee returns the BlockRewardWithoutFee field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetBlockRewardWithoutFee() int32 {
+ if o == nil || IsNil(o.BlockRewardWithoutFee) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockRewardWithoutFee
+}
+
+// GetBlockRewardWithoutFeeOk returns a tuple with the BlockRewardWithoutFee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetBlockRewardWithoutFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockRewardWithoutFee) {
+ return nil, false
+ }
+ return o.BlockRewardWithoutFee, true
+}
+
+// HasBlockRewardWithoutFee returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasBlockRewardWithoutFee() bool {
+ if o != nil && !IsNil(o.BlockRewardWithoutFee) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockRewardWithoutFee gets a reference to the given int32 and assigns it to the BlockRewardWithoutFee field.
+func (o *BlockTemplateModel) SetBlockRewardWithoutFee(v int32) {
+ o.BlockRewardWithoutFee = &v
+}
+
+// GetBlockReward returns the BlockReward field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetBlockReward() int32 {
+ if o == nil || IsNil(o.BlockReward) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockReward
+}
+
+// GetBlockRewardOk returns a tuple with the BlockReward field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetBlockRewardOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockReward) {
+ return nil, false
+ }
+ return o.BlockReward, true
+}
+
+// HasBlockReward returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasBlockReward() bool {
+ if o != nil && !IsNil(o.BlockReward) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockReward gets a reference to the given int32 and assigns it to the BlockReward field.
+func (o *BlockTemplateModel) SetBlockReward(v int32) {
+ o.BlockReward = &v
+}
+
+// GetTxsFee returns the TxsFee field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetTxsFee() int32 {
+ if o == nil || IsNil(o.TxsFee) {
+ var ret int32
+ return ret
+ }
+ return *o.TxsFee
+}
+
+// GetTxsFeeOk returns a tuple with the TxsFee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetTxsFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxsFee) {
+ return nil, false
+ }
+ return o.TxsFee, true
+}
+
+// HasTxsFee returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasTxsFee() bool {
+ if o != nil && !IsNil(o.TxsFee) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxsFee gets a reference to the given int32 and assigns it to the TxsFee field.
+func (o *BlockTemplateModel) SetTxsFee(v int32) {
+ o.TxsFee = &v
+}
+
+// GetPrevHash returns the PrevHash field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetPrevHash() string {
+ if o == nil || IsNil(o.PrevHash) {
+ var ret string
+ return ret
+ }
+ return *o.PrevHash
+}
+
+// GetPrevHashOk returns a tuple with the PrevHash field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetPrevHashOk() (*string, bool) {
+ if o == nil || IsNil(o.PrevHash) {
+ return nil, false
+ }
+ return o.PrevHash, true
+}
+
+// HasPrevHash returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasPrevHash() bool {
+ if o != nil && !IsNil(o.PrevHash) {
+ return true
+ }
+
+ return false
+}
+
+// SetPrevHash gets a reference to the given string and assigns it to the PrevHash field.
+func (o *BlockTemplateModel) SetPrevHash(v string) {
+ o.PrevHash = &v
+}
+
+// GetSeed returns the Seed field value if set, zero value otherwise.
+func (o *BlockTemplateModel) GetSeed() string {
+ if o == nil || IsNil(o.Seed) {
+ var ret string
+ return ret
+ }
+ return *o.Seed
+}
+
+// GetSeedOk returns a tuple with the Seed field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateModel) GetSeedOk() (*string, bool) {
+ if o == nil || IsNil(o.Seed) {
+ return nil, false
+ }
+ return o.Seed, true
+}
+
+// HasSeed returns a boolean if a field has been set.
+func (o *BlockTemplateModel) HasSeed() bool {
+ if o != nil && !IsNil(o.Seed) {
+ return true
+ }
+
+ return false
+}
+
+// SetSeed gets a reference to the given string and assigns it to the Seed field.
+func (o *BlockTemplateModel) SetSeed(v string) {
+ o.Seed = &v
+}
+
+func (o BlockTemplateModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o BlockTemplateModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.BlocktemplateBlob) {
+ toSerialize["blocktemplate_blob"] = o.BlocktemplateBlob
+ }
+ if !IsNil(o.Difficulty) {
+ toSerialize["difficulty"] = o.Difficulty
+ }
+ if !IsNil(o.Height) {
+ toSerialize["height"] = o.Height
+ }
+ if !IsNil(o.MinerTxTgc) {
+ toSerialize["miner_tx_tgc"] = o.MinerTxTgc
+ }
+ if !IsNil(o.BlockRewardWithoutFee) {
+ toSerialize["block_reward_without_fee"] = o.BlockRewardWithoutFee
+ }
+ if !IsNil(o.BlockReward) {
+ toSerialize["block_reward"] = o.BlockReward
+ }
+ if !IsNil(o.TxsFee) {
+ toSerialize["txs_fee"] = o.TxsFee
+ }
+ if !IsNil(o.PrevHash) {
+ toSerialize["prev_hash"] = o.PrevHash
+ }
+ if !IsNil(o.Seed) {
+ toSerialize["seed"] = o.Seed
+ }
+ return toSerialize, nil
+}
+
+type NullableBlockTemplateModel struct {
+ value *BlockTemplateModel
+ isSet bool
+}
+
+func (v NullableBlockTemplateModel) Get() *BlockTemplateModel {
+ return v.value
+}
+
+func (v *NullableBlockTemplateModel) Set(val *BlockTemplateModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableBlockTemplateModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableBlockTemplateModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableBlockTemplateModel(val *BlockTemplateModel) *NullableBlockTemplateModel {
+ return &NullableBlockTemplateModel{value: val, isSet: true}
+}
+
+func (v NullableBlockTemplateModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableBlockTemplateModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_block_template_request_model.go b/utils/sdk/client/go/model_block_template_request_model.go
new file mode 100644
index 00000000..624a5619
--- /dev/null
+++ b/utils/sdk/client/go/model_block_template_request_model.go
@@ -0,0 +1,342 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the BlockTemplateRequestModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &BlockTemplateRequestModel{}
+
+// BlockTemplateRequestModel struct for BlockTemplateRequestModel
+type BlockTemplateRequestModel struct {
+ MinerAddress *string `json:"miner_address,omitempty"`
+ StakeholderAddress *string `json:"stakeholder_address,omitempty"`
+ ExNonce *string `json:"ex_nonce,omitempty"`
+ PosBlock *bool `json:"pos_block,omitempty"`
+ IgnorePowTsCheck *bool `json:"ignore_pow_ts_check,omitempty"`
+ Pe *PosEntryModel `json:"pe,omitempty"`
+ ExplicitTxs []string `json:"explicit_txs,omitempty"`
+}
+
+// NewBlockTemplateRequestModel instantiates a new BlockTemplateRequestModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewBlockTemplateRequestModel() *BlockTemplateRequestModel {
+ this := BlockTemplateRequestModel{}
+ return &this
+}
+
+// NewBlockTemplateRequestModelWithDefaults instantiates a new BlockTemplateRequestModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewBlockTemplateRequestModelWithDefaults() *BlockTemplateRequestModel {
+ this := BlockTemplateRequestModel{}
+ return &this
+}
+
+// GetMinerAddress returns the MinerAddress field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetMinerAddress() string {
+ if o == nil || IsNil(o.MinerAddress) {
+ var ret string
+ return ret
+ }
+ return *o.MinerAddress
+}
+
+// GetMinerAddressOk returns a tuple with the MinerAddress field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetMinerAddressOk() (*string, bool) {
+ if o == nil || IsNil(o.MinerAddress) {
+ return nil, false
+ }
+ return o.MinerAddress, true
+}
+
+// HasMinerAddress returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasMinerAddress() bool {
+ if o != nil && !IsNil(o.MinerAddress) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinerAddress gets a reference to the given string and assigns it to the MinerAddress field.
+func (o *BlockTemplateRequestModel) SetMinerAddress(v string) {
+ o.MinerAddress = &v
+}
+
+// GetStakeholderAddress returns the StakeholderAddress field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetStakeholderAddress() string {
+ if o == nil || IsNil(o.StakeholderAddress) {
+ var ret string
+ return ret
+ }
+ return *o.StakeholderAddress
+}
+
+// GetStakeholderAddressOk returns a tuple with the StakeholderAddress field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetStakeholderAddressOk() (*string, bool) {
+ if o == nil || IsNil(o.StakeholderAddress) {
+ return nil, false
+ }
+ return o.StakeholderAddress, true
+}
+
+// HasStakeholderAddress returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasStakeholderAddress() bool {
+ if o != nil && !IsNil(o.StakeholderAddress) {
+ return true
+ }
+
+ return false
+}
+
+// SetStakeholderAddress gets a reference to the given string and assigns it to the StakeholderAddress field.
+func (o *BlockTemplateRequestModel) SetStakeholderAddress(v string) {
+ o.StakeholderAddress = &v
+}
+
+// GetExNonce returns the ExNonce field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetExNonce() string {
+ if o == nil || IsNil(o.ExNonce) {
+ var ret string
+ return ret
+ }
+ return *o.ExNonce
+}
+
+// GetExNonceOk returns a tuple with the ExNonce field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetExNonceOk() (*string, bool) {
+ if o == nil || IsNil(o.ExNonce) {
+ return nil, false
+ }
+ return o.ExNonce, true
+}
+
+// HasExNonce returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasExNonce() bool {
+ if o != nil && !IsNil(o.ExNonce) {
+ return true
+ }
+
+ return false
+}
+
+// SetExNonce gets a reference to the given string and assigns it to the ExNonce field.
+func (o *BlockTemplateRequestModel) SetExNonce(v string) {
+ o.ExNonce = &v
+}
+
+// GetPosBlock returns the PosBlock field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetPosBlock() bool {
+ if o == nil || IsNil(o.PosBlock) {
+ var ret bool
+ return ret
+ }
+ return *o.PosBlock
+}
+
+// GetPosBlockOk returns a tuple with the PosBlock field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetPosBlockOk() (*bool, bool) {
+ if o == nil || IsNil(o.PosBlock) {
+ return nil, false
+ }
+ return o.PosBlock, true
+}
+
+// HasPosBlock returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasPosBlock() bool {
+ if o != nil && !IsNil(o.PosBlock) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosBlock gets a reference to the given bool and assigns it to the PosBlock field.
+func (o *BlockTemplateRequestModel) SetPosBlock(v bool) {
+ o.PosBlock = &v
+}
+
+// GetIgnorePowTsCheck returns the IgnorePowTsCheck field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetIgnorePowTsCheck() bool {
+ if o == nil || IsNil(o.IgnorePowTsCheck) {
+ var ret bool
+ return ret
+ }
+ return *o.IgnorePowTsCheck
+}
+
+// GetIgnorePowTsCheckOk returns a tuple with the IgnorePowTsCheck field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetIgnorePowTsCheckOk() (*bool, bool) {
+ if o == nil || IsNil(o.IgnorePowTsCheck) {
+ return nil, false
+ }
+ return o.IgnorePowTsCheck, true
+}
+
+// HasIgnorePowTsCheck returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasIgnorePowTsCheck() bool {
+ if o != nil && !IsNil(o.IgnorePowTsCheck) {
+ return true
+ }
+
+ return false
+}
+
+// SetIgnorePowTsCheck gets a reference to the given bool and assigns it to the IgnorePowTsCheck field.
+func (o *BlockTemplateRequestModel) SetIgnorePowTsCheck(v bool) {
+ o.IgnorePowTsCheck = &v
+}
+
+// GetPe returns the Pe field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetPe() PosEntryModel {
+ if o == nil || IsNil(o.Pe) {
+ var ret PosEntryModel
+ return ret
+ }
+ return *o.Pe
+}
+
+// GetPeOk returns a tuple with the Pe field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetPeOk() (*PosEntryModel, bool) {
+ if o == nil || IsNil(o.Pe) {
+ return nil, false
+ }
+ return o.Pe, true
+}
+
+// HasPe returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasPe() bool {
+ if o != nil && !IsNil(o.Pe) {
+ return true
+ }
+
+ return false
+}
+
+// SetPe gets a reference to the given PosEntryModel and assigns it to the Pe field.
+func (o *BlockTemplateRequestModel) SetPe(v PosEntryModel) {
+ o.Pe = &v
+}
+
+// GetExplicitTxs returns the ExplicitTxs field value if set, zero value otherwise.
+func (o *BlockTemplateRequestModel) GetExplicitTxs() []string {
+ if o == nil || IsNil(o.ExplicitTxs) {
+ var ret []string
+ return ret
+ }
+ return o.ExplicitTxs
+}
+
+// GetExplicitTxsOk returns a tuple with the ExplicitTxs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *BlockTemplateRequestModel) GetExplicitTxsOk() ([]string, bool) {
+ if o == nil || IsNil(o.ExplicitTxs) {
+ return nil, false
+ }
+ return o.ExplicitTxs, true
+}
+
+// HasExplicitTxs returns a boolean if a field has been set.
+func (o *BlockTemplateRequestModel) HasExplicitTxs() bool {
+ if o != nil && !IsNil(o.ExplicitTxs) {
+ return true
+ }
+
+ return false
+}
+
+// SetExplicitTxs gets a reference to the given []string and assigns it to the ExplicitTxs field.
+func (o *BlockTemplateRequestModel) SetExplicitTxs(v []string) {
+ o.ExplicitTxs = v
+}
+
+func (o BlockTemplateRequestModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o BlockTemplateRequestModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.MinerAddress) {
+ toSerialize["miner_address"] = o.MinerAddress
+ }
+ if !IsNil(o.StakeholderAddress) {
+ toSerialize["stakeholder_address"] = o.StakeholderAddress
+ }
+ if !IsNil(o.ExNonce) {
+ toSerialize["ex_nonce"] = o.ExNonce
+ }
+ if !IsNil(o.PosBlock) {
+ toSerialize["pos_block"] = o.PosBlock
+ }
+ if !IsNil(o.IgnorePowTsCheck) {
+ toSerialize["ignore_pow_ts_check"] = o.IgnorePowTsCheck
+ }
+ if !IsNil(o.Pe) {
+ toSerialize["pe"] = o.Pe
+ }
+ if !IsNil(o.ExplicitTxs) {
+ toSerialize["explicit_txs"] = o.ExplicitTxs
+ }
+ return toSerialize, nil
+}
+
+type NullableBlockTemplateRequestModel struct {
+ value *BlockTemplateRequestModel
+ isSet bool
+}
+
+func (v NullableBlockTemplateRequestModel) Get() *BlockTemplateRequestModel {
+ return v.value
+}
+
+func (v *NullableBlockTemplateRequestModel) Set(val *BlockTemplateRequestModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableBlockTemplateRequestModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableBlockTemplateRequestModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableBlockTemplateRequestModel(val *BlockTemplateRequestModel) *NullableBlockTemplateRequestModel {
+ return &NullableBlockTemplateRequestModel{value: val, isSet: true}
+}
+
+func (v NullableBlockTemplateRequestModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableBlockTemplateRequestModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_db_stat_info_model.go b/utils/sdk/client/go/model_db_stat_info_model.go
new file mode 100644
index 00000000..5f2f49cd
--- /dev/null
+++ b/utils/sdk/client/go/model_db_stat_info_model.go
@@ -0,0 +1,198 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the DbStatInfoModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &DbStatInfoModel{}
+
+// DbStatInfoModel struct for DbStatInfoModel
+type DbStatInfoModel struct {
+ TxCount *int32 `json:"tx_count,omitempty"`
+ WriteTxCount *int32 `json:"write_tx_count,omitempty"`
+ MapSize *int32 `json:"map_size,omitempty"`
+}
+
+// NewDbStatInfoModel instantiates a new DbStatInfoModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewDbStatInfoModel() *DbStatInfoModel {
+ this := DbStatInfoModel{}
+ return &this
+}
+
+// NewDbStatInfoModelWithDefaults instantiates a new DbStatInfoModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewDbStatInfoModelWithDefaults() *DbStatInfoModel {
+ this := DbStatInfoModel{}
+ return &this
+}
+
+// GetTxCount returns the TxCount field value if set, zero value otherwise.
+func (o *DbStatInfoModel) GetTxCount() int32 {
+ if o == nil || IsNil(o.TxCount) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCount
+}
+
+// GetTxCountOk returns a tuple with the TxCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *DbStatInfoModel) GetTxCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCount) {
+ return nil, false
+ }
+ return o.TxCount, true
+}
+
+// HasTxCount returns a boolean if a field has been set.
+func (o *DbStatInfoModel) HasTxCount() bool {
+ if o != nil && !IsNil(o.TxCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCount gets a reference to the given int32 and assigns it to the TxCount field.
+func (o *DbStatInfoModel) SetTxCount(v int32) {
+ o.TxCount = &v
+}
+
+// GetWriteTxCount returns the WriteTxCount field value if set, zero value otherwise.
+func (o *DbStatInfoModel) GetWriteTxCount() int32 {
+ if o == nil || IsNil(o.WriteTxCount) {
+ var ret int32
+ return ret
+ }
+ return *o.WriteTxCount
+}
+
+// GetWriteTxCountOk returns a tuple with the WriteTxCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *DbStatInfoModel) GetWriteTxCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.WriteTxCount) {
+ return nil, false
+ }
+ return o.WriteTxCount, true
+}
+
+// HasWriteTxCount returns a boolean if a field has been set.
+func (o *DbStatInfoModel) HasWriteTxCount() bool {
+ if o != nil && !IsNil(o.WriteTxCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetWriteTxCount gets a reference to the given int32 and assigns it to the WriteTxCount field.
+func (o *DbStatInfoModel) SetWriteTxCount(v int32) {
+ o.WriteTxCount = &v
+}
+
+// GetMapSize returns the MapSize field value if set, zero value otherwise.
+func (o *DbStatInfoModel) GetMapSize() int32 {
+ if o == nil || IsNil(o.MapSize) {
+ var ret int32
+ return ret
+ }
+ return *o.MapSize
+}
+
+// GetMapSizeOk returns a tuple with the MapSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *DbStatInfoModel) GetMapSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.MapSize) {
+ return nil, false
+ }
+ return o.MapSize, true
+}
+
+// HasMapSize returns a boolean if a field has been set.
+func (o *DbStatInfoModel) HasMapSize() bool {
+ if o != nil && !IsNil(o.MapSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetMapSize gets a reference to the given int32 and assigns it to the MapSize field.
+func (o *DbStatInfoModel) SetMapSize(v int32) {
+ o.MapSize = &v
+}
+
+func (o DbStatInfoModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o DbStatInfoModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.TxCount) {
+ toSerialize["tx_count"] = o.TxCount
+ }
+ if !IsNil(o.WriteTxCount) {
+ toSerialize["write_tx_count"] = o.WriteTxCount
+ }
+ if !IsNil(o.MapSize) {
+ toSerialize["map_size"] = o.MapSize
+ }
+ return toSerialize, nil
+}
+
+type NullableDbStatInfoModel struct {
+ value *DbStatInfoModel
+ isSet bool
+}
+
+func (v NullableDbStatInfoModel) Get() *DbStatInfoModel {
+ return v.value
+}
+
+func (v *NullableDbStatInfoModel) Set(val *DbStatInfoModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableDbStatInfoModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableDbStatInfoModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableDbStatInfoModel(val *DbStatInfoModel) *NullableDbStatInfoModel {
+ return &NullableDbStatInfoModel{value: val, isSet: true}
+}
+
+func (v NullableDbStatInfoModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableDbStatInfoModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_height_model.go b/utils/sdk/client/go/model_height_model.go
new file mode 100644
index 00000000..e9a44933
--- /dev/null
+++ b/utils/sdk/client/go/model_height_model.go
@@ -0,0 +1,126 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the HeightModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &HeightModel{}
+
+// HeightModel struct for HeightModel
+type HeightModel struct {
+ Height *int32 `json:"height,omitempty"`
+}
+
+// NewHeightModel instantiates a new HeightModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewHeightModel() *HeightModel {
+ this := HeightModel{}
+ return &this
+}
+
+// NewHeightModelWithDefaults instantiates a new HeightModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewHeightModelWithDefaults() *HeightModel {
+ this := HeightModel{}
+ return &this
+}
+
+// GetHeight returns the Height field value if set, zero value otherwise.
+func (o *HeightModel) GetHeight() int32 {
+ if o == nil || IsNil(o.Height) {
+ var ret int32
+ return ret
+ }
+ return *o.Height
+}
+
+// GetHeightOk returns a tuple with the Height field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *HeightModel) GetHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.Height) {
+ return nil, false
+ }
+ return o.Height, true
+}
+
+// HasHeight returns a boolean if a field has been set.
+func (o *HeightModel) HasHeight() bool {
+ if o != nil && !IsNil(o.Height) {
+ return true
+ }
+
+ return false
+}
+
+// SetHeight gets a reference to the given int32 and assigns it to the Height field.
+func (o *HeightModel) SetHeight(v int32) {
+ o.Height = &v
+}
+
+func (o HeightModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o HeightModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Height) {
+ toSerialize["height"] = o.Height
+ }
+ return toSerialize, nil
+}
+
+type NullableHeightModel struct {
+ value *HeightModel
+ isSet bool
+}
+
+func (v NullableHeightModel) Get() *HeightModel {
+ return v.value
+}
+
+func (v *NullableHeightModel) Set(val *HeightModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableHeightModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableHeightModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableHeightModel(val *HeightModel) *NullableHeightModel {
+ return &NullableHeightModel{value: val, isSet: true}
+}
+
+func (v NullableHeightModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableHeightModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_info_model.go b/utils/sdk/client/go/model_info_model.go
new file mode 100644
index 00000000..68bbad82
--- /dev/null
+++ b/utils/sdk/client/go/model_info_model.go
@@ -0,0 +1,1746 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the InfoModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &InfoModel{}
+
+// InfoModel struct for InfoModel
+type InfoModel struct {
+ Height *int32 `json:"height,omitempty"`
+ TxCount *int32 `json:"tx_count,omitempty"`
+ TxPoolSize *int32 `json:"tx_pool_size,omitempty"`
+ AltBlocksCount *int32 `json:"alt_blocks_count,omitempty"`
+ OutgoingConnectionsCount *int32 `json:"outgoing_connections_count,omitempty"`
+ IncomingConnectionsCount *int32 `json:"incoming_connections_count,omitempty"`
+ SynchronizedConnectionsCount *int32 `json:"synchronized_connections_count,omitempty"`
+ WhitePeerlistSize *int32 `json:"white_peerlist_size,omitempty"`
+ GreyPeerlistSize *int32 `json:"grey_peerlist_size,omitempty"`
+ CurrentBlocksMedian *int32 `json:"current_blocks_median,omitempty"`
+ AliasCount *int32 `json:"alias_count,omitempty"`
+ CurrentMaxAllowedBlockSize *int32 `json:"current_max_allowed_block_size,omitempty"`
+ DaemonNetworkState *string `json:"daemon_network_state,omitempty"`
+ SynchronizationStartHeight *int32 `json:"synchronization_start_height,omitempty"`
+ MaxNetSeenHeight *int32 `json:"max_net_seen_height,omitempty"`
+ Mi *MaintainersInfoModel `json:"mi,omitempty"`
+ PosAllowed *bool `json:"pos_allowed,omitempty"`
+ PosDifficulty *string `json:"pos_difficulty,omitempty"`
+ PowDifficulty *int32 `json:"pow_difficulty,omitempty"`
+ DefaultFee *int32 `json:"default_fee,omitempty"`
+ MinimumFee *int32 `json:"minimum_fee,omitempty"`
+ IsHardforkActive []bool `json:"is_hardfork_active,omitempty"`
+ NetTimeDeltaMedian *int64 `json:"net_time_delta_median,omitempty"`
+ CurrentNetworkHashrate50 *int32 `json:"current_network_hashrate_50,omitempty"`
+ CurrentNetworkHashrate350 *int32 `json:"current_network_hashrate_350,omitempty"`
+ SecondsFor10Blocks *int32 `json:"seconds_for_10_blocks,omitempty"`
+ SecondsFor30Blocks *int32 `json:"seconds_for_30_blocks,omitempty"`
+ TransactionsCntPerDay []int32 `json:"transactions_cnt_per_day,omitempty"`
+ TransactionsVolumePerDay []int32 `json:"transactions_volume_per_day,omitempty"`
+ LastPosTimestamp *int32 `json:"last_pos_timestamp,omitempty"`
+ LastPowTimestamp *int32 `json:"last_pow_timestamp,omitempty"`
+ TotalCoins *string `json:"total_coins,omitempty"`
+ LastBlockSize *int32 `json:"last_block_size,omitempty"`
+ TxCountInLastBlock *int32 `json:"tx_count_in_last_block,omitempty"`
+ PosSequenceFactor *float64 `json:"pos_sequence_factor,omitempty"`
+ PowSequenceFactor *float64 `json:"pow_sequence_factor,omitempty"`
+ BlockReward *int32 `json:"block_reward,omitempty"`
+ LastBlockTotalReward *int32 `json:"last_block_total_reward,omitempty"`
+ PosDiffTotalCoinsRate *int32 `json:"pos_diff_total_coins_rate,omitempty"`
+ LastBlockTimestamp *int32 `json:"last_block_timestamp,omitempty"`
+ LastBlockHash *string `json:"last_block_hash,omitempty"`
+ PosBlockTsShiftVsActual *int64 `json:"pos_block_ts_shift_vs_actual,omitempty"`
+ OutsStat *map[string]int32 `json:"outs_stat,omitempty"`
+ PerformanceData *PerformanceModel `json:"performance_data,omitempty"`
+ OffersCount *int32 `json:"offers_count,omitempty"`
+ ExpirationMedianTimestamp *int32 `json:"expiration_median_timestamp,omitempty"`
+}
+
+// NewInfoModel instantiates a new InfoModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewInfoModel() *InfoModel {
+ this := InfoModel{}
+ return &this
+}
+
+// NewInfoModelWithDefaults instantiates a new InfoModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewInfoModelWithDefaults() *InfoModel {
+ this := InfoModel{}
+ return &this
+}
+
+// GetHeight returns the Height field value if set, zero value otherwise.
+func (o *InfoModel) GetHeight() int32 {
+ if o == nil || IsNil(o.Height) {
+ var ret int32
+ return ret
+ }
+ return *o.Height
+}
+
+// GetHeightOk returns a tuple with the Height field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.Height) {
+ return nil, false
+ }
+ return o.Height, true
+}
+
+// HasHeight returns a boolean if a field has been set.
+func (o *InfoModel) HasHeight() bool {
+ if o != nil && !IsNil(o.Height) {
+ return true
+ }
+
+ return false
+}
+
+// SetHeight gets a reference to the given int32 and assigns it to the Height field.
+func (o *InfoModel) SetHeight(v int32) {
+ o.Height = &v
+}
+
+// GetTxCount returns the TxCount field value if set, zero value otherwise.
+func (o *InfoModel) GetTxCount() int32 {
+ if o == nil || IsNil(o.TxCount) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCount
+}
+
+// GetTxCountOk returns a tuple with the TxCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTxCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCount) {
+ return nil, false
+ }
+ return o.TxCount, true
+}
+
+// HasTxCount returns a boolean if a field has been set.
+func (o *InfoModel) HasTxCount() bool {
+ if o != nil && !IsNil(o.TxCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCount gets a reference to the given int32 and assigns it to the TxCount field.
+func (o *InfoModel) SetTxCount(v int32) {
+ o.TxCount = &v
+}
+
+// GetTxPoolSize returns the TxPoolSize field value if set, zero value otherwise.
+func (o *InfoModel) GetTxPoolSize() int32 {
+ if o == nil || IsNil(o.TxPoolSize) {
+ var ret int32
+ return ret
+ }
+ return *o.TxPoolSize
+}
+
+// GetTxPoolSizeOk returns a tuple with the TxPoolSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTxPoolSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxPoolSize) {
+ return nil, false
+ }
+ return o.TxPoolSize, true
+}
+
+// HasTxPoolSize returns a boolean if a field has been set.
+func (o *InfoModel) HasTxPoolSize() bool {
+ if o != nil && !IsNil(o.TxPoolSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPoolSize gets a reference to the given int32 and assigns it to the TxPoolSize field.
+func (o *InfoModel) SetTxPoolSize(v int32) {
+ o.TxPoolSize = &v
+}
+
+// GetAltBlocksCount returns the AltBlocksCount field value if set, zero value otherwise.
+func (o *InfoModel) GetAltBlocksCount() int32 {
+ if o == nil || IsNil(o.AltBlocksCount) {
+ var ret int32
+ return ret
+ }
+ return *o.AltBlocksCount
+}
+
+// GetAltBlocksCountOk returns a tuple with the AltBlocksCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetAltBlocksCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.AltBlocksCount) {
+ return nil, false
+ }
+ return o.AltBlocksCount, true
+}
+
+// HasAltBlocksCount returns a boolean if a field has been set.
+func (o *InfoModel) HasAltBlocksCount() bool {
+ if o != nil && !IsNil(o.AltBlocksCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAltBlocksCount gets a reference to the given int32 and assigns it to the AltBlocksCount field.
+func (o *InfoModel) SetAltBlocksCount(v int32) {
+ o.AltBlocksCount = &v
+}
+
+// GetOutgoingConnectionsCount returns the OutgoingConnectionsCount field value if set, zero value otherwise.
+func (o *InfoModel) GetOutgoingConnectionsCount() int32 {
+ if o == nil || IsNil(o.OutgoingConnectionsCount) {
+ var ret int32
+ return ret
+ }
+ return *o.OutgoingConnectionsCount
+}
+
+// GetOutgoingConnectionsCountOk returns a tuple with the OutgoingConnectionsCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetOutgoingConnectionsCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.OutgoingConnectionsCount) {
+ return nil, false
+ }
+ return o.OutgoingConnectionsCount, true
+}
+
+// HasOutgoingConnectionsCount returns a boolean if a field has been set.
+func (o *InfoModel) HasOutgoingConnectionsCount() bool {
+ if o != nil && !IsNil(o.OutgoingConnectionsCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetOutgoingConnectionsCount gets a reference to the given int32 and assigns it to the OutgoingConnectionsCount field.
+func (o *InfoModel) SetOutgoingConnectionsCount(v int32) {
+ o.OutgoingConnectionsCount = &v
+}
+
+// GetIncomingConnectionsCount returns the IncomingConnectionsCount field value if set, zero value otherwise.
+func (o *InfoModel) GetIncomingConnectionsCount() int32 {
+ if o == nil || IsNil(o.IncomingConnectionsCount) {
+ var ret int32
+ return ret
+ }
+ return *o.IncomingConnectionsCount
+}
+
+// GetIncomingConnectionsCountOk returns a tuple with the IncomingConnectionsCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetIncomingConnectionsCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.IncomingConnectionsCount) {
+ return nil, false
+ }
+ return o.IncomingConnectionsCount, true
+}
+
+// HasIncomingConnectionsCount returns a boolean if a field has been set.
+func (o *InfoModel) HasIncomingConnectionsCount() bool {
+ if o != nil && !IsNil(o.IncomingConnectionsCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetIncomingConnectionsCount gets a reference to the given int32 and assigns it to the IncomingConnectionsCount field.
+func (o *InfoModel) SetIncomingConnectionsCount(v int32) {
+ o.IncomingConnectionsCount = &v
+}
+
+// GetSynchronizedConnectionsCount returns the SynchronizedConnectionsCount field value if set, zero value otherwise.
+func (o *InfoModel) GetSynchronizedConnectionsCount() int32 {
+ if o == nil || IsNil(o.SynchronizedConnectionsCount) {
+ var ret int32
+ return ret
+ }
+ return *o.SynchronizedConnectionsCount
+}
+
+// GetSynchronizedConnectionsCountOk returns a tuple with the SynchronizedConnectionsCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetSynchronizedConnectionsCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.SynchronizedConnectionsCount) {
+ return nil, false
+ }
+ return o.SynchronizedConnectionsCount, true
+}
+
+// HasSynchronizedConnectionsCount returns a boolean if a field has been set.
+func (o *InfoModel) HasSynchronizedConnectionsCount() bool {
+ if o != nil && !IsNil(o.SynchronizedConnectionsCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetSynchronizedConnectionsCount gets a reference to the given int32 and assigns it to the SynchronizedConnectionsCount field.
+func (o *InfoModel) SetSynchronizedConnectionsCount(v int32) {
+ o.SynchronizedConnectionsCount = &v
+}
+
+// GetWhitePeerlistSize returns the WhitePeerlistSize field value if set, zero value otherwise.
+func (o *InfoModel) GetWhitePeerlistSize() int32 {
+ if o == nil || IsNil(o.WhitePeerlistSize) {
+ var ret int32
+ return ret
+ }
+ return *o.WhitePeerlistSize
+}
+
+// GetWhitePeerlistSizeOk returns a tuple with the WhitePeerlistSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetWhitePeerlistSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.WhitePeerlistSize) {
+ return nil, false
+ }
+ return o.WhitePeerlistSize, true
+}
+
+// HasWhitePeerlistSize returns a boolean if a field has been set.
+func (o *InfoModel) HasWhitePeerlistSize() bool {
+ if o != nil && !IsNil(o.WhitePeerlistSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetWhitePeerlistSize gets a reference to the given int32 and assigns it to the WhitePeerlistSize field.
+func (o *InfoModel) SetWhitePeerlistSize(v int32) {
+ o.WhitePeerlistSize = &v
+}
+
+// GetGreyPeerlistSize returns the GreyPeerlistSize field value if set, zero value otherwise.
+func (o *InfoModel) GetGreyPeerlistSize() int32 {
+ if o == nil || IsNil(o.GreyPeerlistSize) {
+ var ret int32
+ return ret
+ }
+ return *o.GreyPeerlistSize
+}
+
+// GetGreyPeerlistSizeOk returns a tuple with the GreyPeerlistSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetGreyPeerlistSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.GreyPeerlistSize) {
+ return nil, false
+ }
+ return o.GreyPeerlistSize, true
+}
+
+// HasGreyPeerlistSize returns a boolean if a field has been set.
+func (o *InfoModel) HasGreyPeerlistSize() bool {
+ if o != nil && !IsNil(o.GreyPeerlistSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetGreyPeerlistSize gets a reference to the given int32 and assigns it to the GreyPeerlistSize field.
+func (o *InfoModel) SetGreyPeerlistSize(v int32) {
+ o.GreyPeerlistSize = &v
+}
+
+// GetCurrentBlocksMedian returns the CurrentBlocksMedian field value if set, zero value otherwise.
+func (o *InfoModel) GetCurrentBlocksMedian() int32 {
+ if o == nil || IsNil(o.CurrentBlocksMedian) {
+ var ret int32
+ return ret
+ }
+ return *o.CurrentBlocksMedian
+}
+
+// GetCurrentBlocksMedianOk returns a tuple with the CurrentBlocksMedian field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetCurrentBlocksMedianOk() (*int32, bool) {
+ if o == nil || IsNil(o.CurrentBlocksMedian) {
+ return nil, false
+ }
+ return o.CurrentBlocksMedian, true
+}
+
+// HasCurrentBlocksMedian returns a boolean if a field has been set.
+func (o *InfoModel) HasCurrentBlocksMedian() bool {
+ if o != nil && !IsNil(o.CurrentBlocksMedian) {
+ return true
+ }
+
+ return false
+}
+
+// SetCurrentBlocksMedian gets a reference to the given int32 and assigns it to the CurrentBlocksMedian field.
+func (o *InfoModel) SetCurrentBlocksMedian(v int32) {
+ o.CurrentBlocksMedian = &v
+}
+
+// GetAliasCount returns the AliasCount field value if set, zero value otherwise.
+func (o *InfoModel) GetAliasCount() int32 {
+ if o == nil || IsNil(o.AliasCount) {
+ var ret int32
+ return ret
+ }
+ return *o.AliasCount
+}
+
+// GetAliasCountOk returns a tuple with the AliasCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetAliasCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.AliasCount) {
+ return nil, false
+ }
+ return o.AliasCount, true
+}
+
+// HasAliasCount returns a boolean if a field has been set.
+func (o *InfoModel) HasAliasCount() bool {
+ if o != nil && !IsNil(o.AliasCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAliasCount gets a reference to the given int32 and assigns it to the AliasCount field.
+func (o *InfoModel) SetAliasCount(v int32) {
+ o.AliasCount = &v
+}
+
+// GetCurrentMaxAllowedBlockSize returns the CurrentMaxAllowedBlockSize field value if set, zero value otherwise.
+func (o *InfoModel) GetCurrentMaxAllowedBlockSize() int32 {
+ if o == nil || IsNil(o.CurrentMaxAllowedBlockSize) {
+ var ret int32
+ return ret
+ }
+ return *o.CurrentMaxAllowedBlockSize
+}
+
+// GetCurrentMaxAllowedBlockSizeOk returns a tuple with the CurrentMaxAllowedBlockSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetCurrentMaxAllowedBlockSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.CurrentMaxAllowedBlockSize) {
+ return nil, false
+ }
+ return o.CurrentMaxAllowedBlockSize, true
+}
+
+// HasCurrentMaxAllowedBlockSize returns a boolean if a field has been set.
+func (o *InfoModel) HasCurrentMaxAllowedBlockSize() bool {
+ if o != nil && !IsNil(o.CurrentMaxAllowedBlockSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetCurrentMaxAllowedBlockSize gets a reference to the given int32 and assigns it to the CurrentMaxAllowedBlockSize field.
+func (o *InfoModel) SetCurrentMaxAllowedBlockSize(v int32) {
+ o.CurrentMaxAllowedBlockSize = &v
+}
+
+// GetDaemonNetworkState returns the DaemonNetworkState field value if set, zero value otherwise.
+func (o *InfoModel) GetDaemonNetworkState() string {
+ if o == nil || IsNil(o.DaemonNetworkState) {
+ var ret string
+ return ret
+ }
+ return *o.DaemonNetworkState
+}
+
+// GetDaemonNetworkStateOk returns a tuple with the DaemonNetworkState field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetDaemonNetworkStateOk() (*string, bool) {
+ if o == nil || IsNil(o.DaemonNetworkState) {
+ return nil, false
+ }
+ return o.DaemonNetworkState, true
+}
+
+// HasDaemonNetworkState returns a boolean if a field has been set.
+func (o *InfoModel) HasDaemonNetworkState() bool {
+ if o != nil && !IsNil(o.DaemonNetworkState) {
+ return true
+ }
+
+ return false
+}
+
+// SetDaemonNetworkState gets a reference to the given string and assigns it to the DaemonNetworkState field.
+func (o *InfoModel) SetDaemonNetworkState(v string) {
+ o.DaemonNetworkState = &v
+}
+
+// GetSynchronizationStartHeight returns the SynchronizationStartHeight field value if set, zero value otherwise.
+func (o *InfoModel) GetSynchronizationStartHeight() int32 {
+ if o == nil || IsNil(o.SynchronizationStartHeight) {
+ var ret int32
+ return ret
+ }
+ return *o.SynchronizationStartHeight
+}
+
+// GetSynchronizationStartHeightOk returns a tuple with the SynchronizationStartHeight field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetSynchronizationStartHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.SynchronizationStartHeight) {
+ return nil, false
+ }
+ return o.SynchronizationStartHeight, true
+}
+
+// HasSynchronizationStartHeight returns a boolean if a field has been set.
+func (o *InfoModel) HasSynchronizationStartHeight() bool {
+ if o != nil && !IsNil(o.SynchronizationStartHeight) {
+ return true
+ }
+
+ return false
+}
+
+// SetSynchronizationStartHeight gets a reference to the given int32 and assigns it to the SynchronizationStartHeight field.
+func (o *InfoModel) SetSynchronizationStartHeight(v int32) {
+ o.SynchronizationStartHeight = &v
+}
+
+// GetMaxNetSeenHeight returns the MaxNetSeenHeight field value if set, zero value otherwise.
+func (o *InfoModel) GetMaxNetSeenHeight() int32 {
+ if o == nil || IsNil(o.MaxNetSeenHeight) {
+ var ret int32
+ return ret
+ }
+ return *o.MaxNetSeenHeight
+}
+
+// GetMaxNetSeenHeightOk returns a tuple with the MaxNetSeenHeight field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetMaxNetSeenHeightOk() (*int32, bool) {
+ if o == nil || IsNil(o.MaxNetSeenHeight) {
+ return nil, false
+ }
+ return o.MaxNetSeenHeight, true
+}
+
+// HasMaxNetSeenHeight returns a boolean if a field has been set.
+func (o *InfoModel) HasMaxNetSeenHeight() bool {
+ if o != nil && !IsNil(o.MaxNetSeenHeight) {
+ return true
+ }
+
+ return false
+}
+
+// SetMaxNetSeenHeight gets a reference to the given int32 and assigns it to the MaxNetSeenHeight field.
+func (o *InfoModel) SetMaxNetSeenHeight(v int32) {
+ o.MaxNetSeenHeight = &v
+}
+
+// GetMi returns the Mi field value if set, zero value otherwise.
+func (o *InfoModel) GetMi() MaintainersInfoModel {
+ if o == nil || IsNil(o.Mi) {
+ var ret MaintainersInfoModel
+ return ret
+ }
+ return *o.Mi
+}
+
+// GetMiOk returns a tuple with the Mi field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetMiOk() (*MaintainersInfoModel, bool) {
+ if o == nil || IsNil(o.Mi) {
+ return nil, false
+ }
+ return o.Mi, true
+}
+
+// HasMi returns a boolean if a field has been set.
+func (o *InfoModel) HasMi() bool {
+ if o != nil && !IsNil(o.Mi) {
+ return true
+ }
+
+ return false
+}
+
+// SetMi gets a reference to the given MaintainersInfoModel and assigns it to the Mi field.
+func (o *InfoModel) SetMi(v MaintainersInfoModel) {
+ o.Mi = &v
+}
+
+// GetPosAllowed returns the PosAllowed field value if set, zero value otherwise.
+func (o *InfoModel) GetPosAllowed() bool {
+ if o == nil || IsNil(o.PosAllowed) {
+ var ret bool
+ return ret
+ }
+ return *o.PosAllowed
+}
+
+// GetPosAllowedOk returns a tuple with the PosAllowed field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPosAllowedOk() (*bool, bool) {
+ if o == nil || IsNil(o.PosAllowed) {
+ return nil, false
+ }
+ return o.PosAllowed, true
+}
+
+// HasPosAllowed returns a boolean if a field has been set.
+func (o *InfoModel) HasPosAllowed() bool {
+ if o != nil && !IsNil(o.PosAllowed) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosAllowed gets a reference to the given bool and assigns it to the PosAllowed field.
+func (o *InfoModel) SetPosAllowed(v bool) {
+ o.PosAllowed = &v
+}
+
+// GetPosDifficulty returns the PosDifficulty field value if set, zero value otherwise.
+func (o *InfoModel) GetPosDifficulty() string {
+ if o == nil || IsNil(o.PosDifficulty) {
+ var ret string
+ return ret
+ }
+ return *o.PosDifficulty
+}
+
+// GetPosDifficultyOk returns a tuple with the PosDifficulty field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPosDifficultyOk() (*string, bool) {
+ if o == nil || IsNil(o.PosDifficulty) {
+ return nil, false
+ }
+ return o.PosDifficulty, true
+}
+
+// HasPosDifficulty returns a boolean if a field has been set.
+func (o *InfoModel) HasPosDifficulty() bool {
+ if o != nil && !IsNil(o.PosDifficulty) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosDifficulty gets a reference to the given string and assigns it to the PosDifficulty field.
+func (o *InfoModel) SetPosDifficulty(v string) {
+ o.PosDifficulty = &v
+}
+
+// GetPowDifficulty returns the PowDifficulty field value if set, zero value otherwise.
+func (o *InfoModel) GetPowDifficulty() int32 {
+ if o == nil || IsNil(o.PowDifficulty) {
+ var ret int32
+ return ret
+ }
+ return *o.PowDifficulty
+}
+
+// GetPowDifficultyOk returns a tuple with the PowDifficulty field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPowDifficultyOk() (*int32, bool) {
+ if o == nil || IsNil(o.PowDifficulty) {
+ return nil, false
+ }
+ return o.PowDifficulty, true
+}
+
+// HasPowDifficulty returns a boolean if a field has been set.
+func (o *InfoModel) HasPowDifficulty() bool {
+ if o != nil && !IsNil(o.PowDifficulty) {
+ return true
+ }
+
+ return false
+}
+
+// SetPowDifficulty gets a reference to the given int32 and assigns it to the PowDifficulty field.
+func (o *InfoModel) SetPowDifficulty(v int32) {
+ o.PowDifficulty = &v
+}
+
+// GetDefaultFee returns the DefaultFee field value if set, zero value otherwise.
+func (o *InfoModel) GetDefaultFee() int32 {
+ if o == nil || IsNil(o.DefaultFee) {
+ var ret int32
+ return ret
+ }
+ return *o.DefaultFee
+}
+
+// GetDefaultFeeOk returns a tuple with the DefaultFee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetDefaultFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.DefaultFee) {
+ return nil, false
+ }
+ return o.DefaultFee, true
+}
+
+// HasDefaultFee returns a boolean if a field has been set.
+func (o *InfoModel) HasDefaultFee() bool {
+ if o != nil && !IsNil(o.DefaultFee) {
+ return true
+ }
+
+ return false
+}
+
+// SetDefaultFee gets a reference to the given int32 and assigns it to the DefaultFee field.
+func (o *InfoModel) SetDefaultFee(v int32) {
+ o.DefaultFee = &v
+}
+
+// GetMinimumFee returns the MinimumFee field value if set, zero value otherwise.
+func (o *InfoModel) GetMinimumFee() int32 {
+ if o == nil || IsNil(o.MinimumFee) {
+ var ret int32
+ return ret
+ }
+ return *o.MinimumFee
+}
+
+// GetMinimumFeeOk returns a tuple with the MinimumFee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetMinimumFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.MinimumFee) {
+ return nil, false
+ }
+ return o.MinimumFee, true
+}
+
+// HasMinimumFee returns a boolean if a field has been set.
+func (o *InfoModel) HasMinimumFee() bool {
+ if o != nil && !IsNil(o.MinimumFee) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinimumFee gets a reference to the given int32 and assigns it to the MinimumFee field.
+func (o *InfoModel) SetMinimumFee(v int32) {
+ o.MinimumFee = &v
+}
+
+// GetIsHardforkActive returns the IsHardforkActive field value if set, zero value otherwise.
+func (o *InfoModel) GetIsHardforkActive() []bool {
+ if o == nil || IsNil(o.IsHardforkActive) {
+ var ret []bool
+ return ret
+ }
+ return o.IsHardforkActive
+}
+
+// GetIsHardforkActiveOk returns a tuple with the IsHardforkActive field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetIsHardforkActiveOk() ([]bool, bool) {
+ if o == nil || IsNil(o.IsHardforkActive) {
+ return nil, false
+ }
+ return o.IsHardforkActive, true
+}
+
+// HasIsHardforkActive returns a boolean if a field has been set.
+func (o *InfoModel) HasIsHardforkActive() bool {
+ if o != nil && !IsNil(o.IsHardforkActive) {
+ return true
+ }
+
+ return false
+}
+
+// SetIsHardforkActive gets a reference to the given []bool and assigns it to the IsHardforkActive field.
+func (o *InfoModel) SetIsHardforkActive(v []bool) {
+ o.IsHardforkActive = v
+}
+
+// GetNetTimeDeltaMedian returns the NetTimeDeltaMedian field value if set, zero value otherwise.
+func (o *InfoModel) GetNetTimeDeltaMedian() int64 {
+ if o == nil || IsNil(o.NetTimeDeltaMedian) {
+ var ret int64
+ return ret
+ }
+ return *o.NetTimeDeltaMedian
+}
+
+// GetNetTimeDeltaMedianOk returns a tuple with the NetTimeDeltaMedian field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetNetTimeDeltaMedianOk() (*int64, bool) {
+ if o == nil || IsNil(o.NetTimeDeltaMedian) {
+ return nil, false
+ }
+ return o.NetTimeDeltaMedian, true
+}
+
+// HasNetTimeDeltaMedian returns a boolean if a field has been set.
+func (o *InfoModel) HasNetTimeDeltaMedian() bool {
+ if o != nil && !IsNil(o.NetTimeDeltaMedian) {
+ return true
+ }
+
+ return false
+}
+
+// SetNetTimeDeltaMedian gets a reference to the given int64 and assigns it to the NetTimeDeltaMedian field.
+func (o *InfoModel) SetNetTimeDeltaMedian(v int64) {
+ o.NetTimeDeltaMedian = &v
+}
+
+// GetCurrentNetworkHashrate50 returns the CurrentNetworkHashrate50 field value if set, zero value otherwise.
+func (o *InfoModel) GetCurrentNetworkHashrate50() int32 {
+ if o == nil || IsNil(o.CurrentNetworkHashrate50) {
+ var ret int32
+ return ret
+ }
+ return *o.CurrentNetworkHashrate50
+}
+
+// GetCurrentNetworkHashrate50Ok returns a tuple with the CurrentNetworkHashrate50 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetCurrentNetworkHashrate50Ok() (*int32, bool) {
+ if o == nil || IsNil(o.CurrentNetworkHashrate50) {
+ return nil, false
+ }
+ return o.CurrentNetworkHashrate50, true
+}
+
+// HasCurrentNetworkHashrate50 returns a boolean if a field has been set.
+func (o *InfoModel) HasCurrentNetworkHashrate50() bool {
+ if o != nil && !IsNil(o.CurrentNetworkHashrate50) {
+ return true
+ }
+
+ return false
+}
+
+// SetCurrentNetworkHashrate50 gets a reference to the given int32 and assigns it to the CurrentNetworkHashrate50 field.
+func (o *InfoModel) SetCurrentNetworkHashrate50(v int32) {
+ o.CurrentNetworkHashrate50 = &v
+}
+
+// GetCurrentNetworkHashrate350 returns the CurrentNetworkHashrate350 field value if set, zero value otherwise.
+func (o *InfoModel) GetCurrentNetworkHashrate350() int32 {
+ if o == nil || IsNil(o.CurrentNetworkHashrate350) {
+ var ret int32
+ return ret
+ }
+ return *o.CurrentNetworkHashrate350
+}
+
+// GetCurrentNetworkHashrate350Ok returns a tuple with the CurrentNetworkHashrate350 field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetCurrentNetworkHashrate350Ok() (*int32, bool) {
+ if o == nil || IsNil(o.CurrentNetworkHashrate350) {
+ return nil, false
+ }
+ return o.CurrentNetworkHashrate350, true
+}
+
+// HasCurrentNetworkHashrate350 returns a boolean if a field has been set.
+func (o *InfoModel) HasCurrentNetworkHashrate350() bool {
+ if o != nil && !IsNil(o.CurrentNetworkHashrate350) {
+ return true
+ }
+
+ return false
+}
+
+// SetCurrentNetworkHashrate350 gets a reference to the given int32 and assigns it to the CurrentNetworkHashrate350 field.
+func (o *InfoModel) SetCurrentNetworkHashrate350(v int32) {
+ o.CurrentNetworkHashrate350 = &v
+}
+
+// GetSecondsFor10Blocks returns the SecondsFor10Blocks field value if set, zero value otherwise.
+func (o *InfoModel) GetSecondsFor10Blocks() int32 {
+ if o == nil || IsNil(o.SecondsFor10Blocks) {
+ var ret int32
+ return ret
+ }
+ return *o.SecondsFor10Blocks
+}
+
+// GetSecondsFor10BlocksOk returns a tuple with the SecondsFor10Blocks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetSecondsFor10BlocksOk() (*int32, bool) {
+ if o == nil || IsNil(o.SecondsFor10Blocks) {
+ return nil, false
+ }
+ return o.SecondsFor10Blocks, true
+}
+
+// HasSecondsFor10Blocks returns a boolean if a field has been set.
+func (o *InfoModel) HasSecondsFor10Blocks() bool {
+ if o != nil && !IsNil(o.SecondsFor10Blocks) {
+ return true
+ }
+
+ return false
+}
+
+// SetSecondsFor10Blocks gets a reference to the given int32 and assigns it to the SecondsFor10Blocks field.
+func (o *InfoModel) SetSecondsFor10Blocks(v int32) {
+ o.SecondsFor10Blocks = &v
+}
+
+// GetSecondsFor30Blocks returns the SecondsFor30Blocks field value if set, zero value otherwise.
+func (o *InfoModel) GetSecondsFor30Blocks() int32 {
+ if o == nil || IsNil(o.SecondsFor30Blocks) {
+ var ret int32
+ return ret
+ }
+ return *o.SecondsFor30Blocks
+}
+
+// GetSecondsFor30BlocksOk returns a tuple with the SecondsFor30Blocks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetSecondsFor30BlocksOk() (*int32, bool) {
+ if o == nil || IsNil(o.SecondsFor30Blocks) {
+ return nil, false
+ }
+ return o.SecondsFor30Blocks, true
+}
+
+// HasSecondsFor30Blocks returns a boolean if a field has been set.
+func (o *InfoModel) HasSecondsFor30Blocks() bool {
+ if o != nil && !IsNil(o.SecondsFor30Blocks) {
+ return true
+ }
+
+ return false
+}
+
+// SetSecondsFor30Blocks gets a reference to the given int32 and assigns it to the SecondsFor30Blocks field.
+func (o *InfoModel) SetSecondsFor30Blocks(v int32) {
+ o.SecondsFor30Blocks = &v
+}
+
+// GetTransactionsCntPerDay returns the TransactionsCntPerDay field value if set, zero value otherwise.
+func (o *InfoModel) GetTransactionsCntPerDay() []int32 {
+ if o == nil || IsNil(o.TransactionsCntPerDay) {
+ var ret []int32
+ return ret
+ }
+ return o.TransactionsCntPerDay
+}
+
+// GetTransactionsCntPerDayOk returns a tuple with the TransactionsCntPerDay field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTransactionsCntPerDayOk() ([]int32, bool) {
+ if o == nil || IsNil(o.TransactionsCntPerDay) {
+ return nil, false
+ }
+ return o.TransactionsCntPerDay, true
+}
+
+// HasTransactionsCntPerDay returns a boolean if a field has been set.
+func (o *InfoModel) HasTransactionsCntPerDay() bool {
+ if o != nil && !IsNil(o.TransactionsCntPerDay) {
+ return true
+ }
+
+ return false
+}
+
+// SetTransactionsCntPerDay gets a reference to the given []int32 and assigns it to the TransactionsCntPerDay field.
+func (o *InfoModel) SetTransactionsCntPerDay(v []int32) {
+ o.TransactionsCntPerDay = v
+}
+
+// GetTransactionsVolumePerDay returns the TransactionsVolumePerDay field value if set, zero value otherwise.
+func (o *InfoModel) GetTransactionsVolumePerDay() []int32 {
+ if o == nil || IsNil(o.TransactionsVolumePerDay) {
+ var ret []int32
+ return ret
+ }
+ return o.TransactionsVolumePerDay
+}
+
+// GetTransactionsVolumePerDayOk returns a tuple with the TransactionsVolumePerDay field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTransactionsVolumePerDayOk() ([]int32, bool) {
+ if o == nil || IsNil(o.TransactionsVolumePerDay) {
+ return nil, false
+ }
+ return o.TransactionsVolumePerDay, true
+}
+
+// HasTransactionsVolumePerDay returns a boolean if a field has been set.
+func (o *InfoModel) HasTransactionsVolumePerDay() bool {
+ if o != nil && !IsNil(o.TransactionsVolumePerDay) {
+ return true
+ }
+
+ return false
+}
+
+// SetTransactionsVolumePerDay gets a reference to the given []int32 and assigns it to the TransactionsVolumePerDay field.
+func (o *InfoModel) SetTransactionsVolumePerDay(v []int32) {
+ o.TransactionsVolumePerDay = v
+}
+
+// GetLastPosTimestamp returns the LastPosTimestamp field value if set, zero value otherwise.
+func (o *InfoModel) GetLastPosTimestamp() int32 {
+ if o == nil || IsNil(o.LastPosTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.LastPosTimestamp
+}
+
+// GetLastPosTimestampOk returns a tuple with the LastPosTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastPosTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.LastPosTimestamp) {
+ return nil, false
+ }
+ return o.LastPosTimestamp, true
+}
+
+// HasLastPosTimestamp returns a boolean if a field has been set.
+func (o *InfoModel) HasLastPosTimestamp() bool {
+ if o != nil && !IsNil(o.LastPosTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastPosTimestamp gets a reference to the given int32 and assigns it to the LastPosTimestamp field.
+func (o *InfoModel) SetLastPosTimestamp(v int32) {
+ o.LastPosTimestamp = &v
+}
+
+// GetLastPowTimestamp returns the LastPowTimestamp field value if set, zero value otherwise.
+func (o *InfoModel) GetLastPowTimestamp() int32 {
+ if o == nil || IsNil(o.LastPowTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.LastPowTimestamp
+}
+
+// GetLastPowTimestampOk returns a tuple with the LastPowTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastPowTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.LastPowTimestamp) {
+ return nil, false
+ }
+ return o.LastPowTimestamp, true
+}
+
+// HasLastPowTimestamp returns a boolean if a field has been set.
+func (o *InfoModel) HasLastPowTimestamp() bool {
+ if o != nil && !IsNil(o.LastPowTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastPowTimestamp gets a reference to the given int32 and assigns it to the LastPowTimestamp field.
+func (o *InfoModel) SetLastPowTimestamp(v int32) {
+ o.LastPowTimestamp = &v
+}
+
+// GetTotalCoins returns the TotalCoins field value if set, zero value otherwise.
+func (o *InfoModel) GetTotalCoins() string {
+ if o == nil || IsNil(o.TotalCoins) {
+ var ret string
+ return ret
+ }
+ return *o.TotalCoins
+}
+
+// GetTotalCoinsOk returns a tuple with the TotalCoins field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTotalCoinsOk() (*string, bool) {
+ if o == nil || IsNil(o.TotalCoins) {
+ return nil, false
+ }
+ return o.TotalCoins, true
+}
+
+// HasTotalCoins returns a boolean if a field has been set.
+func (o *InfoModel) HasTotalCoins() bool {
+ if o != nil && !IsNil(o.TotalCoins) {
+ return true
+ }
+
+ return false
+}
+
+// SetTotalCoins gets a reference to the given string and assigns it to the TotalCoins field.
+func (o *InfoModel) SetTotalCoins(v string) {
+ o.TotalCoins = &v
+}
+
+// GetLastBlockSize returns the LastBlockSize field value if set, zero value otherwise.
+func (o *InfoModel) GetLastBlockSize() int32 {
+ if o == nil || IsNil(o.LastBlockSize) {
+ var ret int32
+ return ret
+ }
+ return *o.LastBlockSize
+}
+
+// GetLastBlockSizeOk returns a tuple with the LastBlockSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastBlockSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.LastBlockSize) {
+ return nil, false
+ }
+ return o.LastBlockSize, true
+}
+
+// HasLastBlockSize returns a boolean if a field has been set.
+func (o *InfoModel) HasLastBlockSize() bool {
+ if o != nil && !IsNil(o.LastBlockSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastBlockSize gets a reference to the given int32 and assigns it to the LastBlockSize field.
+func (o *InfoModel) SetLastBlockSize(v int32) {
+ o.LastBlockSize = &v
+}
+
+// GetTxCountInLastBlock returns the TxCountInLastBlock field value if set, zero value otherwise.
+func (o *InfoModel) GetTxCountInLastBlock() int32 {
+ if o == nil || IsNil(o.TxCountInLastBlock) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCountInLastBlock
+}
+
+// GetTxCountInLastBlockOk returns a tuple with the TxCountInLastBlock field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetTxCountInLastBlockOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCountInLastBlock) {
+ return nil, false
+ }
+ return o.TxCountInLastBlock, true
+}
+
+// HasTxCountInLastBlock returns a boolean if a field has been set.
+func (o *InfoModel) HasTxCountInLastBlock() bool {
+ if o != nil && !IsNil(o.TxCountInLastBlock) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCountInLastBlock gets a reference to the given int32 and assigns it to the TxCountInLastBlock field.
+func (o *InfoModel) SetTxCountInLastBlock(v int32) {
+ o.TxCountInLastBlock = &v
+}
+
+// GetPosSequenceFactor returns the PosSequenceFactor field value if set, zero value otherwise.
+func (o *InfoModel) GetPosSequenceFactor() float64 {
+ if o == nil || IsNil(o.PosSequenceFactor) {
+ var ret float64
+ return ret
+ }
+ return *o.PosSequenceFactor
+}
+
+// GetPosSequenceFactorOk returns a tuple with the PosSequenceFactor field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPosSequenceFactorOk() (*float64, bool) {
+ if o == nil || IsNil(o.PosSequenceFactor) {
+ return nil, false
+ }
+ return o.PosSequenceFactor, true
+}
+
+// HasPosSequenceFactor returns a boolean if a field has been set.
+func (o *InfoModel) HasPosSequenceFactor() bool {
+ if o != nil && !IsNil(o.PosSequenceFactor) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosSequenceFactor gets a reference to the given float64 and assigns it to the PosSequenceFactor field.
+func (o *InfoModel) SetPosSequenceFactor(v float64) {
+ o.PosSequenceFactor = &v
+}
+
+// GetPowSequenceFactor returns the PowSequenceFactor field value if set, zero value otherwise.
+func (o *InfoModel) GetPowSequenceFactor() float64 {
+ if o == nil || IsNil(o.PowSequenceFactor) {
+ var ret float64
+ return ret
+ }
+ return *o.PowSequenceFactor
+}
+
+// GetPowSequenceFactorOk returns a tuple with the PowSequenceFactor field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPowSequenceFactorOk() (*float64, bool) {
+ if o == nil || IsNil(o.PowSequenceFactor) {
+ return nil, false
+ }
+ return o.PowSequenceFactor, true
+}
+
+// HasPowSequenceFactor returns a boolean if a field has been set.
+func (o *InfoModel) HasPowSequenceFactor() bool {
+ if o != nil && !IsNil(o.PowSequenceFactor) {
+ return true
+ }
+
+ return false
+}
+
+// SetPowSequenceFactor gets a reference to the given float64 and assigns it to the PowSequenceFactor field.
+func (o *InfoModel) SetPowSequenceFactor(v float64) {
+ o.PowSequenceFactor = &v
+}
+
+// GetBlockReward returns the BlockReward field value if set, zero value otherwise.
+func (o *InfoModel) GetBlockReward() int32 {
+ if o == nil || IsNil(o.BlockReward) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockReward
+}
+
+// GetBlockRewardOk returns a tuple with the BlockReward field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetBlockRewardOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockReward) {
+ return nil, false
+ }
+ return o.BlockReward, true
+}
+
+// HasBlockReward returns a boolean if a field has been set.
+func (o *InfoModel) HasBlockReward() bool {
+ if o != nil && !IsNil(o.BlockReward) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockReward gets a reference to the given int32 and assigns it to the BlockReward field.
+func (o *InfoModel) SetBlockReward(v int32) {
+ o.BlockReward = &v
+}
+
+// GetLastBlockTotalReward returns the LastBlockTotalReward field value if set, zero value otherwise.
+func (o *InfoModel) GetLastBlockTotalReward() int32 {
+ if o == nil || IsNil(o.LastBlockTotalReward) {
+ var ret int32
+ return ret
+ }
+ return *o.LastBlockTotalReward
+}
+
+// GetLastBlockTotalRewardOk returns a tuple with the LastBlockTotalReward field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastBlockTotalRewardOk() (*int32, bool) {
+ if o == nil || IsNil(o.LastBlockTotalReward) {
+ return nil, false
+ }
+ return o.LastBlockTotalReward, true
+}
+
+// HasLastBlockTotalReward returns a boolean if a field has been set.
+func (o *InfoModel) HasLastBlockTotalReward() bool {
+ if o != nil && !IsNil(o.LastBlockTotalReward) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastBlockTotalReward gets a reference to the given int32 and assigns it to the LastBlockTotalReward field.
+func (o *InfoModel) SetLastBlockTotalReward(v int32) {
+ o.LastBlockTotalReward = &v
+}
+
+// GetPosDiffTotalCoinsRate returns the PosDiffTotalCoinsRate field value if set, zero value otherwise.
+func (o *InfoModel) GetPosDiffTotalCoinsRate() int32 {
+ if o == nil || IsNil(o.PosDiffTotalCoinsRate) {
+ var ret int32
+ return ret
+ }
+ return *o.PosDiffTotalCoinsRate
+}
+
+// GetPosDiffTotalCoinsRateOk returns a tuple with the PosDiffTotalCoinsRate field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPosDiffTotalCoinsRateOk() (*int32, bool) {
+ if o == nil || IsNil(o.PosDiffTotalCoinsRate) {
+ return nil, false
+ }
+ return o.PosDiffTotalCoinsRate, true
+}
+
+// HasPosDiffTotalCoinsRate returns a boolean if a field has been set.
+func (o *InfoModel) HasPosDiffTotalCoinsRate() bool {
+ if o != nil && !IsNil(o.PosDiffTotalCoinsRate) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosDiffTotalCoinsRate gets a reference to the given int32 and assigns it to the PosDiffTotalCoinsRate field.
+func (o *InfoModel) SetPosDiffTotalCoinsRate(v int32) {
+ o.PosDiffTotalCoinsRate = &v
+}
+
+// GetLastBlockTimestamp returns the LastBlockTimestamp field value if set, zero value otherwise.
+func (o *InfoModel) GetLastBlockTimestamp() int32 {
+ if o == nil || IsNil(o.LastBlockTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.LastBlockTimestamp
+}
+
+// GetLastBlockTimestampOk returns a tuple with the LastBlockTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastBlockTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.LastBlockTimestamp) {
+ return nil, false
+ }
+ return o.LastBlockTimestamp, true
+}
+
+// HasLastBlockTimestamp returns a boolean if a field has been set.
+func (o *InfoModel) HasLastBlockTimestamp() bool {
+ if o != nil && !IsNil(o.LastBlockTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastBlockTimestamp gets a reference to the given int32 and assigns it to the LastBlockTimestamp field.
+func (o *InfoModel) SetLastBlockTimestamp(v int32) {
+ o.LastBlockTimestamp = &v
+}
+
+// GetLastBlockHash returns the LastBlockHash field value if set, zero value otherwise.
+func (o *InfoModel) GetLastBlockHash() string {
+ if o == nil || IsNil(o.LastBlockHash) {
+ var ret string
+ return ret
+ }
+ return *o.LastBlockHash
+}
+
+// GetLastBlockHashOk returns a tuple with the LastBlockHash field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetLastBlockHashOk() (*string, bool) {
+ if o == nil || IsNil(o.LastBlockHash) {
+ return nil, false
+ }
+ return o.LastBlockHash, true
+}
+
+// HasLastBlockHash returns a boolean if a field has been set.
+func (o *InfoModel) HasLastBlockHash() bool {
+ if o != nil && !IsNil(o.LastBlockHash) {
+ return true
+ }
+
+ return false
+}
+
+// SetLastBlockHash gets a reference to the given string and assigns it to the LastBlockHash field.
+func (o *InfoModel) SetLastBlockHash(v string) {
+ o.LastBlockHash = &v
+}
+
+// GetPosBlockTsShiftVsActual returns the PosBlockTsShiftVsActual field value if set, zero value otherwise.
+func (o *InfoModel) GetPosBlockTsShiftVsActual() int64 {
+ if o == nil || IsNil(o.PosBlockTsShiftVsActual) {
+ var ret int64
+ return ret
+ }
+ return *o.PosBlockTsShiftVsActual
+}
+
+// GetPosBlockTsShiftVsActualOk returns a tuple with the PosBlockTsShiftVsActual field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPosBlockTsShiftVsActualOk() (*int64, bool) {
+ if o == nil || IsNil(o.PosBlockTsShiftVsActual) {
+ return nil, false
+ }
+ return o.PosBlockTsShiftVsActual, true
+}
+
+// HasPosBlockTsShiftVsActual returns a boolean if a field has been set.
+func (o *InfoModel) HasPosBlockTsShiftVsActual() bool {
+ if o != nil && !IsNil(o.PosBlockTsShiftVsActual) {
+ return true
+ }
+
+ return false
+}
+
+// SetPosBlockTsShiftVsActual gets a reference to the given int64 and assigns it to the PosBlockTsShiftVsActual field.
+func (o *InfoModel) SetPosBlockTsShiftVsActual(v int64) {
+ o.PosBlockTsShiftVsActual = &v
+}
+
+// GetOutsStat returns the OutsStat field value if set, zero value otherwise.
+func (o *InfoModel) GetOutsStat() map[string]int32 {
+ if o == nil || IsNil(o.OutsStat) {
+ var ret map[string]int32
+ return ret
+ }
+ return *o.OutsStat
+}
+
+// GetOutsStatOk returns a tuple with the OutsStat field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetOutsStatOk() (*map[string]int32, bool) {
+ if o == nil || IsNil(o.OutsStat) {
+ return nil, false
+ }
+ return o.OutsStat, true
+}
+
+// HasOutsStat returns a boolean if a field has been set.
+func (o *InfoModel) HasOutsStat() bool {
+ if o != nil && !IsNil(o.OutsStat) {
+ return true
+ }
+
+ return false
+}
+
+// SetOutsStat gets a reference to the given map[string]int32 and assigns it to the OutsStat field.
+func (o *InfoModel) SetOutsStat(v map[string]int32) {
+ o.OutsStat = &v
+}
+
+// GetPerformanceData returns the PerformanceData field value if set, zero value otherwise.
+func (o *InfoModel) GetPerformanceData() PerformanceModel {
+ if o == nil || IsNil(o.PerformanceData) {
+ var ret PerformanceModel
+ return ret
+ }
+ return *o.PerformanceData
+}
+
+// GetPerformanceDataOk returns a tuple with the PerformanceData field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetPerformanceDataOk() (*PerformanceModel, bool) {
+ if o == nil || IsNil(o.PerformanceData) {
+ return nil, false
+ }
+ return o.PerformanceData, true
+}
+
+// HasPerformanceData returns a boolean if a field has been set.
+func (o *InfoModel) HasPerformanceData() bool {
+ if o != nil && !IsNil(o.PerformanceData) {
+ return true
+ }
+
+ return false
+}
+
+// SetPerformanceData gets a reference to the given PerformanceModel and assigns it to the PerformanceData field.
+func (o *InfoModel) SetPerformanceData(v PerformanceModel) {
+ o.PerformanceData = &v
+}
+
+// GetOffersCount returns the OffersCount field value if set, zero value otherwise.
+func (o *InfoModel) GetOffersCount() int32 {
+ if o == nil || IsNil(o.OffersCount) {
+ var ret int32
+ return ret
+ }
+ return *o.OffersCount
+}
+
+// GetOffersCountOk returns a tuple with the OffersCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetOffersCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.OffersCount) {
+ return nil, false
+ }
+ return o.OffersCount, true
+}
+
+// HasOffersCount returns a boolean if a field has been set.
+func (o *InfoModel) HasOffersCount() bool {
+ if o != nil && !IsNil(o.OffersCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetOffersCount gets a reference to the given int32 and assigns it to the OffersCount field.
+func (o *InfoModel) SetOffersCount(v int32) {
+ o.OffersCount = &v
+}
+
+// GetExpirationMedianTimestamp returns the ExpirationMedianTimestamp field value if set, zero value otherwise.
+func (o *InfoModel) GetExpirationMedianTimestamp() int32 {
+ if o == nil || IsNil(o.ExpirationMedianTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.ExpirationMedianTimestamp
+}
+
+// GetExpirationMedianTimestampOk returns a tuple with the ExpirationMedianTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *InfoModel) GetExpirationMedianTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.ExpirationMedianTimestamp) {
+ return nil, false
+ }
+ return o.ExpirationMedianTimestamp, true
+}
+
+// HasExpirationMedianTimestamp returns a boolean if a field has been set.
+func (o *InfoModel) HasExpirationMedianTimestamp() bool {
+ if o != nil && !IsNil(o.ExpirationMedianTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetExpirationMedianTimestamp gets a reference to the given int32 and assigns it to the ExpirationMedianTimestamp field.
+func (o *InfoModel) SetExpirationMedianTimestamp(v int32) {
+ o.ExpirationMedianTimestamp = &v
+}
+
+func (o InfoModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o InfoModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Height) {
+ toSerialize["height"] = o.Height
+ }
+ if !IsNil(o.TxCount) {
+ toSerialize["tx_count"] = o.TxCount
+ }
+ if !IsNil(o.TxPoolSize) {
+ toSerialize["tx_pool_size"] = o.TxPoolSize
+ }
+ if !IsNil(o.AltBlocksCount) {
+ toSerialize["alt_blocks_count"] = o.AltBlocksCount
+ }
+ if !IsNil(o.OutgoingConnectionsCount) {
+ toSerialize["outgoing_connections_count"] = o.OutgoingConnectionsCount
+ }
+ if !IsNil(o.IncomingConnectionsCount) {
+ toSerialize["incoming_connections_count"] = o.IncomingConnectionsCount
+ }
+ if !IsNil(o.SynchronizedConnectionsCount) {
+ toSerialize["synchronized_connections_count"] = o.SynchronizedConnectionsCount
+ }
+ if !IsNil(o.WhitePeerlistSize) {
+ toSerialize["white_peerlist_size"] = o.WhitePeerlistSize
+ }
+ if !IsNil(o.GreyPeerlistSize) {
+ toSerialize["grey_peerlist_size"] = o.GreyPeerlistSize
+ }
+ if !IsNil(o.CurrentBlocksMedian) {
+ toSerialize["current_blocks_median"] = o.CurrentBlocksMedian
+ }
+ if !IsNil(o.AliasCount) {
+ toSerialize["alias_count"] = o.AliasCount
+ }
+ if !IsNil(o.CurrentMaxAllowedBlockSize) {
+ toSerialize["current_max_allowed_block_size"] = o.CurrentMaxAllowedBlockSize
+ }
+ if !IsNil(o.DaemonNetworkState) {
+ toSerialize["daemon_network_state"] = o.DaemonNetworkState
+ }
+ if !IsNil(o.SynchronizationStartHeight) {
+ toSerialize["synchronization_start_height"] = o.SynchronizationStartHeight
+ }
+ if !IsNil(o.MaxNetSeenHeight) {
+ toSerialize["max_net_seen_height"] = o.MaxNetSeenHeight
+ }
+ if !IsNil(o.Mi) {
+ toSerialize["mi"] = o.Mi
+ }
+ if !IsNil(o.PosAllowed) {
+ toSerialize["pos_allowed"] = o.PosAllowed
+ }
+ if !IsNil(o.PosDifficulty) {
+ toSerialize["pos_difficulty"] = o.PosDifficulty
+ }
+ if !IsNil(o.PowDifficulty) {
+ toSerialize["pow_difficulty"] = o.PowDifficulty
+ }
+ if !IsNil(o.DefaultFee) {
+ toSerialize["default_fee"] = o.DefaultFee
+ }
+ if !IsNil(o.MinimumFee) {
+ toSerialize["minimum_fee"] = o.MinimumFee
+ }
+ if !IsNil(o.IsHardforkActive) {
+ toSerialize["is_hardfork_active"] = o.IsHardforkActive
+ }
+ if !IsNil(o.NetTimeDeltaMedian) {
+ toSerialize["net_time_delta_median"] = o.NetTimeDeltaMedian
+ }
+ if !IsNil(o.CurrentNetworkHashrate50) {
+ toSerialize["current_network_hashrate_50"] = o.CurrentNetworkHashrate50
+ }
+ if !IsNil(o.CurrentNetworkHashrate350) {
+ toSerialize["current_network_hashrate_350"] = o.CurrentNetworkHashrate350
+ }
+ if !IsNil(o.SecondsFor10Blocks) {
+ toSerialize["seconds_for_10_blocks"] = o.SecondsFor10Blocks
+ }
+ if !IsNil(o.SecondsFor30Blocks) {
+ toSerialize["seconds_for_30_blocks"] = o.SecondsFor30Blocks
+ }
+ if !IsNil(o.TransactionsCntPerDay) {
+ toSerialize["transactions_cnt_per_day"] = o.TransactionsCntPerDay
+ }
+ if !IsNil(o.TransactionsVolumePerDay) {
+ toSerialize["transactions_volume_per_day"] = o.TransactionsVolumePerDay
+ }
+ if !IsNil(o.LastPosTimestamp) {
+ toSerialize["last_pos_timestamp"] = o.LastPosTimestamp
+ }
+ if !IsNil(o.LastPowTimestamp) {
+ toSerialize["last_pow_timestamp"] = o.LastPowTimestamp
+ }
+ if !IsNil(o.TotalCoins) {
+ toSerialize["total_coins"] = o.TotalCoins
+ }
+ if !IsNil(o.LastBlockSize) {
+ toSerialize["last_block_size"] = o.LastBlockSize
+ }
+ if !IsNil(o.TxCountInLastBlock) {
+ toSerialize["tx_count_in_last_block"] = o.TxCountInLastBlock
+ }
+ if !IsNil(o.PosSequenceFactor) {
+ toSerialize["pos_sequence_factor"] = o.PosSequenceFactor
+ }
+ if !IsNil(o.PowSequenceFactor) {
+ toSerialize["pow_sequence_factor"] = o.PowSequenceFactor
+ }
+ if !IsNil(o.BlockReward) {
+ toSerialize["block_reward"] = o.BlockReward
+ }
+ if !IsNil(o.LastBlockTotalReward) {
+ toSerialize["last_block_total_reward"] = o.LastBlockTotalReward
+ }
+ if !IsNil(o.PosDiffTotalCoinsRate) {
+ toSerialize["pos_diff_total_coins_rate"] = o.PosDiffTotalCoinsRate
+ }
+ if !IsNil(o.LastBlockTimestamp) {
+ toSerialize["last_block_timestamp"] = o.LastBlockTimestamp
+ }
+ if !IsNil(o.LastBlockHash) {
+ toSerialize["last_block_hash"] = o.LastBlockHash
+ }
+ if !IsNil(o.PosBlockTsShiftVsActual) {
+ toSerialize["pos_block_ts_shift_vs_actual"] = o.PosBlockTsShiftVsActual
+ }
+ if !IsNil(o.OutsStat) {
+ toSerialize["outs_stat"] = o.OutsStat
+ }
+ if !IsNil(o.PerformanceData) {
+ toSerialize["performance_data"] = o.PerformanceData
+ }
+ if !IsNil(o.OffersCount) {
+ toSerialize["offers_count"] = o.OffersCount
+ }
+ if !IsNil(o.ExpirationMedianTimestamp) {
+ toSerialize["expiration_median_timestamp"] = o.ExpirationMedianTimestamp
+ }
+ return toSerialize, nil
+}
+
+type NullableInfoModel struct {
+ value *InfoModel
+ isSet bool
+}
+
+func (v NullableInfoModel) Get() *InfoModel {
+ return v.value
+}
+
+func (v *NullableInfoModel) Set(val *InfoModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableInfoModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableInfoModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableInfoModel(val *InfoModel) *NullableInfoModel {
+ return &NullableInfoModel{value: val, isSet: true}
+}
+
+func (v NullableInfoModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableInfoModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_maintainers_info_model.go b/utils/sdk/client/go/model_maintainers_info_model.go
new file mode 100644
index 00000000..d7ce5a0f
--- /dev/null
+++ b/utils/sdk/client/go/model_maintainers_info_model.go
@@ -0,0 +1,270 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the MaintainersInfoModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &MaintainersInfoModel{}
+
+// MaintainersInfoModel struct for MaintainersInfoModel
+type MaintainersInfoModel struct {
+ VerMajor *int32 `json:"ver_major,omitempty"`
+ VerMinor *int32 `json:"ver_minor,omitempty"`
+ VerRevision *int32 `json:"ver_revision,omitempty"`
+ BuildNo *int32 `json:"build_no,omitempty"`
+ Mode *int32 `json:"mode,omitempty"`
+}
+
+// NewMaintainersInfoModel instantiates a new MaintainersInfoModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewMaintainersInfoModel() *MaintainersInfoModel {
+ this := MaintainersInfoModel{}
+ return &this
+}
+
+// NewMaintainersInfoModelWithDefaults instantiates a new MaintainersInfoModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewMaintainersInfoModelWithDefaults() *MaintainersInfoModel {
+ this := MaintainersInfoModel{}
+ return &this
+}
+
+// GetVerMajor returns the VerMajor field value if set, zero value otherwise.
+func (o *MaintainersInfoModel) GetVerMajor() int32 {
+ if o == nil || IsNil(o.VerMajor) {
+ var ret int32
+ return ret
+ }
+ return *o.VerMajor
+}
+
+// GetVerMajorOk returns a tuple with the VerMajor field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *MaintainersInfoModel) GetVerMajorOk() (*int32, bool) {
+ if o == nil || IsNil(o.VerMajor) {
+ return nil, false
+ }
+ return o.VerMajor, true
+}
+
+// HasVerMajor returns a boolean if a field has been set.
+func (o *MaintainersInfoModel) HasVerMajor() bool {
+ if o != nil && !IsNil(o.VerMajor) {
+ return true
+ }
+
+ return false
+}
+
+// SetVerMajor gets a reference to the given int32 and assigns it to the VerMajor field.
+func (o *MaintainersInfoModel) SetVerMajor(v int32) {
+ o.VerMajor = &v
+}
+
+// GetVerMinor returns the VerMinor field value if set, zero value otherwise.
+func (o *MaintainersInfoModel) GetVerMinor() int32 {
+ if o == nil || IsNil(o.VerMinor) {
+ var ret int32
+ return ret
+ }
+ return *o.VerMinor
+}
+
+// GetVerMinorOk returns a tuple with the VerMinor field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *MaintainersInfoModel) GetVerMinorOk() (*int32, bool) {
+ if o == nil || IsNil(o.VerMinor) {
+ return nil, false
+ }
+ return o.VerMinor, true
+}
+
+// HasVerMinor returns a boolean if a field has been set.
+func (o *MaintainersInfoModel) HasVerMinor() bool {
+ if o != nil && !IsNil(o.VerMinor) {
+ return true
+ }
+
+ return false
+}
+
+// SetVerMinor gets a reference to the given int32 and assigns it to the VerMinor field.
+func (o *MaintainersInfoModel) SetVerMinor(v int32) {
+ o.VerMinor = &v
+}
+
+// GetVerRevision returns the VerRevision field value if set, zero value otherwise.
+func (o *MaintainersInfoModel) GetVerRevision() int32 {
+ if o == nil || IsNil(o.VerRevision) {
+ var ret int32
+ return ret
+ }
+ return *o.VerRevision
+}
+
+// GetVerRevisionOk returns a tuple with the VerRevision field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *MaintainersInfoModel) GetVerRevisionOk() (*int32, bool) {
+ if o == nil || IsNil(o.VerRevision) {
+ return nil, false
+ }
+ return o.VerRevision, true
+}
+
+// HasVerRevision returns a boolean if a field has been set.
+func (o *MaintainersInfoModel) HasVerRevision() bool {
+ if o != nil && !IsNil(o.VerRevision) {
+ return true
+ }
+
+ return false
+}
+
+// SetVerRevision gets a reference to the given int32 and assigns it to the VerRevision field.
+func (o *MaintainersInfoModel) SetVerRevision(v int32) {
+ o.VerRevision = &v
+}
+
+// GetBuildNo returns the BuildNo field value if set, zero value otherwise.
+func (o *MaintainersInfoModel) GetBuildNo() int32 {
+ if o == nil || IsNil(o.BuildNo) {
+ var ret int32
+ return ret
+ }
+ return *o.BuildNo
+}
+
+// GetBuildNoOk returns a tuple with the BuildNo field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *MaintainersInfoModel) GetBuildNoOk() (*int32, bool) {
+ if o == nil || IsNil(o.BuildNo) {
+ return nil, false
+ }
+ return o.BuildNo, true
+}
+
+// HasBuildNo returns a boolean if a field has been set.
+func (o *MaintainersInfoModel) HasBuildNo() bool {
+ if o != nil && !IsNil(o.BuildNo) {
+ return true
+ }
+
+ return false
+}
+
+// SetBuildNo gets a reference to the given int32 and assigns it to the BuildNo field.
+func (o *MaintainersInfoModel) SetBuildNo(v int32) {
+ o.BuildNo = &v
+}
+
+// GetMode returns the Mode field value if set, zero value otherwise.
+func (o *MaintainersInfoModel) GetMode() int32 {
+ if o == nil || IsNil(o.Mode) {
+ var ret int32
+ return ret
+ }
+ return *o.Mode
+}
+
+// GetModeOk returns a tuple with the Mode field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *MaintainersInfoModel) GetModeOk() (*int32, bool) {
+ if o == nil || IsNil(o.Mode) {
+ return nil, false
+ }
+ return o.Mode, true
+}
+
+// HasMode returns a boolean if a field has been set.
+func (o *MaintainersInfoModel) HasMode() bool {
+ if o != nil && !IsNil(o.Mode) {
+ return true
+ }
+
+ return false
+}
+
+// SetMode gets a reference to the given int32 and assigns it to the Mode field.
+func (o *MaintainersInfoModel) SetMode(v int32) {
+ o.Mode = &v
+}
+
+func (o MaintainersInfoModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o MaintainersInfoModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.VerMajor) {
+ toSerialize["ver_major"] = o.VerMajor
+ }
+ if !IsNil(o.VerMinor) {
+ toSerialize["ver_minor"] = o.VerMinor
+ }
+ if !IsNil(o.VerRevision) {
+ toSerialize["ver_revision"] = o.VerRevision
+ }
+ if !IsNil(o.BuildNo) {
+ toSerialize["build_no"] = o.BuildNo
+ }
+ if !IsNil(o.Mode) {
+ toSerialize["mode"] = o.Mode
+ }
+ return toSerialize, nil
+}
+
+type NullableMaintainersInfoModel struct {
+ value *MaintainersInfoModel
+ isSet bool
+}
+
+func (v NullableMaintainersInfoModel) Get() *MaintainersInfoModel {
+ return v.value
+}
+
+func (v *NullableMaintainersInfoModel) Set(val *MaintainersInfoModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableMaintainersInfoModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableMaintainersInfoModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableMaintainersInfoModel(val *MaintainersInfoModel) *NullableMaintainersInfoModel {
+ return &NullableMaintainersInfoModel{value: val, isSet: true}
+}
+
+func (v NullableMaintainersInfoModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableMaintainersInfoModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_performance_model.go b/utils/sdk/client/go/model_performance_model.go
new file mode 100644
index 00000000..07787996
--- /dev/null
+++ b/utils/sdk/client/go/model_performance_model.go
@@ -0,0 +1,234 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the PerformanceModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &PerformanceModel{}
+
+// PerformanceModel struct for PerformanceModel
+type PerformanceModel struct {
+ BlockProcessing *BlockProcessingPerformanceModel `json:"block_processing,omitempty"`
+ TxProcessing *TxProcessingPerformanceModel `json:"tx_processing,omitempty"`
+ TxPool *TxPoolPerformanceModel `json:"tx_pool,omitempty"`
+ DbStatInfo *DbStatInfoModel `json:"db_stat_info,omitempty"`
+}
+
+// NewPerformanceModel instantiates a new PerformanceModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewPerformanceModel() *PerformanceModel {
+ this := PerformanceModel{}
+ return &this
+}
+
+// NewPerformanceModelWithDefaults instantiates a new PerformanceModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewPerformanceModelWithDefaults() *PerformanceModel {
+ this := PerformanceModel{}
+ return &this
+}
+
+// GetBlockProcessing returns the BlockProcessing field value if set, zero value otherwise.
+func (o *PerformanceModel) GetBlockProcessing() BlockProcessingPerformanceModel {
+ if o == nil || IsNil(o.BlockProcessing) {
+ var ret BlockProcessingPerformanceModel
+ return ret
+ }
+ return *o.BlockProcessing
+}
+
+// GetBlockProcessingOk returns a tuple with the BlockProcessing field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PerformanceModel) GetBlockProcessingOk() (*BlockProcessingPerformanceModel, bool) {
+ if o == nil || IsNil(o.BlockProcessing) {
+ return nil, false
+ }
+ return o.BlockProcessing, true
+}
+
+// HasBlockProcessing returns a boolean if a field has been set.
+func (o *PerformanceModel) HasBlockProcessing() bool {
+ if o != nil && !IsNil(o.BlockProcessing) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockProcessing gets a reference to the given BlockProcessingPerformanceModel and assigns it to the BlockProcessing field.
+func (o *PerformanceModel) SetBlockProcessing(v BlockProcessingPerformanceModel) {
+ o.BlockProcessing = &v
+}
+
+// GetTxProcessing returns the TxProcessing field value if set, zero value otherwise.
+func (o *PerformanceModel) GetTxProcessing() TxProcessingPerformanceModel {
+ if o == nil || IsNil(o.TxProcessing) {
+ var ret TxProcessingPerformanceModel
+ return ret
+ }
+ return *o.TxProcessing
+}
+
+// GetTxProcessingOk returns a tuple with the TxProcessing field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PerformanceModel) GetTxProcessingOk() (*TxProcessingPerformanceModel, bool) {
+ if o == nil || IsNil(o.TxProcessing) {
+ return nil, false
+ }
+ return o.TxProcessing, true
+}
+
+// HasTxProcessing returns a boolean if a field has been set.
+func (o *PerformanceModel) HasTxProcessing() bool {
+ if o != nil && !IsNil(o.TxProcessing) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxProcessing gets a reference to the given TxProcessingPerformanceModel and assigns it to the TxProcessing field.
+func (o *PerformanceModel) SetTxProcessing(v TxProcessingPerformanceModel) {
+ o.TxProcessing = &v
+}
+
+// GetTxPool returns the TxPool field value if set, zero value otherwise.
+func (o *PerformanceModel) GetTxPool() TxPoolPerformanceModel {
+ if o == nil || IsNil(o.TxPool) {
+ var ret TxPoolPerformanceModel
+ return ret
+ }
+ return *o.TxPool
+}
+
+// GetTxPoolOk returns a tuple with the TxPool field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PerformanceModel) GetTxPoolOk() (*TxPoolPerformanceModel, bool) {
+ if o == nil || IsNil(o.TxPool) {
+ return nil, false
+ }
+ return o.TxPool, true
+}
+
+// HasTxPool returns a boolean if a field has been set.
+func (o *PerformanceModel) HasTxPool() bool {
+ if o != nil && !IsNil(o.TxPool) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPool gets a reference to the given TxPoolPerformanceModel and assigns it to the TxPool field.
+func (o *PerformanceModel) SetTxPool(v TxPoolPerformanceModel) {
+ o.TxPool = &v
+}
+
+// GetDbStatInfo returns the DbStatInfo field value if set, zero value otherwise.
+func (o *PerformanceModel) GetDbStatInfo() DbStatInfoModel {
+ if o == nil || IsNil(o.DbStatInfo) {
+ var ret DbStatInfoModel
+ return ret
+ }
+ return *o.DbStatInfo
+}
+
+// GetDbStatInfoOk returns a tuple with the DbStatInfo field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PerformanceModel) GetDbStatInfoOk() (*DbStatInfoModel, bool) {
+ if o == nil || IsNil(o.DbStatInfo) {
+ return nil, false
+ }
+ return o.DbStatInfo, true
+}
+
+// HasDbStatInfo returns a boolean if a field has been set.
+func (o *PerformanceModel) HasDbStatInfo() bool {
+ if o != nil && !IsNil(o.DbStatInfo) {
+ return true
+ }
+
+ return false
+}
+
+// SetDbStatInfo gets a reference to the given DbStatInfoModel and assigns it to the DbStatInfo field.
+func (o *PerformanceModel) SetDbStatInfo(v DbStatInfoModel) {
+ o.DbStatInfo = &v
+}
+
+func (o PerformanceModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o PerformanceModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.BlockProcessing) {
+ toSerialize["block_processing"] = o.BlockProcessing
+ }
+ if !IsNil(o.TxProcessing) {
+ toSerialize["tx_processing"] = o.TxProcessing
+ }
+ if !IsNil(o.TxPool) {
+ toSerialize["tx_pool"] = o.TxPool
+ }
+ if !IsNil(o.DbStatInfo) {
+ toSerialize["db_stat_info"] = o.DbStatInfo
+ }
+ return toSerialize, nil
+}
+
+type NullablePerformanceModel struct {
+ value *PerformanceModel
+ isSet bool
+}
+
+func (v NullablePerformanceModel) Get() *PerformanceModel {
+ return v.value
+}
+
+func (v *NullablePerformanceModel) Set(val *PerformanceModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullablePerformanceModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullablePerformanceModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullablePerformanceModel(val *PerformanceModel) *NullablePerformanceModel {
+ return &NullablePerformanceModel{value: val, isSet: true}
+}
+
+func (v NullablePerformanceModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullablePerformanceModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_pos_entry_model.go b/utils/sdk/client/go/model_pos_entry_model.go
new file mode 100644
index 00000000..92877f0c
--- /dev/null
+++ b/utils/sdk/client/go/model_pos_entry_model.go
@@ -0,0 +1,378 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the PosEntryModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &PosEntryModel{}
+
+// PosEntryModel struct for PosEntryModel
+type PosEntryModel struct {
+ Amount *int32 `json:"amount,omitempty"`
+ GIndex *int32 `json:"g_index,omitempty"`
+ Keyimage *string `json:"keyimage,omitempty"`
+ BlockTimestamp *int32 `json:"block_timestamp,omitempty"`
+ StakeUnlockTime *int32 `json:"stake_unlock_time,omitempty"`
+ TxId *string `json:"tx_id,omitempty"`
+ TxOutIndex *int32 `json:"tx_out_index,omitempty"`
+ WalletIndex *int32 `json:"wallet_index,omitempty"`
+}
+
+// NewPosEntryModel instantiates a new PosEntryModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewPosEntryModel() *PosEntryModel {
+ this := PosEntryModel{}
+ return &this
+}
+
+// NewPosEntryModelWithDefaults instantiates a new PosEntryModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewPosEntryModelWithDefaults() *PosEntryModel {
+ this := PosEntryModel{}
+ return &this
+}
+
+// GetAmount returns the Amount field value if set, zero value otherwise.
+func (o *PosEntryModel) GetAmount() int32 {
+ if o == nil || IsNil(o.Amount) {
+ var ret int32
+ return ret
+ }
+ return *o.Amount
+}
+
+// GetAmountOk returns a tuple with the Amount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetAmountOk() (*int32, bool) {
+ if o == nil || IsNil(o.Amount) {
+ return nil, false
+ }
+ return o.Amount, true
+}
+
+// HasAmount returns a boolean if a field has been set.
+func (o *PosEntryModel) HasAmount() bool {
+ if o != nil && !IsNil(o.Amount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmount gets a reference to the given int32 and assigns it to the Amount field.
+func (o *PosEntryModel) SetAmount(v int32) {
+ o.Amount = &v
+}
+
+// GetGIndex returns the GIndex field value if set, zero value otherwise.
+func (o *PosEntryModel) GetGIndex() int32 {
+ if o == nil || IsNil(o.GIndex) {
+ var ret int32
+ return ret
+ }
+ return *o.GIndex
+}
+
+// GetGIndexOk returns a tuple with the GIndex field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetGIndexOk() (*int32, bool) {
+ if o == nil || IsNil(o.GIndex) {
+ return nil, false
+ }
+ return o.GIndex, true
+}
+
+// HasGIndex returns a boolean if a field has been set.
+func (o *PosEntryModel) HasGIndex() bool {
+ if o != nil && !IsNil(o.GIndex) {
+ return true
+ }
+
+ return false
+}
+
+// SetGIndex gets a reference to the given int32 and assigns it to the GIndex field.
+func (o *PosEntryModel) SetGIndex(v int32) {
+ o.GIndex = &v
+}
+
+// GetKeyimage returns the Keyimage field value if set, zero value otherwise.
+func (o *PosEntryModel) GetKeyimage() string {
+ if o == nil || IsNil(o.Keyimage) {
+ var ret string
+ return ret
+ }
+ return *o.Keyimage
+}
+
+// GetKeyimageOk returns a tuple with the Keyimage field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetKeyimageOk() (*string, bool) {
+ if o == nil || IsNil(o.Keyimage) {
+ return nil, false
+ }
+ return o.Keyimage, true
+}
+
+// HasKeyimage returns a boolean if a field has been set.
+func (o *PosEntryModel) HasKeyimage() bool {
+ if o != nil && !IsNil(o.Keyimage) {
+ return true
+ }
+
+ return false
+}
+
+// SetKeyimage gets a reference to the given string and assigns it to the Keyimage field.
+func (o *PosEntryModel) SetKeyimage(v string) {
+ o.Keyimage = &v
+}
+
+// GetBlockTimestamp returns the BlockTimestamp field value if set, zero value otherwise.
+func (o *PosEntryModel) GetBlockTimestamp() int32 {
+ if o == nil || IsNil(o.BlockTimestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.BlockTimestamp
+}
+
+// GetBlockTimestampOk returns a tuple with the BlockTimestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetBlockTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlockTimestamp) {
+ return nil, false
+ }
+ return o.BlockTimestamp, true
+}
+
+// HasBlockTimestamp returns a boolean if a field has been set.
+func (o *PosEntryModel) HasBlockTimestamp() bool {
+ if o != nil && !IsNil(o.BlockTimestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockTimestamp gets a reference to the given int32 and assigns it to the BlockTimestamp field.
+func (o *PosEntryModel) SetBlockTimestamp(v int32) {
+ o.BlockTimestamp = &v
+}
+
+// GetStakeUnlockTime returns the StakeUnlockTime field value if set, zero value otherwise.
+func (o *PosEntryModel) GetStakeUnlockTime() int32 {
+ if o == nil || IsNil(o.StakeUnlockTime) {
+ var ret int32
+ return ret
+ }
+ return *o.StakeUnlockTime
+}
+
+// GetStakeUnlockTimeOk returns a tuple with the StakeUnlockTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetStakeUnlockTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.StakeUnlockTime) {
+ return nil, false
+ }
+ return o.StakeUnlockTime, true
+}
+
+// HasStakeUnlockTime returns a boolean if a field has been set.
+func (o *PosEntryModel) HasStakeUnlockTime() bool {
+ if o != nil && !IsNil(o.StakeUnlockTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetStakeUnlockTime gets a reference to the given int32 and assigns it to the StakeUnlockTime field.
+func (o *PosEntryModel) SetStakeUnlockTime(v int32) {
+ o.StakeUnlockTime = &v
+}
+
+// GetTxId returns the TxId field value if set, zero value otherwise.
+func (o *PosEntryModel) GetTxId() string {
+ if o == nil || IsNil(o.TxId) {
+ var ret string
+ return ret
+ }
+ return *o.TxId
+}
+
+// GetTxIdOk returns a tuple with the TxId field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetTxIdOk() (*string, bool) {
+ if o == nil || IsNil(o.TxId) {
+ return nil, false
+ }
+ return o.TxId, true
+}
+
+// HasTxId returns a boolean if a field has been set.
+func (o *PosEntryModel) HasTxId() bool {
+ if o != nil && !IsNil(o.TxId) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxId gets a reference to the given string and assigns it to the TxId field.
+func (o *PosEntryModel) SetTxId(v string) {
+ o.TxId = &v
+}
+
+// GetTxOutIndex returns the TxOutIndex field value if set, zero value otherwise.
+func (o *PosEntryModel) GetTxOutIndex() int32 {
+ if o == nil || IsNil(o.TxOutIndex) {
+ var ret int32
+ return ret
+ }
+ return *o.TxOutIndex
+}
+
+// GetTxOutIndexOk returns a tuple with the TxOutIndex field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetTxOutIndexOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxOutIndex) {
+ return nil, false
+ }
+ return o.TxOutIndex, true
+}
+
+// HasTxOutIndex returns a boolean if a field has been set.
+func (o *PosEntryModel) HasTxOutIndex() bool {
+ if o != nil && !IsNil(o.TxOutIndex) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxOutIndex gets a reference to the given int32 and assigns it to the TxOutIndex field.
+func (o *PosEntryModel) SetTxOutIndex(v int32) {
+ o.TxOutIndex = &v
+}
+
+// GetWalletIndex returns the WalletIndex field value if set, zero value otherwise.
+func (o *PosEntryModel) GetWalletIndex() int32 {
+ if o == nil || IsNil(o.WalletIndex) {
+ var ret int32
+ return ret
+ }
+ return *o.WalletIndex
+}
+
+// GetWalletIndexOk returns a tuple with the WalletIndex field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *PosEntryModel) GetWalletIndexOk() (*int32, bool) {
+ if o == nil || IsNil(o.WalletIndex) {
+ return nil, false
+ }
+ return o.WalletIndex, true
+}
+
+// HasWalletIndex returns a boolean if a field has been set.
+func (o *PosEntryModel) HasWalletIndex() bool {
+ if o != nil && !IsNil(o.WalletIndex) {
+ return true
+ }
+
+ return false
+}
+
+// SetWalletIndex gets a reference to the given int32 and assigns it to the WalletIndex field.
+func (o *PosEntryModel) SetWalletIndex(v int32) {
+ o.WalletIndex = &v
+}
+
+func (o PosEntryModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o PosEntryModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Amount) {
+ toSerialize["amount"] = o.Amount
+ }
+ if !IsNil(o.GIndex) {
+ toSerialize["g_index"] = o.GIndex
+ }
+ if !IsNil(o.Keyimage) {
+ toSerialize["keyimage"] = o.Keyimage
+ }
+ if !IsNil(o.BlockTimestamp) {
+ toSerialize["block_timestamp"] = o.BlockTimestamp
+ }
+ if !IsNil(o.StakeUnlockTime) {
+ toSerialize["stake_unlock_time"] = o.StakeUnlockTime
+ }
+ if !IsNil(o.TxId) {
+ toSerialize["tx_id"] = o.TxId
+ }
+ if !IsNil(o.TxOutIndex) {
+ toSerialize["tx_out_index"] = o.TxOutIndex
+ }
+ if !IsNil(o.WalletIndex) {
+ toSerialize["wallet_index"] = o.WalletIndex
+ }
+ return toSerialize, nil
+}
+
+type NullablePosEntryModel struct {
+ value *PosEntryModel
+ isSet bool
+}
+
+func (v NullablePosEntryModel) Get() *PosEntryModel {
+ return v.value
+}
+
+func (v *NullablePosEntryModel) Set(val *PosEntryModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullablePosEntryModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullablePosEntryModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullablePosEntryModel(val *PosEntryModel) *NullablePosEntryModel {
+ return &NullablePosEntryModel{value: val, isSet: true}
+}
+
+func (v NullablePosEntryModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullablePosEntryModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_submit_block_request_model.go b/utils/sdk/client/go/model_submit_block_request_model.go
new file mode 100644
index 00000000..3ab0e7c4
--- /dev/null
+++ b/utils/sdk/client/go/model_submit_block_request_model.go
@@ -0,0 +1,126 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the SubmitBlockRequestModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &SubmitBlockRequestModel{}
+
+// SubmitBlockRequestModel struct for SubmitBlockRequestModel
+type SubmitBlockRequestModel struct {
+ BlockBlob *string `json:"block_blob,omitempty"`
+}
+
+// NewSubmitBlockRequestModel instantiates a new SubmitBlockRequestModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewSubmitBlockRequestModel() *SubmitBlockRequestModel {
+ this := SubmitBlockRequestModel{}
+ return &this
+}
+
+// NewSubmitBlockRequestModelWithDefaults instantiates a new SubmitBlockRequestModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewSubmitBlockRequestModelWithDefaults() *SubmitBlockRequestModel {
+ this := SubmitBlockRequestModel{}
+ return &this
+}
+
+// GetBlockBlob returns the BlockBlob field value if set, zero value otherwise.
+func (o *SubmitBlockRequestModel) GetBlockBlob() string {
+ if o == nil || IsNil(o.BlockBlob) {
+ var ret string
+ return ret
+ }
+ return *o.BlockBlob
+}
+
+// GetBlockBlobOk returns a tuple with the BlockBlob field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *SubmitBlockRequestModel) GetBlockBlobOk() (*string, bool) {
+ if o == nil || IsNil(o.BlockBlob) {
+ return nil, false
+ }
+ return o.BlockBlob, true
+}
+
+// HasBlockBlob returns a boolean if a field has been set.
+func (o *SubmitBlockRequestModel) HasBlockBlob() bool {
+ if o != nil && !IsNil(o.BlockBlob) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlockBlob gets a reference to the given string and assigns it to the BlockBlob field.
+func (o *SubmitBlockRequestModel) SetBlockBlob(v string) {
+ o.BlockBlob = &v
+}
+
+func (o SubmitBlockRequestModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o SubmitBlockRequestModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.BlockBlob) {
+ toSerialize["block_blob"] = o.BlockBlob
+ }
+ return toSerialize, nil
+}
+
+type NullableSubmitBlockRequestModel struct {
+ value *SubmitBlockRequestModel
+ isSet bool
+}
+
+func (v NullableSubmitBlockRequestModel) Get() *SubmitBlockRequestModel {
+ return v.value
+}
+
+func (v *NullableSubmitBlockRequestModel) Set(val *SubmitBlockRequestModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableSubmitBlockRequestModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableSubmitBlockRequestModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableSubmitBlockRequestModel(val *SubmitBlockRequestModel) *NullableSubmitBlockRequestModel {
+ return &NullableSubmitBlockRequestModel{value: val, isSet: true}
+}
+
+func (v NullableSubmitBlockRequestModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableSubmitBlockRequestModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_submit_block_response_model.go b/utils/sdk/client/go/model_submit_block_response_model.go
new file mode 100644
index 00000000..6d94d558
--- /dev/null
+++ b/utils/sdk/client/go/model_submit_block_response_model.go
@@ -0,0 +1,126 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the SubmitBlockResponseModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &SubmitBlockResponseModel{}
+
+// SubmitBlockResponseModel struct for SubmitBlockResponseModel
+type SubmitBlockResponseModel struct {
+ Status *string `json:"status,omitempty"`
+}
+
+// NewSubmitBlockResponseModel instantiates a new SubmitBlockResponseModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewSubmitBlockResponseModel() *SubmitBlockResponseModel {
+ this := SubmitBlockResponseModel{}
+ return &this
+}
+
+// NewSubmitBlockResponseModelWithDefaults instantiates a new SubmitBlockResponseModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewSubmitBlockResponseModelWithDefaults() *SubmitBlockResponseModel {
+ this := SubmitBlockResponseModel{}
+ return &this
+}
+
+// GetStatus returns the Status field value if set, zero value otherwise.
+func (o *SubmitBlockResponseModel) GetStatus() string {
+ if o == nil || IsNil(o.Status) {
+ var ret string
+ return ret
+ }
+ return *o.Status
+}
+
+// GetStatusOk returns a tuple with the Status field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *SubmitBlockResponseModel) GetStatusOk() (*string, bool) {
+ if o == nil || IsNil(o.Status) {
+ return nil, false
+ }
+ return o.Status, true
+}
+
+// HasStatus returns a boolean if a field has been set.
+func (o *SubmitBlockResponseModel) HasStatus() bool {
+ if o != nil && !IsNil(o.Status) {
+ return true
+ }
+
+ return false
+}
+
+// SetStatus gets a reference to the given string and assigns it to the Status field.
+func (o *SubmitBlockResponseModel) SetStatus(v string) {
+ o.Status = &v
+}
+
+func (o SubmitBlockResponseModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o SubmitBlockResponseModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Status) {
+ toSerialize["status"] = o.Status
+ }
+ return toSerialize, nil
+}
+
+type NullableSubmitBlockResponseModel struct {
+ value *SubmitBlockResponseModel
+ isSet bool
+}
+
+func (v NullableSubmitBlockResponseModel) Get() *SubmitBlockResponseModel {
+ return v.value
+}
+
+func (v *NullableSubmitBlockResponseModel) Set(val *SubmitBlockResponseModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableSubmitBlockResponseModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableSubmitBlockResponseModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableSubmitBlockResponseModel(val *SubmitBlockResponseModel) *NullableSubmitBlockResponseModel {
+ return &NullableSubmitBlockResponseModel{value: val, isSet: true}
+}
+
+func (v NullableSubmitBlockResponseModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableSubmitBlockResponseModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_transaction_attachment_model.go b/utils/sdk/client/go/model_transaction_attachment_model.go
new file mode 100644
index 00000000..721587be
--- /dev/null
+++ b/utils/sdk/client/go/model_transaction_attachment_model.go
@@ -0,0 +1,198 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TransactionAttachmentModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TransactionAttachmentModel{}
+
+// TransactionAttachmentModel struct for TransactionAttachmentModel
+type TransactionAttachmentModel struct {
+ Type *string `json:"type,omitempty"`
+ ShortView *string `json:"short_view,omitempty"`
+ DetailsView *string `json:"details_view,omitempty"`
+}
+
+// NewTransactionAttachmentModel instantiates a new TransactionAttachmentModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTransactionAttachmentModel() *TransactionAttachmentModel {
+ this := TransactionAttachmentModel{}
+ return &this
+}
+
+// NewTransactionAttachmentModelWithDefaults instantiates a new TransactionAttachmentModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTransactionAttachmentModelWithDefaults() *TransactionAttachmentModel {
+ this := TransactionAttachmentModel{}
+ return &this
+}
+
+// GetType returns the Type field value if set, zero value otherwise.
+func (o *TransactionAttachmentModel) GetType() string {
+ if o == nil || IsNil(o.Type) {
+ var ret string
+ return ret
+ }
+ return *o.Type
+}
+
+// GetTypeOk returns a tuple with the Type field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionAttachmentModel) GetTypeOk() (*string, bool) {
+ if o == nil || IsNil(o.Type) {
+ return nil, false
+ }
+ return o.Type, true
+}
+
+// HasType returns a boolean if a field has been set.
+func (o *TransactionAttachmentModel) HasType() bool {
+ if o != nil && !IsNil(o.Type) {
+ return true
+ }
+
+ return false
+}
+
+// SetType gets a reference to the given string and assigns it to the Type field.
+func (o *TransactionAttachmentModel) SetType(v string) {
+ o.Type = &v
+}
+
+// GetShortView returns the ShortView field value if set, zero value otherwise.
+func (o *TransactionAttachmentModel) GetShortView() string {
+ if o == nil || IsNil(o.ShortView) {
+ var ret string
+ return ret
+ }
+ return *o.ShortView
+}
+
+// GetShortViewOk returns a tuple with the ShortView field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionAttachmentModel) GetShortViewOk() (*string, bool) {
+ if o == nil || IsNil(o.ShortView) {
+ return nil, false
+ }
+ return o.ShortView, true
+}
+
+// HasShortView returns a boolean if a field has been set.
+func (o *TransactionAttachmentModel) HasShortView() bool {
+ if o != nil && !IsNil(o.ShortView) {
+ return true
+ }
+
+ return false
+}
+
+// SetShortView gets a reference to the given string and assigns it to the ShortView field.
+func (o *TransactionAttachmentModel) SetShortView(v string) {
+ o.ShortView = &v
+}
+
+// GetDetailsView returns the DetailsView field value if set, zero value otherwise.
+func (o *TransactionAttachmentModel) GetDetailsView() string {
+ if o == nil || IsNil(o.DetailsView) {
+ var ret string
+ return ret
+ }
+ return *o.DetailsView
+}
+
+// GetDetailsViewOk returns a tuple with the DetailsView field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionAttachmentModel) GetDetailsViewOk() (*string, bool) {
+ if o == nil || IsNil(o.DetailsView) {
+ return nil, false
+ }
+ return o.DetailsView, true
+}
+
+// HasDetailsView returns a boolean if a field has been set.
+func (o *TransactionAttachmentModel) HasDetailsView() bool {
+ if o != nil && !IsNil(o.DetailsView) {
+ return true
+ }
+
+ return false
+}
+
+// SetDetailsView gets a reference to the given string and assigns it to the DetailsView field.
+func (o *TransactionAttachmentModel) SetDetailsView(v string) {
+ o.DetailsView = &v
+}
+
+func (o TransactionAttachmentModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TransactionAttachmentModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Type) {
+ toSerialize["type"] = o.Type
+ }
+ if !IsNil(o.ShortView) {
+ toSerialize["short_view"] = o.ShortView
+ }
+ if !IsNil(o.DetailsView) {
+ toSerialize["details_view"] = o.DetailsView
+ }
+ return toSerialize, nil
+}
+
+type NullableTransactionAttachmentModel struct {
+ value *TransactionAttachmentModel
+ isSet bool
+}
+
+func (v NullableTransactionAttachmentModel) Get() *TransactionAttachmentModel {
+ return v.value
+}
+
+func (v *NullableTransactionAttachmentModel) Set(val *TransactionAttachmentModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTransactionAttachmentModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTransactionAttachmentModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTransactionAttachmentModel(val *TransactionAttachmentModel) *NullableTransactionAttachmentModel {
+ return &NullableTransactionAttachmentModel{value: val, isSet: true}
+}
+
+func (v NullableTransactionAttachmentModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTransactionAttachmentModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_transaction_details_model.go b/utils/sdk/client/go/model_transaction_details_model.go
new file mode 100644
index 00000000..9e6fa06d
--- /dev/null
+++ b/utils/sdk/client/go/model_transaction_details_model.go
@@ -0,0 +1,558 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TransactionDetailsModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TransactionDetailsModel{}
+
+// TransactionDetailsModel struct for TransactionDetailsModel
+type TransactionDetailsModel struct {
+ Amount *int32 `json:"amount,omitempty"`
+ Attachments []TransactionAttachmentModel `json:"attachments,omitempty"`
+ Blob *string `json:"blob,omitempty"`
+ BlobSize *int32 `json:"blob_size,omitempty"`
+ Extra []TransactionExtraModel `json:"extra,omitempty"`
+ Fee *int32 `json:"fee,omitempty"`
+ Id *string `json:"id,omitempty"`
+ Ins []TransactionInputModel `json:"ins,omitempty"`
+ KeeperBlock *int64 `json:"keeper_block,omitempty"`
+ ObjectInJson *string `json:"object_in_json,omitempty"`
+ Outs []TransactionOutputModel `json:"outs,omitempty"`
+ PubKey *string `json:"pub_key,omitempty"`
+ Timestamp *int32 `json:"timestamp,omitempty"`
+}
+
+// NewTransactionDetailsModel instantiates a new TransactionDetailsModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTransactionDetailsModel() *TransactionDetailsModel {
+ this := TransactionDetailsModel{}
+ return &this
+}
+
+// NewTransactionDetailsModelWithDefaults instantiates a new TransactionDetailsModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTransactionDetailsModelWithDefaults() *TransactionDetailsModel {
+ this := TransactionDetailsModel{}
+ return &this
+}
+
+// GetAmount returns the Amount field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetAmount() int32 {
+ if o == nil || IsNil(o.Amount) {
+ var ret int32
+ return ret
+ }
+ return *o.Amount
+}
+
+// GetAmountOk returns a tuple with the Amount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetAmountOk() (*int32, bool) {
+ if o == nil || IsNil(o.Amount) {
+ return nil, false
+ }
+ return o.Amount, true
+}
+
+// HasAmount returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasAmount() bool {
+ if o != nil && !IsNil(o.Amount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmount gets a reference to the given int32 and assigns it to the Amount field.
+func (o *TransactionDetailsModel) SetAmount(v int32) {
+ o.Amount = &v
+}
+
+// GetAttachments returns the Attachments field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetAttachments() []TransactionAttachmentModel {
+ if o == nil || IsNil(o.Attachments) {
+ var ret []TransactionAttachmentModel
+ return ret
+ }
+ return o.Attachments
+}
+
+// GetAttachmentsOk returns a tuple with the Attachments field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetAttachmentsOk() ([]TransactionAttachmentModel, bool) {
+ if o == nil || IsNil(o.Attachments) {
+ return nil, false
+ }
+ return o.Attachments, true
+}
+
+// HasAttachments returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasAttachments() bool {
+ if o != nil && !IsNil(o.Attachments) {
+ return true
+ }
+
+ return false
+}
+
+// SetAttachments gets a reference to the given []TransactionAttachmentModel and assigns it to the Attachments field.
+func (o *TransactionDetailsModel) SetAttachments(v []TransactionAttachmentModel) {
+ o.Attachments = v
+}
+
+// GetBlob returns the Blob field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetBlob() string {
+ if o == nil || IsNil(o.Blob) {
+ var ret string
+ return ret
+ }
+ return *o.Blob
+}
+
+// GetBlobOk returns a tuple with the Blob field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetBlobOk() (*string, bool) {
+ if o == nil || IsNil(o.Blob) {
+ return nil, false
+ }
+ return o.Blob, true
+}
+
+// HasBlob returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasBlob() bool {
+ if o != nil && !IsNil(o.Blob) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlob gets a reference to the given string and assigns it to the Blob field.
+func (o *TransactionDetailsModel) SetBlob(v string) {
+ o.Blob = &v
+}
+
+// GetBlobSize returns the BlobSize field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetBlobSize() int32 {
+ if o == nil || IsNil(o.BlobSize) {
+ var ret int32
+ return ret
+ }
+ return *o.BlobSize
+}
+
+// GetBlobSizeOk returns a tuple with the BlobSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetBlobSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.BlobSize) {
+ return nil, false
+ }
+ return o.BlobSize, true
+}
+
+// HasBlobSize returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasBlobSize() bool {
+ if o != nil && !IsNil(o.BlobSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlobSize gets a reference to the given int32 and assigns it to the BlobSize field.
+func (o *TransactionDetailsModel) SetBlobSize(v int32) {
+ o.BlobSize = &v
+}
+
+// GetExtra returns the Extra field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetExtra() []TransactionExtraModel {
+ if o == nil || IsNil(o.Extra) {
+ var ret []TransactionExtraModel
+ return ret
+ }
+ return o.Extra
+}
+
+// GetExtraOk returns a tuple with the Extra field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetExtraOk() ([]TransactionExtraModel, bool) {
+ if o == nil || IsNil(o.Extra) {
+ return nil, false
+ }
+ return o.Extra, true
+}
+
+// HasExtra returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasExtra() bool {
+ if o != nil && !IsNil(o.Extra) {
+ return true
+ }
+
+ return false
+}
+
+// SetExtra gets a reference to the given []TransactionExtraModel and assigns it to the Extra field.
+func (o *TransactionDetailsModel) SetExtra(v []TransactionExtraModel) {
+ o.Extra = v
+}
+
+// GetFee returns the Fee field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetFee() int32 {
+ if o == nil || IsNil(o.Fee) {
+ var ret int32
+ return ret
+ }
+ return *o.Fee
+}
+
+// GetFeeOk returns a tuple with the Fee field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetFeeOk() (*int32, bool) {
+ if o == nil || IsNil(o.Fee) {
+ return nil, false
+ }
+ return o.Fee, true
+}
+
+// HasFee returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasFee() bool {
+ if o != nil && !IsNil(o.Fee) {
+ return true
+ }
+
+ return false
+}
+
+// SetFee gets a reference to the given int32 and assigns it to the Fee field.
+func (o *TransactionDetailsModel) SetFee(v int32) {
+ o.Fee = &v
+}
+
+// GetId returns the Id field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetId() string {
+ if o == nil || IsNil(o.Id) {
+ var ret string
+ return ret
+ }
+ return *o.Id
+}
+
+// GetIdOk returns a tuple with the Id field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetIdOk() (*string, bool) {
+ if o == nil || IsNil(o.Id) {
+ return nil, false
+ }
+ return o.Id, true
+}
+
+// HasId returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasId() bool {
+ if o != nil && !IsNil(o.Id) {
+ return true
+ }
+
+ return false
+}
+
+// SetId gets a reference to the given string and assigns it to the Id field.
+func (o *TransactionDetailsModel) SetId(v string) {
+ o.Id = &v
+}
+
+// GetIns returns the Ins field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetIns() []TransactionInputModel {
+ if o == nil || IsNil(o.Ins) {
+ var ret []TransactionInputModel
+ return ret
+ }
+ return o.Ins
+}
+
+// GetInsOk returns a tuple with the Ins field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetInsOk() ([]TransactionInputModel, bool) {
+ if o == nil || IsNil(o.Ins) {
+ return nil, false
+ }
+ return o.Ins, true
+}
+
+// HasIns returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasIns() bool {
+ if o != nil && !IsNil(o.Ins) {
+ return true
+ }
+
+ return false
+}
+
+// SetIns gets a reference to the given []TransactionInputModel and assigns it to the Ins field.
+func (o *TransactionDetailsModel) SetIns(v []TransactionInputModel) {
+ o.Ins = v
+}
+
+// GetKeeperBlock returns the KeeperBlock field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetKeeperBlock() int64 {
+ if o == nil || IsNil(o.KeeperBlock) {
+ var ret int64
+ return ret
+ }
+ return *o.KeeperBlock
+}
+
+// GetKeeperBlockOk returns a tuple with the KeeperBlock field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetKeeperBlockOk() (*int64, bool) {
+ if o == nil || IsNil(o.KeeperBlock) {
+ return nil, false
+ }
+ return o.KeeperBlock, true
+}
+
+// HasKeeperBlock returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasKeeperBlock() bool {
+ if o != nil && !IsNil(o.KeeperBlock) {
+ return true
+ }
+
+ return false
+}
+
+// SetKeeperBlock gets a reference to the given int64 and assigns it to the KeeperBlock field.
+func (o *TransactionDetailsModel) SetKeeperBlock(v int64) {
+ o.KeeperBlock = &v
+}
+
+// GetObjectInJson returns the ObjectInJson field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetObjectInJson() string {
+ if o == nil || IsNil(o.ObjectInJson) {
+ var ret string
+ return ret
+ }
+ return *o.ObjectInJson
+}
+
+// GetObjectInJsonOk returns a tuple with the ObjectInJson field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetObjectInJsonOk() (*string, bool) {
+ if o == nil || IsNil(o.ObjectInJson) {
+ return nil, false
+ }
+ return o.ObjectInJson, true
+}
+
+// HasObjectInJson returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasObjectInJson() bool {
+ if o != nil && !IsNil(o.ObjectInJson) {
+ return true
+ }
+
+ return false
+}
+
+// SetObjectInJson gets a reference to the given string and assigns it to the ObjectInJson field.
+func (o *TransactionDetailsModel) SetObjectInJson(v string) {
+ o.ObjectInJson = &v
+}
+
+// GetOuts returns the Outs field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetOuts() []TransactionOutputModel {
+ if o == nil || IsNil(o.Outs) {
+ var ret []TransactionOutputModel
+ return ret
+ }
+ return o.Outs
+}
+
+// GetOutsOk returns a tuple with the Outs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetOutsOk() ([]TransactionOutputModel, bool) {
+ if o == nil || IsNil(o.Outs) {
+ return nil, false
+ }
+ return o.Outs, true
+}
+
+// HasOuts returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasOuts() bool {
+ if o != nil && !IsNil(o.Outs) {
+ return true
+ }
+
+ return false
+}
+
+// SetOuts gets a reference to the given []TransactionOutputModel and assigns it to the Outs field.
+func (o *TransactionDetailsModel) SetOuts(v []TransactionOutputModel) {
+ o.Outs = v
+}
+
+// GetPubKey returns the PubKey field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetPubKey() string {
+ if o == nil || IsNil(o.PubKey) {
+ var ret string
+ return ret
+ }
+ return *o.PubKey
+}
+
+// GetPubKeyOk returns a tuple with the PubKey field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetPubKeyOk() (*string, bool) {
+ if o == nil || IsNil(o.PubKey) {
+ return nil, false
+ }
+ return o.PubKey, true
+}
+
+// HasPubKey returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasPubKey() bool {
+ if o != nil && !IsNil(o.PubKey) {
+ return true
+ }
+
+ return false
+}
+
+// SetPubKey gets a reference to the given string and assigns it to the PubKey field.
+func (o *TransactionDetailsModel) SetPubKey(v string) {
+ o.PubKey = &v
+}
+
+// GetTimestamp returns the Timestamp field value if set, zero value otherwise.
+func (o *TransactionDetailsModel) GetTimestamp() int32 {
+ if o == nil || IsNil(o.Timestamp) {
+ var ret int32
+ return ret
+ }
+ return *o.Timestamp
+}
+
+// GetTimestampOk returns a tuple with the Timestamp field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionDetailsModel) GetTimestampOk() (*int32, bool) {
+ if o == nil || IsNil(o.Timestamp) {
+ return nil, false
+ }
+ return o.Timestamp, true
+}
+
+// HasTimestamp returns a boolean if a field has been set.
+func (o *TransactionDetailsModel) HasTimestamp() bool {
+ if o != nil && !IsNil(o.Timestamp) {
+ return true
+ }
+
+ return false
+}
+
+// SetTimestamp gets a reference to the given int32 and assigns it to the Timestamp field.
+func (o *TransactionDetailsModel) SetTimestamp(v int32) {
+ o.Timestamp = &v
+}
+
+func (o TransactionDetailsModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TransactionDetailsModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Amount) {
+ toSerialize["amount"] = o.Amount
+ }
+ if !IsNil(o.Attachments) {
+ toSerialize["attachments"] = o.Attachments
+ }
+ if !IsNil(o.Blob) {
+ toSerialize["blob"] = o.Blob
+ }
+ if !IsNil(o.BlobSize) {
+ toSerialize["blob_size"] = o.BlobSize
+ }
+ if !IsNil(o.Extra) {
+ toSerialize["extra"] = o.Extra
+ }
+ if !IsNil(o.Fee) {
+ toSerialize["fee"] = o.Fee
+ }
+ if !IsNil(o.Id) {
+ toSerialize["id"] = o.Id
+ }
+ if !IsNil(o.Ins) {
+ toSerialize["ins"] = o.Ins
+ }
+ if !IsNil(o.KeeperBlock) {
+ toSerialize["keeper_block"] = o.KeeperBlock
+ }
+ if !IsNil(o.ObjectInJson) {
+ toSerialize["object_in_json"] = o.ObjectInJson
+ }
+ if !IsNil(o.Outs) {
+ toSerialize["outs"] = o.Outs
+ }
+ if !IsNil(o.PubKey) {
+ toSerialize["pub_key"] = o.PubKey
+ }
+ if !IsNil(o.Timestamp) {
+ toSerialize["timestamp"] = o.Timestamp
+ }
+ return toSerialize, nil
+}
+
+type NullableTransactionDetailsModel struct {
+ value *TransactionDetailsModel
+ isSet bool
+}
+
+func (v NullableTransactionDetailsModel) Get() *TransactionDetailsModel {
+ return v.value
+}
+
+func (v *NullableTransactionDetailsModel) Set(val *TransactionDetailsModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTransactionDetailsModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTransactionDetailsModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTransactionDetailsModel(val *TransactionDetailsModel) *NullableTransactionDetailsModel {
+ return &NullableTransactionDetailsModel{value: val, isSet: true}
+}
+
+func (v NullableTransactionDetailsModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTransactionDetailsModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_transaction_extra_model.go b/utils/sdk/client/go/model_transaction_extra_model.go
new file mode 100644
index 00000000..2423ca32
--- /dev/null
+++ b/utils/sdk/client/go/model_transaction_extra_model.go
@@ -0,0 +1,198 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TransactionExtraModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TransactionExtraModel{}
+
+// TransactionExtraModel struct for TransactionExtraModel
+type TransactionExtraModel struct {
+ Type *string `json:"type,omitempty"`
+ ShortView *string `json:"short_view,omitempty"`
+ DetailsView *string `json:"details_view,omitempty"`
+}
+
+// NewTransactionExtraModel instantiates a new TransactionExtraModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTransactionExtraModel() *TransactionExtraModel {
+ this := TransactionExtraModel{}
+ return &this
+}
+
+// NewTransactionExtraModelWithDefaults instantiates a new TransactionExtraModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTransactionExtraModelWithDefaults() *TransactionExtraModel {
+ this := TransactionExtraModel{}
+ return &this
+}
+
+// GetType returns the Type field value if set, zero value otherwise.
+func (o *TransactionExtraModel) GetType() string {
+ if o == nil || IsNil(o.Type) {
+ var ret string
+ return ret
+ }
+ return *o.Type
+}
+
+// GetTypeOk returns a tuple with the Type field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionExtraModel) GetTypeOk() (*string, bool) {
+ if o == nil || IsNil(o.Type) {
+ return nil, false
+ }
+ return o.Type, true
+}
+
+// HasType returns a boolean if a field has been set.
+func (o *TransactionExtraModel) HasType() bool {
+ if o != nil && !IsNil(o.Type) {
+ return true
+ }
+
+ return false
+}
+
+// SetType gets a reference to the given string and assigns it to the Type field.
+func (o *TransactionExtraModel) SetType(v string) {
+ o.Type = &v
+}
+
+// GetShortView returns the ShortView field value if set, zero value otherwise.
+func (o *TransactionExtraModel) GetShortView() string {
+ if o == nil || IsNil(o.ShortView) {
+ var ret string
+ return ret
+ }
+ return *o.ShortView
+}
+
+// GetShortViewOk returns a tuple with the ShortView field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionExtraModel) GetShortViewOk() (*string, bool) {
+ if o == nil || IsNil(o.ShortView) {
+ return nil, false
+ }
+ return o.ShortView, true
+}
+
+// HasShortView returns a boolean if a field has been set.
+func (o *TransactionExtraModel) HasShortView() bool {
+ if o != nil && !IsNil(o.ShortView) {
+ return true
+ }
+
+ return false
+}
+
+// SetShortView gets a reference to the given string and assigns it to the ShortView field.
+func (o *TransactionExtraModel) SetShortView(v string) {
+ o.ShortView = &v
+}
+
+// GetDetailsView returns the DetailsView field value if set, zero value otherwise.
+func (o *TransactionExtraModel) GetDetailsView() string {
+ if o == nil || IsNil(o.DetailsView) {
+ var ret string
+ return ret
+ }
+ return *o.DetailsView
+}
+
+// GetDetailsViewOk returns a tuple with the DetailsView field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionExtraModel) GetDetailsViewOk() (*string, bool) {
+ if o == nil || IsNil(o.DetailsView) {
+ return nil, false
+ }
+ return o.DetailsView, true
+}
+
+// HasDetailsView returns a boolean if a field has been set.
+func (o *TransactionExtraModel) HasDetailsView() bool {
+ if o != nil && !IsNil(o.DetailsView) {
+ return true
+ }
+
+ return false
+}
+
+// SetDetailsView gets a reference to the given string and assigns it to the DetailsView field.
+func (o *TransactionExtraModel) SetDetailsView(v string) {
+ o.DetailsView = &v
+}
+
+func (o TransactionExtraModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TransactionExtraModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Type) {
+ toSerialize["type"] = o.Type
+ }
+ if !IsNil(o.ShortView) {
+ toSerialize["short_view"] = o.ShortView
+ }
+ if !IsNil(o.DetailsView) {
+ toSerialize["details_view"] = o.DetailsView
+ }
+ return toSerialize, nil
+}
+
+type NullableTransactionExtraModel struct {
+ value *TransactionExtraModel
+ isSet bool
+}
+
+func (v NullableTransactionExtraModel) Get() *TransactionExtraModel {
+ return v.value
+}
+
+func (v *NullableTransactionExtraModel) Set(val *TransactionExtraModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTransactionExtraModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTransactionExtraModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTransactionExtraModel(val *TransactionExtraModel) *NullableTransactionExtraModel {
+ return &NullableTransactionExtraModel{value: val, isSet: true}
+}
+
+func (v NullableTransactionExtraModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTransactionExtraModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_transaction_input_model.go b/utils/sdk/client/go/model_transaction_input_model.go
new file mode 100644
index 00000000..3721470b
--- /dev/null
+++ b/utils/sdk/client/go/model_transaction_input_model.go
@@ -0,0 +1,270 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TransactionInputModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TransactionInputModel{}
+
+// TransactionInputModel struct for TransactionInputModel
+type TransactionInputModel struct {
+ Amount *int32 `json:"amount,omitempty"`
+ GlobalIndexes []int32 `json:"global_indexes,omitempty"`
+ HtlcOrigin *string `json:"htlc_origin,omitempty"`
+ KimageOrMsId *string `json:"kimage_or_ms_id,omitempty"`
+ MultisigCount *int32 `json:"multisig_count,omitempty"`
+}
+
+// NewTransactionInputModel instantiates a new TransactionInputModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTransactionInputModel() *TransactionInputModel {
+ this := TransactionInputModel{}
+ return &this
+}
+
+// NewTransactionInputModelWithDefaults instantiates a new TransactionInputModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTransactionInputModelWithDefaults() *TransactionInputModel {
+ this := TransactionInputModel{}
+ return &this
+}
+
+// GetAmount returns the Amount field value if set, zero value otherwise.
+func (o *TransactionInputModel) GetAmount() int32 {
+ if o == nil || IsNil(o.Amount) {
+ var ret int32
+ return ret
+ }
+ return *o.Amount
+}
+
+// GetAmountOk returns a tuple with the Amount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionInputModel) GetAmountOk() (*int32, bool) {
+ if o == nil || IsNil(o.Amount) {
+ return nil, false
+ }
+ return o.Amount, true
+}
+
+// HasAmount returns a boolean if a field has been set.
+func (o *TransactionInputModel) HasAmount() bool {
+ if o != nil && !IsNil(o.Amount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmount gets a reference to the given int32 and assigns it to the Amount field.
+func (o *TransactionInputModel) SetAmount(v int32) {
+ o.Amount = &v
+}
+
+// GetGlobalIndexes returns the GlobalIndexes field value if set, zero value otherwise.
+func (o *TransactionInputModel) GetGlobalIndexes() []int32 {
+ if o == nil || IsNil(o.GlobalIndexes) {
+ var ret []int32
+ return ret
+ }
+ return o.GlobalIndexes
+}
+
+// GetGlobalIndexesOk returns a tuple with the GlobalIndexes field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionInputModel) GetGlobalIndexesOk() ([]int32, bool) {
+ if o == nil || IsNil(o.GlobalIndexes) {
+ return nil, false
+ }
+ return o.GlobalIndexes, true
+}
+
+// HasGlobalIndexes returns a boolean if a field has been set.
+func (o *TransactionInputModel) HasGlobalIndexes() bool {
+ if o != nil && !IsNil(o.GlobalIndexes) {
+ return true
+ }
+
+ return false
+}
+
+// SetGlobalIndexes gets a reference to the given []int32 and assigns it to the GlobalIndexes field.
+func (o *TransactionInputModel) SetGlobalIndexes(v []int32) {
+ o.GlobalIndexes = v
+}
+
+// GetHtlcOrigin returns the HtlcOrigin field value if set, zero value otherwise.
+func (o *TransactionInputModel) GetHtlcOrigin() string {
+ if o == nil || IsNil(o.HtlcOrigin) {
+ var ret string
+ return ret
+ }
+ return *o.HtlcOrigin
+}
+
+// GetHtlcOriginOk returns a tuple with the HtlcOrigin field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionInputModel) GetHtlcOriginOk() (*string, bool) {
+ if o == nil || IsNil(o.HtlcOrigin) {
+ return nil, false
+ }
+ return o.HtlcOrigin, true
+}
+
+// HasHtlcOrigin returns a boolean if a field has been set.
+func (o *TransactionInputModel) HasHtlcOrigin() bool {
+ if o != nil && !IsNil(o.HtlcOrigin) {
+ return true
+ }
+
+ return false
+}
+
+// SetHtlcOrigin gets a reference to the given string and assigns it to the HtlcOrigin field.
+func (o *TransactionInputModel) SetHtlcOrigin(v string) {
+ o.HtlcOrigin = &v
+}
+
+// GetKimageOrMsId returns the KimageOrMsId field value if set, zero value otherwise.
+func (o *TransactionInputModel) GetKimageOrMsId() string {
+ if o == nil || IsNil(o.KimageOrMsId) {
+ var ret string
+ return ret
+ }
+ return *o.KimageOrMsId
+}
+
+// GetKimageOrMsIdOk returns a tuple with the KimageOrMsId field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionInputModel) GetKimageOrMsIdOk() (*string, bool) {
+ if o == nil || IsNil(o.KimageOrMsId) {
+ return nil, false
+ }
+ return o.KimageOrMsId, true
+}
+
+// HasKimageOrMsId returns a boolean if a field has been set.
+func (o *TransactionInputModel) HasKimageOrMsId() bool {
+ if o != nil && !IsNil(o.KimageOrMsId) {
+ return true
+ }
+
+ return false
+}
+
+// SetKimageOrMsId gets a reference to the given string and assigns it to the KimageOrMsId field.
+func (o *TransactionInputModel) SetKimageOrMsId(v string) {
+ o.KimageOrMsId = &v
+}
+
+// GetMultisigCount returns the MultisigCount field value if set, zero value otherwise.
+func (o *TransactionInputModel) GetMultisigCount() int32 {
+ if o == nil || IsNil(o.MultisigCount) {
+ var ret int32
+ return ret
+ }
+ return *o.MultisigCount
+}
+
+// GetMultisigCountOk returns a tuple with the MultisigCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionInputModel) GetMultisigCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.MultisigCount) {
+ return nil, false
+ }
+ return o.MultisigCount, true
+}
+
+// HasMultisigCount returns a boolean if a field has been set.
+func (o *TransactionInputModel) HasMultisigCount() bool {
+ if o != nil && !IsNil(o.MultisigCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetMultisigCount gets a reference to the given int32 and assigns it to the MultisigCount field.
+func (o *TransactionInputModel) SetMultisigCount(v int32) {
+ o.MultisigCount = &v
+}
+
+func (o TransactionInputModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TransactionInputModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Amount) {
+ toSerialize["amount"] = o.Amount
+ }
+ if !IsNil(o.GlobalIndexes) {
+ toSerialize["global_indexes"] = o.GlobalIndexes
+ }
+ if !IsNil(o.HtlcOrigin) {
+ toSerialize["htlc_origin"] = o.HtlcOrigin
+ }
+ if !IsNil(o.KimageOrMsId) {
+ toSerialize["kimage_or_ms_id"] = o.KimageOrMsId
+ }
+ if !IsNil(o.MultisigCount) {
+ toSerialize["multisig_count"] = o.MultisigCount
+ }
+ return toSerialize, nil
+}
+
+type NullableTransactionInputModel struct {
+ value *TransactionInputModel
+ isSet bool
+}
+
+func (v NullableTransactionInputModel) Get() *TransactionInputModel {
+ return v.value
+}
+
+func (v *NullableTransactionInputModel) Set(val *TransactionInputModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTransactionInputModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTransactionInputModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTransactionInputModel(val *TransactionInputModel) *NullableTransactionInputModel {
+ return &NullableTransactionInputModel{value: val, isSet: true}
+}
+
+func (v NullableTransactionInputModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTransactionInputModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_transaction_output_model.go b/utils/sdk/client/go/model_transaction_output_model.go
new file mode 100644
index 00000000..1bc0eb90
--- /dev/null
+++ b/utils/sdk/client/go/model_transaction_output_model.go
@@ -0,0 +1,270 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TransactionOutputModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TransactionOutputModel{}
+
+// TransactionOutputModel struct for TransactionOutputModel
+type TransactionOutputModel struct {
+ Amount *int32 `json:"amount,omitempty"`
+ GlobalIndex *int32 `json:"global_index,omitempty"`
+ IsSpent *bool `json:"is_spent,omitempty"`
+ MinimumSigs *int32 `json:"minimum_sigs,omitempty"`
+ PubKeys []string `json:"pub_keys,omitempty"`
+}
+
+// NewTransactionOutputModel instantiates a new TransactionOutputModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTransactionOutputModel() *TransactionOutputModel {
+ this := TransactionOutputModel{}
+ return &this
+}
+
+// NewTransactionOutputModelWithDefaults instantiates a new TransactionOutputModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTransactionOutputModelWithDefaults() *TransactionOutputModel {
+ this := TransactionOutputModel{}
+ return &this
+}
+
+// GetAmount returns the Amount field value if set, zero value otherwise.
+func (o *TransactionOutputModel) GetAmount() int32 {
+ if o == nil || IsNil(o.Amount) {
+ var ret int32
+ return ret
+ }
+ return *o.Amount
+}
+
+// GetAmountOk returns a tuple with the Amount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionOutputModel) GetAmountOk() (*int32, bool) {
+ if o == nil || IsNil(o.Amount) {
+ return nil, false
+ }
+ return o.Amount, true
+}
+
+// HasAmount returns a boolean if a field has been set.
+func (o *TransactionOutputModel) HasAmount() bool {
+ if o != nil && !IsNil(o.Amount) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmount gets a reference to the given int32 and assigns it to the Amount field.
+func (o *TransactionOutputModel) SetAmount(v int32) {
+ o.Amount = &v
+}
+
+// GetGlobalIndex returns the GlobalIndex field value if set, zero value otherwise.
+func (o *TransactionOutputModel) GetGlobalIndex() int32 {
+ if o == nil || IsNil(o.GlobalIndex) {
+ var ret int32
+ return ret
+ }
+ return *o.GlobalIndex
+}
+
+// GetGlobalIndexOk returns a tuple with the GlobalIndex field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionOutputModel) GetGlobalIndexOk() (*int32, bool) {
+ if o == nil || IsNil(o.GlobalIndex) {
+ return nil, false
+ }
+ return o.GlobalIndex, true
+}
+
+// HasGlobalIndex returns a boolean if a field has been set.
+func (o *TransactionOutputModel) HasGlobalIndex() bool {
+ if o != nil && !IsNil(o.GlobalIndex) {
+ return true
+ }
+
+ return false
+}
+
+// SetGlobalIndex gets a reference to the given int32 and assigns it to the GlobalIndex field.
+func (o *TransactionOutputModel) SetGlobalIndex(v int32) {
+ o.GlobalIndex = &v
+}
+
+// GetIsSpent returns the IsSpent field value if set, zero value otherwise.
+func (o *TransactionOutputModel) GetIsSpent() bool {
+ if o == nil || IsNil(o.IsSpent) {
+ var ret bool
+ return ret
+ }
+ return *o.IsSpent
+}
+
+// GetIsSpentOk returns a tuple with the IsSpent field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionOutputModel) GetIsSpentOk() (*bool, bool) {
+ if o == nil || IsNil(o.IsSpent) {
+ return nil, false
+ }
+ return o.IsSpent, true
+}
+
+// HasIsSpent returns a boolean if a field has been set.
+func (o *TransactionOutputModel) HasIsSpent() bool {
+ if o != nil && !IsNil(o.IsSpent) {
+ return true
+ }
+
+ return false
+}
+
+// SetIsSpent gets a reference to the given bool and assigns it to the IsSpent field.
+func (o *TransactionOutputModel) SetIsSpent(v bool) {
+ o.IsSpent = &v
+}
+
+// GetMinimumSigs returns the MinimumSigs field value if set, zero value otherwise.
+func (o *TransactionOutputModel) GetMinimumSigs() int32 {
+ if o == nil || IsNil(o.MinimumSigs) {
+ var ret int32
+ return ret
+ }
+ return *o.MinimumSigs
+}
+
+// GetMinimumSigsOk returns a tuple with the MinimumSigs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionOutputModel) GetMinimumSigsOk() (*int32, bool) {
+ if o == nil || IsNil(o.MinimumSigs) {
+ return nil, false
+ }
+ return o.MinimumSigs, true
+}
+
+// HasMinimumSigs returns a boolean if a field has been set.
+func (o *TransactionOutputModel) HasMinimumSigs() bool {
+ if o != nil && !IsNil(o.MinimumSigs) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinimumSigs gets a reference to the given int32 and assigns it to the MinimumSigs field.
+func (o *TransactionOutputModel) SetMinimumSigs(v int32) {
+ o.MinimumSigs = &v
+}
+
+// GetPubKeys returns the PubKeys field value if set, zero value otherwise.
+func (o *TransactionOutputModel) GetPubKeys() []string {
+ if o == nil || IsNil(o.PubKeys) {
+ var ret []string
+ return ret
+ }
+ return o.PubKeys
+}
+
+// GetPubKeysOk returns a tuple with the PubKeys field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TransactionOutputModel) GetPubKeysOk() ([]string, bool) {
+ if o == nil || IsNil(o.PubKeys) {
+ return nil, false
+ }
+ return o.PubKeys, true
+}
+
+// HasPubKeys returns a boolean if a field has been set.
+func (o *TransactionOutputModel) HasPubKeys() bool {
+ if o != nil && !IsNil(o.PubKeys) {
+ return true
+ }
+
+ return false
+}
+
+// SetPubKeys gets a reference to the given []string and assigns it to the PubKeys field.
+func (o *TransactionOutputModel) SetPubKeys(v []string) {
+ o.PubKeys = v
+}
+
+func (o TransactionOutputModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TransactionOutputModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Amount) {
+ toSerialize["amount"] = o.Amount
+ }
+ if !IsNil(o.GlobalIndex) {
+ toSerialize["global_index"] = o.GlobalIndex
+ }
+ if !IsNil(o.IsSpent) {
+ toSerialize["is_spent"] = o.IsSpent
+ }
+ if !IsNil(o.MinimumSigs) {
+ toSerialize["minimum_sigs"] = o.MinimumSigs
+ }
+ if !IsNil(o.PubKeys) {
+ toSerialize["pub_keys"] = o.PubKeys
+ }
+ return toSerialize, nil
+}
+
+type NullableTransactionOutputModel struct {
+ value *TransactionOutputModel
+ isSet bool
+}
+
+func (v NullableTransactionOutputModel) Get() *TransactionOutputModel {
+ return v.value
+}
+
+func (v *NullableTransactionOutputModel) Set(val *TransactionOutputModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTransactionOutputModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTransactionOutputModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTransactionOutputModel(val *TransactionOutputModel) *NullableTransactionOutputModel {
+ return &NullableTransactionOutputModel{value: val, isSet: true}
+}
+
+func (v NullableTransactionOutputModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTransactionOutputModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_tx_generation_context_model.go b/utils/sdk/client/go/model_tx_generation_context_model.go
new file mode 100644
index 00000000..1d9a42fe
--- /dev/null
+++ b/utils/sdk/client/go/model_tx_generation_context_model.go
@@ -0,0 +1,954 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TxGenerationContextModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TxGenerationContextModel{}
+
+// TxGenerationContextModel struct for TxGenerationContextModel
+type TxGenerationContextModel struct {
+ AssetIds []string `json:"asset_ids,omitempty"`
+ BlindedAssetIds []string `json:"blinded_asset_ids,omitempty"`
+ AmountCommitments []string `json:"amount_commitments,omitempty"`
+ AssetIdBlindingMasks []string `json:"asset_id_blinding_masks,omitempty"`
+ Amounts []string `json:"amounts,omitempty"`
+ AmountBlindingMasks []string `json:"amount_blinding_masks,omitempty"`
+ PseudoOutsBlindedAssetIds []string `json:"pseudo_outs_blinded_asset_ids,omitempty"`
+ PseudoOutsPlusRealOutBlindingMasks []string `json:"pseudo_outs_plus_real_out_blinding_masks,omitempty"`
+ RealZcInsAssetIds []string `json:"real_zc_ins_asset_ids,omitempty"`
+ ZcInputAmounts []int32 `json:"zc_input_amounts,omitempty"`
+ PseudoOutAmountCommitmentsSum *string `json:"pseudo_out_amount_commitments_sum,omitempty"`
+ PseudoOutAmountBlindingMasksSum *string `json:"pseudo_out_amount_blinding_masks_sum,omitempty"`
+ RealInAssetIdBlindingMaskXAmountSum *string `json:"real_in_asset_id_blinding_mask_x_amount_sum,omitempty"`
+ AmountCommitmentsSum *string `json:"amount_commitments_sum,omitempty"`
+ AmountBlindingMasksSum *string `json:"amount_blinding_masks_sum,omitempty"`
+ AssetIdBlindingMaskXAmountSum *string `json:"asset_id_blinding_mask_x_amount_sum,omitempty"`
+ AoAssetId *string `json:"ao_asset_id,omitempty"`
+ AoAssetIdPt *string `json:"ao_asset_id_pt,omitempty"`
+ AoAmountCommitment *string `json:"ao_amount_commitment,omitempty"`
+ AoAmountBlindingMask *string `json:"ao_amount_blinding_mask,omitempty"`
+ AoCommitmentInOutputs *bool `json:"ao_commitment_in_outputs,omitempty"`
+ TxKeyPub *string `json:"tx_key_pub,omitempty"`
+ TxKeySec *string `json:"tx_key_sec,omitempty"`
+ TxPubKeyP *string `json:"tx_pub_key_p,omitempty"`
+}
+
+// NewTxGenerationContextModel instantiates a new TxGenerationContextModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTxGenerationContextModel() *TxGenerationContextModel {
+ this := TxGenerationContextModel{}
+ return &this
+}
+
+// NewTxGenerationContextModelWithDefaults instantiates a new TxGenerationContextModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTxGenerationContextModelWithDefaults() *TxGenerationContextModel {
+ this := TxGenerationContextModel{}
+ return &this
+}
+
+// GetAssetIds returns the AssetIds field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAssetIds() []string {
+ if o == nil || IsNil(o.AssetIds) {
+ var ret []string
+ return ret
+ }
+ return o.AssetIds
+}
+
+// GetAssetIdsOk returns a tuple with the AssetIds field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAssetIdsOk() ([]string, bool) {
+ if o == nil || IsNil(o.AssetIds) {
+ return nil, false
+ }
+ return o.AssetIds, true
+}
+
+// HasAssetIds returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAssetIds() bool {
+ if o != nil && !IsNil(o.AssetIds) {
+ return true
+ }
+
+ return false
+}
+
+// SetAssetIds gets a reference to the given []string and assigns it to the AssetIds field.
+func (o *TxGenerationContextModel) SetAssetIds(v []string) {
+ o.AssetIds = v
+}
+
+// GetBlindedAssetIds returns the BlindedAssetIds field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetBlindedAssetIds() []string {
+ if o == nil || IsNil(o.BlindedAssetIds) {
+ var ret []string
+ return ret
+ }
+ return o.BlindedAssetIds
+}
+
+// GetBlindedAssetIdsOk returns a tuple with the BlindedAssetIds field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetBlindedAssetIdsOk() ([]string, bool) {
+ if o == nil || IsNil(o.BlindedAssetIds) {
+ return nil, false
+ }
+ return o.BlindedAssetIds, true
+}
+
+// HasBlindedAssetIds returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasBlindedAssetIds() bool {
+ if o != nil && !IsNil(o.BlindedAssetIds) {
+ return true
+ }
+
+ return false
+}
+
+// SetBlindedAssetIds gets a reference to the given []string and assigns it to the BlindedAssetIds field.
+func (o *TxGenerationContextModel) SetBlindedAssetIds(v []string) {
+ o.BlindedAssetIds = v
+}
+
+// GetAmountCommitments returns the AmountCommitments field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAmountCommitments() []string {
+ if o == nil || IsNil(o.AmountCommitments) {
+ var ret []string
+ return ret
+ }
+ return o.AmountCommitments
+}
+
+// GetAmountCommitmentsOk returns a tuple with the AmountCommitments field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAmountCommitmentsOk() ([]string, bool) {
+ if o == nil || IsNil(o.AmountCommitments) {
+ return nil, false
+ }
+ return o.AmountCommitments, true
+}
+
+// HasAmountCommitments returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAmountCommitments() bool {
+ if o != nil && !IsNil(o.AmountCommitments) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmountCommitments gets a reference to the given []string and assigns it to the AmountCommitments field.
+func (o *TxGenerationContextModel) SetAmountCommitments(v []string) {
+ o.AmountCommitments = v
+}
+
+// GetAssetIdBlindingMasks returns the AssetIdBlindingMasks field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAssetIdBlindingMasks() []string {
+ if o == nil || IsNil(o.AssetIdBlindingMasks) {
+ var ret []string
+ return ret
+ }
+ return o.AssetIdBlindingMasks
+}
+
+// GetAssetIdBlindingMasksOk returns a tuple with the AssetIdBlindingMasks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAssetIdBlindingMasksOk() ([]string, bool) {
+ if o == nil || IsNil(o.AssetIdBlindingMasks) {
+ return nil, false
+ }
+ return o.AssetIdBlindingMasks, true
+}
+
+// HasAssetIdBlindingMasks returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAssetIdBlindingMasks() bool {
+ if o != nil && !IsNil(o.AssetIdBlindingMasks) {
+ return true
+ }
+
+ return false
+}
+
+// SetAssetIdBlindingMasks gets a reference to the given []string and assigns it to the AssetIdBlindingMasks field.
+func (o *TxGenerationContextModel) SetAssetIdBlindingMasks(v []string) {
+ o.AssetIdBlindingMasks = v
+}
+
+// GetAmounts returns the Amounts field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAmounts() []string {
+ if o == nil || IsNil(o.Amounts) {
+ var ret []string
+ return ret
+ }
+ return o.Amounts
+}
+
+// GetAmountsOk returns a tuple with the Amounts field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAmountsOk() ([]string, bool) {
+ if o == nil || IsNil(o.Amounts) {
+ return nil, false
+ }
+ return o.Amounts, true
+}
+
+// HasAmounts returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAmounts() bool {
+ if o != nil && !IsNil(o.Amounts) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmounts gets a reference to the given []string and assigns it to the Amounts field.
+func (o *TxGenerationContextModel) SetAmounts(v []string) {
+ o.Amounts = v
+}
+
+// GetAmountBlindingMasks returns the AmountBlindingMasks field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAmountBlindingMasks() []string {
+ if o == nil || IsNil(o.AmountBlindingMasks) {
+ var ret []string
+ return ret
+ }
+ return o.AmountBlindingMasks
+}
+
+// GetAmountBlindingMasksOk returns a tuple with the AmountBlindingMasks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAmountBlindingMasksOk() ([]string, bool) {
+ if o == nil || IsNil(o.AmountBlindingMasks) {
+ return nil, false
+ }
+ return o.AmountBlindingMasks, true
+}
+
+// HasAmountBlindingMasks returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAmountBlindingMasks() bool {
+ if o != nil && !IsNil(o.AmountBlindingMasks) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmountBlindingMasks gets a reference to the given []string and assigns it to the AmountBlindingMasks field.
+func (o *TxGenerationContextModel) SetAmountBlindingMasks(v []string) {
+ o.AmountBlindingMasks = v
+}
+
+// GetPseudoOutsBlindedAssetIds returns the PseudoOutsBlindedAssetIds field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetPseudoOutsBlindedAssetIds() []string {
+ if o == nil || IsNil(o.PseudoOutsBlindedAssetIds) {
+ var ret []string
+ return ret
+ }
+ return o.PseudoOutsBlindedAssetIds
+}
+
+// GetPseudoOutsBlindedAssetIdsOk returns a tuple with the PseudoOutsBlindedAssetIds field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetPseudoOutsBlindedAssetIdsOk() ([]string, bool) {
+ if o == nil || IsNil(o.PseudoOutsBlindedAssetIds) {
+ return nil, false
+ }
+ return o.PseudoOutsBlindedAssetIds, true
+}
+
+// HasPseudoOutsBlindedAssetIds returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasPseudoOutsBlindedAssetIds() bool {
+ if o != nil && !IsNil(o.PseudoOutsBlindedAssetIds) {
+ return true
+ }
+
+ return false
+}
+
+// SetPseudoOutsBlindedAssetIds gets a reference to the given []string and assigns it to the PseudoOutsBlindedAssetIds field.
+func (o *TxGenerationContextModel) SetPseudoOutsBlindedAssetIds(v []string) {
+ o.PseudoOutsBlindedAssetIds = v
+}
+
+// GetPseudoOutsPlusRealOutBlindingMasks returns the PseudoOutsPlusRealOutBlindingMasks field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetPseudoOutsPlusRealOutBlindingMasks() []string {
+ if o == nil || IsNil(o.PseudoOutsPlusRealOutBlindingMasks) {
+ var ret []string
+ return ret
+ }
+ return o.PseudoOutsPlusRealOutBlindingMasks
+}
+
+// GetPseudoOutsPlusRealOutBlindingMasksOk returns a tuple with the PseudoOutsPlusRealOutBlindingMasks field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetPseudoOutsPlusRealOutBlindingMasksOk() ([]string, bool) {
+ if o == nil || IsNil(o.PseudoOutsPlusRealOutBlindingMasks) {
+ return nil, false
+ }
+ return o.PseudoOutsPlusRealOutBlindingMasks, true
+}
+
+// HasPseudoOutsPlusRealOutBlindingMasks returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasPseudoOutsPlusRealOutBlindingMasks() bool {
+ if o != nil && !IsNil(o.PseudoOutsPlusRealOutBlindingMasks) {
+ return true
+ }
+
+ return false
+}
+
+// SetPseudoOutsPlusRealOutBlindingMasks gets a reference to the given []string and assigns it to the PseudoOutsPlusRealOutBlindingMasks field.
+func (o *TxGenerationContextModel) SetPseudoOutsPlusRealOutBlindingMasks(v []string) {
+ o.PseudoOutsPlusRealOutBlindingMasks = v
+}
+
+// GetRealZcInsAssetIds returns the RealZcInsAssetIds field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetRealZcInsAssetIds() []string {
+ if o == nil || IsNil(o.RealZcInsAssetIds) {
+ var ret []string
+ return ret
+ }
+ return o.RealZcInsAssetIds
+}
+
+// GetRealZcInsAssetIdsOk returns a tuple with the RealZcInsAssetIds field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetRealZcInsAssetIdsOk() ([]string, bool) {
+ if o == nil || IsNil(o.RealZcInsAssetIds) {
+ return nil, false
+ }
+ return o.RealZcInsAssetIds, true
+}
+
+// HasRealZcInsAssetIds returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasRealZcInsAssetIds() bool {
+ if o != nil && !IsNil(o.RealZcInsAssetIds) {
+ return true
+ }
+
+ return false
+}
+
+// SetRealZcInsAssetIds gets a reference to the given []string and assigns it to the RealZcInsAssetIds field.
+func (o *TxGenerationContextModel) SetRealZcInsAssetIds(v []string) {
+ o.RealZcInsAssetIds = v
+}
+
+// GetZcInputAmounts returns the ZcInputAmounts field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetZcInputAmounts() []int32 {
+ if o == nil || IsNil(o.ZcInputAmounts) {
+ var ret []int32
+ return ret
+ }
+ return o.ZcInputAmounts
+}
+
+// GetZcInputAmountsOk returns a tuple with the ZcInputAmounts field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetZcInputAmountsOk() ([]int32, bool) {
+ if o == nil || IsNil(o.ZcInputAmounts) {
+ return nil, false
+ }
+ return o.ZcInputAmounts, true
+}
+
+// HasZcInputAmounts returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasZcInputAmounts() bool {
+ if o != nil && !IsNil(o.ZcInputAmounts) {
+ return true
+ }
+
+ return false
+}
+
+// SetZcInputAmounts gets a reference to the given []int32 and assigns it to the ZcInputAmounts field.
+func (o *TxGenerationContextModel) SetZcInputAmounts(v []int32) {
+ o.ZcInputAmounts = v
+}
+
+// GetPseudoOutAmountCommitmentsSum returns the PseudoOutAmountCommitmentsSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetPseudoOutAmountCommitmentsSum() string {
+ if o == nil || IsNil(o.PseudoOutAmountCommitmentsSum) {
+ var ret string
+ return ret
+ }
+ return *o.PseudoOutAmountCommitmentsSum
+}
+
+// GetPseudoOutAmountCommitmentsSumOk returns a tuple with the PseudoOutAmountCommitmentsSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetPseudoOutAmountCommitmentsSumOk() (*string, bool) {
+ if o == nil || IsNil(o.PseudoOutAmountCommitmentsSum) {
+ return nil, false
+ }
+ return o.PseudoOutAmountCommitmentsSum, true
+}
+
+// HasPseudoOutAmountCommitmentsSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasPseudoOutAmountCommitmentsSum() bool {
+ if o != nil && !IsNil(o.PseudoOutAmountCommitmentsSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetPseudoOutAmountCommitmentsSum gets a reference to the given string and assigns it to the PseudoOutAmountCommitmentsSum field.
+func (o *TxGenerationContextModel) SetPseudoOutAmountCommitmentsSum(v string) {
+ o.PseudoOutAmountCommitmentsSum = &v
+}
+
+// GetPseudoOutAmountBlindingMasksSum returns the PseudoOutAmountBlindingMasksSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetPseudoOutAmountBlindingMasksSum() string {
+ if o == nil || IsNil(o.PseudoOutAmountBlindingMasksSum) {
+ var ret string
+ return ret
+ }
+ return *o.PseudoOutAmountBlindingMasksSum
+}
+
+// GetPseudoOutAmountBlindingMasksSumOk returns a tuple with the PseudoOutAmountBlindingMasksSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetPseudoOutAmountBlindingMasksSumOk() (*string, bool) {
+ if o == nil || IsNil(o.PseudoOutAmountBlindingMasksSum) {
+ return nil, false
+ }
+ return o.PseudoOutAmountBlindingMasksSum, true
+}
+
+// HasPseudoOutAmountBlindingMasksSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasPseudoOutAmountBlindingMasksSum() bool {
+ if o != nil && !IsNil(o.PseudoOutAmountBlindingMasksSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetPseudoOutAmountBlindingMasksSum gets a reference to the given string and assigns it to the PseudoOutAmountBlindingMasksSum field.
+func (o *TxGenerationContextModel) SetPseudoOutAmountBlindingMasksSum(v string) {
+ o.PseudoOutAmountBlindingMasksSum = &v
+}
+
+// GetRealInAssetIdBlindingMaskXAmountSum returns the RealInAssetIdBlindingMaskXAmountSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetRealInAssetIdBlindingMaskXAmountSum() string {
+ if o == nil || IsNil(o.RealInAssetIdBlindingMaskXAmountSum) {
+ var ret string
+ return ret
+ }
+ return *o.RealInAssetIdBlindingMaskXAmountSum
+}
+
+// GetRealInAssetIdBlindingMaskXAmountSumOk returns a tuple with the RealInAssetIdBlindingMaskXAmountSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetRealInAssetIdBlindingMaskXAmountSumOk() (*string, bool) {
+ if o == nil || IsNil(o.RealInAssetIdBlindingMaskXAmountSum) {
+ return nil, false
+ }
+ return o.RealInAssetIdBlindingMaskXAmountSum, true
+}
+
+// HasRealInAssetIdBlindingMaskXAmountSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasRealInAssetIdBlindingMaskXAmountSum() bool {
+ if o != nil && !IsNil(o.RealInAssetIdBlindingMaskXAmountSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetRealInAssetIdBlindingMaskXAmountSum gets a reference to the given string and assigns it to the RealInAssetIdBlindingMaskXAmountSum field.
+func (o *TxGenerationContextModel) SetRealInAssetIdBlindingMaskXAmountSum(v string) {
+ o.RealInAssetIdBlindingMaskXAmountSum = &v
+}
+
+// GetAmountCommitmentsSum returns the AmountCommitmentsSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAmountCommitmentsSum() string {
+ if o == nil || IsNil(o.AmountCommitmentsSum) {
+ var ret string
+ return ret
+ }
+ return *o.AmountCommitmentsSum
+}
+
+// GetAmountCommitmentsSumOk returns a tuple with the AmountCommitmentsSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAmountCommitmentsSumOk() (*string, bool) {
+ if o == nil || IsNil(o.AmountCommitmentsSum) {
+ return nil, false
+ }
+ return o.AmountCommitmentsSum, true
+}
+
+// HasAmountCommitmentsSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAmountCommitmentsSum() bool {
+ if o != nil && !IsNil(o.AmountCommitmentsSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmountCommitmentsSum gets a reference to the given string and assigns it to the AmountCommitmentsSum field.
+func (o *TxGenerationContextModel) SetAmountCommitmentsSum(v string) {
+ o.AmountCommitmentsSum = &v
+}
+
+// GetAmountBlindingMasksSum returns the AmountBlindingMasksSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAmountBlindingMasksSum() string {
+ if o == nil || IsNil(o.AmountBlindingMasksSum) {
+ var ret string
+ return ret
+ }
+ return *o.AmountBlindingMasksSum
+}
+
+// GetAmountBlindingMasksSumOk returns a tuple with the AmountBlindingMasksSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAmountBlindingMasksSumOk() (*string, bool) {
+ if o == nil || IsNil(o.AmountBlindingMasksSum) {
+ return nil, false
+ }
+ return o.AmountBlindingMasksSum, true
+}
+
+// HasAmountBlindingMasksSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAmountBlindingMasksSum() bool {
+ if o != nil && !IsNil(o.AmountBlindingMasksSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetAmountBlindingMasksSum gets a reference to the given string and assigns it to the AmountBlindingMasksSum field.
+func (o *TxGenerationContextModel) SetAmountBlindingMasksSum(v string) {
+ o.AmountBlindingMasksSum = &v
+}
+
+// GetAssetIdBlindingMaskXAmountSum returns the AssetIdBlindingMaskXAmountSum field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAssetIdBlindingMaskXAmountSum() string {
+ if o == nil || IsNil(o.AssetIdBlindingMaskXAmountSum) {
+ var ret string
+ return ret
+ }
+ return *o.AssetIdBlindingMaskXAmountSum
+}
+
+// GetAssetIdBlindingMaskXAmountSumOk returns a tuple with the AssetIdBlindingMaskXAmountSum field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAssetIdBlindingMaskXAmountSumOk() (*string, bool) {
+ if o == nil || IsNil(o.AssetIdBlindingMaskXAmountSum) {
+ return nil, false
+ }
+ return o.AssetIdBlindingMaskXAmountSum, true
+}
+
+// HasAssetIdBlindingMaskXAmountSum returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAssetIdBlindingMaskXAmountSum() bool {
+ if o != nil && !IsNil(o.AssetIdBlindingMaskXAmountSum) {
+ return true
+ }
+
+ return false
+}
+
+// SetAssetIdBlindingMaskXAmountSum gets a reference to the given string and assigns it to the AssetIdBlindingMaskXAmountSum field.
+func (o *TxGenerationContextModel) SetAssetIdBlindingMaskXAmountSum(v string) {
+ o.AssetIdBlindingMaskXAmountSum = &v
+}
+
+// GetAoAssetId returns the AoAssetId field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAoAssetId() string {
+ if o == nil || IsNil(o.AoAssetId) {
+ var ret string
+ return ret
+ }
+ return *o.AoAssetId
+}
+
+// GetAoAssetIdOk returns a tuple with the AoAssetId field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAoAssetIdOk() (*string, bool) {
+ if o == nil || IsNil(o.AoAssetId) {
+ return nil, false
+ }
+ return o.AoAssetId, true
+}
+
+// HasAoAssetId returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAoAssetId() bool {
+ if o != nil && !IsNil(o.AoAssetId) {
+ return true
+ }
+
+ return false
+}
+
+// SetAoAssetId gets a reference to the given string and assigns it to the AoAssetId field.
+func (o *TxGenerationContextModel) SetAoAssetId(v string) {
+ o.AoAssetId = &v
+}
+
+// GetAoAssetIdPt returns the AoAssetIdPt field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAoAssetIdPt() string {
+ if o == nil || IsNil(o.AoAssetIdPt) {
+ var ret string
+ return ret
+ }
+ return *o.AoAssetIdPt
+}
+
+// GetAoAssetIdPtOk returns a tuple with the AoAssetIdPt field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAoAssetIdPtOk() (*string, bool) {
+ if o == nil || IsNil(o.AoAssetIdPt) {
+ return nil, false
+ }
+ return o.AoAssetIdPt, true
+}
+
+// HasAoAssetIdPt returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAoAssetIdPt() bool {
+ if o != nil && !IsNil(o.AoAssetIdPt) {
+ return true
+ }
+
+ return false
+}
+
+// SetAoAssetIdPt gets a reference to the given string and assigns it to the AoAssetIdPt field.
+func (o *TxGenerationContextModel) SetAoAssetIdPt(v string) {
+ o.AoAssetIdPt = &v
+}
+
+// GetAoAmountCommitment returns the AoAmountCommitment field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAoAmountCommitment() string {
+ if o == nil || IsNil(o.AoAmountCommitment) {
+ var ret string
+ return ret
+ }
+ return *o.AoAmountCommitment
+}
+
+// GetAoAmountCommitmentOk returns a tuple with the AoAmountCommitment field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAoAmountCommitmentOk() (*string, bool) {
+ if o == nil || IsNil(o.AoAmountCommitment) {
+ return nil, false
+ }
+ return o.AoAmountCommitment, true
+}
+
+// HasAoAmountCommitment returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAoAmountCommitment() bool {
+ if o != nil && !IsNil(o.AoAmountCommitment) {
+ return true
+ }
+
+ return false
+}
+
+// SetAoAmountCommitment gets a reference to the given string and assigns it to the AoAmountCommitment field.
+func (o *TxGenerationContextModel) SetAoAmountCommitment(v string) {
+ o.AoAmountCommitment = &v
+}
+
+// GetAoAmountBlindingMask returns the AoAmountBlindingMask field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAoAmountBlindingMask() string {
+ if o == nil || IsNil(o.AoAmountBlindingMask) {
+ var ret string
+ return ret
+ }
+ return *o.AoAmountBlindingMask
+}
+
+// GetAoAmountBlindingMaskOk returns a tuple with the AoAmountBlindingMask field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAoAmountBlindingMaskOk() (*string, bool) {
+ if o == nil || IsNil(o.AoAmountBlindingMask) {
+ return nil, false
+ }
+ return o.AoAmountBlindingMask, true
+}
+
+// HasAoAmountBlindingMask returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAoAmountBlindingMask() bool {
+ if o != nil && !IsNil(o.AoAmountBlindingMask) {
+ return true
+ }
+
+ return false
+}
+
+// SetAoAmountBlindingMask gets a reference to the given string and assigns it to the AoAmountBlindingMask field.
+func (o *TxGenerationContextModel) SetAoAmountBlindingMask(v string) {
+ o.AoAmountBlindingMask = &v
+}
+
+// GetAoCommitmentInOutputs returns the AoCommitmentInOutputs field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetAoCommitmentInOutputs() bool {
+ if o == nil || IsNil(o.AoCommitmentInOutputs) {
+ var ret bool
+ return ret
+ }
+ return *o.AoCommitmentInOutputs
+}
+
+// GetAoCommitmentInOutputsOk returns a tuple with the AoCommitmentInOutputs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetAoCommitmentInOutputsOk() (*bool, bool) {
+ if o == nil || IsNil(o.AoCommitmentInOutputs) {
+ return nil, false
+ }
+ return o.AoCommitmentInOutputs, true
+}
+
+// HasAoCommitmentInOutputs returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasAoCommitmentInOutputs() bool {
+ if o != nil && !IsNil(o.AoCommitmentInOutputs) {
+ return true
+ }
+
+ return false
+}
+
+// SetAoCommitmentInOutputs gets a reference to the given bool and assigns it to the AoCommitmentInOutputs field.
+func (o *TxGenerationContextModel) SetAoCommitmentInOutputs(v bool) {
+ o.AoCommitmentInOutputs = &v
+}
+
+// GetTxKeyPub returns the TxKeyPub field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetTxKeyPub() string {
+ if o == nil || IsNil(o.TxKeyPub) {
+ var ret string
+ return ret
+ }
+ return *o.TxKeyPub
+}
+
+// GetTxKeyPubOk returns a tuple with the TxKeyPub field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetTxKeyPubOk() (*string, bool) {
+ if o == nil || IsNil(o.TxKeyPub) {
+ return nil, false
+ }
+ return o.TxKeyPub, true
+}
+
+// HasTxKeyPub returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasTxKeyPub() bool {
+ if o != nil && !IsNil(o.TxKeyPub) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxKeyPub gets a reference to the given string and assigns it to the TxKeyPub field.
+func (o *TxGenerationContextModel) SetTxKeyPub(v string) {
+ o.TxKeyPub = &v
+}
+
+// GetTxKeySec returns the TxKeySec field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetTxKeySec() string {
+ if o == nil || IsNil(o.TxKeySec) {
+ var ret string
+ return ret
+ }
+ return *o.TxKeySec
+}
+
+// GetTxKeySecOk returns a tuple with the TxKeySec field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetTxKeySecOk() (*string, bool) {
+ if o == nil || IsNil(o.TxKeySec) {
+ return nil, false
+ }
+ return o.TxKeySec, true
+}
+
+// HasTxKeySec returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasTxKeySec() bool {
+ if o != nil && !IsNil(o.TxKeySec) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxKeySec gets a reference to the given string and assigns it to the TxKeySec field.
+func (o *TxGenerationContextModel) SetTxKeySec(v string) {
+ o.TxKeySec = &v
+}
+
+// GetTxPubKeyP returns the TxPubKeyP field value if set, zero value otherwise.
+func (o *TxGenerationContextModel) GetTxPubKeyP() string {
+ if o == nil || IsNil(o.TxPubKeyP) {
+ var ret string
+ return ret
+ }
+ return *o.TxPubKeyP
+}
+
+// GetTxPubKeyPOk returns a tuple with the TxPubKeyP field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxGenerationContextModel) GetTxPubKeyPOk() (*string, bool) {
+ if o == nil || IsNil(o.TxPubKeyP) {
+ return nil, false
+ }
+ return o.TxPubKeyP, true
+}
+
+// HasTxPubKeyP returns a boolean if a field has been set.
+func (o *TxGenerationContextModel) HasTxPubKeyP() bool {
+ if o != nil && !IsNil(o.TxPubKeyP) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPubKeyP gets a reference to the given string and assigns it to the TxPubKeyP field.
+func (o *TxGenerationContextModel) SetTxPubKeyP(v string) {
+ o.TxPubKeyP = &v
+}
+
+func (o TxGenerationContextModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TxGenerationContextModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.AssetIds) {
+ toSerialize["asset_ids"] = o.AssetIds
+ }
+ if !IsNil(o.BlindedAssetIds) {
+ toSerialize["blinded_asset_ids"] = o.BlindedAssetIds
+ }
+ if !IsNil(o.AmountCommitments) {
+ toSerialize["amount_commitments"] = o.AmountCommitments
+ }
+ if !IsNil(o.AssetIdBlindingMasks) {
+ toSerialize["asset_id_blinding_masks"] = o.AssetIdBlindingMasks
+ }
+ if !IsNil(o.Amounts) {
+ toSerialize["amounts"] = o.Amounts
+ }
+ if !IsNil(o.AmountBlindingMasks) {
+ toSerialize["amount_blinding_masks"] = o.AmountBlindingMasks
+ }
+ if !IsNil(o.PseudoOutsBlindedAssetIds) {
+ toSerialize["pseudo_outs_blinded_asset_ids"] = o.PseudoOutsBlindedAssetIds
+ }
+ if !IsNil(o.PseudoOutsPlusRealOutBlindingMasks) {
+ toSerialize["pseudo_outs_plus_real_out_blinding_masks"] = o.PseudoOutsPlusRealOutBlindingMasks
+ }
+ if !IsNil(o.RealZcInsAssetIds) {
+ toSerialize["real_zc_ins_asset_ids"] = o.RealZcInsAssetIds
+ }
+ if !IsNil(o.ZcInputAmounts) {
+ toSerialize["zc_input_amounts"] = o.ZcInputAmounts
+ }
+ if !IsNil(o.PseudoOutAmountCommitmentsSum) {
+ toSerialize["pseudo_out_amount_commitments_sum"] = o.PseudoOutAmountCommitmentsSum
+ }
+ if !IsNil(o.PseudoOutAmountBlindingMasksSum) {
+ toSerialize["pseudo_out_amount_blinding_masks_sum"] = o.PseudoOutAmountBlindingMasksSum
+ }
+ if !IsNil(o.RealInAssetIdBlindingMaskXAmountSum) {
+ toSerialize["real_in_asset_id_blinding_mask_x_amount_sum"] = o.RealInAssetIdBlindingMaskXAmountSum
+ }
+ if !IsNil(o.AmountCommitmentsSum) {
+ toSerialize["amount_commitments_sum"] = o.AmountCommitmentsSum
+ }
+ if !IsNil(o.AmountBlindingMasksSum) {
+ toSerialize["amount_blinding_masks_sum"] = o.AmountBlindingMasksSum
+ }
+ if !IsNil(o.AssetIdBlindingMaskXAmountSum) {
+ toSerialize["asset_id_blinding_mask_x_amount_sum"] = o.AssetIdBlindingMaskXAmountSum
+ }
+ if !IsNil(o.AoAssetId) {
+ toSerialize["ao_asset_id"] = o.AoAssetId
+ }
+ if !IsNil(o.AoAssetIdPt) {
+ toSerialize["ao_asset_id_pt"] = o.AoAssetIdPt
+ }
+ if !IsNil(o.AoAmountCommitment) {
+ toSerialize["ao_amount_commitment"] = o.AoAmountCommitment
+ }
+ if !IsNil(o.AoAmountBlindingMask) {
+ toSerialize["ao_amount_blinding_mask"] = o.AoAmountBlindingMask
+ }
+ if !IsNil(o.AoCommitmentInOutputs) {
+ toSerialize["ao_commitment_in_outputs"] = o.AoCommitmentInOutputs
+ }
+ if !IsNil(o.TxKeyPub) {
+ toSerialize["tx_key_pub"] = o.TxKeyPub
+ }
+ if !IsNil(o.TxKeySec) {
+ toSerialize["tx_key_sec"] = o.TxKeySec
+ }
+ if !IsNil(o.TxPubKeyP) {
+ toSerialize["tx_pub_key_p"] = o.TxPubKeyP
+ }
+ return toSerialize, nil
+}
+
+type NullableTxGenerationContextModel struct {
+ value *TxGenerationContextModel
+ isSet bool
+}
+
+func (v NullableTxGenerationContextModel) Get() *TxGenerationContextModel {
+ return v.value
+}
+
+func (v *NullableTxGenerationContextModel) Set(val *TxGenerationContextModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTxGenerationContextModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTxGenerationContextModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTxGenerationContextModel(val *TxGenerationContextModel) *NullableTxGenerationContextModel {
+ return &NullableTxGenerationContextModel{value: val, isSet: true}
+}
+
+func (v NullableTxGenerationContextModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTxGenerationContextModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_tx_pool_performance_model.go b/utils/sdk/client/go/model_tx_pool_performance_model.go
new file mode 100644
index 00000000..445df184
--- /dev/null
+++ b/utils/sdk/client/go/model_tx_pool_performance_model.go
@@ -0,0 +1,486 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TxPoolPerformanceModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TxPoolPerformanceModel{}
+
+// TxPoolPerformanceModel struct for TxPoolPerformanceModel
+type TxPoolPerformanceModel struct {
+ TxProcessingTime *int32 `json:"tx_processing_time,omitempty"`
+ CheckInputsTypesSupportedTime *int32 `json:"check_inputs_types_supported_time,omitempty"`
+ ExpirationValidateTime *int32 `json:"expiration_validate_time,omitempty"`
+ ValidateAmountTime *int32 `json:"validate_amount_time,omitempty"`
+ ValidateAliasTime *int32 `json:"validate_alias_time,omitempty"`
+ CheckKeyimagesWsMsTime *int32 `json:"check_keyimages_ws_ms_time,omitempty"`
+ CheckInputsTime *int32 `json:"check_inputs_time,omitempty"`
+ BeginTxTime *int32 `json:"begin_tx_time,omitempty"`
+ UpdateDbTime *int32 `json:"update_db_time,omitempty"`
+ DbCommitTime *int32 `json:"db_commit_time,omitempty"`
+ CheckPostHf4Balance *int32 `json:"check_post_hf4_balance,omitempty"`
+}
+
+// NewTxPoolPerformanceModel instantiates a new TxPoolPerformanceModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTxPoolPerformanceModel() *TxPoolPerformanceModel {
+ this := TxPoolPerformanceModel{}
+ return &this
+}
+
+// NewTxPoolPerformanceModelWithDefaults instantiates a new TxPoolPerformanceModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTxPoolPerformanceModelWithDefaults() *TxPoolPerformanceModel {
+ this := TxPoolPerformanceModel{}
+ return &this
+}
+
+// GetTxProcessingTime returns the TxProcessingTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetTxProcessingTime() int32 {
+ if o == nil || IsNil(o.TxProcessingTime) {
+ var ret int32
+ return ret
+ }
+ return *o.TxProcessingTime
+}
+
+// GetTxProcessingTimeOk returns a tuple with the TxProcessingTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetTxProcessingTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxProcessingTime) {
+ return nil, false
+ }
+ return o.TxProcessingTime, true
+}
+
+// HasTxProcessingTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasTxProcessingTime() bool {
+ if o != nil && !IsNil(o.TxProcessingTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxProcessingTime gets a reference to the given int32 and assigns it to the TxProcessingTime field.
+func (o *TxPoolPerformanceModel) SetTxProcessingTime(v int32) {
+ o.TxProcessingTime = &v
+}
+
+// GetCheckInputsTypesSupportedTime returns the CheckInputsTypesSupportedTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetCheckInputsTypesSupportedTime() int32 {
+ if o == nil || IsNil(o.CheckInputsTypesSupportedTime) {
+ var ret int32
+ return ret
+ }
+ return *o.CheckInputsTypesSupportedTime
+}
+
+// GetCheckInputsTypesSupportedTimeOk returns a tuple with the CheckInputsTypesSupportedTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetCheckInputsTypesSupportedTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.CheckInputsTypesSupportedTime) {
+ return nil, false
+ }
+ return o.CheckInputsTypesSupportedTime, true
+}
+
+// HasCheckInputsTypesSupportedTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasCheckInputsTypesSupportedTime() bool {
+ if o != nil && !IsNil(o.CheckInputsTypesSupportedTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetCheckInputsTypesSupportedTime gets a reference to the given int32 and assigns it to the CheckInputsTypesSupportedTime field.
+func (o *TxPoolPerformanceModel) SetCheckInputsTypesSupportedTime(v int32) {
+ o.CheckInputsTypesSupportedTime = &v
+}
+
+// GetExpirationValidateTime returns the ExpirationValidateTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetExpirationValidateTime() int32 {
+ if o == nil || IsNil(o.ExpirationValidateTime) {
+ var ret int32
+ return ret
+ }
+ return *o.ExpirationValidateTime
+}
+
+// GetExpirationValidateTimeOk returns a tuple with the ExpirationValidateTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetExpirationValidateTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.ExpirationValidateTime) {
+ return nil, false
+ }
+ return o.ExpirationValidateTime, true
+}
+
+// HasExpirationValidateTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasExpirationValidateTime() bool {
+ if o != nil && !IsNil(o.ExpirationValidateTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetExpirationValidateTime gets a reference to the given int32 and assigns it to the ExpirationValidateTime field.
+func (o *TxPoolPerformanceModel) SetExpirationValidateTime(v int32) {
+ o.ExpirationValidateTime = &v
+}
+
+// GetValidateAmountTime returns the ValidateAmountTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetValidateAmountTime() int32 {
+ if o == nil || IsNil(o.ValidateAmountTime) {
+ var ret int32
+ return ret
+ }
+ return *o.ValidateAmountTime
+}
+
+// GetValidateAmountTimeOk returns a tuple with the ValidateAmountTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetValidateAmountTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.ValidateAmountTime) {
+ return nil, false
+ }
+ return o.ValidateAmountTime, true
+}
+
+// HasValidateAmountTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasValidateAmountTime() bool {
+ if o != nil && !IsNil(o.ValidateAmountTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetValidateAmountTime gets a reference to the given int32 and assigns it to the ValidateAmountTime field.
+func (o *TxPoolPerformanceModel) SetValidateAmountTime(v int32) {
+ o.ValidateAmountTime = &v
+}
+
+// GetValidateAliasTime returns the ValidateAliasTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetValidateAliasTime() int32 {
+ if o == nil || IsNil(o.ValidateAliasTime) {
+ var ret int32
+ return ret
+ }
+ return *o.ValidateAliasTime
+}
+
+// GetValidateAliasTimeOk returns a tuple with the ValidateAliasTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetValidateAliasTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.ValidateAliasTime) {
+ return nil, false
+ }
+ return o.ValidateAliasTime, true
+}
+
+// HasValidateAliasTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasValidateAliasTime() bool {
+ if o != nil && !IsNil(o.ValidateAliasTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetValidateAliasTime gets a reference to the given int32 and assigns it to the ValidateAliasTime field.
+func (o *TxPoolPerformanceModel) SetValidateAliasTime(v int32) {
+ o.ValidateAliasTime = &v
+}
+
+// GetCheckKeyimagesWsMsTime returns the CheckKeyimagesWsMsTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetCheckKeyimagesWsMsTime() int32 {
+ if o == nil || IsNil(o.CheckKeyimagesWsMsTime) {
+ var ret int32
+ return ret
+ }
+ return *o.CheckKeyimagesWsMsTime
+}
+
+// GetCheckKeyimagesWsMsTimeOk returns a tuple with the CheckKeyimagesWsMsTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetCheckKeyimagesWsMsTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.CheckKeyimagesWsMsTime) {
+ return nil, false
+ }
+ return o.CheckKeyimagesWsMsTime, true
+}
+
+// HasCheckKeyimagesWsMsTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasCheckKeyimagesWsMsTime() bool {
+ if o != nil && !IsNil(o.CheckKeyimagesWsMsTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetCheckKeyimagesWsMsTime gets a reference to the given int32 and assigns it to the CheckKeyimagesWsMsTime field.
+func (o *TxPoolPerformanceModel) SetCheckKeyimagesWsMsTime(v int32) {
+ o.CheckKeyimagesWsMsTime = &v
+}
+
+// GetCheckInputsTime returns the CheckInputsTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetCheckInputsTime() int32 {
+ if o == nil || IsNil(o.CheckInputsTime) {
+ var ret int32
+ return ret
+ }
+ return *o.CheckInputsTime
+}
+
+// GetCheckInputsTimeOk returns a tuple with the CheckInputsTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetCheckInputsTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.CheckInputsTime) {
+ return nil, false
+ }
+ return o.CheckInputsTime, true
+}
+
+// HasCheckInputsTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasCheckInputsTime() bool {
+ if o != nil && !IsNil(o.CheckInputsTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetCheckInputsTime gets a reference to the given int32 and assigns it to the CheckInputsTime field.
+func (o *TxPoolPerformanceModel) SetCheckInputsTime(v int32) {
+ o.CheckInputsTime = &v
+}
+
+// GetBeginTxTime returns the BeginTxTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetBeginTxTime() int32 {
+ if o == nil || IsNil(o.BeginTxTime) {
+ var ret int32
+ return ret
+ }
+ return *o.BeginTxTime
+}
+
+// GetBeginTxTimeOk returns a tuple with the BeginTxTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetBeginTxTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.BeginTxTime) {
+ return nil, false
+ }
+ return o.BeginTxTime, true
+}
+
+// HasBeginTxTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasBeginTxTime() bool {
+ if o != nil && !IsNil(o.BeginTxTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetBeginTxTime gets a reference to the given int32 and assigns it to the BeginTxTime field.
+func (o *TxPoolPerformanceModel) SetBeginTxTime(v int32) {
+ o.BeginTxTime = &v
+}
+
+// GetUpdateDbTime returns the UpdateDbTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetUpdateDbTime() int32 {
+ if o == nil || IsNil(o.UpdateDbTime) {
+ var ret int32
+ return ret
+ }
+ return *o.UpdateDbTime
+}
+
+// GetUpdateDbTimeOk returns a tuple with the UpdateDbTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetUpdateDbTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.UpdateDbTime) {
+ return nil, false
+ }
+ return o.UpdateDbTime, true
+}
+
+// HasUpdateDbTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasUpdateDbTime() bool {
+ if o != nil && !IsNil(o.UpdateDbTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetUpdateDbTime gets a reference to the given int32 and assigns it to the UpdateDbTime field.
+func (o *TxPoolPerformanceModel) SetUpdateDbTime(v int32) {
+ o.UpdateDbTime = &v
+}
+
+// GetDbCommitTime returns the DbCommitTime field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetDbCommitTime() int32 {
+ if o == nil || IsNil(o.DbCommitTime) {
+ var ret int32
+ return ret
+ }
+ return *o.DbCommitTime
+}
+
+// GetDbCommitTimeOk returns a tuple with the DbCommitTime field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetDbCommitTimeOk() (*int32, bool) {
+ if o == nil || IsNil(o.DbCommitTime) {
+ return nil, false
+ }
+ return o.DbCommitTime, true
+}
+
+// HasDbCommitTime returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasDbCommitTime() bool {
+ if o != nil && !IsNil(o.DbCommitTime) {
+ return true
+ }
+
+ return false
+}
+
+// SetDbCommitTime gets a reference to the given int32 and assigns it to the DbCommitTime field.
+func (o *TxPoolPerformanceModel) SetDbCommitTime(v int32) {
+ o.DbCommitTime = &v
+}
+
+// GetCheckPostHf4Balance returns the CheckPostHf4Balance field value if set, zero value otherwise.
+func (o *TxPoolPerformanceModel) GetCheckPostHf4Balance() int32 {
+ if o == nil || IsNil(o.CheckPostHf4Balance) {
+ var ret int32
+ return ret
+ }
+ return *o.CheckPostHf4Balance
+}
+
+// GetCheckPostHf4BalanceOk returns a tuple with the CheckPostHf4Balance field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxPoolPerformanceModel) GetCheckPostHf4BalanceOk() (*int32, bool) {
+ if o == nil || IsNil(o.CheckPostHf4Balance) {
+ return nil, false
+ }
+ return o.CheckPostHf4Balance, true
+}
+
+// HasCheckPostHf4Balance returns a boolean if a field has been set.
+func (o *TxPoolPerformanceModel) HasCheckPostHf4Balance() bool {
+ if o != nil && !IsNil(o.CheckPostHf4Balance) {
+ return true
+ }
+
+ return false
+}
+
+// SetCheckPostHf4Balance gets a reference to the given int32 and assigns it to the CheckPostHf4Balance field.
+func (o *TxPoolPerformanceModel) SetCheckPostHf4Balance(v int32) {
+ o.CheckPostHf4Balance = &v
+}
+
+func (o TxPoolPerformanceModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TxPoolPerformanceModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.TxProcessingTime) {
+ toSerialize["tx_processing_time"] = o.TxProcessingTime
+ }
+ if !IsNil(o.CheckInputsTypesSupportedTime) {
+ toSerialize["check_inputs_types_supported_time"] = o.CheckInputsTypesSupportedTime
+ }
+ if !IsNil(o.ExpirationValidateTime) {
+ toSerialize["expiration_validate_time"] = o.ExpirationValidateTime
+ }
+ if !IsNil(o.ValidateAmountTime) {
+ toSerialize["validate_amount_time"] = o.ValidateAmountTime
+ }
+ if !IsNil(o.ValidateAliasTime) {
+ toSerialize["validate_alias_time"] = o.ValidateAliasTime
+ }
+ if !IsNil(o.CheckKeyimagesWsMsTime) {
+ toSerialize["check_keyimages_ws_ms_time"] = o.CheckKeyimagesWsMsTime
+ }
+ if !IsNil(o.CheckInputsTime) {
+ toSerialize["check_inputs_time"] = o.CheckInputsTime
+ }
+ if !IsNil(o.BeginTxTime) {
+ toSerialize["begin_tx_time"] = o.BeginTxTime
+ }
+ if !IsNil(o.UpdateDbTime) {
+ toSerialize["update_db_time"] = o.UpdateDbTime
+ }
+ if !IsNil(o.DbCommitTime) {
+ toSerialize["db_commit_time"] = o.DbCommitTime
+ }
+ if !IsNil(o.CheckPostHf4Balance) {
+ toSerialize["check_post_hf4_balance"] = o.CheckPostHf4Balance
+ }
+ return toSerialize, nil
+}
+
+type NullableTxPoolPerformanceModel struct {
+ value *TxPoolPerformanceModel
+ isSet bool
+}
+
+func (v NullableTxPoolPerformanceModel) Get() *TxPoolPerformanceModel {
+ return v.value
+}
+
+func (v *NullableTxPoolPerformanceModel) Set(val *TxPoolPerformanceModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTxPoolPerformanceModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTxPoolPerformanceModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTxPoolPerformanceModel(val *TxPoolPerformanceModel) *NullableTxPoolPerformanceModel {
+ return &NullableTxPoolPerformanceModel{value: val, isSet: true}
+}
+
+func (v NullableTxPoolPerformanceModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTxPoolPerformanceModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_tx_processing_performance_model.go b/utils/sdk/client/go/model_tx_processing_performance_model.go
new file mode 100644
index 00000000..bd0d8200
--- /dev/null
+++ b/utils/sdk/client/go/model_tx_processing_performance_model.go
@@ -0,0 +1,990 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the TxProcessingPerformanceModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &TxProcessingPerformanceModel{}
+
+// TxProcessingPerformanceModel struct for TxProcessingPerformanceModel
+type TxProcessingPerformanceModel struct {
+ TxCheckInputs *int32 `json:"tx_check_inputs,omitempty"`
+ TxAddOneTx *int32 `json:"tx_add_one_tx,omitempty"`
+ TxProcessExtra *int32 `json:"tx_process_extra,omitempty"`
+ TxProcessAttachment *int32 `json:"tx_process_attachment,omitempty"`
+ TxProcessInputs *int32 `json:"tx_process_inputs,omitempty"`
+ TxPushGlobalIndex *int32 `json:"tx_push_global_index,omitempty"`
+ TxCheckExist *int32 `json:"tx_check_exist,omitempty"`
+ TxPrintLog *int32 `json:"tx_print_log,omitempty"`
+ TxPrapareAppend *int32 `json:"tx_prapare_append,omitempty"`
+ TxAppend *int32 `json:"tx_append,omitempty"`
+ TxAppendRlWait *int32 `json:"tx_append_rl_wait,omitempty"`
+ TxAppendIsExpired *int32 `json:"tx_append_is_expired,omitempty"`
+ TxStoreDb *int32 `json:"tx_store_db,omitempty"`
+ TxCheckInputsPrefixHash *int32 `json:"tx_check_inputs_prefix_hash,omitempty"`
+ TxCheckInputsAttachmentCheck *int32 `json:"tx_check_inputs_attachment_check,omitempty"`
+ TxCheckInputsLoop *int32 `json:"tx_check_inputs_loop,omitempty"`
+ TxCheckInputsLoopKimageCheck *int32 `json:"tx_check_inputs_loop_kimage_check,omitempty"`
+ TxCheckInputsLoopChInValSig *int32 `json:"tx_check_inputs_loop_ch_in_val_sig,omitempty"`
+ TxCheckInputsLoopScanOutputkeysGetItemSize *int32 `json:"tx_check_inputs_loop_scan_outputkeys_get_item_size,omitempty"`
+ TxCheckInputsLoopScanOutputkeysRelativeToAbsolute *int32 `json:"tx_check_inputs_loop_scan_outputkeys_relative_to_absolute,omitempty"`
+ TxCheckInputsLoopScanOutputkeysLoop *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop,omitempty"`
+ TxCheckInputsLoopScanOutputkeysLoopGetSubitem *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop_get_subitem,omitempty"`
+ TxCheckInputsLoopScanOutputkeysLoopFindTx *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop_find_tx,omitempty"`
+ TxCheckInputsLoopScanOutputkeysLoopHandleOutput *int32 `json:"tx_check_inputs_loop_scan_outputkeys_loop_handle_output,omitempty"`
+ TxMixinCount *int32 `json:"tx_mixin_count,omitempty"`
+}
+
+// NewTxProcessingPerformanceModel instantiates a new TxProcessingPerformanceModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewTxProcessingPerformanceModel() *TxProcessingPerformanceModel {
+ this := TxProcessingPerformanceModel{}
+ return &this
+}
+
+// NewTxProcessingPerformanceModelWithDefaults instantiates a new TxProcessingPerformanceModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewTxProcessingPerformanceModelWithDefaults() *TxProcessingPerformanceModel {
+ this := TxProcessingPerformanceModel{}
+ return &this
+}
+
+// GetTxCheckInputs returns the TxCheckInputs field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputs() int32 {
+ if o == nil || IsNil(o.TxCheckInputs) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputs
+}
+
+// GetTxCheckInputsOk returns a tuple with the TxCheckInputs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputs) {
+ return nil, false
+ }
+ return o.TxCheckInputs, true
+}
+
+// HasTxCheckInputs returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputs() bool {
+ if o != nil && !IsNil(o.TxCheckInputs) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputs gets a reference to the given int32 and assigns it to the TxCheckInputs field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputs(v int32) {
+ o.TxCheckInputs = &v
+}
+
+// GetTxAddOneTx returns the TxAddOneTx field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxAddOneTx() int32 {
+ if o == nil || IsNil(o.TxAddOneTx) {
+ var ret int32
+ return ret
+ }
+ return *o.TxAddOneTx
+}
+
+// GetTxAddOneTxOk returns a tuple with the TxAddOneTx field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxAddOneTxOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxAddOneTx) {
+ return nil, false
+ }
+ return o.TxAddOneTx, true
+}
+
+// HasTxAddOneTx returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxAddOneTx() bool {
+ if o != nil && !IsNil(o.TxAddOneTx) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxAddOneTx gets a reference to the given int32 and assigns it to the TxAddOneTx field.
+func (o *TxProcessingPerformanceModel) SetTxAddOneTx(v int32) {
+ o.TxAddOneTx = &v
+}
+
+// GetTxProcessExtra returns the TxProcessExtra field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxProcessExtra() int32 {
+ if o == nil || IsNil(o.TxProcessExtra) {
+ var ret int32
+ return ret
+ }
+ return *o.TxProcessExtra
+}
+
+// GetTxProcessExtraOk returns a tuple with the TxProcessExtra field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxProcessExtraOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxProcessExtra) {
+ return nil, false
+ }
+ return o.TxProcessExtra, true
+}
+
+// HasTxProcessExtra returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxProcessExtra() bool {
+ if o != nil && !IsNil(o.TxProcessExtra) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxProcessExtra gets a reference to the given int32 and assigns it to the TxProcessExtra field.
+func (o *TxProcessingPerformanceModel) SetTxProcessExtra(v int32) {
+ o.TxProcessExtra = &v
+}
+
+// GetTxProcessAttachment returns the TxProcessAttachment field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxProcessAttachment() int32 {
+ if o == nil || IsNil(o.TxProcessAttachment) {
+ var ret int32
+ return ret
+ }
+ return *o.TxProcessAttachment
+}
+
+// GetTxProcessAttachmentOk returns a tuple with the TxProcessAttachment field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxProcessAttachmentOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxProcessAttachment) {
+ return nil, false
+ }
+ return o.TxProcessAttachment, true
+}
+
+// HasTxProcessAttachment returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxProcessAttachment() bool {
+ if o != nil && !IsNil(o.TxProcessAttachment) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxProcessAttachment gets a reference to the given int32 and assigns it to the TxProcessAttachment field.
+func (o *TxProcessingPerformanceModel) SetTxProcessAttachment(v int32) {
+ o.TxProcessAttachment = &v
+}
+
+// GetTxProcessInputs returns the TxProcessInputs field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxProcessInputs() int32 {
+ if o == nil || IsNil(o.TxProcessInputs) {
+ var ret int32
+ return ret
+ }
+ return *o.TxProcessInputs
+}
+
+// GetTxProcessInputsOk returns a tuple with the TxProcessInputs field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxProcessInputsOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxProcessInputs) {
+ return nil, false
+ }
+ return o.TxProcessInputs, true
+}
+
+// HasTxProcessInputs returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxProcessInputs() bool {
+ if o != nil && !IsNil(o.TxProcessInputs) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxProcessInputs gets a reference to the given int32 and assigns it to the TxProcessInputs field.
+func (o *TxProcessingPerformanceModel) SetTxProcessInputs(v int32) {
+ o.TxProcessInputs = &v
+}
+
+// GetTxPushGlobalIndex returns the TxPushGlobalIndex field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxPushGlobalIndex() int32 {
+ if o == nil || IsNil(o.TxPushGlobalIndex) {
+ var ret int32
+ return ret
+ }
+ return *o.TxPushGlobalIndex
+}
+
+// GetTxPushGlobalIndexOk returns a tuple with the TxPushGlobalIndex field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxPushGlobalIndexOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxPushGlobalIndex) {
+ return nil, false
+ }
+ return o.TxPushGlobalIndex, true
+}
+
+// HasTxPushGlobalIndex returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxPushGlobalIndex() bool {
+ if o != nil && !IsNil(o.TxPushGlobalIndex) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPushGlobalIndex gets a reference to the given int32 and assigns it to the TxPushGlobalIndex field.
+func (o *TxProcessingPerformanceModel) SetTxPushGlobalIndex(v int32) {
+ o.TxPushGlobalIndex = &v
+}
+
+// GetTxCheckExist returns the TxCheckExist field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckExist() int32 {
+ if o == nil || IsNil(o.TxCheckExist) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckExist
+}
+
+// GetTxCheckExistOk returns a tuple with the TxCheckExist field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckExistOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckExist) {
+ return nil, false
+ }
+ return o.TxCheckExist, true
+}
+
+// HasTxCheckExist returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckExist() bool {
+ if o != nil && !IsNil(o.TxCheckExist) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckExist gets a reference to the given int32 and assigns it to the TxCheckExist field.
+func (o *TxProcessingPerformanceModel) SetTxCheckExist(v int32) {
+ o.TxCheckExist = &v
+}
+
+// GetTxPrintLog returns the TxPrintLog field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxPrintLog() int32 {
+ if o == nil || IsNil(o.TxPrintLog) {
+ var ret int32
+ return ret
+ }
+ return *o.TxPrintLog
+}
+
+// GetTxPrintLogOk returns a tuple with the TxPrintLog field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxPrintLogOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxPrintLog) {
+ return nil, false
+ }
+ return o.TxPrintLog, true
+}
+
+// HasTxPrintLog returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxPrintLog() bool {
+ if o != nil && !IsNil(o.TxPrintLog) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPrintLog gets a reference to the given int32 and assigns it to the TxPrintLog field.
+func (o *TxProcessingPerformanceModel) SetTxPrintLog(v int32) {
+ o.TxPrintLog = &v
+}
+
+// GetTxPrapareAppend returns the TxPrapareAppend field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxPrapareAppend() int32 {
+ if o == nil || IsNil(o.TxPrapareAppend) {
+ var ret int32
+ return ret
+ }
+ return *o.TxPrapareAppend
+}
+
+// GetTxPrapareAppendOk returns a tuple with the TxPrapareAppend field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxPrapareAppendOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxPrapareAppend) {
+ return nil, false
+ }
+ return o.TxPrapareAppend, true
+}
+
+// HasTxPrapareAppend returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxPrapareAppend() bool {
+ if o != nil && !IsNil(o.TxPrapareAppend) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxPrapareAppend gets a reference to the given int32 and assigns it to the TxPrapareAppend field.
+func (o *TxProcessingPerformanceModel) SetTxPrapareAppend(v int32) {
+ o.TxPrapareAppend = &v
+}
+
+// GetTxAppend returns the TxAppend field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxAppend() int32 {
+ if o == nil || IsNil(o.TxAppend) {
+ var ret int32
+ return ret
+ }
+ return *o.TxAppend
+}
+
+// GetTxAppendOk returns a tuple with the TxAppend field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxAppendOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxAppend) {
+ return nil, false
+ }
+ return o.TxAppend, true
+}
+
+// HasTxAppend returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxAppend() bool {
+ if o != nil && !IsNil(o.TxAppend) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxAppend gets a reference to the given int32 and assigns it to the TxAppend field.
+func (o *TxProcessingPerformanceModel) SetTxAppend(v int32) {
+ o.TxAppend = &v
+}
+
+// GetTxAppendRlWait returns the TxAppendRlWait field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxAppendRlWait() int32 {
+ if o == nil || IsNil(o.TxAppendRlWait) {
+ var ret int32
+ return ret
+ }
+ return *o.TxAppendRlWait
+}
+
+// GetTxAppendRlWaitOk returns a tuple with the TxAppendRlWait field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxAppendRlWaitOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxAppendRlWait) {
+ return nil, false
+ }
+ return o.TxAppendRlWait, true
+}
+
+// HasTxAppendRlWait returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxAppendRlWait() bool {
+ if o != nil && !IsNil(o.TxAppendRlWait) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxAppendRlWait gets a reference to the given int32 and assigns it to the TxAppendRlWait field.
+func (o *TxProcessingPerformanceModel) SetTxAppendRlWait(v int32) {
+ o.TxAppendRlWait = &v
+}
+
+// GetTxAppendIsExpired returns the TxAppendIsExpired field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxAppendIsExpired() int32 {
+ if o == nil || IsNil(o.TxAppendIsExpired) {
+ var ret int32
+ return ret
+ }
+ return *o.TxAppendIsExpired
+}
+
+// GetTxAppendIsExpiredOk returns a tuple with the TxAppendIsExpired field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxAppendIsExpiredOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxAppendIsExpired) {
+ return nil, false
+ }
+ return o.TxAppendIsExpired, true
+}
+
+// HasTxAppendIsExpired returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxAppendIsExpired() bool {
+ if o != nil && !IsNil(o.TxAppendIsExpired) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxAppendIsExpired gets a reference to the given int32 and assigns it to the TxAppendIsExpired field.
+func (o *TxProcessingPerformanceModel) SetTxAppendIsExpired(v int32) {
+ o.TxAppendIsExpired = &v
+}
+
+// GetTxStoreDb returns the TxStoreDb field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxStoreDb() int32 {
+ if o == nil || IsNil(o.TxStoreDb) {
+ var ret int32
+ return ret
+ }
+ return *o.TxStoreDb
+}
+
+// GetTxStoreDbOk returns a tuple with the TxStoreDb field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxStoreDbOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxStoreDb) {
+ return nil, false
+ }
+ return o.TxStoreDb, true
+}
+
+// HasTxStoreDb returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxStoreDb() bool {
+ if o != nil && !IsNil(o.TxStoreDb) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxStoreDb gets a reference to the given int32 and assigns it to the TxStoreDb field.
+func (o *TxProcessingPerformanceModel) SetTxStoreDb(v int32) {
+ o.TxStoreDb = &v
+}
+
+// GetTxCheckInputsPrefixHash returns the TxCheckInputsPrefixHash field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsPrefixHash() int32 {
+ if o == nil || IsNil(o.TxCheckInputsPrefixHash) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsPrefixHash
+}
+
+// GetTxCheckInputsPrefixHashOk returns a tuple with the TxCheckInputsPrefixHash field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsPrefixHashOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsPrefixHash) {
+ return nil, false
+ }
+ return o.TxCheckInputsPrefixHash, true
+}
+
+// HasTxCheckInputsPrefixHash returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsPrefixHash() bool {
+ if o != nil && !IsNil(o.TxCheckInputsPrefixHash) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsPrefixHash gets a reference to the given int32 and assigns it to the TxCheckInputsPrefixHash field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsPrefixHash(v int32) {
+ o.TxCheckInputsPrefixHash = &v
+}
+
+// GetTxCheckInputsAttachmentCheck returns the TxCheckInputsAttachmentCheck field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsAttachmentCheck() int32 {
+ if o == nil || IsNil(o.TxCheckInputsAttachmentCheck) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsAttachmentCheck
+}
+
+// GetTxCheckInputsAttachmentCheckOk returns a tuple with the TxCheckInputsAttachmentCheck field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsAttachmentCheckOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsAttachmentCheck) {
+ return nil, false
+ }
+ return o.TxCheckInputsAttachmentCheck, true
+}
+
+// HasTxCheckInputsAttachmentCheck returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsAttachmentCheck() bool {
+ if o != nil && !IsNil(o.TxCheckInputsAttachmentCheck) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsAttachmentCheck gets a reference to the given int32 and assigns it to the TxCheckInputsAttachmentCheck field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsAttachmentCheck(v int32) {
+ o.TxCheckInputsAttachmentCheck = &v
+}
+
+// GetTxCheckInputsLoop returns the TxCheckInputsLoop field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoop() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoop) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoop
+}
+
+// GetTxCheckInputsLoopOk returns a tuple with the TxCheckInputsLoop field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoop) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoop, true
+}
+
+// HasTxCheckInputsLoop returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoop() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoop) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoop gets a reference to the given int32 and assigns it to the TxCheckInputsLoop field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoop(v int32) {
+ o.TxCheckInputsLoop = &v
+}
+
+// GetTxCheckInputsLoopKimageCheck returns the TxCheckInputsLoopKimageCheck field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopKimageCheck() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopKimageCheck) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopKimageCheck
+}
+
+// GetTxCheckInputsLoopKimageCheckOk returns a tuple with the TxCheckInputsLoopKimageCheck field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopKimageCheckOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopKimageCheck) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopKimageCheck, true
+}
+
+// HasTxCheckInputsLoopKimageCheck returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopKimageCheck() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopKimageCheck) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopKimageCheck gets a reference to the given int32 and assigns it to the TxCheckInputsLoopKimageCheck field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopKimageCheck(v int32) {
+ o.TxCheckInputsLoopKimageCheck = &v
+}
+
+// GetTxCheckInputsLoopChInValSig returns the TxCheckInputsLoopChInValSig field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopChInValSig() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopChInValSig) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopChInValSig
+}
+
+// GetTxCheckInputsLoopChInValSigOk returns a tuple with the TxCheckInputsLoopChInValSig field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopChInValSigOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopChInValSig) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopChInValSig, true
+}
+
+// HasTxCheckInputsLoopChInValSig returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopChInValSig() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopChInValSig) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopChInValSig gets a reference to the given int32 and assigns it to the TxCheckInputsLoopChInValSig field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopChInValSig(v int32) {
+ o.TxCheckInputsLoopChInValSig = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysGetItemSize returns the TxCheckInputsLoopScanOutputkeysGetItemSize field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysGetItemSize() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysGetItemSize) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysGetItemSize
+}
+
+// GetTxCheckInputsLoopScanOutputkeysGetItemSizeOk returns a tuple with the TxCheckInputsLoopScanOutputkeysGetItemSize field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysGetItemSizeOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysGetItemSize) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysGetItemSize, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysGetItemSize returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysGetItemSize() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysGetItemSize) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysGetItemSize gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysGetItemSize field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysGetItemSize(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysGetItemSize = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute returns the TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute
+}
+
+// GetTxCheckInputsLoopScanOutputkeysRelativeToAbsoluteOk returns a tuple with the TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysRelativeToAbsoluteOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysRelativeToAbsolute returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysRelativeToAbsolute field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoop returns the TxCheckInputsLoopScanOutputkeysLoop field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoop() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoop) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysLoop
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoop field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoop) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysLoop, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysLoop returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoop() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysLoop) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysLoop gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysLoop field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoop(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysLoop = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopGetSubitem returns the TxCheckInputsLoopScanOutputkeysLoopGetSubitem field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopGetSubitem() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopGetSubitemOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopGetSubitem field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopGetSubitemOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysLoopGetSubitem returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopGetSubitem() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysLoopGetSubitem gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysLoopGetSubitem field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopGetSubitem(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopFindTx returns the TxCheckInputsLoopScanOutputkeysLoopFindTx field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopFindTx() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopFindTx) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysLoopFindTx
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopFindTxOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopFindTx field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopFindTxOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopFindTx) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysLoopFindTx, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysLoopFindTx returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopFindTx() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopFindTx) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysLoopFindTx gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysLoopFindTx field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopFindTx(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysLoopFindTx = &v
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopHandleOutput returns the TxCheckInputsLoopScanOutputkeysLoopHandleOutput field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopHandleOutput() int32 {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput) {
+ var ret int32
+ return ret
+ }
+ return *o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput
+}
+
+// GetTxCheckInputsLoopScanOutputkeysLoopHandleOutputOk returns a tuple with the TxCheckInputsLoopScanOutputkeysLoopHandleOutput field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxCheckInputsLoopScanOutputkeysLoopHandleOutputOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput) {
+ return nil, false
+ }
+ return o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput, true
+}
+
+// HasTxCheckInputsLoopScanOutputkeysLoopHandleOutput returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxCheckInputsLoopScanOutputkeysLoopHandleOutput() bool {
+ if o != nil && !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxCheckInputsLoopScanOutputkeysLoopHandleOutput gets a reference to the given int32 and assigns it to the TxCheckInputsLoopScanOutputkeysLoopHandleOutput field.
+func (o *TxProcessingPerformanceModel) SetTxCheckInputsLoopScanOutputkeysLoopHandleOutput(v int32) {
+ o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput = &v
+}
+
+// GetTxMixinCount returns the TxMixinCount field value if set, zero value otherwise.
+func (o *TxProcessingPerformanceModel) GetTxMixinCount() int32 {
+ if o == nil || IsNil(o.TxMixinCount) {
+ var ret int32
+ return ret
+ }
+ return *o.TxMixinCount
+}
+
+// GetTxMixinCountOk returns a tuple with the TxMixinCount field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *TxProcessingPerformanceModel) GetTxMixinCountOk() (*int32, bool) {
+ if o == nil || IsNil(o.TxMixinCount) {
+ return nil, false
+ }
+ return o.TxMixinCount, true
+}
+
+// HasTxMixinCount returns a boolean if a field has been set.
+func (o *TxProcessingPerformanceModel) HasTxMixinCount() bool {
+ if o != nil && !IsNil(o.TxMixinCount) {
+ return true
+ }
+
+ return false
+}
+
+// SetTxMixinCount gets a reference to the given int32 and assigns it to the TxMixinCount field.
+func (o *TxProcessingPerformanceModel) SetTxMixinCount(v int32) {
+ o.TxMixinCount = &v
+}
+
+func (o TxProcessingPerformanceModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o TxProcessingPerformanceModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.TxCheckInputs) {
+ toSerialize["tx_check_inputs"] = o.TxCheckInputs
+ }
+ if !IsNil(o.TxAddOneTx) {
+ toSerialize["tx_add_one_tx"] = o.TxAddOneTx
+ }
+ if !IsNil(o.TxProcessExtra) {
+ toSerialize["tx_process_extra"] = o.TxProcessExtra
+ }
+ if !IsNil(o.TxProcessAttachment) {
+ toSerialize["tx_process_attachment"] = o.TxProcessAttachment
+ }
+ if !IsNil(o.TxProcessInputs) {
+ toSerialize["tx_process_inputs"] = o.TxProcessInputs
+ }
+ if !IsNil(o.TxPushGlobalIndex) {
+ toSerialize["tx_push_global_index"] = o.TxPushGlobalIndex
+ }
+ if !IsNil(o.TxCheckExist) {
+ toSerialize["tx_check_exist"] = o.TxCheckExist
+ }
+ if !IsNil(o.TxPrintLog) {
+ toSerialize["tx_print_log"] = o.TxPrintLog
+ }
+ if !IsNil(o.TxPrapareAppend) {
+ toSerialize["tx_prapare_append"] = o.TxPrapareAppend
+ }
+ if !IsNil(o.TxAppend) {
+ toSerialize["tx_append"] = o.TxAppend
+ }
+ if !IsNil(o.TxAppendRlWait) {
+ toSerialize["tx_append_rl_wait"] = o.TxAppendRlWait
+ }
+ if !IsNil(o.TxAppendIsExpired) {
+ toSerialize["tx_append_is_expired"] = o.TxAppendIsExpired
+ }
+ if !IsNil(o.TxStoreDb) {
+ toSerialize["tx_store_db"] = o.TxStoreDb
+ }
+ if !IsNil(o.TxCheckInputsPrefixHash) {
+ toSerialize["tx_check_inputs_prefix_hash"] = o.TxCheckInputsPrefixHash
+ }
+ if !IsNil(o.TxCheckInputsAttachmentCheck) {
+ toSerialize["tx_check_inputs_attachment_check"] = o.TxCheckInputsAttachmentCheck
+ }
+ if !IsNil(o.TxCheckInputsLoop) {
+ toSerialize["tx_check_inputs_loop"] = o.TxCheckInputsLoop
+ }
+ if !IsNil(o.TxCheckInputsLoopKimageCheck) {
+ toSerialize["tx_check_inputs_loop_kimage_check"] = o.TxCheckInputsLoopKimageCheck
+ }
+ if !IsNil(o.TxCheckInputsLoopChInValSig) {
+ toSerialize["tx_check_inputs_loop_ch_in_val_sig"] = o.TxCheckInputsLoopChInValSig
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysGetItemSize) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_get_item_size"] = o.TxCheckInputsLoopScanOutputkeysGetItemSize
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_relative_to_absolute"] = o.TxCheckInputsLoopScanOutputkeysRelativeToAbsolute
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysLoop) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_loop"] = o.TxCheckInputsLoopScanOutputkeysLoop
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_loop_get_subitem"] = o.TxCheckInputsLoopScanOutputkeysLoopGetSubitem
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopFindTx) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_loop_find_tx"] = o.TxCheckInputsLoopScanOutputkeysLoopFindTx
+ }
+ if !IsNil(o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput) {
+ toSerialize["tx_check_inputs_loop_scan_outputkeys_loop_handle_output"] = o.TxCheckInputsLoopScanOutputkeysLoopHandleOutput
+ }
+ if !IsNil(o.TxMixinCount) {
+ toSerialize["tx_mixin_count"] = o.TxMixinCount
+ }
+ return toSerialize, nil
+}
+
+type NullableTxProcessingPerformanceModel struct {
+ value *TxProcessingPerformanceModel
+ isSet bool
+}
+
+func (v NullableTxProcessingPerformanceModel) Get() *TxProcessingPerformanceModel {
+ return v.value
+}
+
+func (v *NullableTxProcessingPerformanceModel) Set(val *TxProcessingPerformanceModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTxProcessingPerformanceModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTxProcessingPerformanceModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTxProcessingPerformanceModel(val *TxProcessingPerformanceModel) *NullableTxProcessingPerformanceModel {
+ return &NullableTxProcessingPerformanceModel{value: val, isSet: true}
+}
+
+func (v NullableTxProcessingPerformanceModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTxProcessingPerformanceModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/model_version_model.go b/utils/sdk/client/go/model_version_model.go
new file mode 100644
index 00000000..cbd649d5
--- /dev/null
+++ b/utils/sdk/client/go/model_version_model.go
@@ -0,0 +1,270 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "encoding/json"
+)
+
+// checks if the VersionModel type satisfies the MappedNullable interface at compile time
+var _ MappedNullable = &VersionModel{}
+
+// VersionModel struct for VersionModel
+type VersionModel struct {
+ Version *string `json:"version,omitempty"`
+ VersionLong *string `json:"version_long,omitempty"`
+ Major *string `json:"major,omitempty"`
+ Minor *string `json:"minor,omitempty"`
+ Revision *string `json:"revision,omitempty"`
+}
+
+// NewVersionModel instantiates a new VersionModel object
+// This constructor will assign default values to properties that have it defined,
+// and makes sure properties required by API are set, but the set of arguments
+// will change when the set of required properties is changed
+func NewVersionModel() *VersionModel {
+ this := VersionModel{}
+ return &this
+}
+
+// NewVersionModelWithDefaults instantiates a new VersionModel object
+// This constructor will only assign default values to properties that have it defined,
+// but it doesn't guarantee that properties required by API are set
+func NewVersionModelWithDefaults() *VersionModel {
+ this := VersionModel{}
+ return &this
+}
+
+// GetVersion returns the Version field value if set, zero value otherwise.
+func (o *VersionModel) GetVersion() string {
+ if o == nil || IsNil(o.Version) {
+ var ret string
+ return ret
+ }
+ return *o.Version
+}
+
+// GetVersionOk returns a tuple with the Version field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *VersionModel) GetVersionOk() (*string, bool) {
+ if o == nil || IsNil(o.Version) {
+ return nil, false
+ }
+ return o.Version, true
+}
+
+// HasVersion returns a boolean if a field has been set.
+func (o *VersionModel) HasVersion() bool {
+ if o != nil && !IsNil(o.Version) {
+ return true
+ }
+
+ return false
+}
+
+// SetVersion gets a reference to the given string and assigns it to the Version field.
+func (o *VersionModel) SetVersion(v string) {
+ o.Version = &v
+}
+
+// GetVersionLong returns the VersionLong field value if set, zero value otherwise.
+func (o *VersionModel) GetVersionLong() string {
+ if o == nil || IsNil(o.VersionLong) {
+ var ret string
+ return ret
+ }
+ return *o.VersionLong
+}
+
+// GetVersionLongOk returns a tuple with the VersionLong field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *VersionModel) GetVersionLongOk() (*string, bool) {
+ if o == nil || IsNil(o.VersionLong) {
+ return nil, false
+ }
+ return o.VersionLong, true
+}
+
+// HasVersionLong returns a boolean if a field has been set.
+func (o *VersionModel) HasVersionLong() bool {
+ if o != nil && !IsNil(o.VersionLong) {
+ return true
+ }
+
+ return false
+}
+
+// SetVersionLong gets a reference to the given string and assigns it to the VersionLong field.
+func (o *VersionModel) SetVersionLong(v string) {
+ o.VersionLong = &v
+}
+
+// GetMajor returns the Major field value if set, zero value otherwise.
+func (o *VersionModel) GetMajor() string {
+ if o == nil || IsNil(o.Major) {
+ var ret string
+ return ret
+ }
+ return *o.Major
+}
+
+// GetMajorOk returns a tuple with the Major field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *VersionModel) GetMajorOk() (*string, bool) {
+ if o == nil || IsNil(o.Major) {
+ return nil, false
+ }
+ return o.Major, true
+}
+
+// HasMajor returns a boolean if a field has been set.
+func (o *VersionModel) HasMajor() bool {
+ if o != nil && !IsNil(o.Major) {
+ return true
+ }
+
+ return false
+}
+
+// SetMajor gets a reference to the given string and assigns it to the Major field.
+func (o *VersionModel) SetMajor(v string) {
+ o.Major = &v
+}
+
+// GetMinor returns the Minor field value if set, zero value otherwise.
+func (o *VersionModel) GetMinor() string {
+ if o == nil || IsNil(o.Minor) {
+ var ret string
+ return ret
+ }
+ return *o.Minor
+}
+
+// GetMinorOk returns a tuple with the Minor field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *VersionModel) GetMinorOk() (*string, bool) {
+ if o == nil || IsNil(o.Minor) {
+ return nil, false
+ }
+ return o.Minor, true
+}
+
+// HasMinor returns a boolean if a field has been set.
+func (o *VersionModel) HasMinor() bool {
+ if o != nil && !IsNil(o.Minor) {
+ return true
+ }
+
+ return false
+}
+
+// SetMinor gets a reference to the given string and assigns it to the Minor field.
+func (o *VersionModel) SetMinor(v string) {
+ o.Minor = &v
+}
+
+// GetRevision returns the Revision field value if set, zero value otherwise.
+func (o *VersionModel) GetRevision() string {
+ if o == nil || IsNil(o.Revision) {
+ var ret string
+ return ret
+ }
+ return *o.Revision
+}
+
+// GetRevisionOk returns a tuple with the Revision field value if set, nil otherwise
+// and a boolean to check if the value has been set.
+func (o *VersionModel) GetRevisionOk() (*string, bool) {
+ if o == nil || IsNil(o.Revision) {
+ return nil, false
+ }
+ return o.Revision, true
+}
+
+// HasRevision returns a boolean if a field has been set.
+func (o *VersionModel) HasRevision() bool {
+ if o != nil && !IsNil(o.Revision) {
+ return true
+ }
+
+ return false
+}
+
+// SetRevision gets a reference to the given string and assigns it to the Revision field.
+func (o *VersionModel) SetRevision(v string) {
+ o.Revision = &v
+}
+
+func (o VersionModel) MarshalJSON() ([]byte, error) {
+ toSerialize,err := o.ToMap()
+ if err != nil {
+ return []byte{}, err
+ }
+ return json.Marshal(toSerialize)
+}
+
+func (o VersionModel) ToMap() (map[string]interface{}, error) {
+ toSerialize := map[string]interface{}{}
+ if !IsNil(o.Version) {
+ toSerialize["version"] = o.Version
+ }
+ if !IsNil(o.VersionLong) {
+ toSerialize["version_long"] = o.VersionLong
+ }
+ if !IsNil(o.Major) {
+ toSerialize["major"] = o.Major
+ }
+ if !IsNil(o.Minor) {
+ toSerialize["minor"] = o.Minor
+ }
+ if !IsNil(o.Revision) {
+ toSerialize["revision"] = o.Revision
+ }
+ return toSerialize, nil
+}
+
+type NullableVersionModel struct {
+ value *VersionModel
+ isSet bool
+}
+
+func (v NullableVersionModel) Get() *VersionModel {
+ return v.value
+}
+
+func (v *NullableVersionModel) Set(val *VersionModel) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableVersionModel) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableVersionModel) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableVersionModel(val *VersionModel) *NullableVersionModel {
+ return &NullableVersionModel{value: val, isSet: true}
+}
+
+func (v NullableVersionModel) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableVersionModel) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+
diff --git a/utils/sdk/client/go/response.go b/utils/sdk/client/go/response.go
new file mode 100644
index 00000000..397a7129
--- /dev/null
+++ b/utils/sdk/client/go/response.go
@@ -0,0 +1,47 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "net/http"
+)
+
+// APIResponse stores the API response returned by the server.
+type APIResponse struct {
+ *http.Response `json:"-"`
+ Message string `json:"message,omitempty"`
+ // Operation is the name of the OpenAPI operation.
+ Operation string `json:"operation,omitempty"`
+ // RequestURL is the request URL. This value is always available, even if the
+ // embedded *http.Response is nil.
+ RequestURL string `json:"url,omitempty"`
+ // Method is the HTTP method used for the request. This value is always
+ // available, even if the embedded *http.Response is nil.
+ Method string `json:"method,omitempty"`
+ // Payload holds the contents of the response body (which may be nil or empty).
+ // This is provided here as the raw response.Body() reader will have already
+ // been drained.
+ Payload []byte `json:"-"`
+}
+
+// NewAPIResponse returns a new APIResponse object.
+func NewAPIResponse(r *http.Response) *APIResponse {
+
+ response := &APIResponse{Response: r}
+ return response
+}
+
+// NewAPIResponseWithError returns a new APIResponse object with the provided error message.
+func NewAPIResponseWithError(errorMessage string) *APIResponse {
+
+ response := &APIResponse{Message: errorMessage}
+ return response
+}
diff --git a/utils/sdk/client/go/test/api_block_test.go b/utils/sdk/client/go/test/api_block_test.go
new file mode 100644
index 00000000..4f34e1e5
--- /dev/null
+++ b/utils/sdk/client/go/test/api_block_test.go
@@ -0,0 +1,87 @@
+/*
+Lethean Blockchain API
+
+Testing BlockAPIService
+
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech);
+
+package lthn
+
+import (
+ "context"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "testing"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func Test_lthn_BlockAPIService(t *testing.T) {
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+
+ t.Run("Test BlockAPIService CreateBlockTemplate", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.BlockAPI.CreateBlockTemplate(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+ t.Run("Test BlockAPIService GetBlock", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ var identifier string
+
+ resp, httpRes, err := apiClient.BlockAPI.GetBlock(context.Background(), identifier).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+ t.Run("Test BlockAPIService GetBlocks", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.BlockAPI.GetBlocks(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+ t.Run("Test BlockAPIService GetHeight", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.BlockAPI.GetHeight(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+ t.Run("Test BlockAPIService SubmitBlock", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.BlockAPI.SubmitBlock(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+}
diff --git a/utils/sdk/client/go/test/api_info_test.go b/utils/sdk/client/go/test/api_info_test.go
new file mode 100644
index 00000000..2662cef0
--- /dev/null
+++ b/utils/sdk/client/go/test/api_info_test.go
@@ -0,0 +1,49 @@
+/*
+Lethean Blockchain API
+
+Testing InfoAPIService
+
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech);
+
+package lthn
+
+import (
+ "context"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "testing"
+ openapiclient "github.com/letheanVPN/blockchain/lthn"
+)
+
+func Test_lthn_InfoAPIService(t *testing.T) {
+
+ configuration := openapiclient.NewConfiguration()
+ apiClient := openapiclient.NewAPIClient(configuration)
+
+ t.Run("Test InfoAPIService GetInfo", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.InfoAPI.GetInfo(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+ t.Run("Test InfoAPIService Version", func(t *testing.T) {
+
+ t.Skip("skip test") // remove to run test
+
+ resp, httpRes, err := apiClient.InfoAPI.Version(context.Background()).Execute()
+
+ require.Nil(t, err)
+ require.NotNil(t, resp)
+ assert.Equal(t, 200, httpRes.StatusCode)
+
+ })
+
+}
diff --git a/utils/sdk/client/go/utils.go b/utils/sdk/client/go/utils.go
new file mode 100644
index 00000000..785d8a19
--- /dev/null
+++ b/utils/sdk/client/go/utils.go
@@ -0,0 +1,361 @@
+/*
+Lethean Blockchain API
+
+OpenAPI for Lethean Blockchain
+
+API version: 6.0.1
+*/
+
+// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
+
+package lthn
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "reflect"
+ "time"
+)
+
+// PtrBool is a helper routine that returns a pointer to given boolean value.
+func PtrBool(v bool) *bool { return &v }
+
+// PtrInt is a helper routine that returns a pointer to given integer value.
+func PtrInt(v int) *int { return &v }
+
+// PtrInt32 is a helper routine that returns a pointer to given integer value.
+func PtrInt32(v int32) *int32 { return &v }
+
+// PtrInt64 is a helper routine that returns a pointer to given integer value.
+func PtrInt64(v int64) *int64 { return &v }
+
+// PtrFloat32 is a helper routine that returns a pointer to given float value.
+func PtrFloat32(v float32) *float32 { return &v }
+
+// PtrFloat64 is a helper routine that returns a pointer to given float value.
+func PtrFloat64(v float64) *float64 { return &v }
+
+// PtrString is a helper routine that returns a pointer to given string value.
+func PtrString(v string) *string { return &v }
+
+// PtrTime is helper routine that returns a pointer to given Time value.
+func PtrTime(v time.Time) *time.Time { return &v }
+
+type NullableBool struct {
+ value *bool
+ isSet bool
+}
+
+func (v NullableBool) Get() *bool {
+ return v.value
+}
+
+func (v *NullableBool) Set(val *bool) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableBool) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableBool) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableBool(val *bool) *NullableBool {
+ return &NullableBool{value: val, isSet: true}
+}
+
+func (v NullableBool) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableBool) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableInt struct {
+ value *int
+ isSet bool
+}
+
+func (v NullableInt) Get() *int {
+ return v.value
+}
+
+func (v *NullableInt) Set(val *int) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableInt) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableInt) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableInt(val *int) *NullableInt {
+ return &NullableInt{value: val, isSet: true}
+}
+
+func (v NullableInt) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableInt) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableInt32 struct {
+ value *int32
+ isSet bool
+}
+
+func (v NullableInt32) Get() *int32 {
+ return v.value
+}
+
+func (v *NullableInt32) Set(val *int32) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableInt32) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableInt32) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableInt32(val *int32) *NullableInt32 {
+ return &NullableInt32{value: val, isSet: true}
+}
+
+func (v NullableInt32) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableInt32) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableInt64 struct {
+ value *int64
+ isSet bool
+}
+
+func (v NullableInt64) Get() *int64 {
+ return v.value
+}
+
+func (v *NullableInt64) Set(val *int64) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableInt64) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableInt64) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableInt64(val *int64) *NullableInt64 {
+ return &NullableInt64{value: val, isSet: true}
+}
+
+func (v NullableInt64) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableInt64) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableFloat32 struct {
+ value *float32
+ isSet bool
+}
+
+func (v NullableFloat32) Get() *float32 {
+ return v.value
+}
+
+func (v *NullableFloat32) Set(val *float32) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableFloat32) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableFloat32) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableFloat32(val *float32) *NullableFloat32 {
+ return &NullableFloat32{value: val, isSet: true}
+}
+
+func (v NullableFloat32) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableFloat32) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableFloat64 struct {
+ value *float64
+ isSet bool
+}
+
+func (v NullableFloat64) Get() *float64 {
+ return v.value
+}
+
+func (v *NullableFloat64) Set(val *float64) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableFloat64) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableFloat64) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableFloat64(val *float64) *NullableFloat64 {
+ return &NullableFloat64{value: val, isSet: true}
+}
+
+func (v NullableFloat64) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableFloat64) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableString struct {
+ value *string
+ isSet bool
+}
+
+func (v NullableString) Get() *string {
+ return v.value
+}
+
+func (v *NullableString) Set(val *string) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableString) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableString) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableString(val *string) *NullableString {
+ return &NullableString{value: val, isSet: true}
+}
+
+func (v NullableString) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableString) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+type NullableTime struct {
+ value *time.Time
+ isSet bool
+}
+
+func (v NullableTime) Get() *time.Time {
+ return v.value
+}
+
+func (v *NullableTime) Set(val *time.Time) {
+ v.value = val
+ v.isSet = true
+}
+
+func (v NullableTime) IsSet() bool {
+ return v.isSet
+}
+
+func (v *NullableTime) Unset() {
+ v.value = nil
+ v.isSet = false
+}
+
+func NewNullableTime(val *time.Time) *NullableTime {
+ return &NullableTime{value: val, isSet: true}
+}
+
+func (v NullableTime) MarshalJSON() ([]byte, error) {
+ return json.Marshal(v.value)
+}
+
+func (v *NullableTime) UnmarshalJSON(src []byte) error {
+ v.isSet = true
+ return json.Unmarshal(src, &v.value)
+}
+
+// IsNil checks if an input is nil
+func IsNil(i interface{}) bool {
+ if i == nil {
+ return true
+ }
+ switch reflect.TypeOf(i).Kind() {
+ case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.UnsafePointer, reflect.Interface, reflect.Slice:
+ return reflect.ValueOf(i).IsNil()
+ case reflect.Array:
+ return reflect.ValueOf(i).IsZero()
+ }
+ return false
+}
+
+type MappedNullable interface {
+ ToMap() (map[string]interface{}, error)
+}
+
+// A wrapper for strict JSON decoding
+func newStrictDecoder(data []byte) *json.Decoder {
+ dec := json.NewDecoder(bytes.NewBuffer(data))
+ dec.DisallowUnknownFields()
+ return dec
+}
+
+// Prevent trying to import "fmt"
+func reportError(format string, a ...interface{}) error {
+ return fmt.Errorf(format, a...)
+}
\ No newline at end of file
diff --git a/utils/sdk/openapitools.json b/utils/sdk/openapitools.json
new file mode 100644
index 00000000..a82623d6
--- /dev/null
+++ b/utils/sdk/openapitools.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
+ "spaces": 2,
+ "generator-cli": {
+ "version": "7.14.0"
+ }
+}
diff --git a/utils/sdk/packages/android.json b/utils/sdk/packages/android.json
new file mode 100644
index 00000000..0c61a779
--- /dev/null
+++ b/utils/sdk/packages/android.json
@@ -0,0 +1,9 @@
+{
+ "additionalProperties": {
+ "groupId": "org.lethean.chain",
+ "apiPackage":"org.lethean.chain.android.client",
+ "invokerPackage":"org.lethean.chain.android.client",
+ "artifactId":"org.lethean.chain.android.client",
+ "modelPackage":"org.lethean.chain.android.models"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/bash.json b/utils/sdk/packages/bash.json
new file mode 100644
index 00000000..b53bb667
--- /dev/null
+++ b/utils/sdk/packages/bash.json
@@ -0,0 +1,9 @@
+{
+ "additionalProperties": {
+ "apiPackage": "lethean-chain-sdk-bash",
+ "generateBashCompletion": true,
+ "generateZshCompletion": true,
+ "processMarkdown": true,
+ "scriptName":"lthn-cli"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/cpp-oatpp-client.json b/utils/sdk/packages/cpp-oatpp-client.json
new file mode 100644
index 00000000..7ddda99c
--- /dev/null
+++ b/utils/sdk/packages/cpp-oatpp-client.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-cpp-oatpp"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/cpp-oatpp-server.json b/utils/sdk/packages/cpp-oatpp-server.json
new file mode 100644
index 00000000..7ddda99c
--- /dev/null
+++ b/utils/sdk/packages/cpp-oatpp-server.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-cpp-oatpp"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/dart.json b/utils/sdk/packages/dart.json
new file mode 100644
index 00000000..7ddda99c
--- /dev/null
+++ b/utils/sdk/packages/dart.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-cpp-oatpp"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/gdscript.json b/utils/sdk/packages/gdscript.json
new file mode 100644
index 00000000..7ddda99c
--- /dev/null
+++ b/utils/sdk/packages/gdscript.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-cpp-oatpp"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/go.json b/utils/sdk/packages/go.json
new file mode 100644
index 00000000..ec20510b
--- /dev/null
+++ b/utils/sdk/packages/go.json
@@ -0,0 +1,7 @@
+{
+ "additionalProperties": {
+ "packageName": "lthn",
+ "generateInterfaces": true,
+ "isGoSubmodule": true
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/graphql-schema.json b/utils/sdk/packages/graphql-schema.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/graphql-schema.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/haskell-http-client.json b/utils/sdk/packages/haskell-http-client.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/haskell-http-client.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/java.json b/utils/sdk/packages/java.json
new file mode 100644
index 00000000..7ddda99c
--- /dev/null
+++ b/utils/sdk/packages/java.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-cpp-oatpp"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/jetbrains-http-client.json b/utils/sdk/packages/jetbrains-http-client.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/jetbrains-http-client.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/k6.json b/utils/sdk/packages/k6.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/k6.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/lua.json b/utils/sdk/packages/lua.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/lua.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/markdown.json b/utils/sdk/packages/markdown.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/markdown.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/mysql-schema.json b/utils/sdk/packages/mysql-schema.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/mysql-schema.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/nim.json b/utils/sdk/packages/nim.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/nim.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/php.json b/utils/sdk/packages/php.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/php.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/powershell.json b/utils/sdk/packages/powershell.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/powershell.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/protobuf-schema.json b/utils/sdk/packages/protobuf-schema.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/protobuf-schema.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/python.json b/utils/sdk/packages/python.json
new file mode 100644
index 00000000..3cb982bd
--- /dev/null
+++ b/utils/sdk/packages/python.json
@@ -0,0 +1,7 @@
+{
+ "additionalProperties": {
+ "packageName": "lthnchainsdk",
+ "projectName": "lthnchainsdk",
+ "packageUrl": "https://github.com/letheanVPN"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/r.json b/utils/sdk/packages/r.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/r.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/ruby.json b/utils/sdk/packages/ruby.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/ruby.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/rust.json b/utils/sdk/packages/rust.json
new file mode 100644
index 00000000..0b390075
--- /dev/null
+++ b/utils/sdk/packages/rust.json
@@ -0,0 +1,5 @@
+{
+ "additionalProperties": {
+ "packageName":"@snider/sdk-rust"
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/swift5.json b/utils/sdk/packages/swift5.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/swift5.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/swift6.json b/utils/sdk/packages/swift6.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/swift6.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/typescript-angular.json b/utils/sdk/packages/typescript-angular.json
new file mode 100644
index 00000000..77662033
--- /dev/null
+++ b/utils/sdk/packages/typescript-angular.json
@@ -0,0 +1,8 @@
+{
+ "additionalProperties": {
+ "apiModulePrefix":"letheanchainsdk",
+ "configurationPrefix":"letheanchainsdk",
+ "npmName":"@snider/sdk-typescript-angular",
+ "ngVersion": 12
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/typescript-node.json b/utils/sdk/packages/typescript-node.json
new file mode 100644
index 00000000..29f3a995
--- /dev/null
+++ b/utils/sdk/packages/typescript-node.json
@@ -0,0 +1,6 @@
+{
+ "additionalProperties": {
+ "npmName":"@snider/sdk-typescript-node-ts",
+ "supportsES6": true
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/typescript.json b/utils/sdk/packages/typescript.json
new file mode 100644
index 00000000..7572877f
--- /dev/null
+++ b/utils/sdk/packages/typescript.json
@@ -0,0 +1,10 @@
+{
+ "additionalProperties": {
+ "apiModulePrefix":"letheanchainsdk",
+ "configurationPrefix":"letheanchainsdk",
+ "npmName":"@snider/sdk-typescript",
+ "supportsES6": true,
+ "useInversify": true,
+ "useObjectParameters": true
+ }
+}
\ No newline at end of file
diff --git a/utils/sdk/packages/wsdl-schema.json b/utils/sdk/packages/wsdl-schema.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/wsdl-schema.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/packages/zapier.json b/utils/sdk/packages/zapier.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/utils/sdk/packages/zapier.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/utils/sdk/spec/oas-3.0.0.json b/utils/sdk/spec/oas-3.0.0.json
new file mode 100644
index 00000000..d5e5b5e3
--- /dev/null
+++ b/utils/sdk/spec/oas-3.0.0.json
@@ -0,0 +1 @@
+{"openapi":"3.0.0","info":{"title":"Lethean Blockchain API","description":"OpenAPI for Lethean Blockchain","contact":{"name":"Lethean","url":"https:\/\/lt.hn\/"},"license":{"name":"EUPL-1.2","url":"https:\/\/joinup.ec.europa.eu\/software\/page\/eupl\/licence-eupl"},"version":"6.0.1"},"servers":[{"url":"http:\/\/127.0.0.1:36943","description":"Local Daemon"},{"url":"http:\/\/seed.lethean.io:36943","description":"Seed Server"}],"paths":{"\/info":{"get":{"summary":"Get detailed information about the blockchain and daemon state","operationId":"getInfo","tags":["Info"],"responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/InfoModel"}}}}},"parameters":[{"name":"flags","description":"Possible values: net_time_delta_median, current_network_hashrate_50, current_network_hashrate_350, seconds_for_10_blocks, seconds_for_30_blocks, transactions_daily_stat, last_pos_timestamp, last_pow_timestamp, total_coins, last_block_size, tx_count_in_last_block, pos_sequence_factor, pow_sequence_factor, pos_difficulty, performance, outs_stat, expirations_median.","in":"query","required":false,"deprecated":false,"schema":{"type":"string"}}]}},"\/info\/version":{"get":{"description":"Returns the current version of the API.","summary":"Get API version","operationId":"version","tags":["Info"],"responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/VersionModel"}}}}},"parameters":[]}},"\/block":{"get":{"summary":"Get one or more blocks, with optional pagination.","operationId":"getBlocks","tags":["Block"],"responses":{"404":{"description":"text\/plain"},"400":{"description":"text\/plain"},"200":{"description":"A list of block objects.","content":{"application\/json":{"schema":{"type":"array","items":{"$ref":"#\/components\/schemas\/BlockDetailsModel"}}}}}},"parameters":[]}},"\/block\/template":{"post":{"summary":"Create a block template for mining","operationId":"createBlockTemplate","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BlockTemplateRequestModel"}}}},"tags":["Block"],"responses":{"500":{"description":"text\/plain"},"400":{"description":"text\/plain"},"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BlockTemplateModel"}}}}},"parameters":[]}},"\/block\/submit":{"post":{"summary":"Submit a new block to the network","operationId":"submitBlock","requestBody":{"required":true,"content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SubmitBlockRequestModel"}}}},"tags":["Block"],"responses":{"406":{"description":"text\/plain"},"400":{"description":"text\/plain"},"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/SubmitBlockResponseModel"}}}}},"parameters":[]}},"\/block\/height":{"get":{"summary":"Get the current blockchain height","operationId":"getHeight","tags":["Block"],"responses":{"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/HeightModel"}}}}},"parameters":[]}},"\/block\/{identifier}":{"get":{"summary":"Get a block by its hash or height (ID)","operationId":"getBlock","tags":["Block"],"responses":{"404":{"description":"text\/plain"},"400":{"description":"text\/plain"},"200":{"description":"OK","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/BlockDetailsModel"}}}}},"parameters":[{"name":"identifier","description":"The hash (hex string) or height (integer) of the block to retrieve.","in":"path","required":true,"deprecated":false,"schema":{"type":"string"}}]}}},"components":{"schemas":{"DbStatInfoModel":{"type":"object","properties":{"tx_count":{"type":"integer"},"write_tx_count":{"type":"integer"},"map_size":{"type":"integer"}},"required":[]},"TxPoolPerformanceModel":{"type":"object","properties":{"tx_processing_time":{"type":"integer"},"check_inputs_types_supported_time":{"type":"integer"},"expiration_validate_time":{"type":"integer"},"validate_amount_time":{"type":"integer"},"validate_alias_time":{"type":"integer"},"check_keyimages_ws_ms_time":{"type":"integer"},"check_inputs_time":{"type":"integer"},"begin_tx_time":{"type":"integer"},"update_db_time":{"type":"integer"},"db_commit_time":{"type":"integer"},"check_post_hf4_balance":{"type":"integer"}},"required":[]},"MaintainersInfoModel":{"type":"object","properties":{"ver_major":{"type":"integer","minimum":0,"maximum":255},"ver_minor":{"type":"integer","minimum":0,"maximum":255},"ver_revision":{"type":"integer","minimum":0,"maximum":255},"build_no":{"type":"integer","minimum":0,"maximum":4294967295},"mode":{"type":"integer","minimum":0,"maximum":255}},"required":[]},"InfoModel":{"type":"object","properties":{"height":{"type":"integer"},"tx_count":{"type":"integer"},"tx_pool_size":{"type":"integer"},"alt_blocks_count":{"type":"integer"},"outgoing_connections_count":{"type":"integer"},"incoming_connections_count":{"type":"integer"},"synchronized_connections_count":{"type":"integer"},"white_peerlist_size":{"type":"integer"},"grey_peerlist_size":{"type":"integer"},"current_blocks_median":{"type":"integer"},"alias_count":{"type":"integer"},"current_max_allowed_block_size":{"type":"integer"},"daemon_network_state":{"type":"string"},"synchronization_start_height":{"type":"integer"},"max_net_seen_height":{"type":"integer"},"mi":{"$ref":"#\/components\/schemas\/MaintainersInfoModel"},"pos_allowed":{"type":"boolean"},"pos_difficulty":{"type":"string"},"pow_difficulty":{"type":"integer"},"default_fee":{"type":"integer"},"minimum_fee":{"type":"integer"},"is_hardfork_active":{"type":"array","items":{"type":"boolean"}},"net_time_delta_median":{"type":"integer","format":"int64"},"current_network_hashrate_50":{"type":"integer"},"current_network_hashrate_350":{"type":"integer"},"seconds_for_10_blocks":{"type":"integer"},"seconds_for_30_blocks":{"type":"integer"},"transactions_cnt_per_day":{"type":"array","items":{"type":"integer"}},"transactions_volume_per_day":{"type":"array","items":{"type":"integer"}},"last_pos_timestamp":{"type":"integer"},"last_pow_timestamp":{"type":"integer"},"total_coins":{"type":"string"},"last_block_size":{"type":"integer"},"tx_count_in_last_block":{"type":"integer"},"pos_sequence_factor":{"type":"number","format":"double"},"pow_sequence_factor":{"type":"number","format":"double"},"block_reward":{"type":"integer"},"last_block_total_reward":{"type":"integer"},"pos_diff_total_coins_rate":{"type":"integer"},"last_block_timestamp":{"type":"integer"},"last_block_hash":{"type":"string"},"pos_block_ts_shift_vs_actual":{"type":"integer","format":"int64"},"outs_stat":{"type":"object","additionalProperties":{"type":"integer"}},"performance_data":{"$ref":"#\/components\/schemas\/PerformanceModel"},"offers_count":{"type":"integer"},"expiration_median_timestamp":{"type":"integer"}},"required":[]},"SubmitBlockResponseModel":{"type":"object","properties":{"status":{"type":"string"}},"required":[]},"VersionModel":{"type":"object","properties":{"version":{"type":"string"},"version_long":{"type":"string"},"major":{"type":"string"},"minor":{"type":"string"},"revision":{"type":"string"}},"required":[]},"TransactionOutputModel":{"type":"object","properties":{"amount":{"type":"integer"},"global_index":{"type":"integer"},"is_spent":{"type":"boolean"},"minimum_sigs":{"type":"integer","minimum":0,"maximum":4294967295},"pub_keys":{"type":"array","items":{"type":"string"}}},"required":[]},"TransactionInputModel":{"type":"object","properties":{"amount":{"type":"integer"},"global_indexes":{"type":"array","items":{"type":"integer"}},"htlc_origin":{"type":"string"},"kimage_or_ms_id":{"type":"string"},"multisig_count":{"type":"integer","minimum":0,"maximum":4294967295}},"required":[]},"PerformanceModel":{"type":"object","properties":{"block_processing":{"$ref":"#\/components\/schemas\/BlockProcessingPerformanceModel"},"tx_processing":{"$ref":"#\/components\/schemas\/TxProcessingPerformanceModel"},"tx_pool":{"$ref":"#\/components\/schemas\/TxPoolPerformanceModel"},"db_stat_info":{"$ref":"#\/components\/schemas\/DbStatInfoModel"}},"required":[]},"TransactionExtraModel":{"type":"object","properties":{"type":{"type":"string"},"short_view":{"type":"string"},"details_view":{"type":"string"}},"required":[]},"TxProcessingPerformanceModel":{"type":"object","properties":{"tx_check_inputs":{"type":"integer"},"tx_add_one_tx":{"type":"integer"},"tx_process_extra":{"type":"integer"},"tx_process_attachment":{"type":"integer"},"tx_process_inputs":{"type":"integer"},"tx_push_global_index":{"type":"integer"},"tx_check_exist":{"type":"integer"},"tx_print_log":{"type":"integer"},"tx_prapare_append":{"type":"integer"},"tx_append":{"type":"integer"},"tx_append_rl_wait":{"type":"integer"},"tx_append_is_expired":{"type":"integer"},"tx_store_db":{"type":"integer"},"tx_check_inputs_prefix_hash":{"type":"integer"},"tx_check_inputs_attachment_check":{"type":"integer"},"tx_check_inputs_loop":{"type":"integer"},"tx_check_inputs_loop_kimage_check":{"type":"integer"},"tx_check_inputs_loop_ch_in_val_sig":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_get_item_size":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_relative_to_absolute":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_loop":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_loop_get_subitem":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_loop_find_tx":{"type":"integer"},"tx_check_inputs_loop_scan_outputkeys_loop_handle_output":{"type":"integer"},"tx_mixin_count":{"type":"integer"}},"required":[]},"TxGenerationContextModel":{"type":"object","properties":{"asset_ids":{"type":"array","items":{"type":"string"}},"blinded_asset_ids":{"type":"array","items":{"type":"string"}},"amount_commitments":{"type":"array","items":{"type":"string"}},"asset_id_blinding_masks":{"type":"array","items":{"type":"string"}},"amounts":{"type":"array","items":{"type":"string"}},"amount_blinding_masks":{"type":"array","items":{"type":"string"}},"pseudo_outs_blinded_asset_ids":{"type":"array","items":{"type":"string"}},"pseudo_outs_plus_real_out_blinding_masks":{"type":"array","items":{"type":"string"}},"real_zc_ins_asset_ids":{"type":"array","items":{"type":"string"}},"zc_input_amounts":{"type":"array","items":{"type":"integer"}},"pseudo_out_amount_commitments_sum":{"type":"string"},"pseudo_out_amount_blinding_masks_sum":{"type":"string"},"real_in_asset_id_blinding_mask_x_amount_sum":{"type":"string"},"amount_commitments_sum":{"type":"string"},"amount_blinding_masks_sum":{"type":"string"},"asset_id_blinding_mask_x_amount_sum":{"type":"string"},"ao_asset_id":{"type":"string"},"ao_asset_id_pt":{"type":"string"},"ao_amount_commitment":{"type":"string"},"ao_amount_blinding_mask":{"type":"string"},"ao_commitment_in_outputs":{"type":"boolean"},"tx_key_pub":{"type":"string"},"tx_key_sec":{"type":"string"},"tx_pub_key_p":{"type":"string"}},"required":[]},"HeightModel":{"type":"object","properties":{"height":{"type":"integer"}},"required":[]},"BlockTemplateModel":{"type":"object","properties":{"blocktemplate_blob":{"type":"string"},"difficulty":{"type":"string"},"height":{"type":"integer"},"miner_tx_tgc":{"$ref":"#\/components\/schemas\/TxGenerationContextModel"},"block_reward_without_fee":{"type":"integer"},"block_reward":{"type":"integer"},"txs_fee":{"type":"integer"},"prev_hash":{"type":"string"},"seed":{"type":"string"}},"required":[]},"TransactionAttachmentModel":{"type":"object","properties":{"type":{"type":"string"},"short_view":{"type":"string"},"details_view":{"type":"string"}},"required":[]},"BlockDetailsModel":{"type":"object","properties":{"actual_timestamp":{"type":"integer"},"already_generated_coins":{"type":"string"},"base_reward":{"type":"integer"},"blob":{"type":"string"},"block_cumulative_size":{"type":"integer"},"block_tself_size":{"type":"integer"},"cumulative_diff_adjusted":{"type":"string"},"cumulative_diff_precise":{"type":"string"},"difficulty":{"type":"string"},"effective_fee_median":{"type":"integer"},"height":{"type":"integer"},"id":{"type":"string"},"is_orphan":{"type":"boolean"},"miner_text_info":{"type":"string"},"object_in_json":{"type":"string"},"penalty":{"type":"integer"},"pow_seed":{"type":"string"},"prev_id":{"type":"string"},"summary_reward":{"type":"integer"},"this_block_fee_median":{"type":"integer"},"timestamp":{"type":"integer"},"total_fee":{"type":"integer"},"total_txs_size":{"type":"integer"},"transactions_details":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionDetailsModel"}},"type":{"type":"integer","minimum":0,"maximum":4294967295}},"required":[]},"PosEntryModel":{"type":"object","properties":{"amount":{"type":"integer"},"g_index":{"type":"integer"},"keyimage":{"type":"string"},"block_timestamp":{"type":"integer"},"stake_unlock_time":{"type":"integer"},"tx_id":{"type":"string"},"tx_out_index":{"type":"integer"},"wallet_index":{"type":"integer"}},"required":[]},"TransactionDetailsModel":{"type":"object","properties":{"amount":{"type":"integer"},"attachments":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionAttachmentModel"}},"blob":{"type":"string"},"blob_size":{"type":"integer"},"extra":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionExtraModel"}},"fee":{"type":"integer"},"id":{"type":"string"},"ins":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionInputModel"}},"keeper_block":{"type":"integer","format":"int64"},"object_in_json":{"type":"string"},"outs":{"type":"array","items":{"$ref":"#\/components\/schemas\/TransactionOutputModel"}},"pub_key":{"type":"string"},"timestamp":{"type":"integer"}},"required":[]},"BlockProcessingPerformanceModel":{"type":"object","properties":{"block_processing_time_0":{"type":"integer"},"block_processing_time_1":{"type":"integer"},"target_calculating_time_2":{"type":"integer"},"longhash_calculating_time_3":{"type":"integer"},"all_txs_insert_time_5":{"type":"integer"},"etc_stuff_6":{"type":"integer"},"insert_time_4":{"type":"integer"},"raise_block_core_event":{"type":"integer"},"validate_miner_transaction_time":{"type":"integer"},"collect_rangeproofs_data_from_tx_time":{"type":"integer"},"verify_multiple_zc_outs_range_proofs_time":{"type":"integer"},"target_calculating_enum_blocks":{"type":"integer"},"target_calculating_calc":{"type":"integer"},"pos_validate_ki_search":{"type":"integer"},"pos_validate_get_out_keys_for_inputs":{"type":"integer"},"pos_validate_zvp":{"type":"integer"}},"required":[]},"BlockTemplateRequestModel":{"type":"object","properties":{"miner_address":{"type":"string"},"stakeholder_address":{"type":"string"},"ex_nonce":{"type":"string"},"pos_block":{"type":"boolean"},"ignore_pow_ts_check":{"type":"boolean"},"pe":{"$ref":"#\/components\/schemas\/PosEntryModel"},"explicit_txs":{"type":"array","items":{"type":"string"}}},"required":[]},"SubmitBlockRequestModel":{"type":"object","properties":{"block_blob":{"type":"string"}},"required":[]}}}}
\ No newline at end of file
diff --git a/utils/setup_32.iss b/utils/setup_32.iss
deleted file mode 100644
index 24c18c80..00000000
--- a/utils/setup_32.iss
+++ /dev/null
@@ -1,151 +0,0 @@
-; Script generated by the Inno Setup Script Wizard.
-; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-
-#define MyAppName "Zano"
-;#define MyAppVersion "0.2.0.31"
-#define MyAppPublisher "Zano Team"
-#define MyAppURL "http://Zano.com"
-#define MyAppExeName "zano.exe"
-
-[Setup]
-; NOTE: The value of AppId uniquely identifies this application.
-; Do not use the same AppId value in installers for other applications.
-; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
-AppId={{55FD6D06-3A1D-47FF-AA45-2B302C1C9D8E}
-AppName={#MyAppName}
-AppVersion={#MyAppVersion}
-;AppVerName={#MyAppName} {#MyAppVersion}
-AppPublisher={#MyAppPublisher}
-AppPublisherURL={#MyAppURL}
-AppSupportURL={#MyAppURL}
-AppUpdatesURL={#MyAppURL}
-DefaultDirName={pf32}\{#MyAppName}
-DefaultGroupName={#MyAppName}
-OutputBaseFilename=setup
-Compression=lzma
-SolidCompression=yes
-ChangesAssociations=yes
-ArchitecturesInstallIn64BitMode=x64
-WizardImageFile=../resources/installer_bg_164x313.bmp
-;WizardSmallImageFile=../resources/icon.bmp
-PrivilegesRequired=poweruser
-;SetupIconFile=../resources/app.ico
-AppMutex=Zano_instance
-UninstallDisplayIcon={app}\{#MyAppExeName}
-
-
-[Languages]
-Name: "english"; MessagesFile: "compiler:Default.isl"
-
-[Tasks]
-Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
-Name: "desktopicon\common"; Description: "For all users"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive
-Name: "desktopicon\user"; Description: "For the current user only"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive unchecked
-
-
-[Registry]
-Root: HKCR; Subkey: ".dbl"; ValueType: string; ValueName: ""; ValueData: "ZanoWalletDataFile"; Flags: uninsdeletevalue
-Root: HKCR; Subkey: "ZanoWalletDataFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Data File"; Flags: uninsdeletekey
-Root: HKCR; Subkey: "ZanoWalletDataKyesFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Keys File"; Flags: uninsdeletekey
-
-Root: HKCR; Subkey: "ZanoWalletDataFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe,0"
-Root: HKCR; Subkey: "ZanoWalletDataKyesFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe,0"
-
-Root: HKCR; Subkey: "Zano"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""
-Root: HKCR; Subkey: "Zano\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\zano.exe %1"
-
-[Files]
-
-Source: "{#BinariesPath}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion
-Source: "..\src\gui\qt-daemon\html\*"; DestDir: "{app}\html"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion
-Source: "{#BinariesPath}\vc_redist.x86.exe"; DestDir: {tmp}; Flags: deleteafterinstall
-Source: "../resources/installer_bg_*.bmp"; Excludes: "*313.bmp"; Flags: dontcopy
-; NOTE: Don't use "Flags: ignoreversion" on any shared system files
-
-[Icons]
-Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
-Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
-Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
-Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\common
-Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\user
-
-
-[UninstallDelete]
-;This works only if it is installed in default location
-Type: filesandordirs; Name: "{pf32}\{#MyAppName}"
-;This works if it is installed in custom location
-Type: files; Name: "{app}\*";
-Type: filesandordirs; Name: "{app}"
-
-[Run]
-Filename: {tmp}\vc_redist.x86.exe; Parameters: "/install /quiet /norestart"; StatusMsg: Installing VC++ 2017 Redistributables...
-Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent shellexec
-
-
-
-[Code]
-function IsAppRunning(const FileName: string): Boolean;
-var
- FWMIService: Variant;
- FSWbemLocator: Variant;
- FWbemObjectSet: Variant;
- Version: TWindowsVersion;
-begin
- GetWindowsVersionEx(Version);
- if Version.Major = 10 then
- begin
- Result := False;
- Exit;
- end;
-
-
- Result := false;
- FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
- FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
- FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
- Result := (FWbemObjectSet.Count > 0);
- FWbemObjectSet := Unassigned;
- FWMIService := Unassigned;
- FSWbemLocator := Unassigned;
-end;
-
-function InitializeSetup: boolean;
-begin
-; Result := not IsAppRunning('{#MyAppExeName}');
-; if not Result then
-; MsgBox('{#MyAppExeName} is running. Please close the application before running the installer ', mbError, MB_OK);
-end;
-
-; Choose the right wizard background image based on current windows font scale
-; s.a.: https://stackoverflow.com/questions/26543603/inno-setup-wizardimagefile-looks-bad-with-font-scaling-on-windows-7
-[Code]
-function GetScalingFactor: Integer;
-begin
- if WizardForm.Font.PixelsPerInch >= 144 then Result := 150
- else
- if WizardForm.Font.PixelsPerInch >= 120 then Result := 125
- else Result := 100;
-end;
-
-procedure LoadEmbededScaledBitmap(Image: TBitmapImage; NameBase: string);
-var
- FileName: String;
-begin
- ExtractTemporaryFile(NameBase);
- FileName := ExpandConstant('{tmp}\' + NameBase);
- Image.Bitmap.LoadFromFile(FileName);
- DeleteFile(FileName);
-end;
-
-procedure InitializeWizard;
-begin
- { If using larger scaling, load the correct size of images }
- if GetScalingFactor = 125 then begin
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_191x385.bmp');
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_191x385.bmp');
- end else if GetScalingFactor = 150 then begin
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_246x457.bmp');
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_246x457.bmp');
- end;
-
-end;
diff --git a/utils/setup_64.iss b/utils/setup_64.iss
deleted file mode 100644
index 364a9767..00000000
--- a/utils/setup_64.iss
+++ /dev/null
@@ -1,119 +0,0 @@
-; Script generated by the Inno Setup Script Wizard.
-; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
-
-#define MyAppName "Zano"
-;#define MyAppVersion "0.2.0.31"
-#define MyAppPublisher "Zano Team"
-#define MyAppURL "http://zano.org"
-#define MyAppExeName "Zano.exe"
-
-[Setup]
-; NOTE: The value of AppId uniquely identifies this application.
-; Do not use the same AppId value in installers for other applications.
-; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
-AppId={{65FD6D06-3A1D-47FF-AA45-2B302C1C9D8E}
-AppName={#MyAppName}
-AppVersion={#MyAppVersion}
-;AppVerName={#MyAppName} {#MyAppVersion}
-AppPublisher={#MyAppPublisher}
-AppPublisherURL={#MyAppURL}
-AppSupportURL={#MyAppURL}
-AppUpdatesURL={#MyAppURL}
-DefaultDirName={pf64}\{#MyAppName}
-DefaultGroupName={#MyAppName}
-OutputBaseFilename=setup
-Compression=lzma
-SolidCompression=yes
-ChangesAssociations=yes
-ArchitecturesInstallIn64BitMode=x64
-WizardImageFile=../resources/installer_bg_164x313.bmp
-;WizardSmallImageFile=../resources/icon.bmp
-PrivilegesRequired=poweruser
-ArchitecturesAllowed=x64
-;SetupIconFile=../resources/app.ico
-AppMutex=Zano_instance
-UninstallDisplayIcon={app}\{#MyAppExeName}
-
-
-[Languages]
-Name: "english"; MessagesFile: "compiler:Default.isl"
-
-[Tasks]
-Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
-Name: "desktopicon\common"; Description: "For all users"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive
-Name: "desktopicon\user"; Description: "For the current user only"; GroupDescription: "{cm:AdditionalIcons}"; Flags: exclusive unchecked
-
-
-[Registry]
-Root: HKCR; Subkey: ".dbl"; ValueType: string; ValueName: ""; ValueData: "ZanoWalletDataFile"; Flags: uninsdeletevalue
-Root: HKCR; Subkey: "ZanoWalletDataFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Data File"; Flags: uninsdeletekey
-Root: HKCR; Subkey: "ZanoWalletDataKyesFile"; ValueType: string; ValueName: ""; ValueData: "Zano Wallet's Keys File"; Flags: uninsdeletekey
-
-Root: HKCR; Subkey: "ZanoWalletDataFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe,0"
-Root: HKCR; Subkey: "ZanoWalletDataKyesFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe,0"
-
-Root: HKCR; Subkey: "Zano"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""
-Root: HKCR; Subkey: "Zano\shell\open\command"; ValueType: string; ValueName: ""; ValueData: "{app}\Zano.exe --deeplink-params=%1"
-
-
-[Files]
-
-Source: "{#BinariesPath}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion
-Source: "..\src\gui\qt-daemon\layout\html\*"; DestDir: "{app}\html"; Flags: ignoreversion recursesubdirs ignoreversion overwritereadonly replacesameversion
-Source: "{#BinariesPath}\vc_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall
-Source: "../resources/installer_bg_*.bmp"; Excludes: "*313.bmp"; Flags: dontcopy
-; NOTE: Don't use "Flags: ignoreversion" on any shared system files
-
-[Icons]
-Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
-Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
-Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
-Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\common
-Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon\user
-
-
-[Run]
-Filename: {tmp}\vc_redist.x64.exe; Parameters: "/install /quiet /norestart"; StatusMsg: Installing VC++ 2017 Redistributables...
-Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent shellexec
-
-[UninstallDelete]
-;This works only if it is installed in default location
-Type: filesandordirs; Name: "{pf64}\{#MyAppName}"
-;This works if it is installed in custom location
-Type: files; Name: "{app}\*";
-Type: filesandordirs; Name: "{app}"
-
-; Choose the right wizard background image based on current windows font scale
-; s.a.: https://stackoverflow.com/questions/26543603/inno-setup-wizardimagefile-looks-bad-with-font-scaling-on-windows-7
-[Code]
-function GetScalingFactor: Integer;
-begin
- if WizardForm.Font.PixelsPerInch >= 144 then Result := 150
- else
- if WizardForm.Font.PixelsPerInch >= 120 then Result := 125
- else Result := 100;
-end;
-
-procedure LoadEmbededScaledBitmap(Image: TBitmapImage; NameBase: string);
-var
- FileName: String;
-begin
- ExtractTemporaryFile(NameBase);
- FileName := ExpandConstant('{tmp}\' + NameBase);
- Image.Bitmap.LoadFromFile(FileName);
- DeleteFile(FileName);
-end;
-
-procedure InitializeWizard;
-begin
- { If using larger scaling, load the correct size of images }
- if GetScalingFactor = 125 then begin
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_191x385.bmp');
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_191x385.bmp');
- end else if GetScalingFactor = 150 then begin
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage, 'installer_bg_246x457.bmp');
- LoadEmbededScaledBitmap(WizardForm.WizardBitmapImage2, 'installer_bg_246x457.bmp');
- end;
-
-end;
-
diff --git a/utils/snap/snapcraft.yaml b/utils/snap/snapcraft.yaml
deleted file mode 100644
index 361d71c1..00000000
--- a/utils/snap/snapcraft.yaml
+++ /dev/null
@@ -1,125 +0,0 @@
-name: zano # you probably want to 'snapcraft register '
-base: core18 # the base snap is the execution environment for this snap
-version: '1.1.5' # just for humans, typically '1.2+git' or '1.3.2'
-summary: "Zano coin: official wallet. Secure. Scalable. Easy to Use."
-description: |
- Zano is a scalable and secure coin, designed for use in e-commerce.
- The technology behind our blockchain provides reliability, security,
- and flexibility a perfect option for P2P transactions.
- More info: http://zano.org
-grade: devel # must be 'stable' to release into candidate/stable channels
-confinement: devmode # use 'strict' once you have the right plugs and slots
-
-parts:
- libboost:
- plugin: dump
- source: .
-
- override-pull: |
- curl https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.bz2 -OL &&\
- echo '7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 boost_1_68_0.tar.bz2' | sha256sum -c - &&\
- pwd && echo pulled ok
-
- override-build: |
- tar -xjf $SNAPCRAFT_PART_SRC/boost_1_68_0.tar.bz2
- cd boost_1_68_0
- pwd
- ./bootstrap.sh --with-libraries=system,filesystem,thread,date_time,chrono,regex,serialization,atomic,program_options,locale,timer
- ./b2
- mkdir -p $SNAPCRAFT_PART_INSTALL/boost_1_68_0 $SNAPCRAFT_PART_INSTALL/boost_1_68_0/stage
- cp -pr boost $SNAPCRAFT_PART_INSTALL/boost_1_68_0/
- cp -pr stage/lib $SNAPCRAFT_PART_INSTALL/boost_1_68_0/stage/
-
- build-packages:
- - curl
- - build-essential
- - g++
- - libicu-dev
-
- stage-packages:
- - libicu60
-
- qt:
- plugin: dump
- source: .
- override-pull: |
- curl https://download.qt.io/archive/qt/5.13/5.13.2/single/qt-everywhere-src-5.13.2.tar.xz -OL &&\
- echo '55e8273536be41f4f63064a79e552a22133848bb419400b6fa8e9fc0dc05de08 qt-everywhere-src-5.13.2.tar.xz' | sha256sum -c - &&\
- pwd && echo pulled ok
-
- override-build: |
- tar -xJf $SNAPCRAFT_PART_SRC/qt-everywhere-src-5.13.2.tar.xz
- cd qt-everywhere-src-5.13.2
- pwd
- ./configure -platform linux-g++ -prefix $SNAPCRAFT_PART_INSTALL/qt5132 -opensource -confirm-license -xcb -nomake examples -nomake tests -feature-webengine-embedded-build -feature-webengine-pepper-plugins -feature-webengine-printing-and-pdf -feature-webengine-proprietary-codecs -feature-webengine-spellchecker -feature-webengine-v8-snapshot -feature-webengine-webrtc -feature-thread -xkbcommon -no-feature-d3d12 -no-feature-qt3d-animation -no-feature-qt3d-extras -no-feature-qt3d-input -no-feature-qt3d-logic -no-feature-qt3d-opengl-renderer -no-feature-qt3d-render -no-feature-qt3d-simd-avx2 -no-feature-qt3d-simd-sse2 -no-feature-gestures
- make
- make install
- echo Qt was successfully built
-
- build-packages:
- - g++
- - libicu-dev
- - bison
- - build-essential
- - flex
- - gperf
- - gyp
- - libasound2-dev
- - libavcodec-dev
- - libavformat-dev
- - libavutil-dev
- - libbz2-dev
- - libcap-dev
- - libcups2-dev
- - libdrm-dev
- - libegl1-mesa-dev
- - libevent-dev
- - libfontconfig1-dev
- - libgcrypt11-dev
- - libjsoncpp-dev
- - libminizip-dev
- - libnss3-dev
- - libopus-dev
- - libpci-dev
- - libpulse-dev
- - libsrtp0-dev
- - libssl-dev
- - libudev-dev
- - libwebp-dev
- - libxcb1
- - libxcb1-dev
- - libxcomposite-dev
- - libxcursor-dev
- - libxdamage-dev
- - libxkbcommon-dev
- - libxrandr-dev
- - libxss-dev
- - libxtst-dev
- - ninja-build
- - python
- - ruby
-
- zano-bin:
- after: [ libboost, qt ]
- source: https://github.com/hyle-team/zano.git
- plugin: cmake
-
- override-build: |
- cmake -DCMAKE_PREFIX_PATH=$SNAPCRAFT_PART_INSTALL/qt5132 -DBOOST_ROOT=$SNAPCRAFT_STAGE/boost_1_68_0 -DBOOST_LIBRARYDIR=$SNAPCRAFT_STAGE/boost_1_68_0/stage/lib -DSTATIC=True -DBUILD_GUI=True $SNAPCRAFT_PART_SRC
- make -j1 Zano
- #daemon simplewallet
- # cp src/zanod $SNAPCRAFT_PART_INSTALL
- # cp src/simplewallet $SNAPCRAFT_PART_INSTALL
- pwd
- echo CLI Zano binaries built
-
-
- build-packages:
- - build-essential
- - g++
- - libicu-dev
-
-
-apps:
- zano:
- command: pwd
diff --git a/utils/test_wallet_rpc_api.bat b/utils/test_wallet_rpc_api.bat
deleted file mode 100644
index 8abded78..00000000
--- a/utils/test_wallet_rpc_api.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-wget --post-file="telepod_withdraw.json" --output-document="api_response.txt" --debug http://127.0.0.1:9999/json_rpc
-pause
\ No newline at end of file