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

#ifndef GOOGLE_PROTOBUF_INCLUDED_base_5fnode_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_base_5fnode_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/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "types.pb.h"
#include "transaction.pb.h"
#include "block.pb.h"
#include "network.pb.h"
#include "sidechain_types.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_base_5fnode_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_base_5fnode_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_base_5fnode_2eproto;
namespace tari {
namespace rpc {
class BlockBlobRequest;
struct BlockBlobRequestDefaultTypeInternal;
extern BlockBlobRequestDefaultTypeInternal _BlockBlobRequest_default_instance_;
class BlockGroupRequest;
struct BlockGroupRequestDefaultTypeInternal;
extern BlockGroupRequestDefaultTypeInternal _BlockGroupRequest_default_instance_;
class BlockGroupResponse;
struct BlockGroupResponseDefaultTypeInternal;
extern BlockGroupResponseDefaultTypeInternal _BlockGroupResponse_default_instance_;
class BlockHeaderResponse;
struct BlockHeaderResponseDefaultTypeInternal;
extern BlockHeaderResponseDefaultTypeInternal _BlockHeaderResponse_default_instance_;
class BlockInfo;
struct BlockInfoDefaultTypeInternal;
extern BlockInfoDefaultTypeInternal _BlockInfo_default_instance_;
class BlockTimingResponse;
struct BlockTimingResponseDefaultTypeInternal;
extern BlockTimingResponseDefaultTypeInternal _BlockTimingResponse_default_instance_;
class FetchMatchingUtxosRequest;
struct FetchMatchingUtxosRequestDefaultTypeInternal;
extern FetchMatchingUtxosRequestDefaultTypeInternal _FetchMatchingUtxosRequest_default_instance_;
class FetchMatchingUtxosResponse;
struct FetchMatchingUtxosResponseDefaultTypeInternal;
extern FetchMatchingUtxosResponseDefaultTypeInternal _FetchMatchingUtxosResponse_default_instance_;
class GetActiveValidatorNodesRequest;
struct GetActiveValidatorNodesRequestDefaultTypeInternal;
extern GetActiveValidatorNodesRequestDefaultTypeInternal _GetActiveValidatorNodesRequest_default_instance_;
class GetActiveValidatorNodesResponse;
struct GetActiveValidatorNodesResponseDefaultTypeInternal;
extern GetActiveValidatorNodesResponseDefaultTypeInternal _GetActiveValidatorNodesResponse_default_instance_;
class GetAssetMetadataRequest;
struct GetAssetMetadataRequestDefaultTypeInternal;
extern GetAssetMetadataRequestDefaultTypeInternal _GetAssetMetadataRequest_default_instance_;
class GetAssetMetadataResponse;
struct GetAssetMetadataResponseDefaultTypeInternal;
extern GetAssetMetadataResponseDefaultTypeInternal _GetAssetMetadataResponse_default_instance_;
class GetBlocksRequest;
struct GetBlocksRequestDefaultTypeInternal;
extern GetBlocksRequestDefaultTypeInternal _GetBlocksRequest_default_instance_;
class GetBlocksResponse;
struct GetBlocksResponseDefaultTypeInternal;
extern GetBlocksResponseDefaultTypeInternal _GetBlocksResponse_default_instance_;
class GetHeaderByHashRequest;
struct GetHeaderByHashRequestDefaultTypeInternal;
extern GetHeaderByHashRequestDefaultTypeInternal _GetHeaderByHashRequest_default_instance_;
class GetMempoolTransactionsRequest;
struct GetMempoolTransactionsRequestDefaultTypeInternal;
extern GetMempoolTransactionsRequestDefaultTypeInternal _GetMempoolTransactionsRequest_default_instance_;
class GetMempoolTransactionsResponse;
struct GetMempoolTransactionsResponseDefaultTypeInternal;
extern GetMempoolTransactionsResponseDefaultTypeInternal _GetMempoolTransactionsResponse_default_instance_;
class GetNewBlockBlobResult;
struct GetNewBlockBlobResultDefaultTypeInternal;
extern GetNewBlockBlobResultDefaultTypeInternal _GetNewBlockBlobResult_default_instance_;
class GetNewBlockResult;
struct GetNewBlockResultDefaultTypeInternal;
extern GetNewBlockResultDefaultTypeInternal _GetNewBlockResult_default_instance_;
class GetNewBlockTemplateWithCoinbasesRequest;
struct GetNewBlockTemplateWithCoinbasesRequestDefaultTypeInternal;
extern GetNewBlockTemplateWithCoinbasesRequestDefaultTypeInternal _GetNewBlockTemplateWithCoinbasesRequest_default_instance_;
class GetNewBlockWithCoinbasesRequest;
struct GetNewBlockWithCoinbasesRequestDefaultTypeInternal;
extern GetNewBlockWithCoinbasesRequestDefaultTypeInternal _GetNewBlockWithCoinbasesRequest_default_instance_;
class GetPeersRequest;
struct GetPeersRequestDefaultTypeInternal;
extern GetPeersRequestDefaultTypeInternal _GetPeersRequest_default_instance_;
class GetPeersResponse;
struct GetPeersResponseDefaultTypeInternal;
extern GetPeersResponseDefaultTypeInternal _GetPeersResponse_default_instance_;
class GetShardKeyRequest;
struct GetShardKeyRequestDefaultTypeInternal;
extern GetShardKeyRequestDefaultTypeInternal _GetShardKeyRequest_default_instance_;
class GetShardKeyResponse;
struct GetShardKeyResponseDefaultTypeInternal;
extern GetShardKeyResponseDefaultTypeInternal _GetShardKeyResponse_default_instance_;
class GetSideChainUtxosRequest;
struct GetSideChainUtxosRequestDefaultTypeInternal;
extern GetSideChainUtxosRequestDefaultTypeInternal _GetSideChainUtxosRequest_default_instance_;
class GetSideChainUtxosResponse;
struct GetSideChainUtxosResponseDefaultTypeInternal;
extern GetSideChainUtxosResponseDefaultTypeInternal _GetSideChainUtxosResponse_default_instance_;
class GetTemplateRegistrationResponse;
struct GetTemplateRegistrationResponseDefaultTypeInternal;
extern GetTemplateRegistrationResponseDefaultTypeInternal _GetTemplateRegistrationResponse_default_instance_;
class GetTemplateRegistrationsRequest;
struct GetTemplateRegistrationsRequestDefaultTypeInternal;
extern GetTemplateRegistrationsRequestDefaultTypeInternal _GetTemplateRegistrationsRequest_default_instance_;
class GetTokensRequest;
struct GetTokensRequestDefaultTypeInternal;
extern GetTokensRequestDefaultTypeInternal _GetTokensRequest_default_instance_;
class GetTokensResponse;
struct GetTokensResponseDefaultTypeInternal;
extern GetTokensResponseDefaultTypeInternal _GetTokensResponse_default_instance_;
class HeightRequest;
struct HeightRequestDefaultTypeInternal;
extern HeightRequestDefaultTypeInternal _HeightRequest_default_instance_;
class IntegerValue;
struct IntegerValueDefaultTypeInternal;
extern IntegerValueDefaultTypeInternal _IntegerValue_default_instance_;
class ListAssetRegistrationsRequest;
struct ListAssetRegistrationsRequestDefaultTypeInternal;
extern ListAssetRegistrationsRequestDefaultTypeInternal _ListAssetRegistrationsRequest_default_instance_;
class ListAssetRegistrationsResponse;
struct ListAssetRegistrationsResponseDefaultTypeInternal;
extern ListAssetRegistrationsResponseDefaultTypeInternal _ListAssetRegistrationsResponse_default_instance_;
class ListHeadersRequest;
struct ListHeadersRequestDefaultTypeInternal;
extern ListHeadersRequestDefaultTypeInternal _ListHeadersRequest_default_instance_;
class MempoolStatsResponse;
struct MempoolStatsResponseDefaultTypeInternal;
extern MempoolStatsResponseDefaultTypeInternal _MempoolStatsResponse_default_instance_;
class MetaData;
struct MetaDataDefaultTypeInternal;
extern MetaDataDefaultTypeInternal _MetaData_default_instance_;
class MinerData;
struct MinerDataDefaultTypeInternal;
extern MinerDataDefaultTypeInternal _MinerData_default_instance_;
class NetworkDifficultyResponse;
struct NetworkDifficultyResponseDefaultTypeInternal;
extern NetworkDifficultyResponseDefaultTypeInternal _NetworkDifficultyResponse_default_instance_;
class NewBlockCoinbase;
struct NewBlockCoinbaseDefaultTypeInternal;
extern NewBlockCoinbaseDefaultTypeInternal _NewBlockCoinbase_default_instance_;
class NewBlockTemplateRequest;
struct NewBlockTemplateRequestDefaultTypeInternal;
extern NewBlockTemplateRequestDefaultTypeInternal _NewBlockTemplateRequest_default_instance_;
class NewBlockTemplateResponse;
struct NewBlockTemplateResponseDefaultTypeInternal;
extern NewBlockTemplateResponseDefaultTypeInternal _NewBlockTemplateResponse_default_instance_;
class SearchKernelsRequest;
struct SearchKernelsRequestDefaultTypeInternal;
extern SearchKernelsRequestDefaultTypeInternal _SearchKernelsRequest_default_instance_;
class SearchUtxosRequest;
struct SearchUtxosRequestDefaultTypeInternal;
extern SearchUtxosRequestDefaultTypeInternal _SearchUtxosRequest_default_instance_;
class StringValue;
struct StringValueDefaultTypeInternal;
extern StringValueDefaultTypeInternal _StringValue_default_instance_;
class SubmitBlockResponse;
struct SubmitBlockResponseDefaultTypeInternal;
extern SubmitBlockResponseDefaultTypeInternal _SubmitBlockResponse_default_instance_;
class SubmitTransactionRequest;
struct SubmitTransactionRequestDefaultTypeInternal;
extern SubmitTransactionRequestDefaultTypeInternal _SubmitTransactionRequest_default_instance_;
class SubmitTransactionResponse;
struct SubmitTransactionResponseDefaultTypeInternal;
extern SubmitTransactionResponseDefaultTypeInternal _SubmitTransactionResponse_default_instance_;
class SyncInfoResponse;
struct SyncInfoResponseDefaultTypeInternal;
extern SyncInfoResponseDefaultTypeInternal _SyncInfoResponse_default_instance_;
class SyncProgressResponse;
struct SyncProgressResponseDefaultTypeInternal;
extern SyncProgressResponseDefaultTypeInternal _SyncProgressResponse_default_instance_;
class TipInfoResponse;
struct TipInfoResponseDefaultTypeInternal;
extern TipInfoResponseDefaultTypeInternal _TipInfoResponse_default_instance_;
class TransactionStateRequest;
struct TransactionStateRequestDefaultTypeInternal;
extern TransactionStateRequestDefaultTypeInternal _TransactionStateRequest_default_instance_;
class TransactionStateResponse;
struct TransactionStateResponseDefaultTypeInternal;
extern TransactionStateResponseDefaultTypeInternal _TransactionStateResponse_default_instance_;
class ValueAtHeightResponse;
struct ValueAtHeightResponseDefaultTypeInternal;
extern ValueAtHeightResponseDefaultTypeInternal _ValueAtHeightResponse_default_instance_;
}  // namespace rpc
}  // namespace tari
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace tari {
namespace rpc {
enum BaseNodeState : int {
  START_UP = 0,
  HEADER_SYNC = 1,
  HORIZON_SYNC = 2,
  CONNECTING = 3,
  BLOCK_SYNC = 4,
  LISTENING = 5,
  SYNC_FAILED = 6,
  BaseNodeState_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  BaseNodeState_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool BaseNodeState_IsValid(int value);
extern const uint32_t BaseNodeState_internal_data_[];
constexpr BaseNodeState BaseNodeState_MIN = static_cast<BaseNodeState>(0);
constexpr BaseNodeState BaseNodeState_MAX = static_cast<BaseNodeState>(6);
constexpr int BaseNodeState_ARRAYSIZE = 6 + 1;
const ::google::protobuf::EnumDescriptor*
BaseNodeState_descriptor();
template <typename T>
const std::string& BaseNodeState_Name(T value) {
  static_assert(std::is_same<T, BaseNodeState>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to BaseNodeState_Name().");
  return BaseNodeState_Name(static_cast<BaseNodeState>(value));
}
template <>
inline const std::string& BaseNodeState_Name(BaseNodeState value) {
  return ::google::protobuf::internal::NameOfDenseEnum<BaseNodeState_descriptor,
                                                 0, 6>(
      static_cast<int>(value));
}
inline bool BaseNodeState_Parse(absl::string_view name, BaseNodeState* value) {
  return ::google::protobuf::internal::ParseNamedEnum<BaseNodeState>(
      BaseNodeState_descriptor(), name, value);
}
enum CalcType : int {
  MEAN = 0,
  MEDIAN = 1,
  QUANTILE = 2,
  QUARTILE = 3,
  CalcType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  CalcType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool CalcType_IsValid(int value);
extern const uint32_t CalcType_internal_data_[];
constexpr CalcType CalcType_MIN = static_cast<CalcType>(0);
constexpr CalcType CalcType_MAX = static_cast<CalcType>(3);
constexpr int CalcType_ARRAYSIZE = 3 + 1;
const ::google::protobuf::EnumDescriptor*
CalcType_descriptor();
template <typename T>
const std::string& CalcType_Name(T value) {
  static_assert(std::is_same<T, CalcType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to CalcType_Name().");
  return CalcType_Name(static_cast<CalcType>(value));
}
template <>
inline const std::string& CalcType_Name(CalcType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<CalcType_descriptor,
                                                 0, 3>(
      static_cast<int>(value));
}
inline bool CalcType_Parse(absl::string_view name, CalcType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<CalcType>(
      CalcType_descriptor(), name, value);
}
enum Sorting : int {
  SORTING_DESC = 0,
  SORTING_ASC = 1,
  Sorting_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  Sorting_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool Sorting_IsValid(int value);
extern const uint32_t Sorting_internal_data_[];
constexpr Sorting Sorting_MIN = static_cast<Sorting>(0);
constexpr Sorting Sorting_MAX = static_cast<Sorting>(1);
constexpr int Sorting_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor*
Sorting_descriptor();
template <typename T>
const std::string& Sorting_Name(T value) {
  static_assert(std::is_same<T, Sorting>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to Sorting_Name().");
  return Sorting_Name(static_cast<Sorting>(value));
}
template <>
inline const std::string& Sorting_Name(Sorting value) {
  return ::google::protobuf::internal::NameOfDenseEnum<Sorting_descriptor,
                                                 0, 1>(
      static_cast<int>(value));
}
inline bool Sorting_Parse(absl::string_view name, Sorting* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Sorting>(
      Sorting_descriptor(), name, value);
}
enum SyncState : int {
  STARTUP = 0,
  HEADER_STARTING = 1,
  HEADER = 2,
  BLOCK_STARTING = 3,
  BLOCK = 4,
  DONE = 5,
  SyncState_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  SyncState_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool SyncState_IsValid(int value);
extern const uint32_t SyncState_internal_data_[];
constexpr SyncState SyncState_MIN = static_cast<SyncState>(0);
constexpr SyncState SyncState_MAX = static_cast<SyncState>(5);
constexpr int SyncState_ARRAYSIZE = 5 + 1;
const ::google::protobuf::EnumDescriptor*
SyncState_descriptor();
template <typename T>
const std::string& SyncState_Name(T value) {
  static_assert(std::is_same<T, SyncState>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to SyncState_Name().");
  return SyncState_Name(static_cast<SyncState>(value));
}
template <>
inline const std::string& SyncState_Name(SyncState value) {
  return ::google::protobuf::internal::NameOfDenseEnum<SyncState_descriptor,
                                                 0, 5>(
      static_cast<int>(value));
}
inline bool SyncState_Parse(absl::string_view name, SyncState* value) {
  return ::google::protobuf::internal::ParseNamedEnum<SyncState>(
      SyncState_descriptor(), name, value);
}
enum SubmitTransactionResult : int {
  NONE = 0,
  ACCEPTED = 1,
  NOT_PROCESSABLE_AT_THIS_TIME = 2,
  ALREADY_MINED = 3,
  REJECTED = 4,
  SubmitTransactionResult_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  SubmitTransactionResult_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool SubmitTransactionResult_IsValid(int value);
extern const uint32_t SubmitTransactionResult_internal_data_[];
constexpr SubmitTransactionResult SubmitTransactionResult_MIN = static_cast<SubmitTransactionResult>(0);
constexpr SubmitTransactionResult SubmitTransactionResult_MAX = static_cast<SubmitTransactionResult>(4);
constexpr int SubmitTransactionResult_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor*
SubmitTransactionResult_descriptor();
template <typename T>
const std::string& SubmitTransactionResult_Name(T value) {
  static_assert(std::is_same<T, SubmitTransactionResult>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to SubmitTransactionResult_Name().");
  return SubmitTransactionResult_Name(static_cast<SubmitTransactionResult>(value));
}
template <>
inline const std::string& SubmitTransactionResult_Name(SubmitTransactionResult value) {
  return ::google::protobuf::internal::NameOfDenseEnum<SubmitTransactionResult_descriptor,
                                                 0, 4>(
      static_cast<int>(value));
}
inline bool SubmitTransactionResult_Parse(absl::string_view name, SubmitTransactionResult* value) {
  return ::google::protobuf::internal::ParseNamedEnum<SubmitTransactionResult>(
      SubmitTransactionResult_descriptor(), name, value);
}
enum TransactionLocation : int {
  UNKNOWN = 0,
  MEMPOOL = 1,
  MINED = 2,
  NOT_STORED = 3,
  TransactionLocation_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  TransactionLocation_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool TransactionLocation_IsValid(int value);
extern const uint32_t TransactionLocation_internal_data_[];
constexpr TransactionLocation TransactionLocation_MIN = static_cast<TransactionLocation>(0);
constexpr TransactionLocation TransactionLocation_MAX = static_cast<TransactionLocation>(3);
constexpr int TransactionLocation_ARRAYSIZE = 3 + 1;
const ::google::protobuf::EnumDescriptor*
TransactionLocation_descriptor();
template <typename T>
const std::string& TransactionLocation_Name(T value) {
  static_assert(std::is_same<T, TransactionLocation>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to TransactionLocation_Name().");
  return TransactionLocation_Name(static_cast<TransactionLocation>(value));
}
template <>
inline const std::string& TransactionLocation_Name(TransactionLocation value) {
  return ::google::protobuf::internal::NameOfDenseEnum<TransactionLocation_descriptor,
                                                 0, 3>(
      static_cast<int>(value));
}
inline bool TransactionLocation_Parse(absl::string_view name, TransactionLocation* value) {
  return ::google::protobuf::internal::ParseNamedEnum<TransactionLocation>(
      TransactionLocation_descriptor(), name, value);
}

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


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

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

  inline ValueAtHeightResponse(const ValueAtHeightResponse& from) : ValueAtHeightResponse(nullptr, from) {}
  inline ValueAtHeightResponse(ValueAtHeightResponse&& from) noexcept
      : ValueAtHeightResponse(nullptr, std::move(from)) {}
  inline ValueAtHeightResponse& operator=(const ValueAtHeightResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ValueAtHeightResponse& operator=(ValueAtHeightResponse&& 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 ValueAtHeightResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const ValueAtHeightResponse* internal_default_instance() {
    return reinterpret_cast<const ValueAtHeightResponse*>(
        &_ValueAtHeightResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(ValueAtHeightResponse& a, ValueAtHeightResponse& b) { a.Swap(&b); }
  inline void Swap(ValueAtHeightResponse* 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(ValueAtHeightResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ValueAtHeightResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ValueAtHeightResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ValueAtHeightResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ValueAtHeightResponse& from) { ValueAtHeightResponse::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(ValueAtHeightResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ValueAtHeightResponse"; }

 protected:
  explicit ValueAtHeightResponse(::google::protobuf::Arena* arena);
  ValueAtHeightResponse(::google::protobuf::Arena* arena, const ValueAtHeightResponse& from);
  ValueAtHeightResponse(::google::protobuf::Arena* arena, ValueAtHeightResponse&& from) noexcept
      : ValueAtHeightResponse(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 {
    kValueFieldNumber = 1,
    kHeightFieldNumber = 2,
  };
  // uint64 value = 1;
  void clear_value() ;
  ::uint64_t value() const;
  void set_value(::uint64_t value);

  private:
  ::uint64_t _internal_value() const;
  void _internal_set_value(::uint64_t value);

  public:
  // uint64 height = 2;
  void clear_height() ;
  ::uint64_t height() const;
  void set_height(::uint64_t value);

  private:
  ::uint64_t _internal_height() const;
  void _internal_set_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ValueAtHeightResponse)
 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 value_;
    ::uint64_t height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline TransactionStateResponse(const TransactionStateResponse& from) : TransactionStateResponse(nullptr, from) {}
  inline TransactionStateResponse(TransactionStateResponse&& from) noexcept
      : TransactionStateResponse(nullptr, std::move(from)) {}
  inline TransactionStateResponse& operator=(const TransactionStateResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline TransactionStateResponse& operator=(TransactionStateResponse&& 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 TransactionStateResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const TransactionStateResponse* internal_default_instance() {
    return reinterpret_cast<const TransactionStateResponse*>(
        &_TransactionStateResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 44;
  friend void swap(TransactionStateResponse& a, TransactionStateResponse& b) { a.Swap(&b); }
  inline void Swap(TransactionStateResponse* 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(TransactionStateResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  TransactionStateResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<TransactionStateResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TransactionStateResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TransactionStateResponse& from) { TransactionStateResponse::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(TransactionStateResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.TransactionStateResponse"; }

 protected:
  explicit TransactionStateResponse(::google::protobuf::Arena* arena);
  TransactionStateResponse(::google::protobuf::Arena* arena, const TransactionStateResponse& from);
  TransactionStateResponse(::google::protobuf::Arena* arena, TransactionStateResponse&& from) noexcept
      : TransactionStateResponse(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 {
    kResultFieldNumber = 1,
  };
  // .tari.rpc.TransactionLocation result = 1;
  void clear_result() ;
  ::tari::rpc::TransactionLocation result() const;
  void set_result(::tari::rpc::TransactionLocation value);

  private:
  ::tari::rpc::TransactionLocation _internal_result() const;
  void _internal_set_result(::tari::rpc::TransactionLocation value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TransactionStateResponse)
 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);
    int result_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SyncProgressResponse(const SyncProgressResponse& from) : SyncProgressResponse(nullptr, from) {}
  inline SyncProgressResponse(SyncProgressResponse&& from) noexcept
      : SyncProgressResponse(nullptr, std::move(from)) {}
  inline SyncProgressResponse& operator=(const SyncProgressResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SyncProgressResponse& operator=(SyncProgressResponse&& 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 SyncProgressResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const SyncProgressResponse* internal_default_instance() {
    return reinterpret_cast<const SyncProgressResponse*>(
        &_SyncProgressResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 29;
  friend void swap(SyncProgressResponse& a, SyncProgressResponse& b) { a.Swap(&b); }
  inline void Swap(SyncProgressResponse* 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(SyncProgressResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SyncProgressResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SyncProgressResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SyncProgressResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SyncProgressResponse& from) { SyncProgressResponse::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(SyncProgressResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SyncProgressResponse"; }

 protected:
  explicit SyncProgressResponse(::google::protobuf::Arena* arena);
  SyncProgressResponse(::google::protobuf::Arena* arena, const SyncProgressResponse& from);
  SyncProgressResponse(::google::protobuf::Arena* arena, SyncProgressResponse&& from) noexcept
      : SyncProgressResponse(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 {
    kTipHeightFieldNumber = 1,
    kLocalHeightFieldNumber = 2,
    kStateFieldNumber = 3,
  };
  // uint64 tip_height = 1;
  void clear_tip_height() ;
  ::uint64_t tip_height() const;
  void set_tip_height(::uint64_t value);

  private:
  ::uint64_t _internal_tip_height() const;
  void _internal_set_tip_height(::uint64_t value);

  public:
  // uint64 local_height = 2;
  void clear_local_height() ;
  ::uint64_t local_height() const;
  void set_local_height(::uint64_t value);

  private:
  ::uint64_t _internal_local_height() const;
  void _internal_set_local_height(::uint64_t value);

  public:
  // .tari.rpc.SyncState state = 3;
  void clear_state() ;
  ::tari::rpc::SyncState state() const;
  void set_state(::tari::rpc::SyncState value);

  private:
  ::tari::rpc::SyncState _internal_state() const;
  void _internal_set_state(::tari::rpc::SyncState value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SyncProgressResponse)
 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 tip_height_;
    ::uint64_t local_height_;
    int state_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SyncInfoResponse(const SyncInfoResponse& from) : SyncInfoResponse(nullptr, from) {}
  inline SyncInfoResponse(SyncInfoResponse&& from) noexcept
      : SyncInfoResponse(nullptr, std::move(from)) {}
  inline SyncInfoResponse& operator=(const SyncInfoResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SyncInfoResponse& operator=(SyncInfoResponse&& 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 SyncInfoResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const SyncInfoResponse* internal_default_instance() {
    return reinterpret_cast<const SyncInfoResponse*>(
        &_SyncInfoResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 28;
  friend void swap(SyncInfoResponse& a, SyncInfoResponse& b) { a.Swap(&b); }
  inline void Swap(SyncInfoResponse* 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(SyncInfoResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SyncInfoResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SyncInfoResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SyncInfoResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SyncInfoResponse& from) { SyncInfoResponse::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(SyncInfoResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SyncInfoResponse"; }

 protected:
  explicit SyncInfoResponse(::google::protobuf::Arena* arena);
  SyncInfoResponse(::google::protobuf::Arena* arena, const SyncInfoResponse& from);
  SyncInfoResponse(::google::protobuf::Arena* arena, SyncInfoResponse&& from) noexcept
      : SyncInfoResponse(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 {
    kPeerNodeIdFieldNumber = 3,
    kTipHeightFieldNumber = 1,
    kLocalHeightFieldNumber = 2,
  };
  // repeated bytes peer_node_id = 3;
  int peer_node_id_size() const;
  private:
  int _internal_peer_node_id_size() const;

  public:
  void clear_peer_node_id() ;
  const std::string& peer_node_id(int index) const;
  std::string* mutable_peer_node_id(int index);
  void set_peer_node_id(int index, const std::string& value);
  void set_peer_node_id(int index, std::string&& value);
  void set_peer_node_id(int index, const char* value);
  void set_peer_node_id(int index, const void* value, std::size_t size);
  void set_peer_node_id(int index, absl::string_view value);
  std::string* add_peer_node_id();
  void add_peer_node_id(const std::string& value);
  void add_peer_node_id(std::string&& value);
  void add_peer_node_id(const char* value);
  void add_peer_node_id(const void* value, std::size_t size);
  void add_peer_node_id(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& peer_node_id() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_peer_node_id();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_peer_node_id() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_peer_node_id();

  public:
  // uint64 tip_height = 1;
  void clear_tip_height() ;
  ::uint64_t tip_height() const;
  void set_tip_height(::uint64_t value);

  private:
  ::uint64_t _internal_tip_height() const;
  void _internal_set_tip_height(::uint64_t value);

  public:
  // uint64 local_height = 2;
  void clear_local_height() ;
  ::uint64_t local_height() const;
  void set_local_height(::uint64_t value);

  private:
  ::uint64_t _internal_local_height() const;
  void _internal_set_local_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SyncInfoResponse)
 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::RepeatedPtrField<std::string> peer_node_id_;
    ::uint64_t tip_height_;
    ::uint64_t local_height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SubmitTransactionResponse(const SubmitTransactionResponse& from) : SubmitTransactionResponse(nullptr, from) {}
  inline SubmitTransactionResponse(SubmitTransactionResponse&& from) noexcept
      : SubmitTransactionResponse(nullptr, std::move(from)) {}
  inline SubmitTransactionResponse& operator=(const SubmitTransactionResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SubmitTransactionResponse& operator=(SubmitTransactionResponse&& 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 SubmitTransactionResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const SubmitTransactionResponse* internal_default_instance() {
    return reinterpret_cast<const SubmitTransactionResponse*>(
        &_SubmitTransactionResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 40;
  friend void swap(SubmitTransactionResponse& a, SubmitTransactionResponse& b) { a.Swap(&b); }
  inline void Swap(SubmitTransactionResponse* 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(SubmitTransactionResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SubmitTransactionResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SubmitTransactionResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SubmitTransactionResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SubmitTransactionResponse& from) { SubmitTransactionResponse::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(SubmitTransactionResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SubmitTransactionResponse"; }

 protected:
  explicit SubmitTransactionResponse(::google::protobuf::Arena* arena);
  SubmitTransactionResponse(::google::protobuf::Arena* arena, const SubmitTransactionResponse& from);
  SubmitTransactionResponse(::google::protobuf::Arena* arena, SubmitTransactionResponse&& from) noexcept
      : SubmitTransactionResponse(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 {
    kResultFieldNumber = 1,
  };
  // .tari.rpc.SubmitTransactionResult result = 1;
  void clear_result() ;
  ::tari::rpc::SubmitTransactionResult result() const;
  void set_result(::tari::rpc::SubmitTransactionResult value);

  private:
  ::tari::rpc::SubmitTransactionResult _internal_result() const;
  void _internal_set_result(::tari::rpc::SubmitTransactionResult value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SubmitTransactionResponse)
 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);
    int result_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SubmitBlockResponse(const SubmitBlockResponse& from) : SubmitBlockResponse(nullptr, from) {}
  inline SubmitBlockResponse(SubmitBlockResponse&& from) noexcept
      : SubmitBlockResponse(nullptr, std::move(from)) {}
  inline SubmitBlockResponse& operator=(const SubmitBlockResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline SubmitBlockResponse& operator=(SubmitBlockResponse&& 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 SubmitBlockResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const SubmitBlockResponse* internal_default_instance() {
    return reinterpret_cast<const SubmitBlockResponse*>(
        &_SubmitBlockResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(SubmitBlockResponse& a, SubmitBlockResponse& b) { a.Swap(&b); }
  inline void Swap(SubmitBlockResponse* 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(SubmitBlockResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SubmitBlockResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SubmitBlockResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SubmitBlockResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SubmitBlockResponse& from) { SubmitBlockResponse::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(SubmitBlockResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SubmitBlockResponse"; }

 protected:
  explicit SubmitBlockResponse(::google::protobuf::Arena* arena);
  SubmitBlockResponse(::google::protobuf::Arena* arena, const SubmitBlockResponse& from);
  SubmitBlockResponse(::google::protobuf::Arena* arena, SubmitBlockResponse&& from) noexcept
      : SubmitBlockResponse(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 {
    kBlockHashFieldNumber = 1,
  };
  // bytes block_hash = 1;
  void clear_block_hash() ;
  const std::string& block_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_block_hash(Arg_&& arg, Args_... args);
  std::string* mutable_block_hash();
  PROTOBUF_NODISCARD std::string* release_block_hash();
  void set_allocated_block_hash(std::string* value);

  private:
  const std::string& _internal_block_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_block_hash(
      const std::string& value);
  std::string* _internal_mutable_block_hash();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SubmitBlockResponse)
 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 block_hash_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline StringValue(const StringValue& from) : StringValue(nullptr, from) {}
  inline StringValue(StringValue&& from) noexcept
      : StringValue(nullptr, std::move(from)) {}
  inline StringValue& operator=(const StringValue& from) {
    CopyFrom(from);
    return *this;
  }
  inline StringValue& operator=(StringValue&& 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 StringValue& default_instance() {
    return *internal_default_instance();
  }
  static inline const StringValue* internal_default_instance() {
    return reinterpret_cast<const StringValue*>(
        &_StringValue_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(StringValue& a, StringValue& b) { a.Swap(&b); }
  inline void Swap(StringValue* 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(StringValue* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  StringValue* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<StringValue>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const StringValue& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const StringValue& from) { StringValue::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(StringValue* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.StringValue"; }

 protected:
  explicit StringValue(::google::protobuf::Arena* arena);
  StringValue(::google::protobuf::Arena* arena, const StringValue& from);
  StringValue(::google::protobuf::Arena* arena, StringValue&& from) noexcept
      : StringValue(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 {
    kValueFieldNumber = 1,
  };
  // string value = 1;
  void clear_value() ;
  const std::string& value() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  std::string* mutable_value();
  PROTOBUF_NODISCARD std::string* release_value();
  void set_allocated_value(std::string* value);

  private:
  const std::string& _internal_value() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(
      const std::string& value);
  std::string* _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.StringValue)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 0,
      34, 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 value_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SearchUtxosRequest(const SearchUtxosRequest& from) : SearchUtxosRequest(nullptr, from) {}
  inline SearchUtxosRequest(SearchUtxosRequest&& from) noexcept
      : SearchUtxosRequest(nullptr, std::move(from)) {}
  inline SearchUtxosRequest& operator=(const SearchUtxosRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchUtxosRequest& operator=(SearchUtxosRequest&& 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 SearchUtxosRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchUtxosRequest* internal_default_instance() {
    return reinterpret_cast<const SearchUtxosRequest*>(
        &_SearchUtxosRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 34;
  friend void swap(SearchUtxosRequest& a, SearchUtxosRequest& b) { a.Swap(&b); }
  inline void Swap(SearchUtxosRequest* 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(SearchUtxosRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SearchUtxosRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SearchUtxosRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchUtxosRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SearchUtxosRequest& from) { SearchUtxosRequest::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(SearchUtxosRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SearchUtxosRequest"; }

 protected:
  explicit SearchUtxosRequest(::google::protobuf::Arena* arena);
  SearchUtxosRequest(::google::protobuf::Arena* arena, const SearchUtxosRequest& from);
  SearchUtxosRequest(::google::protobuf::Arena* arena, SearchUtxosRequest&& from) noexcept
      : SearchUtxosRequest(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 {
    kCommitmentsFieldNumber = 1,
  };
  // repeated bytes commitments = 1;
  int commitments_size() const;
  private:
  int _internal_commitments_size() const;

  public:
  void clear_commitments() ;
  const std::string& commitments(int index) const;
  std::string* mutable_commitments(int index);
  void set_commitments(int index, const std::string& value);
  void set_commitments(int index, std::string&& value);
  void set_commitments(int index, const char* value);
  void set_commitments(int index, const void* value, std::size_t size);
  void set_commitments(int index, absl::string_view value);
  std::string* add_commitments();
  void add_commitments(const std::string& value);
  void add_commitments(std::string&& value);
  void add_commitments(const char* value);
  void add_commitments(const void* value, std::size_t size);
  void add_commitments(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& commitments() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_commitments();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_commitments() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_commitments();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SearchUtxosRequest)
 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::RepeatedPtrField<std::string> commitments_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline NewBlockCoinbase(const NewBlockCoinbase& from) : NewBlockCoinbase(nullptr, from) {}
  inline NewBlockCoinbase(NewBlockCoinbase&& from) noexcept
      : NewBlockCoinbase(nullptr, std::move(from)) {}
  inline NewBlockCoinbase& operator=(const NewBlockCoinbase& from) {
    CopyFrom(from);
    return *this;
  }
  inline NewBlockCoinbase& operator=(NewBlockCoinbase&& 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 NewBlockCoinbase& default_instance() {
    return *internal_default_instance();
  }
  static inline const NewBlockCoinbase* internal_default_instance() {
    return reinterpret_cast<const NewBlockCoinbase*>(
        &_NewBlockCoinbase_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(NewBlockCoinbase& a, NewBlockCoinbase& b) { a.Swap(&b); }
  inline void Swap(NewBlockCoinbase* 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(NewBlockCoinbase* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  NewBlockCoinbase* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<NewBlockCoinbase>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NewBlockCoinbase& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NewBlockCoinbase& from) { NewBlockCoinbase::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(NewBlockCoinbase* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.NewBlockCoinbase"; }

 protected:
  explicit NewBlockCoinbase(::google::protobuf::Arena* arena);
  NewBlockCoinbase(::google::protobuf::Arena* arena, const NewBlockCoinbase& from);
  NewBlockCoinbase(::google::protobuf::Arena* arena, NewBlockCoinbase&& from) noexcept
      : NewBlockCoinbase(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 {
    kAddressFieldNumber = 1,
    kCoinbaseExtraFieldNumber = 5,
    kValueFieldNumber = 2,
    kStealthPaymentFieldNumber = 3,
    kRevealedValueProofFieldNumber = 4,
  };
  // string address = 1;
  void clear_address() ;
  const std::string& address() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  std::string* mutable_address();
  PROTOBUF_NODISCARD std::string* release_address();
  void set_allocated_address(std::string* value);

  private:
  const std::string& _internal_address() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_address(
      const std::string& value);
  std::string* _internal_mutable_address();

  public:
  // bytes coinbase_extra = 5;
  void clear_coinbase_extra() ;
  const std::string& coinbase_extra() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_coinbase_extra(Arg_&& arg, Args_... args);
  std::string* mutable_coinbase_extra();
  PROTOBUF_NODISCARD std::string* release_coinbase_extra();
  void set_allocated_coinbase_extra(std::string* value);

  private:
  const std::string& _internal_coinbase_extra() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_coinbase_extra(
      const std::string& value);
  std::string* _internal_mutable_coinbase_extra();

  public:
  // uint64 value = 2;
  void clear_value() ;
  ::uint64_t value() const;
  void set_value(::uint64_t value);

  private:
  ::uint64_t _internal_value() const;
  void _internal_set_value(::uint64_t value);

  public:
  // bool stealth_payment = 3;
  void clear_stealth_payment() ;
  bool stealth_payment() const;
  void set_stealth_payment(bool value);

  private:
  bool _internal_stealth_payment() const;
  void _internal_set_stealth_payment(bool value);

  public:
  // bool revealed_value_proof = 4;
  void clear_revealed_value_proof() ;
  bool revealed_value_proof() const;
  void set_revealed_value_proof(bool value);

  private:
  bool _internal_revealed_value_proof() const;
  void _internal_set_revealed_value_proof(bool value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NewBlockCoinbase)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 0,
      41, 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 address_;
    ::google::protobuf::internal::ArenaStringPtr coinbase_extra_;
    ::uint64_t value_;
    bool stealth_payment_;
    bool revealed_value_proof_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline NetworkDifficultyResponse(const NetworkDifficultyResponse& from) : NetworkDifficultyResponse(nullptr, from) {}
  inline NetworkDifficultyResponse(NetworkDifficultyResponse&& from) noexcept
      : NetworkDifficultyResponse(nullptr, std::move(from)) {}
  inline NetworkDifficultyResponse& operator=(const NetworkDifficultyResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline NetworkDifficultyResponse& operator=(NetworkDifficultyResponse&& 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 NetworkDifficultyResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const NetworkDifficultyResponse* internal_default_instance() {
    return reinterpret_cast<const NetworkDifficultyResponse*>(
        &_NetworkDifficultyResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(NetworkDifficultyResponse& a, NetworkDifficultyResponse& b) { a.Swap(&b); }
  inline void Swap(NetworkDifficultyResponse* 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(NetworkDifficultyResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  NetworkDifficultyResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<NetworkDifficultyResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NetworkDifficultyResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NetworkDifficultyResponse& from) { NetworkDifficultyResponse::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(NetworkDifficultyResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.NetworkDifficultyResponse"; }

 protected:
  explicit NetworkDifficultyResponse(::google::protobuf::Arena* arena);
  NetworkDifficultyResponse(::google::protobuf::Arena* arena, const NetworkDifficultyResponse& from);
  NetworkDifficultyResponse(::google::protobuf::Arena* arena, NetworkDifficultyResponse&& from) noexcept
      : NetworkDifficultyResponse(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 {
    kDifficultyFieldNumber = 1,
    kEstimatedHashRateFieldNumber = 2,
    kHeightFieldNumber = 3,
    kTimestampFieldNumber = 4,
    kPowAlgoFieldNumber = 5,
    kSha3XEstimatedHashRateFieldNumber = 6,
    kRandomxEstimatedHashRateFieldNumber = 7,
  };
  // uint64 difficulty = 1;
  void clear_difficulty() ;
  ::uint64_t difficulty() const;
  void set_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_difficulty() const;
  void _internal_set_difficulty(::uint64_t value);

  public:
  // uint64 estimated_hash_rate = 2;
  void clear_estimated_hash_rate() ;
  ::uint64_t estimated_hash_rate() const;
  void set_estimated_hash_rate(::uint64_t value);

  private:
  ::uint64_t _internal_estimated_hash_rate() const;
  void _internal_set_estimated_hash_rate(::uint64_t value);

  public:
  // uint64 height = 3;
  void clear_height() ;
  ::uint64_t height() const;
  void set_height(::uint64_t value);

  private:
  ::uint64_t _internal_height() const;
  void _internal_set_height(::uint64_t value);

  public:
  // uint64 timestamp = 4;
  void clear_timestamp() ;
  ::uint64_t timestamp() const;
  void set_timestamp(::uint64_t value);

  private:
  ::uint64_t _internal_timestamp() const;
  void _internal_set_timestamp(::uint64_t value);

  public:
  // uint64 pow_algo = 5;
  void clear_pow_algo() ;
  ::uint64_t pow_algo() const;
  void set_pow_algo(::uint64_t value);

  private:
  ::uint64_t _internal_pow_algo() const;
  void _internal_set_pow_algo(::uint64_t value);

  public:
  // uint64 sha3x_estimated_hash_rate = 6;
  void clear_sha3x_estimated_hash_rate() ;
  ::uint64_t sha3x_estimated_hash_rate() const;
  void set_sha3x_estimated_hash_rate(::uint64_t value);

  private:
  ::uint64_t _internal_sha3x_estimated_hash_rate() const;
  void _internal_set_sha3x_estimated_hash_rate(::uint64_t value);

  public:
  // uint64 randomx_estimated_hash_rate = 7;
  void clear_randomx_estimated_hash_rate() ;
  ::uint64_t randomx_estimated_hash_rate() const;
  void set_randomx_estimated_hash_rate(::uint64_t value);

  private:
  ::uint64_t _internal_randomx_estimated_hash_rate() const;
  void _internal_set_randomx_estimated_hash_rate(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NetworkDifficultyResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 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 difficulty_;
    ::uint64_t estimated_hash_rate_;
    ::uint64_t height_;
    ::uint64_t timestamp_;
    ::uint64_t pow_algo_;
    ::uint64_t sha3x_estimated_hash_rate_;
    ::uint64_t randomx_estimated_hash_rate_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline MetaData(const MetaData& from) : MetaData(nullptr, from) {}
  inline MetaData(MetaData&& from) noexcept
      : MetaData(nullptr, std::move(from)) {}
  inline MetaData& operator=(const MetaData& from) {
    CopyFrom(from);
    return *this;
  }
  inline MetaData& operator=(MetaData&& 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 MetaData& default_instance() {
    return *internal_default_instance();
  }
  static inline const MetaData* internal_default_instance() {
    return reinterpret_cast<const MetaData*>(
        &_MetaData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 27;
  friend void swap(MetaData& a, MetaData& b) { a.Swap(&b); }
  inline void Swap(MetaData* 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(MetaData* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  MetaData* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<MetaData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MetaData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MetaData& from) { MetaData::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(MetaData* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.MetaData"; }

 protected:
  explicit MetaData(::google::protobuf::Arena* arena);
  MetaData(::google::protobuf::Arena* arena, const MetaData& from);
  MetaData(::google::protobuf::Arena* arena, MetaData&& from) noexcept
      : MetaData(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 {
    kBestBlockHashFieldNumber = 2,
    kAccumulatedDifficultyFieldNumber = 5,
    kBestBlockHeightFieldNumber = 1,
    kPrunedHeightFieldNumber = 6,
  };
  // bytes best_block_hash = 2;
  void clear_best_block_hash() ;
  const std::string& best_block_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_best_block_hash(Arg_&& arg, Args_... args);
  std::string* mutable_best_block_hash();
  PROTOBUF_NODISCARD std::string* release_best_block_hash();
  void set_allocated_best_block_hash(std::string* value);

  private:
  const std::string& _internal_best_block_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_best_block_hash(
      const std::string& value);
  std::string* _internal_mutable_best_block_hash();

  public:
  // bytes accumulated_difficulty = 5;
  void clear_accumulated_difficulty() ;
  const std::string& accumulated_difficulty() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_accumulated_difficulty(Arg_&& arg, Args_... args);
  std::string* mutable_accumulated_difficulty();
  PROTOBUF_NODISCARD std::string* release_accumulated_difficulty();
  void set_allocated_accumulated_difficulty(std::string* value);

  private:
  const std::string& _internal_accumulated_difficulty() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_accumulated_difficulty(
      const std::string& value);
  std::string* _internal_mutable_accumulated_difficulty();

  public:
  // uint64 best_block_height = 1;
  void clear_best_block_height() ;
  ::uint64_t best_block_height() const;
  void set_best_block_height(::uint64_t value);

  private:
  ::uint64_t _internal_best_block_height() const;
  void _internal_set_best_block_height(::uint64_t value);

  public:
  // uint64 pruned_height = 6;
  void clear_pruned_height() ;
  ::uint64_t pruned_height() const;
  void set_pruned_height(::uint64_t value);

  private:
  ::uint64_t _internal_pruned_height() const;
  void _internal_set_pruned_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.MetaData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 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);
    ::google::protobuf::internal::ArenaStringPtr best_block_hash_;
    ::google::protobuf::internal::ArenaStringPtr accumulated_difficulty_;
    ::uint64_t best_block_height_;
    ::uint64_t pruned_height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline MempoolStatsResponse(const MempoolStatsResponse& from) : MempoolStatsResponse(nullptr, from) {}
  inline MempoolStatsResponse(MempoolStatsResponse&& from) noexcept
      : MempoolStatsResponse(nullptr, std::move(from)) {}
  inline MempoolStatsResponse& operator=(const MempoolStatsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline MempoolStatsResponse& operator=(MempoolStatsResponse&& 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 MempoolStatsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const MempoolStatsResponse* internal_default_instance() {
    return reinterpret_cast<const MempoolStatsResponse*>(
        &_MempoolStatsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 45;
  friend void swap(MempoolStatsResponse& a, MempoolStatsResponse& b) { a.Swap(&b); }
  inline void Swap(MempoolStatsResponse* 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(MempoolStatsResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  MempoolStatsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<MempoolStatsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MempoolStatsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MempoolStatsResponse& from) { MempoolStatsResponse::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(MempoolStatsResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.MempoolStatsResponse"; }

 protected:
  explicit MempoolStatsResponse(::google::protobuf::Arena* arena);
  MempoolStatsResponse(::google::protobuf::Arena* arena, const MempoolStatsResponse& from);
  MempoolStatsResponse(::google::protobuf::Arena* arena, MempoolStatsResponse&& from) noexcept
      : MempoolStatsResponse(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 {
    kUnconfirmedTxsFieldNumber = 2,
    kReorgTxsFieldNumber = 3,
    kUnconfirmedWeightFieldNumber = 4,
  };
  // uint64 unconfirmed_txs = 2;
  void clear_unconfirmed_txs() ;
  ::uint64_t unconfirmed_txs() const;
  void set_unconfirmed_txs(::uint64_t value);

  private:
  ::uint64_t _internal_unconfirmed_txs() const;
  void _internal_set_unconfirmed_txs(::uint64_t value);

  public:
  // uint64 reorg_txs = 3;
  void clear_reorg_txs() ;
  ::uint64_t reorg_txs() const;
  void set_reorg_txs(::uint64_t value);

  private:
  ::uint64_t _internal_reorg_txs() const;
  void _internal_set_reorg_txs(::uint64_t value);

  public:
  // uint64 unconfirmed_weight = 4;
  void clear_unconfirmed_weight() ;
  ::uint64_t unconfirmed_weight() const;
  void set_unconfirmed_weight(::uint64_t value);

  private:
  ::uint64_t _internal_unconfirmed_weight() const;
  void _internal_set_unconfirmed_weight(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.MempoolStatsResponse)
 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 unconfirmed_txs_;
    ::uint64_t reorg_txs_;
    ::uint64_t unconfirmed_weight_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline ListHeadersRequest(const ListHeadersRequest& from) : ListHeadersRequest(nullptr, from) {}
  inline ListHeadersRequest(ListHeadersRequest&& from) noexcept
      : ListHeadersRequest(nullptr, std::move(from)) {}
  inline ListHeadersRequest& operator=(const ListHeadersRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ListHeadersRequest& operator=(ListHeadersRequest&& 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 ListHeadersRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListHeadersRequest* internal_default_instance() {
    return reinterpret_cast<const ListHeadersRequest*>(
        &_ListHeadersRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(ListHeadersRequest& a, ListHeadersRequest& b) { a.Swap(&b); }
  inline void Swap(ListHeadersRequest* 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(ListHeadersRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ListHeadersRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ListHeadersRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListHeadersRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ListHeadersRequest& from) { ListHeadersRequest::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(ListHeadersRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ListHeadersRequest"; }

 protected:
  explicit ListHeadersRequest(::google::protobuf::Arena* arena);
  ListHeadersRequest(::google::protobuf::Arena* arena, const ListHeadersRequest& from);
  ListHeadersRequest(::google::protobuf::Arena* arena, ListHeadersRequest&& from) noexcept
      : ListHeadersRequest(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 {
    kFromHeightFieldNumber = 1,
    kNumHeadersFieldNumber = 2,
    kSortingFieldNumber = 3,
  };
  // uint64 from_height = 1;
  void clear_from_height() ;
  ::uint64_t from_height() const;
  void set_from_height(::uint64_t value);

  private:
  ::uint64_t _internal_from_height() const;
  void _internal_set_from_height(::uint64_t value);

  public:
  // uint64 num_headers = 2;
  void clear_num_headers() ;
  ::uint64_t num_headers() const;
  void set_num_headers(::uint64_t value);

  private:
  ::uint64_t _internal_num_headers() const;
  void _internal_set_num_headers(::uint64_t value);

  public:
  // .tari.rpc.Sorting sorting = 3;
  void clear_sorting() ;
  ::tari::rpc::Sorting sorting() const;
  void set_sorting(::tari::rpc::Sorting value);

  private:
  ::tari::rpc::Sorting _internal_sorting() const;
  void _internal_set_sorting(::tari::rpc::Sorting value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ListHeadersRequest)
 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 from_height_;
    ::uint64_t num_headers_;
    int sorting_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline ListAssetRegistrationsRequest(const ListAssetRegistrationsRequest& from) : ListAssetRegistrationsRequest(nullptr, from) {}
  inline ListAssetRegistrationsRequest(ListAssetRegistrationsRequest&& from) noexcept
      : ListAssetRegistrationsRequest(nullptr, std::move(from)) {}
  inline ListAssetRegistrationsRequest& operator=(const ListAssetRegistrationsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline ListAssetRegistrationsRequest& operator=(ListAssetRegistrationsRequest&& 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 ListAssetRegistrationsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListAssetRegistrationsRequest* internal_default_instance() {
    return reinterpret_cast<const ListAssetRegistrationsRequest*>(
        &_ListAssetRegistrationsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ListAssetRegistrationsRequest& a, ListAssetRegistrationsRequest& b) { a.Swap(&b); }
  inline void Swap(ListAssetRegistrationsRequest* 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(ListAssetRegistrationsRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ListAssetRegistrationsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ListAssetRegistrationsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListAssetRegistrationsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ListAssetRegistrationsRequest& from) { ListAssetRegistrationsRequest::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(ListAssetRegistrationsRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ListAssetRegistrationsRequest"; }

 protected:
  explicit ListAssetRegistrationsRequest(::google::protobuf::Arena* arena);
  ListAssetRegistrationsRequest(::google::protobuf::Arena* arena, const ListAssetRegistrationsRequest& from);
  ListAssetRegistrationsRequest(::google::protobuf::Arena* arena, ListAssetRegistrationsRequest&& from) noexcept
      : ListAssetRegistrationsRequest(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 {
    kOffsetFieldNumber = 2,
    kCountFieldNumber = 3,
  };
  // uint64 offset = 2;
  void clear_offset() ;
  ::uint64_t offset() const;
  void set_offset(::uint64_t value);

  private:
  ::uint64_t _internal_offset() const;
  void _internal_set_offset(::uint64_t value);

  public:
  // uint64 count = 3;
  void clear_count() ;
  ::uint64_t count() const;
  void set_count(::uint64_t value);

  private:
  ::uint64_t _internal_count() const;
  void _internal_set_count(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ListAssetRegistrationsRequest)
 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 offset_;
    ::uint64_t count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline IntegerValue(const IntegerValue& from) : IntegerValue(nullptr, from) {}
  inline IntegerValue(IntegerValue&& from) noexcept
      : IntegerValue(nullptr, std::move(from)) {}
  inline IntegerValue& operator=(const IntegerValue& from) {
    CopyFrom(from);
    return *this;
  }
  inline IntegerValue& operator=(IntegerValue&& 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 IntegerValue& default_instance() {
    return *internal_default_instance();
  }
  static inline const IntegerValue* internal_default_instance() {
    return reinterpret_cast<const IntegerValue*>(
        &_IntegerValue_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(IntegerValue& a, IntegerValue& b) { a.Swap(&b); }
  inline void Swap(IntegerValue* 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(IntegerValue* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  IntegerValue* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<IntegerValue>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IntegerValue& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IntegerValue& from) { IntegerValue::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(IntegerValue* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.IntegerValue"; }

 protected:
  explicit IntegerValue(::google::protobuf::Arena* arena);
  IntegerValue(::google::protobuf::Arena* arena, const IntegerValue& from);
  IntegerValue(::google::protobuf::Arena* arena, IntegerValue&& from) noexcept
      : IntegerValue(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 {
    kValueFieldNumber = 1,
  };
  // uint64 value = 1;
  void clear_value() ;
  ::uint64_t value() const;
  void set_value(::uint64_t value);

  private:
  ::uint64_t _internal_value() const;
  void _internal_set_value(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.IntegerValue)
 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 value_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline HeightRequest(const HeightRequest& from) : HeightRequest(nullptr, from) {}
  inline HeightRequest(HeightRequest&& from) noexcept
      : HeightRequest(nullptr, std::move(from)) {}
  inline HeightRequest& operator=(const HeightRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline HeightRequest& operator=(HeightRequest&& 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 HeightRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const HeightRequest* internal_default_instance() {
    return reinterpret_cast<const HeightRequest*>(
        &_HeightRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(HeightRequest& a, HeightRequest& b) { a.Swap(&b); }
  inline void Swap(HeightRequest* 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(HeightRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  HeightRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<HeightRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const HeightRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const HeightRequest& from) { HeightRequest::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(HeightRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.HeightRequest"; }

 protected:
  explicit HeightRequest(::google::protobuf::Arena* arena);
  HeightRequest(::google::protobuf::Arena* arena, const HeightRequest& from);
  HeightRequest(::google::protobuf::Arena* arena, HeightRequest&& from) noexcept
      : HeightRequest(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 {
    kFromTipFieldNumber = 1,
    kStartHeightFieldNumber = 2,
    kEndHeightFieldNumber = 3,
  };
  // uint64 from_tip = 1;
  void clear_from_tip() ;
  ::uint64_t from_tip() const;
  void set_from_tip(::uint64_t value);

  private:
  ::uint64_t _internal_from_tip() const;
  void _internal_set_from_tip(::uint64_t value);

  public:
  // uint64 start_height = 2;
  void clear_start_height() ;
  ::uint64_t start_height() const;
  void set_start_height(::uint64_t value);

  private:
  ::uint64_t _internal_start_height() const;
  void _internal_set_start_height(::uint64_t value);

  public:
  // uint64 end_height = 3;
  void clear_end_height() ;
  ::uint64_t end_height() const;
  void set_end_height(::uint64_t value);

  private:
  ::uint64_t _internal_end_height() const;
  void _internal_set_end_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.HeightRequest)
 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 from_tip_;
    ::uint64_t start_height_;
    ::uint64_t end_height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetTokensRequest(const GetTokensRequest& from) : GetTokensRequest(nullptr, from) {}
  inline GetTokensRequest(GetTokensRequest&& from) noexcept
      : GetTokensRequest(nullptr, std::move(from)) {}
  inline GetTokensRequest& operator=(const GetTokensRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetTokensRequest& operator=(GetTokensRequest&& 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 GetTokensRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetTokensRequest* internal_default_instance() {
    return reinterpret_cast<const GetTokensRequest*>(
        &_GetTokensRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(GetTokensRequest& a, GetTokensRequest& b) { a.Swap(&b); }
  inline void Swap(GetTokensRequest* 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(GetTokensRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetTokensRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetTokensRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetTokensRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetTokensRequest& from) { GetTokensRequest::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(GetTokensRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetTokensRequest"; }

 protected:
  explicit GetTokensRequest(::google::protobuf::Arena* arena);
  GetTokensRequest(::google::protobuf::Arena* arena, const GetTokensRequest& from);
  GetTokensRequest(::google::protobuf::Arena* arena, GetTokensRequest&& from) noexcept
      : GetTokensRequest(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 {
    kUniqueIdsFieldNumber = 2,
    kAssetPublicKeyFieldNumber = 1,
  };
  // repeated bytes unique_ids = 2;
  int unique_ids_size() const;
  private:
  int _internal_unique_ids_size() const;

  public:
  void clear_unique_ids() ;
  const std::string& unique_ids(int index) const;
  std::string* mutable_unique_ids(int index);
  void set_unique_ids(int index, const std::string& value);
  void set_unique_ids(int index, std::string&& value);
  void set_unique_ids(int index, const char* value);
  void set_unique_ids(int index, const void* value, std::size_t size);
  void set_unique_ids(int index, absl::string_view value);
  std::string* add_unique_ids();
  void add_unique_ids(const std::string& value);
  void add_unique_ids(std::string&& value);
  void add_unique_ids(const char* value);
  void add_unique_ids(const void* value, std::size_t size);
  void add_unique_ids(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& unique_ids() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_unique_ids();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_unique_ids() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_unique_ids();

  public:
  // bytes asset_public_key = 1;
  void clear_asset_public_key() ;
  const std::string& asset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_asset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_asset_public_key();
  PROTOBUF_NODISCARD std::string* release_asset_public_key();
  void set_allocated_asset_public_key(std::string* value);

  private:
  const std::string& _internal_asset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_asset_public_key(
      const std::string& value);
  std::string* _internal_mutable_asset_public_key();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetTokensRequest)
 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::RepeatedPtrField<std::string> unique_ids_;
    ::google::protobuf::internal::ArenaStringPtr asset_public_key_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetTemplateRegistrationsRequest(const GetTemplateRegistrationsRequest& from) : GetTemplateRegistrationsRequest(nullptr, from) {}
  inline GetTemplateRegistrationsRequest(GetTemplateRegistrationsRequest&& from) noexcept
      : GetTemplateRegistrationsRequest(nullptr, std::move(from)) {}
  inline GetTemplateRegistrationsRequest& operator=(const GetTemplateRegistrationsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetTemplateRegistrationsRequest& operator=(GetTemplateRegistrationsRequest&& 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 GetTemplateRegistrationsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetTemplateRegistrationsRequest* internal_default_instance() {
    return reinterpret_cast<const GetTemplateRegistrationsRequest*>(
        &_GetTemplateRegistrationsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 50;
  friend void swap(GetTemplateRegistrationsRequest& a, GetTemplateRegistrationsRequest& b) { a.Swap(&b); }
  inline void Swap(GetTemplateRegistrationsRequest* 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(GetTemplateRegistrationsRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetTemplateRegistrationsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetTemplateRegistrationsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetTemplateRegistrationsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetTemplateRegistrationsRequest& from) { GetTemplateRegistrationsRequest::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(GetTemplateRegistrationsRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetTemplateRegistrationsRequest"; }

 protected:
  explicit GetTemplateRegistrationsRequest(::google::protobuf::Arena* arena);
  GetTemplateRegistrationsRequest(::google::protobuf::Arena* arena, const GetTemplateRegistrationsRequest& from);
  GetTemplateRegistrationsRequest(::google::protobuf::Arena* arena, GetTemplateRegistrationsRequest&& from) noexcept
      : GetTemplateRegistrationsRequest(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 {
    kStartHashFieldNumber = 1,
    kCountFieldNumber = 2,
  };
  // bytes start_hash = 1;
  void clear_start_hash() ;
  const std::string& start_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_start_hash(Arg_&& arg, Args_... args);
  std::string* mutable_start_hash();
  PROTOBUF_NODISCARD std::string* release_start_hash();
  void set_allocated_start_hash(std::string* value);

  private:
  const std::string& _internal_start_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_start_hash(
      const std::string& value);
  std::string* _internal_mutable_start_hash();

  public:
  // uint64 count = 2;
  void clear_count() ;
  ::uint64_t count() const;
  void set_count(::uint64_t value);

  private:
  ::uint64_t _internal_count() const;
  void _internal_set_count(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetTemplateRegistrationsRequest)
 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 start_hash_;
    ::uint64_t count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetSideChainUtxosRequest(const GetSideChainUtxosRequest& from) : GetSideChainUtxosRequest(nullptr, from) {}
  inline GetSideChainUtxosRequest(GetSideChainUtxosRequest&& from) noexcept
      : GetSideChainUtxosRequest(nullptr, std::move(from)) {}
  inline GetSideChainUtxosRequest& operator=(const GetSideChainUtxosRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetSideChainUtxosRequest& operator=(GetSideChainUtxosRequest&& 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 GetSideChainUtxosRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetSideChainUtxosRequest* internal_default_instance() {
    return reinterpret_cast<const GetSideChainUtxosRequest*>(
        &_GetSideChainUtxosRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 53;
  friend void swap(GetSideChainUtxosRequest& a, GetSideChainUtxosRequest& b) { a.Swap(&b); }
  inline void Swap(GetSideChainUtxosRequest* 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(GetSideChainUtxosRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetSideChainUtxosRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetSideChainUtxosRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetSideChainUtxosRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetSideChainUtxosRequest& from) { GetSideChainUtxosRequest::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(GetSideChainUtxosRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetSideChainUtxosRequest"; }

 protected:
  explicit GetSideChainUtxosRequest(::google::protobuf::Arena* arena);
  GetSideChainUtxosRequest(::google::protobuf::Arena* arena, const GetSideChainUtxosRequest& from);
  GetSideChainUtxosRequest(::google::protobuf::Arena* arena, GetSideChainUtxosRequest&& from) noexcept
      : GetSideChainUtxosRequest(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 {
    kStartHashFieldNumber = 1,
    kCountFieldNumber = 2,
  };
  // bytes start_hash = 1;
  void clear_start_hash() ;
  const std::string& start_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_start_hash(Arg_&& arg, Args_... args);
  std::string* mutable_start_hash();
  PROTOBUF_NODISCARD std::string* release_start_hash();
  void set_allocated_start_hash(std::string* value);

  private:
  const std::string& _internal_start_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_start_hash(
      const std::string& value);
  std::string* _internal_mutable_start_hash();

  public:
  // uint64 count = 2;
  void clear_count() ;
  ::uint64_t count() const;
  void set_count(::uint64_t value);

  private:
  ::uint64_t _internal_count() const;
  void _internal_set_count(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetSideChainUtxosRequest)
 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 start_hash_;
    ::uint64_t count_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetShardKeyResponse(const GetShardKeyResponse& from) : GetShardKeyResponse(nullptr, from) {}
  inline GetShardKeyResponse(GetShardKeyResponse&& from) noexcept
      : GetShardKeyResponse(nullptr, std::move(from)) {}
  inline GetShardKeyResponse& operator=(const GetShardKeyResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetShardKeyResponse& operator=(GetShardKeyResponse&& 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 GetShardKeyResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetShardKeyResponse* internal_default_instance() {
    return reinterpret_cast<const GetShardKeyResponse*>(
        &_GetShardKeyResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 49;
  friend void swap(GetShardKeyResponse& a, GetShardKeyResponse& b) { a.Swap(&b); }
  inline void Swap(GetShardKeyResponse* 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(GetShardKeyResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetShardKeyResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetShardKeyResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetShardKeyResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetShardKeyResponse& from) { GetShardKeyResponse::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(GetShardKeyResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetShardKeyResponse"; }

 protected:
  explicit GetShardKeyResponse(::google::protobuf::Arena* arena);
  GetShardKeyResponse(::google::protobuf::Arena* arena, const GetShardKeyResponse& from);
  GetShardKeyResponse(::google::protobuf::Arena* arena, GetShardKeyResponse&& from) noexcept
      : GetShardKeyResponse(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 {
    kShardKeyFieldNumber = 1,
    kFoundFieldNumber = 2,
  };
  // bytes shard_key = 1;
  void clear_shard_key() ;
  const std::string& shard_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_shard_key(Arg_&& arg, Args_... args);
  std::string* mutable_shard_key();
  PROTOBUF_NODISCARD std::string* release_shard_key();
  void set_allocated_shard_key(std::string* value);

  private:
  const std::string& _internal_shard_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_shard_key(
      const std::string& value);
  std::string* _internal_mutable_shard_key();

  public:
  // bool found = 2;
  void clear_found() ;
  bool found() const;
  void set_found(bool value);

  private:
  bool _internal_found() const;
  void _internal_set_found(bool value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetShardKeyResponse)
 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 shard_key_;
    bool found_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetShardKeyRequest(const GetShardKeyRequest& from) : GetShardKeyRequest(nullptr, from) {}
  inline GetShardKeyRequest(GetShardKeyRequest&& from) noexcept
      : GetShardKeyRequest(nullptr, std::move(from)) {}
  inline GetShardKeyRequest& operator=(const GetShardKeyRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetShardKeyRequest& operator=(GetShardKeyRequest&& 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 GetShardKeyRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetShardKeyRequest* internal_default_instance() {
    return reinterpret_cast<const GetShardKeyRequest*>(
        &_GetShardKeyRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 48;
  friend void swap(GetShardKeyRequest& a, GetShardKeyRequest& b) { a.Swap(&b); }
  inline void Swap(GetShardKeyRequest* 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(GetShardKeyRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetShardKeyRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetShardKeyRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetShardKeyRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetShardKeyRequest& from) { GetShardKeyRequest::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(GetShardKeyRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetShardKeyRequest"; }

 protected:
  explicit GetShardKeyRequest(::google::protobuf::Arena* arena);
  GetShardKeyRequest(::google::protobuf::Arena* arena, const GetShardKeyRequest& from);
  GetShardKeyRequest(::google::protobuf::Arena* arena, GetShardKeyRequest&& from) noexcept
      : GetShardKeyRequest(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 {
    kPublicKeyFieldNumber = 2,
    kHeightFieldNumber = 1,
  };
  // bytes public_key = 2;
  void clear_public_key() ;
  const std::string& public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_public_key();
  PROTOBUF_NODISCARD std::string* release_public_key();
  void set_allocated_public_key(std::string* value);

  private:
  const std::string& _internal_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_public_key(
      const std::string& value);
  std::string* _internal_mutable_public_key();

  public:
  // uint64 height = 1;
  void clear_height() ;
  ::uint64_t height() const;
  void set_height(::uint64_t value);

  private:
  ::uint64_t _internal_height() const;
  void _internal_set_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetShardKeyRequest)
 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_key_;
    ::uint64_t height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetPeersRequest(const GetPeersRequest& from) : GetPeersRequest(nullptr, from) {}
  inline GetPeersRequest(GetPeersRequest&& from) noexcept
      : GetPeersRequest(nullptr, std::move(from)) {}
  inline GetPeersRequest& operator=(const GetPeersRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetPeersRequest& operator=(GetPeersRequest&& 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 GetPeersRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetPeersRequest* internal_default_instance() {
    return reinterpret_cast<const GetPeersRequest*>(
        &_GetPeersRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 38;
  friend void swap(GetPeersRequest& a, GetPeersRequest& b) { a.Swap(&b); }
  inline void Swap(GetPeersRequest* 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(GetPeersRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:tari.rpc.GetPeersRequest)
 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_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetNewBlockBlobResult(const GetNewBlockBlobResult& from) : GetNewBlockBlobResult(nullptr, from) {}
  inline GetNewBlockBlobResult(GetNewBlockBlobResult&& from) noexcept
      : GetNewBlockBlobResult(nullptr, std::move(from)) {}
  inline GetNewBlockBlobResult& operator=(const GetNewBlockBlobResult& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetNewBlockBlobResult& operator=(GetNewBlockBlobResult&& 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 GetNewBlockBlobResult& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetNewBlockBlobResult* internal_default_instance() {
    return reinterpret_cast<const GetNewBlockBlobResult*>(
        &_GetNewBlockBlobResult_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 31;
  friend void swap(GetNewBlockBlobResult& a, GetNewBlockBlobResult& b) { a.Swap(&b); }
  inline void Swap(GetNewBlockBlobResult* 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(GetNewBlockBlobResult* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetNewBlockBlobResult* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetNewBlockBlobResult>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetNewBlockBlobResult& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetNewBlockBlobResult& from) { GetNewBlockBlobResult::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(GetNewBlockBlobResult* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetNewBlockBlobResult"; }

 protected:
  explicit GetNewBlockBlobResult(::google::protobuf::Arena* arena);
  GetNewBlockBlobResult(::google::protobuf::Arena* arena, const GetNewBlockBlobResult& from);
  GetNewBlockBlobResult(::google::protobuf::Arena* arena, GetNewBlockBlobResult&& from) noexcept
      : GetNewBlockBlobResult(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 {
    kBlockHashFieldNumber = 1,
    kHeaderFieldNumber = 2,
    kBlockBodyFieldNumber = 3,
    kMergeMiningHashFieldNumber = 4,
    kUtxoMrFieldNumber = 5,
    kTariUniqueIdFieldNumber = 6,
  };
  // bytes block_hash = 1;
  void clear_block_hash() ;
  const std::string& block_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_block_hash(Arg_&& arg, Args_... args);
  std::string* mutable_block_hash();
  PROTOBUF_NODISCARD std::string* release_block_hash();
  void set_allocated_block_hash(std::string* value);

  private:
  const std::string& _internal_block_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_block_hash(
      const std::string& value);
  std::string* _internal_mutable_block_hash();

  public:
  // bytes header = 2;
  void clear_header() ;
  const std::string& header() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_header(Arg_&& arg, Args_... args);
  std::string* mutable_header();
  PROTOBUF_NODISCARD std::string* release_header();
  void set_allocated_header(std::string* value);

  private:
  const std::string& _internal_header() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_header(
      const std::string& value);
  std::string* _internal_mutable_header();

  public:
  // bytes block_body = 3;
  void clear_block_body() ;
  const std::string& block_body() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_block_body(Arg_&& arg, Args_... args);
  std::string* mutable_block_body();
  PROTOBUF_NODISCARD std::string* release_block_body();
  void set_allocated_block_body(std::string* value);

  private:
  const std::string& _internal_block_body() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_block_body(
      const std::string& value);
  std::string* _internal_mutable_block_body();

  public:
  // bytes merge_mining_hash = 4;
  void clear_merge_mining_hash() ;
  const std::string& merge_mining_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_merge_mining_hash(Arg_&& arg, Args_... args);
  std::string* mutable_merge_mining_hash();
  PROTOBUF_NODISCARD std::string* release_merge_mining_hash();
  void set_allocated_merge_mining_hash(std::string* value);

  private:
  const std::string& _internal_merge_mining_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_merge_mining_hash(
      const std::string& value);
  std::string* _internal_mutable_merge_mining_hash();

  public:
  // bytes utxo_mr = 5;
  void clear_utxo_mr() ;
  const std::string& utxo_mr() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_utxo_mr(Arg_&& arg, Args_... args);
  std::string* mutable_utxo_mr();
  PROTOBUF_NODISCARD std::string* release_utxo_mr();
  void set_allocated_utxo_mr(std::string* value);

  private:
  const std::string& _internal_utxo_mr() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_utxo_mr(
      const std::string& value);
  std::string* _internal_mutable_utxo_mr();

  public:
  // bytes tari_unique_id = 6;
  void clear_tari_unique_id() ;
  const std::string& tari_unique_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_tari_unique_id(Arg_&& arg, Args_... args);
  std::string* mutable_tari_unique_id();
  PROTOBUF_NODISCARD std::string* release_tari_unique_id();
  void set_allocated_tari_unique_id(std::string* value);

  private:
  const std::string& _internal_tari_unique_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tari_unique_id(
      const std::string& value);
  std::string* _internal_mutable_tari_unique_id();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetNewBlockBlobResult)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 6, 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 block_hash_;
    ::google::protobuf::internal::ArenaStringPtr header_;
    ::google::protobuf::internal::ArenaStringPtr block_body_;
    ::google::protobuf::internal::ArenaStringPtr merge_mining_hash_;
    ::google::protobuf::internal::ArenaStringPtr utxo_mr_;
    ::google::protobuf::internal::ArenaStringPtr tari_unique_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetMempoolTransactionsRequest(const GetMempoolTransactionsRequest& from) : GetMempoolTransactionsRequest(nullptr, from) {}
  inline GetMempoolTransactionsRequest(GetMempoolTransactionsRequest&& from) noexcept
      : GetMempoolTransactionsRequest(nullptr, std::move(from)) {}
  inline GetMempoolTransactionsRequest& operator=(const GetMempoolTransactionsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetMempoolTransactionsRequest& operator=(GetMempoolTransactionsRequest&& 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 GetMempoolTransactionsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetMempoolTransactionsRequest* internal_default_instance() {
    return reinterpret_cast<const GetMempoolTransactionsRequest*>(
        &_GetMempoolTransactionsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 41;
  friend void swap(GetMempoolTransactionsRequest& a, GetMempoolTransactionsRequest& b) { a.Swap(&b); }
  inline void Swap(GetMempoolTransactionsRequest* 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(GetMempoolTransactionsRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

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

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:tari.rpc.GetMempoolTransactionsRequest)
 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_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetHeaderByHashRequest(const GetHeaderByHashRequest& from) : GetHeaderByHashRequest(nullptr, from) {}
  inline GetHeaderByHashRequest(GetHeaderByHashRequest&& from) noexcept
      : GetHeaderByHashRequest(nullptr, std::move(from)) {}
  inline GetHeaderByHashRequest& operator=(const GetHeaderByHashRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetHeaderByHashRequest& operator=(GetHeaderByHashRequest&& 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 GetHeaderByHashRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetHeaderByHashRequest* internal_default_instance() {
    return reinterpret_cast<const GetHeaderByHashRequest*>(
        &_GetHeaderByHashRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(GetHeaderByHashRequest& a, GetHeaderByHashRequest& b) { a.Swap(&b); }
  inline void Swap(GetHeaderByHashRequest* 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(GetHeaderByHashRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetHeaderByHashRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetHeaderByHashRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetHeaderByHashRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetHeaderByHashRequest& from) { GetHeaderByHashRequest::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(GetHeaderByHashRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetHeaderByHashRequest"; }

 protected:
  explicit GetHeaderByHashRequest(::google::protobuf::Arena* arena);
  GetHeaderByHashRequest(::google::protobuf::Arena* arena, const GetHeaderByHashRequest& from);
  GetHeaderByHashRequest(::google::protobuf::Arena* arena, GetHeaderByHashRequest&& from) noexcept
      : GetHeaderByHashRequest(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 {
    kHashFieldNumber = 1,
  };
  // bytes hash = 1;
  void clear_hash() ;
  const std::string& hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  std::string* mutable_hash();
  PROTOBUF_NODISCARD std::string* release_hash();
  void set_allocated_hash(std::string* value);

  private:
  const std::string& _internal_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_hash(
      const std::string& value);
  std::string* _internal_mutable_hash();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetHeaderByHashRequest)
 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 hash_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetBlocksRequest(const GetBlocksRequest& from) : GetBlocksRequest(nullptr, from) {}
  inline GetBlocksRequest(GetBlocksRequest&& from) noexcept
      : GetBlocksRequest(nullptr, std::move(from)) {}
  inline GetBlocksRequest& operator=(const GetBlocksRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetBlocksRequest& operator=(GetBlocksRequest&& 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 GetBlocksRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetBlocksRequest* internal_default_instance() {
    return reinterpret_cast<const GetBlocksRequest*>(
        &_GetBlocksRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 25;
  friend void swap(GetBlocksRequest& a, GetBlocksRequest& b) { a.Swap(&b); }
  inline void Swap(GetBlocksRequest* 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(GetBlocksRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetBlocksRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetBlocksRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetBlocksRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetBlocksRequest& from) { GetBlocksRequest::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(GetBlocksRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetBlocksRequest"; }

 protected:
  explicit GetBlocksRequest(::google::protobuf::Arena* arena);
  GetBlocksRequest(::google::protobuf::Arena* arena, const GetBlocksRequest& from);
  GetBlocksRequest(::google::protobuf::Arena* arena, GetBlocksRequest&& from) noexcept
      : GetBlocksRequest(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 {
    kHeightsFieldNumber = 1,
  };
  // repeated uint64 heights = 1;
  int heights_size() const;
  private:
  int _internal_heights_size() const;

  public:
  void clear_heights() ;
  ::uint64_t heights(int index) const;
  void set_heights(int index, ::uint64_t value);
  void add_heights(::uint64_t value);
  const ::google::protobuf::RepeatedField<::uint64_t>& heights() const;
  ::google::protobuf::RepeatedField<::uint64_t>* mutable_heights();

  private:
  const ::google::protobuf::RepeatedField<::uint64_t>& _internal_heights() const;
  ::google::protobuf::RepeatedField<::uint64_t>* _internal_mutable_heights();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetBlocksRequest)
 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::RepeatedField<::uint64_t> heights_;
    mutable ::google::protobuf::internal::CachedSize _heights_cached_byte_size_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetAssetMetadataRequest(const GetAssetMetadataRequest& from) : GetAssetMetadataRequest(nullptr, from) {}
  inline GetAssetMetadataRequest(GetAssetMetadataRequest&& from) noexcept
      : GetAssetMetadataRequest(nullptr, std::move(from)) {}
  inline GetAssetMetadataRequest& operator=(const GetAssetMetadataRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetAssetMetadataRequest& operator=(GetAssetMetadataRequest&& 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 GetAssetMetadataRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetAssetMetadataRequest* internal_default_instance() {
    return reinterpret_cast<const GetAssetMetadataRequest*>(
        &_GetAssetMetadataRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(GetAssetMetadataRequest& a, GetAssetMetadataRequest& b) { a.Swap(&b); }
  inline void Swap(GetAssetMetadataRequest* 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(GetAssetMetadataRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetAssetMetadataRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetAssetMetadataRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetAssetMetadataRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetAssetMetadataRequest& from) { GetAssetMetadataRequest::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(GetAssetMetadataRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetAssetMetadataRequest"; }

 protected:
  explicit GetAssetMetadataRequest(::google::protobuf::Arena* arena);
  GetAssetMetadataRequest(::google::protobuf::Arena* arena, const GetAssetMetadataRequest& from);
  GetAssetMetadataRequest(::google::protobuf::Arena* arena, GetAssetMetadataRequest&& from) noexcept
      : GetAssetMetadataRequest(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 {
    kAssetPublicKeyFieldNumber = 1,
  };
  // bytes asset_public_key = 1;
  void clear_asset_public_key() ;
  const std::string& asset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_asset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_asset_public_key();
  PROTOBUF_NODISCARD std::string* release_asset_public_key();
  void set_allocated_asset_public_key(std::string* value);

  private:
  const std::string& _internal_asset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_asset_public_key(
      const std::string& value);
  std::string* _internal_mutable_asset_public_key();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetAssetMetadataRequest)
 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 asset_public_key_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetActiveValidatorNodesResponse(const GetActiveValidatorNodesResponse& from) : GetActiveValidatorNodesResponse(nullptr, from) {}
  inline GetActiveValidatorNodesResponse(GetActiveValidatorNodesResponse&& from) noexcept
      : GetActiveValidatorNodesResponse(nullptr, std::move(from)) {}
  inline GetActiveValidatorNodesResponse& operator=(const GetActiveValidatorNodesResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetActiveValidatorNodesResponse& operator=(GetActiveValidatorNodesResponse&& 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 GetActiveValidatorNodesResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetActiveValidatorNodesResponse* internal_default_instance() {
    return reinterpret_cast<const GetActiveValidatorNodesResponse*>(
        &_GetActiveValidatorNodesResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 47;
  friend void swap(GetActiveValidatorNodesResponse& a, GetActiveValidatorNodesResponse& b) { a.Swap(&b); }
  inline void Swap(GetActiveValidatorNodesResponse* 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(GetActiveValidatorNodesResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetActiveValidatorNodesResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetActiveValidatorNodesResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetActiveValidatorNodesResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetActiveValidatorNodesResponse& from) { GetActiveValidatorNodesResponse::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(GetActiveValidatorNodesResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetActiveValidatorNodesResponse"; }

 protected:
  explicit GetActiveValidatorNodesResponse(::google::protobuf::Arena* arena);
  GetActiveValidatorNodesResponse(::google::protobuf::Arena* arena, const GetActiveValidatorNodesResponse& from);
  GetActiveValidatorNodesResponse(::google::protobuf::Arena* arena, GetActiveValidatorNodesResponse&& from) noexcept
      : GetActiveValidatorNodesResponse(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 {
    kShardKeyFieldNumber = 1,
    kPublicKeyFieldNumber = 2,
  };
  // bytes shard_key = 1;
  void clear_shard_key() ;
  const std::string& shard_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_shard_key(Arg_&& arg, Args_... args);
  std::string* mutable_shard_key();
  PROTOBUF_NODISCARD std::string* release_shard_key();
  void set_allocated_shard_key(std::string* value);

  private:
  const std::string& _internal_shard_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_shard_key(
      const std::string& value);
  std::string* _internal_mutable_shard_key();

  public:
  // bytes public_key = 2;
  void clear_public_key() ;
  const std::string& public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_public_key();
  PROTOBUF_NODISCARD std::string* release_public_key();
  void set_allocated_public_key(std::string* value);

  private:
  const std::string& _internal_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_public_key(
      const std::string& value);
  std::string* _internal_mutable_public_key();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetActiveValidatorNodesResponse)
 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 shard_key_;
    ::google::protobuf::internal::ArenaStringPtr public_key_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetActiveValidatorNodesRequest(const GetActiveValidatorNodesRequest& from) : GetActiveValidatorNodesRequest(nullptr, from) {}
  inline GetActiveValidatorNodesRequest(GetActiveValidatorNodesRequest&& from) noexcept
      : GetActiveValidatorNodesRequest(nullptr, std::move(from)) {}
  inline GetActiveValidatorNodesRequest& operator=(const GetActiveValidatorNodesRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetActiveValidatorNodesRequest& operator=(GetActiveValidatorNodesRequest&& 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 GetActiveValidatorNodesRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetActiveValidatorNodesRequest* internal_default_instance() {
    return reinterpret_cast<const GetActiveValidatorNodesRequest*>(
        &_GetActiveValidatorNodesRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 46;
  friend void swap(GetActiveValidatorNodesRequest& a, GetActiveValidatorNodesRequest& b) { a.Swap(&b); }
  inline void Swap(GetActiveValidatorNodesRequest* 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(GetActiveValidatorNodesRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetActiveValidatorNodesRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetActiveValidatorNodesRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetActiveValidatorNodesRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetActiveValidatorNodesRequest& from) { GetActiveValidatorNodesRequest::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(GetActiveValidatorNodesRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetActiveValidatorNodesRequest"; }

 protected:
  explicit GetActiveValidatorNodesRequest(::google::protobuf::Arena* arena);
  GetActiveValidatorNodesRequest(::google::protobuf::Arena* arena, const GetActiveValidatorNodesRequest& from);
  GetActiveValidatorNodesRequest(::google::protobuf::Arena* arena, GetActiveValidatorNodesRequest&& from) noexcept
      : GetActiveValidatorNodesRequest(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 {
    kHeightFieldNumber = 1,
  };
  // uint64 height = 1;
  void clear_height() ;
  ::uint64_t height() const;
  void set_height(::uint64_t value);

  private:
  ::uint64_t _internal_height() const;
  void _internal_set_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetActiveValidatorNodesRequest)
 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 height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline FetchMatchingUtxosRequest(const FetchMatchingUtxosRequest& from) : FetchMatchingUtxosRequest(nullptr, from) {}
  inline FetchMatchingUtxosRequest(FetchMatchingUtxosRequest&& from) noexcept
      : FetchMatchingUtxosRequest(nullptr, std::move(from)) {}
  inline FetchMatchingUtxosRequest& operator=(const FetchMatchingUtxosRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline FetchMatchingUtxosRequest& operator=(FetchMatchingUtxosRequest&& 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 FetchMatchingUtxosRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const FetchMatchingUtxosRequest* internal_default_instance() {
    return reinterpret_cast<const FetchMatchingUtxosRequest*>(
        &_FetchMatchingUtxosRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 35;
  friend void swap(FetchMatchingUtxosRequest& a, FetchMatchingUtxosRequest& b) { a.Swap(&b); }
  inline void Swap(FetchMatchingUtxosRequest* 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(FetchMatchingUtxosRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  FetchMatchingUtxosRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<FetchMatchingUtxosRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FetchMatchingUtxosRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FetchMatchingUtxosRequest& from) { FetchMatchingUtxosRequest::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(FetchMatchingUtxosRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.FetchMatchingUtxosRequest"; }

 protected:
  explicit FetchMatchingUtxosRequest(::google::protobuf::Arena* arena);
  FetchMatchingUtxosRequest(::google::protobuf::Arena* arena, const FetchMatchingUtxosRequest& from);
  FetchMatchingUtxosRequest(::google::protobuf::Arena* arena, FetchMatchingUtxosRequest&& from) noexcept
      : FetchMatchingUtxosRequest(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 {
    kHashesFieldNumber = 1,
  };
  // repeated bytes hashes = 1;
  int hashes_size() const;
  private:
  int _internal_hashes_size() const;

  public:
  void clear_hashes() ;
  const std::string& hashes(int index) const;
  std::string* mutable_hashes(int index);
  void set_hashes(int index, const std::string& value);
  void set_hashes(int index, std::string&& value);
  void set_hashes(int index, const char* value);
  void set_hashes(int index, const void* value, std::size_t size);
  void set_hashes(int index, absl::string_view value);
  std::string* add_hashes();
  void add_hashes(const std::string& value);
  void add_hashes(std::string&& value);
  void add_hashes(const char* value);
  void add_hashes(const void* value, std::size_t size);
  void add_hashes(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& hashes() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_hashes();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_hashes() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_hashes();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.FetchMatchingUtxosRequest)
 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::RepeatedPtrField<std::string> hashes_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockTimingResponse(const BlockTimingResponse& from) : BlockTimingResponse(nullptr, from) {}
  inline BlockTimingResponse(BlockTimingResponse&& from) noexcept
      : BlockTimingResponse(nullptr, std::move(from)) {}
  inline BlockTimingResponse& operator=(const BlockTimingResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockTimingResponse& operator=(BlockTimingResponse&& 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 BlockTimingResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockTimingResponse* internal_default_instance() {
    return reinterpret_cast<const BlockTimingResponse*>(
        &_BlockTimingResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(BlockTimingResponse& a, BlockTimingResponse& b) { a.Swap(&b); }
  inline void Swap(BlockTimingResponse* 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(BlockTimingResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockTimingResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockTimingResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockTimingResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockTimingResponse& from) { BlockTimingResponse::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(BlockTimingResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockTimingResponse"; }

 protected:
  explicit BlockTimingResponse(::google::protobuf::Arena* arena);
  BlockTimingResponse(::google::protobuf::Arena* arena, const BlockTimingResponse& from);
  BlockTimingResponse(::google::protobuf::Arena* arena, BlockTimingResponse&& from) noexcept
      : BlockTimingResponse(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 {
    kMaxFieldNumber = 1,
    kMinFieldNumber = 2,
    kAvgFieldNumber = 3,
  };
  // uint64 max = 1;
  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:
  // uint64 min = 2;
  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:
  // double avg = 3;
  void clear_avg() ;
  double avg() const;
  void set_avg(double value);

  private:
  double _internal_avg() const;
  void _internal_set_avg(double value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockTimingResponse)
 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 max_;
    ::uint64_t min_;
    double avg_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockInfo(const BlockInfo& from) : BlockInfo(nullptr, from) {}
  inline BlockInfo(BlockInfo&& from) noexcept
      : BlockInfo(nullptr, std::move(from)) {}
  inline BlockInfo& operator=(const BlockInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockInfo& operator=(BlockInfo&& 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 BlockInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockInfo* internal_default_instance() {
    return reinterpret_cast<const BlockInfo*>(
        &_BlockInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 52;
  friend void swap(BlockInfo& a, BlockInfo& b) { a.Swap(&b); }
  inline void Swap(BlockInfo* 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(BlockInfo* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockInfo* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockInfo>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockInfo& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockInfo& from) { BlockInfo::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(BlockInfo* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockInfo"; }

 protected:
  explicit BlockInfo(::google::protobuf::Arena* arena);
  BlockInfo(::google::protobuf::Arena* arena, const BlockInfo& from);
  BlockInfo(::google::protobuf::Arena* arena, BlockInfo&& from) noexcept
      : BlockInfo(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 {
    kHashFieldNumber = 2,
    kNextBlockHashFieldNumber = 3,
    kHeightFieldNumber = 1,
  };
  // bytes hash = 2;
  void clear_hash() ;
  const std::string& hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  std::string* mutable_hash();
  PROTOBUF_NODISCARD std::string* release_hash();
  void set_allocated_hash(std::string* value);

  private:
  const std::string& _internal_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_hash(
      const std::string& value);
  std::string* _internal_mutable_hash();

  public:
  // bytes next_block_hash = 3;
  void clear_next_block_hash() ;
  const std::string& next_block_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_next_block_hash(Arg_&& arg, Args_... args);
  std::string* mutable_next_block_hash();
  PROTOBUF_NODISCARD std::string* release_next_block_hash();
  void set_allocated_next_block_hash(std::string* value);

  private:
  const std::string& _internal_next_block_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_next_block_hash(
      const std::string& value);
  std::string* _internal_mutable_next_block_hash();

  public:
  // uint64 height = 1;
  void clear_height() ;
  ::uint64_t height() const;
  void set_height(::uint64_t value);

  private:
  ::uint64_t _internal_height() const;
  void _internal_set_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockInfo)
 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 hash_;
    ::google::protobuf::internal::ArenaStringPtr next_block_hash_;
    ::uint64_t height_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockGroupResponse(const BlockGroupResponse& from) : BlockGroupResponse(nullptr, from) {}
  inline BlockGroupResponse(BlockGroupResponse&& from) noexcept
      : BlockGroupResponse(nullptr, std::move(from)) {}
  inline BlockGroupResponse& operator=(const BlockGroupResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockGroupResponse& operator=(BlockGroupResponse&& 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 BlockGroupResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockGroupResponse* internal_default_instance() {
    return reinterpret_cast<const BlockGroupResponse*>(
        &_BlockGroupResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(BlockGroupResponse& a, BlockGroupResponse& b) { a.Swap(&b); }
  inline void Swap(BlockGroupResponse* 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(BlockGroupResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockGroupResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockGroupResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockGroupResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockGroupResponse& from) { BlockGroupResponse::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(BlockGroupResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockGroupResponse"; }

 protected:
  explicit BlockGroupResponse(::google::protobuf::Arena* arena);
  BlockGroupResponse(::google::protobuf::Arena* arena, const BlockGroupResponse& from);
  BlockGroupResponse(::google::protobuf::Arena* arena, BlockGroupResponse&& from) noexcept
      : BlockGroupResponse(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 {
    kValueFieldNumber = 1,
    kCalcTypeFieldNumber = 2,
  };
  // repeated double value = 1;
  int value_size() const;
  private:
  int _internal_value_size() const;

  public:
  void clear_value() ;
  double value(int index) const;
  void set_value(int index, double value);
  void add_value(double value);
  const ::google::protobuf::RepeatedField<double>& value() const;
  ::google::protobuf::RepeatedField<double>* mutable_value();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_value() const;
  ::google::protobuf::RepeatedField<double>* _internal_mutable_value();

  public:
  // .tari.rpc.CalcType calc_type = 2;
  void clear_calc_type() ;
  ::tari::rpc::CalcType calc_type() const;
  void set_calc_type(::tari::rpc::CalcType value);

  private:
  ::tari::rpc::CalcType _internal_calc_type() const;
  void _internal_set_calc_type(::tari::rpc::CalcType value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockGroupResponse)
 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<double> value_;
    int calc_type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockGroupRequest(const BlockGroupRequest& from) : BlockGroupRequest(nullptr, from) {}
  inline BlockGroupRequest(BlockGroupRequest&& from) noexcept
      : BlockGroupRequest(nullptr, std::move(from)) {}
  inline BlockGroupRequest& operator=(const BlockGroupRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockGroupRequest& operator=(BlockGroupRequest&& 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 BlockGroupRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockGroupRequest* internal_default_instance() {
    return reinterpret_cast<const BlockGroupRequest*>(
        &_BlockGroupRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(BlockGroupRequest& a, BlockGroupRequest& b) { a.Swap(&b); }
  inline void Swap(BlockGroupRequest* 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(BlockGroupRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockGroupRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockGroupRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockGroupRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockGroupRequest& from) { BlockGroupRequest::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(BlockGroupRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockGroupRequest"; }

 protected:
  explicit BlockGroupRequest(::google::protobuf::Arena* arena);
  BlockGroupRequest(::google::protobuf::Arena* arena, const BlockGroupRequest& from);
  BlockGroupRequest(::google::protobuf::Arena* arena, BlockGroupRequest&& from) noexcept
      : BlockGroupRequest(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 {
    kFromTipFieldNumber = 1,
    kStartHeightFieldNumber = 2,
    kEndHeightFieldNumber = 3,
    kCalcTypeFieldNumber = 4,
  };
  // uint64 from_tip = 1;
  void clear_from_tip() ;
  ::uint64_t from_tip() const;
  void set_from_tip(::uint64_t value);

  private:
  ::uint64_t _internal_from_tip() const;
  void _internal_set_from_tip(::uint64_t value);

  public:
  // uint64 start_height = 2;
  void clear_start_height() ;
  ::uint64_t start_height() const;
  void set_start_height(::uint64_t value);

  private:
  ::uint64_t _internal_start_height() const;
  void _internal_set_start_height(::uint64_t value);

  public:
  // uint64 end_height = 3;
  void clear_end_height() ;
  ::uint64_t end_height() const;
  void set_end_height(::uint64_t value);

  private:
  ::uint64_t _internal_end_height() const;
  void _internal_set_end_height(::uint64_t value);

  public:
  // .tari.rpc.CalcType calc_type = 4;
  void clear_calc_type() ;
  ::tari::rpc::CalcType calc_type() const;
  void set_calc_type(::tari::rpc::CalcType value);

  private:
  ::tari::rpc::CalcType _internal_calc_type() const;
  void _internal_set_calc_type(::tari::rpc::CalcType value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockGroupRequest)
 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 from_tip_;
    ::uint64_t start_height_;
    ::uint64_t end_height_;
    int calc_type_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockBlobRequest(const BlockBlobRequest& from) : BlockBlobRequest(nullptr, from) {}
  inline BlockBlobRequest(BlockBlobRequest&& from) noexcept
      : BlockBlobRequest(nullptr, std::move(from)) {}
  inline BlockBlobRequest& operator=(const BlockBlobRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockBlobRequest& operator=(BlockBlobRequest&& 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 BlockBlobRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockBlobRequest* internal_default_instance() {
    return reinterpret_cast<const BlockBlobRequest*>(
        &_BlockBlobRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(BlockBlobRequest& a, BlockBlobRequest& b) { a.Swap(&b); }
  inline void Swap(BlockBlobRequest* 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(BlockBlobRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockBlobRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockBlobRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockBlobRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockBlobRequest& from) { BlockBlobRequest::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(BlockBlobRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockBlobRequest"; }

 protected:
  explicit BlockBlobRequest(::google::protobuf::Arena* arena);
  BlockBlobRequest(::google::protobuf::Arena* arena, const BlockBlobRequest& from);
  BlockBlobRequest(::google::protobuf::Arena* arena, BlockBlobRequest&& from) noexcept
      : BlockBlobRequest(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 {
    kHeaderBlobFieldNumber = 1,
    kBodyBlobFieldNumber = 2,
  };
  // bytes header_blob = 1;
  void clear_header_blob() ;
  const std::string& header_blob() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_header_blob(Arg_&& arg, Args_... args);
  std::string* mutable_header_blob();
  PROTOBUF_NODISCARD std::string* release_header_blob();
  void set_allocated_header_blob(std::string* value);

  private:
  const std::string& _internal_header_blob() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_header_blob(
      const std::string& value);
  std::string* _internal_mutable_header_blob();

  public:
  // bytes body_blob = 2;
  void clear_body_blob() ;
  const std::string& body_blob() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_body_blob(Arg_&& arg, Args_... args);
  std::string* mutable_body_blob();
  PROTOBUF_NODISCARD std::string* release_body_blob();
  void set_allocated_body_blob(std::string* value);

  private:
  const std::string& _internal_body_blob() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_body_blob(
      const std::string& value);
  std::string* _internal_mutable_body_blob();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockBlobRequest)
 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 header_blob_;
    ::google::protobuf::internal::ArenaStringPtr body_blob_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline TransactionStateRequest(const TransactionStateRequest& from) : TransactionStateRequest(nullptr, from) {}
  inline TransactionStateRequest(TransactionStateRequest&& from) noexcept
      : TransactionStateRequest(nullptr, std::move(from)) {}
  inline TransactionStateRequest& operator=(const TransactionStateRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline TransactionStateRequest& operator=(TransactionStateRequest&& 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 TransactionStateRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const TransactionStateRequest* internal_default_instance() {
    return reinterpret_cast<const TransactionStateRequest*>(
        &_TransactionStateRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 43;
  friend void swap(TransactionStateRequest& a, TransactionStateRequest& b) { a.Swap(&b); }
  inline void Swap(TransactionStateRequest* 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(TransactionStateRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  TransactionStateRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<TransactionStateRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TransactionStateRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TransactionStateRequest& from) { TransactionStateRequest::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(TransactionStateRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.TransactionStateRequest"; }

 protected:
  explicit TransactionStateRequest(::google::protobuf::Arena* arena);
  TransactionStateRequest(::google::protobuf::Arena* arena, const TransactionStateRequest& from);
  TransactionStateRequest(::google::protobuf::Arena* arena, TransactionStateRequest&& from) noexcept
      : TransactionStateRequest(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 {
    kExcessSigFieldNumber = 1,
  };
  // .tari.rpc.Signature excess_sig = 1;
  bool has_excess_sig() const;
  void clear_excess_sig() ;
  const ::tari::rpc::Signature& excess_sig() const;
  PROTOBUF_NODISCARD ::tari::rpc::Signature* release_excess_sig();
  ::tari::rpc::Signature* mutable_excess_sig();
  void set_allocated_excess_sig(::tari::rpc::Signature* value);
  void unsafe_arena_set_allocated_excess_sig(::tari::rpc::Signature* value);
  ::tari::rpc::Signature* unsafe_arena_release_excess_sig();

  private:
  const ::tari::rpc::Signature& _internal_excess_sig() const;
  ::tari::rpc::Signature* _internal_mutable_excess_sig();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TransactionStateRequest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::Signature* excess_sig_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline TipInfoResponse(const TipInfoResponse& from) : TipInfoResponse(nullptr, from) {}
  inline TipInfoResponse(TipInfoResponse&& from) noexcept
      : TipInfoResponse(nullptr, std::move(from)) {}
  inline TipInfoResponse& operator=(const TipInfoResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline TipInfoResponse& operator=(TipInfoResponse&& 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 TipInfoResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const TipInfoResponse* internal_default_instance() {
    return reinterpret_cast<const TipInfoResponse*>(
        &_TipInfoResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(TipInfoResponse& a, TipInfoResponse& b) { a.Swap(&b); }
  inline void Swap(TipInfoResponse* 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(TipInfoResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  TipInfoResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<TipInfoResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TipInfoResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TipInfoResponse& from) { TipInfoResponse::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(TipInfoResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.TipInfoResponse"; }

 protected:
  explicit TipInfoResponse(::google::protobuf::Arena* arena);
  TipInfoResponse(::google::protobuf::Arena* arena, const TipInfoResponse& from);
  TipInfoResponse(::google::protobuf::Arena* arena, TipInfoResponse&& from) noexcept
      : TipInfoResponse(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 {
    kMetadataFieldNumber = 1,
    kInitialSyncAchievedFieldNumber = 2,
    kBaseNodeStateFieldNumber = 3,
  };
  // .tari.rpc.MetaData metadata = 1;
  bool has_metadata() const;
  void clear_metadata() ;
  const ::tari::rpc::MetaData& metadata() const;
  PROTOBUF_NODISCARD ::tari::rpc::MetaData* release_metadata();
  ::tari::rpc::MetaData* mutable_metadata();
  void set_allocated_metadata(::tari::rpc::MetaData* value);
  void unsafe_arena_set_allocated_metadata(::tari::rpc::MetaData* value);
  ::tari::rpc::MetaData* unsafe_arena_release_metadata();

  private:
  const ::tari::rpc::MetaData& _internal_metadata() const;
  ::tari::rpc::MetaData* _internal_mutable_metadata();

  public:
  // bool initial_sync_achieved = 2;
  void clear_initial_sync_achieved() ;
  bool initial_sync_achieved() const;
  void set_initial_sync_achieved(bool value);

  private:
  bool _internal_initial_sync_achieved() const;
  void _internal_set_initial_sync_achieved(bool value);

  public:
  // .tari.rpc.BaseNodeState base_node_state = 3;
  void clear_base_node_state() ;
  ::tari::rpc::BaseNodeState base_node_state() const;
  void set_base_node_state(::tari::rpc::BaseNodeState value);

  private:
  ::tari::rpc::BaseNodeState _internal_base_node_state() const;
  void _internal_set_base_node_state(::tari::rpc::BaseNodeState value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TipInfoResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 1,
      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::MetaData* metadata_;
    bool initial_sync_achieved_;
    int base_node_state_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SearchKernelsRequest(const SearchKernelsRequest& from) : SearchKernelsRequest(nullptr, from) {}
  inline SearchKernelsRequest(SearchKernelsRequest&& from) noexcept
      : SearchKernelsRequest(nullptr, std::move(from)) {}
  inline SearchKernelsRequest& operator=(const SearchKernelsRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SearchKernelsRequest& operator=(SearchKernelsRequest&& 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 SearchKernelsRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const SearchKernelsRequest* internal_default_instance() {
    return reinterpret_cast<const SearchKernelsRequest*>(
        &_SearchKernelsRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 33;
  friend void swap(SearchKernelsRequest& a, SearchKernelsRequest& b) { a.Swap(&b); }
  inline void Swap(SearchKernelsRequest* 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(SearchKernelsRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SearchKernelsRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SearchKernelsRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SearchKernelsRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SearchKernelsRequest& from) { SearchKernelsRequest::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(SearchKernelsRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SearchKernelsRequest"; }

 protected:
  explicit SearchKernelsRequest(::google::protobuf::Arena* arena);
  SearchKernelsRequest(::google::protobuf::Arena* arena, const SearchKernelsRequest& from);
  SearchKernelsRequest(::google::protobuf::Arena* arena, SearchKernelsRequest&& from) noexcept
      : SearchKernelsRequest(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 {
    kSignaturesFieldNumber = 1,
  };
  // repeated .tari.rpc.Signature signatures = 1;
  int signatures_size() const;
  private:
  int _internal_signatures_size() const;

  public:
  void clear_signatures() ;
  ::tari::rpc::Signature* mutable_signatures(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>* mutable_signatures();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>& _internal_signatures() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>* _internal_mutable_signatures();
  public:
  const ::tari::rpc::Signature& signatures(int index) const;
  ::tari::rpc::Signature* add_signatures();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>& signatures() const;
  // @@protoc_insertion_point(class_scope:tari.rpc.SearchKernelsRequest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::RepeatedPtrField< ::tari::rpc::Signature > signatures_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline NewBlockTemplateRequest(const NewBlockTemplateRequest& from) : NewBlockTemplateRequest(nullptr, from) {}
  inline NewBlockTemplateRequest(NewBlockTemplateRequest&& from) noexcept
      : NewBlockTemplateRequest(nullptr, std::move(from)) {}
  inline NewBlockTemplateRequest& operator=(const NewBlockTemplateRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline NewBlockTemplateRequest& operator=(NewBlockTemplateRequest&& 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 NewBlockTemplateRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const NewBlockTemplateRequest* internal_default_instance() {
    return reinterpret_cast<const NewBlockTemplateRequest*>(
        &_NewBlockTemplateRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(NewBlockTemplateRequest& a, NewBlockTemplateRequest& b) { a.Swap(&b); }
  inline void Swap(NewBlockTemplateRequest* 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(NewBlockTemplateRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  NewBlockTemplateRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<NewBlockTemplateRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NewBlockTemplateRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NewBlockTemplateRequest& from) { NewBlockTemplateRequest::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(NewBlockTemplateRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.NewBlockTemplateRequest"; }

 protected:
  explicit NewBlockTemplateRequest(::google::protobuf::Arena* arena);
  NewBlockTemplateRequest(::google::protobuf::Arena* arena, const NewBlockTemplateRequest& from);
  NewBlockTemplateRequest(::google::protobuf::Arena* arena, NewBlockTemplateRequest&& from) noexcept
      : NewBlockTemplateRequest(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 {
    kAlgoFieldNumber = 1,
    kMaxWeightFieldNumber = 2,
  };
  // .tari.rpc.PowAlgo algo = 1;
  bool has_algo() const;
  void clear_algo() ;
  const ::tari::rpc::PowAlgo& algo() const;
  PROTOBUF_NODISCARD ::tari::rpc::PowAlgo* release_algo();
  ::tari::rpc::PowAlgo* mutable_algo();
  void set_allocated_algo(::tari::rpc::PowAlgo* value);
  void unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value);
  ::tari::rpc::PowAlgo* unsafe_arena_release_algo();

  private:
  const ::tari::rpc::PowAlgo& _internal_algo() const;
  ::tari::rpc::PowAlgo* _internal_mutable_algo();

  public:
  // uint64 max_weight = 2;
  void clear_max_weight() ;
  ::uint64_t max_weight() const;
  void set_max_weight(::uint64_t value);

  private:
  ::uint64_t _internal_max_weight() const;
  void _internal_set_max_weight(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NewBlockTemplateRequest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      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::PowAlgo* algo_;
    ::uint64_t max_weight_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline MinerData(const MinerData& from) : MinerData(nullptr, from) {}
  inline MinerData(MinerData&& from) noexcept
      : MinerData(nullptr, std::move(from)) {}
  inline MinerData& operator=(const MinerData& from) {
    CopyFrom(from);
    return *this;
  }
  inline MinerData& operator=(MinerData&& 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 MinerData& default_instance() {
    return *internal_default_instance();
  }
  static inline const MinerData* internal_default_instance() {
    return reinterpret_cast<const MinerData*>(
        &_MinerData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 32;
  friend void swap(MinerData& a, MinerData& b) { a.Swap(&b); }
  inline void Swap(MinerData* 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(MinerData* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  MinerData* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<MinerData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MinerData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MinerData& from) { MinerData::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(MinerData* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.MinerData"; }

 protected:
  explicit MinerData(::google::protobuf::Arena* arena);
  MinerData(::google::protobuf::Arena* arena, const MinerData& from);
  MinerData(::google::protobuf::Arena* arena, MinerData&& from) noexcept
      : MinerData(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 {
    kAlgoFieldNumber = 1,
    kTargetDifficultyFieldNumber = 2,
    kRewardFieldNumber = 3,
    kTotalFeesFieldNumber = 5,
  };
  // .tari.rpc.PowAlgo algo = 1;
  bool has_algo() const;
  void clear_algo() ;
  const ::tari::rpc::PowAlgo& algo() const;
  PROTOBUF_NODISCARD ::tari::rpc::PowAlgo* release_algo();
  ::tari::rpc::PowAlgo* mutable_algo();
  void set_allocated_algo(::tari::rpc::PowAlgo* value);
  void unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value);
  ::tari::rpc::PowAlgo* unsafe_arena_release_algo();

  private:
  const ::tari::rpc::PowAlgo& _internal_algo() const;
  ::tari::rpc::PowAlgo* _internal_mutable_algo();

  public:
  // uint64 target_difficulty = 2;
  void clear_target_difficulty() ;
  ::uint64_t target_difficulty() const;
  void set_target_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_target_difficulty() const;
  void _internal_set_target_difficulty(::uint64_t value);

  public:
  // uint64 reward = 3;
  void clear_reward() ;
  ::uint64_t reward() const;
  void set_reward(::uint64_t value);

  private:
  ::uint64_t _internal_reward() const;
  void _internal_set_reward(::uint64_t value);

  public:
  // uint64 total_fees = 5;
  void clear_total_fees() ;
  ::uint64_t total_fees() const;
  void set_total_fees(::uint64_t value);

  private:
  ::uint64_t _internal_total_fees() const;
  void _internal_set_total_fees(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.MinerData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 4, 1,
      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::PowAlgo* algo_;
    ::uint64_t target_difficulty_;
    ::uint64_t reward_;
    ::uint64_t total_fees_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetNewBlockTemplateWithCoinbasesRequest(const GetNewBlockTemplateWithCoinbasesRequest& from) : GetNewBlockTemplateWithCoinbasesRequest(nullptr, from) {}
  inline GetNewBlockTemplateWithCoinbasesRequest(GetNewBlockTemplateWithCoinbasesRequest&& from) noexcept
      : GetNewBlockTemplateWithCoinbasesRequest(nullptr, std::move(from)) {}
  inline GetNewBlockTemplateWithCoinbasesRequest& operator=(const GetNewBlockTemplateWithCoinbasesRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetNewBlockTemplateWithCoinbasesRequest& operator=(GetNewBlockTemplateWithCoinbasesRequest&& 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 GetNewBlockTemplateWithCoinbasesRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetNewBlockTemplateWithCoinbasesRequest* internal_default_instance() {
    return reinterpret_cast<const GetNewBlockTemplateWithCoinbasesRequest*>(
        &_GetNewBlockTemplateWithCoinbasesRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(GetNewBlockTemplateWithCoinbasesRequest& a, GetNewBlockTemplateWithCoinbasesRequest& b) { a.Swap(&b); }
  inline void Swap(GetNewBlockTemplateWithCoinbasesRequest* 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(GetNewBlockTemplateWithCoinbasesRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetNewBlockTemplateWithCoinbasesRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetNewBlockTemplateWithCoinbasesRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetNewBlockTemplateWithCoinbasesRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetNewBlockTemplateWithCoinbasesRequest& from) { GetNewBlockTemplateWithCoinbasesRequest::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(GetNewBlockTemplateWithCoinbasesRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetNewBlockTemplateWithCoinbasesRequest"; }

 protected:
  explicit GetNewBlockTemplateWithCoinbasesRequest(::google::protobuf::Arena* arena);
  GetNewBlockTemplateWithCoinbasesRequest(::google::protobuf::Arena* arena, const GetNewBlockTemplateWithCoinbasesRequest& from);
  GetNewBlockTemplateWithCoinbasesRequest(::google::protobuf::Arena* arena, GetNewBlockTemplateWithCoinbasesRequest&& from) noexcept
      : GetNewBlockTemplateWithCoinbasesRequest(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 {
    kCoinbasesFieldNumber = 3,
    kAlgoFieldNumber = 1,
    kMaxWeightFieldNumber = 2,
  };
  // repeated .tari.rpc.NewBlockCoinbase coinbases = 3;
  int coinbases_size() const;
  private:
  int _internal_coinbases_size() const;

  public:
  void clear_coinbases() ;
  ::tari::rpc::NewBlockCoinbase* mutable_coinbases(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* mutable_coinbases();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& _internal_coinbases() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* _internal_mutable_coinbases();
  public:
  const ::tari::rpc::NewBlockCoinbase& coinbases(int index) const;
  ::tari::rpc::NewBlockCoinbase* add_coinbases();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& coinbases() const;
  // .tari.rpc.PowAlgo algo = 1;
  bool has_algo() const;
  void clear_algo() ;
  const ::tari::rpc::PowAlgo& algo() const;
  PROTOBUF_NODISCARD ::tari::rpc::PowAlgo* release_algo();
  ::tari::rpc::PowAlgo* mutable_algo();
  void set_allocated_algo(::tari::rpc::PowAlgo* value);
  void unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value);
  ::tari::rpc::PowAlgo* unsafe_arena_release_algo();

  private:
  const ::tari::rpc::PowAlgo& _internal_algo() const;
  ::tari::rpc::PowAlgo* _internal_mutable_algo();

  public:
  // uint64 max_weight = 2;
  void clear_max_weight() ;
  ::uint64_t max_weight() const;
  void set_max_weight(::uint64_t value);

  private:
  ::uint64_t _internal_max_weight() const;
  void _internal_set_max_weight(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 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_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::NewBlockCoinbase > coinbases_;
    ::tari::rpc::PowAlgo* algo_;
    ::uint64_t max_weight_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline BlockHeaderResponse(const BlockHeaderResponse& from) : BlockHeaderResponse(nullptr, from) {}
  inline BlockHeaderResponse(BlockHeaderResponse&& from) noexcept
      : BlockHeaderResponse(nullptr, std::move(from)) {}
  inline BlockHeaderResponse& operator=(const BlockHeaderResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline BlockHeaderResponse& operator=(BlockHeaderResponse&& 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 BlockHeaderResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const BlockHeaderResponse* internal_default_instance() {
    return reinterpret_cast<const BlockHeaderResponse*>(
        &_BlockHeaderResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(BlockHeaderResponse& a, BlockHeaderResponse& b) { a.Swap(&b); }
  inline void Swap(BlockHeaderResponse* 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(BlockHeaderResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  BlockHeaderResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<BlockHeaderResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const BlockHeaderResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const BlockHeaderResponse& from) { BlockHeaderResponse::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(BlockHeaderResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.BlockHeaderResponse"; }

 protected:
  explicit BlockHeaderResponse(::google::protobuf::Arena* arena);
  BlockHeaderResponse(::google::protobuf::Arena* arena, const BlockHeaderResponse& from);
  BlockHeaderResponse(::google::protobuf::Arena* arena, BlockHeaderResponse&& from) noexcept
      : BlockHeaderResponse(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 {
    kHeaderFieldNumber = 1,
    kConfirmationsFieldNumber = 2,
    kRewardFieldNumber = 3,
    kDifficultyFieldNumber = 4,
    kNumTransactionsFieldNumber = 5,
  };
  // .tari.rpc.BlockHeader header = 1;
  bool has_header() const;
  void clear_header() ;
  const ::tari::rpc::BlockHeader& header() const;
  PROTOBUF_NODISCARD ::tari::rpc::BlockHeader* release_header();
  ::tari::rpc::BlockHeader* mutable_header();
  void set_allocated_header(::tari::rpc::BlockHeader* value);
  void unsafe_arena_set_allocated_header(::tari::rpc::BlockHeader* value);
  ::tari::rpc::BlockHeader* unsafe_arena_release_header();

  private:
  const ::tari::rpc::BlockHeader& _internal_header() const;
  ::tari::rpc::BlockHeader* _internal_mutable_header();

  public:
  // uint64 confirmations = 2;
  void clear_confirmations() ;
  ::uint64_t confirmations() const;
  void set_confirmations(::uint64_t value);

  private:
  ::uint64_t _internal_confirmations() const;
  void _internal_set_confirmations(::uint64_t value);

  public:
  // uint64 reward = 3;
  void clear_reward() ;
  ::uint64_t reward() const;
  void set_reward(::uint64_t value);

  private:
  ::uint64_t _internal_reward() const;
  void _internal_set_reward(::uint64_t value);

  public:
  // uint64 difficulty = 4;
  void clear_difficulty() ;
  ::uint64_t difficulty() const;
  void set_difficulty(::uint64_t value);

  private:
  ::uint64_t _internal_difficulty() const;
  void _internal_set_difficulty(::uint64_t value);

  public:
  // uint32 num_transactions = 5;
  void clear_num_transactions() ;
  ::uint32_t num_transactions() const;
  void set_num_transactions(::uint32_t value);

  private:
  ::uint32_t _internal_num_transactions() const;
  void _internal_set_num_transactions(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.BlockHeaderResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 1,
      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::BlockHeader* header_;
    ::uint64_t confirmations_;
    ::uint64_t reward_;
    ::uint64_t difficulty_;
    ::uint32_t num_transactions_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetTemplateRegistrationResponse(const GetTemplateRegistrationResponse& from) : GetTemplateRegistrationResponse(nullptr, from) {}
  inline GetTemplateRegistrationResponse(GetTemplateRegistrationResponse&& from) noexcept
      : GetTemplateRegistrationResponse(nullptr, std::move(from)) {}
  inline GetTemplateRegistrationResponse& operator=(const GetTemplateRegistrationResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetTemplateRegistrationResponse& operator=(GetTemplateRegistrationResponse&& 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 GetTemplateRegistrationResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetTemplateRegistrationResponse* internal_default_instance() {
    return reinterpret_cast<const GetTemplateRegistrationResponse*>(
        &_GetTemplateRegistrationResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 51;
  friend void swap(GetTemplateRegistrationResponse& a, GetTemplateRegistrationResponse& b) { a.Swap(&b); }
  inline void Swap(GetTemplateRegistrationResponse* 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(GetTemplateRegistrationResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetTemplateRegistrationResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetTemplateRegistrationResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetTemplateRegistrationResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetTemplateRegistrationResponse& from) { GetTemplateRegistrationResponse::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(GetTemplateRegistrationResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetTemplateRegistrationResponse"; }

 protected:
  explicit GetTemplateRegistrationResponse(::google::protobuf::Arena* arena);
  GetTemplateRegistrationResponse(::google::protobuf::Arena* arena, const GetTemplateRegistrationResponse& from);
  GetTemplateRegistrationResponse(::google::protobuf::Arena* arena, GetTemplateRegistrationResponse&& from) noexcept
      : GetTemplateRegistrationResponse(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 {
    kUtxoHashFieldNumber = 1,
    kRegistrationFieldNumber = 2,
  };
  // bytes utxo_hash = 1;
  void clear_utxo_hash() ;
  const std::string& utxo_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_utxo_hash(Arg_&& arg, Args_... args);
  std::string* mutable_utxo_hash();
  PROTOBUF_NODISCARD std::string* release_utxo_hash();
  void set_allocated_utxo_hash(std::string* value);

  private:
  const std::string& _internal_utxo_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_utxo_hash(
      const std::string& value);
  std::string* _internal_mutable_utxo_hash();

  public:
  // .tari.rpc.TemplateRegistration registration = 2;
  bool has_registration() const;
  void clear_registration() ;
  const ::tari::rpc::TemplateRegistration& registration() const;
  PROTOBUF_NODISCARD ::tari::rpc::TemplateRegistration* release_registration();
  ::tari::rpc::TemplateRegistration* mutable_registration();
  void set_allocated_registration(::tari::rpc::TemplateRegistration* value);
  void unsafe_arena_set_allocated_registration(::tari::rpc::TemplateRegistration* value);
  ::tari::rpc::TemplateRegistration* unsafe_arena_release_registration();

  private:
  const ::tari::rpc::TemplateRegistration& _internal_registration() const;
  ::tari::rpc::TemplateRegistration* _internal_mutable_registration();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetTemplateRegistrationResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 1,
      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_;
    ::google::protobuf::internal::ArenaStringPtr utxo_hash_;
    ::tari::rpc::TemplateRegistration* registration_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetPeersResponse(const GetPeersResponse& from) : GetPeersResponse(nullptr, from) {}
  inline GetPeersResponse(GetPeersResponse&& from) noexcept
      : GetPeersResponse(nullptr, std::move(from)) {}
  inline GetPeersResponse& operator=(const GetPeersResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetPeersResponse& operator=(GetPeersResponse&& 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 GetPeersResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetPeersResponse* internal_default_instance() {
    return reinterpret_cast<const GetPeersResponse*>(
        &_GetPeersResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 37;
  friend void swap(GetPeersResponse& a, GetPeersResponse& b) { a.Swap(&b); }
  inline void Swap(GetPeersResponse* 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(GetPeersResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetPeersResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetPeersResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetPeersResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetPeersResponse& from) { GetPeersResponse::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(GetPeersResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetPeersResponse"; }

 protected:
  explicit GetPeersResponse(::google::protobuf::Arena* arena);
  GetPeersResponse(::google::protobuf::Arena* arena, const GetPeersResponse& from);
  GetPeersResponse(::google::protobuf::Arena* arena, GetPeersResponse&& from) noexcept
      : GetPeersResponse(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 {
    kPeerFieldNumber = 1,
  };
  // .tari.rpc.Peer peer = 1;
  bool has_peer() const;
  void clear_peer() ;
  const ::tari::rpc::Peer& peer() const;
  PROTOBUF_NODISCARD ::tari::rpc::Peer* release_peer();
  ::tari::rpc::Peer* mutable_peer();
  void set_allocated_peer(::tari::rpc::Peer* value);
  void unsafe_arena_set_allocated_peer(::tari::rpc::Peer* value);
  ::tari::rpc::Peer* unsafe_arena_release_peer();

  private:
  const ::tari::rpc::Peer& _internal_peer() const;
  ::tari::rpc::Peer* _internal_mutable_peer();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetPeersResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::Peer* peer_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline ListAssetRegistrationsResponse(const ListAssetRegistrationsResponse& from) : ListAssetRegistrationsResponse(nullptr, from) {}
  inline ListAssetRegistrationsResponse(ListAssetRegistrationsResponse&& from) noexcept
      : ListAssetRegistrationsResponse(nullptr, std::move(from)) {}
  inline ListAssetRegistrationsResponse& operator=(const ListAssetRegistrationsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline ListAssetRegistrationsResponse& operator=(ListAssetRegistrationsResponse&& 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 ListAssetRegistrationsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const ListAssetRegistrationsResponse* internal_default_instance() {
    return reinterpret_cast<const ListAssetRegistrationsResponse*>(
        &_ListAssetRegistrationsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ListAssetRegistrationsResponse& a, ListAssetRegistrationsResponse& b) { a.Swap(&b); }
  inline void Swap(ListAssetRegistrationsResponse* 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(ListAssetRegistrationsResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ListAssetRegistrationsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<ListAssetRegistrationsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ListAssetRegistrationsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ListAssetRegistrationsResponse& from) { ListAssetRegistrationsResponse::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(ListAssetRegistrationsResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.ListAssetRegistrationsResponse"; }

 protected:
  explicit ListAssetRegistrationsResponse(::google::protobuf::Arena* arena);
  ListAssetRegistrationsResponse(::google::protobuf::Arena* arena, const ListAssetRegistrationsResponse& from);
  ListAssetRegistrationsResponse(::google::protobuf::Arena* arena, ListAssetRegistrationsResponse&& from) noexcept
      : ListAssetRegistrationsResponse(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 {
    kAssetPublicKeyFieldNumber = 1,
    kUniqueIdFieldNumber = 2,
    kOwnerCommitmentFieldNumber = 3,
    kMinedInBlockFieldNumber = 5,
    kScriptFieldNumber = 7,
    kFeaturesFieldNumber = 6,
    kMinedHeightFieldNumber = 4,
  };
  // bytes asset_public_key = 1;
  void clear_asset_public_key() ;
  const std::string& asset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_asset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_asset_public_key();
  PROTOBUF_NODISCARD std::string* release_asset_public_key();
  void set_allocated_asset_public_key(std::string* value);

  private:
  const std::string& _internal_asset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_asset_public_key(
      const std::string& value);
  std::string* _internal_mutable_asset_public_key();

  public:
  // bytes unique_id = 2;
  void clear_unique_id() ;
  const std::string& unique_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_unique_id(Arg_&& arg, Args_... args);
  std::string* mutable_unique_id();
  PROTOBUF_NODISCARD std::string* release_unique_id();
  void set_allocated_unique_id(std::string* value);

  private:
  const std::string& _internal_unique_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_unique_id(
      const std::string& value);
  std::string* _internal_mutable_unique_id();

  public:
  // bytes owner_commitment = 3;
  void clear_owner_commitment() ;
  const std::string& owner_commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_owner_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_owner_commitment();
  PROTOBUF_NODISCARD std::string* release_owner_commitment();
  void set_allocated_owner_commitment(std::string* value);

  private:
  const std::string& _internal_owner_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_owner_commitment(
      const std::string& value);
  std::string* _internal_mutable_owner_commitment();

  public:
  // bytes mined_in_block = 5;
  void clear_mined_in_block() ;
  const std::string& mined_in_block() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_mined_in_block(Arg_&& arg, Args_... args);
  std::string* mutable_mined_in_block();
  PROTOBUF_NODISCARD std::string* release_mined_in_block();
  void set_allocated_mined_in_block(std::string* value);

  private:
  const std::string& _internal_mined_in_block() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_mined_in_block(
      const std::string& value);
  std::string* _internal_mutable_mined_in_block();

  public:
  // bytes script = 7;
  void clear_script() ;
  const std::string& script() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_script(Arg_&& arg, Args_... args);
  std::string* mutable_script();
  PROTOBUF_NODISCARD std::string* release_script();
  void set_allocated_script(std::string* value);

  private:
  const std::string& _internal_script() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_script(
      const std::string& value);
  std::string* _internal_mutable_script();

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

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

  public:
  // uint64 mined_height = 4;
  void clear_mined_height() ;
  ::uint64_t mined_height() const;
  void set_mined_height(::uint64_t value);

  private:
  ::uint64_t _internal_mined_height() const;
  void _internal_set_mined_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.ListAssetRegistrationsResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 1,
      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_;
    ::google::protobuf::internal::ArenaStringPtr asset_public_key_;
    ::google::protobuf::internal::ArenaStringPtr unique_id_;
    ::google::protobuf::internal::ArenaStringPtr owner_commitment_;
    ::google::protobuf::internal::ArenaStringPtr mined_in_block_;
    ::google::protobuf::internal::ArenaStringPtr script_;
    ::tari::rpc::OutputFeatures* features_;
    ::uint64_t mined_height_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetTokensResponse(const GetTokensResponse& from) : GetTokensResponse(nullptr, from) {}
  inline GetTokensResponse(GetTokensResponse&& from) noexcept
      : GetTokensResponse(nullptr, std::move(from)) {}
  inline GetTokensResponse& operator=(const GetTokensResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetTokensResponse& operator=(GetTokensResponse&& 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 GetTokensResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetTokensResponse* internal_default_instance() {
    return reinterpret_cast<const GetTokensResponse*>(
        &_GetTokensResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(GetTokensResponse& a, GetTokensResponse& b) { a.Swap(&b); }
  inline void Swap(GetTokensResponse* 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(GetTokensResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetTokensResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetTokensResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetTokensResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetTokensResponse& from) { GetTokensResponse::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(GetTokensResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetTokensResponse"; }

 protected:
  explicit GetTokensResponse(::google::protobuf::Arena* arena);
  GetTokensResponse(::google::protobuf::Arena* arena, const GetTokensResponse& from);
  GetTokensResponse(::google::protobuf::Arena* arena, GetTokensResponse&& from) noexcept
      : GetTokensResponse(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 {
    kUniqueIdFieldNumber = 1,
    kAssetPublicKeyFieldNumber = 2,
    kOwnerCommitmentFieldNumber = 3,
    kMinedInBlockFieldNumber = 4,
    kScriptFieldNumber = 7,
    kFeaturesFieldNumber = 6,
    kMinedHeightFieldNumber = 5,
  };
  // bytes unique_id = 1;
  void clear_unique_id() ;
  const std::string& unique_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_unique_id(Arg_&& arg, Args_... args);
  std::string* mutable_unique_id();
  PROTOBUF_NODISCARD std::string* release_unique_id();
  void set_allocated_unique_id(std::string* value);

  private:
  const std::string& _internal_unique_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_unique_id(
      const std::string& value);
  std::string* _internal_mutable_unique_id();

  public:
  // bytes asset_public_key = 2;
  void clear_asset_public_key() ;
  const std::string& asset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_asset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_asset_public_key();
  PROTOBUF_NODISCARD std::string* release_asset_public_key();
  void set_allocated_asset_public_key(std::string* value);

  private:
  const std::string& _internal_asset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_asset_public_key(
      const std::string& value);
  std::string* _internal_mutable_asset_public_key();

  public:
  // bytes owner_commitment = 3;
  void clear_owner_commitment() ;
  const std::string& owner_commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_owner_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_owner_commitment();
  PROTOBUF_NODISCARD std::string* release_owner_commitment();
  void set_allocated_owner_commitment(std::string* value);

  private:
  const std::string& _internal_owner_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_owner_commitment(
      const std::string& value);
  std::string* _internal_mutable_owner_commitment();

  public:
  // bytes mined_in_block = 4;
  void clear_mined_in_block() ;
  const std::string& mined_in_block() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_mined_in_block(Arg_&& arg, Args_... args);
  std::string* mutable_mined_in_block();
  PROTOBUF_NODISCARD std::string* release_mined_in_block();
  void set_allocated_mined_in_block(std::string* value);

  private:
  const std::string& _internal_mined_in_block() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_mined_in_block(
      const std::string& value);
  std::string* _internal_mutable_mined_in_block();

  public:
  // bytes script = 7;
  void clear_script() ;
  const std::string& script() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_script(Arg_&& arg, Args_... args);
  std::string* mutable_script();
  PROTOBUF_NODISCARD std::string* release_script();
  void set_allocated_script(std::string* value);

  private:
  const std::string& _internal_script() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_script(
      const std::string& value);
  std::string* _internal_mutable_script();

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

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

  public:
  // uint64 mined_height = 5;
  void clear_mined_height() ;
  ::uint64_t mined_height() const;
  void set_mined_height(::uint64_t value);

  private:
  ::uint64_t _internal_mined_height() const;
  void _internal_set_mined_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetTokensResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 1,
      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_;
    ::google::protobuf::internal::ArenaStringPtr unique_id_;
    ::google::protobuf::internal::ArenaStringPtr asset_public_key_;
    ::google::protobuf::internal::ArenaStringPtr owner_commitment_;
    ::google::protobuf::internal::ArenaStringPtr mined_in_block_;
    ::google::protobuf::internal::ArenaStringPtr script_;
    ::tari::rpc::OutputFeatures* features_;
    ::uint64_t mined_height_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetAssetMetadataResponse(const GetAssetMetadataResponse& from) : GetAssetMetadataResponse(nullptr, from) {}
  inline GetAssetMetadataResponse(GetAssetMetadataResponse&& from) noexcept
      : GetAssetMetadataResponse(nullptr, std::move(from)) {}
  inline GetAssetMetadataResponse& operator=(const GetAssetMetadataResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetAssetMetadataResponse& operator=(GetAssetMetadataResponse&& 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 GetAssetMetadataResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetAssetMetadataResponse* internal_default_instance() {
    return reinterpret_cast<const GetAssetMetadataResponse*>(
        &_GetAssetMetadataResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(GetAssetMetadataResponse& a, GetAssetMetadataResponse& b) { a.Swap(&b); }
  inline void Swap(GetAssetMetadataResponse* 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(GetAssetMetadataResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetAssetMetadataResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetAssetMetadataResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetAssetMetadataResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetAssetMetadataResponse& from) { GetAssetMetadataResponse::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(GetAssetMetadataResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetAssetMetadataResponse"; }

 protected:
  explicit GetAssetMetadataResponse(::google::protobuf::Arena* arena);
  GetAssetMetadataResponse(::google::protobuf::Arena* arena, const GetAssetMetadataResponse& from);
  GetAssetMetadataResponse(::google::protobuf::Arena* arena, GetAssetMetadataResponse&& from) noexcept
      : GetAssetMetadataResponse(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 {
    kNameFieldNumber = 2,
    kDescriptionFieldNumber = 3,
    kImageFieldNumber = 4,
    kOwnerCommitmentFieldNumber = 5,
    kMinedInBlockFieldNumber = 8,
    kFeaturesFieldNumber = 6,
    kMinedHeightFieldNumber = 7,
  };
  // string name = 2;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(
      const std::string& value);
  std::string* _internal_mutable_name();

  public:
  // string description = 3;
  void clear_description() ;
  const std::string& description() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_description(Arg_&& arg, Args_... args);
  std::string* mutable_description();
  PROTOBUF_NODISCARD std::string* release_description();
  void set_allocated_description(std::string* value);

  private:
  const std::string& _internal_description() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_description(
      const std::string& value);
  std::string* _internal_mutable_description();

  public:
  // string image = 4;
  void clear_image() ;
  const std::string& image() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_image(Arg_&& arg, Args_... args);
  std::string* mutable_image();
  PROTOBUF_NODISCARD std::string* release_image();
  void set_allocated_image(std::string* value);

  private:
  const std::string& _internal_image() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_image(
      const std::string& value);
  std::string* _internal_mutable_image();

  public:
  // bytes owner_commitment = 5;
  void clear_owner_commitment() ;
  const std::string& owner_commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_owner_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_owner_commitment();
  PROTOBUF_NODISCARD std::string* release_owner_commitment();
  void set_allocated_owner_commitment(std::string* value);

  private:
  const std::string& _internal_owner_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_owner_commitment(
      const std::string& value);
  std::string* _internal_mutable_owner_commitment();

  public:
  // bytes mined_in_block = 8;
  void clear_mined_in_block() ;
  const std::string& mined_in_block() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_mined_in_block(Arg_&& arg, Args_... args);
  std::string* mutable_mined_in_block();
  PROTOBUF_NODISCARD std::string* release_mined_in_block();
  void set_allocated_mined_in_block(std::string* value);

  private:
  const std::string& _internal_mined_in_block() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_mined_in_block(
      const std::string& value);
  std::string* _internal_mutable_mined_in_block();

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

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

  public:
  // uint64 mined_height = 7;
  void clear_mined_height() ;
  ::uint64_t mined_height() const;
  void set_mined_height(::uint64_t value);

  private:
  ::uint64_t _internal_mined_height() const;
  void _internal_set_mined_height(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetAssetMetadataResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 1,
      62, 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_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr description_;
    ::google::protobuf::internal::ArenaStringPtr image_;
    ::google::protobuf::internal::ArenaStringPtr owner_commitment_;
    ::google::protobuf::internal::ArenaStringPtr mined_in_block_;
    ::tari::rpc::OutputFeatures* features_;
    ::uint64_t mined_height_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetSideChainUtxosResponse(const GetSideChainUtxosResponse& from) : GetSideChainUtxosResponse(nullptr, from) {}
  inline GetSideChainUtxosResponse(GetSideChainUtxosResponse&& from) noexcept
      : GetSideChainUtxosResponse(nullptr, std::move(from)) {}
  inline GetSideChainUtxosResponse& operator=(const GetSideChainUtxosResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetSideChainUtxosResponse& operator=(GetSideChainUtxosResponse&& 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 GetSideChainUtxosResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetSideChainUtxosResponse* internal_default_instance() {
    return reinterpret_cast<const GetSideChainUtxosResponse*>(
        &_GetSideChainUtxosResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 54;
  friend void swap(GetSideChainUtxosResponse& a, GetSideChainUtxosResponse& b) { a.Swap(&b); }
  inline void Swap(GetSideChainUtxosResponse* 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(GetSideChainUtxosResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetSideChainUtxosResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetSideChainUtxosResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetSideChainUtxosResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetSideChainUtxosResponse& from) { GetSideChainUtxosResponse::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(GetSideChainUtxosResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetSideChainUtxosResponse"; }

 protected:
  explicit GetSideChainUtxosResponse(::google::protobuf::Arena* arena);
  GetSideChainUtxosResponse(::google::protobuf::Arena* arena, const GetSideChainUtxosResponse& from);
  GetSideChainUtxosResponse(::google::protobuf::Arena* arena, GetSideChainUtxosResponse&& from) noexcept
      : GetSideChainUtxosResponse(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 = 2,
    kBlockInfoFieldNumber = 1,
  };
  // repeated .tari.rpc.TransactionOutput outputs = 2;
  int outputs_size() const;
  private:
  int _internal_outputs_size() const;

  public:
  void clear_outputs() ;
  ::tari::rpc::TransactionOutput* mutable_outputs(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>* mutable_outputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& _internal_outputs() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>* _internal_mutable_outputs();
  public:
  const ::tari::rpc::TransactionOutput& outputs(int index) const;
  ::tari::rpc::TransactionOutput* add_outputs();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& outputs() const;
  // .tari.rpc.BlockInfo block_info = 1;
  bool has_block_info() const;
  void clear_block_info() ;
  const ::tari::rpc::BlockInfo& block_info() const;
  PROTOBUF_NODISCARD ::tari::rpc::BlockInfo* release_block_info();
  ::tari::rpc::BlockInfo* mutable_block_info();
  void set_allocated_block_info(::tari::rpc::BlockInfo* value);
  void unsafe_arena_set_allocated_block_info(::tari::rpc::BlockInfo* value);
  ::tari::rpc::BlockInfo* unsafe_arena_release_block_info();

  private:
  const ::tari::rpc::BlockInfo& _internal_block_info() const;
  ::tari::rpc::BlockInfo* _internal_mutable_block_info();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetSideChainUtxosResponse)
 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_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::TransactionOutput > outputs_;
    ::tari::rpc::BlockInfo* block_info_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline FetchMatchingUtxosResponse(const FetchMatchingUtxosResponse& from) : FetchMatchingUtxosResponse(nullptr, from) {}
  inline FetchMatchingUtxosResponse(FetchMatchingUtxosResponse&& from) noexcept
      : FetchMatchingUtxosResponse(nullptr, std::move(from)) {}
  inline FetchMatchingUtxosResponse& operator=(const FetchMatchingUtxosResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline FetchMatchingUtxosResponse& operator=(FetchMatchingUtxosResponse&& 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 FetchMatchingUtxosResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const FetchMatchingUtxosResponse* internal_default_instance() {
    return reinterpret_cast<const FetchMatchingUtxosResponse*>(
        &_FetchMatchingUtxosResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 36;
  friend void swap(FetchMatchingUtxosResponse& a, FetchMatchingUtxosResponse& b) { a.Swap(&b); }
  inline void Swap(FetchMatchingUtxosResponse* 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(FetchMatchingUtxosResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  FetchMatchingUtxosResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<FetchMatchingUtxosResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FetchMatchingUtxosResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FetchMatchingUtxosResponse& from) { FetchMatchingUtxosResponse::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(FetchMatchingUtxosResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.FetchMatchingUtxosResponse"; }

 protected:
  explicit FetchMatchingUtxosResponse(::google::protobuf::Arena* arena);
  FetchMatchingUtxosResponse(::google::protobuf::Arena* arena, const FetchMatchingUtxosResponse& from);
  FetchMatchingUtxosResponse(::google::protobuf::Arena* arena, FetchMatchingUtxosResponse&& from) noexcept
      : FetchMatchingUtxosResponse(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 {
    kOutputFieldNumber = 1,
  };
  // .tari.rpc.TransactionOutput output = 1;
  bool has_output() const;
  void clear_output() ;
  const ::tari::rpc::TransactionOutput& output() const;
  PROTOBUF_NODISCARD ::tari::rpc::TransactionOutput* release_output();
  ::tari::rpc::TransactionOutput* mutable_output();
  void set_allocated_output(::tari::rpc::TransactionOutput* value);
  void unsafe_arena_set_allocated_output(::tari::rpc::TransactionOutput* value);
  ::tari::rpc::TransactionOutput* unsafe_arena_release_output();

  private:
  const ::tari::rpc::TransactionOutput& _internal_output() const;
  ::tari::rpc::TransactionOutput* _internal_mutable_output();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.FetchMatchingUtxosResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::TransactionOutput* output_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline SubmitTransactionRequest(const SubmitTransactionRequest& from) : SubmitTransactionRequest(nullptr, from) {}
  inline SubmitTransactionRequest(SubmitTransactionRequest&& from) noexcept
      : SubmitTransactionRequest(nullptr, std::move(from)) {}
  inline SubmitTransactionRequest& operator=(const SubmitTransactionRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline SubmitTransactionRequest& operator=(SubmitTransactionRequest&& 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 SubmitTransactionRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const SubmitTransactionRequest* internal_default_instance() {
    return reinterpret_cast<const SubmitTransactionRequest*>(
        &_SubmitTransactionRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 39;
  friend void swap(SubmitTransactionRequest& a, SubmitTransactionRequest& b) { a.Swap(&b); }
  inline void Swap(SubmitTransactionRequest* 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(SubmitTransactionRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  SubmitTransactionRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<SubmitTransactionRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SubmitTransactionRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SubmitTransactionRequest& from) { SubmitTransactionRequest::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(SubmitTransactionRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.SubmitTransactionRequest"; }

 protected:
  explicit SubmitTransactionRequest(::google::protobuf::Arena* arena);
  SubmitTransactionRequest(::google::protobuf::Arena* arena, const SubmitTransactionRequest& from);
  SubmitTransactionRequest(::google::protobuf::Arena* arena, SubmitTransactionRequest&& from) noexcept
      : SubmitTransactionRequest(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 {
    kTransactionFieldNumber = 1,
  };
  // .tari.rpc.Transaction transaction = 1;
  bool has_transaction() const;
  void clear_transaction() ;
  const ::tari::rpc::Transaction& transaction() const;
  PROTOBUF_NODISCARD ::tari::rpc::Transaction* release_transaction();
  ::tari::rpc::Transaction* mutable_transaction();
  void set_allocated_transaction(::tari::rpc::Transaction* value);
  void unsafe_arena_set_allocated_transaction(::tari::rpc::Transaction* value);
  ::tari::rpc::Transaction* unsafe_arena_release_transaction();

  private:
  const ::tari::rpc::Transaction& _internal_transaction() const;
  ::tari::rpc::Transaction* _internal_mutable_transaction();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SubmitTransactionRequest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::Transaction* transaction_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline NewBlockTemplateResponse(const NewBlockTemplateResponse& from) : NewBlockTemplateResponse(nullptr, from) {}
  inline NewBlockTemplateResponse(NewBlockTemplateResponse&& from) noexcept
      : NewBlockTemplateResponse(nullptr, std::move(from)) {}
  inline NewBlockTemplateResponse& operator=(const NewBlockTemplateResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline NewBlockTemplateResponse& operator=(NewBlockTemplateResponse&& 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 NewBlockTemplateResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const NewBlockTemplateResponse* internal_default_instance() {
    return reinterpret_cast<const NewBlockTemplateResponse*>(
        &_NewBlockTemplateResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(NewBlockTemplateResponse& a, NewBlockTemplateResponse& b) { a.Swap(&b); }
  inline void Swap(NewBlockTemplateResponse* 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(NewBlockTemplateResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  NewBlockTemplateResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<NewBlockTemplateResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NewBlockTemplateResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NewBlockTemplateResponse& from) { NewBlockTemplateResponse::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(NewBlockTemplateResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.NewBlockTemplateResponse"; }

 protected:
  explicit NewBlockTemplateResponse(::google::protobuf::Arena* arena);
  NewBlockTemplateResponse(::google::protobuf::Arena* arena, const NewBlockTemplateResponse& from);
  NewBlockTemplateResponse(::google::protobuf::Arena* arena, NewBlockTemplateResponse&& from) noexcept
      : NewBlockTemplateResponse(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 {
    kNewBlockTemplateFieldNumber = 1,
    kMinerDataFieldNumber = 4,
    kInitialSyncAchievedFieldNumber = 3,
  };
  // .tari.rpc.NewBlockTemplate new_block_template = 1;
  bool has_new_block_template() const;
  void clear_new_block_template() ;
  const ::tari::rpc::NewBlockTemplate& new_block_template() const;
  PROTOBUF_NODISCARD ::tari::rpc::NewBlockTemplate* release_new_block_template();
  ::tari::rpc::NewBlockTemplate* mutable_new_block_template();
  void set_allocated_new_block_template(::tari::rpc::NewBlockTemplate* value);
  void unsafe_arena_set_allocated_new_block_template(::tari::rpc::NewBlockTemplate* value);
  ::tari::rpc::NewBlockTemplate* unsafe_arena_release_new_block_template();

  private:
  const ::tari::rpc::NewBlockTemplate& _internal_new_block_template() const;
  ::tari::rpc::NewBlockTemplate* _internal_mutable_new_block_template();

  public:
  // .tari.rpc.MinerData miner_data = 4;
  bool has_miner_data() const;
  void clear_miner_data() ;
  const ::tari::rpc::MinerData& miner_data() const;
  PROTOBUF_NODISCARD ::tari::rpc::MinerData* release_miner_data();
  ::tari::rpc::MinerData* mutable_miner_data();
  void set_allocated_miner_data(::tari::rpc::MinerData* value);
  void unsafe_arena_set_allocated_miner_data(::tari::rpc::MinerData* value);
  ::tari::rpc::MinerData* unsafe_arena_release_miner_data();

  private:
  const ::tari::rpc::MinerData& _internal_miner_data() const;
  ::tari::rpc::MinerData* _internal_mutable_miner_data();

  public:
  // bool initial_sync_achieved = 3;
  void clear_initial_sync_achieved() ;
  bool initial_sync_achieved() const;
  void set_initial_sync_achieved(bool value);

  private:
  bool _internal_initial_sync_achieved() const;
  void _internal_set_initial_sync_achieved(bool value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NewBlockTemplateResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 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::NewBlockTemplate* new_block_template_;
    ::tari::rpc::MinerData* miner_data_;
    bool initial_sync_achieved_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetNewBlockWithCoinbasesRequest(const GetNewBlockWithCoinbasesRequest& from) : GetNewBlockWithCoinbasesRequest(nullptr, from) {}
  inline GetNewBlockWithCoinbasesRequest(GetNewBlockWithCoinbasesRequest&& from) noexcept
      : GetNewBlockWithCoinbasesRequest(nullptr, std::move(from)) {}
  inline GetNewBlockWithCoinbasesRequest& operator=(const GetNewBlockWithCoinbasesRequest& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetNewBlockWithCoinbasesRequest& operator=(GetNewBlockWithCoinbasesRequest&& 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 GetNewBlockWithCoinbasesRequest& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetNewBlockWithCoinbasesRequest* internal_default_instance() {
    return reinterpret_cast<const GetNewBlockWithCoinbasesRequest*>(
        &_GetNewBlockWithCoinbasesRequest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(GetNewBlockWithCoinbasesRequest& a, GetNewBlockWithCoinbasesRequest& b) { a.Swap(&b); }
  inline void Swap(GetNewBlockWithCoinbasesRequest* 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(GetNewBlockWithCoinbasesRequest* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetNewBlockWithCoinbasesRequest* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetNewBlockWithCoinbasesRequest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetNewBlockWithCoinbasesRequest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetNewBlockWithCoinbasesRequest& from) { GetNewBlockWithCoinbasesRequest::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(GetNewBlockWithCoinbasesRequest* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetNewBlockWithCoinbasesRequest"; }

 protected:
  explicit GetNewBlockWithCoinbasesRequest(::google::protobuf::Arena* arena);
  GetNewBlockWithCoinbasesRequest(::google::protobuf::Arena* arena, const GetNewBlockWithCoinbasesRequest& from);
  GetNewBlockWithCoinbasesRequest(::google::protobuf::Arena* arena, GetNewBlockWithCoinbasesRequest&& from) noexcept
      : GetNewBlockWithCoinbasesRequest(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 {
    kCoinbasesFieldNumber = 2,
    kNewTemplateFieldNumber = 1,
  };
  // repeated .tari.rpc.NewBlockCoinbase coinbases = 2;
  int coinbases_size() const;
  private:
  int _internal_coinbases_size() const;

  public:
  void clear_coinbases() ;
  ::tari::rpc::NewBlockCoinbase* mutable_coinbases(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* mutable_coinbases();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& _internal_coinbases() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* _internal_mutable_coinbases();
  public:
  const ::tari::rpc::NewBlockCoinbase& coinbases(int index) const;
  ::tari::rpc::NewBlockCoinbase* add_coinbases();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& coinbases() const;
  // .tari.rpc.NewBlockTemplate new_template = 1;
  bool has_new_template() const;
  void clear_new_template() ;
  const ::tari::rpc::NewBlockTemplate& new_template() const;
  PROTOBUF_NODISCARD ::tari::rpc::NewBlockTemplate* release_new_template();
  ::tari::rpc::NewBlockTemplate* mutable_new_template();
  void set_allocated_new_template(::tari::rpc::NewBlockTemplate* value);
  void unsafe_arena_set_allocated_new_template(::tari::rpc::NewBlockTemplate* value);
  ::tari::rpc::NewBlockTemplate* unsafe_arena_release_new_template();

  private:
  const ::tari::rpc::NewBlockTemplate& _internal_new_template() const;
  ::tari::rpc::NewBlockTemplate* _internal_mutable_new_template();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetNewBlockWithCoinbasesRequest)
 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_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::NewBlockCoinbase > coinbases_;
    ::tari::rpc::NewBlockTemplate* new_template_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetNewBlockResult(const GetNewBlockResult& from) : GetNewBlockResult(nullptr, from) {}
  inline GetNewBlockResult(GetNewBlockResult&& from) noexcept
      : GetNewBlockResult(nullptr, std::move(from)) {}
  inline GetNewBlockResult& operator=(const GetNewBlockResult& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetNewBlockResult& operator=(GetNewBlockResult&& 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 GetNewBlockResult& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetNewBlockResult* internal_default_instance() {
    return reinterpret_cast<const GetNewBlockResult*>(
        &_GetNewBlockResult_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 30;
  friend void swap(GetNewBlockResult& a, GetNewBlockResult& b) { a.Swap(&b); }
  inline void Swap(GetNewBlockResult* 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(GetNewBlockResult* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetNewBlockResult* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetNewBlockResult>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetNewBlockResult& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetNewBlockResult& from) { GetNewBlockResult::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(GetNewBlockResult* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetNewBlockResult"; }

 protected:
  explicit GetNewBlockResult(::google::protobuf::Arena* arena);
  GetNewBlockResult(::google::protobuf::Arena* arena, const GetNewBlockResult& from);
  GetNewBlockResult(::google::protobuf::Arena* arena, GetNewBlockResult&& from) noexcept
      : GetNewBlockResult(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 {
    kBlockHashFieldNumber = 1,
    kMergeMiningHashFieldNumber = 3,
    kTariUniqueIdFieldNumber = 4,
    kBlockFieldNumber = 2,
    kMinerDataFieldNumber = 5,
  };
  // bytes block_hash = 1;
  void clear_block_hash() ;
  const std::string& block_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_block_hash(Arg_&& arg, Args_... args);
  std::string* mutable_block_hash();
  PROTOBUF_NODISCARD std::string* release_block_hash();
  void set_allocated_block_hash(std::string* value);

  private:
  const std::string& _internal_block_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_block_hash(
      const std::string& value);
  std::string* _internal_mutable_block_hash();

  public:
  // bytes merge_mining_hash = 3;
  void clear_merge_mining_hash() ;
  const std::string& merge_mining_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_merge_mining_hash(Arg_&& arg, Args_... args);
  std::string* mutable_merge_mining_hash();
  PROTOBUF_NODISCARD std::string* release_merge_mining_hash();
  void set_allocated_merge_mining_hash(std::string* value);

  private:
  const std::string& _internal_merge_mining_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_merge_mining_hash(
      const std::string& value);
  std::string* _internal_mutable_merge_mining_hash();

  public:
  // bytes tari_unique_id = 4;
  void clear_tari_unique_id() ;
  const std::string& tari_unique_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_tari_unique_id(Arg_&& arg, Args_... args);
  std::string* mutable_tari_unique_id();
  PROTOBUF_NODISCARD std::string* release_tari_unique_id();
  void set_allocated_tari_unique_id(std::string* value);

  private:
  const std::string& _internal_tari_unique_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tari_unique_id(
      const std::string& value);
  std::string* _internal_mutable_tari_unique_id();

  public:
  // .tari.rpc.Block block = 2;
  bool has_block() const;
  void clear_block() ;
  const ::tari::rpc::Block& block() const;
  PROTOBUF_NODISCARD ::tari::rpc::Block* release_block();
  ::tari::rpc::Block* mutable_block();
  void set_allocated_block(::tari::rpc::Block* value);
  void unsafe_arena_set_allocated_block(::tari::rpc::Block* value);
  ::tari::rpc::Block* unsafe_arena_release_block();

  private:
  const ::tari::rpc::Block& _internal_block() const;
  ::tari::rpc::Block* _internal_mutable_block();

  public:
  // .tari.rpc.MinerData miner_data = 5;
  bool has_miner_data() const;
  void clear_miner_data() ;
  const ::tari::rpc::MinerData& miner_data() const;
  PROTOBUF_NODISCARD ::tari::rpc::MinerData* release_miner_data();
  ::tari::rpc::MinerData* mutable_miner_data();
  void set_allocated_miner_data(::tari::rpc::MinerData* value);
  void unsafe_arena_set_allocated_miner_data(::tari::rpc::MinerData* value);
  ::tari::rpc::MinerData* unsafe_arena_release_miner_data();

  private:
  const ::tari::rpc::MinerData& _internal_miner_data() const;
  ::tari::rpc::MinerData* _internal_mutable_miner_data();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetNewBlockResult)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 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_;
    ::google::protobuf::internal::ArenaStringPtr block_hash_;
    ::google::protobuf::internal::ArenaStringPtr merge_mining_hash_;
    ::google::protobuf::internal::ArenaStringPtr tari_unique_id_;
    ::tari::rpc::Block* block_;
    ::tari::rpc::MinerData* miner_data_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetMempoolTransactionsResponse(const GetMempoolTransactionsResponse& from) : GetMempoolTransactionsResponse(nullptr, from) {}
  inline GetMempoolTransactionsResponse(GetMempoolTransactionsResponse&& from) noexcept
      : GetMempoolTransactionsResponse(nullptr, std::move(from)) {}
  inline GetMempoolTransactionsResponse& operator=(const GetMempoolTransactionsResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetMempoolTransactionsResponse& operator=(GetMempoolTransactionsResponse&& 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 GetMempoolTransactionsResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetMempoolTransactionsResponse* internal_default_instance() {
    return reinterpret_cast<const GetMempoolTransactionsResponse*>(
        &_GetMempoolTransactionsResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 42;
  friend void swap(GetMempoolTransactionsResponse& a, GetMempoolTransactionsResponse& b) { a.Swap(&b); }
  inline void Swap(GetMempoolTransactionsResponse* 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(GetMempoolTransactionsResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetMempoolTransactionsResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetMempoolTransactionsResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetMempoolTransactionsResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetMempoolTransactionsResponse& from) { GetMempoolTransactionsResponse::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(GetMempoolTransactionsResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetMempoolTransactionsResponse"; }

 protected:
  explicit GetMempoolTransactionsResponse(::google::protobuf::Arena* arena);
  GetMempoolTransactionsResponse(::google::protobuf::Arena* arena, const GetMempoolTransactionsResponse& from);
  GetMempoolTransactionsResponse(::google::protobuf::Arena* arena, GetMempoolTransactionsResponse&& from) noexcept
      : GetMempoolTransactionsResponse(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 {
    kTransactionFieldNumber = 1,
  };
  // .tari.rpc.Transaction transaction = 1;
  bool has_transaction() const;
  void clear_transaction() ;
  const ::tari::rpc::Transaction& transaction() const;
  PROTOBUF_NODISCARD ::tari::rpc::Transaction* release_transaction();
  ::tari::rpc::Transaction* mutable_transaction();
  void set_allocated_transaction(::tari::rpc::Transaction* value);
  void unsafe_arena_set_allocated_transaction(::tari::rpc::Transaction* value);
  ::tari::rpc::Transaction* unsafe_arena_release_transaction();

  private:
  const ::tari::rpc::Transaction& _internal_transaction() const;
  ::tari::rpc::Transaction* _internal_mutable_transaction();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetMempoolTransactionsResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::Transaction* transaction_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};
// -------------------------------------------------------------------

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

  inline GetBlocksResponse(const GetBlocksResponse& from) : GetBlocksResponse(nullptr, from) {}
  inline GetBlocksResponse(GetBlocksResponse&& from) noexcept
      : GetBlocksResponse(nullptr, std::move(from)) {}
  inline GetBlocksResponse& operator=(const GetBlocksResponse& from) {
    CopyFrom(from);
    return *this;
  }
  inline GetBlocksResponse& operator=(GetBlocksResponse&& 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 GetBlocksResponse& default_instance() {
    return *internal_default_instance();
  }
  static inline const GetBlocksResponse* internal_default_instance() {
    return reinterpret_cast<const GetBlocksResponse*>(
        &_GetBlocksResponse_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 26;
  friend void swap(GetBlocksResponse& a, GetBlocksResponse& b) { a.Swap(&b); }
  inline void Swap(GetBlocksResponse* 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(GetBlocksResponse* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GetBlocksResponse* New(::google::protobuf::Arena* arena = nullptr) const final {
    return ::google::protobuf::Message::DefaultConstruct<GetBlocksResponse>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GetBlocksResponse& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GetBlocksResponse& from) { GetBlocksResponse::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(GetBlocksResponse* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "tari.rpc.GetBlocksResponse"; }

 protected:
  explicit GetBlocksResponse(::google::protobuf::Arena* arena);
  GetBlocksResponse(::google::protobuf::Arena* arena, const GetBlocksResponse& from);
  GetBlocksResponse(::google::protobuf::Arena* arena, GetBlocksResponse&& from) noexcept
      : GetBlocksResponse(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 {
    kBlocksFieldNumber = 1,
  };
  // repeated .tari.rpc.HistoricalBlock blocks = 1;
  int blocks_size() const;
  private:
  int _internal_blocks_size() const;

  public:
  void clear_blocks() ;
  ::tari::rpc::HistoricalBlock* mutable_blocks(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>* mutable_blocks();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>& _internal_blocks() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>* _internal_mutable_blocks();
  public:
  const ::tari::rpc::HistoricalBlock& blocks(int index) const;
  ::tari::rpc::HistoricalBlock* add_blocks();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>& blocks() const;
  // @@protoc_insertion_point(class_scope:tari.rpc.GetBlocksResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      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::RepeatedPtrField< ::tari::rpc::HistoricalBlock > blocks_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_base_5fnode_2eproto;
};

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




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


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

// GetAssetMetadataRequest

// bytes asset_public_key = 1;
inline void GetAssetMetadataRequest::clear_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataRequest::asset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataRequest.asset_public_key)
  return _internal_asset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataRequest::set_asset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataRequest.asset_public_key)
}
inline std::string* GetAssetMetadataRequest::mutable_asset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_asset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataRequest.asset_public_key)
  return _s;
}
inline const std::string& GetAssetMetadataRequest::_internal_asset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Get();
}
inline void GetAssetMetadataRequest::_internal_set_asset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataRequest::_internal_mutable_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataRequest::release_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataRequest.asset_public_key)
  return _impl_.asset_public_key_.Release();
}
inline void GetAssetMetadataRequest::set_allocated_asset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.asset_public_key_.IsDefault()) {
          _impl_.asset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataRequest.asset_public_key)
}

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

// GetAssetMetadataResponse

// string name = 2;
inline void GetAssetMetadataResponse::clear_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataResponse::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataResponse::set_name(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.name)
}
inline std::string* GetAssetMetadataResponse::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataResponse.name)
  return _s;
}
inline const std::string& GetAssetMetadataResponse::_internal_name() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.name_.Get();
}
inline void GetAssetMetadataResponse::_internal_set_name(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataResponse::_internal_mutable_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataResponse::release_name() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.name)
  return _impl_.name_.Release();
}
inline void GetAssetMetadataResponse::set_allocated_name(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.name)
}

// string description = 3;
inline void GetAssetMetadataResponse::clear_description() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.description_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataResponse::description() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.description)
  return _internal_description();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataResponse::set_description(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.description_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.description)
}
inline std::string* GetAssetMetadataResponse::mutable_description() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_description();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataResponse.description)
  return _s;
}
inline const std::string& GetAssetMetadataResponse::_internal_description() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.description_.Get();
}
inline void GetAssetMetadataResponse::_internal_set_description(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.description_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataResponse::_internal_mutable_description() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.description_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataResponse::release_description() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.description)
  return _impl_.description_.Release();
}
inline void GetAssetMetadataResponse::set_allocated_description(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.description_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.description_.IsDefault()) {
          _impl_.description_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.description)
}

// string image = 4;
inline void GetAssetMetadataResponse::clear_image() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.image_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataResponse::image() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.image)
  return _internal_image();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataResponse::set_image(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.image_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.image)
}
inline std::string* GetAssetMetadataResponse::mutable_image() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_image();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataResponse.image)
  return _s;
}
inline const std::string& GetAssetMetadataResponse::_internal_image() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.image_.Get();
}
inline void GetAssetMetadataResponse::_internal_set_image(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.image_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataResponse::_internal_mutable_image() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.image_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataResponse::release_image() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.image)
  return _impl_.image_.Release();
}
inline void GetAssetMetadataResponse::set_allocated_image(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.image_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.image_.IsDefault()) {
          _impl_.image_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.image)
}

// bytes owner_commitment = 5;
inline void GetAssetMetadataResponse::clear_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataResponse::owner_commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.owner_commitment)
  return _internal_owner_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataResponse::set_owner_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.owner_commitment)
}
inline std::string* GetAssetMetadataResponse::mutable_owner_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_owner_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataResponse.owner_commitment)
  return _s;
}
inline const std::string& GetAssetMetadataResponse::_internal_owner_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Get();
}
inline void GetAssetMetadataResponse::_internal_set_owner_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataResponse::_internal_mutable_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataResponse::release_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.owner_commitment)
  return _impl_.owner_commitment_.Release();
}
inline void GetAssetMetadataResponse::set_allocated_owner_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.owner_commitment_.IsDefault()) {
          _impl_.owner_commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.owner_commitment)
}

// .tari.rpc.OutputFeatures features = 6;
inline bool GetAssetMetadataResponse::has_features() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.features_ != nullptr);
  return value;
}
inline const ::tari::rpc::OutputFeatures& GetAssetMetadataResponse::_internal_features() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::OutputFeatures* p = _impl_.features_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::OutputFeatures&>(::tari::rpc::_OutputFeatures_default_instance_);
}
inline const ::tari::rpc::OutputFeatures& GetAssetMetadataResponse::features() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.features)
  return _internal_features();
}
inline void GetAssetMetadataResponse::unsafe_arena_set_allocated_features(::tari::rpc::OutputFeatures* 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::OutputFeatures*>(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.GetAssetMetadataResponse.features)
}
inline ::tari::rpc::OutputFeatures* GetAssetMetadataResponse::release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::OutputFeatures* 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::OutputFeatures* GetAssetMetadataResponse::unsafe_arena_release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.features)

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

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.features_ = reinterpret_cast<::tari::rpc::OutputFeatures*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.features)
}

// uint64 mined_height = 7;
inline void GetAssetMetadataResponse::clear_mined_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = ::uint64_t{0u};
}
inline ::uint64_t GetAssetMetadataResponse::mined_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.mined_height)
  return _internal_mined_height();
}
inline void GetAssetMetadataResponse::set_mined_height(::uint64_t value) {
  _internal_set_mined_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.mined_height)
}
inline ::uint64_t GetAssetMetadataResponse::_internal_mined_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_height_;
}
inline void GetAssetMetadataResponse::_internal_set_mined_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = value;
}

// bytes mined_in_block = 8;
inline void GetAssetMetadataResponse::clear_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.ClearToEmpty();
}
inline const std::string& GetAssetMetadataResponse::mined_in_block() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetAssetMetadataResponse.mined_in_block)
  return _internal_mined_in_block();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetAssetMetadataResponse::set_mined_in_block(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetAssetMetadataResponse.mined_in_block)
}
inline std::string* GetAssetMetadataResponse::mutable_mined_in_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_mined_in_block();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetAssetMetadataResponse.mined_in_block)
  return _s;
}
inline const std::string& GetAssetMetadataResponse::_internal_mined_in_block() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Get();
}
inline void GetAssetMetadataResponse::_internal_set_mined_in_block(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.Set(value, GetArena());
}
inline std::string* GetAssetMetadataResponse::_internal_mutable_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Mutable( GetArena());
}
inline std::string* GetAssetMetadataResponse::release_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetAssetMetadataResponse.mined_in_block)
  return _impl_.mined_in_block_.Release();
}
inline void GetAssetMetadataResponse::set_allocated_mined_in_block(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.mined_in_block_.IsDefault()) {
          _impl_.mined_in_block_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetAssetMetadataResponse.mined_in_block)
}

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

// ListAssetRegistrationsRequest

// uint64 offset = 2;
inline void ListAssetRegistrationsRequest::clear_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_ = ::uint64_t{0u};
}
inline ::uint64_t ListAssetRegistrationsRequest::offset() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsRequest.offset)
  return _internal_offset();
}
inline void ListAssetRegistrationsRequest::set_offset(::uint64_t value) {
  _internal_set_offset(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsRequest.offset)
}
inline ::uint64_t ListAssetRegistrationsRequest::_internal_offset() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.offset_;
}
inline void ListAssetRegistrationsRequest::_internal_set_offset(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_ = value;
}

// uint64 count = 3;
inline void ListAssetRegistrationsRequest::clear_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = ::uint64_t{0u};
}
inline ::uint64_t ListAssetRegistrationsRequest::count() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsRequest.count)
  return _internal_count();
}
inline void ListAssetRegistrationsRequest::set_count(::uint64_t value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsRequest.count)
}
inline ::uint64_t ListAssetRegistrationsRequest::_internal_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.count_;
}
inline void ListAssetRegistrationsRequest::_internal_set_count(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = value;
}

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

// ListAssetRegistrationsResponse

// bytes asset_public_key = 1;
inline void ListAssetRegistrationsResponse::clear_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.ClearToEmpty();
}
inline const std::string& ListAssetRegistrationsResponse::asset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.asset_public_key)
  return _internal_asset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListAssetRegistrationsResponse::set_asset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.asset_public_key)
}
inline std::string* ListAssetRegistrationsResponse::mutable_asset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_asset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListAssetRegistrationsResponse.asset_public_key)
  return _s;
}
inline const std::string& ListAssetRegistrationsResponse::_internal_asset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Get();
}
inline void ListAssetRegistrationsResponse::_internal_set_asset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.Set(value, GetArena());
}
inline std::string* ListAssetRegistrationsResponse::_internal_mutable_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Mutable( GetArena());
}
inline std::string* ListAssetRegistrationsResponse::release_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.asset_public_key)
  return _impl_.asset_public_key_.Release();
}
inline void ListAssetRegistrationsResponse::set_allocated_asset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.asset_public_key_.IsDefault()) {
          _impl_.asset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.asset_public_key)
}

// bytes unique_id = 2;
inline void ListAssetRegistrationsResponse::clear_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.ClearToEmpty();
}
inline const std::string& ListAssetRegistrationsResponse::unique_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.unique_id)
  return _internal_unique_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListAssetRegistrationsResponse::set_unique_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.unique_id)
}
inline std::string* ListAssetRegistrationsResponse::mutable_unique_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_unique_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListAssetRegistrationsResponse.unique_id)
  return _s;
}
inline const std::string& ListAssetRegistrationsResponse::_internal_unique_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.unique_id_.Get();
}
inline void ListAssetRegistrationsResponse::_internal_set_unique_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.Set(value, GetArena());
}
inline std::string* ListAssetRegistrationsResponse::_internal_mutable_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.unique_id_.Mutable( GetArena());
}
inline std::string* ListAssetRegistrationsResponse::release_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.unique_id)
  return _impl_.unique_id_.Release();
}
inline void ListAssetRegistrationsResponse::set_allocated_unique_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.unique_id_.IsDefault()) {
          _impl_.unique_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.unique_id)
}

// bytes owner_commitment = 3;
inline void ListAssetRegistrationsResponse::clear_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.ClearToEmpty();
}
inline const std::string& ListAssetRegistrationsResponse::owner_commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.owner_commitment)
  return _internal_owner_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListAssetRegistrationsResponse::set_owner_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.owner_commitment)
}
inline std::string* ListAssetRegistrationsResponse::mutable_owner_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_owner_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListAssetRegistrationsResponse.owner_commitment)
  return _s;
}
inline const std::string& ListAssetRegistrationsResponse::_internal_owner_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Get();
}
inline void ListAssetRegistrationsResponse::_internal_set_owner_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.Set(value, GetArena());
}
inline std::string* ListAssetRegistrationsResponse::_internal_mutable_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Mutable( GetArena());
}
inline std::string* ListAssetRegistrationsResponse::release_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.owner_commitment)
  return _impl_.owner_commitment_.Release();
}
inline void ListAssetRegistrationsResponse::set_allocated_owner_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.owner_commitment_.IsDefault()) {
          _impl_.owner_commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.owner_commitment)
}

// uint64 mined_height = 4;
inline void ListAssetRegistrationsResponse::clear_mined_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = ::uint64_t{0u};
}
inline ::uint64_t ListAssetRegistrationsResponse::mined_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.mined_height)
  return _internal_mined_height();
}
inline void ListAssetRegistrationsResponse::set_mined_height(::uint64_t value) {
  _internal_set_mined_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.mined_height)
}
inline ::uint64_t ListAssetRegistrationsResponse::_internal_mined_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_height_;
}
inline void ListAssetRegistrationsResponse::_internal_set_mined_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = value;
}

// bytes mined_in_block = 5;
inline void ListAssetRegistrationsResponse::clear_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.ClearToEmpty();
}
inline const std::string& ListAssetRegistrationsResponse::mined_in_block() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.mined_in_block)
  return _internal_mined_in_block();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListAssetRegistrationsResponse::set_mined_in_block(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.mined_in_block)
}
inline std::string* ListAssetRegistrationsResponse::mutable_mined_in_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_mined_in_block();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListAssetRegistrationsResponse.mined_in_block)
  return _s;
}
inline const std::string& ListAssetRegistrationsResponse::_internal_mined_in_block() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Get();
}
inline void ListAssetRegistrationsResponse::_internal_set_mined_in_block(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.Set(value, GetArena());
}
inline std::string* ListAssetRegistrationsResponse::_internal_mutable_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Mutable( GetArena());
}
inline std::string* ListAssetRegistrationsResponse::release_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.mined_in_block)
  return _impl_.mined_in_block_.Release();
}
inline void ListAssetRegistrationsResponse::set_allocated_mined_in_block(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.mined_in_block_.IsDefault()) {
          _impl_.mined_in_block_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.mined_in_block)
}

// .tari.rpc.OutputFeatures features = 6;
inline bool ListAssetRegistrationsResponse::has_features() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.features_ != nullptr);
  return value;
}
inline const ::tari::rpc::OutputFeatures& ListAssetRegistrationsResponse::_internal_features() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::OutputFeatures* p = _impl_.features_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::OutputFeatures&>(::tari::rpc::_OutputFeatures_default_instance_);
}
inline const ::tari::rpc::OutputFeatures& ListAssetRegistrationsResponse::features() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.features)
  return _internal_features();
}
inline void ListAssetRegistrationsResponse::unsafe_arena_set_allocated_features(::tari::rpc::OutputFeatures* 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::OutputFeatures*>(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.ListAssetRegistrationsResponse.features)
}
inline ::tari::rpc::OutputFeatures* ListAssetRegistrationsResponse::release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::OutputFeatures* 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::OutputFeatures* ListAssetRegistrationsResponse::unsafe_arena_release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.features)

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

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.features_ = reinterpret_cast<::tari::rpc::OutputFeatures*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.features)
}

// bytes script = 7;
inline void ListAssetRegistrationsResponse::clear_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.ClearToEmpty();
}
inline const std::string& ListAssetRegistrationsResponse::script() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListAssetRegistrationsResponse.script)
  return _internal_script();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ListAssetRegistrationsResponse::set_script(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.ListAssetRegistrationsResponse.script)
}
inline std::string* ListAssetRegistrationsResponse::mutable_script() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_script();
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListAssetRegistrationsResponse.script)
  return _s;
}
inline const std::string& ListAssetRegistrationsResponse::_internal_script() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.script_.Get();
}
inline void ListAssetRegistrationsResponse::_internal_set_script(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.Set(value, GetArena());
}
inline std::string* ListAssetRegistrationsResponse::_internal_mutable_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.script_.Mutable( GetArena());
}
inline std::string* ListAssetRegistrationsResponse::release_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.ListAssetRegistrationsResponse.script)
  return _impl_.script_.Release();
}
inline void ListAssetRegistrationsResponse::set_allocated_script(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.script_.IsDefault()) {
          _impl_.script_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.ListAssetRegistrationsResponse.script)
}

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

// GetTokensRequest

// bytes asset_public_key = 1;
inline void GetTokensRequest::clear_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.ClearToEmpty();
}
inline const std::string& GetTokensRequest::asset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensRequest.asset_public_key)
  return _internal_asset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensRequest::set_asset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensRequest.asset_public_key)
}
inline std::string* GetTokensRequest::mutable_asset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_asset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensRequest.asset_public_key)
  return _s;
}
inline const std::string& GetTokensRequest::_internal_asset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Get();
}
inline void GetTokensRequest::_internal_set_asset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.Set(value, GetArena());
}
inline std::string* GetTokensRequest::_internal_mutable_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Mutable( GetArena());
}
inline std::string* GetTokensRequest::release_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensRequest.asset_public_key)
  return _impl_.asset_public_key_.Release();
}
inline void GetTokensRequest::set_allocated_asset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.asset_public_key_.IsDefault()) {
          _impl_.asset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensRequest.asset_public_key)
}

// repeated bytes unique_ids = 2;
inline int GetTokensRequest::_internal_unique_ids_size() const {
  return _internal_unique_ids().size();
}
inline int GetTokensRequest::unique_ids_size() const {
  return _internal_unique_ids_size();
}
inline void GetTokensRequest::clear_unique_ids() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_ids_.Clear();
}
inline std::string* GetTokensRequest::add_unique_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_unique_ids()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.GetTokensRequest.unique_ids)
  return _s;
}
inline const std::string& GetTokensRequest::unique_ids(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensRequest.unique_ids)
  return _internal_unique_ids().Get(index);
}
inline std::string* GetTokensRequest::mutable_unique_ids(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensRequest.unique_ids)
  return _internal_mutable_unique_ids()->Mutable(index);
}
inline void GetTokensRequest::set_unique_ids(int index, const std::string& value) {
  _internal_mutable_unique_ids()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::set_unique_ids(int index, std::string&& value) {
  _internal_mutable_unique_ids()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::set_unique_ids(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_unique_ids()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::set_unique_ids(int index, const void* value,
                              std::size_t size) {
  _internal_mutable_unique_ids()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::set_unique_ids(int index, absl::string_view value) {
  _internal_mutable_unique_ids()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::add_unique_ids(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_unique_ids()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::add_unique_ids(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_unique_ids()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::add_unique_ids(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_unique_ids()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::add_unique_ids(const void* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_unique_ids()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.GetTokensRequest.unique_ids)
}
inline void GetTokensRequest::add_unique_ids(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_unique_ids()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.GetTokensRequest.unique_ids)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
GetTokensRequest::unique_ids() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetTokensRequest.unique_ids)
  return _internal_unique_ids();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
GetTokensRequest::mutable_unique_ids() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetTokensRequest.unique_ids)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_unique_ids();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
GetTokensRequest::_internal_unique_ids() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.unique_ids_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
GetTokensRequest::_internal_mutable_unique_ids() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.unique_ids_;
}

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

// GetTokensResponse

// bytes unique_id = 1;
inline void GetTokensResponse::clear_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.ClearToEmpty();
}
inline const std::string& GetTokensResponse::unique_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.unique_id)
  return _internal_unique_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensResponse::set_unique_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.unique_id)
}
inline std::string* GetTokensResponse::mutable_unique_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_unique_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensResponse.unique_id)
  return _s;
}
inline const std::string& GetTokensResponse::_internal_unique_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.unique_id_.Get();
}
inline void GetTokensResponse::_internal_set_unique_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.Set(value, GetArena());
}
inline std::string* GetTokensResponse::_internal_mutable_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.unique_id_.Mutable( GetArena());
}
inline std::string* GetTokensResponse::release_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.unique_id)
  return _impl_.unique_id_.Release();
}
inline void GetTokensResponse::set_allocated_unique_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unique_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.unique_id_.IsDefault()) {
          _impl_.unique_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.unique_id)
}

// bytes asset_public_key = 2;
inline void GetTokensResponse::clear_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.ClearToEmpty();
}
inline const std::string& GetTokensResponse::asset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.asset_public_key)
  return _internal_asset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensResponse::set_asset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.asset_public_key)
}
inline std::string* GetTokensResponse::mutable_asset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_asset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensResponse.asset_public_key)
  return _s;
}
inline const std::string& GetTokensResponse::_internal_asset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Get();
}
inline void GetTokensResponse::_internal_set_asset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.Set(value, GetArena());
}
inline std::string* GetTokensResponse::_internal_mutable_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.asset_public_key_.Mutable( GetArena());
}
inline std::string* GetTokensResponse::release_asset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.asset_public_key)
  return _impl_.asset_public_key_.Release();
}
inline void GetTokensResponse::set_allocated_asset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.asset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.asset_public_key_.IsDefault()) {
          _impl_.asset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.asset_public_key)
}

// bytes owner_commitment = 3;
inline void GetTokensResponse::clear_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.ClearToEmpty();
}
inline const std::string& GetTokensResponse::owner_commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.owner_commitment)
  return _internal_owner_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensResponse::set_owner_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.owner_commitment)
}
inline std::string* GetTokensResponse::mutable_owner_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_owner_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensResponse.owner_commitment)
  return _s;
}
inline const std::string& GetTokensResponse::_internal_owner_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Get();
}
inline void GetTokensResponse::_internal_set_owner_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.Set(value, GetArena());
}
inline std::string* GetTokensResponse::_internal_mutable_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.owner_commitment_.Mutable( GetArena());
}
inline std::string* GetTokensResponse::release_owner_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.owner_commitment)
  return _impl_.owner_commitment_.Release();
}
inline void GetTokensResponse::set_allocated_owner_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.owner_commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.owner_commitment_.IsDefault()) {
          _impl_.owner_commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.owner_commitment)
}

// bytes mined_in_block = 4;
inline void GetTokensResponse::clear_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.ClearToEmpty();
}
inline const std::string& GetTokensResponse::mined_in_block() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.mined_in_block)
  return _internal_mined_in_block();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensResponse::set_mined_in_block(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.mined_in_block)
}
inline std::string* GetTokensResponse::mutable_mined_in_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_mined_in_block();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensResponse.mined_in_block)
  return _s;
}
inline const std::string& GetTokensResponse::_internal_mined_in_block() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Get();
}
inline void GetTokensResponse::_internal_set_mined_in_block(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.Set(value, GetArena());
}
inline std::string* GetTokensResponse::_internal_mutable_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.mined_in_block_.Mutable( GetArena());
}
inline std::string* GetTokensResponse::release_mined_in_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.mined_in_block)
  return _impl_.mined_in_block_.Release();
}
inline void GetTokensResponse::set_allocated_mined_in_block(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_in_block_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.mined_in_block_.IsDefault()) {
          _impl_.mined_in_block_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.mined_in_block)
}

// uint64 mined_height = 5;
inline void GetTokensResponse::clear_mined_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = ::uint64_t{0u};
}
inline ::uint64_t GetTokensResponse::mined_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.mined_height)
  return _internal_mined_height();
}
inline void GetTokensResponse::set_mined_height(::uint64_t value) {
  _internal_set_mined_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.mined_height)
}
inline ::uint64_t GetTokensResponse::_internal_mined_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.mined_height_;
}
inline void GetTokensResponse::_internal_set_mined_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.mined_height_ = value;
}

// .tari.rpc.OutputFeatures features = 6;
inline bool GetTokensResponse::has_features() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.features_ != nullptr);
  return value;
}
inline const ::tari::rpc::OutputFeatures& GetTokensResponse::_internal_features() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::OutputFeatures* p = _impl_.features_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::OutputFeatures&>(::tari::rpc::_OutputFeatures_default_instance_);
}
inline const ::tari::rpc::OutputFeatures& GetTokensResponse::features() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.features)
  return _internal_features();
}
inline void GetTokensResponse::unsafe_arena_set_allocated_features(::tari::rpc::OutputFeatures* 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::OutputFeatures*>(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.GetTokensResponse.features)
}
inline ::tari::rpc::OutputFeatures* GetTokensResponse::release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::OutputFeatures* 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::OutputFeatures* GetTokensResponse::unsafe_arena_release_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.features)

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

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.features_ = reinterpret_cast<::tari::rpc::OutputFeatures*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.features)
}

// bytes script = 7;
inline void GetTokensResponse::clear_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.ClearToEmpty();
}
inline const std::string& GetTokensResponse::script() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTokensResponse.script)
  return _internal_script();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTokensResponse::set_script(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTokensResponse.script)
}
inline std::string* GetTokensResponse::mutable_script() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_script();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTokensResponse.script)
  return _s;
}
inline const std::string& GetTokensResponse::_internal_script() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.script_.Get();
}
inline void GetTokensResponse::_internal_set_script(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.Set(value, GetArena());
}
inline std::string* GetTokensResponse::_internal_mutable_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.script_.Mutable( GetArena());
}
inline std::string* GetTokensResponse::release_script() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTokensResponse.script)
  return _impl_.script_.Release();
}
inline void GetTokensResponse::set_allocated_script(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.script_.IsDefault()) {
          _impl_.script_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTokensResponse.script)
}

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

// SubmitBlockResponse

// bytes block_hash = 1;
inline void SubmitBlockResponse::clear_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.ClearToEmpty();
}
inline const std::string& SubmitBlockResponse::block_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SubmitBlockResponse.block_hash)
  return _internal_block_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SubmitBlockResponse::set_block_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.SubmitBlockResponse.block_hash)
}
inline std::string* SubmitBlockResponse::mutable_block_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_block_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.SubmitBlockResponse.block_hash)
  return _s;
}
inline const std::string& SubmitBlockResponse::_internal_block_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Get();
}
inline void SubmitBlockResponse::_internal_set_block_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.Set(value, GetArena());
}
inline std::string* SubmitBlockResponse::_internal_mutable_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Mutable( GetArena());
}
inline std::string* SubmitBlockResponse::release_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.SubmitBlockResponse.block_hash)
  return _impl_.block_hash_.Release();
}
inline void SubmitBlockResponse::set_allocated_block_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.block_hash_.IsDefault()) {
          _impl_.block_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SubmitBlockResponse.block_hash)
}

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

// BlockBlobRequest

// bytes header_blob = 1;
inline void BlockBlobRequest::clear_header_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_blob_.ClearToEmpty();
}
inline const std::string& BlockBlobRequest::header_blob() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockBlobRequest.header_blob)
  return _internal_header_blob();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BlockBlobRequest::set_header_blob(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_blob_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.BlockBlobRequest.header_blob)
}
inline std::string* BlockBlobRequest::mutable_header_blob() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_header_blob();
  // @@protoc_insertion_point(field_mutable:tari.rpc.BlockBlobRequest.header_blob)
  return _s;
}
inline const std::string& BlockBlobRequest::_internal_header_blob() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.header_blob_.Get();
}
inline void BlockBlobRequest::_internal_set_header_blob(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_blob_.Set(value, GetArena());
}
inline std::string* BlockBlobRequest::_internal_mutable_header_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.header_blob_.Mutable( GetArena());
}
inline std::string* BlockBlobRequest::release_header_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.BlockBlobRequest.header_blob)
  return _impl_.header_blob_.Release();
}
inline void BlockBlobRequest::set_allocated_header_blob(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_blob_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.header_blob_.IsDefault()) {
          _impl_.header_blob_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.BlockBlobRequest.header_blob)
}

// bytes body_blob = 2;
inline void BlockBlobRequest::clear_body_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.body_blob_.ClearToEmpty();
}
inline const std::string& BlockBlobRequest::body_blob() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockBlobRequest.body_blob)
  return _internal_body_blob();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BlockBlobRequest::set_body_blob(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.body_blob_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.BlockBlobRequest.body_blob)
}
inline std::string* BlockBlobRequest::mutable_body_blob() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_body_blob();
  // @@protoc_insertion_point(field_mutable:tari.rpc.BlockBlobRequest.body_blob)
  return _s;
}
inline const std::string& BlockBlobRequest::_internal_body_blob() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.body_blob_.Get();
}
inline void BlockBlobRequest::_internal_set_body_blob(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.body_blob_.Set(value, GetArena());
}
inline std::string* BlockBlobRequest::_internal_mutable_body_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.body_blob_.Mutable( GetArena());
}
inline std::string* BlockBlobRequest::release_body_blob() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.BlockBlobRequest.body_blob)
  return _impl_.body_blob_.Release();
}
inline void BlockBlobRequest::set_allocated_body_blob(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.body_blob_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.body_blob_.IsDefault()) {
          _impl_.body_blob_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.BlockBlobRequest.body_blob)
}

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

// TipInfoResponse

// .tari.rpc.MetaData metadata = 1;
inline bool TipInfoResponse::has_metadata() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.metadata_ != nullptr);
  return value;
}
inline void TipInfoResponse::clear_metadata() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.metadata_ != nullptr) _impl_.metadata_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::MetaData& TipInfoResponse::_internal_metadata() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::MetaData* p = _impl_.metadata_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::MetaData&>(::tari::rpc::_MetaData_default_instance_);
}
inline const ::tari::rpc::MetaData& TipInfoResponse::metadata() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TipInfoResponse.metadata)
  return _internal_metadata();
}
inline void TipInfoResponse::unsafe_arena_set_allocated_metadata(::tari::rpc::MetaData* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_);
  }
  _impl_.metadata_ = reinterpret_cast<::tari::rpc::MetaData*>(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.TipInfoResponse.metadata)
}
inline ::tari::rpc::MetaData* TipInfoResponse::release_metadata() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::MetaData* released = _impl_.metadata_;
  _impl_.metadata_ = 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::MetaData* TipInfoResponse::unsafe_arena_release_metadata() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TipInfoResponse.metadata)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::MetaData* temp = _impl_.metadata_;
  _impl_.metadata_ = nullptr;
  return temp;
}
inline ::tari::rpc::MetaData* TipInfoResponse::_internal_mutable_metadata() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.metadata_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::MetaData>(GetArena());
    _impl_.metadata_ = reinterpret_cast<::tari::rpc::MetaData*>(p);
  }
  return _impl_.metadata_;
}
inline ::tari::rpc::MetaData* TipInfoResponse::mutable_metadata() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::MetaData* _msg = _internal_mutable_metadata();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TipInfoResponse.metadata)
  return _msg;
}
inline void TipInfoResponse::set_allocated_metadata(::tari::rpc::MetaData* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.metadata_);
  }

  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_.metadata_ = reinterpret_cast<::tari::rpc::MetaData*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TipInfoResponse.metadata)
}

// bool initial_sync_achieved = 2;
inline void TipInfoResponse::clear_initial_sync_achieved() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.initial_sync_achieved_ = false;
}
inline bool TipInfoResponse::initial_sync_achieved() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TipInfoResponse.initial_sync_achieved)
  return _internal_initial_sync_achieved();
}
inline void TipInfoResponse::set_initial_sync_achieved(bool value) {
  _internal_set_initial_sync_achieved(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TipInfoResponse.initial_sync_achieved)
}
inline bool TipInfoResponse::_internal_initial_sync_achieved() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.initial_sync_achieved_;
}
inline void TipInfoResponse::_internal_set_initial_sync_achieved(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.initial_sync_achieved_ = value;
}

// .tari.rpc.BaseNodeState base_node_state = 3;
inline void TipInfoResponse::clear_base_node_state() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.base_node_state_ = 0;
}
inline ::tari::rpc::BaseNodeState TipInfoResponse::base_node_state() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TipInfoResponse.base_node_state)
  return _internal_base_node_state();
}
inline void TipInfoResponse::set_base_node_state(::tari::rpc::BaseNodeState value) {
  _internal_set_base_node_state(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TipInfoResponse.base_node_state)
}
inline ::tari::rpc::BaseNodeState TipInfoResponse::_internal_base_node_state() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::BaseNodeState>(_impl_.base_node_state_);
}
inline void TipInfoResponse::_internal_set_base_node_state(::tari::rpc::BaseNodeState value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.base_node_state_ = value;
}

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

// NewBlockTemplateResponse

// .tari.rpc.NewBlockTemplate new_block_template = 1;
inline bool NewBlockTemplateResponse::has_new_block_template() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.new_block_template_ != nullptr);
  return value;
}
inline const ::tari::rpc::NewBlockTemplate& NewBlockTemplateResponse::_internal_new_block_template() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::NewBlockTemplate* p = _impl_.new_block_template_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::NewBlockTemplate&>(::tari::rpc::_NewBlockTemplate_default_instance_);
}
inline const ::tari::rpc::NewBlockTemplate& NewBlockTemplateResponse::new_block_template() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockTemplateResponse.new_block_template)
  return _internal_new_block_template();
}
inline void NewBlockTemplateResponse::unsafe_arena_set_allocated_new_block_template(::tari::rpc::NewBlockTemplate* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_block_template_);
  }
  _impl_.new_block_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(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.NewBlockTemplateResponse.new_block_template)
}
inline ::tari::rpc::NewBlockTemplate* NewBlockTemplateResponse::release_new_block_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::NewBlockTemplate* released = _impl_.new_block_template_;
  _impl_.new_block_template_ = 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::NewBlockTemplate* NewBlockTemplateResponse::unsafe_arena_release_new_block_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NewBlockTemplateResponse.new_block_template)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::NewBlockTemplate* temp = _impl_.new_block_template_;
  _impl_.new_block_template_ = nullptr;
  return temp;
}
inline ::tari::rpc::NewBlockTemplate* NewBlockTemplateResponse::_internal_mutable_new_block_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.new_block_template_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::NewBlockTemplate>(GetArena());
    _impl_.new_block_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(p);
  }
  return _impl_.new_block_template_;
}
inline ::tari::rpc::NewBlockTemplate* NewBlockTemplateResponse::mutable_new_block_template() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::NewBlockTemplate* _msg = _internal_mutable_new_block_template();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NewBlockTemplateResponse.new_block_template)
  return _msg;
}
inline void NewBlockTemplateResponse::set_allocated_new_block_template(::tari::rpc::NewBlockTemplate* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_block_template_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.new_block_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NewBlockTemplateResponse.new_block_template)
}

// bool initial_sync_achieved = 3;
inline void NewBlockTemplateResponse::clear_initial_sync_achieved() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.initial_sync_achieved_ = false;
}
inline bool NewBlockTemplateResponse::initial_sync_achieved() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockTemplateResponse.initial_sync_achieved)
  return _internal_initial_sync_achieved();
}
inline void NewBlockTemplateResponse::set_initial_sync_achieved(bool value) {
  _internal_set_initial_sync_achieved(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockTemplateResponse.initial_sync_achieved)
}
inline bool NewBlockTemplateResponse::_internal_initial_sync_achieved() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.initial_sync_achieved_;
}
inline void NewBlockTemplateResponse::_internal_set_initial_sync_achieved(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.initial_sync_achieved_ = value;
}

// .tari.rpc.MinerData miner_data = 4;
inline bool NewBlockTemplateResponse::has_miner_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.miner_data_ != nullptr);
  return value;
}
inline void NewBlockTemplateResponse::clear_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.miner_data_ != nullptr) _impl_.miner_data_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::tari::rpc::MinerData& NewBlockTemplateResponse::_internal_miner_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::MinerData* p = _impl_.miner_data_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::MinerData&>(::tari::rpc::_MinerData_default_instance_);
}
inline const ::tari::rpc::MinerData& NewBlockTemplateResponse::miner_data() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockTemplateResponse.miner_data)
  return _internal_miner_data();
}
inline void NewBlockTemplateResponse::unsafe_arena_set_allocated_miner_data(::tari::rpc::MinerData* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.miner_data_);
  }
  _impl_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(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.NewBlockTemplateResponse.miner_data)
}
inline ::tari::rpc::MinerData* NewBlockTemplateResponse::release_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::MinerData* released = _impl_.miner_data_;
  _impl_.miner_data_ = 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::MinerData* NewBlockTemplateResponse::unsafe_arena_release_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NewBlockTemplateResponse.miner_data)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::MinerData* temp = _impl_.miner_data_;
  _impl_.miner_data_ = nullptr;
  return temp;
}
inline ::tari::rpc::MinerData* NewBlockTemplateResponse::_internal_mutable_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.miner_data_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::MinerData>(GetArena());
    _impl_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(p);
  }
  return _impl_.miner_data_;
}
inline ::tari::rpc::MinerData* NewBlockTemplateResponse::mutable_miner_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::MinerData* _msg = _internal_mutable_miner_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NewBlockTemplateResponse.miner_data)
  return _msg;
}
inline void NewBlockTemplateResponse::set_allocated_miner_data(::tari::rpc::MinerData* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.miner_data_);
  }

  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_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NewBlockTemplateResponse.miner_data)
}

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

// NewBlockTemplateRequest

// .tari.rpc.PowAlgo algo = 1;
inline bool NewBlockTemplateRequest::has_algo() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.algo_ != nullptr);
  return value;
}
inline const ::tari::rpc::PowAlgo& NewBlockTemplateRequest::_internal_algo() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::PowAlgo* p = _impl_.algo_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::PowAlgo&>(::tari::rpc::_PowAlgo_default_instance_);
}
inline const ::tari::rpc::PowAlgo& NewBlockTemplateRequest::algo() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockTemplateRequest.algo)
  return _internal_algo();
}
inline void NewBlockTemplateRequest::unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }
  _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(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.NewBlockTemplateRequest.algo)
}
inline ::tari::rpc::PowAlgo* NewBlockTemplateRequest::release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* released = _impl_.algo_;
  _impl_.algo_ = 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::PowAlgo* NewBlockTemplateRequest::unsafe_arena_release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NewBlockTemplateRequest.algo)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* temp = _impl_.algo_;
  _impl_.algo_ = nullptr;
  return temp;
}
inline ::tari::rpc::PowAlgo* NewBlockTemplateRequest::_internal_mutable_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.algo_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::PowAlgo>(GetArena());
    _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(p);
  }
  return _impl_.algo_;
}
inline ::tari::rpc::PowAlgo* NewBlockTemplateRequest::mutable_algo() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::PowAlgo* _msg = _internal_mutable_algo();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NewBlockTemplateRequest.algo)
  return _msg;
}
inline void NewBlockTemplateRequest::set_allocated_algo(::tari::rpc::PowAlgo* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NewBlockTemplateRequest.algo)
}

// uint64 max_weight = 2;
inline void NewBlockTemplateRequest::clear_max_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_weight_ = ::uint64_t{0u};
}
inline ::uint64_t NewBlockTemplateRequest::max_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockTemplateRequest.max_weight)
  return _internal_max_weight();
}
inline void NewBlockTemplateRequest::set_max_weight(::uint64_t value) {
  _internal_set_max_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockTemplateRequest.max_weight)
}
inline ::uint64_t NewBlockTemplateRequest::_internal_max_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_weight_;
}
inline void NewBlockTemplateRequest::_internal_set_max_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_weight_ = value;
}

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

// GetNewBlockTemplateWithCoinbasesRequest

// .tari.rpc.PowAlgo algo = 1;
inline bool GetNewBlockTemplateWithCoinbasesRequest::has_algo() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.algo_ != nullptr);
  return value;
}
inline const ::tari::rpc::PowAlgo& GetNewBlockTemplateWithCoinbasesRequest::_internal_algo() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::PowAlgo* p = _impl_.algo_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::PowAlgo&>(::tari::rpc::_PowAlgo_default_instance_);
}
inline const ::tari::rpc::PowAlgo& GetNewBlockTemplateWithCoinbasesRequest::algo() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.algo)
  return _internal_algo();
}
inline void GetNewBlockTemplateWithCoinbasesRequest::unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }
  _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(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.GetNewBlockTemplateWithCoinbasesRequest.algo)
}
inline ::tari::rpc::PowAlgo* GetNewBlockTemplateWithCoinbasesRequest::release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* released = _impl_.algo_;
  _impl_.algo_ = 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::PowAlgo* GetNewBlockTemplateWithCoinbasesRequest::unsafe_arena_release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.algo)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* temp = _impl_.algo_;
  _impl_.algo_ = nullptr;
  return temp;
}
inline ::tari::rpc::PowAlgo* GetNewBlockTemplateWithCoinbasesRequest::_internal_mutable_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.algo_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::PowAlgo>(GetArena());
    _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(p);
  }
  return _impl_.algo_;
}
inline ::tari::rpc::PowAlgo* GetNewBlockTemplateWithCoinbasesRequest::mutable_algo() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::PowAlgo* _msg = _internal_mutable_algo();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.algo)
  return _msg;
}
inline void GetNewBlockTemplateWithCoinbasesRequest::set_allocated_algo(::tari::rpc::PowAlgo* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.algo)
}

// uint64 max_weight = 2;
inline void GetNewBlockTemplateWithCoinbasesRequest::clear_max_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_weight_ = ::uint64_t{0u};
}
inline ::uint64_t GetNewBlockTemplateWithCoinbasesRequest::max_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.max_weight)
  return _internal_max_weight();
}
inline void GetNewBlockTemplateWithCoinbasesRequest::set_max_weight(::uint64_t value) {
  _internal_set_max_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.max_weight)
}
inline ::uint64_t GetNewBlockTemplateWithCoinbasesRequest::_internal_max_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.max_weight_;
}
inline void GetNewBlockTemplateWithCoinbasesRequest::_internal_set_max_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.max_weight_ = value;
}

// repeated .tari.rpc.NewBlockCoinbase coinbases = 3;
inline int GetNewBlockTemplateWithCoinbasesRequest::_internal_coinbases_size() const {
  return _internal_coinbases().size();
}
inline int GetNewBlockTemplateWithCoinbasesRequest::coinbases_size() const {
  return _internal_coinbases_size();
}
inline void GetNewBlockTemplateWithCoinbasesRequest::clear_coinbases() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbases_.Clear();
}
inline ::tari::rpc::NewBlockCoinbase* GetNewBlockTemplateWithCoinbasesRequest::mutable_coinbases(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.coinbases)
  return _internal_mutable_coinbases()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* GetNewBlockTemplateWithCoinbasesRequest::mutable_coinbases()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.coinbases)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_coinbases();
}
inline const ::tari::rpc::NewBlockCoinbase& GetNewBlockTemplateWithCoinbasesRequest::coinbases(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.coinbases)
  return _internal_coinbases().Get(index);
}
inline ::tari::rpc::NewBlockCoinbase* GetNewBlockTemplateWithCoinbasesRequest::add_coinbases() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::NewBlockCoinbase* _add = _internal_mutable_coinbases()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.coinbases)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& GetNewBlockTemplateWithCoinbasesRequest::coinbases() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetNewBlockTemplateWithCoinbasesRequest.coinbases)
  return _internal_coinbases();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>&
GetNewBlockTemplateWithCoinbasesRequest::_internal_coinbases() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.coinbases_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>*
GetNewBlockTemplateWithCoinbasesRequest::_internal_mutable_coinbases() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.coinbases_;
}

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

// GetNewBlockWithCoinbasesRequest

// .tari.rpc.NewBlockTemplate new_template = 1;
inline bool GetNewBlockWithCoinbasesRequest::has_new_template() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.new_template_ != nullptr);
  return value;
}
inline const ::tari::rpc::NewBlockTemplate& GetNewBlockWithCoinbasesRequest::_internal_new_template() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::NewBlockTemplate* p = _impl_.new_template_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::NewBlockTemplate&>(::tari::rpc::_NewBlockTemplate_default_instance_);
}
inline const ::tari::rpc::NewBlockTemplate& GetNewBlockWithCoinbasesRequest::new_template() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockWithCoinbasesRequest.new_template)
  return _internal_new_template();
}
inline void GetNewBlockWithCoinbasesRequest::unsafe_arena_set_allocated_new_template(::tari::rpc::NewBlockTemplate* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_template_);
  }
  _impl_.new_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(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.GetNewBlockWithCoinbasesRequest.new_template)
}
inline ::tari::rpc::NewBlockTemplate* GetNewBlockWithCoinbasesRequest::release_new_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::NewBlockTemplate* released = _impl_.new_template_;
  _impl_.new_template_ = 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::NewBlockTemplate* GetNewBlockWithCoinbasesRequest::unsafe_arena_release_new_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockWithCoinbasesRequest.new_template)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::NewBlockTemplate* temp = _impl_.new_template_;
  _impl_.new_template_ = nullptr;
  return temp;
}
inline ::tari::rpc::NewBlockTemplate* GetNewBlockWithCoinbasesRequest::_internal_mutable_new_template() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.new_template_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::NewBlockTemplate>(GetArena());
    _impl_.new_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(p);
  }
  return _impl_.new_template_;
}
inline ::tari::rpc::NewBlockTemplate* GetNewBlockWithCoinbasesRequest::mutable_new_template() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::NewBlockTemplate* _msg = _internal_mutable_new_template();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockWithCoinbasesRequest.new_template)
  return _msg;
}
inline void GetNewBlockWithCoinbasesRequest::set_allocated_new_template(::tari::rpc::NewBlockTemplate* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.new_template_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.new_template_ = reinterpret_cast<::tari::rpc::NewBlockTemplate*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockWithCoinbasesRequest.new_template)
}

// repeated .tari.rpc.NewBlockCoinbase coinbases = 2;
inline int GetNewBlockWithCoinbasesRequest::_internal_coinbases_size() const {
  return _internal_coinbases().size();
}
inline int GetNewBlockWithCoinbasesRequest::coinbases_size() const {
  return _internal_coinbases_size();
}
inline void GetNewBlockWithCoinbasesRequest::clear_coinbases() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbases_.Clear();
}
inline ::tari::rpc::NewBlockCoinbase* GetNewBlockWithCoinbasesRequest::mutable_coinbases(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockWithCoinbasesRequest.coinbases)
  return _internal_mutable_coinbases()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>* GetNewBlockWithCoinbasesRequest::mutable_coinbases()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetNewBlockWithCoinbasesRequest.coinbases)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_coinbases();
}
inline const ::tari::rpc::NewBlockCoinbase& GetNewBlockWithCoinbasesRequest::coinbases(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockWithCoinbasesRequest.coinbases)
  return _internal_coinbases().Get(index);
}
inline ::tari::rpc::NewBlockCoinbase* GetNewBlockWithCoinbasesRequest::add_coinbases() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::NewBlockCoinbase* _add = _internal_mutable_coinbases()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.GetNewBlockWithCoinbasesRequest.coinbases)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>& GetNewBlockWithCoinbasesRequest::coinbases() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetNewBlockWithCoinbasesRequest.coinbases)
  return _internal_coinbases();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>&
GetNewBlockWithCoinbasesRequest::_internal_coinbases() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.coinbases_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::NewBlockCoinbase>*
GetNewBlockWithCoinbasesRequest::_internal_mutable_coinbases() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.coinbases_;
}

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

// NewBlockCoinbase

// string address = 1;
inline void NewBlockCoinbase::clear_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.ClearToEmpty();
}
inline const std::string& NewBlockCoinbase::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockCoinbase.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void NewBlockCoinbase::set_address(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockCoinbase.address)
}
inline std::string* NewBlockCoinbase::mutable_address() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NewBlockCoinbase.address)
  return _s;
}
inline const std::string& NewBlockCoinbase::_internal_address() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.address_.Get();
}
inline void NewBlockCoinbase::_internal_set_address(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.Set(value, GetArena());
}
inline std::string* NewBlockCoinbase::_internal_mutable_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.address_.Mutable( GetArena());
}
inline std::string* NewBlockCoinbase::release_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NewBlockCoinbase.address)
  return _impl_.address_.Release();
}
inline void NewBlockCoinbase::set_allocated_address(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.address_.IsDefault()) {
          _impl_.address_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NewBlockCoinbase.address)
}

// uint64 value = 2;
inline void NewBlockCoinbase::clear_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = ::uint64_t{0u};
}
inline ::uint64_t NewBlockCoinbase::value() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockCoinbase.value)
  return _internal_value();
}
inline void NewBlockCoinbase::set_value(::uint64_t value) {
  _internal_set_value(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockCoinbase.value)
}
inline ::uint64_t NewBlockCoinbase::_internal_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.value_;
}
inline void NewBlockCoinbase::_internal_set_value(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = value;
}

// bool stealth_payment = 3;
inline void NewBlockCoinbase::clear_stealth_payment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stealth_payment_ = false;
}
inline bool NewBlockCoinbase::stealth_payment() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockCoinbase.stealth_payment)
  return _internal_stealth_payment();
}
inline void NewBlockCoinbase::set_stealth_payment(bool value) {
  _internal_set_stealth_payment(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockCoinbase.stealth_payment)
}
inline bool NewBlockCoinbase::_internal_stealth_payment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.stealth_payment_;
}
inline void NewBlockCoinbase::_internal_set_stealth_payment(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.stealth_payment_ = value;
}

// bool revealed_value_proof = 4;
inline void NewBlockCoinbase::clear_revealed_value_proof() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.revealed_value_proof_ = false;
}
inline bool NewBlockCoinbase::revealed_value_proof() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockCoinbase.revealed_value_proof)
  return _internal_revealed_value_proof();
}
inline void NewBlockCoinbase::set_revealed_value_proof(bool value) {
  _internal_set_revealed_value_proof(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockCoinbase.revealed_value_proof)
}
inline bool NewBlockCoinbase::_internal_revealed_value_proof() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.revealed_value_proof_;
}
inline void NewBlockCoinbase::_internal_set_revealed_value_proof(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.revealed_value_proof_ = value;
}

// bytes coinbase_extra = 5;
inline void NewBlockCoinbase::clear_coinbase_extra() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_extra_.ClearToEmpty();
}
inline const std::string& NewBlockCoinbase::coinbase_extra() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NewBlockCoinbase.coinbase_extra)
  return _internal_coinbase_extra();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void NewBlockCoinbase::set_coinbase_extra(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_extra_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.NewBlockCoinbase.coinbase_extra)
}
inline std::string* NewBlockCoinbase::mutable_coinbase_extra() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_coinbase_extra();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NewBlockCoinbase.coinbase_extra)
  return _s;
}
inline const std::string& NewBlockCoinbase::_internal_coinbase_extra() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.coinbase_extra_.Get();
}
inline void NewBlockCoinbase::_internal_set_coinbase_extra(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_extra_.Set(value, GetArena());
}
inline std::string* NewBlockCoinbase::_internal_mutable_coinbase_extra() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.coinbase_extra_.Mutable( GetArena());
}
inline std::string* NewBlockCoinbase::release_coinbase_extra() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NewBlockCoinbase.coinbase_extra)
  return _impl_.coinbase_extra_.Release();
}
inline void NewBlockCoinbase::set_allocated_coinbase_extra(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.coinbase_extra_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.coinbase_extra_.IsDefault()) {
          _impl_.coinbase_extra_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NewBlockCoinbase.coinbase_extra)
}

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

// NetworkDifficultyResponse

// uint64 difficulty = 1;
inline void NetworkDifficultyResponse::clear_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.difficulty)
  return _internal_difficulty();
}
inline void NetworkDifficultyResponse::set_difficulty(::uint64_t value) {
  _internal_set_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.difficulty)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.difficulty_;
}
inline void NetworkDifficultyResponse::_internal_set_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_ = value;
}

