// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: types.proto
// Protobuf C++ Version: 5.26.1

#ifndef GOOGLE_PROTOBUF_INCLUDED_types_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_types_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/port_def.inc"
#if PROTOBUF_VERSION != 5026001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_bases.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field_inl.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_types_2eproto

namespace google {
namespace protobuf {
namespace internal {
class AnyMetadata;
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_types_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_types_2eproto;
namespace tari {
namespace rpc {
class BlockHeight;
struct BlockHeightDefaultTypeInternal;
extern BlockHeightDefaultTypeInternal _BlockHeight_default_instance_;
class ComAndPubSignature;
struct ComAndPubSignatureDefaultTypeInternal;
extern ComAndPubSignatureDefaultTypeInternal _ComAndPubSignature_default_instance_;
class CommitmentSignature;
struct CommitmentSignatureDefaultTypeInternal;
extern CommitmentSignatureDefaultTypeInternal _CommitmentSignature_default_instance_;
class ConsensusConstants;
struct ConsensusConstantsDefaultTypeInternal;
extern ConsensusConstantsDefaultTypeInternal _ConsensusConstants_default_instance_;
class ConsensusConstants_ProofOfWorkEntry_DoNotUse;
struct ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal;
extern ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal _ConsensusConstants_ProofOfWorkEntry_DoNotUse_default_instance_;
class Empty;
struct EmptyDefaultTypeInternal;
extern EmptyDefaultTypeInternal _Empty_default_instance_;
class OutputsVersion;
struct OutputsVersionDefaultTypeInternal;
extern OutputsVersionDefaultTypeInternal _OutputsVersion_default_instance_;
class PermittedRangeProofs;
struct PermittedRangeProofsDefaultTypeInternal;
extern PermittedRangeProofsDefaultTypeInternal _PermittedRangeProofs_default_instance_;
class PowAlgorithmConstants;
struct PowAlgorithmConstantsDefaultTypeInternal;
extern PowAlgorithmConstantsDefaultTypeInternal _PowAlgorithmConstants_default_instance_;
class Range;
struct RangeDefaultTypeInternal;
extern RangeDefaultTypeInternal _Range_default_instance_;
class RangeProof;
struct RangeProofDefaultTypeInternal;
extern RangeProofDefaultTypeInternal _RangeProof_default_instance_;
class Signature;
struct SignatureDefaultTypeInternal;
extern SignatureDefaultTypeInternal _Signature_default_instance_;
class WeightParams;
struct WeightParamsDefaultTypeInternal;
extern WeightParamsDefaultTypeInternal _WeightParams_default_instance_;
}  // namespace rpc
}  // namespace tari
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace tari {
namespace rpc {
enum OutputType : int {
  STANDARD = 0,
  COINBASE = 1,
  BURN = 2,
  VALIDATOR_NODE_REGISTRATION = 3,
  CODE_TEMPLATE_REGISTRATION = 4,
  OutputType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  OutputType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool OutputType_IsValid(int value);
extern const uint32_t OutputType_internal_data_[];
constexpr OutputType OutputType_MIN = static_cast<OutputType>(0);
constexpr OutputType OutputType_MAX = static_cast<OutputType>(4);
constexpr int OutputType_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor*
OutputType_descriptor();
template <typename T>
const std::string& OutputType_Name(T value) {
  static_assert(std::is_same<T, OutputType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to OutputType_Name().");
  return OutputType_Name(static_cast<OutputType>(value));
}
template <>
inline const std::string& OutputType_Name(OutputType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<OutputType_descriptor,
                                                 0, 4>(
      static_cast<int>(value));
}
inline bool OutputType_Parse(absl::string_view name, OutputType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<OutputType>(
      OutputType_descriptor(), name, value);
}
enum RangeProofType : int {
  BULLETPROOF_PLUS = 0,
  REVEALED_VALUE = 1,
  RangeProofType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  RangeProofType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool RangeProofType_IsValid(int value);
extern const uint32_t RangeProofType_internal_data_[];
constexpr RangeProofType RangeProofType_MIN = static_cast<RangeProofType>(0);
constexpr RangeProofType RangeProofType_MAX = static_cast<RangeProofType>(1);
constexpr int RangeProofType_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor*
RangeProofType_descriptor();
template <typename T>
const std::string& RangeProofType_Name(T value) {
  static_assert(std::is_same<T, RangeProofType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to RangeProofType_Name().");
  return RangeProofType_Name(static_cast<RangeProofType>(value));
}
template <>
inline const std::string& RangeProofType_Name(RangeProofType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<RangeProofType_descriptor,
                                                 0, 1>(
      static_cast<int>(value));
}
inline bool RangeProofType_Parse(absl::string_view name, RangeProofType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<RangeProofType>(
      RangeProofType_descriptor(), name, value);
}

// ===================================================================


// -------------------------------------------------------------------

class WeightParams final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.WeightParams) */ {
 public:
  inline WeightParams() : WeightParams(nullptr) {}
  ~WeightParams() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR WeightParams(
      ::google::protobuf::internal::ConstantInitialized);

  inline WeightParams(const WeightParams& from) : WeightParams(nullptr, from) {}
  inline WeightParams(WeightParams&& from) noexcept
      : WeightParams(nullptr, std::move(from)) {}
  inline WeightParams& operator=(const WeightParams& from) {
    CopyFrom(from);
    return *this;
  }
  inline WeightParams& operator=(WeightParams&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const WeightParams& default_instance() {
    return *internal_default_instance();
  }
  static inline const WeightParams* internal_default_instance() {
    return reinterpret_cast<const WeightParams*>(
        &_WeightParams_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(WeightParams& a, WeightParams& b) { a.Swap(&b); }
  inline void Swap(WeightParams* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(WeightParams* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  WeightParams* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<WeightParams>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const WeightParams& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const WeightParams& from) { WeightParams::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(WeightParams* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.WeightParams"; }

 protected:
  explicit WeightParams(::google::protobuf::Arena* arena);
  WeightParams(::google::protobuf::Arena* arena, const WeightParams& from);
  WeightParams(::google::protobuf::Arena* arena, WeightParams&& from) noexcept
      : WeightParams(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kKernelWeightFieldNumber = 1,
    kInputWeightFieldNumber = 2,
    kOutputWeightFieldNumber = 3,
    kFeaturesAndScriptsBytesPerGramFieldNumber = 4,
  };
  // uint64 kernel_weight = 1;
  void clear_kernel_weight() ;
  ::uint64_t kernel_weight() const;
  void set_kernel_weight(::uint64_t value);

  private:
  ::uint64_t _internal_kernel_weight() const;
  void _internal_set_kernel_weight(::uint64_t value);

  public:
  // uint64 input_weight = 2;
  void clear_input_weight() ;
  ::uint64_t input_weight() const;
  void set_input_weight(::uint64_t value);

  private:
  ::uint64_t _internal_input_weight() const;
  void _internal_set_input_weight(::uint64_t value);

  public:
  // uint64 output_weight = 3;
  void clear_output_weight() ;
  ::uint64_t output_weight() const;
  void set_output_weight(::uint64_t value);

  private:
  ::uint64_t _internal_output_weight() const;
  void _internal_set_output_weight(::uint64_t value);

  public:
  // uint64 features_and_scripts_bytes_per_gram = 4;
  void clear_features_and_scripts_bytes_per_gram() ;
  ::uint64_t features_and_scripts_bytes_per_gram() const;
  void set_features_and_scripts_bytes_per_gram(::uint64_t value);

  private:
  ::uint64_t _internal_features_and_scripts_bytes_per_gram() const;
  void _internal_set_features_and_scripts_bytes_per_gram(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.WeightParams)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::uint64_t kernel_weight_;
    ::uint64_t input_weight_;
    ::uint64_t output_weight_;
    ::uint64_t features_and_scripts_bytes_per_gram_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class Signature final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.Signature) */ {
 public:
  inline Signature() : Signature(nullptr) {}
  ~Signature() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Signature(
      ::google::protobuf::internal::ConstantInitialized);

  inline Signature(const Signature& from) : Signature(nullptr, from) {}
  inline Signature(Signature&& from) noexcept
      : Signature(nullptr, std::move(from)) {}
  inline Signature& operator=(const Signature& from) {
    CopyFrom(from);
    return *this;
  }
  inline Signature& operator=(Signature&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Signature& default_instance() {
    return *internal_default_instance();
  }
  static inline const Signature* internal_default_instance() {
    return reinterpret_cast<const Signature*>(
        &_Signature_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(Signature& a, Signature& b) { a.Swap(&b); }
  inline void Swap(Signature* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Signature* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Signature* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<Signature>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Signature& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Signature& from) { Signature::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(Signature* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.Signature"; }

 protected:
  explicit Signature(::google::protobuf::Arena* arena);
  Signature(::google::protobuf::Arena* arena, const Signature& from);
  Signature(::google::protobuf::Arena* arena, Signature&& from) noexcept
      : Signature(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPublicNonceFieldNumber = 1,
    kSignatureFieldNumber = 2,
  };
  // bytes public_nonce = 1;
  void clear_public_nonce() ;
  const std::string& public_nonce() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_public_nonce(Arg_&& arg, Args_... args);
  std::string* mutable_public_nonce();
  PROTOBUF_NODISCARD std::string* release_public_nonce();
  void set_allocated_public_nonce(std::string* value);

  private:
  const std::string& _internal_public_nonce() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_public_nonce(
      const std::string& value);
  std::string* _internal_mutable_public_nonce();

  public:
  // bytes signature = 2;
  void clear_signature() ;
  const std::string& signature() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_signature(Arg_&& arg, Args_... args);
  std::string* mutable_signature();
  PROTOBUF_NODISCARD std::string* release_signature();
  void set_allocated_signature(std::string* value);

  private:
  const std::string& _internal_signature() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_signature(
      const std::string& value);
  std::string* _internal_mutable_signature();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.Signature)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr public_nonce_;
    ::google::protobuf::internal::ArenaStringPtr signature_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class RangeProof final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.RangeProof) */ {
 public:
  inline RangeProof() : RangeProof(nullptr) {}
  ~RangeProof() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR RangeProof(
      ::google::protobuf::internal::ConstantInitialized);

  inline RangeProof(const RangeProof& from) : RangeProof(nullptr, from) {}
  inline RangeProof(RangeProof&& from) noexcept
      : RangeProof(nullptr, std::move(from)) {}
  inline RangeProof& operator=(const RangeProof& from) {
    CopyFrom(from);
    return *this;
  }
  inline RangeProof& operator=(RangeProof&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RangeProof& default_instance() {
    return *internal_default_instance();
  }
  static inline const RangeProof* internal_default_instance() {
    return reinterpret_cast<const RangeProof*>(
        &_RangeProof_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(RangeProof& a, RangeProof& b) { a.Swap(&b); }
  inline void Swap(RangeProof* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RangeProof* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  RangeProof* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<RangeProof>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RangeProof& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RangeProof& from) { RangeProof::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RangeProof* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.RangeProof"; }

 protected:
  explicit RangeProof(::google::protobuf::Arena* arena);
  RangeProof(::google::protobuf::Arena* arena, const RangeProof& from);
  RangeProof(::google::protobuf::Arena* arena, RangeProof&& from) noexcept
      : RangeProof(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kProofBytesFieldNumber = 1,
  };
  // bytes proof_bytes = 1;
  void clear_proof_bytes() ;
  const std::string& proof_bytes() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_proof_bytes(Arg_&& arg, Args_... args);
  std::string* mutable_proof_bytes();
  PROTOBUF_NODISCARD std::string* release_proof_bytes();
  void set_allocated_proof_bytes(std::string* value);

  private:
  const std::string& _internal_proof_bytes() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_proof_bytes(
      const std::string& value);
  std::string* _internal_mutable_proof_bytes();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.RangeProof)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr proof_bytes_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class Range final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.Range) */ {
 public:
  inline Range() : Range(nullptr) {}
  ~Range() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Range(
      ::google::protobuf::internal::ConstantInitialized);

  inline Range(const Range& from) : Range(nullptr, from) {}
  inline Range(Range&& from) noexcept
      : Range(nullptr, std::move(from)) {}
  inline Range& operator=(const Range& from) {
    CopyFrom(from);
    return *this;
  }
  inline Range& operator=(Range&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Range& default_instance() {
    return *internal_default_instance();
  }
  static inline const Range* internal_default_instance() {
    return reinterpret_cast<const Range*>(
        &_Range_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(Range& a, Range& b) { a.Swap(&b); }
  inline void Swap(Range* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Range* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Range* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<Range>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Range& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Range& from) { Range::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(Range* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.Range"; }

 protected:
  explicit Range(::google::protobuf::Arena* arena);
  Range(::google::protobuf::Arena* arena, const Range& from);
  Range(::google::protobuf::Arena* arena, Range&& from) noexcept
      : Range(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMinFieldNumber = 1,
    kMaxFieldNumber = 2,
  };
  // uint64 min = 1;
  void clear_min() ;
  ::uint64_t min() const;
  void set_min(::uint64_t value);

  private:
  ::uint64_t _internal_min() const;
  void _internal_set_min(::uint64_t value);

  public:
  // uint64 max = 2;
  void clear_max() ;
  ::uint64_t max() const;
  void set_max(::uint64_t value);

  private:
  ::uint64_t _internal_max() const;
  void _internal_set_max(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.Range)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::uint64_t min_;
    ::uint64_t max_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class PowAlgorithmConstants final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.PowAlgorithmConstants) */ {
 public:
  inline PowAlgorithmConstants() : PowAlgorithmConstants(nullptr) {}
  ~PowAlgorithmConstants() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR PowAlgorithmConstants(
      ::google::protobuf::internal::ConstantInitialized);

  inline PowAlgorithmConstants(const PowAlgorithmConstants& from) : PowAlgorithmConstants(nullptr, from) {}
  inline PowAlgorithmConstants(PowAlgorithmConstants&& from) noexcept
      : PowAlgorithmConstants(nullptr, std::move(from)) {}
  inline PowAlgorithmConstants& operator=(const PowAlgorithmConstants& from) {
    CopyFrom(from);
    return *this;
  }
  inline PowAlgorithmConstants& operator=(PowAlgorithmConstants&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const PowAlgorithmConstants& default_instance() {
    return *internal_default_instance();
  }
  static inline const PowAlgorithmConstants* internal_default_instance() {
    return reinterpret_cast<const PowAlgorithmConstants*>(
        &_PowAlgorithmConstants_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(PowAlgorithmConstants& a, PowAlgorithmConstants& b) { a.Swap(&b); }
  inline void Swap(PowAlgorithmConstants* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PowAlgorithmConstants* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PowAlgorithmConstants* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<PowAlgorithmConstants>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PowAlgorithmConstants& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PowAlgorithmConstants& from) { PowAlgorithmConstants::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(PowAlgorithmConstants* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.PowAlgorithmConstants"; }

 protected:
  explicit PowAlgorithmConstants(::google::protobuf::Arena* arena);
  PowAlgorithmConstants(::google::protobuf::Arena* arena, const PowAlgorithmConstants& from);
  PowAlgorithmConstants(::google::protobuf::Arena* arena, PowAlgorithmConstants&& from) noexcept
      : PowAlgorithmConstants(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMinDifficultyFieldNumber = 2,
    kMaxDifficultyFieldNumber = 3,
    kTargetTimeFieldNumber = 4,
  };
  // uint64 min_difficulty = 2;
  void clear_min_difficulty() ;
  ::uint64_t min_difficulty() const;
  void set_min_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_min_difficulty() const;
  void _internal_set_min_difficulty(::uint64_t value);

  public:
  // uint64 max_difficulty = 3;
  void clear_max_difficulty() ;
  ::uint64_t max_difficulty() const;
  void set_max_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_max_difficulty() const;
  void _internal_set_max_difficulty(::uint64_t value);

  public:
  // uint64 target_time = 4;
  void clear_target_time() ;
  ::uint64_t target_time() const;
  void set_target_time(::uint64_t value);

  private:
  ::uint64_t _internal_target_time() const;
  void _internal_set_target_time(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.PowAlgorithmConstants)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::uint64_t min_difficulty_;
    ::uint64_t max_difficulty_;
    ::uint64_t target_time_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class PermittedRangeProofs final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.PermittedRangeProofs) */ {
 public:
  inline PermittedRangeProofs() : PermittedRangeProofs(nullptr) {}
  ~PermittedRangeProofs() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR PermittedRangeProofs(
      ::google::protobuf::internal::ConstantInitialized);

  inline PermittedRangeProofs(const PermittedRangeProofs& from) : PermittedRangeProofs(nullptr, from) {}
  inline PermittedRangeProofs(PermittedRangeProofs&& from) noexcept
      : PermittedRangeProofs(nullptr, std::move(from)) {}
  inline PermittedRangeProofs& operator=(const PermittedRangeProofs& from) {
    CopyFrom(from);
    return *this;
  }
  inline PermittedRangeProofs& operator=(PermittedRangeProofs&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const PermittedRangeProofs& default_instance() {
    return *internal_default_instance();
  }
  static inline const PermittedRangeProofs* internal_default_instance() {
    return reinterpret_cast<const PermittedRangeProofs*>(
        &_PermittedRangeProofs_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(PermittedRangeProofs& a, PermittedRangeProofs& b) { a.Swap(&b); }
  inline void Swap(PermittedRangeProofs* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PermittedRangeProofs* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PermittedRangeProofs* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<PermittedRangeProofs>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PermittedRangeProofs& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PermittedRangeProofs& from) { PermittedRangeProofs::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(PermittedRangeProofs* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.PermittedRangeProofs"; }

 protected:
  explicit PermittedRangeProofs(::google::protobuf::Arena* arena);
  PermittedRangeProofs(::google::protobuf::Arena* arena, const PermittedRangeProofs& from);
  PermittedRangeProofs(::google::protobuf::Arena* arena, PermittedRangeProofs&& from) noexcept
      : PermittedRangeProofs(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRangeProofTypesFieldNumber = 2,
    kOutputTypeFieldNumber = 1,
  };
  // repeated .tari.rpc.RangeProofType range_proof_types = 2;
  int range_proof_types_size() const;
  private:
  int _internal_range_proof_types_size() const;

  public:
  void clear_range_proof_types() ;
  public:
  ::tari::rpc::RangeProofType range_proof_types(int index) const;
  void set_range_proof_types(int index, ::tari::rpc::RangeProofType value);
  void add_range_proof_types(::tari::rpc::RangeProofType value);
  const ::google::protobuf::RepeatedField<int>& range_proof_types() const;
  ::google::protobuf::RepeatedField<int>* mutable_range_proof_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_range_proof_types() const;
  ::google::protobuf::RepeatedField<int>* _internal_mutable_range_proof_types();

  public:
  // .tari.rpc.OutputType output_type = 1;
  void clear_output_type() ;
  ::tari::rpc::OutputType output_type() const;
  void set_output_type(::tari::rpc::OutputType value);

  private:
  ::tari::rpc::OutputType _internal_output_type() const;
  void _internal_set_output_type(::tari::rpc::OutputType value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.PermittedRangeProofs)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::RepeatedField<int> range_proof_types_;
    mutable ::google::protobuf::internal::CachedSize _range_proof_types_cached_byte_size_;
    int output_type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class Empty final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:tari.rpc.Empty) */ {
 public:
  inline Empty() : Empty(nullptr) {}
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Empty(
      ::google::protobuf::internal::ConstantInitialized);

  inline Empty(const Empty& from) : Empty(nullptr, from) {}
  inline Empty(Empty&& from) noexcept
      : Empty(nullptr, std::move(from)) {}
  inline Empty& operator=(const Empty& from) {
    CopyFrom(from);
    return *this;
  }
  inline Empty& operator=(Empty&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Empty& default_instance() {
    return *internal_default_instance();
  }
  static inline const Empty* internal_default_instance() {
    return reinterpret_cast<const Empty*>(
        &_Empty_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Empty& a, Empty& b) { a.Swap(&b); }
  inline void Swap(Empty* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Empty* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Empty* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Empty>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Empty& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Empty& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.Empty"; }

 protected:
  explicit Empty(::google::protobuf::Arena* arena);
  Empty(::google::protobuf::Arena* arena, const Empty& from);
  Empty(::google::protobuf::Arena* arena, Empty&& from) noexcept
      : Empty(arena) {
    *this = ::std::move(from);
  }

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:tari.rpc.Empty)
 private:
  class _Internal;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class CommitmentSignature final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.CommitmentSignature) */ {
 public:
  inline CommitmentSignature() : CommitmentSignature(nullptr) {}
  ~CommitmentSignature() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CommitmentSignature(
      ::google::protobuf::internal::ConstantInitialized);

  inline CommitmentSignature(const CommitmentSignature& from) : CommitmentSignature(nullptr, from) {}
  inline CommitmentSignature(CommitmentSignature&& from) noexcept
      : CommitmentSignature(nullptr, std::move(from)) {}
  inline CommitmentSignature& operator=(const CommitmentSignature& from) {
    CopyFrom(from);
    return *this;
  }
  inline CommitmentSignature& operator=(CommitmentSignature&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CommitmentSignature& default_instance() {
    return *internal_default_instance();
  }
  static inline const CommitmentSignature* internal_default_instance() {
    return reinterpret_cast<const CommitmentSignature*>(
        &_CommitmentSignature_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(CommitmentSignature& a, CommitmentSignature& b) { a.Swap(&b); }
  inline void Swap(CommitmentSignature* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CommitmentSignature* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CommitmentSignature* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<CommitmentSignature>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CommitmentSignature& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CommitmentSignature& from) { CommitmentSignature::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(CommitmentSignature* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.CommitmentSignature"; }

 protected:
  explicit CommitmentSignature(::google::protobuf::Arena* arena);
  CommitmentSignature(::google::protobuf::Arena* arena, const CommitmentSignature& from);
  CommitmentSignature(::google::protobuf::Arena* arena, CommitmentSignature&& from) noexcept
      : CommitmentSignature(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPublicNonceFieldNumber = 1,
    kUFieldNumber = 2,
    kVFieldNumber = 3,
  };
  // bytes public_nonce = 1;
  void clear_public_nonce() ;
  const std::string& public_nonce() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_public_nonce(Arg_&& arg, Args_... args);
  std::string* mutable_public_nonce();
  PROTOBUF_NODISCARD std::string* release_public_nonce();
  void set_allocated_public_nonce(std::string* value);

  private:
  const std::string& _internal_public_nonce() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_public_nonce(
      const std::string& value);
  std::string* _internal_mutable_public_nonce();

  public:
  // bytes u = 2;
  void clear_u() ;
  const std::string& u() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_u(Arg_&& arg, Args_... args);
  std::string* mutable_u();
  PROTOBUF_NODISCARD std::string* release_u();
  void set_allocated_u(std::string* value);

  private:
  const std::string& _internal_u() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u(
      const std::string& value);
  std::string* _internal_mutable_u();

  public:
  // bytes v = 3;
  void clear_v() ;
  const std::string& v() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_v(Arg_&& arg, Args_... args);
  std::string* mutable_v();
  PROTOBUF_NODISCARD std::string* release_v();
  void set_allocated_v(std::string* value);

  private:
  const std::string& _internal_v() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_v(
      const std::string& value);
  std::string* _internal_mutable_v();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.CommitmentSignature)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr public_nonce_;
    ::google::protobuf::internal::ArenaStringPtr u_;
    ::google::protobuf::internal::ArenaStringPtr v_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class ComAndPubSignature final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.ComAndPubSignature) */ {
 public:
  inline ComAndPubSignature() : ComAndPubSignature(nullptr) {}
  ~ComAndPubSignature() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ComAndPubSignature(
      ::google::protobuf::internal::ConstantInitialized);

  inline ComAndPubSignature(const ComAndPubSignature& from) : ComAndPubSignature(nullptr, from) {}
  inline ComAndPubSignature(ComAndPubSignature&& from) noexcept
      : ComAndPubSignature(nullptr, std::move(from)) {}
  inline ComAndPubSignature& operator=(const ComAndPubSignature& from) {
    CopyFrom(from);
    return *this;
  }
  inline ComAndPubSignature& operator=(ComAndPubSignature&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ComAndPubSignature& default_instance() {
    return *internal_default_instance();
  }
  static inline const ComAndPubSignature* internal_default_instance() {
    return reinterpret_cast<const ComAndPubSignature*>(
        &_ComAndPubSignature_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ComAndPubSignature& a, ComAndPubSignature& b) { a.Swap(&b); }
  inline void Swap(ComAndPubSignature* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ComAndPubSignature* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ComAndPubSignature* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ComAndPubSignature>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ComAndPubSignature& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ComAndPubSignature& from) { ComAndPubSignature::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ComAndPubSignature* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ComAndPubSignature"; }

 protected:
  explicit ComAndPubSignature(::google::protobuf::Arena* arena);
  ComAndPubSignature(::google::protobuf::Arena* arena, const ComAndPubSignature& from);
  ComAndPubSignature(::google::protobuf::Arena* arena, ComAndPubSignature&& from) noexcept
      : ComAndPubSignature(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEphemeralCommitmentFieldNumber = 1,
    kEphemeralPubkeyFieldNumber = 2,
    kUAFieldNumber = 3,
    kUXFieldNumber = 4,
    kUYFieldNumber = 5,
  };
  // bytes ephemeral_commitment = 1;
  void clear_ephemeral_commitment() ;
  const std::string& ephemeral_commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_ephemeral_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_ephemeral_commitment();
  PROTOBUF_NODISCARD std::string* release_ephemeral_commitment();
  void set_allocated_ephemeral_commitment(std::string* value);

  private:
  const std::string& _internal_ephemeral_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_ephemeral_commitment(
      const std::string& value);
  std::string* _internal_mutable_ephemeral_commitment();

  public:
  // bytes ephemeral_pubkey = 2;
  void clear_ephemeral_pubkey() ;
  const std::string& ephemeral_pubkey() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_ephemeral_pubkey(Arg_&& arg, Args_... args);
  std::string* mutable_ephemeral_pubkey();
  PROTOBUF_NODISCARD std::string* release_ephemeral_pubkey();
  void set_allocated_ephemeral_pubkey(std::string* value);

  private:
  const std::string& _internal_ephemeral_pubkey() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_ephemeral_pubkey(
      const std::string& value);
  std::string* _internal_mutable_ephemeral_pubkey();

  public:
  // bytes u_a = 3;
  void clear_u_a() ;
  const std::string& u_a() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_u_a(Arg_&& arg, Args_... args);
  std::string* mutable_u_a();
  PROTOBUF_NODISCARD std::string* release_u_a();
  void set_allocated_u_a(std::string* value);

  private:
  const std::string& _internal_u_a() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u_a(
      const std::string& value);
  std::string* _internal_mutable_u_a();

  public:
  // bytes u_x = 4;
  void clear_u_x() ;
  const std::string& u_x() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_u_x(Arg_&& arg, Args_... args);
  std::string* mutable_u_x();
  PROTOBUF_NODISCARD std::string* release_u_x();
  void set_allocated_u_x(std::string* value);

  private:
  const std::string& _internal_u_x() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u_x(
      const std::string& value);
  std::string* _internal_mutable_u_x();

  public:
  // bytes u_y = 5;
  void clear_u_y() ;
  const std::string& u_y() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_u_y(Arg_&& arg, Args_... args);
  std::string* mutable_u_y();
  PROTOBUF_NODISCARD std::string* release_u_y();
  void set_allocated_u_y(std::string* value);

  private:
  const std::string& _internal_u_y() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_u_y(
      const std::string& value);
  std::string* _internal_mutable_u_y();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ComAndPubSignature)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::ArenaStringPtr ephemeral_commitment_;
    ::google::protobuf::internal::ArenaStringPtr ephemeral_pubkey_;
    ::google::protobuf::internal::ArenaStringPtr u_a_;
    ::google::protobuf::internal::ArenaStringPtr u_x_;
    ::google::protobuf::internal::ArenaStringPtr u_y_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class BlockHeight final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.BlockHeight) */ {
 public:
  inline BlockHeight() : BlockHeight(nullptr) {}
  ~BlockHeight() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BlockHeight(
      ::google::protobuf::internal::ConstantInitialized);

  inline BlockHeight(const BlockHeight& from) : BlockHeight(nullptr, from) {}
  inline BlockHeight(BlockHeight&& from) noexcept
      : BlockHeight(nullptr, std::move(from)) {}
  inline BlockHeight& operator=(const BlockHeight& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockHeight& operator=(BlockHeight&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BlockHeight& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockHeight* internal_default_instance() {
    return reinterpret_cast<const BlockHeight*>(
        &_BlockHeight_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(BlockHeight& a, BlockHeight& b) { a.Swap(&b); }
  inline void Swap(BlockHeight* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BlockHeight* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  BlockHeight* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockHeight>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockHeight& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockHeight& from) { BlockHeight::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(BlockHeight* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockHeight"; }

 protected:
  explicit BlockHeight(::google::protobuf::Arena* arena);
  BlockHeight(::google::protobuf::Arena* arena, const BlockHeight& from);
  BlockHeight(::google::protobuf::Arena* arena, BlockHeight&& from) noexcept
      : BlockHeight(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBlockHeightFieldNumber = 1,
  };
  // uint64 block_height = 1;
  void clear_block_height() ;
  ::uint64_t block_height() const;
  void set_block_height(::uint64_t value);

  private:
  ::uint64_t _internal_block_height() const;
  void _internal_set_block_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockHeight)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 0,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::uint64_t block_height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class OutputsVersion final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.OutputsVersion) */ {
 public:
  inline OutputsVersion() : OutputsVersion(nullptr) {}
  ~OutputsVersion() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR OutputsVersion(
      ::google::protobuf::internal::ConstantInitialized);

  inline OutputsVersion(const OutputsVersion& from) : OutputsVersion(nullptr, from) {}
  inline OutputsVersion(OutputsVersion&& from) noexcept
      : OutputsVersion(nullptr, std::move(from)) {}
  inline OutputsVersion& operator=(const OutputsVersion& from) {
    CopyFrom(from);
    return *this;
  }
  inline OutputsVersion& operator=(OutputsVersion&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OutputsVersion& default_instance() {
    return *internal_default_instance();
  }
  static inline const OutputsVersion* internal_default_instance() {
    return reinterpret_cast<const OutputsVersion*>(
        &_OutputsVersion_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(OutputsVersion& a, OutputsVersion& b) { a.Swap(&b); }
  inline void Swap(OutputsVersion* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OutputsVersion* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  OutputsVersion* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<OutputsVersion>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OutputsVersion& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OutputsVersion& from) { OutputsVersion::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(OutputsVersion* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.OutputsVersion"; }

 protected:
  explicit OutputsVersion(::google::protobuf::Arena* arena);
  OutputsVersion(::google::protobuf::Arena* arena, const OutputsVersion& from);
  OutputsVersion(::google::protobuf::Arena* arena, OutputsVersion&& from) noexcept
      : OutputsVersion(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOutputsFieldNumber = 1,
    kFeaturesFieldNumber = 2,
  };
  // .tari.rpc.Range outputs = 1;
  bool has_outputs() const;
  void clear_outputs() ;
  const ::tari::rpc::Range& outputs() const;
  PROTOBUF_NODISCARD ::tari::rpc::Range* release_outputs();
  ::tari::rpc::Range* mutable_outputs();
  void set_allocated_outputs(::tari::rpc::Range* value);
  void unsafe_arena_set_allocated_outputs(::tari::rpc::Range* value);
  ::tari::rpc::Range* unsafe_arena_release_outputs();

  private:
  const ::tari::rpc::Range& _internal_outputs() const;
  ::tari::rpc::Range* _internal_mutable_outputs();

  public:
  // .tari.rpc.Range features = 2;
  bool has_features() const;
  void clear_features() ;
  const ::tari::rpc::Range& features() const;
  PROTOBUF_NODISCARD ::tari::rpc::Range* release_features();
  ::tari::rpc::Range* mutable_features();
  void set_allocated_features(::tari::rpc::Range* value);
  void unsafe_arena_set_allocated_features(::tari::rpc::Range* value);
  ::tari::rpc::Range* unsafe_arena_release_features();

  private:
  const ::tari::rpc::Range& _internal_features() const;
  ::tari::rpc::Range* _internal_mutable_features();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.OutputsVersion)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::tari::rpc::Range* outputs_;
    ::tari::rpc::Range* features_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class ConsensusConstants_ProofOfWorkEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<
          ConsensusConstants_ProofOfWorkEntry_DoNotUse, ::uint32_t, ::tari::rpc::PowAlgorithmConstants,
          ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
          ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType = ::google::protobuf::internal::MapEntry<
      ConsensusConstants_ProofOfWorkEntry_DoNotUse, ::uint32_t, ::tari::rpc::PowAlgorithmConstants,
      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  ConsensusConstants_ProofOfWorkEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ConsensusConstants_ProofOfWorkEntry_DoNotUse(
      ::google::protobuf::internal::ConstantInitialized);
  explicit ConsensusConstants_ProofOfWorkEntry_DoNotUse(::google::protobuf::Arena* arena);
  static const ConsensusConstants_ProofOfWorkEntry_DoNotUse* internal_default_instance() {
    return reinterpret_cast<const ConsensusConstants_ProofOfWorkEntry_DoNotUse*>(
        &_ConsensusConstants_ProofOfWorkEntry_DoNotUse_default_instance_);
  }
  static bool ValidateKey(void*) { return true; }
  static bool ValidateValue(void*) { return true; }
  ::google::protobuf::Metadata GetMetadata() const final;
  friend struct ::TableStruct_types_2eproto;
};
// -------------------------------------------------------------------

class ConsensusConstants final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:tari.rpc.ConsensusConstants) */ {
 public:
  inline ConsensusConstants() : ConsensusConstants(nullptr) {}
  ~ConsensusConstants() override;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ConsensusConstants(
      ::google::protobuf::internal::ConstantInitialized);

  inline ConsensusConstants(const ConsensusConstants& from) : ConsensusConstants(nullptr, from) {}
  inline ConsensusConstants(ConsensusConstants&& from) noexcept
      : ConsensusConstants(nullptr, std::move(from)) {}
  inline ConsensusConstants& operator=(const ConsensusConstants& from) {
    CopyFrom(from);
    return *this;
  }
  inline ConsensusConstants& operator=(ConsensusConstants&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ConsensusConstants& default_instance() {
    return *internal_default_instance();
  }
  static inline const ConsensusConstants* internal_default_instance() {
    return reinterpret_cast<const ConsensusConstants*>(
        &_ConsensusConstants_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(ConsensusConstants& a, ConsensusConstants& b) { a.Swap(&b); }
  inline void Swap(ConsensusConstants* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ConsensusConstants* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ConsensusConstants* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ConsensusConstants>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ConsensusConstants& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ConsensusConstants& from) { ConsensusConstants::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::google::protobuf::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ConsensusConstants* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ConsensusConstants"; }

 protected:
  explicit ConsensusConstants(::google::protobuf::Arena* arena);
  ConsensusConstants(::google::protobuf::Arena* arena, const ConsensusConstants& from);
  ConsensusConstants(::google::protobuf::Arena* arena, ConsensusConstants&& from) noexcept
      : ConsensusConstants(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::MessageLite::ClassData* GetClassData()
      const final;

 public:
  ::google::protobuf::Metadata GetMetadata() const final;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEmissionDecayFieldNumber = 11,
    kProofOfWorkFieldNumber = 23,
    kPermittedOutputTypesFieldNumber = 29,
    kPermittedRangeProofTypesFieldNumber = 34,
    kValidBlockchainVersionRangeFieldNumber = 21,
    kTransactionWeightFieldNumber = 24,
    kInputVersionRangeFieldNumber = 26,
    kOutputVersionRangeFieldNumber = 27,
    kKernelVersionRangeFieldNumber = 28,
    kCoinbaseMinMaturityFieldNumber = 1,
    kFutureTimeLimitFieldNumber = 3,
    kDifficultyBlockWindowFieldNumber = 5,
    kMaxBlockTransactionWeightFieldNumber = 7,
    kPowAlgoCountFieldNumber = 8,
    kMedianTimestampCountFieldNumber = 9,
    kEmissionInitialFieldNumber = 10,
    kEmissionTailFieldNumber = 12,
    kMinSha3XPowDifficultyFieldNumber = 13,
    kBlockWeightInputsFieldNumber = 14,
    kBlockWeightOutputsFieldNumber = 15,
    kBlockWeightKernelsFieldNumber = 16,
    kFaucetValueFieldNumber = 17,
    kMaxScriptByteSizeFieldNumber = 18,
    kValidatorNodeValidityPeriodFieldNumber = 19,
    kEffectiveFromHeightFieldNumber = 20,
    kMaxRandomxSeedHeightFieldNumber = 22,
    kEpochLengthFieldNumber = 30,
    kValidatorNodeRegistrationMinDepositAmountFieldNumber = 31,
    kValidatorNodeRegistrationMinLockHeightFieldNumber = 32,
    kValidatorNodeRegistrationShuffleIntervalEpochFieldNumber = 33,
    kInflationBipsFieldNumber = 35,
    kTailEpochLengthFieldNumber = 36,
    kBlockchainVersionFieldNumber = 2,
  };
  // repeated uint64 emission_decay = 11;
  int emission_decay_size() const;
  private:
  int _internal_emission_decay_size() const;

  public:
  void clear_emission_decay() ;
  ::uint64_t emission_decay(int index) const;
  void set_emission_decay(int index, ::uint64_t value);
  void add_emission_decay(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& emission_decay() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_emission_decay();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_emission_decay() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_emission_decay();

  public:
  // map<uint32, .tari.rpc.PowAlgorithmConstants> proof_of_work = 23;
  int proof_of_work_size() const;
  private:
  int _internal_proof_of_work_size() const;

  public:
  void clear_proof_of_work() ;
  const ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>& proof_of_work() const;
  ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>* mutable_proof_of_work();

  private:
  const ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>& _internal_proof_of_work() const;
  ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>* _internal_mutable_proof_of_work();

  public:
  // repeated .tari.rpc.OutputType permitted_output_types = 29;
  int permitted_output_types_size() const;
  private:
  int _internal_permitted_output_types_size() const;

  public:
  void clear_permitted_output_types() ;
  public:
  ::tari::rpc::OutputType permitted_output_types(int index) const;
  void set_permitted_output_types(int index, ::tari::rpc::OutputType value);
  void add_permitted_output_types(::tari::rpc::OutputType value);
  const ::google::protobuf::RepeatedField<int>& permitted_output_types() const;
  ::google::protobuf::RepeatedField<int>* mutable_permitted_output_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_permitted_output_types() const;
  ::google::protobuf::RepeatedField<int>* _internal_mutable_permitted_output_types();

  public:
  // repeated .tari.rpc.PermittedRangeProofs permitted_range_proof_types = 34;
  int permitted_range_proof_types_size() const;
  private:
  int _internal_permitted_range_proof_types_size() const;

  public:
  void clear_permitted_range_proof_types() ;
  ::tari::rpc::PermittedRangeProofs* mutable_permitted_range_proof_types(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>* mutable_permitted_range_proof_types();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>& _internal_permitted_range_proof_types() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>* _internal_mutable_permitted_range_proof_types();
  public:
  const ::tari::rpc::PermittedRangeProofs& permitted_range_proof_types(int index) const;
  ::tari::rpc::PermittedRangeProofs* add_permitted_range_proof_types();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>& permitted_range_proof_types() const;
  // .tari.rpc.Range valid_blockchain_version_range = 21;
  bool has_valid_blockchain_version_range() const;
  void clear_valid_blockchain_version_range() ;
  const ::tari::rpc::Range& valid_blockchain_version_range() const;
  PROTOBUF_NODISCARD ::tari::rpc::Range* release_valid_blockchain_version_range();
  ::tari::rpc::Range* mutable_valid_blockchain_version_range();
  void set_allocated_valid_blockchain_version_range(::tari::rpc::Range* value);
  void unsafe_arena_set_allocated_valid_blockchain_version_range(::tari::rpc::Range* value);
  ::tari::rpc::Range* unsafe_arena_release_valid_blockchain_version_range();

  private:
  const ::tari::rpc::Range& _internal_valid_blockchain_version_range() const;
  ::tari::rpc::Range* _internal_mutable_valid_blockchain_version_range();

  public:
  // .tari.rpc.WeightParams transaction_weight = 24;
  bool has_transaction_weight() const;
  void clear_transaction_weight() ;
  const ::tari::rpc::WeightParams& transaction_weight() const;
  PROTOBUF_NODISCARD ::tari::rpc::WeightParams* release_transaction_weight();
  ::tari::rpc::WeightParams* mutable_transaction_weight();
  void set_allocated_transaction_weight(::tari::rpc::WeightParams* value);
  void unsafe_arena_set_allocated_transaction_weight(::tari::rpc::WeightParams* value);
  ::tari::rpc::WeightParams* unsafe_arena_release_transaction_weight();

  private:
  const ::tari::rpc::WeightParams& _internal_transaction_weight() const;
  ::tari::rpc::WeightParams* _internal_mutable_transaction_weight();

  public:
  // .tari.rpc.Range input_version_range = 26;
  bool has_input_version_range() const;
  void clear_input_version_range() ;
  const ::tari::rpc::Range& input_version_range() const;
  PROTOBUF_NODISCARD ::tari::rpc::Range* release_input_version_range();
  ::tari::rpc::Range* mutable_input_version_range();
  void set_allocated_input_version_range(::tari::rpc::Range* value);
  void unsafe_arena_set_allocated_input_version_range(::tari::rpc::Range* value);
  ::tari::rpc::Range* unsafe_arena_release_input_version_range();

  private:
  const ::tari::rpc::Range& _internal_input_version_range() const;
  ::tari::rpc::Range* _internal_mutable_input_version_range();

  public:
  // .tari.rpc.OutputsVersion output_version_range = 27;
  bool has_output_version_range() const;
  void clear_output_version_range() ;
  const ::tari::rpc::OutputsVersion& output_version_range() const;
  PROTOBUF_NODISCARD ::tari::rpc::OutputsVersion* release_output_version_range();
  ::tari::rpc::OutputsVersion* mutable_output_version_range();
  void set_allocated_output_version_range(::tari::rpc::OutputsVersion* value);
  void unsafe_arena_set_allocated_output_version_range(::tari::rpc::OutputsVersion* value);
  ::tari::rpc::OutputsVersion* unsafe_arena_release_output_version_range();

  private:
  const ::tari::rpc::OutputsVersion& _internal_output_version_range() const;
  ::tari::rpc::OutputsVersion* _internal_mutable_output_version_range();

  public:
  // .tari.rpc.Range kernel_version_range = 28;
  bool has_kernel_version_range() const;
  void clear_kernel_version_range() ;
  const ::tari::rpc::Range& kernel_version_range() const;
  PROTOBUF_NODISCARD ::tari::rpc::Range* release_kernel_version_range();
  ::tari::rpc::Range* mutable_kernel_version_range();
  void set_allocated_kernel_version_range(::tari::rpc::Range* value);
  void unsafe_arena_set_allocated_kernel_version_range(::tari::rpc::Range* value);
  ::tari::rpc::Range* unsafe_arena_release_kernel_version_range();

  private:
  const ::tari::rpc::Range& _internal_kernel_version_range() const;
  ::tari::rpc::Range* _internal_mutable_kernel_version_range();

  public:
  // uint64 coinbase_min_maturity = 1;
  void clear_coinbase_min_maturity() ;
  ::uint64_t coinbase_min_maturity() const;
  void set_coinbase_min_maturity(::uint64_t value);

  private:
  ::uint64_t _internal_coinbase_min_maturity() const;
  void _internal_set_coinbase_min_maturity(::uint64_t value);

  public:
  // uint64 future_time_limit = 3;
  void clear_future_time_limit() ;
  ::uint64_t future_time_limit() const;
  void set_future_time_limit(::uint64_t value);

  private:
  ::uint64_t _internal_future_time_limit() const;
  void _internal_set_future_time_limit(::uint64_t value);

  public:
  // uint64 difficulty_block_window = 5;
  void clear_difficulty_block_window() ;
  ::uint64_t difficulty_block_window() const;
  void set_difficulty_block_window(::uint64_t value);

  private:
  ::uint64_t _internal_difficulty_block_window() const;
  void _internal_set_difficulty_block_window(::uint64_t value);

  public:
  // uint64 max_block_transaction_weight = 7;
  void clear_max_block_transaction_weight() ;
  ::uint64_t max_block_transaction_weight() const;
  void set_max_block_transaction_weight(::uint64_t value);

  private:
  ::uint64_t _internal_max_block_transaction_weight() const;
  void _internal_set_max_block_transaction_weight(::uint64_t value);

  public:
  // uint64 pow_algo_count = 8;
  void clear_pow_algo_count() ;
  ::uint64_t pow_algo_count() const;
  void set_pow_algo_count(::uint64_t value);

  private:
  ::uint64_t _internal_pow_algo_count() const;
  void _internal_set_pow_algo_count(::uint64_t value);

  public:
  // uint64 median_timestamp_count = 9;
  void clear_median_timestamp_count() ;
  ::uint64_t median_timestamp_count() const;
  void set_median_timestamp_count(::uint64_t value);

  private:
  ::uint64_t _internal_median_timestamp_count() const;
  void _internal_set_median_timestamp_count(::uint64_t value);

  public:
  // uint64 emission_initial = 10;
  void clear_emission_initial() ;
  ::uint64_t emission_initial() const;
  void set_emission_initial(::uint64_t value);

  private:
  ::uint64_t _internal_emission_initial() const;
  void _internal_set_emission_initial(::uint64_t value);

  public:
  // uint64 emission_tail = 12 [deprecated = true];
  [[deprecated]]  void clear_emission_tail() ;
  [[deprecated]] ::uint64_t emission_tail() const;
  [[deprecated]] void set_emission_tail(::uint64_t value);

  private:
  ::uint64_t _internal_emission_tail() const;
  void _internal_set_emission_tail(::uint64_t value);

  public:
  // uint64 min_sha3x_pow_difficulty = 13;
  void clear_min_sha3x_pow_difficulty() ;
  ::uint64_t min_sha3x_pow_difficulty() const;
  void set_min_sha3x_pow_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_min_sha3x_pow_difficulty() const;
  void _internal_set_min_sha3x_pow_difficulty(::uint64_t value);

  public:
  // uint64 block_weight_inputs = 14;
  void clear_block_weight_inputs() ;
  ::uint64_t block_weight_inputs() const;
  void set_block_weight_inputs(::uint64_t value);

  private:
  ::uint64_t _internal_block_weight_inputs() const;
  void _internal_set_block_weight_inputs(::uint64_t value);

  public:
  // uint64 block_weight_outputs = 15;
  void clear_block_weight_outputs() ;
  ::uint64_t block_weight_outputs() const;
  void set_block_weight_outputs(::uint64_t value);

  private:
  ::uint64_t _internal_block_weight_outputs() const;
  void _internal_set_block_weight_outputs(::uint64_t value);

  public:
  // uint64 block_weight_kernels = 16;
  void clear_block_weight_kernels() ;
  ::uint64_t block_weight_kernels() const;
  void set_block_weight_kernels(::uint64_t value);

  private:
  ::uint64_t _internal_block_weight_kernels() const;
  void _internal_set_block_weight_kernels(::uint64_t value);

  public:
  // uint64 faucet_value = 17;
  void clear_faucet_value() ;
  ::uint64_t faucet_value() const;
  void set_faucet_value(::uint64_t value);

  private:
  ::uint64_t _internal_faucet_value() const;
  void _internal_set_faucet_value(::uint64_t value);

  public:
  // uint64 max_script_byte_size = 18;
  void clear_max_script_byte_size() ;
  ::uint64_t max_script_byte_size() const;
  void set_max_script_byte_size(::uint64_t value);

  private:
  ::uint64_t _internal_max_script_byte_size() const;
  void _internal_set_max_script_byte_size(::uint64_t value);

  public:
  // uint64 validator_node_validity_period = 19;
  void clear_validator_node_validity_period() ;
  ::uint64_t validator_node_validity_period() const;
  void set_validator_node_validity_period(::uint64_t value);

  private:
  ::uint64_t _internal_validator_node_validity_period() const;
  void _internal_set_validator_node_validity_period(::uint64_t value);

  public:
  // uint64 effective_from_height = 20;
  void clear_effective_from_height() ;
  ::uint64_t effective_from_height() const;
  void set_effective_from_height(::uint64_t value);

  private:
  ::uint64_t _internal_effective_from_height() const;
  void _internal_set_effective_from_height(::uint64_t value);

  public:
  // uint64 max_randomx_seed_height = 22;
  void clear_max_randomx_seed_height() ;
  ::uint64_t max_randomx_seed_height() const;
  void set_max_randomx_seed_height(::uint64_t value);

  private:
  ::uint64_t _internal_max_randomx_seed_height() const;
  void _internal_set_max_randomx_seed_height(::uint64_t value);

  public:
  // uint64 epoch_length = 30;
  void clear_epoch_length() ;
  ::uint64_t epoch_length() const;
  void set_epoch_length(::uint64_t value);

  private:
  ::uint64_t _internal_epoch_length() const;
  void _internal_set_epoch_length(::uint64_t value);

  public:
  // uint64 validator_node_registration_min_deposit_amount = 31;
  void clear_validator_node_registration_min_deposit_amount() ;
  ::uint64_t validator_node_registration_min_deposit_amount() const;
  void set_validator_node_registration_min_deposit_amount(::uint64_t value);

  private:
  ::uint64_t _internal_validator_node_registration_min_deposit_amount() const;
  void _internal_set_validator_node_registration_min_deposit_amount(::uint64_t value);

  public:
  // uint64 validator_node_registration_min_lock_height = 32;
  void clear_validator_node_registration_min_lock_height() ;
  ::uint64_t validator_node_registration_min_lock_height() const;
  void set_validator_node_registration_min_lock_height(::uint64_t value);

  private:
  ::uint64_t _internal_validator_node_registration_min_lock_height() const;
  void _internal_set_validator_node_registration_min_lock_height(::uint64_t value);

  public:
  // uint64 validator_node_registration_shuffle_interval_epoch = 33;
  void clear_validator_node_registration_shuffle_interval_epoch() ;
  ::uint64_t validator_node_registration_shuffle_interval_epoch() const;
  void set_validator_node_registration_shuffle_interval_epoch(::uint64_t value);

  private:
  ::uint64_t _internal_validator_node_registration_shuffle_interval_epoch() const;
  void _internal_set_validator_node_registration_shuffle_interval_epoch(::uint64_t value);

  public:
  // uint64 inflation_bips = 35;
  void clear_inflation_bips() ;
  ::uint64_t inflation_bips() const;
  void set_inflation_bips(::uint64_t value);

  private:
  ::uint64_t _internal_inflation_bips() const;
  void _internal_set_inflation_bips(::uint64_t value);

  public:
  // uint64 tail_epoch_length = 36;
  void clear_tail_epoch_length() ;
  ::uint64_t tail_epoch_length() const;
  void set_tail_epoch_length(::uint64_t value);

  private:
  ::uint64_t _internal_tail_epoch_length() const;
  void _internal_set_tail_epoch_length(::uint64_t value);

  public:
  // uint32 blockchain_version = 2;
  void clear_blockchain_version() ;
  ::uint32_t blockchain_version() const;
  void set_blockchain_version(::uint32_t value);

  private:
  ::uint32_t _internal_blockchain_version() const;
  void _internal_set_blockchain_version(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ConsensusConstants)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      5, 33, 8,
      0, 7>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint64_t> emission_decay_;
    mutable ::google::protobuf::internal::CachedSize _emission_decay_cached_byte_size_;
    ::google::protobuf::internal::MapField<ConsensusConstants_ProofOfWorkEntry_DoNotUse, ::uint32_t, ::tari::rpc::PowAlgorithmConstants,
                      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>
        proof_of_work_;
    ::google::protobuf::RepeatedField<int> permitted_output_types_;
    mutable ::google::protobuf::internal::CachedSize _permitted_output_types_cached_byte_size_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::PermittedRangeProofs > permitted_range_proof_types_;
    ::tari::rpc::Range* valid_blockchain_version_range_;
    ::tari::rpc::WeightParams* transaction_weight_;
    ::tari::rpc::Range* input_version_range_;
    ::tari::rpc::OutputsVersion* output_version_range_;
    ::tari::rpc::Range* kernel_version_range_;
    ::uint64_t coinbase_min_maturity_;
    ::uint64_t future_time_limit_;
    ::uint64_t difficulty_block_window_;
    ::uint64_t max_block_transaction_weight_;
    ::uint64_t pow_algo_count_;
    ::uint64_t median_timestamp_count_;
    ::uint64_t emission_initial_;
    ::uint64_t emission_tail_;
    ::uint64_t min_sha3x_pow_difficulty_;
    ::uint64_t block_weight_inputs_;
    ::uint64_t block_weight_outputs_;
    ::uint64_t block_weight_kernels_;
    ::uint64_t faucet_value_;
    ::uint64_t max_script_byte_size_;
    ::uint64_t validator_node_validity_period_;
    ::uint64_t effective_from_height_;
    ::uint64_t max_randomx_seed_height_;
    ::uint64_t epoch_length_;
    ::uint64_t validator_node_registration_min_deposit_amount_;
    ::uint64_t validator_node_registration_min_lock_height_;
    ::uint64_t validator_node_registration_shuffle_interval_epoch_;
    ::uint64_t inflation_bips_;
    ::uint64_t tail_epoch_length_;
    ::uint32_t blockchain_version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_types_2eproto;
};

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// Range

// uint64 min = 1;
inline void Range::clear_min() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_ = ::uint64_t{0u};
}
inline ::uint64_t Range::min() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Range.min)
  return _internal_min();
}
inline void Range::set_min(::uint64_t value) {
  _internal_set_min(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Range.min)
}
inline ::uint64_t Range::_internal_min() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.min_;
}
inline void Range::_internal_set_min(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_ = value;
}

// uint64 max = 2;
inline void Range::clear_max() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_ = ::uint64_t{0u};
}
inline ::uint64_t Range::max() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Range.max)
  return _internal_max();
}
inline void Range::set_max(::uint64_t value) {
  _internal_set_max(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Range.max)
}
inline ::uint64_t Range::_internal_max() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_;
}
inline void Range::_internal_set_max(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_ = value;
}

// -------------------------------------------------------------------

// Empty

// -------------------------------------------------------------------

// BlockHeight

// uint64 block_height = 1;
inline void BlockHeight::clear_block_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_height_ = ::uint64_t{0u};
}
inline ::uint64_t BlockHeight::block_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeight.block_height)
  return _internal_block_height();
}
inline void BlockHeight::set_block_height(::uint64_t value) {
  _internal_set_block_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockHeight.block_height)
}
inline ::uint64_t BlockHeight::_internal_block_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_height_;
}
inline void BlockHeight::_internal_set_block_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_height_ = value;
}

// -------------------------------------------------------------------

// Signature

// bytes public_nonce = 1;
inline void Signature::clear_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.ClearToEmpty();
}
inline const std::string& Signature::public_nonce() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Signature.public_nonce)
  return _internal_public_nonce();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Signature::set_public_nonce(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Signature.public_nonce)
}
inline std::string* Signature::mutable_public_nonce() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_nonce();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Signature.public_nonce)
  return _s;
}
inline const std::string& Signature::_internal_public_nonce() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_nonce_.Get();
}
inline void Signature::_internal_set_public_nonce(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.Set(value, GetArena());
}
inline std::string* Signature::_internal_mutable_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_nonce_.Mutable( GetArena());
}
inline std::string* Signature::release_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Signature.public_nonce)
  return _impl_.public_nonce_.Release();
}
inline void Signature::set_allocated_public_nonce(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.public_nonce_.IsDefault()) {
          _impl_.public_nonce_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Signature.public_nonce)
}

// bytes signature = 2;
inline void Signature::clear_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.signature_.ClearToEmpty();
}
inline const std::string& Signature::signature() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Signature.signature)
  return _internal_signature();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Signature::set_signature(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.signature_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Signature.signature)
}
inline std::string* Signature::mutable_signature() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_signature();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Signature.signature)
  return _s;
}
inline const std::string& Signature::_internal_signature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.signature_.Get();
}
inline void Signature::_internal_set_signature(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.signature_.Set(value, GetArena());
}
inline std::string* Signature::_internal_mutable_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.signature_.Mutable( GetArena());
}
inline std::string* Signature::release_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Signature.signature)
  return _impl_.signature_.Release();
}
inline void Signature::set_allocated_signature(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.signature_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.signature_.IsDefault()) {
          _impl_.signature_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Signature.signature)
}

// -------------------------------------------------------------------

// ComAndPubSignature

// bytes ephemeral_commitment = 1;
inline void ComAndPubSignature::clear_ephemeral_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_commitment_.ClearToEmpty();
}
inline const std::string& ComAndPubSignature::ephemeral_commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ComAndPubSignature.ephemeral_commitment)
  return _internal_ephemeral_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ComAndPubSignature::set_ephemeral_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ComAndPubSignature.ephemeral_commitment)
}
inline std::string* ComAndPubSignature::mutable_ephemeral_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_ephemeral_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ComAndPubSignature.ephemeral_commitment)
  return _s;
}
inline const std::string& ComAndPubSignature::_internal_ephemeral_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.ephemeral_commitment_.Get();
}
inline void ComAndPubSignature::_internal_set_ephemeral_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_commitment_.Set(value, GetArena());
}
inline std::string* ComAndPubSignature::_internal_mutable_ephemeral_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.ephemeral_commitment_.Mutable( GetArena());
}
inline std::string* ComAndPubSignature::release_ephemeral_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ComAndPubSignature.ephemeral_commitment)
  return _impl_.ephemeral_commitment_.Release();
}
inline void ComAndPubSignature::set_allocated_ephemeral_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.ephemeral_commitment_.IsDefault()) {
          _impl_.ephemeral_commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ComAndPubSignature.ephemeral_commitment)
}

// bytes ephemeral_pubkey = 2;
inline void ComAndPubSignature::clear_ephemeral_pubkey() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_pubkey_.ClearToEmpty();
}
inline const std::string& ComAndPubSignature::ephemeral_pubkey() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ComAndPubSignature.ephemeral_pubkey)
  return _internal_ephemeral_pubkey();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ComAndPubSignature::set_ephemeral_pubkey(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_pubkey_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ComAndPubSignature.ephemeral_pubkey)
}
inline std::string* ComAndPubSignature::mutable_ephemeral_pubkey() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_ephemeral_pubkey();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ComAndPubSignature.ephemeral_pubkey)
  return _s;
}
inline const std::string& ComAndPubSignature::_internal_ephemeral_pubkey() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.ephemeral_pubkey_.Get();
}
inline void ComAndPubSignature::_internal_set_ephemeral_pubkey(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_pubkey_.Set(value, GetArena());
}
inline std::string* ComAndPubSignature::_internal_mutable_ephemeral_pubkey() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.ephemeral_pubkey_.Mutable( GetArena());
}
inline std::string* ComAndPubSignature::release_ephemeral_pubkey() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ComAndPubSignature.ephemeral_pubkey)
  return _impl_.ephemeral_pubkey_.Release();
}
inline void ComAndPubSignature::set_allocated_ephemeral_pubkey(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.ephemeral_pubkey_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.ephemeral_pubkey_.IsDefault()) {
          _impl_.ephemeral_pubkey_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ComAndPubSignature.ephemeral_pubkey)
}

// bytes u_a = 3;
inline void ComAndPubSignature::clear_u_a() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_a_.ClearToEmpty();
}
inline const std::string& ComAndPubSignature::u_a() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ComAndPubSignature.u_a)
  return _internal_u_a();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ComAndPubSignature::set_u_a(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_a_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ComAndPubSignature.u_a)
}
inline std::string* ComAndPubSignature::mutable_u_a() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_u_a();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ComAndPubSignature.u_a)
  return _s;
}
inline const std::string& ComAndPubSignature::_internal_u_a() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.u_a_.Get();
}
inline void ComAndPubSignature::_internal_set_u_a(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_a_.Set(value, GetArena());
}
inline std::string* ComAndPubSignature::_internal_mutable_u_a() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.u_a_.Mutable( GetArena());
}
inline std::string* ComAndPubSignature::release_u_a() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ComAndPubSignature.u_a)
  return _impl_.u_a_.Release();
}
inline void ComAndPubSignature::set_allocated_u_a(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_a_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u_a_.IsDefault()) {
          _impl_.u_a_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ComAndPubSignature.u_a)
}

