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

#ifndef GOOGLE_PROTOBUF_INCLUDED_network_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_network_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 "google/protobuf/timestamp.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_network_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_network_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_network_2eproto;
namespace tari {
namespace rpc {
class Address;
struct AddressDefaultTypeInternal;
extern AddressDefaultTypeInternal _Address_default_instance_;
class AverageLatency;
struct AverageLatencyDefaultTypeInternal;
extern AverageLatencyDefaultTypeInternal _AverageLatency_default_instance_;
class GetIdentityRequest;
struct GetIdentityRequestDefaultTypeInternal;
extern GetIdentityRequestDefaultTypeInternal _GetIdentityRequest_default_instance_;
class GetIdentityResponse;
struct GetIdentityResponseDefaultTypeInternal;
extern GetIdentityResponseDefaultTypeInternal _GetIdentityResponse_default_instance_;
class ListConnectedPeersResponse;
struct ListConnectedPeersResponseDefaultTypeInternal;
extern ListConnectedPeersResponseDefaultTypeInternal _ListConnectedPeersResponse_default_instance_;
class NetworkStatusResponse;
struct NetworkStatusResponseDefaultTypeInternal;
extern NetworkStatusResponseDefaultTypeInternal _NetworkStatusResponse_default_instance_;
class NodeIdentity;
struct NodeIdentityDefaultTypeInternal;
extern NodeIdentityDefaultTypeInternal _NodeIdentity_default_instance_;
class Peer;
struct PeerDefaultTypeInternal;
extern PeerDefaultTypeInternal _Peer_default_instance_;
class SoftwareUpdate;
struct SoftwareUpdateDefaultTypeInternal;
extern SoftwareUpdateDefaultTypeInternal _SoftwareUpdate_default_instance_;
}  // namespace rpc
}  // namespace tari
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace tari {
namespace rpc {
enum ConnectivityStatus : int {
  Initializing = 0,
  Online = 1,
  Degraded = 2,
  Offline = 3,
  ConnectivityStatus_INT_MIN_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::min(),
  ConnectivityStatus_INT_MAX_SENTINEL_DO_NOT_USE_ =
      std::numeric_limits<::int32_t>::max(),
};

bool ConnectivityStatus_IsValid(int value);
extern const uint32_t ConnectivityStatus_internal_data_[];
constexpr ConnectivityStatus ConnectivityStatus_MIN = static_cast<ConnectivityStatus>(0);
constexpr ConnectivityStatus ConnectivityStatus_MAX = static_cast<ConnectivityStatus>(3);
constexpr int ConnectivityStatus_ARRAYSIZE = 3 + 1;
const ::google::protobuf::EnumDescriptor*
ConnectivityStatus_descriptor();
template <typename T>
const std::string& ConnectivityStatus_Name(T value) {
  static_assert(std::is_same<T, ConnectivityStatus>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to ConnectivityStatus_Name().");
  return ConnectivityStatus_Name(static_cast<ConnectivityStatus>(value));
}
template <>
inline const std::string& ConnectivityStatus_Name(ConnectivityStatus value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ConnectivityStatus_descriptor,
                                                 0, 3>(
      static_cast<int>(value));
}
inline bool ConnectivityStatus_Parse(absl::string_view name, ConnectivityStatus* value) {
  return ::google::protobuf::internal::ParseNamedEnum<ConnectivityStatus>(
      ConnectivityStatus_descriptor(), name, value);
}

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


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

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

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

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

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

 protected:
  explicit SoftwareUpdate(::google::protobuf::Arena* arena);
  SoftwareUpdate(::google::protobuf::Arena* arena, const SoftwareUpdate& from);
  SoftwareUpdate(::google::protobuf::Arena* arena, SoftwareUpdate&& from) noexcept
      : SoftwareUpdate(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 {
    kVersionFieldNumber = 2,
    kShaFieldNumber = 3,
    kDownloadUrlFieldNumber = 4,
    kHasUpdateFieldNumber = 1,
  };
  // string version = 2;
  void clear_version() ;
  const std::string& version() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_version(Arg_&& arg, Args_... args);
  std::string* mutable_version();
  PROTOBUF_NODISCARD std::string* release_version();
  void set_allocated_version(std::string* value);

  private:
  const std::string& _internal_version() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_version(
      const std::string& value);
  std::string* _internal_mutable_version();

  public:
  // string sha = 3;
  void clear_sha() ;
  const std::string& sha() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_sha(Arg_&& arg, Args_... args);
  std::string* mutable_sha();
  PROTOBUF_NODISCARD std::string* release_sha();
  void set_allocated_sha(std::string* value);

  private:
  const std::string& _internal_sha() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_sha(
      const std::string& value);
  std::string* _internal_mutable_sha();

  public:
  // string download_url = 4;
  void clear_download_url() ;
  const std::string& download_url() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_download_url(Arg_&& arg, Args_... args);
  std::string* mutable_download_url();
  PROTOBUF_NODISCARD std::string* release_download_url();
  void set_allocated_download_url(std::string* value);

  private:
  const std::string& _internal_download_url() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_download_url(
      const std::string& value);
  std::string* _internal_mutable_download_url();

  public:
  // bool has_update = 1;
  void clear_has_update() ;
  bool has_update() const;
  void set_has_update(bool value);

  private:
  bool _internal_has_update() const;
  void _internal_set_has_update(bool value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.SoftwareUpdate)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 4, 0,
      54, 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 version_;
    ::google::protobuf::internal::ArenaStringPtr sha_;
    ::google::protobuf::internal::ArenaStringPtr download_url_;
    bool has_update_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit NodeIdentity(::google::protobuf::Arena* arena);
  NodeIdentity(::google::protobuf::Arena* arena, const NodeIdentity& from);
  NodeIdentity(::google::protobuf::Arena* arena, NodeIdentity&& from) noexcept
      : NodeIdentity(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 {
    kPublicAddressesFieldNumber = 2,
    kPublicKeyFieldNumber = 1,
    kNodeIdFieldNumber = 3,
  };
  // repeated string public_addresses = 2;
  int public_addresses_size() const;
  private:
  int _internal_public_addresses_size() const;

  public:
  void clear_public_addresses() ;
  const std::string& public_addresses(int index) const;
  std::string* mutable_public_addresses(int index);
  void set_public_addresses(int index, const std::string& value);
  void set_public_addresses(int index, std::string&& value);
  void set_public_addresses(int index, const char* value);
  void set_public_addresses(int index, const char* value, std::size_t size);
  void set_public_addresses(int index, absl::string_view value);
  std::string* add_public_addresses();
  void add_public_addresses(const std::string& value);
  void add_public_addresses(std::string&& value);
  void add_public_addresses(const char* value);
  void add_public_addresses(const char* value, std::size_t size);
  void add_public_addresses(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& public_addresses() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_public_addresses();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_public_addresses() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_public_addresses();

  public:
  // bytes public_key = 1;
  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:
  // bytes node_id = 3;
  void clear_node_id() ;
  const std::string& node_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_node_id(Arg_&& arg, Args_... args);
  std::string* mutable_node_id();
  PROTOBUF_NODISCARD std::string* release_node_id();
  void set_allocated_node_id(std::string* value);

  private:
  const std::string& _internal_node_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_node_id(
      const std::string& value);
  std::string* _internal_mutable_node_id();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NodeIdentity)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      46, 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> public_addresses_;
    ::google::protobuf::internal::ArenaStringPtr public_key_;
    ::google::protobuf::internal::ArenaStringPtr node_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit NetworkStatusResponse(::google::protobuf::Arena* arena);
  NetworkStatusResponse(::google::protobuf::Arena* arena, const NetworkStatusResponse& from);
  NetworkStatusResponse(::google::protobuf::Arena* arena, NetworkStatusResponse&& from) noexcept
      : NetworkStatusResponse(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 {
    kStatusFieldNumber = 1,
    kAvgLatencyMsFieldNumber = 2,
    kNumNodeConnectionsFieldNumber = 3,
  };
  // .tari.rpc.ConnectivityStatus status = 1;
  void clear_status() ;
  ::tari::rpc::ConnectivityStatus status() const;
  void set_status(::tari::rpc::ConnectivityStatus value);

  private:
  ::tari::rpc::ConnectivityStatus _internal_status() const;
  void _internal_set_status(::tari::rpc::ConnectivityStatus value);

  public:
  // uint32 avg_latency_ms = 2;
  void clear_avg_latency_ms() ;
  ::uint32_t avg_latency_ms() const;
  void set_avg_latency_ms(::uint32_t value);

  private:
  ::uint32_t _internal_avg_latency_ms() const;
  void _internal_set_avg_latency_ms(::uint32_t value);

  public:
  // uint32 num_node_connections = 3;
  void clear_num_node_connections() ;
  ::uint32_t num_node_connections() const;
  void set_num_node_connections(::uint32_t value);

  private:
  ::uint32_t _internal_num_node_connections() const;
  void _internal_set_num_node_connections(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.NetworkStatusResponse)
 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);
    int status_;
    ::uint32_t avg_latency_ms_;
    ::uint32_t num_node_connections_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit GetIdentityResponse(::google::protobuf::Arena* arena);
  GetIdentityResponse(::google::protobuf::Arena* arena, const GetIdentityResponse& from);
  GetIdentityResponse(::google::protobuf::Arena* arena, GetIdentityResponse&& from) noexcept
      : GetIdentityResponse(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 = 1,
    kPublicAddressFieldNumber = 2,
    kNodeIdFieldNumber = 3,
  };
  // bytes public_key = 1;
  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:
  // string public_address = 2;
  void clear_public_address() ;
  const std::string& public_address() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_public_address(Arg_&& arg, Args_... args);
  std::string* mutable_public_address();
  PROTOBUF_NODISCARD std::string* release_public_address();
  void set_allocated_public_address(std::string* value);

  private:
  const std::string& _internal_public_address() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_public_address(
      const std::string& value);
  std::string* _internal_mutable_public_address();

  public:
  // bytes node_id = 3;
  void clear_node_id() ;
  const std::string& node_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_node_id(Arg_&& arg, Args_... args);
  std::string* mutable_node_id();
  PROTOBUF_NODISCARD std::string* release_node_id();
  void set_allocated_node_id(std::string* value);

  private:
  const std::string& _internal_node_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_node_id(
      const std::string& value);
  std::string* _internal_mutable_node_id();

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.GetIdentityResponse)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      51, 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_;
    ::google::protobuf::internal::ArenaStringPtr public_address_;
    ::google::protobuf::internal::ArenaStringPtr node_id_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

 protected:
  explicit AverageLatency(::google::protobuf::Arena* arena);
  AverageLatency(::google::protobuf::Arena* arena, const AverageLatency& from);
  AverageLatency(::google::protobuf::Arena* arena, AverageLatency&& from) noexcept
      : AverageLatency(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 {
    kLatencyFieldNumber = 1,
  };
  // uint64 latency = 1;
  void clear_latency() ;
  ::uint64_t latency() const;
  void set_latency(::uint64_t value);

  private:
  ::uint64_t _internal_latency() const;
  void _internal_set_latency(::uint64_t value);

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

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

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

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

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

 protected:
  explicit Address(::google::protobuf::Arena* arena);
  Address(::google::protobuf::Arena* arena, const Address& from);
  Address(::google::protobuf::Arena* arena, Address&& from) noexcept
      : Address(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,
    kLastSeenFieldNumber = 2,
    kAvgLatencyFieldNumber = 5,
    kConnectionAttemptsFieldNumber = 3,
  };
  // bytes 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:
  // string last_seen = 2;
  void clear_last_seen() ;
  const std::string& last_seen() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_last_seen(Arg_&& arg, Args_... args);
  std::string* mutable_last_seen();
  PROTOBUF_NODISCARD std::string* release_last_seen();
  void set_allocated_last_seen(std::string* value);

  private:
  const std::string& _internal_last_seen() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_last_seen(
      const std::string& value);
  std::string* _internal_mutable_last_seen();

  public:
  // .tari.rpc.AverageLatency avg_latency = 5;
  bool has_avg_latency() const;
  void clear_avg_latency() ;
  const ::tari::rpc::AverageLatency& avg_latency() const;
  PROTOBUF_NODISCARD ::tari::rpc::AverageLatency* release_avg_latency();
  ::tari::rpc::AverageLatency* mutable_avg_latency();
  void set_allocated_avg_latency(::tari::rpc::AverageLatency* value);
  void unsafe_arena_set_allocated_avg_latency(::tari::rpc::AverageLatency* value);
  ::tari::rpc::AverageLatency* unsafe_arena_release_avg_latency();

  private:
  const ::tari::rpc::AverageLatency& _internal_avg_latency() const;
  ::tari::rpc::AverageLatency* _internal_mutable_avg_latency();

  public:
  // uint32 connection_attempts = 3;
  void clear_connection_attempts() ;
  ::uint32_t connection_attempts() const;
  void set_connection_attempts(::uint32_t value);

  private:
  ::uint32_t _internal_connection_attempts() const;
  void _internal_set_connection_attempts(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.Address)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 4, 1,
      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::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::google::protobuf::internal::ArenaStringPtr last_seen_;
    ::tari::rpc::AverageLatency* avg_latency_;
    ::uint32_t connection_attempts_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit Peer(::google::protobuf::Arena* arena);
  Peer(::google::protobuf::Arena* arena, const Peer& from);
  Peer(::google::protobuf::Arena* arena, Peer&& from) noexcept
      : Peer(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 {
    kAddressesFieldNumber = 3,
    kSupportedProtocolsFieldNumber = 11,
    kPublicKeyFieldNumber = 1,
    kNodeIdFieldNumber = 2,
    kBannedReasonFieldNumber = 7,
    kUserAgentFieldNumber = 12,
    kLastConnectionFieldNumber = 4,
    kBannedUntilFieldNumber = 6,
    kFlagsFieldNumber = 5,
    kFeaturesFieldNumber = 9,
    kOfflineAtFieldNumber = 8,
  };
  // repeated .tari.rpc.Address addresses = 3;
  int addresses_size() const;
  private:
  int _internal_addresses_size() const;

  public:
  void clear_addresses() ;
  ::tari::rpc::Address* mutable_addresses(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>* mutable_addresses();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>& _internal_addresses() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>* _internal_mutable_addresses();
  public:
  const ::tari::rpc::Address& addresses(int index) const;
  ::tari::rpc::Address* add_addresses();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>& addresses() const;
  // repeated bytes supported_protocols = 11;
  int supported_protocols_size() const;
  private:
  int _internal_supported_protocols_size() const;

  public:
  void clear_supported_protocols() ;
  const std::string& supported_protocols(int index) const;
  std::string* mutable_supported_protocols(int index);
  void set_supported_protocols(int index, const std::string& value);
  void set_supported_protocols(int index, std::string&& value);
  void set_supported_protocols(int index, const char* value);
  void set_supported_protocols(int index, const void* value, std::size_t size);
  void set_supported_protocols(int index, absl::string_view value);
  std::string* add_supported_protocols();
  void add_supported_protocols(const std::string& value);
  void add_supported_protocols(std::string&& value);
  void add_supported_protocols(const char* value);
  void add_supported_protocols(const void* value, std::size_t size);
  void add_supported_protocols(absl::string_view value);
  const ::google::protobuf::RepeatedPtrField<std::string>& supported_protocols() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_supported_protocols();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_supported_protocols() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_supported_protocols();

  public:
  // bytes public_key = 1;
  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:
  // bytes node_id = 2;
  void clear_node_id() ;
  const std::string& node_id() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_node_id(Arg_&& arg, Args_... args);
  std::string* mutable_node_id();
  PROTOBUF_NODISCARD std::string* release_node_id();
  void set_allocated_node_id(std::string* value);

  private:
  const std::string& _internal_node_id() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_node_id(
      const std::string& value);
  std::string* _internal_mutable_node_id();

  public:
  // string banned_reason = 7;
  void clear_banned_reason() ;
  const std::string& banned_reason() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_banned_reason(Arg_&& arg, Args_... args);
  std::string* mutable_banned_reason();
  PROTOBUF_NODISCARD std::string* release_banned_reason();
  void set_allocated_banned_reason(std::string* value);

  private:
  const std::string& _internal_banned_reason() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_banned_reason(
      const std::string& value);
  std::string* _internal_mutable_banned_reason();

  public:
  // string user_agent = 12;
  void clear_user_agent() ;
  const std::string& user_agent() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_user_agent(Arg_&& arg, Args_... args);
  std::string* mutable_user_agent();
  PROTOBUF_NODISCARD std::string* release_user_agent();
  void set_allocated_user_agent(std::string* value);

  private:
  const std::string& _internal_user_agent() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_user_agent(
      const std::string& value);
  std::string* _internal_mutable_user_agent();

  public:
  // uint64 last_connection = 4;
  void clear_last_connection() ;
  ::uint64_t last_connection() const;
  void set_last_connection(::uint64_t value);

  private:
  ::uint64_t _internal_last_connection() const;
  void _internal_set_last_connection(::uint64_t value);

  public:
  // uint64 banned_until = 6;
  void clear_banned_until() ;
  ::uint64_t banned_until() const;
  void set_banned_until(::uint64_t value);

  private:
  ::uint64_t _internal_banned_until() const;
  void _internal_set_banned_until(::uint64_t value);

  public:
  // uint32 flags = 5;
  void clear_flags() ;
  ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // uint32 features = 9;
  void clear_features() ;
  ::uint32_t features() const;
  void set_features(::uint32_t value);

  private:
  ::uint32_t _internal_features() const;
  void _internal_set_features(::uint32_t value);

  public:
  // uint64 offline_at = 8;
  void clear_offline_at() ;
  ::uint64_t offline_at() const;
  void set_offline_at(::uint64_t value);

  private:
  ::uint64_t _internal_offline_at() const;
  void _internal_set_offline_at(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.Peer)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 11, 1,
      53, 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::Address > addresses_;
    ::google::protobuf::RepeatedPtrField<std::string> supported_protocols_;
    ::google::protobuf::internal::ArenaStringPtr public_key_;
    ::google::protobuf::internal::ArenaStringPtr node_id_;
    ::google::protobuf::internal::ArenaStringPtr banned_reason_;
    ::google::protobuf::internal::ArenaStringPtr user_agent_;
    ::uint64_t last_connection_;
    ::uint64_t banned_until_;
    ::uint32_t flags_;
    ::uint32_t features_;
    ::uint64_t offline_at_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit ListConnectedPeersResponse(::google::protobuf::Arena* arena);
  ListConnectedPeersResponse(::google::protobuf::Arena* arena, const ListConnectedPeersResponse& from);
  ListConnectedPeersResponse(::google::protobuf::Arena* arena, ListConnectedPeersResponse&& from) noexcept
      : ListConnectedPeersResponse(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 {
    kConnectedPeersFieldNumber = 1,
  };
  // repeated .tari.rpc.Peer connected_peers = 1;
  int connected_peers_size() const;
  private:
  int _internal_connected_peers_size() const;

  public:
  void clear_connected_peers() ;
  ::tari::rpc::Peer* mutable_connected_peers(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>* mutable_connected_peers();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>& _internal_connected_peers() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>* _internal_mutable_connected_peers();
  public:
  const ::tari::rpc::Peer& connected_peers(int index) const;
  ::tari::rpc::Peer* add_connected_peers();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>& connected_peers() const;
  // @@protoc_insertion_point(class_scope:tari.rpc.ListConnectedPeersResponse)
 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::Peer > connected_peers_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_network_2eproto;
};

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




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


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

// NodeIdentity

// bytes public_key = 1;
inline void NodeIdentity::clear_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.ClearToEmpty();
}
inline const std::string& NodeIdentity::public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NodeIdentity.public_key)
  return _internal_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void NodeIdentity::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.NodeIdentity.public_key)
}
inline std::string* NodeIdentity::mutable_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NodeIdentity.public_key)
  return _s;
}
inline const std::string& NodeIdentity::_internal_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Get();
}
inline void NodeIdentity::_internal_set_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.Set(value, GetArena());
}
inline std::string* NodeIdentity::_internal_mutable_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Mutable( GetArena());
}
inline std::string* NodeIdentity::release_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NodeIdentity.public_key)
  return _impl_.public_key_.Release();
}
inline void NodeIdentity::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.NodeIdentity.public_key)
}