// uint64 estimated_hash_rate = 2;
inline void NetworkDifficultyResponse::clear_estimated_hash_rate() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.estimated_hash_rate_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::estimated_hash_rate() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.estimated_hash_rate)
  return _internal_estimated_hash_rate();
}
inline void NetworkDifficultyResponse::set_estimated_hash_rate(::uint64_t value) {
  _internal_set_estimated_hash_rate(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.estimated_hash_rate)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_estimated_hash_rate() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.estimated_hash_rate_;
}
inline void NetworkDifficultyResponse::_internal_set_estimated_hash_rate(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.estimated_hash_rate_ = value;
}

// uint64 height = 3;
inline void NetworkDifficultyResponse::clear_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.height)
  return _internal_height();
}
inline void NetworkDifficultyResponse::set_height(::uint64_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.height)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.height_;
}
inline void NetworkDifficultyResponse::_internal_set_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = value;
}

// uint64 timestamp = 4;
inline void NetworkDifficultyResponse::clear_timestamp() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.timestamp_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::timestamp() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.timestamp)
  return _internal_timestamp();
}
inline void NetworkDifficultyResponse::set_timestamp(::uint64_t value) {
  _internal_set_timestamp(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.timestamp)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_timestamp() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.timestamp_;
}
inline void NetworkDifficultyResponse::_internal_set_timestamp(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.timestamp_ = value;
}