// bytes u_x = 4;
inline void ComAndPubSignature::clear_u_x() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_x_.ClearToEmpty();
}
inline const std::string& ComAndPubSignature::u_x() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ComAndPubSignature.u_x)
  return _internal_u_x();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ComAndPubSignature::set_u_x(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_x_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ComAndPubSignature.u_x)
}
inline std::string* ComAndPubSignature::mutable_u_x() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_u_x();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ComAndPubSignature.u_x)
  return _s;
}
inline const std::string& ComAndPubSignature::_internal_u_x() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.u_x_.Get();
}
inline void ComAndPubSignature::_internal_set_u_x(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_x_.Set(value, GetArena());
}
inline std::string* ComAndPubSignature::_internal_mutable_u_x() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.u_x_.Mutable( GetArena());
}
inline std::string* ComAndPubSignature::release_u_x() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ComAndPubSignature.u_x)
  return _impl_.u_x_.Release();
}
inline void ComAndPubSignature::set_allocated_u_x(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_x_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u_x_.IsDefault()) {
          _impl_.u_x_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ComAndPubSignature.u_x)
}

// bytes u_y = 5;
inline void ComAndPubSignature::clear_u_y() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_y_.ClearToEmpty();
}
inline const std::string& ComAndPubSignature::u_y() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ComAndPubSignature.u_y)
  return _internal_u_y();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ComAndPubSignature::set_u_y(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_y_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ComAndPubSignature.u_y)
}
inline std::string* ComAndPubSignature::mutable_u_y() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_u_y();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ComAndPubSignature.u_y)
  return _s;
}
inline const std::string& ComAndPubSignature::_internal_u_y() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.u_y_.Get();
}
inline void ComAndPubSignature::_internal_set_u_y(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_y_.Set(value, GetArena());
}
inline std::string* ComAndPubSignature::_internal_mutable_u_y() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.u_y_.Mutable( GetArena());
}
inline std::string* ComAndPubSignature::release_u_y() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ComAndPubSignature.u_y)
  return _impl_.u_y_.Release();
}
inline void ComAndPubSignature::set_allocated_u_y(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_y_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u_y_.IsDefault()) {
          _impl_.u_y_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ComAndPubSignature.u_y)
}