// repeated string public_addresses = 2;
inline int NodeIdentity::_internal_public_addresses_size() const {
  return _internal_public_addresses().size();
}
inline int NodeIdentity::public_addresses_size() const {
  return _internal_public_addresses_size();
}
inline void NodeIdentity::clear_public_addresses() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_addresses_.Clear();
}
inline std::string* NodeIdentity::add_public_addresses()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_public_addresses()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.NodeIdentity.public_addresses)
  return _s;
}
inline const std::string& NodeIdentity::public_addresses(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NodeIdentity.public_addresses)
  return _internal_public_addresses().Get(index);
}
inline std::string* NodeIdentity::mutable_public_addresses(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.NodeIdentity.public_addresses)
  return _internal_mutable_public_addresses()->Mutable(index);
}
inline void NodeIdentity::set_public_addresses(int index, const std::string& value) {
  _internal_mutable_public_addresses()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::set_public_addresses(int index, std::string&& value) {
  _internal_mutable_public_addresses()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::set_public_addresses(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_public_addresses()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::set_public_addresses(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_public_addresses()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::set_public_addresses(int index, absl::string_view value) {
  _internal_mutable_public_addresses()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::add_public_addresses(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_public_addresses()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::add_public_addresses(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_public_addresses()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::add_public_addresses(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_public_addresses()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::add_public_addresses(const char* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_public_addresses()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.NodeIdentity.public_addresses)
}
inline void NodeIdentity::add_public_addresses(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_public_addresses()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.NodeIdentity.public_addresses)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
NodeIdentity::public_addresses() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.NodeIdentity.public_addresses)
  return _internal_public_addresses();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
NodeIdentity::mutable_public_addresses() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.NodeIdentity.public_addresses)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_public_addresses();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
NodeIdentity::_internal_public_addresses() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_addresses_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
NodeIdentity::_internal_mutable_public_addresses() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.public_addresses_;
}

// bytes node_id = 3;
inline void NodeIdentity::clear_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.ClearToEmpty();
}
inline const std::string& NodeIdentity::node_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.NodeIdentity.node_id)
  return _internal_node_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void NodeIdentity::set_node_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.NodeIdentity.node_id)
}
inline std::string* NodeIdentity::mutable_node_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_node_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.NodeIdentity.node_id)
  return _s;
}
inline const std::string& NodeIdentity::_internal_node_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Get();
}
inline void NodeIdentity::_internal_set_node_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.Set(value, GetArena());
}
inline std::string* NodeIdentity::_internal_mutable_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Mutable( GetArena());
}
inline std::string* NodeIdentity::release_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.NodeIdentity.node_id)
  return _impl_.node_id_.Release();
}
inline void NodeIdentity::set_allocated_node_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.node_id_.IsDefault()) {
          _impl_.node_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.NodeIdentity.node_id)
}

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