// uint64 pow_algo = 5;
inline void NetworkDifficultyResponse::clear_pow_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pow_algo_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::pow_algo() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.pow_algo)
  return _internal_pow_algo();
}
inline void NetworkDifficultyResponse::set_pow_algo(::uint64_t value) {
  _internal_set_pow_algo(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.pow_algo)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_pow_algo() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.pow_algo_;
}
inline void NetworkDifficultyResponse::_internal_set_pow_algo(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pow_algo_ = value;
}

// uint64 sha3x_estimated_hash_rate = 6;
inline void NetworkDifficultyResponse::clear_sha3x_estimated_hash_rate() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha3x_estimated_hash_rate_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::sha3x_estimated_hash_rate() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.sha3x_estimated_hash_rate)
  return _internal_sha3x_estimated_hash_rate();
}
inline void NetworkDifficultyResponse::set_sha3x_estimated_hash_rate(::uint64_t value) {
  _internal_set_sha3x_estimated_hash_rate(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.sha3x_estimated_hash_rate)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_sha3x_estimated_hash_rate() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.sha3x_estimated_hash_rate_;
}
inline void NetworkDifficultyResponse::_internal_set_sha3x_estimated_hash_rate(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha3x_estimated_hash_rate_ = value;
}

// uint64 randomx_estimated_hash_rate = 7;
inline void NetworkDifficultyResponse::clear_randomx_estimated_hash_rate() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.randomx_estimated_hash_rate_ = ::uint64_t{0u};
}
inline ::uint64_t NetworkDifficultyResponse::randomx_estimated_hash_rate() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkDifficultyResponse.randomx_estimated_hash_rate)
  return _internal_randomx_estimated_hash_rate();
}
inline void NetworkDifficultyResponse::set_randomx_estimated_hash_rate(::uint64_t value) {
  _internal_set_randomx_estimated_hash_rate(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkDifficultyResponse.randomx_estimated_hash_rate)
}
inline ::uint64_t NetworkDifficultyResponse::_internal_randomx_estimated_hash_rate() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.randomx_estimated_hash_rate_;
}
inline void NetworkDifficultyResponse::_internal_set_randomx_estimated_hash_rate(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.randomx_estimated_hash_rate_ = value;
}

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