// -------------------------------------------------------------------

// CommitmentSignature

// bytes public_nonce = 1;
inline void CommitmentSignature::clear_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.ClearToEmpty();
}
inline const std::string& CommitmentSignature::public_nonce() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.CommitmentSignature.public_nonce)
  return _internal_public_nonce();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CommitmentSignature::set_public_nonce(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.CommitmentSignature.public_nonce)
}
inline std::string* CommitmentSignature::mutable_public_nonce() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_nonce();
  // @@protoc_insertion_point(field_mutable:tari.rpc.CommitmentSignature.public_nonce)
  return _s;
}
inline const std::string& CommitmentSignature::_internal_public_nonce() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_nonce_.Get();
}
inline void CommitmentSignature::_internal_set_public_nonce(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.Set(value, GetArena());
}
inline std::string* CommitmentSignature::_internal_mutable_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_nonce_.Mutable( GetArena());
}
inline std::string* CommitmentSignature::release_public_nonce() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.CommitmentSignature.public_nonce)
  return _impl_.public_nonce_.Release();
}
inline void CommitmentSignature::set_allocated_public_nonce(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_nonce_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.public_nonce_.IsDefault()) {
          _impl_.public_nonce_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.CommitmentSignature.public_nonce)
}

// bytes u = 2;
inline void CommitmentSignature::clear_u() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_.ClearToEmpty();
}
inline const std::string& CommitmentSignature::u() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.CommitmentSignature.u)
  return _internal_u();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CommitmentSignature::set_u(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.CommitmentSignature.u)
}
inline std::string* CommitmentSignature::mutable_u() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_u();
  // @@protoc_insertion_point(field_mutable:tari.rpc.CommitmentSignature.u)
  return _s;
}
inline const std::string& CommitmentSignature::_internal_u() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.u_.Get();
}
inline void CommitmentSignature::_internal_set_u(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_.Set(value, GetArena());
}
inline std::string* CommitmentSignature::_internal_mutable_u() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.u_.Mutable( GetArena());
}
inline std::string* CommitmentSignature::release_u() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.CommitmentSignature.u)
  return _impl_.u_.Release();
}
inline void CommitmentSignature::set_allocated_u(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.u_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.u_.IsDefault()) {
          _impl_.u_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.CommitmentSignature.u)
}

