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

#ifndef GOOGLE_PROTOBUF_INCLUDED_transaction_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_transaction_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_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/unknown_field_set.h"
#include "types.pb.h"
#include "sidechain_types.pb.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_transaction_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_transaction_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_transaction_2eproto;
namespace tari {
namespace rpc {
class AggregateBody;
struct AggregateBodyDefaultTypeInternal;
extern AggregateBodyDefaultTypeInternal _AggregateBody_default_instance_;
class OutputFeatures;
struct OutputFeaturesDefaultTypeInternal;
extern OutputFeaturesDefaultTypeInternal _OutputFeatures_default_instance_;
class Transaction;
struct TransactionDefaultTypeInternal;
extern TransactionDefaultTypeInternal _Transaction_default_instance_;
class TransactionInput;
struct TransactionInputDefaultTypeInternal;
extern TransactionInputDefaultTypeInternal _TransactionInput_default_instance_;
class TransactionKernel;
struct TransactionKernelDefaultTypeInternal;
extern TransactionKernelDefaultTypeInternal _TransactionKernel_default_instance_;
class TransactionOutput;
struct TransactionOutputDefaultTypeInternal;
extern TransactionOutputDefaultTypeInternal _TransactionOutput_default_instance_;
class UnblindedOutput;
struct UnblindedOutputDefaultTypeInternal;
extern UnblindedOutputDefaultTypeInternal _UnblindedOutput_default_instance_;
}  // namespace rpc
}  // namespace tari
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace tari {
namespace rpc {

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


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

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

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

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

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

 protected:
  explicit TransactionKernel(::google::protobuf::Arena* arena);
  TransactionKernel(::google::protobuf::Arena* arena, const TransactionKernel& from);
  TransactionKernel(::google::protobuf::Arena* arena, TransactionKernel&& from) noexcept
      : TransactionKernel(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 {
    kExcessFieldNumber = 6,
    kHashFieldNumber = 8,
    kBurnCommitmentFieldNumber = 10,
    kExcessSigFieldNumber = 7,
    kFeeFieldNumber = 2,
    kLockHeightFieldNumber = 3,
    kFeaturesFieldNumber = 1,
    kVersionFieldNumber = 9,
  };
  // bytes excess = 6;
  void clear_excess() ;
  const std::string& excess() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_excess(Arg_&& arg, Args_... args);
  std::string* mutable_excess();
  PROTOBUF_NODISCARD std::string* release_excess();
  void set_allocated_excess(std::string* value);

  private:
  const std::string& _internal_excess() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_excess(
      const std::string& value);
  std::string* _internal_mutable_excess();

  public:
  // bytes hash = 8;
  void clear_hash() ;
  const std::string& hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  std::string* mutable_hash();
  PROTOBUF_NODISCARD std::string* release_hash();
  void set_allocated_hash(std::string* value);

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

  public:
  // bytes burn_commitment = 10;
  void clear_burn_commitment() ;
  const std::string& burn_commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_burn_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_burn_commitment();
  PROTOBUF_NODISCARD std::string* release_burn_commitment();
  void set_allocated_burn_commitment(std::string* value);

  private:
  const std::string& _internal_burn_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_burn_commitment(
      const std::string& value);
  std::string* _internal_mutable_burn_commitment();

  public:
  // .tari.rpc.Signature excess_sig = 7;
  bool has_excess_sig() const;
  void clear_excess_sig() ;
  const ::tari::rpc::Signature& excess_sig() const;
  PROTOBUF_NODISCARD ::tari::rpc::Signature* release_excess_sig();
  ::tari::rpc::Signature* mutable_excess_sig();
  void set_allocated_excess_sig(::tari::rpc::Signature* value);
  void unsafe_arena_set_allocated_excess_sig(::tari::rpc::Signature* value);
  ::tari::rpc::Signature* unsafe_arena_release_excess_sig();

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

  public:
  // uint64 fee = 2;
  void clear_fee() ;
  ::uint64_t fee() const;
  void set_fee(::uint64_t value);

  private:
  ::uint64_t _internal_fee() const;
  void _internal_set_fee(::uint64_t value);

  public:
  // uint64 lock_height = 3;
  void clear_lock_height() ;
  ::uint64_t lock_height() const;
  void set_lock_height(::uint64_t value);

  private:
  ::uint64_t _internal_lock_height() const;
  void _internal_set_lock_height(::uint64_t value);

  public:
  // uint32 features = 1;
  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:
  // uint32 version = 9;
  void clear_version() ;
  ::uint32_t version() const;
  void set_version(::uint32_t value);

  private:
  ::uint32_t _internal_version() const;
  void _internal_set_version(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TransactionKernel)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 8, 1,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr excess_;
    ::google::protobuf::internal::ArenaStringPtr hash_;
    ::google::protobuf::internal::ArenaStringPtr burn_commitment_;
    ::tari::rpc::Signature* excess_sig_;
    ::uint64_t fee_;
    ::uint64_t lock_height_;
    ::uint32_t features_;
    ::uint32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit OutputFeatures(::google::protobuf::Arena* arena);
  OutputFeatures(::google::protobuf::Arena* arena, const OutputFeatures& from);
  OutputFeatures(::google::protobuf::Arena* arena, OutputFeatures&& from) noexcept
      : OutputFeatures(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 {
    kCoinbaseExtraFieldNumber = 4,
    kSidechainFeatureFieldNumber = 5,
    kVersionFieldNumber = 1,
    kOutputTypeFieldNumber = 2,
    kMaturityFieldNumber = 3,
    kRangeProofTypeFieldNumber = 6,
  };
  // bytes coinbase_extra = 4;
  void clear_coinbase_extra() ;
  const std::string& coinbase_extra() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_coinbase_extra(Arg_&& arg, Args_... args);
  std::string* mutable_coinbase_extra();
  PROTOBUF_NODISCARD std::string* release_coinbase_extra();
  void set_allocated_coinbase_extra(std::string* value);

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

  public:
  // .tari.rpc.SideChainFeature sidechain_feature = 5;
  bool has_sidechain_feature() const;
  void clear_sidechain_feature() ;
  const ::tari::rpc::SideChainFeature& sidechain_feature() const;
  PROTOBUF_NODISCARD ::tari::rpc::SideChainFeature* release_sidechain_feature();
  ::tari::rpc::SideChainFeature* mutable_sidechain_feature();
  void set_allocated_sidechain_feature(::tari::rpc::SideChainFeature* value);
  void unsafe_arena_set_allocated_sidechain_feature(::tari::rpc::SideChainFeature* value);
  ::tari::rpc::SideChainFeature* unsafe_arena_release_sidechain_feature();

  private:
  const ::tari::rpc::SideChainFeature& _internal_sidechain_feature() const;
  ::tari::rpc::SideChainFeature* _internal_mutable_sidechain_feature();

  public:
  // uint32 version = 1;
  void clear_version() ;
  ::uint32_t version() const;
  void set_version(::uint32_t value);

  private:
  ::uint32_t _internal_version() const;
  void _internal_set_version(::uint32_t value);

  public:
  // uint32 output_type = 2;
  void clear_output_type() ;
  ::uint32_t output_type() const;
  void set_output_type(::uint32_t value);

  private:
  ::uint32_t _internal_output_type() const;
  void _internal_set_output_type(::uint32_t value);

  public:
  // uint64 maturity = 3;
  void clear_maturity() ;
  ::uint64_t maturity() const;
  void set_maturity(::uint64_t value);

  private:
  ::uint64_t _internal_maturity() const;
  void _internal_set_maturity(::uint64_t value);

  public:
  // uint32 range_proof_type = 6;
  void clear_range_proof_type() ;
  ::uint32_t range_proof_type() const;
  void set_range_proof_type(::uint32_t value);

  private:
  ::uint32_t _internal_range_proof_type() const;
  void _internal_set_range_proof_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.OutputFeatures)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 6, 1,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr coinbase_extra_;
    ::tari::rpc::SideChainFeature* sidechain_feature_;
    ::uint32_t version_;
    ::uint32_t output_type_;
    ::uint64_t maturity_;
    ::uint32_t range_proof_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit UnblindedOutput(::google::protobuf::Arena* arena);
  UnblindedOutput(::google::protobuf::Arena* arena, const UnblindedOutput& from);
  UnblindedOutput(::google::protobuf::Arena* arena, UnblindedOutput&& from) noexcept
      : UnblindedOutput(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 {
    kSpendingKeyFieldNumber = 2,
    kScriptFieldNumber = 4,
    kInputDataFieldNumber = 5,
    kScriptPrivateKeyFieldNumber = 7,
    kSenderOffsetPublicKeyFieldNumber = 8,
    kCovenantFieldNumber = 11,
    kEncryptedDataFieldNumber = 12,
    kFeaturesFieldNumber = 3,
    kMetadataSignatureFieldNumber = 9,
    kValueFieldNumber = 1,
    kScriptLockHeightFieldNumber = 10,
    kMinimumValuePromiseFieldNumber = 13,
  };
  // bytes spending_key = 2;
  void clear_spending_key() ;
  const std::string& spending_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_spending_key(Arg_&& arg, Args_... args);
  std::string* mutable_spending_key();
  PROTOBUF_NODISCARD std::string* release_spending_key();
  void set_allocated_spending_key(std::string* value);

  private:
  const std::string& _internal_spending_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_spending_key(
      const std::string& value);
  std::string* _internal_mutable_spending_key();

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

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

  public:
  // bytes input_data = 5;
  void clear_input_data() ;
  const std::string& input_data() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_input_data(Arg_&& arg, Args_... args);
  std::string* mutable_input_data();
  PROTOBUF_NODISCARD std::string* release_input_data();
  void set_allocated_input_data(std::string* value);

  private:
  const std::string& _internal_input_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_input_data(
      const std::string& value);
  std::string* _internal_mutable_input_data();

  public:
  // bytes script_private_key = 7;
  void clear_script_private_key() ;
  const std::string& script_private_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_script_private_key(Arg_&& arg, Args_... args);
  std::string* mutable_script_private_key();
  PROTOBUF_NODISCARD std::string* release_script_private_key();
  void set_allocated_script_private_key(std::string* value);

  private:
  const std::string& _internal_script_private_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_script_private_key(
      const std::string& value);
  std::string* _internal_mutable_script_private_key();

  public:
  // bytes sender_offset_public_key = 8;
  void clear_sender_offset_public_key() ;
  const std::string& sender_offset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_sender_offset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_sender_offset_public_key();
  PROTOBUF_NODISCARD std::string* release_sender_offset_public_key();
  void set_allocated_sender_offset_public_key(std::string* value);

  private:
  const std::string& _internal_sender_offset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_sender_offset_public_key(
      const std::string& value);
  std::string* _internal_mutable_sender_offset_public_key();

  public:
  // bytes covenant = 11;
  void clear_covenant() ;
  const std::string& covenant() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_covenant(Arg_&& arg, Args_... args);
  std::string* mutable_covenant();
  PROTOBUF_NODISCARD std::string* release_covenant();
  void set_allocated_covenant(std::string* value);

  private:
  const std::string& _internal_covenant() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_covenant(
      const std::string& value);
  std::string* _internal_mutable_covenant();

  public:
  // bytes encrypted_data = 12;
  void clear_encrypted_data() ;
  const std::string& encrypted_data() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_encrypted_data(Arg_&& arg, Args_... args);
  std::string* mutable_encrypted_data();
  PROTOBUF_NODISCARD std::string* release_encrypted_data();
  void set_allocated_encrypted_data(std::string* value);

  private:
  const std::string& _internal_encrypted_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_encrypted_data(
      const std::string& value);
  std::string* _internal_mutable_encrypted_data();

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

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

  public:
  // .tari.rpc.ComAndPubSignature metadata_signature = 9;
  bool has_metadata_signature() const;
  void clear_metadata_signature() ;
  const ::tari::rpc::ComAndPubSignature& metadata_signature() const;
  PROTOBUF_NODISCARD ::tari::rpc::ComAndPubSignature* release_metadata_signature();
  ::tari::rpc::ComAndPubSignature* mutable_metadata_signature();
  void set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  void unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  ::tari::rpc::ComAndPubSignature* unsafe_arena_release_metadata_signature();

  private:
  const ::tari::rpc::ComAndPubSignature& _internal_metadata_signature() const;
  ::tari::rpc::ComAndPubSignature* _internal_mutable_metadata_signature();

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

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

  public:
  // uint64 script_lock_height = 10;
  void clear_script_lock_height() ;
  ::uint64_t script_lock_height() const;
  void set_script_lock_height(::uint64_t value);

  private:
  ::uint64_t _internal_script_lock_height() const;
  void _internal_set_script_lock_height(::uint64_t value);

  public:
  // uint64 minimum_value_promise = 13;
  void clear_minimum_value_promise() ;
  ::uint64_t minimum_value_promise() const;
  void set_minimum_value_promise(::uint64_t value);

  private:
  ::uint64_t _internal_minimum_value_promise() const;
  void _internal_set_minimum_value_promise(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.UnblindedOutput)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 12, 2,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr spending_key_;
    ::google::protobuf::internal::ArenaStringPtr script_;
    ::google::protobuf::internal::ArenaStringPtr input_data_;
    ::google::protobuf::internal::ArenaStringPtr script_private_key_;
    ::google::protobuf::internal::ArenaStringPtr sender_offset_public_key_;
    ::google::protobuf::internal::ArenaStringPtr covenant_;
    ::google::protobuf::internal::ArenaStringPtr encrypted_data_;
    ::tari::rpc::OutputFeatures* features_;
    ::tari::rpc::ComAndPubSignature* metadata_signature_;
    ::uint64_t value_;
    ::uint64_t script_lock_height_;
    ::uint64_t minimum_value_promise_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit TransactionOutput(::google::protobuf::Arena* arena);
  TransactionOutput(::google::protobuf::Arena* arena, const TransactionOutput& from);
  TransactionOutput(::google::protobuf::Arena* arena, TransactionOutput&& from) noexcept
      : TransactionOutput(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 {
    kCommitmentFieldNumber = 2,
    kHashFieldNumber = 4,
    kScriptFieldNumber = 5,
    kSenderOffsetPublicKeyFieldNumber = 6,
    kCovenantFieldNumber = 8,
    kEncryptedDataFieldNumber = 10,
    kFeaturesFieldNumber = 1,
    kRangeProofFieldNumber = 3,
    kMetadataSignatureFieldNumber = 7,
    kMinimumValuePromiseFieldNumber = 11,
    kVersionFieldNumber = 9,
  };
  // bytes commitment = 2;
  void clear_commitment() ;
  const std::string& commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_commitment();
  PROTOBUF_NODISCARD std::string* release_commitment();
  void set_allocated_commitment(std::string* value);

  private:
  const std::string& _internal_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_commitment(
      const std::string& value);
  std::string* _internal_mutable_commitment();

  public:
  // bytes hash = 4;
  void clear_hash() ;
  const std::string& hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  std::string* mutable_hash();
  PROTOBUF_NODISCARD std::string* release_hash();
  void set_allocated_hash(std::string* value);

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

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

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

  public:
  // bytes sender_offset_public_key = 6;
  void clear_sender_offset_public_key() ;
  const std::string& sender_offset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_sender_offset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_sender_offset_public_key();
  PROTOBUF_NODISCARD std::string* release_sender_offset_public_key();
  void set_allocated_sender_offset_public_key(std::string* value);

  private:
  const std::string& _internal_sender_offset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_sender_offset_public_key(
      const std::string& value);
  std::string* _internal_mutable_sender_offset_public_key();

  public:
  // bytes covenant = 8;
  void clear_covenant() ;
  const std::string& covenant() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_covenant(Arg_&& arg, Args_... args);
  std::string* mutable_covenant();
  PROTOBUF_NODISCARD std::string* release_covenant();
  void set_allocated_covenant(std::string* value);

  private:
  const std::string& _internal_covenant() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_covenant(
      const std::string& value);
  std::string* _internal_mutable_covenant();

  public:
  // bytes encrypted_data = 10;
  void clear_encrypted_data() ;
  const std::string& encrypted_data() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_encrypted_data(Arg_&& arg, Args_... args);
  std::string* mutable_encrypted_data();
  PROTOBUF_NODISCARD std::string* release_encrypted_data();
  void set_allocated_encrypted_data(std::string* value);

  private:
  const std::string& _internal_encrypted_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_encrypted_data(
      const std::string& value);
  std::string* _internal_mutable_encrypted_data();

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

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

  public:
  // .tari.rpc.RangeProof range_proof = 3;
  bool has_range_proof() const;
  void clear_range_proof() ;
  const ::tari::rpc::RangeProof& range_proof() const;
  PROTOBUF_NODISCARD ::tari::rpc::RangeProof* release_range_proof();
  ::tari::rpc::RangeProof* mutable_range_proof();
  void set_allocated_range_proof(::tari::rpc::RangeProof* value);
  void unsafe_arena_set_allocated_range_proof(::tari::rpc::RangeProof* value);
  ::tari::rpc::RangeProof* unsafe_arena_release_range_proof();

  private:
  const ::tari::rpc::RangeProof& _internal_range_proof() const;
  ::tari::rpc::RangeProof* _internal_mutable_range_proof();

  public:
  // .tari.rpc.ComAndPubSignature metadata_signature = 7;
  bool has_metadata_signature() const;
  void clear_metadata_signature() ;
  const ::tari::rpc::ComAndPubSignature& metadata_signature() const;
  PROTOBUF_NODISCARD ::tari::rpc::ComAndPubSignature* release_metadata_signature();
  ::tari::rpc::ComAndPubSignature* mutable_metadata_signature();
  void set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  void unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  ::tari::rpc::ComAndPubSignature* unsafe_arena_release_metadata_signature();

  private:
  const ::tari::rpc::ComAndPubSignature& _internal_metadata_signature() const;
  ::tari::rpc::ComAndPubSignature* _internal_mutable_metadata_signature();

  public:
  // uint64 minimum_value_promise = 11;
  void clear_minimum_value_promise() ;
  ::uint64_t minimum_value_promise() const;
  void set_minimum_value_promise(::uint64_t value);

  private:
  ::uint64_t _internal_minimum_value_promise() const;
  void _internal_set_minimum_value_promise(::uint64_t value);

  public:
  // uint32 version = 9;
  void clear_version() ;
  ::uint32_t version() const;
  void set_version(::uint32_t value);

  private:
  ::uint32_t _internal_version() const;
  void _internal_set_version(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TransactionOutput)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 11, 3,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr commitment_;
    ::google::protobuf::internal::ArenaStringPtr hash_;
    ::google::protobuf::internal::ArenaStringPtr script_;
    ::google::protobuf::internal::ArenaStringPtr sender_offset_public_key_;
    ::google::protobuf::internal::ArenaStringPtr covenant_;
    ::google::protobuf::internal::ArenaStringPtr encrypted_data_;
    ::tari::rpc::OutputFeatures* features_;
    ::tari::rpc::RangeProof* range_proof_;
    ::tari::rpc::ComAndPubSignature* metadata_signature_;
    ::uint64_t minimum_value_promise_;
    ::uint32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit TransactionInput(::google::protobuf::Arena* arena);
  TransactionInput(::google::protobuf::Arena* arena, const TransactionInput& from);
  TransactionInput(::google::protobuf::Arena* arena, TransactionInput&& from) noexcept
      : TransactionInput(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 {
    kCommitmentFieldNumber = 2,
    kHashFieldNumber = 3,
    kScriptFieldNumber = 4,
    kInputDataFieldNumber = 5,
    kSenderOffsetPublicKeyFieldNumber = 8,
    kOutputHashFieldNumber = 9,
    kCovenantFieldNumber = 10,
    kEncryptedDataFieldNumber = 12,
    kRangeproofHashFieldNumber = 15,
    kFeaturesFieldNumber = 1,
    kScriptSignatureFieldNumber = 7,
    kMetadataSignatureFieldNumber = 14,
    kMinimumValuePromiseFieldNumber = 13,
    kVersionFieldNumber = 11,
  };
  // bytes commitment = 2;
  void clear_commitment() ;
  const std::string& commitment() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_commitment(Arg_&& arg, Args_... args);
  std::string* mutable_commitment();
  PROTOBUF_NODISCARD std::string* release_commitment();
  void set_allocated_commitment(std::string* value);

  private:
  const std::string& _internal_commitment() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_commitment(
      const std::string& value);
  std::string* _internal_mutable_commitment();

  public:
  // bytes hash = 3;
  void clear_hash() ;
  const std::string& hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  std::string* mutable_hash();
  PROTOBUF_NODISCARD std::string* release_hash();
  void set_allocated_hash(std::string* value);

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

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

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

  public:
  // bytes input_data = 5;
  void clear_input_data() ;
  const std::string& input_data() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_input_data(Arg_&& arg, Args_... args);
  std::string* mutable_input_data();
  PROTOBUF_NODISCARD std::string* release_input_data();
  void set_allocated_input_data(std::string* value);

  private:
  const std::string& _internal_input_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_input_data(
      const std::string& value);
  std::string* _internal_mutable_input_data();

  public:
  // bytes sender_offset_public_key = 8;
  void clear_sender_offset_public_key() ;
  const std::string& sender_offset_public_key() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_sender_offset_public_key(Arg_&& arg, Args_... args);
  std::string* mutable_sender_offset_public_key();
  PROTOBUF_NODISCARD std::string* release_sender_offset_public_key();
  void set_allocated_sender_offset_public_key(std::string* value);

  private:
  const std::string& _internal_sender_offset_public_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_sender_offset_public_key(
      const std::string& value);
  std::string* _internal_mutable_sender_offset_public_key();

  public:
  // bytes output_hash = 9;
  void clear_output_hash() ;
  const std::string& output_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_output_hash(Arg_&& arg, Args_... args);
  std::string* mutable_output_hash();
  PROTOBUF_NODISCARD std::string* release_output_hash();
  void set_allocated_output_hash(std::string* value);

  private:
  const std::string& _internal_output_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_output_hash(
      const std::string& value);
  std::string* _internal_mutable_output_hash();

  public:
  // bytes covenant = 10;
  void clear_covenant() ;
  const std::string& covenant() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_covenant(Arg_&& arg, Args_... args);
  std::string* mutable_covenant();
  PROTOBUF_NODISCARD std::string* release_covenant();
  void set_allocated_covenant(std::string* value);

  private:
  const std::string& _internal_covenant() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_covenant(
      const std::string& value);
  std::string* _internal_mutable_covenant();

  public:
  // bytes encrypted_data = 12;
  void clear_encrypted_data() ;
  const std::string& encrypted_data() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_encrypted_data(Arg_&& arg, Args_... args);
  std::string* mutable_encrypted_data();
  PROTOBUF_NODISCARD std::string* release_encrypted_data();
  void set_allocated_encrypted_data(std::string* value);

  private:
  const std::string& _internal_encrypted_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_encrypted_data(
      const std::string& value);
  std::string* _internal_mutable_encrypted_data();

  public:
  // bytes rangeproof_hash = 15;
  void clear_rangeproof_hash() ;
  const std::string& rangeproof_hash() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_rangeproof_hash(Arg_&& arg, Args_... args);
  std::string* mutable_rangeproof_hash();
  PROTOBUF_NODISCARD std::string* release_rangeproof_hash();
  void set_allocated_rangeproof_hash(std::string* value);

  private:
  const std::string& _internal_rangeproof_hash() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_rangeproof_hash(
      const std::string& value);
  std::string* _internal_mutable_rangeproof_hash();

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

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

  public:
  // .tari.rpc.ComAndPubSignature script_signature = 7;
  bool has_script_signature() const;
  void clear_script_signature() ;
  const ::tari::rpc::ComAndPubSignature& script_signature() const;
  PROTOBUF_NODISCARD ::tari::rpc::ComAndPubSignature* release_script_signature();
  ::tari::rpc::ComAndPubSignature* mutable_script_signature();
  void set_allocated_script_signature(::tari::rpc::ComAndPubSignature* value);
  void unsafe_arena_set_allocated_script_signature(::tari::rpc::ComAndPubSignature* value);
  ::tari::rpc::ComAndPubSignature* unsafe_arena_release_script_signature();

  private:
  const ::tari::rpc::ComAndPubSignature& _internal_script_signature() const;
  ::tari::rpc::ComAndPubSignature* _internal_mutable_script_signature();

  public:
  // .tari.rpc.ComAndPubSignature metadata_signature = 14;
  bool has_metadata_signature() const;
  void clear_metadata_signature() ;
  const ::tari::rpc::ComAndPubSignature& metadata_signature() const;
  PROTOBUF_NODISCARD ::tari::rpc::ComAndPubSignature* release_metadata_signature();
  ::tari::rpc::ComAndPubSignature* mutable_metadata_signature();
  void set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  void unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value);
  ::tari::rpc::ComAndPubSignature* unsafe_arena_release_metadata_signature();

  private:
  const ::tari::rpc::ComAndPubSignature& _internal_metadata_signature() const;
  ::tari::rpc::ComAndPubSignature* _internal_mutable_metadata_signature();

  public:
  // uint64 minimum_value_promise = 13;
  void clear_minimum_value_promise() ;
  ::uint64_t minimum_value_promise() const;
  void set_minimum_value_promise(::uint64_t value);

  private:
  ::uint64_t _internal_minimum_value_promise() const;
  void _internal_set_minimum_value_promise(::uint64_t value);

  public:
  // uint32 version = 11;
  void clear_version() ;
  ::uint32_t version() const;
  void set_version(::uint32_t value);

  private:
  ::uint32_t _internal_version() const;
  void _internal_set_version(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:tari.rpc.TransactionInput)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      4, 14, 3,
      0, 2>
      _table_;
  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr commitment_;
    ::google::protobuf::internal::ArenaStringPtr hash_;
    ::google::protobuf::internal::ArenaStringPtr script_;
    ::google::protobuf::internal::ArenaStringPtr input_data_;
    ::google::protobuf::internal::ArenaStringPtr sender_offset_public_key_;
    ::google::protobuf::internal::ArenaStringPtr output_hash_;
    ::google::protobuf::internal::ArenaStringPtr covenant_;
    ::google::protobuf::internal::ArenaStringPtr encrypted_data_;
    ::google::protobuf::internal::ArenaStringPtr rangeproof_hash_;
    ::tari::rpc::OutputFeatures* features_;
    ::tari::rpc::ComAndPubSignature* script_signature_;
    ::tari::rpc::ComAndPubSignature* metadata_signature_;
    ::uint64_t minimum_value_promise_;
    ::uint32_t version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

 protected:
  explicit AggregateBody(::google::protobuf::Arena* arena);
  AggregateBody(::google::protobuf::Arena* arena, const AggregateBody& from);
  AggregateBody(::google::protobuf::Arena* arena, AggregateBody&& from) noexcept
      : AggregateBody(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 {
    kInputsFieldNumber = 1,
    kOutputsFieldNumber = 2,
    kKernelsFieldNumber = 3,
  };
  // repeated .tari.rpc.TransactionInput inputs = 1;
  int inputs_size() const;
  private:
  int _internal_inputs_size() const;

  public:
  void clear_inputs() ;
  ::tari::rpc::TransactionInput* mutable_inputs(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>* mutable_inputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>& _internal_inputs() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>* _internal_mutable_inputs();
  public:
  const ::tari::rpc::TransactionInput& inputs(int index) const;
  ::tari::rpc::TransactionInput* add_inputs();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>& inputs() const;
  // repeated .tari.rpc.TransactionOutput outputs = 2;
  int outputs_size() const;
  private:
  int _internal_outputs_size() const;

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

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& _internal_outputs() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>* _internal_mutable_outputs();
  public:
  const ::tari::rpc::TransactionOutput& outputs(int index) const;
  ::tari::rpc::TransactionOutput* add_outputs();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& outputs() const;
  // repeated .tari.rpc.TransactionKernel kernels = 3;
  int kernels_size() const;
  private:
  int _internal_kernels_size() const;

  public:
  void clear_kernels() ;
  ::tari::rpc::TransactionKernel* mutable_kernels(int index);
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>* mutable_kernels();

  private:
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>& _internal_kernels() const;
  ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>* _internal_mutable_kernels();
  public:
  const ::tari::rpc::TransactionKernel& kernels(int index) const;
  ::tari::rpc::TransactionKernel* add_kernels();
  const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>& kernels() const;
  // @@protoc_insertion_point(class_scope:tari.rpc.AggregateBody)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 3,
      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::TransactionInput > inputs_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::TransactionOutput > outputs_;
    ::google::protobuf::RepeatedPtrField< ::tari::rpc::TransactionKernel > kernels_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_transaction_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

  // accessors -------------------------------------------------------
  enum : int {
    kOffsetFieldNumber = 1,
    kScriptOffsetFieldNumber = 3,
    kBodyFieldNumber = 2,
  };
  // bytes offset = 1;
  void clear_offset() ;
  const std::string& offset() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_offset(Arg_&& arg, Args_... args);
  std::string* mutable_offset();
  PROTOBUF_NODISCARD std::string* release_offset();
  void set_allocated_offset(std::string* value);

  private:
  const std::string& _internal_offset() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_offset(
      const std::string& value);
  std::string* _internal_mutable_offset();

  public:
  // bytes script_offset = 3;
  void clear_script_offset() ;
  const std::string& script_offset() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_script_offset(Arg_&& arg, Args_... args);
  std::string* mutable_script_offset();
  PROTOBUF_NODISCARD std::string* release_script_offset();
  void set_allocated_script_offset(std::string* value);

  private:
  const std::string& _internal_script_offset() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_script_offset(
      const std::string& value);
  std::string* _internal_mutable_script_offset();

  public:
  // .tari.rpc.AggregateBody body = 2;
  bool has_body() const;
  void clear_body() ;
  const ::tari::rpc::AggregateBody& body() const;
  PROTOBUF_NODISCARD ::tari::rpc::AggregateBody* release_body();
  ::tari::rpc::AggregateBody* mutable_body();
  void set_allocated_body(::tari::rpc::AggregateBody* value);
  void unsafe_arena_set_allocated_body(::tari::rpc::AggregateBody* value);
  ::tari::rpc::AggregateBody* unsafe_arena_release_body();

  private:
  const ::tari::rpc::AggregateBody& _internal_body() const;
  ::tari::rpc::AggregateBody* _internal_mutable_body();

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

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




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


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

// TransactionKernel

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

// uint64 fee = 2;
inline void TransactionKernel::clear_fee() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.fee_ = ::uint64_t{0u};
}
inline ::uint64_t TransactionKernel::fee() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionKernel.fee)
  return _internal_fee();
}
inline void TransactionKernel::set_fee(::uint64_t value) {
  _internal_set_fee(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionKernel.fee)
}
inline ::uint64_t TransactionKernel::_internal_fee() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.fee_;
}
inline void TransactionKernel::_internal_set_fee(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.fee_ = value;
}

// uint64 lock_height = 3;
inline void TransactionKernel::clear_lock_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.lock_height_ = ::uint64_t{0u};
}
inline ::uint64_t TransactionKernel::lock_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionKernel.lock_height)
  return _internal_lock_height();
}
inline void TransactionKernel::set_lock_height(::uint64_t value) {
  _internal_set_lock_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionKernel.lock_height)
}
inline ::uint64_t TransactionKernel::_internal_lock_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.lock_height_;
}
inline void TransactionKernel::_internal_set_lock_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.lock_height_ = value;
}