// ValueAtHeightResponse

// uint64 value = 1;
inline void ValueAtHeightResponse::clear_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = ::uint64_t{0u};
}
inline ::uint64_t ValueAtHeightResponse::value() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ValueAtHeightResponse.value)
  return _internal_value();
}
inline void ValueAtHeightResponse::set_value(::uint64_t value) {
  _internal_set_value(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ValueAtHeightResponse.value)
}
inline ::uint64_t ValueAtHeightResponse::_internal_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.value_;
}
inline void ValueAtHeightResponse::_internal_set_value(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = value;
}

// uint64 height = 2;
inline void ValueAtHeightResponse::clear_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = ::uint64_t{0u};
}
inline ::uint64_t ValueAtHeightResponse::height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ValueAtHeightResponse.height)
  return _internal_height();
}
inline void ValueAtHeightResponse::set_height(::uint64_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ValueAtHeightResponse.height)
}
inline ::uint64_t ValueAtHeightResponse::_internal_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.height_;
}
inline void ValueAtHeightResponse::_internal_set_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = value;
}

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

// IntegerValue

// uint64 value = 1;
inline void IntegerValue::clear_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = ::uint64_t{0u};
}
inline ::uint64_t IntegerValue::value() const {
  // @@protoc_insertion_point(field_get:tari.rpc.IntegerValue.value)
  return _internal_value();
}
inline void IntegerValue::set_value(::uint64_t value) {
  _internal_set_value(value);
  // @@protoc_insertion_point(field_set:tari.rpc.IntegerValue.value)
}
inline ::uint64_t IntegerValue::_internal_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.value_;
}
inline void IntegerValue::_internal_set_value(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_ = value;
}

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