// bytes v = 3;
inline void CommitmentSignature::clear_v() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.v_.ClearToEmpty();
}
inline const std::string& CommitmentSignature::v() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.CommitmentSignature.v)
  return _internal_v();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void CommitmentSignature::set_v(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.v_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.CommitmentSignature.v)
}
inline std::string* CommitmentSignature::mutable_v() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_v();
  // @@protoc_insertion_point(field_mutable:tari.rpc.CommitmentSignature.v)
  return _s;
}
inline const std::string& CommitmentSignature::_internal_v() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.v_.Get();
}
inline void CommitmentSignature::_internal_set_v(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.v_.Set(value, GetArena());
}
inline std::string* CommitmentSignature::_internal_mutable_v() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.v_.Mutable( GetArena());
}
inline std::string* CommitmentSignature::release_v() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.CommitmentSignature.v)
  return _impl_.v_.Release();
}
inline void CommitmentSignature::set_allocated_v(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.v_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.v_.IsDefault()) {
          _impl_.v_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.CommitmentSignature.v)
}

// -------------------------------------------------------------------

// PowAlgorithmConstants

// uint64 min_difficulty = 2;
inline void PowAlgorithmConstants::clear_min_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t PowAlgorithmConstants::min_difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.PowAlgorithmConstants.min_difficulty)
  return _internal_min_difficulty();
}
inline void PowAlgorithmConstants::set_min_difficulty(::uint64_t value) {
  _internal_set_min_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.PowAlgorithmConstants.min_difficulty)
}
inline ::uint64_t PowAlgorithmConstants::_internal_min_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.min_difficulty_;
}
inline void PowAlgorithmConstants::_internal_set_min_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_difficulty_ = value;
}