// Peer

// bytes public_key = 1;
inline void Peer::clear_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.ClearToEmpty();
}
inline const std::string& Peer::public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.public_key)
  return _internal_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Peer::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.Peer.public_key)
}
inline std::string* Peer::mutable_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.public_key)
  return _s;
}
inline const std::string& Peer::_internal_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Get();
}
inline void Peer::_internal_set_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.Set(value, GetArena());
}
inline std::string* Peer::_internal_mutable_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Mutable( GetArena());
}
inline std::string* Peer::release_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Peer.public_key)
  return _impl_.public_key_.Release();
}
inline void Peer::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.Peer.public_key)
}

// bytes node_id = 2;
inline void Peer::clear_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.ClearToEmpty();
}
inline const std::string& Peer::node_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.node_id)
  return _internal_node_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Peer::set_node_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.node_id)
}
inline std::string* Peer::mutable_node_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_node_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.node_id)
  return _s;
}
inline const std::string& Peer::_internal_node_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Get();
}
inline void Peer::_internal_set_node_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.Set(value, GetArena());
}
inline std::string* Peer::_internal_mutable_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Mutable( GetArena());
}
inline std::string* Peer::release_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Peer.node_id)
  return _impl_.node_id_.Release();
}
inline void Peer::set_allocated_node_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.node_id_.IsDefault()) {
          _impl_.node_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Peer.node_id)
}