// bytes excess = 6;
inline void TransactionKernel::clear_excess() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.excess_.ClearToEmpty();
}
inline const std::string& TransactionKernel::excess() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionKernel.excess)
  return _internal_excess();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionKernel::set_excess(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.excess_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionKernel.excess)
}
inline std::string* TransactionKernel::mutable_excess() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_excess();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionKernel.excess)
  return _s;
}
inline const std::string& TransactionKernel::_internal_excess() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.excess_.Get();
}
inline void TransactionKernel::_internal_set_excess(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.excess_.Set(value, GetArena());
}
inline std::string* TransactionKernel::_internal_mutable_excess() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.excess_.Mutable( GetArena());
}
inline std::string* TransactionKernel::release_excess() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionKernel.excess)
  return _impl_.excess_.Release();
}
inline void TransactionKernel::set_allocated_excess(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.excess_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.excess_.IsDefault()) {
          _impl_.excess_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionKernel.excess)
}

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

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

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

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

  _impl_.excess_sig_ = reinterpret_cast<::tari::rpc::Signature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionKernel.excess_sig)
}

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

// uint32 version = 9;
inline void TransactionKernel::clear_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = 0u;
}
inline ::uint32_t TransactionKernel::version() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionKernel.version)
  return _internal_version();
}
inline void TransactionKernel::set_version(::uint32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionKernel.version)
}
inline ::uint32_t TransactionKernel::_internal_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.version_;
}
inline void TransactionKernel::_internal_set_version(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = value;
}