// uint64 max_difficulty = 3;
inline void PowAlgorithmConstants::clear_max_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t PowAlgorithmConstants::max_difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.PowAlgorithmConstants.max_difficulty)
  return _internal_max_difficulty();
}
inline void PowAlgorithmConstants::set_max_difficulty(::uint64_t value) {
  _internal_set_max_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.PowAlgorithmConstants.max_difficulty)
}
inline ::uint64_t PowAlgorithmConstants::_internal_max_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_difficulty_;
}
inline void PowAlgorithmConstants::_internal_set_max_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_difficulty_ = value;
}

// uint64 target_time = 4;
inline void PowAlgorithmConstants::clear_target_time() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_time_ = ::uint64_t{0u};
}
inline ::uint64_t PowAlgorithmConstants::target_time() const {
  // @@protoc_insertion_point(field_get:tari.rpc.PowAlgorithmConstants.target_time)
  return _internal_target_time();
}
inline void PowAlgorithmConstants::set_target_time(::uint64_t value) {
  _internal_set_target_time(value);
  // @@protoc_insertion_point(field_set:tari.rpc.PowAlgorithmConstants.target_time)
}
inline ::uint64_t PowAlgorithmConstants::_internal_target_time() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_time_;
}
inline void PowAlgorithmConstants::_internal_set_target_time(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_time_ = value;
}

// -------------------------------------------------------------------

// WeightParams