// repeated .tari.rpc.Address addresses = 3;
inline int Peer::_internal_addresses_size() const {
  return _internal_addresses().size();
}
inline int Peer::addresses_size() const {
  return _internal_addresses_size();
}
inline void Peer::clear_addresses() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.addresses_.Clear();
}
inline ::tari::rpc::Address* Peer::mutable_addresses(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.addresses)
  return _internal_mutable_addresses()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>* Peer::mutable_addresses()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.Peer.addresses)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_addresses();
}
inline const ::tari::rpc::Address& Peer::addresses(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.addresses)
  return _internal_addresses().Get(index);
}
inline ::tari::rpc::Address* Peer::add_addresses() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::Address* _add = _internal_mutable_addresses()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.Peer.addresses)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>& Peer::addresses() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.Peer.addresses)
  return _internal_addresses();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>&
Peer::_internal_addresses() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.addresses_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Address>*
Peer::_internal_mutable_addresses() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.addresses_;
}

// uint64 last_connection = 4;
inline void Peer::clear_last_connection() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_connection_ = ::uint64_t{0u};
}
inline ::uint64_t Peer::last_connection() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.last_connection)
  return _internal_last_connection();
}
inline void Peer::set_last_connection(::uint64_t value) {
  _internal_set_last_connection(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.last_connection)
}
inline ::uint64_t Peer::_internal_last_connection() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.last_connection_;
}
inline void Peer::_internal_set_last_connection(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_connection_ = value;
}