// bytes burn_commitment = 10;
inline void TransactionKernel::clear_burn_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.burn_commitment_.ClearToEmpty();
}
inline const std::string& TransactionKernel::burn_commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionKernel.burn_commitment)
  return _internal_burn_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionKernel::set_burn_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.burn_commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionKernel.burn_commitment)
}
inline std::string* TransactionKernel::mutable_burn_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_burn_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionKernel.burn_commitment)
  return _s;
}
inline const std::string& TransactionKernel::_internal_burn_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.burn_commitment_.Get();
}
inline void TransactionKernel::_internal_set_burn_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.burn_commitment_.Set(value, GetArena());
}
inline std::string* TransactionKernel::_internal_mutable_burn_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.burn_commitment_.Mutable( GetArena());
}
inline std::string* TransactionKernel::release_burn_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionKernel.burn_commitment)
  return _impl_.burn_commitment_.Release();
}
inline void TransactionKernel::set_allocated_burn_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.burn_commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.burn_commitment_.IsDefault()) {
          _impl_.burn_commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionKernel.burn_commitment)
}

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

// TransactionInput

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

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

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

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

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

// bytes commitment = 2;
inline void TransactionInput::clear_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.ClearToEmpty();
}
inline const std::string& TransactionInput::commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.commitment)
  return _internal_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.commitment)
}
inline std::string* TransactionInput::mutable_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.commitment)
  return _s;
}
inline const std::string& TransactionInput::_internal_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.commitment_.Get();
}
inline void TransactionInput::_internal_set_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.commitment_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.commitment)
  return _impl_.commitment_.Release();
}
inline void TransactionInput::set_allocated_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.commitment_.IsDefault()) {
          _impl_.commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.commitment)
}

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

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

