/*
 * Lethean Blockchain API
 * OpenAPI for Lethean Blockchain
 *
 * The version of the OpenAPI document: 6.0.1
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.openapitools.client.model;

import java.util.Objects;
import java.util.Locale;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.Arrays;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Locale;

import invalidPackageName.JSON;

/**
 * TxProcessingPerformanceModel
 */
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-10-19T15:35:02.750468+01:00[Europe/London]", comments = "Generator version: 7.16.0")
public class TxProcessingPerformanceModel {
  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS = "tx_check_inputs";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS)
  @javax.annotation.Nullable
  private Integer txCheckInputs;

  public static final String SERIALIZED_NAME_TX_ADD_ONE_TX = "tx_add_one_tx";
  @SerializedName(SERIALIZED_NAME_TX_ADD_ONE_TX)
  @javax.annotation.Nullable
  private Integer txAddOneTx;

  public static final String SERIALIZED_NAME_TX_PROCESS_EXTRA = "tx_process_extra";
  @SerializedName(SERIALIZED_NAME_TX_PROCESS_EXTRA)
  @javax.annotation.Nullable
  private Integer txProcessExtra;

  public static final String SERIALIZED_NAME_TX_PROCESS_ATTACHMENT = "tx_process_attachment";
  @SerializedName(SERIALIZED_NAME_TX_PROCESS_ATTACHMENT)
  @javax.annotation.Nullable
  private Integer txProcessAttachment;

  public static final String SERIALIZED_NAME_TX_PROCESS_INPUTS = "tx_process_inputs";
  @SerializedName(SERIALIZED_NAME_TX_PROCESS_INPUTS)
  @javax.annotation.Nullable
  private Integer txProcessInputs;

  public static final String SERIALIZED_NAME_TX_PUSH_GLOBAL_INDEX = "tx_push_global_index";
  @SerializedName(SERIALIZED_NAME_TX_PUSH_GLOBAL_INDEX)
  @javax.annotation.Nullable
  private Integer txPushGlobalIndex;

  public static final String SERIALIZED_NAME_TX_CHECK_EXIST = "tx_check_exist";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_EXIST)
  @javax.annotation.Nullable
  private Integer txCheckExist;

  public static final String SERIALIZED_NAME_TX_PRINT_LOG = "tx_print_log";
  @SerializedName(SERIALIZED_NAME_TX_PRINT_LOG)
  @javax.annotation.Nullable
  private Integer txPrintLog;

  public static final String SERIALIZED_NAME_TX_PRAPARE_APPEND = "tx_prapare_append";
  @SerializedName(SERIALIZED_NAME_TX_PRAPARE_APPEND)
  @javax.annotation.Nullable
  private Integer txPrapareAppend;

  public static final String SERIALIZED_NAME_TX_APPEND = "tx_append";
  @SerializedName(SERIALIZED_NAME_TX_APPEND)
  @javax.annotation.Nullable
  private Integer txAppend;

  public static final String SERIALIZED_NAME_TX_APPEND_RL_WAIT = "tx_append_rl_wait";
  @SerializedName(SERIALIZED_NAME_TX_APPEND_RL_WAIT)
  @javax.annotation.Nullable
  private Integer txAppendRlWait;

  public static final String SERIALIZED_NAME_TX_APPEND_IS_EXPIRED = "tx_append_is_expired";
  @SerializedName(SERIALIZED_NAME_TX_APPEND_IS_EXPIRED)
  @javax.annotation.Nullable
  private Integer txAppendIsExpired;

  public static final String SERIALIZED_NAME_TX_STORE_DB = "tx_store_db";
  @SerializedName(SERIALIZED_NAME_TX_STORE_DB)
  @javax.annotation.Nullable
  private Integer txStoreDb;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_PREFIX_HASH = "tx_check_inputs_prefix_hash";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_PREFIX_HASH)
  @javax.annotation.Nullable
  private Integer txCheckInputsPrefixHash;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_ATTACHMENT_CHECK = "tx_check_inputs_attachment_check";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_ATTACHMENT_CHECK)
  @javax.annotation.Nullable
  private Integer txCheckInputsAttachmentCheck;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP = "tx_check_inputs_loop";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoop;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_KIMAGE_CHECK = "tx_check_inputs_loop_kimage_check";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_KIMAGE_CHECK)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopKimageCheck;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_CH_IN_VAL_SIG = "tx_check_inputs_loop_ch_in_val_sig";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_CH_IN_VAL_SIG)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopChInValSig;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_GET_ITEM_SIZE = "tx_check_inputs_loop_scan_outputkeys_get_item_size";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_GET_ITEM_SIZE)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysGetItemSize;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_RELATIVE_TO_ABSOLUTE = "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_RELATIVE_TO_ABSOLUTE)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP = "tx_check_inputs_loop_scan_outputkeys_loop";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysLoop;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_GET_SUBITEM = "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_GET_SUBITEM)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_FIND_TX = "tx_check_inputs_loop_scan_outputkeys_loop_find_tx";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_FIND_TX)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysLoopFindTx;

  public static final String SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_HANDLE_OUTPUT = "tx_check_inputs_loop_scan_outputkeys_loop_handle_output";
  @SerializedName(SERIALIZED_NAME_TX_CHECK_INPUTS_LOOP_SCAN_OUTPUTKEYS_LOOP_HANDLE_OUTPUT)
  @javax.annotation.Nullable
  private Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput;

  public static final String SERIALIZED_NAME_TX_MIXIN_COUNT = "tx_mixin_count";
  @SerializedName(SERIALIZED_NAME_TX_MIXIN_COUNT)
  @javax.annotation.Nullable
  private Integer txMixinCount;

  public TxProcessingPerformanceModel() {
  }

  public TxProcessingPerformanceModel txCheckInputs(@javax.annotation.Nullable Integer txCheckInputs) {
    this.txCheckInputs = txCheckInputs;
    return this;
  }

  /**
   * Get txCheckInputs
   * @return txCheckInputs
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputs() {
    return txCheckInputs;
  }

  public void setTxCheckInputs(@javax.annotation.Nullable Integer txCheckInputs) {
    this.txCheckInputs = txCheckInputs;
  }


  public TxProcessingPerformanceModel txAddOneTx(@javax.annotation.Nullable Integer txAddOneTx) {
    this.txAddOneTx = txAddOneTx;
    return this;
  }

  /**
   * Get txAddOneTx
   * @return txAddOneTx
   */
  @javax.annotation.Nullable
  public Integer getTxAddOneTx() {
    return txAddOneTx;
  }

  public void setTxAddOneTx(@javax.annotation.Nullable Integer txAddOneTx) {
    this.txAddOneTx = txAddOneTx;
  }


  public TxProcessingPerformanceModel txProcessExtra(@javax.annotation.Nullable Integer txProcessExtra) {
    this.txProcessExtra = txProcessExtra;
    return this;
  }

  /**
   * Get txProcessExtra
   * @return txProcessExtra
   */
  @javax.annotation.Nullable
  public Integer getTxProcessExtra() {
    return txProcessExtra;
  }

  public void setTxProcessExtra(@javax.annotation.Nullable Integer txProcessExtra) {
    this.txProcessExtra = txProcessExtra;
  }


  public TxProcessingPerformanceModel txProcessAttachment(@javax.annotation.Nullable Integer txProcessAttachment) {
    this.txProcessAttachment = txProcessAttachment;
    return this;
  }

  /**
   * Get txProcessAttachment
   * @return txProcessAttachment
   */
  @javax.annotation.Nullable
  public Integer getTxProcessAttachment() {
    return txProcessAttachment;
  }

  public void setTxProcessAttachment(@javax.annotation.Nullable Integer txProcessAttachment) {
    this.txProcessAttachment = txProcessAttachment;
  }


  public TxProcessingPerformanceModel txProcessInputs(@javax.annotation.Nullable Integer txProcessInputs) {
    this.txProcessInputs = txProcessInputs;
    return this;
  }

  /**
   * Get txProcessInputs
   * @return txProcessInputs
   */
  @javax.annotation.Nullable
  public Integer getTxProcessInputs() {
    return txProcessInputs;
  }

  public void setTxProcessInputs(@javax.annotation.Nullable Integer txProcessInputs) {
    this.txProcessInputs = txProcessInputs;
  }


  public TxProcessingPerformanceModel txPushGlobalIndex(@javax.annotation.Nullable Integer txPushGlobalIndex) {
    this.txPushGlobalIndex = txPushGlobalIndex;
    return this;
  }

  /**
   * Get txPushGlobalIndex
   * @return txPushGlobalIndex
   */
  @javax.annotation.Nullable
  public Integer getTxPushGlobalIndex() {
    return txPushGlobalIndex;
  }

  public void setTxPushGlobalIndex(@javax.annotation.Nullable Integer txPushGlobalIndex) {
    this.txPushGlobalIndex = txPushGlobalIndex;
  }


  public TxProcessingPerformanceModel txCheckExist(@javax.annotation.Nullable Integer txCheckExist) {
    this.txCheckExist = txCheckExist;
    return this;
  }

  /**
   * Get txCheckExist
   * @return txCheckExist
   */
  @javax.annotation.Nullable
  public Integer getTxCheckExist() {
    return txCheckExist;
  }

  public void setTxCheckExist(@javax.annotation.Nullable Integer txCheckExist) {
    this.txCheckExist = txCheckExist;
  }


  public TxProcessingPerformanceModel txPrintLog(@javax.annotation.Nullable Integer txPrintLog) {
    this.txPrintLog = txPrintLog;
    return this;
  }

  /**
   * Get txPrintLog
   * @return txPrintLog
   */
  @javax.annotation.Nullable
  public Integer getTxPrintLog() {
    return txPrintLog;
  }

  public void setTxPrintLog(@javax.annotation.Nullable Integer txPrintLog) {
    this.txPrintLog = txPrintLog;
  }


  public TxProcessingPerformanceModel txPrapareAppend(@javax.annotation.Nullable Integer txPrapareAppend) {
    this.txPrapareAppend = txPrapareAppend;
    return this;
  }

  /**
   * Get txPrapareAppend
   * @return txPrapareAppend
   */
  @javax.annotation.Nullable
  public Integer getTxPrapareAppend() {
    return txPrapareAppend;
  }

  public void setTxPrapareAppend(@javax.annotation.Nullable Integer txPrapareAppend) {
    this.txPrapareAppend = txPrapareAppend;
  }


  public TxProcessingPerformanceModel txAppend(@javax.annotation.Nullable Integer txAppend) {
    this.txAppend = txAppend;
    return this;
  }

  /**
   * Get txAppend
   * @return txAppend
   */
  @javax.annotation.Nullable
  public Integer getTxAppend() {
    return txAppend;
  }

  public void setTxAppend(@javax.annotation.Nullable Integer txAppend) {
    this.txAppend = txAppend;
  }


  public TxProcessingPerformanceModel txAppendRlWait(@javax.annotation.Nullable Integer txAppendRlWait) {
    this.txAppendRlWait = txAppendRlWait;
    return this;
  }

  /**
   * Get txAppendRlWait
   * @return txAppendRlWait
   */
  @javax.annotation.Nullable
  public Integer getTxAppendRlWait() {
    return txAppendRlWait;
  }

  public void setTxAppendRlWait(@javax.annotation.Nullable Integer txAppendRlWait) {
    this.txAppendRlWait = txAppendRlWait;
  }


  public TxProcessingPerformanceModel txAppendIsExpired(@javax.annotation.Nullable Integer txAppendIsExpired) {
    this.txAppendIsExpired = txAppendIsExpired;
    return this;
  }

  /**
   * Get txAppendIsExpired
   * @return txAppendIsExpired
   */
  @javax.annotation.Nullable
  public Integer getTxAppendIsExpired() {
    return txAppendIsExpired;
  }

  public void setTxAppendIsExpired(@javax.annotation.Nullable Integer txAppendIsExpired) {
    this.txAppendIsExpired = txAppendIsExpired;
  }


  public TxProcessingPerformanceModel txStoreDb(@javax.annotation.Nullable Integer txStoreDb) {
    this.txStoreDb = txStoreDb;
    return this;
  }

  /**
   * Get txStoreDb
   * @return txStoreDb
   */
  @javax.annotation.Nullable
  public Integer getTxStoreDb() {
    return txStoreDb;
  }

  public void setTxStoreDb(@javax.annotation.Nullable Integer txStoreDb) {
    this.txStoreDb = txStoreDb;
  }


  public TxProcessingPerformanceModel txCheckInputsPrefixHash(@javax.annotation.Nullable Integer txCheckInputsPrefixHash) {
    this.txCheckInputsPrefixHash = txCheckInputsPrefixHash;
    return this;
  }

  /**
   * Get txCheckInputsPrefixHash
   * @return txCheckInputsPrefixHash
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsPrefixHash() {
    return txCheckInputsPrefixHash;
  }

  public void setTxCheckInputsPrefixHash(@javax.annotation.Nullable Integer txCheckInputsPrefixHash) {
    this.txCheckInputsPrefixHash = txCheckInputsPrefixHash;
  }


  public TxProcessingPerformanceModel txCheckInputsAttachmentCheck(@javax.annotation.Nullable Integer txCheckInputsAttachmentCheck) {
    this.txCheckInputsAttachmentCheck = txCheckInputsAttachmentCheck;
    return this;
  }

  /**
   * Get txCheckInputsAttachmentCheck
   * @return txCheckInputsAttachmentCheck
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsAttachmentCheck() {
    return txCheckInputsAttachmentCheck;
  }

  public void setTxCheckInputsAttachmentCheck(@javax.annotation.Nullable Integer txCheckInputsAttachmentCheck) {
    this.txCheckInputsAttachmentCheck = txCheckInputsAttachmentCheck;
  }


  public TxProcessingPerformanceModel txCheckInputsLoop(@javax.annotation.Nullable Integer txCheckInputsLoop) {
    this.txCheckInputsLoop = txCheckInputsLoop;
    return this;
  }

  /**
   * Get txCheckInputsLoop
   * @return txCheckInputsLoop
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoop() {
    return txCheckInputsLoop;
  }

  public void setTxCheckInputsLoop(@javax.annotation.Nullable Integer txCheckInputsLoop) {
    this.txCheckInputsLoop = txCheckInputsLoop;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopKimageCheck(@javax.annotation.Nullable Integer txCheckInputsLoopKimageCheck) {
    this.txCheckInputsLoopKimageCheck = txCheckInputsLoopKimageCheck;
    return this;
  }

  /**
   * Get txCheckInputsLoopKimageCheck
   * @return txCheckInputsLoopKimageCheck
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopKimageCheck() {
    return txCheckInputsLoopKimageCheck;
  }

  public void setTxCheckInputsLoopKimageCheck(@javax.annotation.Nullable Integer txCheckInputsLoopKimageCheck) {
    this.txCheckInputsLoopKimageCheck = txCheckInputsLoopKimageCheck;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopChInValSig(@javax.annotation.Nullable Integer txCheckInputsLoopChInValSig) {
    this.txCheckInputsLoopChInValSig = txCheckInputsLoopChInValSig;
    return this;
  }

  /**
   * Get txCheckInputsLoopChInValSig
   * @return txCheckInputsLoopChInValSig
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopChInValSig() {
    return txCheckInputsLoopChInValSig;
  }

  public void setTxCheckInputsLoopChInValSig(@javax.annotation.Nullable Integer txCheckInputsLoopChInValSig) {
    this.txCheckInputsLoopChInValSig = txCheckInputsLoopChInValSig;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysGetItemSize(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysGetItemSize) {
    this.txCheckInputsLoopScanOutputkeysGetItemSize = txCheckInputsLoopScanOutputkeysGetItemSize;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysGetItemSize
   * @return txCheckInputsLoopScanOutputkeysGetItemSize
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysGetItemSize() {
    return txCheckInputsLoopScanOutputkeysGetItemSize;
  }

  public void setTxCheckInputsLoopScanOutputkeysGetItemSize(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysGetItemSize) {
    this.txCheckInputsLoopScanOutputkeysGetItemSize = txCheckInputsLoopScanOutputkeysGetItemSize;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysRelativeToAbsolute(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
    this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute = txCheckInputsLoopScanOutputkeysRelativeToAbsolute;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysRelativeToAbsolute
   * @return txCheckInputsLoopScanOutputkeysRelativeToAbsolute
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysRelativeToAbsolute() {
    return txCheckInputsLoopScanOutputkeysRelativeToAbsolute;
  }

  public void setTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysRelativeToAbsolute) {
    this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute = txCheckInputsLoopScanOutputkeysRelativeToAbsolute;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoop(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoop) {
    this.txCheckInputsLoopScanOutputkeysLoop = txCheckInputsLoopScanOutputkeysLoop;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysLoop
   * @return txCheckInputsLoopScanOutputkeysLoop
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysLoop() {
    return txCheckInputsLoopScanOutputkeysLoop;
  }

  public void setTxCheckInputsLoopScanOutputkeysLoop(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoop) {
    this.txCheckInputsLoopScanOutputkeysLoop = txCheckInputsLoopScanOutputkeysLoop;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopGetSubitem(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem) {
    this.txCheckInputsLoopScanOutputkeysLoopGetSubitem = txCheckInputsLoopScanOutputkeysLoopGetSubitem;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysLoopGetSubitem
   * @return txCheckInputsLoopScanOutputkeysLoopGetSubitem
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysLoopGetSubitem() {
    return txCheckInputsLoopScanOutputkeysLoopGetSubitem;
  }

  public void setTxCheckInputsLoopScanOutputkeysLoopGetSubitem(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopGetSubitem) {
    this.txCheckInputsLoopScanOutputkeysLoopGetSubitem = txCheckInputsLoopScanOutputkeysLoopGetSubitem;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopFindTx(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopFindTx) {
    this.txCheckInputsLoopScanOutputkeysLoopFindTx = txCheckInputsLoopScanOutputkeysLoopFindTx;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysLoopFindTx
   * @return txCheckInputsLoopScanOutputkeysLoopFindTx
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysLoopFindTx() {
    return txCheckInputsLoopScanOutputkeysLoopFindTx;
  }

  public void setTxCheckInputsLoopScanOutputkeysLoopFindTx(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopFindTx) {
    this.txCheckInputsLoopScanOutputkeysLoopFindTx = txCheckInputsLoopScanOutputkeysLoopFindTx;
  }


  public TxProcessingPerformanceModel txCheckInputsLoopScanOutputkeysLoopHandleOutput(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput) {
    this.txCheckInputsLoopScanOutputkeysLoopHandleOutput = txCheckInputsLoopScanOutputkeysLoopHandleOutput;
    return this;
  }

  /**
   * Get txCheckInputsLoopScanOutputkeysLoopHandleOutput
   * @return txCheckInputsLoopScanOutputkeysLoopHandleOutput
   */
  @javax.annotation.Nullable
  public Integer getTxCheckInputsLoopScanOutputkeysLoopHandleOutput() {
    return txCheckInputsLoopScanOutputkeysLoopHandleOutput;
  }

  public void setTxCheckInputsLoopScanOutputkeysLoopHandleOutput(@javax.annotation.Nullable Integer txCheckInputsLoopScanOutputkeysLoopHandleOutput) {
    this.txCheckInputsLoopScanOutputkeysLoopHandleOutput = txCheckInputsLoopScanOutputkeysLoopHandleOutput;
  }


  public TxProcessingPerformanceModel txMixinCount(@javax.annotation.Nullable Integer txMixinCount) {
    this.txMixinCount = txMixinCount;
    return this;
  }

  /**
   * Get txMixinCount
   * @return txMixinCount
   */
  @javax.annotation.Nullable
  public Integer getTxMixinCount() {
    return txMixinCount;
  }

  public void setTxMixinCount(@javax.annotation.Nullable Integer txMixinCount) {
    this.txMixinCount = txMixinCount;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    TxProcessingPerformanceModel txProcessingPerformanceModel = (TxProcessingPerformanceModel) o;
    return Objects.equals(this.txCheckInputs, txProcessingPerformanceModel.txCheckInputs) &&
        Objects.equals(this.txAddOneTx, txProcessingPerformanceModel.txAddOneTx) &&
        Objects.equals(this.txProcessExtra, txProcessingPerformanceModel.txProcessExtra) &&
        Objects.equals(this.txProcessAttachment, txProcessingPerformanceModel.txProcessAttachment) &&
        Objects.equals(this.txProcessInputs, txProcessingPerformanceModel.txProcessInputs) &&
        Objects.equals(this.txPushGlobalIndex, txProcessingPerformanceModel.txPushGlobalIndex) &&
        Objects.equals(this.txCheckExist, txProcessingPerformanceModel.txCheckExist) &&
        Objects.equals(this.txPrintLog, txProcessingPerformanceModel.txPrintLog) &&
        Objects.equals(this.txPrapareAppend, txProcessingPerformanceModel.txPrapareAppend) &&
        Objects.equals(this.txAppend, txProcessingPerformanceModel.txAppend) &&
        Objects.equals(this.txAppendRlWait, txProcessingPerformanceModel.txAppendRlWait) &&
        Objects.equals(this.txAppendIsExpired, txProcessingPerformanceModel.txAppendIsExpired) &&
        Objects.equals(this.txStoreDb, txProcessingPerformanceModel.txStoreDb) &&
        Objects.equals(this.txCheckInputsPrefixHash, txProcessingPerformanceModel.txCheckInputsPrefixHash) &&
        Objects.equals(this.txCheckInputsAttachmentCheck, txProcessingPerformanceModel.txCheckInputsAttachmentCheck) &&
        Objects.equals(this.txCheckInputsLoop, txProcessingPerformanceModel.txCheckInputsLoop) &&
        Objects.equals(this.txCheckInputsLoopKimageCheck, txProcessingPerformanceModel.txCheckInputsLoopKimageCheck) &&
        Objects.equals(this.txCheckInputsLoopChInValSig, txProcessingPerformanceModel.txCheckInputsLoopChInValSig) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysGetItemSize, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysGetItemSize) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysRelativeToAbsolute, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysRelativeToAbsolute) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysLoop, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoop) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopGetSubitem, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopGetSubitem) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopFindTx, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopFindTx) &&
        Objects.equals(this.txCheckInputsLoopScanOutputkeysLoopHandleOutput, txProcessingPerformanceModel.txCheckInputsLoopScanOutputkeysLoopHandleOutput) &&
        Objects.equals(this.txMixinCount, txProcessingPerformanceModel.txMixinCount);
  }

  @Override
  public int hashCode() {
    return Objects.hash(txCheckInputs, txAddOneTx, txProcessExtra, txProcessAttachment, txProcessInputs, txPushGlobalIndex, txCheckExist, txPrintLog, txPrapareAppend, txAppend, txAppendRlWait, txAppendIsExpired, txStoreDb, txCheckInputsPrefixHash, txCheckInputsAttachmentCheck, txCheckInputsLoop, txCheckInputsLoopKimageCheck, txCheckInputsLoopChInValSig, txCheckInputsLoopScanOutputkeysGetItemSize, txCheckInputsLoopScanOutputkeysRelativeToAbsolute, txCheckInputsLoopScanOutputkeysLoop, txCheckInputsLoopScanOutputkeysLoopGetSubitem, txCheckInputsLoopScanOutputkeysLoopFindTx, txCheckInputsLoopScanOutputkeysLoopHandleOutput, txMixinCount);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class TxProcessingPerformanceModel {\n");
    sb.append("    txCheckInputs: ").append(toIndentedString(txCheckInputs)).append("\n");
    sb.append("    txAddOneTx: ").append(toIndentedString(txAddOneTx)).append("\n");
    sb.append("    txProcessExtra: ").append(toIndentedString(txProcessExtra)).append("\n");
    sb.append("    txProcessAttachment: ").append(toIndentedString(txProcessAttachment)).append("\n");
    sb.append("    txProcessInputs: ").append(toIndentedString(txProcessInputs)).append("\n");
    sb.append("    txPushGlobalIndex: ").append(toIndentedString(txPushGlobalIndex)).append("\n");
    sb.append("    txCheckExist: ").append(toIndentedString(txCheckExist)).append("\n");
    sb.append("    txPrintLog: ").append(toIndentedString(txPrintLog)).append("\n");
    sb.append("    txPrapareAppend: ").append(toIndentedString(txPrapareAppend)).append("\n");
    sb.append("    txAppend: ").append(toIndentedString(txAppend)).append("\n");
    sb.append("    txAppendRlWait: ").append(toIndentedString(txAppendRlWait)).append("\n");
    sb.append("    txAppendIsExpired: ").append(toIndentedString(txAppendIsExpired)).append("\n");
    sb.append("    txStoreDb: ").append(toIndentedString(txStoreDb)).append("\n");
    sb.append("    txCheckInputsPrefixHash: ").append(toIndentedString(txCheckInputsPrefixHash)).append("\n");
    sb.append("    txCheckInputsAttachmentCheck: ").append(toIndentedString(txCheckInputsAttachmentCheck)).append("\n");
    sb.append("    txCheckInputsLoop: ").append(toIndentedString(txCheckInputsLoop)).append("\n");
    sb.append("    txCheckInputsLoopKimageCheck: ").append(toIndentedString(txCheckInputsLoopKimageCheck)).append("\n");
    sb.append("    txCheckInputsLoopChInValSig: ").append(toIndentedString(txCheckInputsLoopChInValSig)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysGetItemSize: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysGetItemSize)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysRelativeToAbsolute: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysRelativeToAbsolute)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysLoop: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoop)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysLoopGetSubitem: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopGetSubitem)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysLoopFindTx: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopFindTx)).append("\n");
    sb.append("    txCheckInputsLoopScanOutputkeysLoopHandleOutput: ").append(toIndentedString(txCheckInputsLoopScanOutputkeysLoopHandleOutput)).append("\n");
    sb.append("    txMixinCount: ").append(toIndentedString(txMixinCount)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>(Arrays.asList("tx_check_inputs", "tx_add_one_tx", "tx_process_extra", "tx_process_attachment", "tx_process_inputs", "tx_push_global_index", "tx_check_exist", "tx_print_log", "tx_prapare_append", "tx_append", "tx_append_rl_wait", "tx_append_is_expired", "tx_store_db", "tx_check_inputs_prefix_hash", "tx_check_inputs_attachment_check", "tx_check_inputs_loop", "tx_check_inputs_loop_kimage_check", "tx_check_inputs_loop_ch_in_val_sig", "tx_check_inputs_loop_scan_outputkeys_get_item_size", "tx_check_inputs_loop_scan_outputkeys_relative_to_absolute", "tx_check_inputs_loop_scan_outputkeys_loop", "tx_check_inputs_loop_scan_outputkeys_loop_get_subitem", "tx_check_inputs_loop_scan_outputkeys_loop_find_tx", "tx_check_inputs_loop_scan_outputkeys_loop_handle_output", "tx_mixin_count"));

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>(0);
  }

  /**
   * Validates the JSON Element and throws an exception if issues found
   *
   * @param jsonElement JSON Element
   * @throws IOException if the JSON Element is invalid with respect to TxProcessingPerformanceModel
   */
  public static void validateJsonElement(JsonElement jsonElement) throws IOException {
      if (jsonElement == null) {
        if (!TxProcessingPerformanceModel.openapiRequiredFields.isEmpty()) { // has required fields but JSON element is null
          throw new IllegalArgumentException(String.format(Locale.ROOT, "The required field(s) %s in TxProcessingPerformanceModel is not found in the empty JSON string", TxProcessingPerformanceModel.openapiRequiredFields.toString()));
        }
      }

      Set<Map.Entry<String, JsonElement>> entries = jsonElement.getAsJsonObject().entrySet();
      // check to see if the JSON string contains additional fields
      for (Map.Entry<String, JsonElement> entry : entries) {
        if (!TxProcessingPerformanceModel.openapiFields.contains(entry.getKey())) {
          throw new IllegalArgumentException(String.format(Locale.ROOT, "The field `%s` in the JSON string is not defined in the `TxProcessingPerformanceModel` properties. JSON: %s", entry.getKey(), jsonElement.toString()));
        }
      }
        JsonObject jsonObj = jsonElement.getAsJsonObject();
  }

  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!TxProcessingPerformanceModel.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'TxProcessingPerformanceModel' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<TxProcessingPerformanceModel> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(TxProcessingPerformanceModel.class));

       return (TypeAdapter<T>) new TypeAdapter<TxProcessingPerformanceModel>() {
           @Override
           public void write(JsonWriter out, TxProcessingPerformanceModel value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public TxProcessingPerformanceModel read(JsonReader in) throws IOException {
             JsonElement jsonElement = elementAdapter.read(in);
             validateJsonElement(jsonElement);
             return thisAdapter.fromJsonTree(jsonElement);
           }

       }.nullSafe();
    }
  }

  /**
   * Create an instance of TxProcessingPerformanceModel given an JSON string
   *
   * @param jsonString JSON string
   * @return An instance of TxProcessingPerformanceModel
   * @throws IOException if the JSON string is invalid with respect to TxProcessingPerformanceModel
   */
  public static TxProcessingPerformanceModel fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, TxProcessingPerformanceModel.class);
  }

  /**
   * Convert an instance of TxProcessingPerformanceModel to an JSON string
   *
   * @return JSON string
   */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