// uint32 flags = 5;
inline void Peer::clear_flags() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.flags_ = 0u;
}
inline ::uint32_t Peer::flags() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.flags)
  return _internal_flags();
}
inline void Peer::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.flags)
}
inline ::uint32_t Peer::_internal_flags() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.flags_;
}
inline void Peer::_internal_set_flags(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.flags_ = value;
}

// uint64 banned_until = 6;
inline void Peer::clear_banned_until() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_until_ = ::uint64_t{0u};
}
inline ::uint64_t Peer::banned_until() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.banned_until)
  return _internal_banned_until();
}
inline void Peer::set_banned_until(::uint64_t value) {
  _internal_set_banned_until(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.banned_until)
}
inline ::uint64_t Peer::_internal_banned_until() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.banned_until_;
}
inline void Peer::_internal_set_banned_until(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_until_ = value;
}

// string banned_reason = 7;
inline void Peer::clear_banned_reason() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_reason_.ClearToEmpty();
}
inline const std::string& Peer::banned_reason() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.banned_reason)
  return _internal_banned_reason();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Peer::set_banned_reason(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_reason_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.banned_reason)
}
inline std::string* Peer::mutable_banned_reason() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_banned_reason();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.banned_reason)
  return _s;
}
inline const std::string& Peer::_internal_banned_reason() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.banned_reason_.Get();
}
inline void Peer::_internal_set_banned_reason(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_reason_.Set(value, GetArena());
}
inline std::string* Peer::_internal_mutable_banned_reason() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.banned_reason_.Mutable( GetArena());
}
inline std::string* Peer::release_banned_reason() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Peer.banned_reason)
  return _impl_.banned_reason_.Release();
}
inline void Peer::set_allocated_banned_reason(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.banned_reason_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.banned_reason_.IsDefault()) {
          _impl_.banned_reason_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Peer.banned_reason)
}

// uint64 offline_at = 8;
inline void Peer::clear_offline_at() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offline_at_ = ::uint64_t{0u};
}
inline ::uint64_t Peer::offline_at() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.offline_at)
  return _internal_offline_at();
}
inline void Peer::set_offline_at(::uint64_t value) {
  _internal_set_offline_at(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.offline_at)
}
inline ::uint64_t Peer::_internal_offline_at() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.offline_at_;
}
inline void Peer::_internal_set_offline_at(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offline_at_ = value;
}

// uint32 features = 9;
inline void Peer::clear_features() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.features_ = 0u;
}
inline ::uint32_t Peer::features() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.features)
  return _internal_features();
}
inline void Peer::set_features(::uint32_t value) {
  _internal_set_features(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.features)
}
inline ::uint32_t Peer::_internal_features() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.features_;
}
inline void Peer::_internal_set_features(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.features_ = value;
}

// repeated bytes supported_protocols = 11;
inline int Peer::_internal_supported_protocols_size() const {
  return _internal_supported_protocols().size();
}
inline int Peer::supported_protocols_size() const {
  return _internal_supported_protocols_size();
}
inline void Peer::clear_supported_protocols() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.supported_protocols_.Clear();
}
inline std::string* Peer::add_supported_protocols()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  std::string* _s = _internal_mutable_supported_protocols()->Add();
  // @@protoc_insertion_point(field_add_mutable:tari.rpc.Peer.supported_protocols)
  return _s;
}
inline const std::string& Peer::supported_protocols(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.supported_protocols)
  return _internal_supported_protocols().Get(index);
}
inline std::string* Peer::mutable_supported_protocols(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.supported_protocols)
  return _internal_mutable_supported_protocols()->Mutable(index);
}
inline void Peer::set_supported_protocols(int index, const std::string& value) {
  _internal_mutable_supported_protocols()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.supported_protocols)
}
inline void Peer::set_supported_protocols(int index, std::string&& value) {
  _internal_mutable_supported_protocols()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.supported_protocols)
}
inline void Peer::set_supported_protocols(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_supported_protocols()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:tari.rpc.Peer.supported_protocols)
}
inline void Peer::set_supported_protocols(int index, const void* value,
                              std::size_t size) {
  _internal_mutable_supported_protocols()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:tari.rpc.Peer.supported_protocols)
}
inline void Peer::set_supported_protocols(int index, absl::string_view value) {
  _internal_mutable_supported_protocols()->Mutable(index)->assign(
      value.data(), value.size());
  // @@protoc_insertion_point(field_set_string_piece:tari.rpc.Peer.supported_protocols)
}
inline void Peer::add_supported_protocols(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_supported_protocols()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:tari.rpc.Peer.supported_protocols)
}
inline void Peer::add_supported_protocols(std::string&& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_supported_protocols()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:tari.rpc.Peer.supported_protocols)
}
inline void Peer::add_supported_protocols(const char* value) {
  ABSL_DCHECK(value != nullptr);
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_supported_protocols()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:tari.rpc.Peer.supported_protocols)
}
inline void Peer::add_supported_protocols(const void* value, std::size_t size) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_supported_protocols()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:tari.rpc.Peer.supported_protocols)
}
inline void Peer::add_supported_protocols(absl::string_view value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _internal_mutable_supported_protocols()->Add()->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_add_string_piece:tari.rpc.Peer.supported_protocols)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
Peer::supported_protocols() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.Peer.supported_protocols)
  return _internal_supported_protocols();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