// uint64 kernel_weight = 1;
inline void WeightParams::clear_kernel_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.kernel_weight_ = ::uint64_t{0u};
}
inline ::uint64_t WeightParams::kernel_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.WeightParams.kernel_weight)
  return _internal_kernel_weight();
}
inline void WeightParams::set_kernel_weight(::uint64_t value) {
  _internal_set_kernel_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.WeightParams.kernel_weight)
}
inline ::uint64_t WeightParams::_internal_kernel_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.kernel_weight_;
}
inline void WeightParams::_internal_set_kernel_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.kernel_weight_ = value;
}

// uint64 input_weight = 2;
inline void WeightParams::clear_input_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_weight_ = ::uint64_t{0u};
}
inline ::uint64_t WeightParams::input_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.WeightParams.input_weight)
  return _internal_input_weight();
}
inline void WeightParams::set_input_weight(::uint64_t value) {
  _internal_set_input_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.WeightParams.input_weight)
}
inline ::uint64_t WeightParams::_internal_input_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.input_weight_;
}
inline void WeightParams::_internal_set_input_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_weight_ = value;
}

// uint64 output_weight = 3;
inline void WeightParams::clear_output_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_weight_ = ::uint64_t{0u};
}
inline ::uint64_t WeightParams::output_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.WeightParams.output_weight)
  return _internal_output_weight();
}
inline void WeightParams::set_output_weight(::uint64_t value) {
  _internal_set_output_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.WeightParams.output_weight)
}
inline ::uint64_t WeightParams::_internal_output_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.output_weight_;
}
inline void WeightParams::_internal_set_output_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_weight_ = value;
}

// uint64 features_and_scripts_bytes_per_gram = 4;
inline void WeightParams::clear_features_and_scripts_bytes_per_gram() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.features_and_scripts_bytes_per_gram_ = ::uint64_t{0u};
}
inline ::uint64_t WeightParams::features_and_scripts_bytes_per_gram() const {
  // @@protoc_insertion_point(field_get:tari.rpc.WeightParams.features_and_scripts_bytes_per_gram)
  return _internal_features_and_scripts_bytes_per_gram();
}
inline void WeightParams::set_features_and_scripts_bytes_per_gram(::uint64_t value) {
  _internal_set_features_and_scripts_bytes_per_gram(value);
  // @@protoc_insertion_point(field_set:tari.rpc.WeightParams.features_and_scripts_bytes_per_gram)
}
inline ::uint64_t WeightParams::_internal_features_and_scripts_bytes_per_gram() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.features_and_scripts_bytes_per_gram_;
}
inline void WeightParams::_internal_set_features_and_scripts_bytes_per_gram(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.features_and_scripts_bytes_per_gram_ = value;
}

// -------------------------------------------------------------------

// OutputsVersion

// .tari.rpc.Range outputs = 1;
inline bool OutputsVersion::has_outputs() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.outputs_ != nullptr);
  return value;
}
inline void OutputsVersion::clear_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.outputs_ != nullptr) _impl_.outputs_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::Range& OutputsVersion::_internal_outputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Range* p = _impl_.outputs_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Range&>(::tari::rpc::_Range_default_instance_);
}
inline const ::tari::rpc::Range& OutputsVersion::outputs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputsVersion.outputs)
  return _internal_outputs();
}
inline void OutputsVersion::unsafe_arena_set_allocated_outputs(::tari::rpc::Range* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outputs_);
  }
  _impl_.outputs_ = reinterpret_cast<::tari::rpc::Range*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.OutputsVersion.outputs)
}
inline ::tari::rpc::Range* OutputsVersion::release_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Range* released = _impl_.outputs_;
  _impl_.outputs_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::Range* OutputsVersion::unsafe_arena_release_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.OutputsVersion.outputs)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Range* temp = _impl_.outputs_;
  _impl_.outputs_ = nullptr;
  return temp;
}
inline ::tari::rpc::Range* OutputsVersion::_internal_mutable_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.outputs_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Range>(GetArena());
    _impl_.outputs_ = reinterpret_cast<::tari::rpc::Range*>(p);
  }
  return _impl_.outputs_;
}
inline ::tari::rpc::Range* OutputsVersion::mutable_outputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Range* _msg = _internal_mutable_outputs();
  // @@protoc_insertion_point(field_mutable:tari.rpc.OutputsVersion.outputs)
  return _msg;
}
inline void OutputsVersion::set_allocated_outputs(::tari::rpc::Range* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.outputs_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.outputs_ = reinterpret_cast<::tari::rpc::Range*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.OutputsVersion.outputs)
}

// .tari.rpc.Range features = 2;
inline bool OutputsVersion::has_features() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.features_ != nullptr);
  return value;
}
inline void OutputsVersion::clear_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.features_ != nullptr) _impl_.features_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::tari::rpc::Range& OutputsVersion::_internal_features() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Range* p = _impl_.features_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Range&>(::tari::rpc::_Range_default_instance_);
}
inline const ::tari::rpc::Range& OutputsVersion::features() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputsVersion.features)
  return _internal_features();
}
inline void OutputsVersion::unsafe_arena_set_allocated_features(::tari::rpc::Range* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.features_);
  }
  _impl_.features_ = reinterpret_cast<::tari::rpc::Range*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.OutputsVersion.features)
}
inline ::tari::rpc::Range* OutputsVersion::release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::Range* released = _impl_.features_;
  _impl_.features_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::Range* OutputsVersion::unsafe_arena_release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.OutputsVersion.features)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::Range* temp = _impl_.features_;
  _impl_.features_ = nullptr;
  return temp;
}
inline ::tari::rpc::Range* OutputsVersion::_internal_mutable_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.features_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Range>(GetArena());
    _impl_.features_ = reinterpret_cast<::tari::rpc::Range*>(p);
  }
  return _impl_.features_;
}
inline ::tari::rpc::Range* OutputsVersion::mutable_features() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::Range* _msg = _internal_mutable_features();
  // @@protoc_insertion_point(field_mutable:tari.rpc.OutputsVersion.features)
  return _msg;
}
inline void OutputsVersion::set_allocated_features(::tari::rpc::Range* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.features_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.features_ = reinterpret_cast<::tari::rpc::Range*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.OutputsVersion.features)
}

// -------------------------------------------------------------------

// PermittedRangeProofs

// .tari.rpc.OutputType output_type = 1;
inline void PermittedRangeProofs::clear_output_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_type_ = 0;
}
inline ::tari::rpc::OutputType PermittedRangeProofs::output_type() const {
  // @@protoc_insertion_point(field_get:tari.rpc.PermittedRangeProofs.output_type)
  return _internal_output_type();
}
inline void PermittedRangeProofs::set_output_type(::tari::rpc::OutputType value) {
  _internal_set_output_type(value);
  // @@protoc_insertion_point(field_set:tari.rpc.PermittedRangeProofs.output_type)
}
inline ::tari::rpc::OutputType PermittedRangeProofs::_internal_output_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::OutputType>(_impl_.output_type_);
}
inline void PermittedRangeProofs::_internal_set_output_type(::tari::rpc::OutputType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_type_ = value;
}

// repeated .tari.rpc.RangeProofType range_proof_types = 2;
inline int PermittedRangeProofs::_internal_range_proof_types_size() const {
  return _internal_range_proof_types().size();
}
inline int PermittedRangeProofs::range_proof_types_size() const {
  return _internal_range_proof_types_size();
}
inline void PermittedRangeProofs::clear_range_proof_types() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.range_proof_types_.Clear();
}
inline ::tari::rpc::RangeProofType PermittedRangeProofs::range_proof_types(int index) const {
  // @@protoc_insertion_point(field_get:tari.rpc.PermittedRangeProofs.range_proof_types)
  return static_cast<::tari::rpc::RangeProofType>(_internal_range_proof_types().Get(index));
}
inline void PermittedRangeProofs::set_range_proof_types(int index, ::tari::rpc::RangeProofType value) {
  _internal_mutable_range_proof_types()->Set(index, value);
  // @@protoc_insertion_point(field_set:tari.rpc.PermittedRangeProofs.range_proof_types)
}
inline void PermittedRangeProofs::add_range_proof_types(::tari::rpc::RangeProofType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_range_proof_types()->Add(value);
  // @@protoc_insertion_point(field_add:tari.rpc.PermittedRangeProofs.range_proof_types)
}
inline const ::google::protobuf::RepeatedField<int>& PermittedRangeProofs::range_proof_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.PermittedRangeProofs.range_proof_types)
  return _internal_range_proof_types();
}
inline ::google::protobuf::RepeatedField<int>* PermittedRangeProofs::mutable_range_proof_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.PermittedRangeProofs.range_proof_types)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_range_proof_types();
}
inline const ::google::protobuf::RepeatedField<int>& PermittedRangeProofs::_internal_range_proof_types()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.range_proof_types_;
}
inline ::google::protobuf::RepeatedField<int>* PermittedRangeProofs::_internal_mutable_range_proof_types() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.range_proof_types_;
}

// -------------------------------------------------------------------

// RangeProof

// bytes proof_bytes = 1;
inline void RangeProof::clear_proof_bytes() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.proof_bytes_.ClearToEmpty();
}
inline const std::string& RangeProof::proof_bytes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.RangeProof.proof_bytes)
  return _internal_proof_bytes();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RangeProof::set_proof_bytes(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.proof_bytes_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.RangeProof.proof_bytes)
}
inline std::string* RangeProof::mutable_proof_bytes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_proof_bytes();
  // @@protoc_insertion_point(field_mutable:tari.rpc.RangeProof.proof_bytes)
  return _s;
}
inline const std::string& RangeProof::_internal_proof_bytes() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.proof_bytes_.Get();
}
inline void RangeProof::_internal_set_proof_bytes(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.proof_bytes_.Set(value, GetArena());
}
inline std::string* RangeProof::_internal_mutable_proof_bytes() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.proof_bytes_.Mutable( GetArena());
}
inline std::string* RangeProof::release_proof_bytes() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.RangeProof.proof_bytes)
  return _impl_.proof_bytes_.Release();
}
inline void RangeProof::set_allocated_proof_bytes(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.proof_bytes_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.proof_bytes_.IsDefault()) {
          _impl_.proof_bytes_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.RangeProof.proof_bytes)
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// ConsensusConstants

// uint64 coinbase_min_maturity = 1;
inline void ConsensusConstants::clear_coinbase_min_maturity() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_min_maturity_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::coinbase_min_maturity() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.coinbase_min_maturity)
  return _internal_coinbase_min_maturity();
}
inline void ConsensusConstants::set_coinbase_min_maturity(::uint64_t value) {
  _internal_set_coinbase_min_maturity(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.coinbase_min_maturity)
}
inline ::uint64_t ConsensusConstants::_internal_coinbase_min_maturity() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.coinbase_min_maturity_;
}
inline void ConsensusConstants::_internal_set_coinbase_min_maturity(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_min_maturity_ = value;
}

// uint32 blockchain_version = 2;
inline void ConsensusConstants::clear_blockchain_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.blockchain_version_ = 0u;
}
inline ::uint32_t ConsensusConstants::blockchain_version() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.blockchain_version)
  return _internal_blockchain_version();
}
inline void ConsensusConstants::set_blockchain_version(::uint32_t value) {
  _internal_set_blockchain_version(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.blockchain_version)
}
inline ::uint32_t ConsensusConstants::_internal_blockchain_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.blockchain_version_;
}
inline void ConsensusConstants::_internal_set_blockchain_version(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.blockchain_version_ = value;
}

// uint64 future_time_limit = 3;
inline void ConsensusConstants::clear_future_time_limit() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.future_time_limit_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::future_time_limit() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.future_time_limit)
  return _internal_future_time_limit();
}
inline void ConsensusConstants::set_future_time_limit(::uint64_t value) {
  _internal_set_future_time_limit(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.future_time_limit)
}
inline ::uint64_t ConsensusConstants::_internal_future_time_limit() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.future_time_limit_;
}
inline void ConsensusConstants::_internal_set_future_time_limit(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.future_time_limit_ = value;
}

// uint64 difficulty_block_window = 5;
inline void ConsensusConstants::clear_difficulty_block_window() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_block_window_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::difficulty_block_window() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.difficulty_block_window)
  return _internal_difficulty_block_window();
}
inline void ConsensusConstants::set_difficulty_block_window(::uint64_t value) {
  _internal_set_difficulty_block_window(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.difficulty_block_window)
}
inline ::uint64_t ConsensusConstants::_internal_difficulty_block_window() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.difficulty_block_window_;
}
inline void ConsensusConstants::_internal_set_difficulty_block_window(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_block_window_ = value;
}

// uint64 max_block_transaction_weight = 7;
inline void ConsensusConstants::clear_max_block_transaction_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_block_transaction_weight_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::max_block_transaction_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.max_block_transaction_weight)
  return _internal_max_block_transaction_weight();
}
inline void ConsensusConstants::set_max_block_transaction_weight(::uint64_t value) {
  _internal_set_max_block_transaction_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.max_block_transaction_weight)
}
inline ::uint64_t ConsensusConstants::_internal_max_block_transaction_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_block_transaction_weight_;
}
inline void ConsensusConstants::_internal_set_max_block_transaction_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_block_transaction_weight_ = value;
}

// uint64 pow_algo_count = 8;
inline void ConsensusConstants::clear_pow_algo_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pow_algo_count_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::pow_algo_count() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.pow_algo_count)
  return _internal_pow_algo_count();
}
inline void ConsensusConstants::set_pow_algo_count(::uint64_t value) {
  _internal_set_pow_algo_count(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.pow_algo_count)
}
inline ::uint64_t ConsensusConstants::_internal_pow_algo_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.pow_algo_count_;
}
inline void ConsensusConstants::_internal_set_pow_algo_count(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pow_algo_count_ = value;
}