// bytes input_data = 5;
inline void TransactionInput::clear_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.ClearToEmpty();
}
inline const std::string& TransactionInput::input_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.input_data)
  return _internal_input_data();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_input_data(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.input_data)
}
inline std::string* TransactionInput::mutable_input_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_input_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.input_data)
  return _s;
}
inline const std::string& TransactionInput::_internal_input_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.input_data_.Get();
}
inline void TransactionInput::_internal_set_input_data(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.input_data_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.input_data)
  return _impl_.input_data_.Release();
}
inline void TransactionInput::set_allocated_input_data(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.input_data_.IsDefault()) {
          _impl_.input_data_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.input_data)
}

// .tari.rpc.ComAndPubSignature script_signature = 7;
inline bool TransactionInput::has_script_signature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.script_signature_ != nullptr);
  return value;
}
inline const ::tari::rpc::ComAndPubSignature& TransactionInput::_internal_script_signature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::ComAndPubSignature* p = _impl_.script_signature_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::ComAndPubSignature&>(::tari::rpc::_ComAndPubSignature_default_instance_);
}
inline const ::tari::rpc::ComAndPubSignature& TransactionInput::script_signature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.script_signature)
  return _internal_script_signature();
}
inline void TransactionInput::unsafe_arena_set_allocated_script_signature(::tari::rpc::ComAndPubSignature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.script_signature_);
  }
  _impl_.script_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.TransactionInput.script_signature)
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::release_script_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::ComAndPubSignature* released = _impl_.script_signature_;
  _impl_.script_signature_ = 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::ComAndPubSignature* TransactionInput::unsafe_arena_release_script_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.script_signature)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::ComAndPubSignature* temp = _impl_.script_signature_;
  _impl_.script_signature_ = nullptr;
  return temp;
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::_internal_mutable_script_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.script_signature_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::ComAndPubSignature>(GetArena());
    _impl_.script_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(p);
  }
  return _impl_.script_signature_;
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::mutable_script_signature() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::ComAndPubSignature* _msg = _internal_mutable_script_signature();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.script_signature)
  return _msg;
}
inline void TransactionInput::set_allocated_script_signature(::tari::rpc::ComAndPubSignature* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.script_signature_);
  }

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

  _impl_.script_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.script_signature)
}