// StringValue

// string value = 1;
inline void StringValue::clear_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_.ClearToEmpty();
}
inline const std::string& StringValue::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.StringValue.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void StringValue::set_value(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.StringValue.value)
}
inline std::string* StringValue::mutable_value() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:tari.rpc.StringValue.value)
  return _s;
}
inline const std::string& StringValue::_internal_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.value_.Get();
}
inline void StringValue::_internal_set_value(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_.Set(value, GetArena());
}
inline std::string* StringValue::_internal_mutable_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.value_.Mutable( GetArena());
}
inline std::string* StringValue::release_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.StringValue.value)
  return _impl_.value_.Release();
}
inline void StringValue::set_allocated_value(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.value_.IsDefault()) {
          _impl_.value_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.StringValue.value)
}

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

// BlockGroupRequest

// uint64 from_tip = 1;
inline void BlockGroupRequest::clear_from_tip() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_tip_ = ::uint64_t{0u};
}
inline ::uint64_t BlockGroupRequest::from_tip() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupRequest.from_tip)
  return _internal_from_tip();
}
inline void BlockGroupRequest::set_from_tip(::uint64_t value) {
  _internal_set_from_tip(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupRequest.from_tip)
}
inline ::uint64_t BlockGroupRequest::_internal_from_tip() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.from_tip_;
}
inline void BlockGroupRequest::_internal_set_from_tip(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_tip_ = value;
}