Peer::mutable_supported_protocols() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.Peer.supported_protocols)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_supported_protocols();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
Peer::_internal_supported_protocols() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.supported_protocols_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
Peer::_internal_mutable_supported_protocols() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.supported_protocols_;
}

// string user_agent = 12;
inline void Peer::clear_user_agent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.user_agent_.ClearToEmpty();
}
inline const std::string& Peer::user_agent() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Peer.user_agent)
  return _internal_user_agent();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Peer::set_user_agent(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.user_agent_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Peer.user_agent)
}
inline std::string* Peer::mutable_user_agent() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_user_agent();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Peer.user_agent)
  return _s;
}
inline const std::string& Peer::_internal_user_agent() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.user_agent_.Get();
}
inline void Peer::_internal_set_user_agent(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.user_agent_.Set(value, GetArena());
}
inline std::string* Peer::_internal_mutable_user_agent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.user_agent_.Mutable( GetArena());
}
inline std::string* Peer::release_user_agent() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Peer.user_agent)
  return _impl_.user_agent_.Release();
}
inline void Peer::set_allocated_user_agent(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.user_agent_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.user_agent_.IsDefault()) {
          _impl_.user_agent_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Peer.user_agent)
}

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

// NetworkStatusResponse

// .tari.rpc.ConnectivityStatus status = 1;
inline void NetworkStatusResponse::clear_status() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.status_ = 0;
}
inline ::tari::rpc::ConnectivityStatus NetworkStatusResponse::status() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkStatusResponse.status)
  return _internal_status();
}
inline void NetworkStatusResponse::set_status(::tari::rpc::ConnectivityStatus value) {
  _internal_set_status(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkStatusResponse.status)
}
inline ::tari::rpc::ConnectivityStatus NetworkStatusResponse::_internal_status() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return static_cast<::tari::rpc::ConnectivityStatus>(_impl_.status_);
}
inline void NetworkStatusResponse::_internal_set_status(::tari::rpc::ConnectivityStatus value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.status_ = value;
}

// uint32 avg_latency_ms = 2;
inline void NetworkStatusResponse::clear_avg_latency_ms() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.avg_latency_ms_ = 0u;
}
inline ::uint32_t NetworkStatusResponse::avg_latency_ms() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkStatusResponse.avg_latency_ms)
  return _internal_avg_latency_ms();
}
inline void NetworkStatusResponse::set_avg_latency_ms(::uint32_t value) {
  _internal_set_avg_latency_ms(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkStatusResponse.avg_latency_ms)
}
inline ::uint32_t NetworkStatusResponse::_internal_avg_latency_ms() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.avg_latency_ms_;
}
inline void NetworkStatusResponse::_internal_set_avg_latency_ms(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.avg_latency_ms_ = value;
}

// uint32 num_node_connections = 3;
inline void NetworkStatusResponse::clear_num_node_connections() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_node_connections_ = 0u;
}
inline ::uint32_t NetworkStatusResponse::num_node_connections() const {
  // @@protoc_insertion_point(field_get:tari.rpc.NetworkStatusResponse.num_node_connections)
  return _internal_num_node_connections();
}
inline void NetworkStatusResponse::set_num_node_connections(::uint32_t value) {
  _internal_set_num_node_connections(value);
  // @@protoc_insertion_point(field_set:tari.rpc.NetworkStatusResponse.num_node_connections)
}
inline ::uint32_t NetworkStatusResponse::_internal_num_node_connections() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.num_node_connections_;
}
inline void NetworkStatusResponse::_internal_set_num_node_connections(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.num_node_connections_ = value;
}

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

// Address

// bytes address = 1;
inline void Address::clear_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.ClearToEmpty();
}
inline const std::string& Address::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Address.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Address::set_address(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Address.address)
}
inline std::string* Address::mutable_address() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Address.address)
  return _s;
}
inline const std::string& Address::_internal_address() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.address_.Get();
}
inline void Address::_internal_set_address(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.address_.Set(value, GetArena());
}
inline std::string* Address::_internal_mutable_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.address_.Mutable( GetArena());
}
inline std::string* Address::release_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Address.address)
  return _impl_.address_.Release();
}
inline void Address::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.Address.address)
}

// string last_seen = 2;
inline void Address::clear_last_seen() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_seen_.ClearToEmpty();
}
inline const std::string& Address::last_seen() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Address.last_seen)
  return _internal_last_seen();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Address::set_last_seen(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_seen_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Address.last_seen)
}
inline std::string* Address::mutable_last_seen() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_last_seen();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Address.last_seen)
  return _s;
}
inline const std::string& Address::_internal_last_seen() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.last_seen_.Get();
}
inline void Address::_internal_set_last_seen(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_seen_.Set(value, GetArena());
}
inline std::string* Address::_internal_mutable_last_seen() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.last_seen_.Mutable( GetArena());
}
inline std::string* Address::release_last_seen() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Address.last_seen)
  return _impl_.last_seen_.Release();
}
inline void Address::set_allocated_last_seen(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.last_seen_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.last_seen_.IsDefault()) {
          _impl_.last_seen_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Address.last_seen)
}