// bytes sender_offset_public_key = 8;
inline void TransactionInput::clear_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.ClearToEmpty();
}
inline const std::string& TransactionInput::sender_offset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.sender_offset_public_key)
  return _internal_sender_offset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_sender_offset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.sender_offset_public_key)
}
inline std::string* TransactionInput::mutable_sender_offset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_sender_offset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.sender_offset_public_key)
  return _s;
}
inline const std::string& TransactionInput::_internal_sender_offset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Get();
}
inline void TransactionInput::_internal_set_sender_offset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.sender_offset_public_key)
  return _impl_.sender_offset_public_key_.Release();
}
inline void TransactionInput::set_allocated_sender_offset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.sender_offset_public_key_.IsDefault()) {
          _impl_.sender_offset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.sender_offset_public_key)
}

// bytes output_hash = 9;
inline void TransactionInput::clear_output_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_hash_.ClearToEmpty();
}
inline const std::string& TransactionInput::output_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.output_hash)
  return _internal_output_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_output_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.output_hash)
}
inline std::string* TransactionInput::mutable_output_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_output_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.output_hash)
  return _s;
}
inline const std::string& TransactionInput::_internal_output_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.output_hash_.Get();
}
inline void TransactionInput::_internal_set_output_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_hash_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_output_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.output_hash_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_output_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.output_hash)
  return _impl_.output_hash_.Release();
}
inline void TransactionInput::set_allocated_output_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.output_hash_.IsDefault()) {
          _impl_.output_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.output_hash)
}

// bytes covenant = 10;
inline void TransactionInput::clear_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.ClearToEmpty();
}
inline const std::string& TransactionInput::covenant() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.covenant)
  return _internal_covenant();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_covenant(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.covenant)
}
inline std::string* TransactionInput::mutable_covenant() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_covenant();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.covenant)
  return _s;
}
inline const std::string& TransactionInput::_internal_covenant() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Get();
}
inline void TransactionInput::_internal_set_covenant(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.covenant)
  return _impl_.covenant_.Release();
}
inline void TransactionInput::set_allocated_covenant(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.covenant_.IsDefault()) {
          _impl_.covenant_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.covenant)
}

// uint32 version = 11;
inline void TransactionInput::clear_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = 0u;
}
inline ::uint32_t TransactionInput::version() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.version)
  return _internal_version();
}
inline void TransactionInput::set_version(::uint32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.version)
}
inline ::uint32_t TransactionInput::_internal_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.version_;
}
inline void TransactionInput::_internal_set_version(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = value;
}

// bytes encrypted_data = 12;
inline void TransactionInput::clear_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.ClearToEmpty();
}
inline const std::string& TransactionInput::encrypted_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.encrypted_data)
  return _internal_encrypted_data();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_encrypted_data(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.encrypted_data)
}
inline std::string* TransactionInput::mutable_encrypted_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_encrypted_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.encrypted_data)
  return _s;
}
inline const std::string& TransactionInput::_internal_encrypted_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Get();
}
inline void TransactionInput::_internal_set_encrypted_data(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.encrypted_data)
  return _impl_.encrypted_data_.Release();
}
inline void TransactionInput::set_allocated_encrypted_data(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.encrypted_data_.IsDefault()) {
          _impl_.encrypted_data_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.encrypted_data)
}

// uint64 minimum_value_promise = 13;
inline void TransactionInput::clear_minimum_value_promise() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = ::uint64_t{0u};
}
inline ::uint64_t TransactionInput::minimum_value_promise() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.minimum_value_promise)
  return _internal_minimum_value_promise();
}
inline void TransactionInput::set_minimum_value_promise(::uint64_t value) {
  _internal_set_minimum_value_promise(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.minimum_value_promise)
}
inline ::uint64_t TransactionInput::_internal_minimum_value_promise() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.minimum_value_promise_;
}
inline void TransactionInput::_internal_set_minimum_value_promise(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = value;
}

// .tari.rpc.ComAndPubSignature metadata_signature = 14;
inline bool TransactionInput::has_metadata_signature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.metadata_signature_ != nullptr);
  return value;
}
inline const ::tari::rpc::ComAndPubSignature& TransactionInput::_internal_metadata_signature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::ComAndPubSignature* p = _impl_.metadata_signature_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::ComAndPubSignature&>(::tari::rpc::_ComAndPubSignature_default_instance_);
}
inline const ::tari::rpc::ComAndPubSignature& TransactionInput::metadata_signature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.metadata_signature)
  return _internal_metadata_signature();
}
inline void TransactionInput::unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }
  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.TransactionInput.metadata_signature)
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::ComAndPubSignature* released = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = 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::ComAndPubSignature* TransactionInput::unsafe_arena_release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.metadata_signature)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::ComAndPubSignature* temp = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = nullptr;
  return temp;
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::_internal_mutable_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.metadata_signature_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::ComAndPubSignature>(GetArena());
    _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(p);
  }
  return _impl_.metadata_signature_;
}
inline ::tari::rpc::ComAndPubSignature* TransactionInput::mutable_metadata_signature() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::tari::rpc::ComAndPubSignature* _msg = _internal_mutable_metadata_signature();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.metadata_signature)
  return _msg;
}
inline void TransactionInput::set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }

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

  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.metadata_signature)
}

// bytes rangeproof_hash = 15;
inline void TransactionInput::clear_rangeproof_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.rangeproof_hash_.ClearToEmpty();
}
inline const std::string& TransactionInput::rangeproof_hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionInput.rangeproof_hash)
  return _internal_rangeproof_hash();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionInput::set_rangeproof_hash(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.rangeproof_hash_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionInput.rangeproof_hash)
}
inline std::string* TransactionInput::mutable_rangeproof_hash() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_rangeproof_hash();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionInput.rangeproof_hash)
  return _s;
}
inline const std::string& TransactionInput::_internal_rangeproof_hash() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.rangeproof_hash_.Get();
}
inline void TransactionInput::_internal_set_rangeproof_hash(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.rangeproof_hash_.Set(value, GetArena());
}
inline std::string* TransactionInput::_internal_mutable_rangeproof_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.rangeproof_hash_.Mutable( GetArena());
}
inline std::string* TransactionInput::release_rangeproof_hash() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionInput.rangeproof_hash)
  return _impl_.rangeproof_hash_.Release();
}
inline void TransactionInput::set_allocated_rangeproof_hash(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.rangeproof_hash_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.rangeproof_hash_.IsDefault()) {
          _impl_.rangeproof_hash_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionInput.rangeproof_hash)
}

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

// TransactionOutput

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

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

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

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

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

// bytes commitment = 2;
inline void TransactionOutput::clear_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.ClearToEmpty();
}
inline const std::string& TransactionOutput::commitment() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.commitment)
  return _internal_commitment();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionOutput::set_commitment(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.commitment)
}
inline std::string* TransactionOutput::mutable_commitment() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_commitment();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.commitment)
  return _s;
}
inline const std::string& TransactionOutput::_internal_commitment() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.commitment_.Get();
}
inline void TransactionOutput::_internal_set_commitment(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.Set(value, GetArena());
}
inline std::string* TransactionOutput::_internal_mutable_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.commitment_.Mutable( GetArena());
}
inline std::string* TransactionOutput::release_commitment() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.commitment)
  return _impl_.commitment_.Release();
}
inline void TransactionOutput::set_allocated_commitment(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.commitment_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.commitment_.IsDefault()) {
          _impl_.commitment_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.commitment)
}