// uint64 start_height = 2;
inline void BlockGroupRequest::clear_start_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_height_ = ::uint64_t{0u};
}
inline ::uint64_t BlockGroupRequest::start_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupRequest.start_height)
  return _internal_start_height();
}
inline void BlockGroupRequest::set_start_height(::uint64_t value) {
  _internal_set_start_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupRequest.start_height)
}
inline ::uint64_t BlockGroupRequest::_internal_start_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.start_height_;
}
inline void BlockGroupRequest::_internal_set_start_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_height_ = value;
}

// uint64 end_height = 3;
inline void BlockGroupRequest::clear_end_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.end_height_ = ::uint64_t{0u};
}
inline ::uint64_t BlockGroupRequest::end_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupRequest.end_height)
  return _internal_end_height();
}
inline void BlockGroupRequest::set_end_height(::uint64_t value) {
  _internal_set_end_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupRequest.end_height)
}
inline ::uint64_t BlockGroupRequest::_internal_end_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.end_height_;
}
inline void BlockGroupRequest::_internal_set_end_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.end_height_ = value;
}

// .tari.rpc.CalcType calc_type = 4;
inline void BlockGroupRequest::clear_calc_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.calc_type_ = 0;
}
inline ::tari::rpc::CalcType BlockGroupRequest::calc_type() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupRequest.calc_type)
  return _internal_calc_type();
}
inline void BlockGroupRequest::set_calc_type(::tari::rpc::CalcType value) {
  _internal_set_calc_type(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupRequest.calc_type)
}
inline ::tari::rpc::CalcType BlockGroupRequest::_internal_calc_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::CalcType>(_impl_.calc_type_);
}
inline void BlockGroupRequest::_internal_set_calc_type(::tari::rpc::CalcType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.calc_type_ = value;
}

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

// BlockGroupResponse

// repeated double value = 1;
inline int BlockGroupResponse::_internal_value_size() const {
  return _internal_value().size();
}
inline int BlockGroupResponse::value_size() const {
  return _internal_value_size();
}
inline void BlockGroupResponse::clear_value() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.value_.Clear();
}
inline double BlockGroupResponse::value(int index) const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupResponse.value)
  return _internal_value().Get(index);
}
inline void BlockGroupResponse::set_value(int index, double value) {
  _internal_mutable_value()->Set(index, value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupResponse.value)
}
inline void BlockGroupResponse::add_value(double value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_value()->Add(value);
  // @@protoc_insertion_point(field_add:tari.rpc.BlockGroupResponse.value)
}
inline const ::google::protobuf::RepeatedField<double>& BlockGroupResponse::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.BlockGroupResponse.value)
  return _internal_value();
}
inline ::google::protobuf::RepeatedField<double>* BlockGroupResponse::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.BlockGroupResponse.value)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_value();
}
inline const ::google::protobuf::RepeatedField<double>&
BlockGroupResponse::_internal_value() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.value_;
}
inline ::google::protobuf::RepeatedField<double>* BlockGroupResponse::_internal_mutable_value() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.value_;
}