// uint64 median_timestamp_count = 9;
inline void ConsensusConstants::clear_median_timestamp_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.median_timestamp_count_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::median_timestamp_count() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.median_timestamp_count)
  return _internal_median_timestamp_count();
}
inline void ConsensusConstants::set_median_timestamp_count(::uint64_t value) {
  _internal_set_median_timestamp_count(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.median_timestamp_count)
}
inline ::uint64_t ConsensusConstants::_internal_median_timestamp_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.median_timestamp_count_;
}
inline void ConsensusConstants::_internal_set_median_timestamp_count(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.median_timestamp_count_ = value;
}

// uint64 emission_initial = 10;
inline void ConsensusConstants::clear_emission_initial() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.emission_initial_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::emission_initial() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.emission_initial)
  return _internal_emission_initial();
}
inline void ConsensusConstants::set_emission_initial(::uint64_t value) {
  _internal_set_emission_initial(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.emission_initial)
}
inline ::uint64_t ConsensusConstants::_internal_emission_initial() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.emission_initial_;
}
inline void ConsensusConstants::_internal_set_emission_initial(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.emission_initial_ = value;
}

// repeated uint64 emission_decay = 11;
inline int ConsensusConstants::_internal_emission_decay_size() const {
  return _internal_emission_decay().size();
}
inline int ConsensusConstants::emission_decay_size() const {
  return _internal_emission_decay_size();
}
inline void ConsensusConstants::clear_emission_decay() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.emission_decay_.Clear();
}
inline ::uint64_t ConsensusConstants::emission_decay(int index) const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.emission_decay)
  return _internal_emission_decay().Get(index);
}
inline void ConsensusConstants::set_emission_decay(int index, ::uint64_t value) {
  _internal_mutable_emission_decay()->Set(index, value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.emission_decay)
}
inline void ConsensusConstants::add_emission_decay(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_emission_decay()->Add(value);
  // @@protoc_insertion_point(field_add:tari.rpc.ConsensusConstants.emission_decay)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& ConsensusConstants::emission_decay() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.ConsensusConstants.emission_decay)
  return _internal_emission_decay();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* ConsensusConstants::mutable_emission_decay()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.ConsensusConstants.emission_decay)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_emission_decay();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
ConsensusConstants::_internal_emission_decay() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.emission_decay_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* ConsensusConstants::_internal_mutable_emission_decay() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.emission_decay_;
}

// uint64 emission_tail = 12 [deprecated = true];
inline void ConsensusConstants::clear_emission_tail() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.emission_tail_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::emission_tail() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.emission_tail)
  return _internal_emission_tail();
}
inline void ConsensusConstants::set_emission_tail(::uint64_t value) {
  _internal_set_emission_tail(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.emission_tail)
}
inline ::uint64_t ConsensusConstants::_internal_emission_tail() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.emission_tail_;
}
inline void ConsensusConstants::_internal_set_emission_tail(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.emission_tail_ = value;
}

// uint64 min_sha3x_pow_difficulty = 13;
inline void ConsensusConstants::clear_min_sha3x_pow_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_sha3x_pow_difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::min_sha3x_pow_difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.min_sha3x_pow_difficulty)
  return _internal_min_sha3x_pow_difficulty();
}
inline void ConsensusConstants::set_min_sha3x_pow_difficulty(::uint64_t value) {
  _internal_set_min_sha3x_pow_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.min_sha3x_pow_difficulty)
}
inline ::uint64_t ConsensusConstants::_internal_min_sha3x_pow_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.min_sha3x_pow_difficulty_;
}
inline void ConsensusConstants::_internal_set_min_sha3x_pow_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.min_sha3x_pow_difficulty_ = value;
}

// uint64 block_weight_inputs = 14;
inline void ConsensusConstants::clear_block_weight_inputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_inputs_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::block_weight_inputs() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.block_weight_inputs)
  return _internal_block_weight_inputs();
}
inline void ConsensusConstants::set_block_weight_inputs(::uint64_t value) {
  _internal_set_block_weight_inputs(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.block_weight_inputs)
}
inline ::uint64_t ConsensusConstants::_internal_block_weight_inputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_weight_inputs_;
}
inline void ConsensusConstants::_internal_set_block_weight_inputs(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_inputs_ = value;
}

// uint64 block_weight_outputs = 15;
inline void ConsensusConstants::clear_block_weight_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_outputs_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::block_weight_outputs() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.block_weight_outputs)
  return _internal_block_weight_outputs();
}
inline void ConsensusConstants::set_block_weight_outputs(::uint64_t value) {
  _internal_set_block_weight_outputs(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.block_weight_outputs)
}
inline ::uint64_t ConsensusConstants::_internal_block_weight_outputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_weight_outputs_;
}
inline void ConsensusConstants::_internal_set_block_weight_outputs(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_outputs_ = value;
}

// uint64 block_weight_kernels = 16;
inline void ConsensusConstants::clear_block_weight_kernels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_kernels_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::block_weight_kernels() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.block_weight_kernels)
  return _internal_block_weight_kernels();
}
inline void ConsensusConstants::set_block_weight_kernels(::uint64_t value) {
  _internal_set_block_weight_kernels(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.block_weight_kernels)
}
inline ::uint64_t ConsensusConstants::_internal_block_weight_kernels() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_weight_kernels_;
}
inline void ConsensusConstants::_internal_set_block_weight_kernels(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_weight_kernels_ = value;
}

// uint64 faucet_value = 17;
inline void ConsensusConstants::clear_faucet_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.faucet_value_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::faucet_value() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.faucet_value)
  return _internal_faucet_value();
}
inline void ConsensusConstants::set_faucet_value(::uint64_t value) {
  _internal_set_faucet_value(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.faucet_value)
}
inline ::uint64_t ConsensusConstants::_internal_faucet_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.faucet_value_;
}
inline void ConsensusConstants::_internal_set_faucet_value(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.faucet_value_ = value;
}

// uint64 max_script_byte_size = 18;
inline void ConsensusConstants::clear_max_script_byte_size() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_script_byte_size_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::max_script_byte_size() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.max_script_byte_size)
  return _internal_max_script_byte_size();
}
inline void ConsensusConstants::set_max_script_byte_size(::uint64_t value) {
  _internal_set_max_script_byte_size(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.max_script_byte_size)
}
inline ::uint64_t ConsensusConstants::_internal_max_script_byte_size() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_script_byte_size_;
}
inline void ConsensusConstants::_internal_set_max_script_byte_size(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_script_byte_size_ = value;
}

// uint64 validator_node_validity_period = 19;
inline void ConsensusConstants::clear_validator_node_validity_period() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_validity_period_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::validator_node_validity_period() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.validator_node_validity_period)
  return _internal_validator_node_validity_period();
}
inline void ConsensusConstants::set_validator_node_validity_period(::uint64_t value) {
  _internal_set_validator_node_validity_period(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.validator_node_validity_period)
}
inline ::uint64_t ConsensusConstants::_internal_validator_node_validity_period() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.validator_node_validity_period_;
}
inline void ConsensusConstants::_internal_set_validator_node_validity_period(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_validity_period_ = value;
}

// uint64 effective_from_height = 20;
inline void ConsensusConstants::clear_effective_from_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.effective_from_height_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::effective_from_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.effective_from_height)
  return _internal_effective_from_height();
}
inline void ConsensusConstants::set_effective_from_height(::uint64_t value) {
  _internal_set_effective_from_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.effective_from_height)
}
inline ::uint64_t ConsensusConstants::_internal_effective_from_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.effective_from_height_;
}
inline void ConsensusConstants::_internal_set_effective_from_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.effective_from_height_ = value;
}

// .tari.rpc.Range valid_blockchain_version_range = 21;
inline bool ConsensusConstants::has_valid_blockchain_version_range() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.valid_blockchain_version_range_ != nullptr);
  return value;
}
inline void ConsensusConstants::clear_valid_blockchain_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.valid_blockchain_version_range_ != nullptr) _impl_.valid_blockchain_version_range_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::Range& ConsensusConstants::_internal_valid_blockchain_version_range() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Range* p = _impl_.valid_blockchain_version_range_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Range&>(::tari::rpc::_Range_default_instance_);
}
inline const ::tari::rpc::Range& ConsensusConstants::valid_blockchain_version_range() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.valid_blockchain_version_range)
  return _internal_valid_blockchain_version_range();
}
inline void ConsensusConstants::unsafe_arena_set_allocated_valid_blockchain_version_range(::tari::rpc::Range* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.valid_blockchain_version_range_);
  }
  _impl_.valid_blockchain_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.ConsensusConstants.valid_blockchain_version_range)
}
inline ::tari::rpc::Range* ConsensusConstants::release_valid_blockchain_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Range* released = _impl_.valid_blockchain_version_range_;
  _impl_.valid_blockchain_version_range_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::Range* ConsensusConstants::unsafe_arena_release_valid_blockchain_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ConsensusConstants.valid_blockchain_version_range)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Range* temp = _impl_.valid_blockchain_version_range_;
  _impl_.valid_blockchain_version_range_ = nullptr;
  return temp;
}
inline ::tari::rpc::Range* ConsensusConstants::_internal_mutable_valid_blockchain_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.valid_blockchain_version_range_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Range>(GetArena());
    _impl_.valid_blockchain_version_range_ = reinterpret_cast<::tari::rpc::Range*>(p);
  }
  return _impl_.valid_blockchain_version_range_;
}
inline ::tari::rpc::Range* ConsensusConstants::mutable_valid_blockchain_version_range() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Range* _msg = _internal_mutable_valid_blockchain_version_range();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.valid_blockchain_version_range)
  return _msg;
}
inline void ConsensusConstants::set_allocated_valid_blockchain_version_range(::tari::rpc::Range* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.valid_blockchain_version_range_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }

  _impl_.valid_blockchain_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ConsensusConstants.valid_blockchain_version_range)
}

// uint64 max_randomx_seed_height = 22;
inline void ConsensusConstants::clear_max_randomx_seed_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_randomx_seed_height_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::max_randomx_seed_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.max_randomx_seed_height)
  return _internal_max_randomx_seed_height();
}
inline void ConsensusConstants::set_max_randomx_seed_height(::uint64_t value) {
  _internal_set_max_randomx_seed_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.max_randomx_seed_height)
}
inline ::uint64_t ConsensusConstants::_internal_max_randomx_seed_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_randomx_seed_height_;
}
inline void ConsensusConstants::_internal_set_max_randomx_seed_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_randomx_seed_height_ = value;
}

// map<uint32, .tari.rpc.PowAlgorithmConstants> proof_of_work = 23;
inline int ConsensusConstants::_internal_proof_of_work_size() const {
  return _internal_proof_of_work().size();
}
inline int ConsensusConstants::proof_of_work_size() const {
  return _internal_proof_of_work_size();
}
inline void ConsensusConstants::clear_proof_of_work() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.proof_of_work_.Clear();
}
inline const ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>& ConsensusConstants::_internal_proof_of_work() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.proof_of_work_.GetMap();
}
inline const ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>& ConsensusConstants::proof_of_work() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:tari.rpc.ConsensusConstants.proof_of_work)
  return _internal_proof_of_work();
}
inline ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>* ConsensusConstants::_internal_mutable_proof_of_work() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.proof_of_work_.MutableMap();
}
inline ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>* ConsensusConstants::mutable_proof_of_work() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_map:tari.rpc.ConsensusConstants.proof_of_work)
  return _internal_mutable_proof_of_work();
}

// .tari.rpc.WeightParams transaction_weight = 24;
inline bool ConsensusConstants::has_transaction_weight() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.transaction_weight_ != nullptr);
  return value;
}
inline void ConsensusConstants::clear_transaction_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.transaction_weight_ != nullptr) _impl_.transaction_weight_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::tari::rpc::WeightParams& ConsensusConstants::_internal_transaction_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::WeightParams* p = _impl_.transaction_weight_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::WeightParams&>(::tari::rpc::_WeightParams_default_instance_);
}
inline const ::tari::rpc::WeightParams& ConsensusConstants::transaction_weight() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.transaction_weight)
  return _internal_transaction_weight();
}
inline void ConsensusConstants::unsafe_arena_set_allocated_transaction_weight(::tari::rpc::WeightParams* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transaction_weight_);
  }
  _impl_.transaction_weight_ = reinterpret_cast<::tari::rpc::WeightParams*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.ConsensusConstants.transaction_weight)
}
inline ::tari::rpc::WeightParams* ConsensusConstants::release_transaction_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::WeightParams* released = _impl_.transaction_weight_;
  _impl_.transaction_weight_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::WeightParams* ConsensusConstants::unsafe_arena_release_transaction_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ConsensusConstants.transaction_weight)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::WeightParams* temp = _impl_.transaction_weight_;
  _impl_.transaction_weight_ = nullptr;
  return temp;
}
inline ::tari::rpc::WeightParams* ConsensusConstants::_internal_mutable_transaction_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.transaction_weight_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::WeightParams>(GetArena());
    _impl_.transaction_weight_ = reinterpret_cast<::tari::rpc::WeightParams*>(p);
  }
  return _impl_.transaction_weight_;
}
inline ::tari::rpc::WeightParams* ConsensusConstants::mutable_transaction_weight() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::WeightParams* _msg = _internal_mutable_transaction_weight();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.transaction_weight)
  return _msg;
}
inline void ConsensusConstants::set_allocated_transaction_weight(::tari::rpc::WeightParams* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.transaction_weight_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.transaction_weight_ = reinterpret_cast<::tari::rpc::WeightParams*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ConsensusConstants.transaction_weight)
}