// .tari.rpc.RangeProof range_proof = 3;
inline bool TransactionOutput::has_range_proof() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.range_proof_ != nullptr);
  return value;
}
inline const ::tari::rpc::RangeProof& TransactionOutput::_internal_range_proof() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::RangeProof* p = _impl_.range_proof_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::RangeProof&>(::tari::rpc::_RangeProof_default_instance_);
}
inline const ::tari::rpc::RangeProof& TransactionOutput::range_proof() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.range_proof)
  return _internal_range_proof();
}
inline void TransactionOutput::unsafe_arena_set_allocated_range_proof(::tari::rpc::RangeProof* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.range_proof_);
  }
  _impl_.range_proof_ = reinterpret_cast<::tari::rpc::RangeProof*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.TransactionOutput.range_proof)
}
inline ::tari::rpc::RangeProof* TransactionOutput::release_range_proof() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::RangeProof* released = _impl_.range_proof_;
  _impl_.range_proof_ = 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::RangeProof* TransactionOutput::unsafe_arena_release_range_proof() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.range_proof)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::RangeProof* temp = _impl_.range_proof_;
  _impl_.range_proof_ = nullptr;
  return temp;
}
inline ::tari::rpc::RangeProof* TransactionOutput::_internal_mutable_range_proof() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.range_proof_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::RangeProof>(GetArena());
    _impl_.range_proof_ = reinterpret_cast<::tari::rpc::RangeProof*>(p);
  }
  return _impl_.range_proof_;
}
inline ::tari::rpc::RangeProof* TransactionOutput::mutable_range_proof() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::RangeProof* _msg = _internal_mutable_range_proof();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.range_proof)
  return _msg;
}
inline void TransactionOutput::set_allocated_range_proof(::tari::rpc::RangeProof* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.range_proof_);
  }

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

  _impl_.range_proof_ = reinterpret_cast<::tari::rpc::RangeProof*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.range_proof)
}

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

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

// bytes sender_offset_public_key = 6;
inline void TransactionOutput::clear_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.ClearToEmpty();
}
inline const std::string& TransactionOutput::sender_offset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.sender_offset_public_key)
  return _internal_sender_offset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionOutput::set_sender_offset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.sender_offset_public_key)
}
inline std::string* TransactionOutput::mutable_sender_offset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_sender_offset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.sender_offset_public_key)
  return _s;
}
inline const std::string& TransactionOutput::_internal_sender_offset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Get();
}
inline void TransactionOutput::_internal_set_sender_offset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.Set(value, GetArena());
}
inline std::string* TransactionOutput::_internal_mutable_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Mutable( GetArena());
}
inline std::string* TransactionOutput::release_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.sender_offset_public_key)
  return _impl_.sender_offset_public_key_.Release();
}
inline void TransactionOutput::set_allocated_sender_offset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.sender_offset_public_key_.IsDefault()) {
          _impl_.sender_offset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.sender_offset_public_key)
}

// .tari.rpc.ComAndPubSignature metadata_signature = 7;
inline bool TransactionOutput::has_metadata_signature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.metadata_signature_ != nullptr);
  return value;
}
inline const ::tari::rpc::ComAndPubSignature& TransactionOutput::_internal_metadata_signature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::ComAndPubSignature* p = _impl_.metadata_signature_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::ComAndPubSignature&>(::tari::rpc::_ComAndPubSignature_default_instance_);
}
inline const ::tari::rpc::ComAndPubSignature& TransactionOutput::metadata_signature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.metadata_signature)
  return _internal_metadata_signature();
}
inline void TransactionOutput::unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }
  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.TransactionOutput.metadata_signature)
}
inline ::tari::rpc::ComAndPubSignature* TransactionOutput::release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::ComAndPubSignature* released = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = 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::ComAndPubSignature* TransactionOutput::unsafe_arena_release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.metadata_signature)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::tari::rpc::ComAndPubSignature* temp = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = nullptr;
  return temp;
}
inline ::tari::rpc::ComAndPubSignature* TransactionOutput::_internal_mutable_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.metadata_signature_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::ComAndPubSignature>(GetArena());
    _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(p);
  }
  return _impl_.metadata_signature_;
}
inline ::tari::rpc::ComAndPubSignature* TransactionOutput::mutable_metadata_signature() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::tari::rpc::ComAndPubSignature* _msg = _internal_mutable_metadata_signature();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.metadata_signature)
  return _msg;
}
inline void TransactionOutput::set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }

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

  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.metadata_signature)
}

// bytes covenant = 8;
inline void TransactionOutput::clear_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.ClearToEmpty();
}
inline const std::string& TransactionOutput::covenant() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.covenant)
  return _internal_covenant();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionOutput::set_covenant(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.covenant)
}
inline std::string* TransactionOutput::mutable_covenant() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_covenant();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.covenant)
  return _s;
}
inline const std::string& TransactionOutput::_internal_covenant() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Get();
}
inline void TransactionOutput::_internal_set_covenant(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.Set(value, GetArena());
}
inline std::string* TransactionOutput::_internal_mutable_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Mutable( GetArena());
}
inline std::string* TransactionOutput::release_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.covenant)
  return _impl_.covenant_.Release();
}
inline void TransactionOutput::set_allocated_covenant(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.covenant_.IsDefault()) {
          _impl_.covenant_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.covenant)
}

// uint32 version = 9;
inline void TransactionOutput::clear_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = 0u;
}
inline ::uint32_t TransactionOutput::version() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.version)
  return _internal_version();
}
inline void TransactionOutput::set_version(::uint32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.version)
}
inline ::uint32_t TransactionOutput::_internal_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.version_;
}
inline void TransactionOutput::_internal_set_version(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = value;
}

// bytes encrypted_data = 10;
inline void TransactionOutput::clear_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.ClearToEmpty();
}
inline const std::string& TransactionOutput::encrypted_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.encrypted_data)
  return _internal_encrypted_data();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void TransactionOutput::set_encrypted_data(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.encrypted_data)
}
inline std::string* TransactionOutput::mutable_encrypted_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_encrypted_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.TransactionOutput.encrypted_data)
  return _s;
}
inline const std::string& TransactionOutput::_internal_encrypted_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Get();
}
inline void TransactionOutput::_internal_set_encrypted_data(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.Set(value, GetArena());
}
inline std::string* TransactionOutput::_internal_mutable_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Mutable( GetArena());
}
inline std::string* TransactionOutput::release_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.TransactionOutput.encrypted_data)
  return _impl_.encrypted_data_.Release();
}
inline void TransactionOutput::set_allocated_encrypted_data(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.encrypted_data_.IsDefault()) {
          _impl_.encrypted_data_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TransactionOutput.encrypted_data)
}

// uint64 minimum_value_promise = 11;
inline void TransactionOutput::clear_minimum_value_promise() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = ::uint64_t{0u};
}
inline ::uint64_t TransactionOutput::minimum_value_promise() const {
  // @@protoc_insertion_point(field_get:tari.rpc.TransactionOutput.minimum_value_promise)
  return _internal_minimum_value_promise();
}
inline void TransactionOutput::set_minimum_value_promise(::uint64_t value) {
  _internal_set_minimum_value_promise(value);
  // @@protoc_insertion_point(field_set:tari.rpc.TransactionOutput.minimum_value_promise)
}
inline ::uint64_t TransactionOutput::_internal_minimum_value_promise() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.minimum_value_promise_;
}
inline void TransactionOutput::_internal_set_minimum_value_promise(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = value;
}

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

// OutputFeatures

// uint32 version = 1;
inline void OutputFeatures::clear_version() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = 0u;
}
inline ::uint32_t OutputFeatures::version() const {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputFeatures.version)
  return _internal_version();
}
inline void OutputFeatures::set_version(::uint32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:tari.rpc.OutputFeatures.version)
}
inline ::uint32_t OutputFeatures::_internal_version() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.version_;
}
inline void OutputFeatures::_internal_set_version(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.version_ = value;
}

// uint32 output_type = 2;
inline void OutputFeatures::clear_output_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_type_ = 0u;
}
inline ::uint32_t OutputFeatures::output_type() const {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputFeatures.output_type)
  return _internal_output_type();
}
inline void OutputFeatures::set_output_type(::uint32_t value) {
  _internal_set_output_type(value);
  // @@protoc_insertion_point(field_set:tari.rpc.OutputFeatures.output_type)
}
inline ::uint32_t OutputFeatures::_internal_output_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.output_type_;
}
inline void OutputFeatures::_internal_set_output_type(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.output_type_ = value;
}

// uint64 maturity = 3;
inline void OutputFeatures::clear_maturity() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.maturity_ = ::uint64_t{0u};
}
inline ::uint64_t OutputFeatures::maturity() const {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputFeatures.maturity)
  return _internal_maturity();
}
inline void OutputFeatures::set_maturity(::uint64_t value) {
  _internal_set_maturity(value);
  // @@protoc_insertion_point(field_set:tari.rpc.OutputFeatures.maturity)
}
inline ::uint64_t OutputFeatures::_internal_maturity() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.maturity_;
}
inline void OutputFeatures::_internal_set_maturity(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.maturity_ = value;
}

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