// .tari.rpc.CalcType calc_type = 2;
inline void BlockGroupResponse::clear_calc_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.calc_type_ = 0;
}
inline ::tari::rpc::CalcType BlockGroupResponse::calc_type() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockGroupResponse.calc_type)
  return _internal_calc_type();
}
inline void BlockGroupResponse::set_calc_type(::tari::rpc::CalcType value) {
  _internal_set_calc_type(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockGroupResponse.calc_type)
}
inline ::tari::rpc::CalcType BlockGroupResponse::_internal_calc_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::CalcType>(_impl_.calc_type_);
}
inline void BlockGroupResponse::_internal_set_calc_type(::tari::rpc::CalcType value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.calc_type_ = value;
}

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

// HeightRequest

// uint64 from_tip = 1;
inline void HeightRequest::clear_from_tip() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_tip_ = ::uint64_t{0u};
}
inline ::uint64_t HeightRequest::from_tip() const {
  // @@protoc_insertion_point(field_get:tari.rpc.HeightRequest.from_tip)
  return _internal_from_tip();
}
inline void HeightRequest::set_from_tip(::uint64_t value) {
  _internal_set_from_tip(value);
  // @@protoc_insertion_point(field_set:tari.rpc.HeightRequest.from_tip)
}
inline ::uint64_t HeightRequest::_internal_from_tip() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.from_tip_;
}
inline void HeightRequest::_internal_set_from_tip(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_tip_ = value;
}

// uint64 start_height = 2;
inline void HeightRequest::clear_start_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_height_ = ::uint64_t{0u};
}
inline ::uint64_t HeightRequest::start_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.HeightRequest.start_height)
  return _internal_start_height();
}
inline void HeightRequest::set_start_height(::uint64_t value) {
  _internal_set_start_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.HeightRequest.start_height)
}
inline ::uint64_t HeightRequest::_internal_start_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.start_height_;
}
inline void HeightRequest::_internal_set_start_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_height_ = value;
}

// uint64 end_height = 3;
inline void HeightRequest::clear_end_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.end_height_ = ::uint64_t{0u};
}
inline ::uint64_t HeightRequest::end_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.HeightRequest.end_height)
  return _internal_end_height();
}
inline void HeightRequest::set_end_height(::uint64_t value) {
  _internal_set_end_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.HeightRequest.end_height)
}
inline ::uint64_t HeightRequest::_internal_end_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.end_height_;
}
inline void HeightRequest::_internal_set_end_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.end_height_ = value;
}

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

// BlockTimingResponse

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

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

// double avg = 3;
inline void BlockTimingResponse::clear_avg() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.avg_ = 0;
}
inline double BlockTimingResponse::avg() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockTimingResponse.avg)
  return _internal_avg();
}
inline void BlockTimingResponse::set_avg(double value) {
  _internal_set_avg(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockTimingResponse.avg)
}
inline double BlockTimingResponse::_internal_avg() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.avg_;
}
inline void BlockTimingResponse::_internal_set_avg(double value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.avg_ = value;
}

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

// GetHeaderByHashRequest

// bytes hash = 1;
inline void GetHeaderByHashRequest::clear_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.ClearToEmpty();
}
inline const std::string& GetHeaderByHashRequest::hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetHeaderByHashRequest.hash)
  return _internal_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetHeaderByHashRequest::set_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetHeaderByHashRequest.hash)
}
inline std::string* GetHeaderByHashRequest::mutable_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetHeaderByHashRequest.hash)
  return _s;
}
inline const std::string& GetHeaderByHashRequest::_internal_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.hash_.Get();
}
inline void GetHeaderByHashRequest::_internal_set_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.Set(value, GetArena());
}
inline std::string* GetHeaderByHashRequest::_internal_mutable_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.hash_.Mutable( GetArena());
}
inline std::string* GetHeaderByHashRequest::release_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetHeaderByHashRequest.hash)
  return _impl_.hash_.Release();
}
inline void GetHeaderByHashRequest::set_allocated_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.hash_.IsDefault()) {
          _impl_.hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetHeaderByHashRequest.hash)
}

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

// BlockHeaderResponse

// .tari.rpc.BlockHeader header = 1;
inline bool BlockHeaderResponse::has_header() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.header_ != nullptr);
  return value;
}
inline const ::tari::rpc::BlockHeader& BlockHeaderResponse::_internal_header() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::BlockHeader* p = _impl_.header_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::BlockHeader&>(::tari::rpc::_BlockHeader_default_instance_);
}
inline const ::tari::rpc::BlockHeader& BlockHeaderResponse::header() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeaderResponse.header)
  return _internal_header();
}
inline void BlockHeaderResponse::unsafe_arena_set_allocated_header(::tari::rpc::BlockHeader* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.header_);
  }
  _impl_.header_ = reinterpret_cast<::tari::rpc::BlockHeader*>(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.BlockHeaderResponse.header)
}
inline ::tari::rpc::BlockHeader* BlockHeaderResponse::release_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::BlockHeader* released = _impl_.header_;
  _impl_.header_ = 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::BlockHeader* BlockHeaderResponse::unsafe_arena_release_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.BlockHeaderResponse.header)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::BlockHeader* temp = _impl_.header_;
  _impl_.header_ = nullptr;
  return temp;
}
inline ::tari::rpc::BlockHeader* BlockHeaderResponse::_internal_mutable_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.header_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::BlockHeader>(GetArena());
    _impl_.header_ = reinterpret_cast<::tari::rpc::BlockHeader*>(p);
  }
  return _impl_.header_;
}
inline ::tari::rpc::BlockHeader* BlockHeaderResponse::mutable_header() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::BlockHeader* _msg = _internal_mutable_header();
  // @@protoc_insertion_point(field_mutable:tari.rpc.BlockHeaderResponse.header)
  return _msg;
}
inline void BlockHeaderResponse::set_allocated_header(::tari::rpc::BlockHeader* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.header_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.header_ = reinterpret_cast<::tari::rpc::BlockHeader*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.BlockHeaderResponse.header)
}

// uint64 confirmations = 2;
inline void BlockHeaderResponse::clear_confirmations() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.confirmations_ = ::uint64_t{0u};
}
inline ::uint64_t BlockHeaderResponse::confirmations() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeaderResponse.confirmations)
  return _internal_confirmations();
}
inline void BlockHeaderResponse::set_confirmations(::uint64_t value) {
  _internal_set_confirmations(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockHeaderResponse.confirmations)
}
inline ::uint64_t BlockHeaderResponse::_internal_confirmations() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.confirmations_;
}
inline void BlockHeaderResponse::_internal_set_confirmations(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.confirmations_ = value;
}

// uint64 reward = 3;
inline void BlockHeaderResponse::clear_reward() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reward_ = ::uint64_t{0u};
}
inline ::uint64_t BlockHeaderResponse::reward() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeaderResponse.reward)
  return _internal_reward();
}
inline void BlockHeaderResponse::set_reward(::uint64_t value) {
  _internal_set_reward(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockHeaderResponse.reward)
}
inline ::uint64_t BlockHeaderResponse::_internal_reward() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.reward_;
}
inline void BlockHeaderResponse::_internal_set_reward(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reward_ = value;
}

// uint64 difficulty = 4;
inline void BlockHeaderResponse::clear_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t BlockHeaderResponse::difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeaderResponse.difficulty)
  return _internal_difficulty();
}
inline void BlockHeaderResponse::set_difficulty(::uint64_t value) {
  _internal_set_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockHeaderResponse.difficulty)
}
inline ::uint64_t BlockHeaderResponse::_internal_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.difficulty_;
}
inline void BlockHeaderResponse::_internal_set_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.difficulty_ = value;
}

// uint32 num_transactions = 5;
inline void BlockHeaderResponse::clear_num_transactions() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_transactions_ = 0u;
}
inline ::uint32_t BlockHeaderResponse::num_transactions() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockHeaderResponse.num_transactions)
  return _internal_num_transactions();
}
inline void BlockHeaderResponse::set_num_transactions(::uint32_t value) {
  _internal_set_num_transactions(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockHeaderResponse.num_transactions)
}
inline ::uint32_t BlockHeaderResponse::_internal_num_transactions() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.num_transactions_;
}
inline void BlockHeaderResponse::_internal_set_num_transactions(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_transactions_ = value;
}

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

// ListHeadersRequest

// uint64 from_height = 1;
inline void ListHeadersRequest::clear_from_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_height_ = ::uint64_t{0u};
}
inline ::uint64_t ListHeadersRequest::from_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListHeadersRequest.from_height)
  return _internal_from_height();
}
inline void ListHeadersRequest::set_from_height(::uint64_t value) {
  _internal_set_from_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListHeadersRequest.from_height)
}
inline ::uint64_t ListHeadersRequest::_internal_from_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.from_height_;
}
inline void ListHeadersRequest::_internal_set_from_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.from_height_ = value;
}

// uint64 num_headers = 2;
inline void ListHeadersRequest::clear_num_headers() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_headers_ = ::uint64_t{0u};
}
inline ::uint64_t ListHeadersRequest::num_headers() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListHeadersRequest.num_headers)
  return _internal_num_headers();
}
inline void ListHeadersRequest::set_num_headers(::uint64_t value) {
  _internal_set_num_headers(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListHeadersRequest.num_headers)
}
inline ::uint64_t ListHeadersRequest::_internal_num_headers() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.num_headers_;
}
inline void ListHeadersRequest::_internal_set_num_headers(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_headers_ = value;
}

// .tari.rpc.Sorting sorting = 3;
inline void ListHeadersRequest::clear_sorting() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sorting_ = 0;
}
inline ::tari::rpc::Sorting ListHeadersRequest::sorting() const {
  // @@protoc_insertion_point(field_get:tari.rpc.ListHeadersRequest.sorting)
  return _internal_sorting();
}
inline void ListHeadersRequest::set_sorting(::tari::rpc::Sorting value) {
  _internal_set_sorting(value);
  // @@protoc_insertion_point(field_set:tari.rpc.ListHeadersRequest.sorting)
}
inline ::tari::rpc::Sorting ListHeadersRequest::_internal_sorting() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::Sorting>(_impl_.sorting_);
}
inline void ListHeadersRequest::_internal_set_sorting(::tari::rpc::Sorting value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sorting_ = value;
}

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

// GetBlocksRequest

// repeated uint64 heights = 1;
inline int GetBlocksRequest::_internal_heights_size() const {
  return _internal_heights().size();
}
inline int GetBlocksRequest::heights_size() const {
  return _internal_heights_size();
}
inline void GetBlocksRequest::clear_heights() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.heights_.Clear();
}
inline ::uint64_t GetBlocksRequest::heights(int index) const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetBlocksRequest.heights)
  return _internal_heights().Get(index);
}
inline void GetBlocksRequest::set_heights(int index, ::uint64_t value) {
  _internal_mutable_heights()->Set(index, value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetBlocksRequest.heights)
}
inline void GetBlocksRequest::add_heights(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_heights()->Add(value);
  // @@protoc_insertion_point(field_add:tari.rpc.GetBlocksRequest.heights)
}
inline const ::google::protobuf::RepeatedField<::uint64_t>& GetBlocksRequest::heights() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetBlocksRequest.heights)
  return _internal_heights();
}
inline ::google::protobuf::RepeatedField<::uint64_t>* GetBlocksRequest::mutable_heights()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetBlocksRequest.heights)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_heights();
}
inline const ::google::protobuf::RepeatedField<::uint64_t>&
GetBlocksRequest::_internal_heights() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.heights_;
}
inline ::google::protobuf::RepeatedField<::uint64_t>* GetBlocksRequest::_internal_mutable_heights() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.heights_;
}

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

// GetBlocksResponse

// repeated .tari.rpc.HistoricalBlock blocks = 1;
inline int GetBlocksResponse::_internal_blocks_size() const {
  return _internal_blocks().size();
}
inline int GetBlocksResponse::blocks_size() const {
  return _internal_blocks_size();
}
inline ::tari::rpc::HistoricalBlock* GetBlocksResponse::mutable_blocks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetBlocksResponse.blocks)
  return _internal_mutable_blocks()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>* GetBlocksResponse::mutable_blocks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetBlocksResponse.blocks)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_blocks();
}
inline const ::tari::rpc::HistoricalBlock& GetBlocksResponse::blocks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetBlocksResponse.blocks)
  return _internal_blocks().Get(index);
}
inline ::tari::rpc::HistoricalBlock* GetBlocksResponse::add_blocks() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::HistoricalBlock* _add = _internal_mutable_blocks()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.GetBlocksResponse.blocks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>& GetBlocksResponse::blocks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetBlocksResponse.blocks)
  return _internal_blocks();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>&
GetBlocksResponse::_internal_blocks() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.blocks_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::HistoricalBlock>*
GetBlocksResponse::_internal_mutable_blocks() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.blocks_;
}

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

// MetaData

// uint64 best_block_height = 1;
inline void MetaData::clear_best_block_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_height_ = ::uint64_t{0u};
}
inline ::uint64_t MetaData::best_block_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MetaData.best_block_height)
  return _internal_best_block_height();
}
inline void MetaData::set_best_block_height(::uint64_t value) {
  _internal_set_best_block_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MetaData.best_block_height)
}
inline ::uint64_t MetaData::_internal_best_block_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.best_block_height_;
}
inline void MetaData::_internal_set_best_block_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_height_ = value;
}

// bytes best_block_hash = 2;
inline void MetaData::clear_best_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_hash_.ClearToEmpty();
}
inline const std::string& MetaData::best_block_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.MetaData.best_block_hash)
  return _internal_best_block_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void MetaData::set_best_block_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.MetaData.best_block_hash)
}
inline std::string* MetaData::mutable_best_block_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_best_block_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.MetaData.best_block_hash)
  return _s;
}
inline const std::string& MetaData::_internal_best_block_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.best_block_hash_.Get();
}
inline void MetaData::_internal_set_best_block_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_hash_.Set(value, GetArena());
}
inline std::string* MetaData::_internal_mutable_best_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.best_block_hash_.Mutable( GetArena());
}
inline std::string* MetaData::release_best_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.MetaData.best_block_hash)
  return _impl_.best_block_hash_.Release();
}
inline void MetaData::set_allocated_best_block_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.best_block_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.best_block_hash_.IsDefault()) {
          _impl_.best_block_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.MetaData.best_block_hash)
}

// uint64 pruned_height = 6;
inline void MetaData::clear_pruned_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pruned_height_ = ::uint64_t{0u};
}
inline ::uint64_t MetaData::pruned_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MetaData.pruned_height)
  return _internal_pruned_height();
}
inline void MetaData::set_pruned_height(::uint64_t value) {
  _internal_set_pruned_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MetaData.pruned_height)
}
inline ::uint64_t MetaData::_internal_pruned_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.pruned_height_;
}
inline void MetaData::_internal_set_pruned_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.pruned_height_ = value;
}

// bytes accumulated_difficulty = 5;
inline void MetaData::clear_accumulated_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.accumulated_difficulty_.ClearToEmpty();
}
inline const std::string& MetaData::accumulated_difficulty() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.MetaData.accumulated_difficulty)
  return _internal_accumulated_difficulty();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void MetaData::set_accumulated_difficulty(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.accumulated_difficulty_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.MetaData.accumulated_difficulty)
}
inline std::string* MetaData::mutable_accumulated_difficulty() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_accumulated_difficulty();
  // @@protoc_insertion_point(field_mutable:tari.rpc.MetaData.accumulated_difficulty)
  return _s;
}
inline const std::string& MetaData::_internal_accumulated_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.accumulated_difficulty_.Get();
}
inline void MetaData::_internal_set_accumulated_difficulty(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.accumulated_difficulty_.Set(value, GetArena());
}
inline std::string* MetaData::_internal_mutable_accumulated_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.accumulated_difficulty_.Mutable( GetArena());
}
inline std::string* MetaData::release_accumulated_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.MetaData.accumulated_difficulty)
  return _impl_.accumulated_difficulty_.Release();
}
inline void MetaData::set_allocated_accumulated_difficulty(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.accumulated_difficulty_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.accumulated_difficulty_.IsDefault()) {
          _impl_.accumulated_difficulty_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.MetaData.accumulated_difficulty)
}

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

// SyncInfoResponse

// uint64 tip_height = 1;
inline void SyncInfoResponse::clear_tip_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tip_height_ = ::uint64_t{0u};
}
inline ::uint64_t SyncInfoResponse::tip_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncInfoResponse.tip_height)
  return _internal_tip_height();
}
inline void SyncInfoResponse::set_tip_height(::uint64_t value) {
  _internal_set_tip_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncInfoResponse.tip_height)
}
inline ::uint64_t SyncInfoResponse::_internal_tip_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.tip_height_;
}
inline void SyncInfoResponse::_internal_set_tip_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tip_height_ = value;
}

// uint64 local_height = 2;
inline void SyncInfoResponse::clear_local_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.local_height_ = ::uint64_t{0u};
}
inline ::uint64_t SyncInfoResponse::local_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncInfoResponse.local_height)
  return _internal_local_height();
}
inline void SyncInfoResponse::set_local_height(::uint64_t value) {
  _internal_set_local_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncInfoResponse.local_height)
}
inline ::uint64_t SyncInfoResponse::_internal_local_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.local_height_;
}
inline void SyncInfoResponse::_internal_set_local_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.local_height_ = value;
}

// repeated bytes peer_node_id = 3;
inline int SyncInfoResponse::_internal_peer_node_id_size() const {
  return _internal_peer_node_id().size();
}
inline int SyncInfoResponse::peer_node_id_size() const {
  return _internal_peer_node_id_size();
}
inline void SyncInfoResponse::clear_peer_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.peer_node_id_.Clear();
}
inline std::string* SyncInfoResponse::add_peer_node_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_peer_node_id()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.SyncInfoResponse.peer_node_id)
  return _s;
}
inline const std::string& SyncInfoResponse::peer_node_id(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncInfoResponse.peer_node_id)
  return _internal_peer_node_id().Get(index);
}
inline std::string* SyncInfoResponse::mutable_peer_node_id(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.SyncInfoResponse.peer_node_id)
  return _internal_mutable_peer_node_id()->Mutable(index);
}
inline void SyncInfoResponse::set_peer_node_id(int index, const std::string& value) {
  _internal_mutable_peer_node_id()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::set_peer_node_id(int index, std::string&& value) {
  _internal_mutable_peer_node_id()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::set_peer_node_id(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_peer_node_id()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::set_peer_node_id(int index, const void* value,
                              std::size_t size) {
  _internal_mutable_peer_node_id()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::set_peer_node_id(int index, absl::string_view value) {
  _internal_mutable_peer_node_id()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::add_peer_node_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_peer_node_id()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::add_peer_node_id(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_peer_node_id()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::add_peer_node_id(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_peer_node_id()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::add_peer_node_id(const void* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_peer_node_id()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline void SyncInfoResponse::add_peer_node_id(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_peer_node_id()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.SyncInfoResponse.peer_node_id)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SyncInfoResponse::peer_node_id() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.SyncInfoResponse.peer_node_id)
  return _internal_peer_node_id();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
SyncInfoResponse::mutable_peer_node_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.SyncInfoResponse.peer_node_id)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_peer_node_id();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SyncInfoResponse::_internal_peer_node_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.peer_node_id_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
SyncInfoResponse::_internal_mutable_peer_node_id() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.peer_node_id_;
}

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

// SyncProgressResponse

// uint64 tip_height = 1;
inline void SyncProgressResponse::clear_tip_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tip_height_ = ::uint64_t{0u};
}
inline ::uint64_t SyncProgressResponse::tip_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncProgressResponse.tip_height)
  return _internal_tip_height();
}
inline void SyncProgressResponse::set_tip_height(::uint64_t value) {
  _internal_set_tip_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncProgressResponse.tip_height)
}
inline ::uint64_t SyncProgressResponse::_internal_tip_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.tip_height_;
}
inline void SyncProgressResponse::_internal_set_tip_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tip_height_ = value;
}

// uint64 local_height = 2;
inline void SyncProgressResponse::clear_local_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.local_height_ = ::uint64_t{0u};
}
inline ::uint64_t SyncProgressResponse::local_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncProgressResponse.local_height)
  return _internal_local_height();
}
inline void SyncProgressResponse::set_local_height(::uint64_t value) {
  _internal_set_local_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncProgressResponse.local_height)
}
inline ::uint64_t SyncProgressResponse::_internal_local_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.local_height_;
}
inline void SyncProgressResponse::_internal_set_local_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.local_height_ = value;
}

// .tari.rpc.SyncState state = 3;
inline void SyncProgressResponse::clear_state() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.state_ = 0;
}
inline ::tari::rpc::SyncState SyncProgressResponse::state() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SyncProgressResponse.state)
  return _internal_state();
}
inline void SyncProgressResponse::set_state(::tari::rpc::SyncState value) {
  _internal_set_state(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SyncProgressResponse.state)
}
inline ::tari::rpc::SyncState SyncProgressResponse::_internal_state() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::SyncState>(_impl_.state_);
}
inline void SyncProgressResponse::_internal_set_state(::tari::rpc::SyncState value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.state_ = value;
}

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

// GetNewBlockResult

// bytes block_hash = 1;
inline void GetNewBlockResult::clear_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.ClearToEmpty();
}
inline const std::string& GetNewBlockResult::block_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockResult.block_hash)
  return _internal_block_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockResult::set_block_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockResult.block_hash)
}
inline std::string* GetNewBlockResult::mutable_block_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_block_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockResult.block_hash)
  return _s;
}
inline const std::string& GetNewBlockResult::_internal_block_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Get();
}
inline void GetNewBlockResult::_internal_set_block_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.Set(value, GetArena());
}
inline std::string* GetNewBlockResult::_internal_mutable_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Mutable( GetArena());
}
inline std::string* GetNewBlockResult::release_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockResult.block_hash)
  return _impl_.block_hash_.Release();
}
inline void GetNewBlockResult::set_allocated_block_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.block_hash_.IsDefault()) {
          _impl_.block_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockResult.block_hash)
}

// .tari.rpc.Block block = 2;
inline bool GetNewBlockResult::has_block() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.block_ != nullptr);
  return value;
}
inline const ::tari::rpc::Block& GetNewBlockResult::_internal_block() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Block* p = _impl_.block_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Block&>(::tari::rpc::_Block_default_instance_);
}
inline const ::tari::rpc::Block& GetNewBlockResult::block() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockResult.block)
  return _internal_block();
}
inline void GetNewBlockResult::unsafe_arena_set_allocated_block(::tari::rpc::Block* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.block_);
  }
  _impl_.block_ = reinterpret_cast<::tari::rpc::Block*>(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.GetNewBlockResult.block)
}
inline ::tari::rpc::Block* GetNewBlockResult::release_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Block* released = _impl_.block_;
  _impl_.block_ = 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::Block* GetNewBlockResult::unsafe_arena_release_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockResult.block)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Block* temp = _impl_.block_;
  _impl_.block_ = nullptr;
  return temp;
}
inline ::tari::rpc::Block* GetNewBlockResult::_internal_mutable_block() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.block_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Block>(GetArena());
    _impl_.block_ = reinterpret_cast<::tari::rpc::Block*>(p);
  }
  return _impl_.block_;
}
inline ::tari::rpc::Block* GetNewBlockResult::mutable_block() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Block* _msg = _internal_mutable_block();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockResult.block)
  return _msg;
}
inline void GetNewBlockResult::set_allocated_block(::tari::rpc::Block* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.block_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.block_ = reinterpret_cast<::tari::rpc::Block*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockResult.block)
}

// bytes merge_mining_hash = 3;
inline void GetNewBlockResult::clear_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.ClearToEmpty();
}
inline const std::string& GetNewBlockResult::merge_mining_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockResult.merge_mining_hash)
  return _internal_merge_mining_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockResult::set_merge_mining_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockResult.merge_mining_hash)
}
inline std::string* GetNewBlockResult::mutable_merge_mining_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_merge_mining_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockResult.merge_mining_hash)
  return _s;
}
inline const std::string& GetNewBlockResult::_internal_merge_mining_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.merge_mining_hash_.Get();
}
inline void GetNewBlockResult::_internal_set_merge_mining_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.Set(value, GetArena());
}
inline std::string* GetNewBlockResult::_internal_mutable_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.merge_mining_hash_.Mutable( GetArena());
}
inline std::string* GetNewBlockResult::release_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockResult.merge_mining_hash)
  return _impl_.merge_mining_hash_.Release();
}
inline void GetNewBlockResult::set_allocated_merge_mining_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.merge_mining_hash_.IsDefault()) {
          _impl_.merge_mining_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockResult.merge_mining_hash)
}

// bytes tari_unique_id = 4;
inline void GetNewBlockResult::clear_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.ClearToEmpty();
}
inline const std::string& GetNewBlockResult::tari_unique_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockResult.tari_unique_id)
  return _internal_tari_unique_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockResult::set_tari_unique_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockResult.tari_unique_id)
}
inline std::string* GetNewBlockResult::mutable_tari_unique_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_tari_unique_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockResult.tari_unique_id)
  return _s;
}
inline const std::string& GetNewBlockResult::_internal_tari_unique_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.tari_unique_id_.Get();
}
inline void GetNewBlockResult::_internal_set_tari_unique_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.Set(value, GetArena());
}
inline std::string* GetNewBlockResult::_internal_mutable_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.tari_unique_id_.Mutable( GetArena());
}
inline std::string* GetNewBlockResult::release_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockResult.tari_unique_id)
  return _impl_.tari_unique_id_.Release();
}
inline void GetNewBlockResult::set_allocated_tari_unique_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.tari_unique_id_.IsDefault()) {
          _impl_.tari_unique_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockResult.tari_unique_id)
}

// .tari.rpc.MinerData miner_data = 5;
inline bool GetNewBlockResult::has_miner_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.miner_data_ != nullptr);
  return value;
}
inline void GetNewBlockResult::clear_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.miner_data_ != nullptr) _impl_.miner_data_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::tari::rpc::MinerData& GetNewBlockResult::_internal_miner_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::MinerData* p = _impl_.miner_data_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::MinerData&>(::tari::rpc::_MinerData_default_instance_);
}
inline const ::tari::rpc::MinerData& GetNewBlockResult::miner_data() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockResult.miner_data)
  return _internal_miner_data();
}
inline void GetNewBlockResult::unsafe_arena_set_allocated_miner_data(::tari::rpc::MinerData* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.miner_data_);
  }
  _impl_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(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.GetNewBlockResult.miner_data)
}
inline ::tari::rpc::MinerData* GetNewBlockResult::release_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::MinerData* released = _impl_.miner_data_;
  _impl_.miner_data_ = 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::MinerData* GetNewBlockResult::unsafe_arena_release_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockResult.miner_data)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::MinerData* temp = _impl_.miner_data_;
  _impl_.miner_data_ = nullptr;
  return temp;
}
inline ::tari::rpc::MinerData* GetNewBlockResult::_internal_mutable_miner_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.miner_data_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::MinerData>(GetArena());
    _impl_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(p);
  }
  return _impl_.miner_data_;
}
inline ::tari::rpc::MinerData* GetNewBlockResult::mutable_miner_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::MinerData* _msg = _internal_mutable_miner_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockResult.miner_data)
  return _msg;
}
inline void GetNewBlockResult::set_allocated_miner_data(::tari::rpc::MinerData* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.miner_data_);
  }

  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_.miner_data_ = reinterpret_cast<::tari::rpc::MinerData*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockResult.miner_data)
}

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

// GetNewBlockBlobResult

// bytes block_hash = 1;
inline void GetNewBlockBlobResult::clear_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::block_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.block_hash)
  return _internal_block_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_block_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.block_hash)
}
inline std::string* GetNewBlockBlobResult::mutable_block_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_block_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.block_hash)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_block_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_block_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.block_hash_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.block_hash)
  return _impl_.block_hash_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_block_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.block_hash_.IsDefault()) {
          _impl_.block_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.block_hash)
}

// bytes header = 2;
inline void GetNewBlockBlobResult::clear_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::header() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.header)
  return _internal_header();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_header(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.header)
}
inline std::string* GetNewBlockBlobResult::mutable_header() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_header();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.header)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_header() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.header_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_header(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.header_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_header() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.header)
  return _impl_.header_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_header(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.header_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.header_.IsDefault()) {
          _impl_.header_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.header)
}

// bytes block_body = 3;
inline void GetNewBlockBlobResult::clear_block_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_body_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::block_body() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.block_body)
  return _internal_block_body();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_block_body(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_body_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.block_body)
}
inline std::string* GetNewBlockBlobResult::mutable_block_body() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_block_body();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.block_body)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_block_body() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.block_body_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_block_body(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_body_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_block_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.block_body_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_block_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.block_body)
  return _impl_.block_body_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_block_body(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.block_body_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.block_body_.IsDefault()) {
          _impl_.block_body_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.block_body)
}

// bytes merge_mining_hash = 4;
inline void GetNewBlockBlobResult::clear_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::merge_mining_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.merge_mining_hash)
  return _internal_merge_mining_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_merge_mining_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.merge_mining_hash)
}
inline std::string* GetNewBlockBlobResult::mutable_merge_mining_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_merge_mining_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.merge_mining_hash)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_merge_mining_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.merge_mining_hash_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_merge_mining_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.merge_mining_hash_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_merge_mining_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.merge_mining_hash)
  return _impl_.merge_mining_hash_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_merge_mining_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.merge_mining_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.merge_mining_hash_.IsDefault()) {
          _impl_.merge_mining_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.merge_mining_hash)
}

// bytes utxo_mr = 5;
inline void GetNewBlockBlobResult::clear_utxo_mr() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_mr_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::utxo_mr() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.utxo_mr)
  return _internal_utxo_mr();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_utxo_mr(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_mr_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.utxo_mr)
}
inline std::string* GetNewBlockBlobResult::mutable_utxo_mr() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_utxo_mr();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.utxo_mr)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_utxo_mr() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.utxo_mr_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_utxo_mr(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_mr_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_utxo_mr() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.utxo_mr_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_utxo_mr() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.utxo_mr)
  return _impl_.utxo_mr_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_utxo_mr(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_mr_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.utxo_mr_.IsDefault()) {
          _impl_.utxo_mr_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.utxo_mr)
}

// bytes tari_unique_id = 6;
inline void GetNewBlockBlobResult::clear_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.ClearToEmpty();
}
inline const std::string& GetNewBlockBlobResult::tari_unique_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetNewBlockBlobResult.tari_unique_id)
  return _internal_tari_unique_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetNewBlockBlobResult::set_tari_unique_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetNewBlockBlobResult.tari_unique_id)
}
inline std::string* GetNewBlockBlobResult::mutable_tari_unique_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_tari_unique_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetNewBlockBlobResult.tari_unique_id)
  return _s;
}
inline const std::string& GetNewBlockBlobResult::_internal_tari_unique_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.tari_unique_id_.Get();
}
inline void GetNewBlockBlobResult::_internal_set_tari_unique_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.Set(value, GetArena());
}
inline std::string* GetNewBlockBlobResult::_internal_mutable_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.tari_unique_id_.Mutable( GetArena());
}
inline std::string* GetNewBlockBlobResult::release_tari_unique_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetNewBlockBlobResult.tari_unique_id)
  return _impl_.tari_unique_id_.Release();
}
inline void GetNewBlockBlobResult::set_allocated_tari_unique_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.tari_unique_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.tari_unique_id_.IsDefault()) {
          _impl_.tari_unique_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetNewBlockBlobResult.tari_unique_id)
}

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

// MinerData

// .tari.rpc.PowAlgo algo = 1;
inline bool MinerData::has_algo() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.algo_ != nullptr);
  return value;
}
inline const ::tari::rpc::PowAlgo& MinerData::_internal_algo() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::PowAlgo* p = _impl_.algo_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::PowAlgo&>(::tari::rpc::_PowAlgo_default_instance_);
}
inline const ::tari::rpc::PowAlgo& MinerData::algo() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.MinerData.algo)
  return _internal_algo();
}
inline void MinerData::unsafe_arena_set_allocated_algo(::tari::rpc::PowAlgo* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }
  _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(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.MinerData.algo)
}
inline ::tari::rpc::PowAlgo* MinerData::release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* released = _impl_.algo_;
  _impl_.algo_ = 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::PowAlgo* MinerData::unsafe_arena_release_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.MinerData.algo)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::PowAlgo* temp = _impl_.algo_;
  _impl_.algo_ = nullptr;
  return temp;
}
inline ::tari::rpc::PowAlgo* MinerData::_internal_mutable_algo() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.algo_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::PowAlgo>(GetArena());
    _impl_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(p);
  }
  return _impl_.algo_;
}
inline ::tari::rpc::PowAlgo* MinerData::mutable_algo() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::PowAlgo* _msg = _internal_mutable_algo();
  // @@protoc_insertion_point(field_mutable:tari.rpc.MinerData.algo)
  return _msg;
}
inline void MinerData::set_allocated_algo(::tari::rpc::PowAlgo* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.algo_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.algo_ = reinterpret_cast<::tari::rpc::PowAlgo*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.MinerData.algo)
}

// uint64 target_difficulty = 2;
inline void MinerData::clear_target_difficulty() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_difficulty_ = ::uint64_t{0u};
}
inline ::uint64_t MinerData::target_difficulty() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MinerData.target_difficulty)
  return _internal_target_difficulty();
}
inline void MinerData::set_target_difficulty(::uint64_t value) {
  _internal_set_target_difficulty(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MinerData.target_difficulty)
}
inline ::uint64_t MinerData::_internal_target_difficulty() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.target_difficulty_;
}
inline void MinerData::_internal_set_target_difficulty(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.target_difficulty_ = value;
}

// uint64 reward = 3;
inline void MinerData::clear_reward() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reward_ = ::uint64_t{0u};
}
inline ::uint64_t MinerData::reward() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MinerData.reward)
  return _internal_reward();
}
inline void MinerData::set_reward(::uint64_t value) {
  _internal_set_reward(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MinerData.reward)
}
inline ::uint64_t MinerData::_internal_reward() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.reward_;
}
inline void MinerData::_internal_set_reward(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reward_ = value;
}

// uint64 total_fees = 5;
inline void MinerData::clear_total_fees() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.total_fees_ = ::uint64_t{0u};
}
inline ::uint64_t MinerData::total_fees() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MinerData.total_fees)
  return _internal_total_fees();
}
inline void MinerData::set_total_fees(::uint64_t value) {
  _internal_set_total_fees(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MinerData.total_fees)
}
inline ::uint64_t MinerData::_internal_total_fees() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.total_fees_;
}
inline void MinerData::_internal_set_total_fees(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.total_fees_ = value;
}

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

// SearchKernelsRequest

// repeated .tari.rpc.Signature signatures = 1;
inline int SearchKernelsRequest::_internal_signatures_size() const {
  return _internal_signatures().size();
}
inline int SearchKernelsRequest::signatures_size() const {
  return _internal_signatures_size();
}
inline ::tari::rpc::Signature* SearchKernelsRequest::mutable_signatures(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.SearchKernelsRequest.signatures)
  return _internal_mutable_signatures()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>* SearchKernelsRequest::mutable_signatures()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.SearchKernelsRequest.signatures)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_signatures();
}
inline const ::tari::rpc::Signature& SearchKernelsRequest::signatures(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SearchKernelsRequest.signatures)
  return _internal_signatures().Get(index);
}
inline ::tari::rpc::Signature* SearchKernelsRequest::add_signatures() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::Signature* _add = _internal_mutable_signatures()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.SearchKernelsRequest.signatures)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>& SearchKernelsRequest::signatures() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.SearchKernelsRequest.signatures)
  return _internal_signatures();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>&
SearchKernelsRequest::_internal_signatures() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.signatures_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Signature>*
SearchKernelsRequest::_internal_mutable_signatures() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.signatures_;
}

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

// SearchUtxosRequest