// uint32 connection_attempts = 3;
inline void Address::clear_connection_attempts() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.connection_attempts_ = 0u;
}
inline ::uint32_t Address::connection_attempts() const {
  // @@protoc_insertion_point(field_get:tari.rpc.Address.connection_attempts)
  return _internal_connection_attempts();
}
inline void Address::set_connection_attempts(::uint32_t value) {
  _internal_set_connection_attempts(value);
  // @@protoc_insertion_point(field_set:tari.rpc.Address.connection_attempts)
}
inline ::uint32_t Address::_internal_connection_attempts() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.connection_attempts_;
}
inline void Address::_internal_set_connection_attempts(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.connection_attempts_ = value;
}

// .tari.rpc.AverageLatency avg_latency = 5;
inline bool Address::has_avg_latency() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.avg_latency_ != nullptr);
  return value;
}
inline void Address::clear_avg_latency() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.avg_latency_ != nullptr) _impl_.avg_latency_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::AverageLatency& Address::_internal_avg_latency() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::AverageLatency* p = _impl_.avg_latency_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::AverageLatency&>(::tari::rpc::_AverageLatency_default_instance_);
}
inline const ::tari::rpc::AverageLatency& Address::avg_latency() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Address.avg_latency)
  return _internal_avg_latency();
}
inline void Address::unsafe_arena_set_allocated_avg_latency(::tari::rpc::AverageLatency* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.avg_latency_);
  }
  _impl_.avg_latency_ = reinterpret_cast<::tari::rpc::AverageLatency*>(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.Address.avg_latency)
}
inline ::tari::rpc::AverageLatency* Address::release_avg_latency() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::AverageLatency* released = _impl_.avg_latency_;
  _impl_.avg_latency_ = 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::AverageLatency* Address::unsafe_arena_release_avg_latency() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Address.avg_latency)

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::AverageLatency* temp = _impl_.avg_latency_;
  _impl_.avg_latency_ = nullptr;
  return temp;
}
inline ::tari::rpc::AverageLatency* Address::_internal_mutable_avg_latency() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.avg_latency_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::AverageLatency>(GetArena());
    _impl_.avg_latency_ = reinterpret_cast<::tari::rpc::AverageLatency*>(p);
  }
  return _impl_.avg_latency_;
}
inline ::tari::rpc::AverageLatency* Address::mutable_avg_latency() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::AverageLatency* _msg = _internal_mutable_avg_latency();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Address.avg_latency)
  return _msg;
}
inline void Address::set_allocated_avg_latency(::tari::rpc::AverageLatency* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.avg_latency_);
  }

  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_.avg_latency_ = reinterpret_cast<::tari::rpc::AverageLatency*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Address.avg_latency)
}

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

// AverageLatency

// uint64 latency = 1;
inline void AverageLatency::clear_latency() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.latency_ = ::uint64_t{0u};
}
inline ::uint64_t AverageLatency::latency() const {
  // @@protoc_insertion_point(field_get:tari.rpc.AverageLatency.latency)
  return _internal_latency();
}
inline void AverageLatency::set_latency(::uint64_t value) {
  _internal_set_latency(value);
  // @@protoc_insertion_point(field_set:tari.rpc.AverageLatency.latency)
}
inline ::uint64_t AverageLatency::_internal_latency() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.latency_;
}
inline void AverageLatency::_internal_set_latency(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.latency_ = value;
}

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

// ListConnectedPeersResponse

// repeated .tari.rpc.Peer connected_peers = 1;
inline int ListConnectedPeersResponse::_internal_connected_peers_size() const {
  return _internal_connected_peers().size();
}
inline int ListConnectedPeersResponse::connected_peers_size() const {
  return _internal_connected_peers_size();
}
inline void ListConnectedPeersResponse::clear_connected_peers() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.connected_peers_.Clear();
}
inline ::tari::rpc::Peer* ListConnectedPeersResponse::mutable_connected_peers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.ListConnectedPeersResponse.connected_peers)
  return _internal_mutable_connected_peers()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>* ListConnectedPeersResponse::mutable_connected_peers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.ListConnectedPeersResponse.connected_peers)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_connected_peers();
}
inline const ::tari::rpc::Peer& ListConnectedPeersResponse::connected_peers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.ListConnectedPeersResponse.connected_peers)
  return _internal_connected_peers().Get(index);
}
inline ::tari::rpc::Peer* ListConnectedPeersResponse::add_connected_peers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::Peer* _add = _internal_mutable_connected_peers()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.ListConnectedPeersResponse.connected_peers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>& ListConnectedPeersResponse::connected_peers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.ListConnectedPeersResponse.connected_peers)
  return _internal_connected_peers();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>&
ListConnectedPeersResponse::_internal_connected_peers() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.connected_peers_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::Peer>*
ListConnectedPeersResponse::_internal_mutable_connected_peers() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.connected_peers_;
}

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

// SoftwareUpdate

// bool has_update = 1;
inline void SoftwareUpdate::clear_has_update() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.has_update_ = false;
}
inline bool SoftwareUpdate::has_update() const {
  // @@protoc_insertion_point(field_get:tari.rpc.SoftwareUpdate.has_update)
  return _internal_has_update();
}
inline void SoftwareUpdate::set_has_update(bool value) {
  _internal_set_has_update(value);
  // @@protoc_insertion_point(field_set:tari.rpc.SoftwareUpdate.has_update)
}
inline bool SoftwareUpdate::_internal_has_update() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.has_update_;
}
inline void SoftwareUpdate::_internal_set_has_update(bool value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.has_update_ = value;
}