// .tari.rpc.SideChainFeature sidechain_feature = 5;
inline bool OutputFeatures::has_sidechain_feature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.sidechain_feature_ != nullptr);
  return value;
}
inline const ::tari::rpc::SideChainFeature& OutputFeatures::_internal_sidechain_feature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::SideChainFeature* p = _impl_.sidechain_feature_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::SideChainFeature&>(::tari::rpc::_SideChainFeature_default_instance_);
}
inline const ::tari::rpc::SideChainFeature& OutputFeatures::sidechain_feature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputFeatures.sidechain_feature)
  return _internal_sidechain_feature();
}
inline void OutputFeatures::unsafe_arena_set_allocated_sidechain_feature(::tari::rpc::SideChainFeature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sidechain_feature_);
  }
  _impl_.sidechain_feature_ = reinterpret_cast<::tari::rpc::SideChainFeature*>(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.OutputFeatures.sidechain_feature)
}
inline ::tari::rpc::SideChainFeature* OutputFeatures::release_sidechain_feature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

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

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

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

  _impl_.sidechain_feature_ = reinterpret_cast<::tari::rpc::SideChainFeature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.OutputFeatures.sidechain_feature)
}

// uint32 range_proof_type = 6;
inline void OutputFeatures::clear_range_proof_type() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.range_proof_type_ = 0u;
}
inline ::uint32_t OutputFeatures::range_proof_type() const {
  // @@protoc_insertion_point(field_get:tari.rpc.OutputFeatures.range_proof_type)
  return _internal_range_proof_type();
}
inline void OutputFeatures::set_range_proof_type(::uint32_t value) {
  _internal_set_range_proof_type(value);
  // @@protoc_insertion_point(field_set:tari.rpc.OutputFeatures.range_proof_type)
}
inline ::uint32_t OutputFeatures::_internal_range_proof_type() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.range_proof_type_;
}
inline void OutputFeatures::_internal_set_range_proof_type(::uint32_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.range_proof_type_ = value;
}

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

// AggregateBody

// repeated .tari.rpc.TransactionInput inputs = 1;
inline int AggregateBody::_internal_inputs_size() const {
  return _internal_inputs().size();
}
inline int AggregateBody::inputs_size() const {
  return _internal_inputs_size();
}
inline void AggregateBody::clear_inputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.inputs_.Clear();
}
inline ::tari::rpc::TransactionInput* AggregateBody::mutable_inputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.AggregateBody.inputs)
  return _internal_mutable_inputs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>* AggregateBody::mutable_inputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.AggregateBody.inputs)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_inputs();
}
inline const ::tari::rpc::TransactionInput& AggregateBody::inputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.AggregateBody.inputs)
  return _internal_inputs().Get(index);
}
inline ::tari::rpc::TransactionInput* AggregateBody::add_inputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::TransactionInput* _add = _internal_mutable_inputs()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.AggregateBody.inputs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>& AggregateBody::inputs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.AggregateBody.inputs)
  return _internal_inputs();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>&
AggregateBody::_internal_inputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.inputs_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionInput>*
AggregateBody::_internal_mutable_inputs() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.inputs_;
}

// repeated .tari.rpc.TransactionOutput outputs = 2;
inline int AggregateBody::_internal_outputs_size() const {
  return _internal_outputs().size();
}
inline int AggregateBody::outputs_size() const {
  return _internal_outputs_size();
}
inline void AggregateBody::clear_outputs() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.outputs_.Clear();
}
inline ::tari::rpc::TransactionOutput* AggregateBody::mutable_outputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.AggregateBody.outputs)
  return _internal_mutable_outputs()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>* AggregateBody::mutable_outputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.AggregateBody.outputs)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_outputs();
}
inline const ::tari::rpc::TransactionOutput& AggregateBody::outputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.AggregateBody.outputs)
  return _internal_outputs().Get(index);
}
inline ::tari::rpc::TransactionOutput* AggregateBody::add_outputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::TransactionOutput* _add = _internal_mutable_outputs()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.AggregateBody.outputs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>& AggregateBody::outputs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.AggregateBody.outputs)
  return _internal_outputs();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>&
AggregateBody::_internal_outputs() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.outputs_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionOutput>*
AggregateBody::_internal_mutable_outputs() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.outputs_;
}

// repeated .tari.rpc.TransactionKernel kernels = 3;
inline int AggregateBody::_internal_kernels_size() const {
  return _internal_kernels().size();
}
inline int AggregateBody::kernels_size() const {
  return _internal_kernels_size();
}
inline void AggregateBody::clear_kernels() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.kernels_.Clear();
}
inline ::tari::rpc::TransactionKernel* AggregateBody::mutable_kernels(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:tari.rpc.AggregateBody.kernels)
  return _internal_mutable_kernels()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>* AggregateBody::mutable_kernels()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:tari.rpc.AggregateBody.kernels)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _internal_mutable_kernels();
}
inline const ::tari::rpc::TransactionKernel& AggregateBody::kernels(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.AggregateBody.kernels)
  return _internal_kernels().Get(index);
}
inline ::tari::rpc::TransactionKernel* AggregateBody::add_kernels() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::tari::rpc::TransactionKernel* _add = _internal_mutable_kernels()->Add();
  // @@protoc_insertion_point(field_add:tari.rpc.AggregateBody.kernels)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>& AggregateBody::kernels() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:tari.rpc.AggregateBody.kernels)
  return _internal_kernels();
}
inline const ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>&
AggregateBody::_internal_kernels() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.kernels_;
}
inline ::google::protobuf::RepeatedPtrField<::tari::rpc::TransactionKernel>*
AggregateBody::_internal_mutable_kernels() {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return &_impl_.kernels_;
}

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

// Transaction

// bytes offset = 1;
inline void Transaction::clear_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_.ClearToEmpty();
}
inline const std::string& Transaction::offset() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Transaction.offset)
  return _internal_offset();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Transaction::set_offset(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Transaction.offset)
}
inline std::string* Transaction::mutable_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_offset();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Transaction.offset)
  return _s;
}
inline const std::string& Transaction::_internal_offset() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.offset_.Get();
}
inline void Transaction::_internal_set_offset(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_.Set(value, GetArena());
}
inline std::string* Transaction::_internal_mutable_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.offset_.Mutable( GetArena());
}
inline std::string* Transaction::release_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Transaction.offset)
  return _impl_.offset_.Release();
}
inline void Transaction::set_allocated_offset(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.offset_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.offset_.IsDefault()) {
          _impl_.offset_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Transaction.offset)
}

// .tari.rpc.AggregateBody body = 2;
inline bool Transaction::has_body() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.body_ != nullptr);
  return value;
}
inline void Transaction::clear_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.body_ != nullptr) _impl_.body_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::tari::rpc::AggregateBody& Transaction::_internal_body() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::AggregateBody* p = _impl_.body_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::AggregateBody&>(::tari::rpc::_AggregateBody_default_instance_);
}
inline const ::tari::rpc::AggregateBody& Transaction::body() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Transaction.body)
  return _internal_body();
}
inline void Transaction::unsafe_arena_set_allocated_body(::tari::rpc::AggregateBody* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.body_);
  }
  _impl_.body_ = reinterpret_cast<::tari::rpc::AggregateBody*>(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.Transaction.body)
}
inline ::tari::rpc::AggregateBody* Transaction::release_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

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

  _impl_._has_bits_[0] &= ~0x00000001u;
  ::tari::rpc::AggregateBody* temp = _impl_.body_;
  _impl_.body_ = nullptr;
  return temp;
}
inline ::tari::rpc::AggregateBody* Transaction::_internal_mutable_body() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.body_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::AggregateBody>(GetArena());
    _impl_.body_ = reinterpret_cast<::tari::rpc::AggregateBody*>(p);
  }
  return _impl_.body_;
}
inline ::tari::rpc::AggregateBody* Transaction::mutable_body() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000001u;
  ::tari::rpc::AggregateBody* _msg = _internal_mutable_body();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Transaction.body)
  return _msg;
}
inline void Transaction::set_allocated_body(::tari::rpc::AggregateBody* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete (_impl_.body_);
  }

  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_.body_ = reinterpret_cast<::tari::rpc::AggregateBody*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Transaction.body)
}

// bytes script_offset = 3;
inline void Transaction::clear_script_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_offset_.ClearToEmpty();
}
inline const std::string& Transaction::script_offset() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.Transaction.script_offset)
  return _internal_script_offset();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void Transaction::set_script_offset(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_offset_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.Transaction.script_offset)
}
inline std::string* Transaction::mutable_script_offset() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_script_offset();
  // @@protoc_insertion_point(field_mutable:tari.rpc.Transaction.script_offset)
  return _s;
}
inline const std::string& Transaction::_internal_script_offset() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.script_offset_.Get();
}
inline void Transaction::_internal_set_script_offset(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_offset_.Set(value, GetArena());
}
inline std::string* Transaction::_internal_mutable_script_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.script_offset_.Mutable( GetArena());
}
inline std::string* Transaction::release_script_offset() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.Transaction.script_offset)
  return _impl_.script_offset_.Release();
}
inline void Transaction::set_allocated_script_offset(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_offset_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.script_offset_.IsDefault()) {
          _impl_.script_offset_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.Transaction.script_offset)
}

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