// repeated bytes commitments = 1;
inline int SearchUtxosRequest::_internal_commitments_size() const {
  return _internal_commitments().size();
}
inline int SearchUtxosRequest::commitments_size() const {
  return _internal_commitments_size();
}
inline void SearchUtxosRequest::clear_commitments() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitments_.Clear();
}
inline std::string* SearchUtxosRequest::add_commitments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_commitments()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.SearchUtxosRequest.commitments)
  return _s;
}
inline const std::string& SearchUtxosRequest::commitments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SearchUtxosRequest.commitments)
  return _internal_commitments().Get(index);
}
inline std::string* SearchUtxosRequest::mutable_commitments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.SearchUtxosRequest.commitments)
  return _internal_mutable_commitments()->Mutable(index);
}
inline void SearchUtxosRequest::set_commitments(int index, const std::string& value) {
  _internal_mutable_commitments()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::set_commitments(int index, std::string&& value) {
  _internal_mutable_commitments()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::set_commitments(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_commitments()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::set_commitments(int index, const void* value,
                              std::size_t size) {
  _internal_mutable_commitments()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::set_commitments(int index, absl::string_view value) {
  _internal_mutable_commitments()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::add_commitments(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_commitments()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::add_commitments(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_commitments()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::add_commitments(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_commitments()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::add_commitments(const void* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_commitments()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.SearchUtxosRequest.commitments)
}
inline void SearchUtxosRequest::add_commitments(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_commitments()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.SearchUtxosRequest.commitments)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SearchUtxosRequest::commitments() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.SearchUtxosRequest.commitments)
  return _internal_commitments();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
SearchUtxosRequest::mutable_commitments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.SearchUtxosRequest.commitments)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_commitments();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
SearchUtxosRequest::_internal_commitments() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.commitments_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
SearchUtxosRequest::_internal_mutable_commitments() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.commitments_;
}

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

// FetchMatchingUtxosRequest

// repeated bytes hashes = 1;
inline int FetchMatchingUtxosRequest::_internal_hashes_size() const {
  return _internal_hashes().size();
}
inline int FetchMatchingUtxosRequest::hashes_size() const {
  return _internal_hashes_size();
}
inline void FetchMatchingUtxosRequest::clear_hashes() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hashes_.Clear();
}
inline std::string* FetchMatchingUtxosRequest::add_hashes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_hashes()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.FetchMatchingUtxosRequest.hashes)
  return _s;
}
inline const std::string& FetchMatchingUtxosRequest::hashes(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.FetchMatchingUtxosRequest.hashes)
  return _internal_hashes().Get(index);
}
inline std::string* FetchMatchingUtxosRequest::mutable_hashes(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.FetchMatchingUtxosRequest.hashes)
  return _internal_mutable_hashes()->Mutable(index);
}
inline void FetchMatchingUtxosRequest::set_hashes(int index, const std::string& value) {
  _internal_mutable_hashes()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::set_hashes(int index, std::string&& value) {
  _internal_mutable_hashes()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::set_hashes(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_hashes()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::set_hashes(int index, const void* value,
                              std::size_t size) {
  _internal_mutable_hashes()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::set_hashes(int index, absl::string_view value) {
  _internal_mutable_hashes()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::add_hashes(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_hashes()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::add_hashes(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_hashes()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::add_hashes(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_hashes()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::add_hashes(const void* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_hashes()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline void FetchMatchingUtxosRequest::add_hashes(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_hashes()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.FetchMatchingUtxosRequest.hashes)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
FetchMatchingUtxosRequest::hashes() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.FetchMatchingUtxosRequest.hashes)
  return _internal_hashes();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
FetchMatchingUtxosRequest::mutable_hashes() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.FetchMatchingUtxosRequest.hashes)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_hashes();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
FetchMatchingUtxosRequest::_internal_hashes() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.hashes_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
FetchMatchingUtxosRequest::_internal_mutable_hashes() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.hashes_;
}

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

// FetchMatchingUtxosResponse

// .tari.rpc.TransactionOutput output = 1;
inline bool FetchMatchingUtxosResponse::has_output() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.output_ != nullptr);
  return value;
}
inline const ::tari::rpc::TransactionOutput& FetchMatchingUtxosResponse::_internal_output() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::TransactionOutput* p = _impl_.output_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::TransactionOutput&>(::tari::rpc::_TransactionOutput_default_instance_);
}
inline const ::tari::rpc::TransactionOutput& FetchMatchingUtxosResponse::output() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.FetchMatchingUtxosResponse.output)
  return _internal_output();
}
inline void FetchMatchingUtxosResponse::unsafe_arena_set_allocated_output(::tari::rpc::TransactionOutput* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_);
  }
  _impl_.output_ = reinterpret_cast<::tari::rpc::TransactionOutput*>(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.FetchMatchingUtxosResponse.output)
}
inline ::tari::rpc::TransactionOutput* FetchMatchingUtxosResponse::release_output() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::TransactionOutput* released = _impl_.output_;
  _impl_.output_ = 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::TransactionOutput* FetchMatchingUtxosResponse::unsafe_arena_release_output() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.FetchMatchingUtxosResponse.output)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::TransactionOutput* temp = _impl_.output_;
  _impl_.output_ = nullptr;
  return temp;
}
inline ::tari::rpc::TransactionOutput* FetchMatchingUtxosResponse::_internal_mutable_output() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.output_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::TransactionOutput>(GetArena());
    _impl_.output_ = reinterpret_cast<::tari::rpc::TransactionOutput*>(p);
  }
  return _impl_.output_;
}
inline ::tari::rpc::TransactionOutput* FetchMatchingUtxosResponse::mutable_output() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::TransactionOutput* _msg = _internal_mutable_output();
  // @@protoc_insertion_point(field_mutable:tari.rpc.FetchMatchingUtxosResponse.output)
  return _msg;
}
inline void FetchMatchingUtxosResponse::set_allocated_output(::tari::rpc::TransactionOutput* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.output_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.output_ = reinterpret_cast<::tari::rpc::TransactionOutput*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.FetchMatchingUtxosResponse.output)
}

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

// GetPeersResponse

// .tari.rpc.Peer peer = 1;
inline bool GetPeersResponse::has_peer() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.peer_ != nullptr);
  return value;
}
inline const ::tari::rpc::Peer& GetPeersResponse::_internal_peer() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Peer* p = _impl_.peer_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Peer&>(::tari::rpc::_Peer_default_instance_);
}
inline const ::tari::rpc::Peer& GetPeersResponse::peer() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetPeersResponse.peer)
  return _internal_peer();
}
inline void GetPeersResponse::unsafe_arena_set_allocated_peer(::tari::rpc::Peer* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.peer_);
  }
  _impl_.peer_ = reinterpret_cast<::tari::rpc::Peer*>(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.GetPeersResponse.peer)
}
inline ::tari::rpc::Peer* GetPeersResponse::release_peer() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Peer* released = _impl_.peer_;
  _impl_.peer_ = 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::Peer* GetPeersResponse::unsafe_arena_release_peer() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetPeersResponse.peer)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Peer* temp = _impl_.peer_;
  _impl_.peer_ = nullptr;
  return temp;
}
inline ::tari::rpc::Peer* GetPeersResponse::_internal_mutable_peer() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.peer_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Peer>(GetArena());
    _impl_.peer_ = reinterpret_cast<::tari::rpc::Peer*>(p);
  }
  return _impl_.peer_;
}
inline ::tari::rpc::Peer* GetPeersResponse::mutable_peer() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Peer* _msg = _internal_mutable_peer();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetPeersResponse.peer)
  return _msg;
}
inline void GetPeersResponse::set_allocated_peer(::tari::rpc::Peer* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.peer_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.peer_ = reinterpret_cast<::tari::rpc::Peer*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetPeersResponse.peer)
}

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

// GetPeersRequest

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

// SubmitTransactionRequest

// .tari.rpc.Transaction transaction = 1;
inline bool SubmitTransactionRequest::has_transaction() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.transaction_ != nullptr);
  return value;
}
inline const ::tari::rpc::Transaction& SubmitTransactionRequest::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Transaction* p = _impl_.transaction_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Transaction&>(::tari::rpc::_Transaction_default_instance_);
}
inline const ::tari::rpc::Transaction& SubmitTransactionRequest::transaction() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SubmitTransactionRequest.transaction)
  return _internal_transaction();
}
inline void SubmitTransactionRequest::unsafe_arena_set_allocated_transaction(::tari::rpc::Transaction* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transaction_);
  }
  _impl_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(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.SubmitTransactionRequest.transaction)
}
inline ::tari::rpc::Transaction* SubmitTransactionRequest::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Transaction* released = _impl_.transaction_;
  _impl_.transaction_ = 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::Transaction* SubmitTransactionRequest::unsafe_arena_release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.SubmitTransactionRequest.transaction)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Transaction* temp = _impl_.transaction_;
  _impl_.transaction_ = nullptr;
  return temp;
}
inline ::tari::rpc::Transaction* SubmitTransactionRequest::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.transaction_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Transaction>(GetArena());
    _impl_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(p);
  }
  return _impl_.transaction_;
}
inline ::tari::rpc::Transaction* SubmitTransactionRequest::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Transaction* _msg = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:tari.rpc.SubmitTransactionRequest.transaction)
  return _msg;
}
inline void SubmitTransactionRequest::set_allocated_transaction(::tari::rpc::Transaction* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transaction_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SubmitTransactionRequest.transaction)
}

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

// SubmitTransactionResponse

// .tari.rpc.SubmitTransactionResult result = 1;
inline void SubmitTransactionResponse::clear_result() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.result_ = 0;
}
inline ::tari::rpc::SubmitTransactionResult SubmitTransactionResponse::result() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SubmitTransactionResponse.result)
  return _internal_result();
}
inline void SubmitTransactionResponse::set_result(::tari::rpc::SubmitTransactionResult value) {
  _internal_set_result(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SubmitTransactionResponse.result)
}
inline ::tari::rpc::SubmitTransactionResult SubmitTransactionResponse::_internal_result() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::SubmitTransactionResult>(_impl_.result_);
}
inline void SubmitTransactionResponse::_internal_set_result(::tari::rpc::SubmitTransactionResult value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.result_ = value;
}

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

// GetMempoolTransactionsRequest

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

// GetMempoolTransactionsResponse

// .tari.rpc.Transaction transaction = 1;
inline bool GetMempoolTransactionsResponse::has_transaction() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.transaction_ != nullptr);
  return value;
}
inline const ::tari::rpc::Transaction& GetMempoolTransactionsResponse::_internal_transaction() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Transaction* p = _impl_.transaction_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Transaction&>(::tari::rpc::_Transaction_default_instance_);
}
inline const ::tari::rpc::Transaction& GetMempoolTransactionsResponse::transaction() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetMempoolTransactionsResponse.transaction)
  return _internal_transaction();
}
inline void GetMempoolTransactionsResponse::unsafe_arena_set_allocated_transaction(::tari::rpc::Transaction* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transaction_);
  }
  _impl_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(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.GetMempoolTransactionsResponse.transaction)
}
inline ::tari::rpc::Transaction* GetMempoolTransactionsResponse::release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Transaction* released = _impl_.transaction_;
  _impl_.transaction_ = 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::Transaction* GetMempoolTransactionsResponse::unsafe_arena_release_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetMempoolTransactionsResponse.transaction)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Transaction* temp = _impl_.transaction_;
  _impl_.transaction_ = nullptr;
  return temp;
}
inline ::tari::rpc::Transaction* GetMempoolTransactionsResponse::_internal_mutable_transaction() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.transaction_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Transaction>(GetArena());
    _impl_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(p);
  }
  return _impl_.transaction_;
}
inline ::tari::rpc::Transaction* GetMempoolTransactionsResponse::mutable_transaction() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Transaction* _msg = _internal_mutable_transaction();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetMempoolTransactionsResponse.transaction)
  return _msg;
}
inline void GetMempoolTransactionsResponse::set_allocated_transaction(::tari::rpc::Transaction* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transaction_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.transaction_ = reinterpret_cast<::tari::rpc::Transaction*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetMempoolTransactionsResponse.transaction)
}

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

// TransactionStateRequest

// .tari.rpc.Signature excess_sig = 1;
inline bool TransactionStateRequest::has_excess_sig() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.excess_sig_ != nullptr);
  return value;
}
inline const ::tari::rpc::Signature& TransactionStateRequest::_internal_excess_sig() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::Signature* p = _impl_.excess_sig_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::Signature&>(::tari::rpc::_Signature_default_instance_);
}
inline const ::tari::rpc::Signature& TransactionStateRequest::excess_sig() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionStateRequest.excess_sig)
  return _internal_excess_sig();
}
inline void TransactionStateRequest::unsafe_arena_set_allocated_excess_sig(::tari::rpc::Signature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.excess_sig_);
  }
  _impl_.excess_sig_ = reinterpret_cast<::tari::rpc::Signature*>(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.TransactionStateRequest.excess_sig)
}
inline ::tari::rpc::Signature* TransactionStateRequest::release_excess_sig() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Signature* released = _impl_.excess_sig_;
  _impl_.excess_sig_ = 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::Signature* TransactionStateRequest::unsafe_arena_release_excess_sig() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionStateRequest.excess_sig)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::Signature* temp = _impl_.excess_sig_;
  _impl_.excess_sig_ = nullptr;
  return temp;
}
inline ::tari::rpc::Signature* TransactionStateRequest::_internal_mutable_excess_sig() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.excess_sig_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::Signature>(GetArena());
    _impl_.excess_sig_ = reinterpret_cast<::tari::rpc::Signature*>(p);
  }
  return _impl_.excess_sig_;
}
inline ::tari::rpc::Signature* TransactionStateRequest::mutable_excess_sig() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::Signature* _msg = _internal_mutable_excess_sig();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionStateRequest.excess_sig)
  return _msg;
}
inline void TransactionStateRequest::set_allocated_excess_sig(::tari::rpc::Signature* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.excess_sig_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.excess_sig_ = reinterpret_cast<::tari::rpc::Signature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionStateRequest.excess_sig)
}

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

// TransactionStateResponse

// .tari.rpc.TransactionLocation result = 1;
inline void TransactionStateResponse::clear_result() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.result_ = 0;
}
inline ::tari::rpc::TransactionLocation TransactionStateResponse::result() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionStateResponse.result)
  return _internal_result();
}
inline void TransactionStateResponse::set_result(::tari::rpc::TransactionLocation value) {
  _internal_set_result(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionStateResponse.result)
}
inline ::tari::rpc::TransactionLocation TransactionStateResponse::_internal_result() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::TransactionLocation>(_impl_.result_);
}
inline void TransactionStateResponse::_internal_set_result(::tari::rpc::TransactionLocation value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.result_ = value;
}

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

// MempoolStatsResponse

// uint64 unconfirmed_txs = 2;
inline void MempoolStatsResponse::clear_unconfirmed_txs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unconfirmed_txs_ = ::uint64_t{0u};
}
inline ::uint64_t MempoolStatsResponse::unconfirmed_txs() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MempoolStatsResponse.unconfirmed_txs)
  return _internal_unconfirmed_txs();
}
inline void MempoolStatsResponse::set_unconfirmed_txs(::uint64_t value) {
  _internal_set_unconfirmed_txs(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MempoolStatsResponse.unconfirmed_txs)
}
inline ::uint64_t MempoolStatsResponse::_internal_unconfirmed_txs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.unconfirmed_txs_;
}
inline void MempoolStatsResponse::_internal_set_unconfirmed_txs(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unconfirmed_txs_ = value;
}

// uint64 reorg_txs = 3;
inline void MempoolStatsResponse::clear_reorg_txs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reorg_txs_ = ::uint64_t{0u};
}
inline ::uint64_t MempoolStatsResponse::reorg_txs() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MempoolStatsResponse.reorg_txs)
  return _internal_reorg_txs();
}
inline void MempoolStatsResponse::set_reorg_txs(::uint64_t value) {
  _internal_set_reorg_txs(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MempoolStatsResponse.reorg_txs)
}
inline ::uint64_t MempoolStatsResponse::_internal_reorg_txs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.reorg_txs_;
}
inline void MempoolStatsResponse::_internal_set_reorg_txs(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.reorg_txs_ = value;
}

// uint64 unconfirmed_weight = 4;
inline void MempoolStatsResponse::clear_unconfirmed_weight() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unconfirmed_weight_ = ::uint64_t{0u};
}
inline ::uint64_t MempoolStatsResponse::unconfirmed_weight() const {
  // @@protoc_insertion_point(field_get:tari.rpc.MempoolStatsResponse.unconfirmed_weight)
  return _internal_unconfirmed_weight();
}
inline void MempoolStatsResponse::set_unconfirmed_weight(::uint64_t value) {
  _internal_set_unconfirmed_weight(value);
  // @@protoc_insertion_point(field_set:tari.rpc.MempoolStatsResponse.unconfirmed_weight)
}
inline ::uint64_t MempoolStatsResponse::_internal_unconfirmed_weight() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.unconfirmed_weight_;
}
inline void MempoolStatsResponse::_internal_set_unconfirmed_weight(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.unconfirmed_weight_ = value;
}

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

// GetActiveValidatorNodesRequest

// uint64 height = 1;
inline void GetActiveValidatorNodesRequest::clear_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = ::uint64_t{0u};
}
inline ::uint64_t GetActiveValidatorNodesRequest::height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetActiveValidatorNodesRequest.height)
  return _internal_height();
}
inline void GetActiveValidatorNodesRequest::set_height(::uint64_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetActiveValidatorNodesRequest.height)
}
inline ::uint64_t GetActiveValidatorNodesRequest::_internal_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.height_;
}
inline void GetActiveValidatorNodesRequest::_internal_set_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = value;
}

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

// GetActiveValidatorNodesResponse

// bytes shard_key = 1;
inline void GetActiveValidatorNodesResponse::clear_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.ClearToEmpty();
}
inline const std::string& GetActiveValidatorNodesResponse::shard_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetActiveValidatorNodesResponse.shard_key)
  return _internal_shard_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetActiveValidatorNodesResponse::set_shard_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetActiveValidatorNodesResponse.shard_key)
}
inline std::string* GetActiveValidatorNodesResponse::mutable_shard_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_shard_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetActiveValidatorNodesResponse.shard_key)
  return _s;
}
inline const std::string& GetActiveValidatorNodesResponse::_internal_shard_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.shard_key_.Get();
}
inline void GetActiveValidatorNodesResponse::_internal_set_shard_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.Set(value, GetArena());
}
inline std::string* GetActiveValidatorNodesResponse::_internal_mutable_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.shard_key_.Mutable( GetArena());
}
inline std::string* GetActiveValidatorNodesResponse::release_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetActiveValidatorNodesResponse.shard_key)
  return _impl_.shard_key_.Release();
}
inline void GetActiveValidatorNodesResponse::set_allocated_shard_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.shard_key_.IsDefault()) {
          _impl_.shard_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetActiveValidatorNodesResponse.shard_key)
}

// bytes public_key = 2;
inline void GetActiveValidatorNodesResponse::clear_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.ClearToEmpty();
}
inline const std::string& GetActiveValidatorNodesResponse::public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetActiveValidatorNodesResponse.public_key)
  return _internal_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetActiveValidatorNodesResponse::set_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetActiveValidatorNodesResponse.public_key)
}
inline std::string* GetActiveValidatorNodesResponse::mutable_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetActiveValidatorNodesResponse.public_key)
  return _s;
}
inline const std::string& GetActiveValidatorNodesResponse::_internal_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Get();
}
inline void GetActiveValidatorNodesResponse::_internal_set_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.Set(value, GetArena());
}
inline std::string* GetActiveValidatorNodesResponse::_internal_mutable_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Mutable( GetArena());
}
inline std::string* GetActiveValidatorNodesResponse::release_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetActiveValidatorNodesResponse.public_key)
  return _impl_.public_key_.Release();
}
inline void GetActiveValidatorNodesResponse::set_allocated_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.public_key_.IsDefault()) {
          _impl_.public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetActiveValidatorNodesResponse.public_key)
}

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

// GetShardKeyRequest

// uint64 height = 1;
inline void GetShardKeyRequest::clear_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = ::uint64_t{0u};
}
inline ::uint64_t GetShardKeyRequest::height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetShardKeyRequest.height)
  return _internal_height();
}
inline void GetShardKeyRequest::set_height(::uint64_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetShardKeyRequest.height)
}
inline ::uint64_t GetShardKeyRequest::_internal_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.height_;
}
inline void GetShardKeyRequest::_internal_set_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = value;
}

// bytes public_key = 2;
inline void GetShardKeyRequest::clear_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.ClearToEmpty();
}
inline const std::string& GetShardKeyRequest::public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetShardKeyRequest.public_key)
  return _internal_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetShardKeyRequest::set_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetShardKeyRequest.public_key)
}
inline std::string* GetShardKeyRequest::mutable_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetShardKeyRequest.public_key)
  return _s;
}
inline const std::string& GetShardKeyRequest::_internal_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Get();
}
inline void GetShardKeyRequest::_internal_set_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.Set(value, GetArena());
}
inline std::string* GetShardKeyRequest::_internal_mutable_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Mutable( GetArena());
}
inline std::string* GetShardKeyRequest::release_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetShardKeyRequest.public_key)
  return _impl_.public_key_.Release();
}
inline void GetShardKeyRequest::set_allocated_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.public_key_.IsDefault()) {
          _impl_.public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetShardKeyRequest.public_key)
}

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

// GetShardKeyResponse

// bytes shard_key = 1;
inline void GetShardKeyResponse::clear_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.ClearToEmpty();
}
inline const std::string& GetShardKeyResponse::shard_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetShardKeyResponse.shard_key)
  return _internal_shard_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetShardKeyResponse::set_shard_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetShardKeyResponse.shard_key)
}
inline std::string* GetShardKeyResponse::mutable_shard_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_shard_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetShardKeyResponse.shard_key)
  return _s;
}
inline const std::string& GetShardKeyResponse::_internal_shard_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.shard_key_.Get();
}
inline void GetShardKeyResponse::_internal_set_shard_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.Set(value, GetArena());
}
inline std::string* GetShardKeyResponse::_internal_mutable_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.shard_key_.Mutable( GetArena());
}
inline std::string* GetShardKeyResponse::release_shard_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetShardKeyResponse.shard_key)
  return _impl_.shard_key_.Release();
}
inline void GetShardKeyResponse::set_allocated_shard_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.shard_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.shard_key_.IsDefault()) {
          _impl_.shard_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetShardKeyResponse.shard_key)
}

// bool found = 2;
inline void GetShardKeyResponse::clear_found() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.found_ = false;
}
inline bool GetShardKeyResponse::found() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetShardKeyResponse.found)
  return _internal_found();
}
inline void GetShardKeyResponse::set_found(bool value) {
  _internal_set_found(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetShardKeyResponse.found)
}
inline bool GetShardKeyResponse::_internal_found() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.found_;
}
inline void GetShardKeyResponse::_internal_set_found(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.found_ = value;
}

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

// GetTemplateRegistrationsRequest

// bytes start_hash = 1;
inline void GetTemplateRegistrationsRequest::clear_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.ClearToEmpty();
}
inline const std::string& GetTemplateRegistrationsRequest::start_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTemplateRegistrationsRequest.start_hash)
  return _internal_start_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTemplateRegistrationsRequest::set_start_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTemplateRegistrationsRequest.start_hash)
}
inline std::string* GetTemplateRegistrationsRequest::mutable_start_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_start_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTemplateRegistrationsRequest.start_hash)
  return _s;
}
inline const std::string& GetTemplateRegistrationsRequest::_internal_start_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.start_hash_.Get();
}
inline void GetTemplateRegistrationsRequest::_internal_set_start_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.Set(value, GetArena());
}
inline std::string* GetTemplateRegistrationsRequest::_internal_mutable_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.start_hash_.Mutable( GetArena());
}
inline std::string* GetTemplateRegistrationsRequest::release_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTemplateRegistrationsRequest.start_hash)
  return _impl_.start_hash_.Release();
}
inline void GetTemplateRegistrationsRequest::set_allocated_start_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.start_hash_.IsDefault()) {
          _impl_.start_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTemplateRegistrationsRequest.start_hash)
}

// uint64 count = 2;
inline void GetTemplateRegistrationsRequest::clear_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = ::uint64_t{0u};
}
inline ::uint64_t GetTemplateRegistrationsRequest::count() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTemplateRegistrationsRequest.count)
  return _internal_count();
}
inline void GetTemplateRegistrationsRequest::set_count(::uint64_t value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetTemplateRegistrationsRequest.count)
}
inline ::uint64_t GetTemplateRegistrationsRequest::_internal_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.count_;
}
inline void GetTemplateRegistrationsRequest::_internal_set_count(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = value;
}

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

// GetTemplateRegistrationResponse

// bytes utxo_hash = 1;
inline void GetTemplateRegistrationResponse::clear_utxo_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_hash_.ClearToEmpty();
}
inline const std::string& GetTemplateRegistrationResponse::utxo_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTemplateRegistrationResponse.utxo_hash)
  return _internal_utxo_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetTemplateRegistrationResponse::set_utxo_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetTemplateRegistrationResponse.utxo_hash)
}
inline std::string* GetTemplateRegistrationResponse::mutable_utxo_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_utxo_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTemplateRegistrationResponse.utxo_hash)
  return _s;
}
inline const std::string& GetTemplateRegistrationResponse::_internal_utxo_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.utxo_hash_.Get();
}
inline void GetTemplateRegistrationResponse::_internal_set_utxo_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_hash_.Set(value, GetArena());
}
inline std::string* GetTemplateRegistrationResponse::_internal_mutable_utxo_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.utxo_hash_.Mutable( GetArena());
}
inline std::string* GetTemplateRegistrationResponse::release_utxo_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTemplateRegistrationResponse.utxo_hash)
  return _impl_.utxo_hash_.Release();
}
inline void GetTemplateRegistrationResponse::set_allocated_utxo_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.utxo_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.utxo_hash_.IsDefault()) {
          _impl_.utxo_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTemplateRegistrationResponse.utxo_hash)
}

// .tari.rpc.TemplateRegistration registration = 2;
inline bool GetTemplateRegistrationResponse::has_registration() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.registration_ != nullptr);
  return value;
}
inline const ::tari::rpc::TemplateRegistration& GetTemplateRegistrationResponse::_internal_registration() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::TemplateRegistration* p = _impl_.registration_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::TemplateRegistration&>(::tari::rpc::_TemplateRegistration_default_instance_);
}
inline const ::tari::rpc::TemplateRegistration& GetTemplateRegistrationResponse::registration() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetTemplateRegistrationResponse.registration)
  return _internal_registration();
}
inline void GetTemplateRegistrationResponse::unsafe_arena_set_allocated_registration(::tari::rpc::TemplateRegistration* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.registration_);
  }
  _impl_.registration_ = reinterpret_cast<::tari::rpc::TemplateRegistration*>(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.GetTemplateRegistrationResponse.registration)
}
inline ::tari::rpc::TemplateRegistration* GetTemplateRegistrationResponse::release_registration() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::TemplateRegistration* released = _impl_.registration_;
  _impl_.registration_ = 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::TemplateRegistration* GetTemplateRegistrationResponse::unsafe_arena_release_registration() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetTemplateRegistrationResponse.registration)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::TemplateRegistration* temp = _impl_.registration_;
  _impl_.registration_ = nullptr;
  return temp;
}
inline ::tari::rpc::TemplateRegistration* GetTemplateRegistrationResponse::_internal_mutable_registration() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.registration_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::TemplateRegistration>(GetArena());
    _impl_.registration_ = reinterpret_cast<::tari::rpc::TemplateRegistration*>(p);
  }
  return _impl_.registration_;
}
inline ::tari::rpc::TemplateRegistration* GetTemplateRegistrationResponse::mutable_registration() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::TemplateRegistration* _msg = _internal_mutable_registration();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetTemplateRegistrationResponse.registration)
  return _msg;
}
inline void GetTemplateRegistrationResponse::set_allocated_registration(::tari::rpc::TemplateRegistration* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.registration_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::MessageLite*>(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_.registration_ = reinterpret_cast<::tari::rpc::TemplateRegistration*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetTemplateRegistrationResponse.registration)
}

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

// BlockInfo

// uint64 height = 1;
inline void BlockInfo::clear_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = ::uint64_t{0u};
}
inline ::uint64_t BlockInfo::height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockInfo.height)
  return _internal_height();
}
inline void BlockInfo::set_height(::uint64_t value) {
  _internal_set_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.BlockInfo.height)
}
inline ::uint64_t BlockInfo::_internal_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.height_;
}
inline void BlockInfo::_internal_set_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.height_ = value;
}

// bytes hash = 2;
inline void BlockInfo::clear_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.ClearToEmpty();
}
inline const std::string& BlockInfo::hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockInfo.hash)
  return _internal_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BlockInfo::set_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.BlockInfo.hash)
}
inline std::string* BlockInfo::mutable_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.BlockInfo.hash)
  return _s;
}
inline const std::string& BlockInfo::_internal_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.hash_.Get();
}
inline void BlockInfo::_internal_set_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.Set(value, GetArena());
}
inline std::string* BlockInfo::_internal_mutable_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.hash_.Mutable( GetArena());
}
inline std::string* BlockInfo::release_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.BlockInfo.hash)
  return _impl_.hash_.Release();
}
inline void BlockInfo::set_allocated_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.hash_.IsDefault()) {
          _impl_.hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.BlockInfo.hash)
}

// bytes next_block_hash = 3;
inline void BlockInfo::clear_next_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_block_hash_.ClearToEmpty();
}
inline const std::string& BlockInfo::next_block_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.BlockInfo.next_block_hash)
  return _internal_next_block_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BlockInfo::set_next_block_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_block_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.BlockInfo.next_block_hash)
}
inline std::string* BlockInfo::mutable_next_block_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_next_block_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.BlockInfo.next_block_hash)
  return _s;
}
inline const std::string& BlockInfo::_internal_next_block_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.next_block_hash_.Get();
}
inline void BlockInfo::_internal_set_next_block_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_block_hash_.Set(value, GetArena());
}
inline std::string* BlockInfo::_internal_mutable_next_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.next_block_hash_.Mutable( GetArena());
}
inline std::string* BlockInfo::release_next_block_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.BlockInfo.next_block_hash)
  return _impl_.next_block_hash_.Release();
}
inline void BlockInfo::set_allocated_next_block_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.next_block_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.next_block_hash_.IsDefault()) {
          _impl_.next_block_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.BlockInfo.next_block_hash)
}

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

// GetSideChainUtxosRequest

// bytes start_hash = 1;
inline void GetSideChainUtxosRequest::clear_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.ClearToEmpty();
}
inline const std::string& GetSideChainUtxosRequest::start_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetSideChainUtxosRequest.start_hash)
  return _internal_start_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetSideChainUtxosRequest::set_start_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetSideChainUtxosRequest.start_hash)
}
inline std::string* GetSideChainUtxosRequest::mutable_start_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_start_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetSideChainUtxosRequest.start_hash)
  return _s;
}
inline const std::string& GetSideChainUtxosRequest::_internal_start_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.start_hash_.Get();
}
inline void GetSideChainUtxosRequest::_internal_set_start_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.Set(value, GetArena());
}
inline std::string* GetSideChainUtxosRequest::_internal_mutable_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.start_hash_.Mutable( GetArena());
}
inline std::string* GetSideChainUtxosRequest::release_start_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetSideChainUtxosRequest.start_hash)
  return _impl_.start_hash_.Release();
}
inline void GetSideChainUtxosRequest::set_allocated_start_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.start_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.start_hash_.IsDefault()) {
          _impl_.start_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetSideChainUtxosRequest.start_hash)
}

// uint64 count = 2;
inline void GetSideChainUtxosRequest::clear_count() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = ::uint64_t{0u};
}
inline ::uint64_t GetSideChainUtxosRequest::count() const {
  // @@protoc_insertion_point(field_get:tari.rpc.GetSideChainUtxosRequest.count)
  return _internal_count();
}
inline void GetSideChainUtxosRequest::set_count(::uint64_t value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:tari.rpc.GetSideChainUtxosRequest.count)
}
inline ::uint64_t GetSideChainUtxosRequest::_internal_count() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.count_;
}
inline void GetSideChainUtxosRequest::_internal_set_count(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.count_ = value;
}

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

// GetSideChainUtxosResponse

// .tari.rpc.BlockInfo block_info = 1;
inline bool GetSideChainUtxosResponse::has_block_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.block_info_ != nullptr);
  return value;
}
inline void GetSideChainUtxosResponse::clear_block_info() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.block_info_ != nullptr) _impl_.block_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::BlockInfo& GetSideChainUtxosResponse::_internal_block_info() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::BlockInfo* p = _impl_.block_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::BlockInfo&>(::tari::rpc::_BlockInfo_default_instance_);
}
inline const ::tari::rpc::BlockInfo& GetSideChainUtxosResponse::block_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetSideChainUtxosResponse.block_info)
  return _internal_block_info();
}
inline void GetSideChainUtxosResponse::unsafe_arena_set_allocated_block_info(::tari::rpc::BlockInfo* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.block_info_);
  }
  _impl_.block_info_ = reinterpret_cast<::tari::rpc::BlockInfo*>(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.GetSideChainUtxosResponse.block_info)
}
inline ::tari::rpc::BlockInfo* GetSideChainUtxosResponse::release_block_info() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::BlockInfo* released = _impl_.block_info_;
  _impl_.block_info_ = 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::BlockInfo* GetSideChainUtxosResponse::unsafe_arena_release_block_info() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetSideChainUtxosResponse.block_info)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::BlockInfo* temp = _impl_.block_info_;
  _impl_.block_info_ = nullptr;
  return temp;
}
inline ::tari::rpc::BlockInfo* GetSideChainUtxosResponse::_internal_mutable_block_info() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.block_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::BlockInfo>(GetArena());
    _impl_.block_info_ = reinterpret_cast<::tari::rpc::BlockInfo*>(p);
  }
  return _impl_.block_info_;
}
inline ::tari::rpc::BlockInfo* GetSideChainUtxosResponse::mutable_block_info() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::BlockInfo* _msg = _internal_mutable_block_info();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetSideChainUtxosResponse.block_info)
  return _msg;
}
inline void GetSideChainUtxosResponse::set_allocated_block_info(::tari::rpc::BlockInfo* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.block_info_);
  }

  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_.block_info_ = reinterpret_cast<::tari::rpc::BlockInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetSideChainUtxosResponse.block_info)
}

// repeated .tari.rpc.TransactionOutput outputs = 2;
inline int GetSideChainUtxosResponse::_internal_outputs_size() const {
  return _internal_outputs().size();
}
inline int GetSideChainUtxosResponse::outputs_size() const {
  return _internal_outputs_size();
}
inline ::tari::rpc::TransactionOutput* GetSideChainUtxosResponse::mutable_outputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetSideChainUtxosResponse.outputs)
  return _internal_mutable_outputs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>* GetSideChainUtxosResponse::mutable_outputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.GetSideChainUtxosResponse.outputs)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_outputs();
}
inline const ::tari::rpc::TransactionOutput& GetSideChainUtxosResponse::outputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetSideChainUtxosResponse.outputs)
  return _internal_outputs().Get(index);
}
inline ::tari::rpc::TransactionOutput* GetSideChainUtxosResponse::add_outputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::TransactionOutput* _add = _internal_mutable_outputs()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.GetSideChainUtxosResponse.outputs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& GetSideChainUtxosResponse::outputs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.GetSideChainUtxosResponse.outputs)
  return _internal_outputs();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>&
GetSideChainUtxosResponse::_internal_outputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.outputs_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>*
GetSideChainUtxosResponse::_internal_mutable_outputs() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.outputs_;
}

#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::BaseNodeState> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::BaseNodeState>() {
  return ::tari::rpc::BaseNodeState_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::CalcType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::CalcType>() {
  return ::tari::rpc::CalcType_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::Sorting> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::Sorting>() {
  return ::tari::rpc::Sorting_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::SyncState> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::SyncState>() {
  return ::tari::rpc::SyncState_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::SubmitTransactionResult> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::SubmitTransactionResult>() {
  return ::tari::rpc::SubmitTransactionResult_descriptor();
}
template <>
struct is_proto_enum<::tari::rpc::TransactionLocation> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::TransactionLocation>() {
  return ::tari::rpc::TransactionLocation_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_base_5fnode_2eproto_2epb_2eh