// .tari.rpc.Range input_version_range = 26;
inline bool ConsensusConstants::has_input_version_range() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.input_version_range_ != nullptr);
  return value;
}
inline void ConsensusConstants::clear_input_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.input_version_range_ != nullptr) _impl_.input_version_range_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::tari::rpc::Range& ConsensusConstants::_internal_input_version_range() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Range* p = _impl_.input_version_range_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Range&>(::tari::rpc::_Range_default_instance_);
}
inline const ::tari::rpc::Range& ConsensusConstants::input_version_range() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.input_version_range)
  return _internal_input_version_range();
}
inline void ConsensusConstants::unsafe_arena_set_allocated_input_version_range(::tari::rpc::Range* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.input_version_range_);
  }
  _impl_.input_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.ConsensusConstants.input_version_range)
}
inline ::tari::rpc::Range* ConsensusConstants::release_input_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::Range* released = _impl_.input_version_range_;
  _impl_.input_version_range_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::Range* ConsensusConstants::unsafe_arena_release_input_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ConsensusConstants.input_version_range)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::Range* temp = _impl_.input_version_range_;
  _impl_.input_version_range_ = nullptr;
  return temp;
}
inline ::tari::rpc::Range* ConsensusConstants::_internal_mutable_input_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.input_version_range_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Range>(GetArena());
    _impl_.input_version_range_ = reinterpret_cast<::tari::rpc::Range*>(p);
  }
  return _impl_.input_version_range_;
}
inline ::tari::rpc::Range* ConsensusConstants::mutable_input_version_range() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::tari::rpc::Range* _msg = _internal_mutable_input_version_range();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.input_version_range)
  return _msg;
}
inline void ConsensusConstants::set_allocated_input_version_range(::tari::rpc::Range* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.input_version_range_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.input_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ConsensusConstants.input_version_range)
}

// .tari.rpc.OutputsVersion output_version_range = 27;
inline bool ConsensusConstants::has_output_version_range() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_version_range_ != nullptr);
  return value;
}
inline void ConsensusConstants::clear_output_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.output_version_range_ != nullptr) _impl_.output_version_range_->Clear();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const ::tari::rpc::OutputsVersion& ConsensusConstants::_internal_output_version_range() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::OutputsVersion* p = _impl_.output_version_range_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::OutputsVersion&>(::tari::rpc::_OutputsVersion_default_instance_);
}
inline const ::tari::rpc::OutputsVersion& ConsensusConstants::output_version_range() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.output_version_range)
  return _internal_output_version_range();
}
inline void ConsensusConstants::unsafe_arena_set_allocated_output_version_range(::tari::rpc::OutputsVersion* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_version_range_);
  }
  _impl_.output_version_range_ = reinterpret_cast<::tari::rpc::OutputsVersion*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.ConsensusConstants.output_version_range)
}
inline ::tari::rpc::OutputsVersion* ConsensusConstants::release_output_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::tari::rpc::OutputsVersion* released = _impl_.output_version_range_;
  _impl_.output_version_range_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::OutputsVersion* ConsensusConstants::unsafe_arena_release_output_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ConsensusConstants.output_version_range)

  _impl_._has_bits_[0] &= ~0x00000008u;
  ::tari::rpc::OutputsVersion* temp = _impl_.output_version_range_;
  _impl_.output_version_range_ = nullptr;
  return temp;
}
inline ::tari::rpc::OutputsVersion* ConsensusConstants::_internal_mutable_output_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.output_version_range_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::OutputsVersion>(GetArena());
    _impl_.output_version_range_ = reinterpret_cast<::tari::rpc::OutputsVersion*>(p);
  }
  return _impl_.output_version_range_;
}
inline ::tari::rpc::OutputsVersion* ConsensusConstants::mutable_output_version_range() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000008u;
  ::tari::rpc::OutputsVersion* _msg = _internal_mutable_output_version_range();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.output_version_range)
  return _msg;
}
inline void ConsensusConstants::set_allocated_output_version_range(::tari::rpc::OutputsVersion* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.output_version_range_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }

  _impl_.output_version_range_ = reinterpret_cast<::tari::rpc::OutputsVersion*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ConsensusConstants.output_version_range)
}

// .tari.rpc.Range kernel_version_range = 28;
inline bool ConsensusConstants::has_kernel_version_range() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.kernel_version_range_ != nullptr);
  return value;
}
inline void ConsensusConstants::clear_kernel_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.kernel_version_range_ != nullptr) _impl_.kernel_version_range_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const ::tari::rpc::Range& ConsensusConstants::_internal_kernel_version_range() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Range* p = _impl_.kernel_version_range_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Range&>(::tari::rpc::_Range_default_instance_);
}
inline const ::tari::rpc::Range& ConsensusConstants::kernel_version_range() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.kernel_version_range)
  return _internal_kernel_version_range();
}
inline void ConsensusConstants::unsafe_arena_set_allocated_kernel_version_range(::tari::rpc::Range* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.kernel_version_range_);
  }
  _impl_.kernel_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.ConsensusConstants.kernel_version_range)
}
inline ::tari::rpc::Range* ConsensusConstants::release_kernel_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::tari::rpc::Range* released = _impl_.kernel_version_range_;
  _impl_.kernel_version_range_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::tari::rpc::Range* ConsensusConstants::unsafe_arena_release_kernel_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ConsensusConstants.kernel_version_range)

  _impl_._has_bits_[0] &= ~0x00000010u;
  ::tari::rpc::Range* temp = _impl_.kernel_version_range_;
  _impl_.kernel_version_range_ = nullptr;
  return temp;
}
inline ::tari::rpc::Range* ConsensusConstants::_internal_mutable_kernel_version_range() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.kernel_version_range_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Range>(GetArena());
    _impl_.kernel_version_range_ = reinterpret_cast<::tari::rpc::Range*>(p);
  }
  return _impl_.kernel_version_range_;
}
inline ::tari::rpc::Range* ConsensusConstants::mutable_kernel_version_range() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000010u;
  ::tari::rpc::Range* _msg = _internal_mutable_kernel_version_range();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.kernel_version_range)
  return _msg;
}
inline void ConsensusConstants::set_allocated_kernel_version_range(::tari::rpc::Range* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.kernel_version_range_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }

  _impl_.kernel_version_range_ = reinterpret_cast<::tari::rpc::Range*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ConsensusConstants.kernel_version_range)
}

// repeated .tari.rpc.OutputType permitted_output_types = 29;
inline int ConsensusConstants::_internal_permitted_output_types_size() const {
  return _internal_permitted_output_types().size();
}
inline int ConsensusConstants::permitted_output_types_size() const {
  return _internal_permitted_output_types_size();
}
inline void ConsensusConstants::clear_permitted_output_types() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.permitted_output_types_.Clear();
}
inline ::tari::rpc::OutputType ConsensusConstants::permitted_output_types(int index) const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.permitted_output_types)
  return static_cast<::tari::rpc::OutputType>(_internal_permitted_output_types().Get(index));
}
inline void ConsensusConstants::set_permitted_output_types(int index, ::tari::rpc::OutputType value) {
  _internal_mutable_permitted_output_types()->Set(index, value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.permitted_output_types)
}
inline void ConsensusConstants::add_permitted_output_types(::tari::rpc::OutputType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_permitted_output_types()->Add(value);
  // @@protoc_insertion_point(field_add:tari.rpc.ConsensusConstants.permitted_output_types)
}
inline const ::google::protobuf::RepeatedField<int>& ConsensusConstants::permitted_output_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.ConsensusConstants.permitted_output_types)
  return _internal_permitted_output_types();
}
inline ::google::protobuf::RepeatedField<int>* ConsensusConstants::mutable_permitted_output_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.ConsensusConstants.permitted_output_types)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_permitted_output_types();
}
inline const ::google::protobuf::RepeatedField<int>& ConsensusConstants::_internal_permitted_output_types()
    const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.permitted_output_types_;
}
inline ::google::protobuf::RepeatedField<int>* ConsensusConstants::_internal_mutable_permitted_output_types() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.permitted_output_types_;
}

// uint64 epoch_length = 30;
inline void ConsensusConstants::clear_epoch_length() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.epoch_length_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::epoch_length() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.epoch_length)
  return _internal_epoch_length();
}
inline void ConsensusConstants::set_epoch_length(::uint64_t value) {
  _internal_set_epoch_length(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.epoch_length)
}
inline ::uint64_t ConsensusConstants::_internal_epoch_length() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.epoch_length_;
}
inline void ConsensusConstants::_internal_set_epoch_length(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.epoch_length_ = value;
}

// uint64 validator_node_registration_min_deposit_amount = 31;
inline void ConsensusConstants::clear_validator_node_registration_min_deposit_amount() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_min_deposit_amount_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::validator_node_registration_min_deposit_amount() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.validator_node_registration_min_deposit_amount)
  return _internal_validator_node_registration_min_deposit_amount();
}
inline void ConsensusConstants::set_validator_node_registration_min_deposit_amount(::uint64_t value) {
  _internal_set_validator_node_registration_min_deposit_amount(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.validator_node_registration_min_deposit_amount)
}
inline ::uint64_t ConsensusConstants::_internal_validator_node_registration_min_deposit_amount() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.validator_node_registration_min_deposit_amount_;
}
inline void ConsensusConstants::_internal_set_validator_node_registration_min_deposit_amount(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_min_deposit_amount_ = value;
}

// uint64 validator_node_registration_min_lock_height = 32;
inline void ConsensusConstants::clear_validator_node_registration_min_lock_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_min_lock_height_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::validator_node_registration_min_lock_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.validator_node_registration_min_lock_height)
  return _internal_validator_node_registration_min_lock_height();
}
inline void ConsensusConstants::set_validator_node_registration_min_lock_height(::uint64_t value) {
  _internal_set_validator_node_registration_min_lock_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.validator_node_registration_min_lock_height)
}
inline ::uint64_t ConsensusConstants::_internal_validator_node_registration_min_lock_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.validator_node_registration_min_lock_height_;
}
inline void ConsensusConstants::_internal_set_validator_node_registration_min_lock_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_min_lock_height_ = value;
}

// uint64 validator_node_registration_shuffle_interval_epoch = 33;
inline void ConsensusConstants::clear_validator_node_registration_shuffle_interval_epoch() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_shuffle_interval_epoch_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::validator_node_registration_shuffle_interval_epoch() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.validator_node_registration_shuffle_interval_epoch)
  return _internal_validator_node_registration_shuffle_interval_epoch();
}
inline void ConsensusConstants::set_validator_node_registration_shuffle_interval_epoch(::uint64_t value) {
  _internal_set_validator_node_registration_shuffle_interval_epoch(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.validator_node_registration_shuffle_interval_epoch)
}
inline ::uint64_t ConsensusConstants::_internal_validator_node_registration_shuffle_interval_epoch() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.validator_node_registration_shuffle_interval_epoch_;
}
inline void ConsensusConstants::_internal_set_validator_node_registration_shuffle_interval_epoch(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.validator_node_registration_shuffle_interval_epoch_ = value;
}

// repeated .tari.rpc.PermittedRangeProofs permitted_range_proof_types = 34;
inline int ConsensusConstants::_internal_permitted_range_proof_types_size() const {
  return _internal_permitted_range_proof_types().size();
}
inline int ConsensusConstants::permitted_range_proof_types_size() const {
  return _internal_permitted_range_proof_types_size();
}
inline void ConsensusConstants::clear_permitted_range_proof_types() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.permitted_range_proof_types_.Clear();
}
inline ::tari::rpc::PermittedRangeProofs* ConsensusConstants::mutable_permitted_range_proof_types(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.ConsensusConstants.permitted_range_proof_types)
  return _internal_mutable_permitted_range_proof_types()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>* ConsensusConstants::mutable_permitted_range_proof_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.ConsensusConstants.permitted_range_proof_types)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_permitted_range_proof_types();
}
inline const ::tari::rpc::PermittedRangeProofs& ConsensusConstants::permitted_range_proof_types(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.permitted_range_proof_types)
  return _internal_permitted_range_proof_types().Get(index);
}
inline ::tari::rpc::PermittedRangeProofs* ConsensusConstants::add_permitted_range_proof_types() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::PermittedRangeProofs* _add = _internal_mutable_permitted_range_proof_types()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.ConsensusConstants.permitted_range_proof_types)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>& ConsensusConstants::permitted_range_proof_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.ConsensusConstants.permitted_range_proof_types)
  return _internal_permitted_range_proof_types();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>&
ConsensusConstants::_internal_permitted_range_proof_types() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.permitted_range_proof_types_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::PermittedRangeProofs>*
ConsensusConstants::_internal_mutable_permitted_range_proof_types() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.permitted_range_proof_types_;
}

// uint64 inflation_bips = 35;
inline void ConsensusConstants::clear_inflation_bips() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.inflation_bips_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::inflation_bips() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.inflation_bips)
  return _internal_inflation_bips();
}
inline void ConsensusConstants::set_inflation_bips(::uint64_t value) {
  _internal_set_inflation_bips(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.inflation_bips)
}
inline ::uint64_t ConsensusConstants::_internal_inflation_bips() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.inflation_bips_;
}
inline void ConsensusConstants::_internal_set_inflation_bips(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.inflation_bips_ = value;
}

// uint64 tail_epoch_length = 36;
inline void ConsensusConstants::clear_tail_epoch_length() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tail_epoch_length_ = ::uint64_t{0u};
}
inline ::uint64_t ConsensusConstants::tail_epoch_length() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ConsensusConstants.tail_epoch_length)
  return _internal_tail_epoch_length();
}
inline void ConsensusConstants::set_tail_epoch_length(::uint64_t value) {
  _internal_set_tail_epoch_length(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ConsensusConstants.tail_epoch_length)
}
inline ::uint64_t ConsensusConstants::_internal_tail_epoch_length() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.tail_epoch_length_;
}
inline void ConsensusConstants::_internal_set_tail_epoch_length(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tail_epoch_length_ = value;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace rpc
}  // namespace tari


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::tari::rpc::OutputType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::OutputType>() {
  return ::tari::rpc::OutputType_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::RangeProofType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::RangeProofType>() {
  return ::tari::rpc::RangeProofType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_types_2eproto_2epb_2eh