// UnblindedOutput

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

// bytes spending_key = 2;
inline void UnblindedOutput::clear_spending_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.spending_key_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::spending_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.spending_key)
  return _internal_spending_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_spending_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.spending_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.spending_key)
}
inline std::string* UnblindedOutput::mutable_spending_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_spending_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.spending_key)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_spending_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.spending_key_.Get();
}
inline void UnblindedOutput::_internal_set_spending_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.spending_key_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_spending_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.spending_key_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_spending_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.spending_key)
  return _impl_.spending_key_.Release();
}
inline void UnblindedOutput::set_allocated_spending_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.spending_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.spending_key_.IsDefault()) {
          _impl_.spending_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.spending_key)
}

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

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

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

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

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

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

// bytes input_data = 5;
inline void UnblindedOutput::clear_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::input_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.input_data)
  return _internal_input_data();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_input_data(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.input_data)
}
inline std::string* UnblindedOutput::mutable_input_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_input_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.input_data)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_input_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.input_data_.Get();
}
inline void UnblindedOutput::_internal_set_input_data(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.input_data_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_input_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.input_data)
  return _impl_.input_data_.Release();
}
inline void UnblindedOutput::set_allocated_input_data(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.input_data_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.input_data_.IsDefault()) {
          _impl_.input_data_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.input_data)
}

// bytes script_private_key = 7;
inline void UnblindedOutput::clear_script_private_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_private_key_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::script_private_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.script_private_key)
  return _internal_script_private_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_script_private_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_private_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.script_private_key)
}
inline std::string* UnblindedOutput::mutable_script_private_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_script_private_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.script_private_key)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_script_private_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.script_private_key_.Get();
}
inline void UnblindedOutput::_internal_set_script_private_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_private_key_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_script_private_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.script_private_key_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_script_private_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.script_private_key)
  return _impl_.script_private_key_.Release();
}
inline void UnblindedOutput::set_allocated_script_private_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_private_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.script_private_key_.IsDefault()) {
          _impl_.script_private_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.script_private_key)
}

// bytes sender_offset_public_key = 8;
inline void UnblindedOutput::clear_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::sender_offset_public_key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.sender_offset_public_key)
  return _internal_sender_offset_public_key();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_sender_offset_public_key(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.sender_offset_public_key)
}
inline std::string* UnblindedOutput::mutable_sender_offset_public_key() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_sender_offset_public_key();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.sender_offset_public_key)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_sender_offset_public_key() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Get();
}
inline void UnblindedOutput::_internal_set_sender_offset_public_key(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.sender_offset_public_key_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_sender_offset_public_key() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.sender_offset_public_key)
  return _impl_.sender_offset_public_key_.Release();
}
inline void UnblindedOutput::set_allocated_sender_offset_public_key(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.sender_offset_public_key_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.sender_offset_public_key_.IsDefault()) {
          _impl_.sender_offset_public_key_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.sender_offset_public_key)
}

// .tari.rpc.ComAndPubSignature metadata_signature = 9;
inline bool UnblindedOutput::has_metadata_signature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.metadata_signature_ != nullptr);
  return value;
}
inline const ::tari::rpc::ComAndPubSignature& UnblindedOutput::_internal_metadata_signature() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  const ::tari::rpc::ComAndPubSignature* p = _impl_.metadata_signature_;
  return p != nullptr ? *p : reinterpret_cast<const ::tari::rpc::ComAndPubSignature&>(::tari::rpc::_ComAndPubSignature_default_instance_);
}
inline const ::tari::rpc::ComAndPubSignature& UnblindedOutput::metadata_signature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.metadata_signature)
  return _internal_metadata_signature();
}
inline void UnblindedOutput::unsafe_arena_set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }
  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tari.rpc.UnblindedOutput.metadata_signature)
}
inline ::tari::rpc::ComAndPubSignature* UnblindedOutput::release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::ComAndPubSignature* released = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = 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::ComAndPubSignature* UnblindedOutput::unsafe_arena_release_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.metadata_signature)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::tari::rpc::ComAndPubSignature* temp = _impl_.metadata_signature_;
  _impl_.metadata_signature_ = nullptr;
  return temp;
}
inline ::tari::rpc::ComAndPubSignature* UnblindedOutput::_internal_mutable_metadata_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.metadata_signature_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::tari::rpc::ComAndPubSignature>(GetArena());
    _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(p);
  }
  return _impl_.metadata_signature_;
}
inline ::tari::rpc::ComAndPubSignature* UnblindedOutput::mutable_metadata_signature() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::tari::rpc::ComAndPubSignature* _msg = _internal_mutable_metadata_signature();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.metadata_signature)
  return _msg;
}
inline void UnblindedOutput::set_allocated_metadata_signature(::tari::rpc::ComAndPubSignature* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.metadata_signature_);
  }

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

  _impl_.metadata_signature_ = reinterpret_cast<::tari::rpc::ComAndPubSignature*>(value);
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.metadata_signature)
}

// uint64 script_lock_height = 10;
inline void UnblindedOutput::clear_script_lock_height() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_lock_height_ = ::uint64_t{0u};
}
inline ::uint64_t UnblindedOutput::script_lock_height() const {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.script_lock_height)
  return _internal_script_lock_height();
}
inline void UnblindedOutput::set_script_lock_height(::uint64_t value) {
  _internal_set_script_lock_height(value);
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.script_lock_height)
}
inline ::uint64_t UnblindedOutput::_internal_script_lock_height() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.script_lock_height_;
}
inline void UnblindedOutput::_internal_set_script_lock_height(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.script_lock_height_ = value;
}

// bytes covenant = 11;
inline void UnblindedOutput::clear_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::covenant() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.covenant)
  return _internal_covenant();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_covenant(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.covenant)
}
inline std::string* UnblindedOutput::mutable_covenant() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_covenant();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.covenant)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_covenant() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Get();
}
inline void UnblindedOutput::_internal_set_covenant(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.covenant_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_covenant() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.covenant)
  return _impl_.covenant_.Release();
}
inline void UnblindedOutput::set_allocated_covenant(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.covenant_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.covenant_.IsDefault()) {
          _impl_.covenant_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.covenant)
}

// bytes encrypted_data = 12;
inline void UnblindedOutput::clear_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.ClearToEmpty();
}
inline const std::string& UnblindedOutput::encrypted_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.encrypted_data)
  return _internal_encrypted_data();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void UnblindedOutput::set_encrypted_data(Arg_&& arg,
                                                     Args_... args) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.encrypted_data)
}
inline std::string* UnblindedOutput::mutable_encrypted_data() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_encrypted_data();
  // @@protoc_insertion_point(field_mutable:tari.rpc.UnblindedOutput.encrypted_data)
  return _s;
}
inline const std::string& UnblindedOutput::_internal_encrypted_data() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Get();
}
inline void UnblindedOutput::_internal_set_encrypted_data(const std::string& value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.Set(value, GetArena());
}
inline std::string* UnblindedOutput::_internal_mutable_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  return _impl_.encrypted_data_.Mutable( GetArena());
}
inline std::string* UnblindedOutput::release_encrypted_data() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  // @@protoc_insertion_point(field_release:tari.rpc.UnblindedOutput.encrypted_data)
  return _impl_.encrypted_data_.Release();
}
inline void UnblindedOutput::set_allocated_encrypted_data(std::string* value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.encrypted_data_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.encrypted_data_.IsDefault()) {
          _impl_.encrypted_data_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.UnblindedOutput.encrypted_data)
}

// uint64 minimum_value_promise = 13;
inline void UnblindedOutput::clear_minimum_value_promise() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = ::uint64_t{0u};
}
inline ::uint64_t UnblindedOutput::minimum_value_promise() const {
  // @@protoc_insertion_point(field_get:tari.rpc.UnblindedOutput.minimum_value_promise)
  return _internal_minimum_value_promise();
}
inline void UnblindedOutput::set_minimum_value_promise(::uint64_t value) {
  _internal_set_minimum_value_promise(value);
  // @@protoc_insertion_point(field_set:tari.rpc.UnblindedOutput.minimum_value_promise)
}
inline ::uint64_t UnblindedOutput::_internal_minimum_value_promise() const {
  PROTOBUF_TSAN_READ(&_impl_._tsan_detect_race);
  return _impl_.minimum_value_promise_;
}
inline void UnblindedOutput::_internal_set_minimum_value_promise(::uint64_t value) {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  _impl_.minimum_value_promise_ = value;
}

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

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


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_transaction_2eproto_2epb_2eh