// string version = 2;
inline void SoftwareUpdate::clear_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_.ClearToEmpty();
}
inline const std::string& SoftwareUpdate::version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SoftwareUpdate.version)
  return _internal_version();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SoftwareUpdate::set_version(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.SoftwareUpdate.version)
}
inline std::string* SoftwareUpdate::mutable_version() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_version();
  // @@protoc_insertion_point(field_mutable:tari.rpc.SoftwareUpdate.version)
  return _s;
}
inline const std::string& SoftwareUpdate::_internal_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.version_.Get();
}
inline void SoftwareUpdate::_internal_set_version(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_.Set(value, GetArena());
}
inline std::string* SoftwareUpdate::_internal_mutable_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.version_.Mutable( GetArena());
}
inline std::string* SoftwareUpdate::release_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.SoftwareUpdate.version)
  return _impl_.version_.Release();
}
inline void SoftwareUpdate::set_allocated_version(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.version_.IsDefault()) {
          _impl_.version_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SoftwareUpdate.version)
}

// string sha = 3;
inline void SoftwareUpdate::clear_sha() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha_.ClearToEmpty();
}
inline const std::string& SoftwareUpdate::sha() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SoftwareUpdate.sha)
  return _internal_sha();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SoftwareUpdate::set_sha(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.SoftwareUpdate.sha)
}
inline std::string* SoftwareUpdate::mutable_sha() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_sha();
  // @@protoc_insertion_point(field_mutable:tari.rpc.SoftwareUpdate.sha)
  return _s;
}
inline const std::string& SoftwareUpdate::_internal_sha() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.sha_.Get();
}
inline void SoftwareUpdate::_internal_set_sha(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha_.Set(value, GetArena());
}
inline std::string* SoftwareUpdate::_internal_mutable_sha() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.sha_.Mutable( GetArena());
}
inline std::string* SoftwareUpdate::release_sha() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.SoftwareUpdate.sha)
  return _impl_.sha_.Release();
}
inline void SoftwareUpdate::set_allocated_sha(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sha_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.sha_.IsDefault()) {
          _impl_.sha_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SoftwareUpdate.sha)
}

// string download_url = 4;
inline void SoftwareUpdate::clear_download_url() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.download_url_.ClearToEmpty();
}
inline const std::string& SoftwareUpdate::download_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.SoftwareUpdate.download_url)
  return _internal_download_url();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void SoftwareUpdate::set_download_url(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.download_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.SoftwareUpdate.download_url)
}
inline std::string* SoftwareUpdate::mutable_download_url() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_download_url();
  // @@protoc_insertion_point(field_mutable:tari.rpc.SoftwareUpdate.download_url)
  return _s;
}
inline const std::string& SoftwareUpdate::_internal_download_url() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.download_url_.Get();
}
inline void SoftwareUpdate::_internal_set_download_url(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.download_url_.Set(value, GetArena());
}
inline std::string* SoftwareUpdate::_internal_mutable_download_url() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.download_url_.Mutable( GetArena());
}
inline std::string* SoftwareUpdate::release_download_url() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.SoftwareUpdate.download_url)
  return _impl_.download_url_.Release();
}
inline void SoftwareUpdate::set_allocated_download_url(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.download_url_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.download_url_.IsDefault()) {
          _impl_.download_url_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SoftwareUpdate.download_url)
}

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

// GetIdentityRequest

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

// GetIdentityResponse

// bytes public_key = 1;
inline void GetIdentityResponse::clear_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.ClearToEmpty();
}
inline const std::string& GetIdentityResponse::public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetIdentityResponse.public_key)
  return _internal_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetIdentityResponse::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.GetIdentityResponse.public_key)
}
inline std::string* GetIdentityResponse::mutable_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetIdentityResponse.public_key)
  return _s;
}
inline const std::string& GetIdentityResponse::_internal_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Get();
}
inline void GetIdentityResponse::_internal_set_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_key_.Set(value, GetArena());
}
inline std::string* GetIdentityResponse::_internal_mutable_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_key_.Mutable( GetArena());
}
inline std::string* GetIdentityResponse::release_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetIdentityResponse.public_key)
  return _impl_.public_key_.Release();
}
inline void GetIdentityResponse::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.GetIdentityResponse.public_key)
}

// string public_address = 2;
inline void GetIdentityResponse::clear_public_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_address_.ClearToEmpty();
}
inline const std::string& GetIdentityResponse::public_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetIdentityResponse.public_address)
  return _internal_public_address();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetIdentityResponse::set_public_address(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetIdentityResponse.public_address)
}
inline std::string* GetIdentityResponse::mutable_public_address() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_public_address();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetIdentityResponse.public_address)
  return _s;
}
inline const std::string& GetIdentityResponse::_internal_public_address() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.public_address_.Get();
}
inline void GetIdentityResponse::_internal_set_public_address(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_address_.Set(value, GetArena());
}
inline std::string* GetIdentityResponse::_internal_mutable_public_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.public_address_.Mutable( GetArena());
}
inline std::string* GetIdentityResponse::release_public_address() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetIdentityResponse.public_address)
  return _impl_.public_address_.Release();
}
inline void GetIdentityResponse::set_allocated_public_address(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.public_address_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.public_address_.IsDefault()) {
          _impl_.public_address_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetIdentityResponse.public_address)
}

// bytes node_id = 3;
inline void GetIdentityResponse::clear_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.ClearToEmpty();
}
inline const std::string& GetIdentityResponse::node_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.GetIdentityResponse.node_id)
  return _internal_node_id();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void GetIdentityResponse::set_node_id(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.GetIdentityResponse.node_id)
}
inline std::string* GetIdentityResponse::mutable_node_id() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_node_id();
  // @@protoc_insertion_point(field_mutable:tari.rpc.GetIdentityResponse.node_id)
  return _s;
}
inline const std::string& GetIdentityResponse::_internal_node_id() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Get();
}
inline void GetIdentityResponse::_internal_set_node_id(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.Set(value, GetArena());
}
inline std::string* GetIdentityResponse::_internal_mutable_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.node_id_.Mutable( GetArena());
}
inline std::string* GetIdentityResponse::release_node_id() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.GetIdentityResponse.node_id)
  return _impl_.node_id_.Release();
}
inline void GetIdentityResponse::set_allocated_node_id(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.node_id_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.node_id_.IsDefault()) {
          _impl_.node_id_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.GetIdentityResponse.node_id)
}

#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::ConnectivityStatus> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::tari::rpc::ConnectivityStatus>() {
  return ::tari::rpc::ConnectivityStatus_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_network_2eproto_2epb_2eh
