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

#include "sidechain_types.pb.h"

#include <algorithm>
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/extension_set.h"
#include "google/protobuf/wire_format_lite.h"
#include "google/protobuf/descriptor.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/reflection_ops.h"
#include "google/protobuf/wire_format.h"
#include "google/protobuf/generated_message_tctable_impl.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::google::protobuf;
namespace _pbi = ::google::protobuf::internal;
namespace _fl = ::google::protobuf::internal::field_layout;
namespace tari {
namespace rpc {

inline constexpr WasmInfo::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : abi_version_{0u},
        _cached_size_{0} {}

template <typename>
PROTOBUF_CONSTEXPR WasmInfo::WasmInfo(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct WasmInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR WasmInfoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~WasmInfoDefaultTypeInternal() {}
  union {
    WasmInfo _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WasmInfoDefaultTypeInternal _WasmInfo_default_instance_;
      template <typename>
PROTOBUF_CONSTEXPR ManifestInfo::ManifestInfo(::_pbi::ConstantInitialized) {}
struct ManifestInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ManifestInfoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~ManifestInfoDefaultTypeInternal() {}
  union {
    ManifestInfo _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ManifestInfoDefaultTypeInternal _ManifestInfo_default_instance_;
      template <typename>
PROTOBUF_CONSTEXPR FlowInfo::FlowInfo(::_pbi::ConstantInitialized) {}
struct FlowInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FlowInfoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~FlowInfoDefaultTypeInternal() {}
  union {
    FlowInfo _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FlowInfoDefaultTypeInternal _FlowInfo_default_instance_;

inline constexpr ConfidentialOutputData::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : claim_public_key_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        _cached_size_{0} {}

template <typename>
PROTOBUF_CONSTEXPR ConfidentialOutputData::ConfidentialOutputData(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct ConfidentialOutputDataDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ConfidentialOutputDataDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~ConfidentialOutputDataDefaultTypeInternal() {}
  union {
    ConfidentialOutputData _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConfidentialOutputDataDefaultTypeInternal _ConfidentialOutputData_default_instance_;

inline constexpr BuildInfo::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : repo_url_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        commit_hash_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        _cached_size_{0} {}

template <typename>
PROTOBUF_CONSTEXPR BuildInfo::BuildInfo(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct BuildInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR BuildInfoDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~BuildInfoDefaultTypeInternal() {}
  union {
    BuildInfo _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BuildInfoDefaultTypeInternal _BuildInfo_default_instance_;

inline constexpr ValidatorNodeRegistration::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        public_key_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        signature_{nullptr} {}

template <typename>
PROTOBUF_CONSTEXPR ValidatorNodeRegistration::ValidatorNodeRegistration(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct ValidatorNodeRegistrationDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ValidatorNodeRegistrationDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~ValidatorNodeRegistrationDefaultTypeInternal() {}
  union {
    ValidatorNodeRegistration _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ValidatorNodeRegistrationDefaultTypeInternal _ValidatorNodeRegistration_default_instance_;

inline constexpr TemplateType::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : template_type_{},
        _cached_size_{0},
        _oneof_case_{} {}

template <typename>
PROTOBUF_CONSTEXPR TemplateType::TemplateType(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct TemplateTypeDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TemplateTypeDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~TemplateTypeDefaultTypeInternal() {}
  union {
    TemplateType _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TemplateTypeDefaultTypeInternal _TemplateType_default_instance_;

inline constexpr TemplateRegistration::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        author_public_key_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        template_name_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        binary_sha_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        binary_url_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        author_signature_{nullptr},
        template_type_{nullptr},
        build_info_{nullptr},
        template_version_{0u} {}

template <typename>
PROTOBUF_CONSTEXPR TemplateRegistration::TemplateRegistration(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct TemplateRegistrationDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TemplateRegistrationDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~TemplateRegistrationDefaultTypeInternal() {}
  union {
    TemplateRegistration _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TemplateRegistrationDefaultTypeInternal _TemplateRegistration_default_instance_;

inline constexpr SideChainFeature::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : side_chain_feature_{},
        _cached_size_{0},
        _oneof_case_{} {}

template <typename>
PROTOBUF_CONSTEXPR SideChainFeature::SideChainFeature(::_pbi::ConstantInitialized)
    : _impl_(::_pbi::ConstantInitialized()) {}
struct SideChainFeatureDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SideChainFeatureDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~SideChainFeatureDefaultTypeInternal() {}
  union {
    SideChainFeature _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SideChainFeatureDefaultTypeInternal _SideChainFeature_default_instance_;
}  // namespace rpc
}  // namespace tari
static ::_pb::Metadata file_level_metadata_sidechain_5ftypes_2eproto[9];
static constexpr const ::_pb::EnumDescriptor**
    file_level_enum_descriptors_sidechain_5ftypes_2eproto = nullptr;
static constexpr const ::_pb::ServiceDescriptor**
    file_level_service_descriptors_sidechain_5ftypes_2eproto = nullptr;
const ::uint32_t
    TableStruct_sidechain_5ftypes_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
        protodesc_cold) = {
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::SideChainFeature, _internal_metadata_),
        ~0u,  // no _extensions_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::SideChainFeature, _impl_._oneof_case_[0]),
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        ::_pbi::kInvalidFieldOffsetTag,
        ::_pbi::kInvalidFieldOffsetTag,
        ::_pbi::kInvalidFieldOffsetTag,
        PROTOBUF_FIELD_OFFSET(::tari::rpc::SideChainFeature, _impl_.side_chain_feature_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ValidatorNodeRegistration, _impl_._has_bits_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ValidatorNodeRegistration, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ValidatorNodeRegistration, _impl_.public_key_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ValidatorNodeRegistration, _impl_.signature_),
        ~0u,
        0,
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_._has_bits_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.author_public_key_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.author_signature_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.template_name_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.template_version_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.template_type_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.build_info_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.binary_sha_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateRegistration, _impl_.binary_url_),
        ~0u,
        0,
        ~0u,
        ~0u,
        1,
        2,
        ~0u,
        ~0u,
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConfidentialOutputData, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConfidentialOutputData, _impl_.claim_public_key_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateType, _internal_metadata_),
        ~0u,  // no _extensions_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateType, _impl_._oneof_case_[0]),
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        ::_pbi::kInvalidFieldOffsetTag,
        ::_pbi::kInvalidFieldOffsetTag,
        ::_pbi::kInvalidFieldOffsetTag,
        PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateType, _impl_.template_type_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WasmInfo, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WasmInfo, _impl_.abi_version_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::FlowInfo, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ManifestInfo, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::BuildInfo, _internal_metadata_),
        ~0u,  // no _extensions_
        ~0u,  // no _oneof_case_
        ~0u,  // no _weak_field_map_
        ~0u,  // no _inlined_string_donated_
        ~0u,  // no _split_
        ~0u,  // no sizeof(Split)
        PROTOBUF_FIELD_OFFSET(::tari::rpc::BuildInfo, _impl_.repo_url_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::BuildInfo, _impl_.commit_hash_),
};

static const ::_pbi::MigrationSchema
    schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        {0, -1, -1, sizeof(::tari::rpc::SideChainFeature)},
        {12, 22, -1, sizeof(::tari::rpc::ValidatorNodeRegistration)},
        {24, 40, -1, sizeof(::tari::rpc::TemplateRegistration)},
        {48, -1, -1, sizeof(::tari::rpc::ConfidentialOutputData)},
        {57, -1, -1, sizeof(::tari::rpc::TemplateType)},
        {69, -1, -1, sizeof(::tari::rpc::WasmInfo)},
        {78, -1, -1, sizeof(::tari::rpc::FlowInfo)},
        {86, -1, -1, sizeof(::tari::rpc::ManifestInfo)},
        {94, -1, -1, sizeof(::tari::rpc::BuildInfo)},
};
static const ::_pb::Message* const file_default_instances[] = {
    &::tari::rpc::_SideChainFeature_default_instance_._instance,
    &::tari::rpc::_ValidatorNodeRegistration_default_instance_._instance,
    &::tari::rpc::_TemplateRegistration_default_instance_._instance,
    &::tari::rpc::_ConfidentialOutputData_default_instance_._instance,
    &::tari::rpc::_TemplateType_default_instance_._instance,
    &::tari::rpc::_WasmInfo_default_instance_._instance,
    &::tari::rpc::_FlowInfo_default_instance_._instance,
    &::tari::rpc::_ManifestInfo_default_instance_._instance,
    &::tari::rpc::_BuildInfo_default_instance_._instance,
};
const char descriptor_table_protodef_sidechain_5ftypes_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
    protodesc_cold) = {
    "\n\025sidechain_types.proto\022\010tari.rpc\032\013types"
    ".proto\"\366\001\n\020SideChainFeature\022J\n\033validator"
    "_node_registration\030\001 \001(\0132#.tari.rpc.Vali"
    "datorNodeRegistrationH\000\022\?\n\025template_regi"
    "stration\030\002 \001(\0132\036.tari.rpc.TemplateRegist"
    "rationH\000\022\?\n\023confidential_output\030\003 \001(\0132 ."
    "tari.rpc.ConfidentialOutputDataH\000B\024\n\022sid"
    "e_chain_feature\"W\n\031ValidatorNodeRegistra"
    "tion\022\022\n\npublic_key\030\001 \001(\014\022&\n\tsignature\030\002 "
    "\001(\0132\023.tari.rpc.Signature\"\221\002\n\024TemplateReg"
    "istration\022\031\n\021author_public_key\030\001 \001(\014\022-\n\020"
    "author_signature\030\002 \001(\0132\023.tari.rpc.Signat"
    "ure\022\025\n\rtemplate_name\030\003 \001(\t\022\030\n\020template_v"
    "ersion\030\004 \001(\r\022-\n\rtemplate_type\030\005 \001(\0132\026.ta"
    "ri.rpc.TemplateType\022\'\n\nbuild_info\030\006 \001(\0132"
    "\023.tari.rpc.BuildInfo\022\022\n\nbinary_sha\030\007 \001(\014"
    "\022\022\n\nbinary_url\030\010 \001(\t\"2\n\026ConfidentialOutp"
    "utData\022\030\n\020claim_public_key\030\001 \001(\014\"\223\001\n\014Tem"
    "plateType\022\"\n\004wasm\030\001 \001(\0132\022.tari.rpc.WasmI"
    "nfoH\000\022\"\n\004flow\030\002 \001(\0132\022.tari.rpc.FlowInfoH"
    "\000\022*\n\010manifest\030\003 \001(\0132\026.tari.rpc.ManifestI"
    "nfoH\000B\017\n\rtemplate_type\"\037\n\010WasmInfo\022\023\n\013ab"
    "i_version\030\001 \001(\r\"\n\n\010FlowInfo\"\016\n\014ManifestI"
    "nfo\"2\n\tBuildInfo\022\020\n\010repo_url\030\001 \001(\t\022\023\n\013co"
    "mmit_hash\030\002 \001(\014b\006proto3"
};
static const ::_pbi::DescriptorTable* const descriptor_table_sidechain_5ftypes_2eproto_deps[1] =
    {
        &::descriptor_table_types_2eproto,
};
static ::absl::once_flag descriptor_table_sidechain_5ftypes_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_sidechain_5ftypes_2eproto = {
    false,
    false,
    983,
    descriptor_table_protodef_sidechain_5ftypes_2eproto,
    "sidechain_types.proto",
    &descriptor_table_sidechain_5ftypes_2eproto_once,
    descriptor_table_sidechain_5ftypes_2eproto_deps,
    1,
    9,
    schemas,
    file_default_instances,
    TableStruct_sidechain_5ftypes_2eproto::offsets,
    file_level_metadata_sidechain_5ftypes_2eproto,
    file_level_enum_descriptors_sidechain_5ftypes_2eproto,
    file_level_service_descriptors_sidechain_5ftypes_2eproto,
};

// This function exists to be marked as weak.
// It can significantly speed up compilation by breaking up LLVM's SCC
// in the .pb.cc translation units. Large translation units see a
// reduction of more than 35% of walltime for optimized builds. Without
// the weak attribute all the messages in the file, including all the
// vtables and everything they use become part of the same SCC through
// a cycle like:
// GetMetadata -> descriptor table -> default instances ->
//   vtables -> GetMetadata
// By adding a weak function here we break the connection from the
// individual vtables back into the descriptor table.
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_sidechain_5ftypes_2eproto_getter() {
  return &descriptor_table_sidechain_5ftypes_2eproto;
}
namespace tari {
namespace rpc {
// ===================================================================

class SideChainFeature::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::tari::rpc::SideChainFeature, _impl_._oneof_case_);
};

void SideChainFeature::set_allocated_validator_node_registration(::tari::rpc::ValidatorNodeRegistration* validator_node_registration) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_side_chain_feature();
  if (validator_node_registration) {
    ::google::protobuf::Arena* submessage_arena = validator_node_registration->GetArena();
    if (message_arena != submessage_arena) {
      validator_node_registration = ::google::protobuf::internal::GetOwnedMessage(message_arena, validator_node_registration, submessage_arena);
    }
    set_has_validator_node_registration();
    _impl_.side_chain_feature_.validator_node_registration_ = validator_node_registration;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SideChainFeature.validator_node_registration)
}
void SideChainFeature::set_allocated_template_registration(::tari::rpc::TemplateRegistration* template_registration) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_side_chain_feature();
  if (template_registration) {
    ::google::protobuf::Arena* submessage_arena = template_registration->GetArena();
    if (message_arena != submessage_arena) {
      template_registration = ::google::protobuf::internal::GetOwnedMessage(message_arena, template_registration, submessage_arena);
    }
    set_has_template_registration();
    _impl_.side_chain_feature_.template_registration_ = template_registration;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SideChainFeature.template_registration)
}
void SideChainFeature::set_allocated_confidential_output(::tari::rpc::ConfidentialOutputData* confidential_output) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_side_chain_feature();
  if (confidential_output) {
    ::google::protobuf::Arena* submessage_arena = confidential_output->GetArena();
    if (message_arena != submessage_arena) {
      confidential_output = ::google::protobuf::internal::GetOwnedMessage(message_arena, confidential_output, submessage_arena);
    }
    set_has_confidential_output();
    _impl_.side_chain_feature_.confidential_output_ = confidential_output;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.SideChainFeature.confidential_output)
}
SideChainFeature::SideChainFeature(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.SideChainFeature)
}
inline PROTOBUF_NDEBUG_INLINE SideChainFeature::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : side_chain_feature_{},
        _cached_size_{0},
        _oneof_case_{from._oneof_case_[0]} {}

SideChainFeature::SideChainFeature(
    ::google::protobuf::Arena* arena,
    const SideChainFeature& from)
    : ::google::protobuf::Message(arena) {
  SideChainFeature* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);
  switch (side_chain_feature_case()) {
    case SIDE_CHAIN_FEATURE_NOT_SET:
      break;
      case kValidatorNodeRegistration:
        _impl_.side_chain_feature_.validator_node_registration_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::ValidatorNodeRegistration>(arena, *from._impl_.side_chain_feature_.validator_node_registration_);
        break;
      case kTemplateRegistration:
        _impl_.side_chain_feature_.template_registration_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::TemplateRegistration>(arena, *from._impl_.side_chain_feature_.template_registration_);
        break;
      case kConfidentialOutput:
        _impl_.side_chain_feature_.confidential_output_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::ConfidentialOutputData>(arena, *from._impl_.side_chain_feature_.confidential_output_);
        break;
  }

  // @@protoc_insertion_point(copy_constructor:tari.rpc.SideChainFeature)
}
inline PROTOBUF_NDEBUG_INLINE SideChainFeature::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : side_chain_feature_{},
        _cached_size_{0},
        _oneof_case_{} {}

inline void SideChainFeature::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
SideChainFeature::~SideChainFeature() {
  // @@protoc_insertion_point(destructor:tari.rpc.SideChainFeature)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void SideChainFeature::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  if (has_side_chain_feature()) {
    clear_side_chain_feature();
  }
  _impl_.~Impl_();
}

void SideChainFeature::clear_side_chain_feature() {
// @@protoc_insertion_point(one_of_clear_start:tari.rpc.SideChainFeature)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  switch (side_chain_feature_case()) {
    case kValidatorNodeRegistration: {
      if (GetArena() == nullptr) {
        delete _impl_.side_chain_feature_.validator_node_registration_;
      }
      break;
    }
    case kTemplateRegistration: {
      if (GetArena() == nullptr) {
        delete _impl_.side_chain_feature_.template_registration_;
      }
      break;
    }
    case kConfidentialOutput: {
      if (GetArena() == nullptr) {
        delete _impl_.side_chain_feature_.confidential_output_;
      }
      break;
    }
    case SIDE_CHAIN_FEATURE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = SIDE_CHAIN_FEATURE_NOT_SET;
}


const ::google::protobuf::MessageLite::ClassData*
SideChainFeature::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(SideChainFeature, _impl_._cached_size_),
              false,
          },
          &SideChainFeature::MergeImpl,
          &SideChainFeature::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void SideChainFeature::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.SideChainFeature)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_side_chain_feature();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* SideChainFeature::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<0, 3, 3, 0, 2> SideChainFeature::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    3, 0,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967288,  // skipmap
    offsetof(decltype(_table_), field_entries),
    3,  // num_field_entries
    3,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_SideChainFeature_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::SideChainFeature>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    {::_pbi::TcParser::MiniParse, {}},
  }}, {{
    65535, 65535
  }}, {{
    // .tari.rpc.ValidatorNodeRegistration validator_node_registration = 1;
    {PROTOBUF_FIELD_OFFSET(SideChainFeature, _impl_.side_chain_feature_.validator_node_registration_), _Internal::kOneofCaseOffset + 0, 0,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.TemplateRegistration template_registration = 2;
    {PROTOBUF_FIELD_OFFSET(SideChainFeature, _impl_.side_chain_feature_.template_registration_), _Internal::kOneofCaseOffset + 0, 1,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.ConfidentialOutputData confidential_output = 3;
    {PROTOBUF_FIELD_OFFSET(SideChainFeature, _impl_.side_chain_feature_.confidential_output_), _Internal::kOneofCaseOffset + 0, 2,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::ValidatorNodeRegistration>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::TemplateRegistration>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::ConfidentialOutputData>()},
  }}, {{
  }},
};

::uint8_t* SideChainFeature::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.SideChainFeature)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  switch (side_chain_feature_case()) {
    case kValidatorNodeRegistration: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, *_impl_.side_chain_feature_.validator_node_registration_, _impl_.side_chain_feature_.validator_node_registration_->GetCachedSize(), target, stream);
      break;
    }
    case kTemplateRegistration: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          2, *_impl_.side_chain_feature_.template_registration_, _impl_.side_chain_feature_.template_registration_->GetCachedSize(), target, stream);
      break;
    }
    case kConfidentialOutput: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          3, *_impl_.side_chain_feature_.confidential_output_, _impl_.side_chain_feature_.confidential_output_->GetCachedSize(), target, stream);
      break;
    }
    default:
      break;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.SideChainFeature)
  return target;
}

::size_t SideChainFeature::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.SideChainFeature)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (side_chain_feature_case()) {
    // .tari.rpc.ValidatorNodeRegistration validator_node_registration = 1;
    case kValidatorNodeRegistration: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.side_chain_feature_.validator_node_registration_);
      break;
    }
    // .tari.rpc.TemplateRegistration template_registration = 2;
    case kTemplateRegistration: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.side_chain_feature_.template_registration_);
      break;
    }
    // .tari.rpc.ConfidentialOutputData confidential_output = 3;
    case kConfidentialOutput: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.side_chain_feature_.confidential_output_);
      break;
    }
    case SIDE_CHAIN_FEATURE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void SideChainFeature::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<SideChainFeature*>(&to_msg);
  auto& from = static_cast<const SideChainFeature&>(from_msg);
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.SideChainFeature)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (const uint32_t oneof_from_case = from._impl_._oneof_case_[0]) {
    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
    if (oneof_needs_init) {
      if (oneof_to_case != 0) {
        _this->clear_side_chain_feature();
      }
      _this->_impl_._oneof_case_[0] = oneof_from_case;
    }

    switch (oneof_from_case) {
      case kValidatorNodeRegistration: {
        if (oneof_needs_init) {
          _this->_impl_.side_chain_feature_.validator_node_registration_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::ValidatorNodeRegistration>(arena, *from._impl_.side_chain_feature_.validator_node_registration_);
        } else {
          _this->_impl_.side_chain_feature_.validator_node_registration_->MergeFrom(from._internal_validator_node_registration());
        }
        break;
      }
      case kTemplateRegistration: {
        if (oneof_needs_init) {
          _this->_impl_.side_chain_feature_.template_registration_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::TemplateRegistration>(arena, *from._impl_.side_chain_feature_.template_registration_);
        } else {
          _this->_impl_.side_chain_feature_.template_registration_->MergeFrom(from._internal_template_registration());
        }
        break;
      }
      case kConfidentialOutput: {
        if (oneof_needs_init) {
          _this->_impl_.side_chain_feature_.confidential_output_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::ConfidentialOutputData>(arena, *from._impl_.side_chain_feature_.confidential_output_);
        } else {
          _this->_impl_.side_chain_feature_.confidential_output_->MergeFrom(from._internal_confidential_output());
        }
        break;
      }
      case SIDE_CHAIN_FEATURE_NOT_SET:
        break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void SideChainFeature::CopyFrom(const SideChainFeature& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.SideChainFeature)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool SideChainFeature::IsInitialized() const {
  return true;
}

void SideChainFeature::InternalSwap(SideChainFeature* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.side_chain_feature_, other->_impl_.side_chain_feature_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

::google::protobuf::Metadata SideChainFeature::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[0]);
}
// ===================================================================

class ValidatorNodeRegistration::_Internal {
 public:
  using HasBits = decltype(std::declval<ValidatorNodeRegistration>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_._has_bits_);
};

void ValidatorNodeRegistration::clear_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.signature_ != nullptr) _impl_.signature_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
ValidatorNodeRegistration::ValidatorNodeRegistration(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.ValidatorNodeRegistration)
}
inline PROTOBUF_NDEBUG_INLINE ValidatorNodeRegistration::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        public_key_(arena, from.public_key_) {}

ValidatorNodeRegistration::ValidatorNodeRegistration(
    ::google::protobuf::Arena* arena,
    const ValidatorNodeRegistration& from)
    : ::google::protobuf::Message(arena) {
  ValidatorNodeRegistration* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.signature_ = (cached_has_bits & 0x00000001u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Signature>(
                              arena, *from._impl_.signature_)
                        : nullptr;

  // @@protoc_insertion_point(copy_constructor:tari.rpc.ValidatorNodeRegistration)
}
inline PROTOBUF_NDEBUG_INLINE ValidatorNodeRegistration::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : _cached_size_{0},
        public_key_(arena) {}

inline void ValidatorNodeRegistration::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.signature_ = {};
}
ValidatorNodeRegistration::~ValidatorNodeRegistration() {
  // @@protoc_insertion_point(destructor:tari.rpc.ValidatorNodeRegistration)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void ValidatorNodeRegistration::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.public_key_.Destroy();
  delete _impl_.signature_;
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
ValidatorNodeRegistration::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_._cached_size_),
              false,
          },
          &ValidatorNodeRegistration::MergeImpl,
          &ValidatorNodeRegistration::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void ValidatorNodeRegistration::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.ValidatorNodeRegistration)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.public_key_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.signature_ != nullptr);
    _impl_.signature_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* ValidatorNodeRegistration::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<1, 2, 1, 0, 2> ValidatorNodeRegistration::_table_ = {
  {
    PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_._has_bits_),
    0, // no _extensions_
    2, 8,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967292,  // skipmap
    offsetof(decltype(_table_), field_entries),
    2,  // num_field_entries
    1,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_ValidatorNodeRegistration_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::ValidatorNodeRegistration>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // .tari.rpc.Signature signature = 2;
    {::_pbi::TcParser::FastMtS1,
     {18, 0, 0, PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_.signature_)}},
    // bytes public_key = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_.public_key_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes public_key = 1;
    {PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_.public_key_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // .tari.rpc.Signature signature = 2;
    {PROTOBUF_FIELD_OFFSET(ValidatorNodeRegistration, _impl_.signature_), _Internal::kHasBitsOffset + 0, 0,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::Signature>()},
  }}, {{
  }},
};

::uint8_t* ValidatorNodeRegistration::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.ValidatorNodeRegistration)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // bytes public_key = 1;
  if (!this->_internal_public_key().empty()) {
    const std::string& _s = this->_internal_public_key();
    target = stream->WriteBytesMaybeAliased(1, _s, target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .tari.rpc.Signature signature = 2;
  if (cached_has_bits & 0x00000001u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *_impl_.signature_, _impl_.signature_->GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.ValidatorNodeRegistration)
  return target;
}

::size_t ValidatorNodeRegistration::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.ValidatorNodeRegistration)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes public_key = 1;
  if (!this->_internal_public_key().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_public_key());
  }

  // .tari.rpc.Signature signature = 2;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size +=
        1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.signature_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void ValidatorNodeRegistration::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<ValidatorNodeRegistration*>(&to_msg);
  auto& from = static_cast<const ValidatorNodeRegistration&>(from_msg);
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.ValidatorNodeRegistration)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_public_key().empty()) {
    _this->_internal_set_public_key(from._internal_public_key());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(from._impl_.signature_ != nullptr);
    if (_this->_impl_.signature_ == nullptr) {
      _this->_impl_.signature_ =
          ::google::protobuf::Message::CopyConstruct<::tari::rpc::Signature>(arena, *from._impl_.signature_);
    } else {
      _this->_impl_.signature_->MergeFrom(*from._impl_.signature_);
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void ValidatorNodeRegistration::CopyFrom(const ValidatorNodeRegistration& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.ValidatorNodeRegistration)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool ValidatorNodeRegistration::IsInitialized() const {
  return true;
}

void ValidatorNodeRegistration::InternalSwap(ValidatorNodeRegistration* PROTOBUF_RESTRICT other) {
  using std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.public_key_, &other->_impl_.public_key_, arena);
  swap(_impl_.signature_, other->_impl_.signature_);
}

::google::protobuf::Metadata ValidatorNodeRegistration::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[1]);
}
// ===================================================================

class TemplateRegistration::_Internal {
 public:
  using HasBits = decltype(std::declval<TemplateRegistration>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_._has_bits_);
};

void TemplateRegistration::clear_author_signature() {
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  if (_impl_.author_signature_ != nullptr) _impl_.author_signature_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
TemplateRegistration::TemplateRegistration(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.TemplateRegistration)
}
inline PROTOBUF_NDEBUG_INLINE TemplateRegistration::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        author_public_key_(arena, from.author_public_key_),
        template_name_(arena, from.template_name_),
        binary_sha_(arena, from.binary_sha_),
        binary_url_(arena, from.binary_url_) {}

TemplateRegistration::TemplateRegistration(
    ::google::protobuf::Arena* arena,
    const TemplateRegistration& from)
    : ::google::protobuf::Message(arena) {
  TemplateRegistration* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);
  ::uint32_t cached_has_bits = _impl_._has_bits_[0];
  _impl_.author_signature_ = (cached_has_bits & 0x00000001u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Signature>(
                              arena, *from._impl_.author_signature_)
                        : nullptr;
  _impl_.template_type_ = (cached_has_bits & 0x00000002u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::TemplateType>(
                              arena, *from._impl_.template_type_)
                        : nullptr;
  _impl_.build_info_ = (cached_has_bits & 0x00000004u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::BuildInfo>(
                              arena, *from._impl_.build_info_)
                        : nullptr;
  _impl_.template_version_ = from._impl_.template_version_;

  // @@protoc_insertion_point(copy_constructor:tari.rpc.TemplateRegistration)
}
inline PROTOBUF_NDEBUG_INLINE TemplateRegistration::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : _cached_size_{0},
        author_public_key_(arena),
        template_name_(arena),
        binary_sha_(arena),
        binary_url_(arena) {}

inline void TemplateRegistration::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, author_signature_),
           0,
           offsetof(Impl_, template_version_) -
               offsetof(Impl_, author_signature_) +
               sizeof(Impl_::template_version_));
}
TemplateRegistration::~TemplateRegistration() {
  // @@protoc_insertion_point(destructor:tari.rpc.TemplateRegistration)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void TemplateRegistration::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.author_public_key_.Destroy();
  _impl_.template_name_.Destroy();
  _impl_.binary_sha_.Destroy();
  _impl_.binary_url_.Destroy();
  delete _impl_.author_signature_;
  delete _impl_.template_type_;
  delete _impl_.build_info_;
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
TemplateRegistration::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_._cached_size_),
              false,
          },
          &TemplateRegistration::MergeImpl,
          &TemplateRegistration::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void TemplateRegistration::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.TemplateRegistration)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.author_public_key_.ClearToEmpty();
  _impl_.template_name_.ClearToEmpty();
  _impl_.binary_sha_.ClearToEmpty();
  _impl_.binary_url_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.author_signature_ != nullptr);
      _impl_.author_signature_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.template_type_ != nullptr);
      _impl_.template_type_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.build_info_ != nullptr);
      _impl_.build_info_->Clear();
    }
  }
  _impl_.template_version_ = 0u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* TemplateRegistration::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<3, 8, 3, 69, 2> TemplateRegistration::_table_ = {
  {
    PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_._has_bits_),
    0, // no _extensions_
    8, 56,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967040,  // skipmap
    offsetof(decltype(_table_), field_entries),
    8,  // num_field_entries
    3,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_TemplateRegistration_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::TemplateRegistration>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // string binary_url = 8;
    {::_pbi::TcParser::FastUS1,
     {66, 63, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.binary_url_)}},
    // bytes author_public_key = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.author_public_key_)}},
    // .tari.rpc.Signature author_signature = 2;
    {::_pbi::TcParser::FastMtS1,
     {18, 0, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.author_signature_)}},
    // string template_name = 3;
    {::_pbi::TcParser::FastUS1,
     {26, 63, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_name_)}},
    // uint32 template_version = 4;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TemplateRegistration, _impl_.template_version_), 63>(),
     {32, 63, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_version_)}},
    // .tari.rpc.TemplateType template_type = 5;
    {::_pbi::TcParser::FastMtS1,
     {42, 1, 1, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_type_)}},
    // .tari.rpc.BuildInfo build_info = 6;
    {::_pbi::TcParser::FastMtS1,
     {50, 2, 2, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.build_info_)}},
    // bytes binary_sha = 7;
    {::_pbi::TcParser::FastBS1,
     {58, 63, 0, PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.binary_sha_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes author_public_key = 1;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.author_public_key_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // .tari.rpc.Signature author_signature = 2;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.author_signature_), _Internal::kHasBitsOffset + 0, 0,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // string template_name = 3;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_name_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
    // uint32 template_version = 4;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_version_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
    // .tari.rpc.TemplateType template_type = 5;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_type_), _Internal::kHasBitsOffset + 1, 1,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.BuildInfo build_info = 6;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.build_info_), _Internal::kHasBitsOffset + 2, 2,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // bytes binary_sha = 7;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.binary_sha_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // string binary_url = 8;
    {PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.binary_url_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::Signature>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::TemplateType>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::BuildInfo>()},
  }}, {{
    "\35\0\0\15\0\0\0\0\12\0\0\0\0\0\0\0"
    "tari.rpc.TemplateRegistration"
    "template_name"
    "binary_url"
  }},
};

::uint8_t* TemplateRegistration::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.TemplateRegistration)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // bytes author_public_key = 1;
  if (!this->_internal_author_public_key().empty()) {
    const std::string& _s = this->_internal_author_public_key();
    target = stream->WriteBytesMaybeAliased(1, _s, target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .tari.rpc.Signature author_signature = 2;
  if (cached_has_bits & 0x00000001u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *_impl_.author_signature_, _impl_.author_signature_->GetCachedSize(), target, stream);
  }

  // string template_name = 3;
  if (!this->_internal_template_name().empty()) {
    const std::string& _s = this->_internal_template_name();
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "tari.rpc.TemplateRegistration.template_name");
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // uint32 template_version = 4;
  if (this->_internal_template_version() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        4, this->_internal_template_version(), target);
  }

  // .tari.rpc.TemplateType template_type = 5;
  if (cached_has_bits & 0x00000002u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        5, *_impl_.template_type_, _impl_.template_type_->GetCachedSize(), target, stream);
  }

  // .tari.rpc.BuildInfo build_info = 6;
  if (cached_has_bits & 0x00000004u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        6, *_impl_.build_info_, _impl_.build_info_->GetCachedSize(), target, stream);
  }

  // bytes binary_sha = 7;
  if (!this->_internal_binary_sha().empty()) {
    const std::string& _s = this->_internal_binary_sha();
    target = stream->WriteBytesMaybeAliased(7, _s, target);
  }

  // string binary_url = 8;
  if (!this->_internal_binary_url().empty()) {
    const std::string& _s = this->_internal_binary_url();
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "tari.rpc.TemplateRegistration.binary_url");
    target = stream->WriteStringMaybeAliased(8, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.TemplateRegistration)
  return target;
}

::size_t TemplateRegistration::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.TemplateRegistration)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes author_public_key = 1;
  if (!this->_internal_author_public_key().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_author_public_key());
  }

  // string template_name = 3;
  if (!this->_internal_template_name().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                    this->_internal_template_name());
  }

  // bytes binary_sha = 7;
  if (!this->_internal_binary_sha().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_binary_sha());
  }

  // string binary_url = 8;
  if (!this->_internal_binary_url().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                    this->_internal_binary_url());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // .tari.rpc.Signature author_signature = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.author_signature_);
    }

    // .tari.rpc.TemplateType template_type = 5;
    if (cached_has_bits & 0x00000002u) {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.template_type_);
    }

    // .tari.rpc.BuildInfo build_info = 6;
    if (cached_has_bits & 0x00000004u) {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.build_info_);
    }

  }
  // uint32 template_version = 4;
  if (this->_internal_template_version() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
        this->_internal_template_version());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void TemplateRegistration::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<TemplateRegistration*>(&to_msg);
  auto& from = static_cast<const TemplateRegistration&>(from_msg);
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.TemplateRegistration)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_author_public_key().empty()) {
    _this->_internal_set_author_public_key(from._internal_author_public_key());
  }
  if (!from._internal_template_name().empty()) {
    _this->_internal_set_template_name(from._internal_template_name());
  }
  if (!from._internal_binary_sha().empty()) {
    _this->_internal_set_binary_sha(from._internal_binary_sha());
  }
  if (!from._internal_binary_url().empty()) {
    _this->_internal_set_binary_url(from._internal_binary_url());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(from._impl_.author_signature_ != nullptr);
      if (_this->_impl_.author_signature_ == nullptr) {
        _this->_impl_.author_signature_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Signature>(arena, *from._impl_.author_signature_);
      } else {
        _this->_impl_.author_signature_->MergeFrom(*from._impl_.author_signature_);
      }
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(from._impl_.template_type_ != nullptr);
      if (_this->_impl_.template_type_ == nullptr) {
        _this->_impl_.template_type_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::TemplateType>(arena, *from._impl_.template_type_);
      } else {
        _this->_impl_.template_type_->MergeFrom(*from._impl_.template_type_);
      }
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(from._impl_.build_info_ != nullptr);
      if (_this->_impl_.build_info_ == nullptr) {
        _this->_impl_.build_info_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::BuildInfo>(arena, *from._impl_.build_info_);
      } else {
        _this->_impl_.build_info_->MergeFrom(*from._impl_.build_info_);
      }
    }
  }
  if (from._internal_template_version() != 0) {
    _this->_impl_.template_version_ = from._impl_.template_version_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void TemplateRegistration::CopyFrom(const TemplateRegistration& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.TemplateRegistration)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool TemplateRegistration::IsInitialized() const {
  return true;
}

void TemplateRegistration::InternalSwap(TemplateRegistration* PROTOBUF_RESTRICT other) {
  using std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.author_public_key_, &other->_impl_.author_public_key_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.template_name_, &other->_impl_.template_name_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.binary_sha_, &other->_impl_.binary_sha_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.binary_url_, &other->_impl_.binary_url_, arena);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.template_version_)
      + sizeof(TemplateRegistration::_impl_.template_version_)
      - PROTOBUF_FIELD_OFFSET(TemplateRegistration, _impl_.author_signature_)>(
          reinterpret_cast<char*>(&_impl_.author_signature_),
          reinterpret_cast<char*>(&other->_impl_.author_signature_));
}

::google::protobuf::Metadata TemplateRegistration::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[2]);
}
// ===================================================================

class ConfidentialOutputData::_Internal {
 public:
};

ConfidentialOutputData::ConfidentialOutputData(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.ConfidentialOutputData)
}
inline PROTOBUF_NDEBUG_INLINE ConfidentialOutputData::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : claim_public_key_(arena, from.claim_public_key_),
        _cached_size_{0} {}

ConfidentialOutputData::ConfidentialOutputData(
    ::google::protobuf::Arena* arena,
    const ConfidentialOutputData& from)
    : ::google::protobuf::Message(arena) {
  ConfidentialOutputData* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);

  // @@protoc_insertion_point(copy_constructor:tari.rpc.ConfidentialOutputData)
}
inline PROTOBUF_NDEBUG_INLINE ConfidentialOutputData::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : claim_public_key_(arena),
        _cached_size_{0} {}

inline void ConfidentialOutputData::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
ConfidentialOutputData::~ConfidentialOutputData() {
  // @@protoc_insertion_point(destructor:tari.rpc.ConfidentialOutputData)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void ConfidentialOutputData::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.claim_public_key_.Destroy();
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
ConfidentialOutputData::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(ConfidentialOutputData, _impl_._cached_size_),
              false,
          },
          &ConfidentialOutputData::MergeImpl,
          &ConfidentialOutputData::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void ConfidentialOutputData::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.ConfidentialOutputData)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.claim_public_key_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* ConfidentialOutputData::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<0, 1, 0, 0, 2> ConfidentialOutputData::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    1, 0,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967294,  // skipmap
    offsetof(decltype(_table_), field_entries),
    1,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_ConfidentialOutputData_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::ConfidentialOutputData>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // bytes claim_public_key = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(ConfidentialOutputData, _impl_.claim_public_key_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes claim_public_key = 1;
    {PROTOBUF_FIELD_OFFSET(ConfidentialOutputData, _impl_.claim_public_key_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
  }},
};

::uint8_t* ConfidentialOutputData::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.ConfidentialOutputData)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // bytes claim_public_key = 1;
  if (!this->_internal_claim_public_key().empty()) {
    const std::string& _s = this->_internal_claim_public_key();
    target = stream->WriteBytesMaybeAliased(1, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.ConfidentialOutputData)
  return target;
}

::size_t ConfidentialOutputData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.ConfidentialOutputData)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes claim_public_key = 1;
  if (!this->_internal_claim_public_key().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_claim_public_key());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void ConfidentialOutputData::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<ConfidentialOutputData*>(&to_msg);
  auto& from = static_cast<const ConfidentialOutputData&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.ConfidentialOutputData)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_claim_public_key().empty()) {
    _this->_internal_set_claim_public_key(from._internal_claim_public_key());
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void ConfidentialOutputData::CopyFrom(const ConfidentialOutputData& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.ConfidentialOutputData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool ConfidentialOutputData::IsInitialized() const {
  return true;
}

void ConfidentialOutputData::InternalSwap(ConfidentialOutputData* PROTOBUF_RESTRICT other) {
  using std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.claim_public_key_, &other->_impl_.claim_public_key_, arena);
}

::google::protobuf::Metadata ConfidentialOutputData::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[3]);
}
// ===================================================================

class TemplateType::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::tari::rpc::TemplateType, _impl_._oneof_case_);
};

void TemplateType::set_allocated_wasm(::tari::rpc::WasmInfo* wasm) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_template_type();
  if (wasm) {
    ::google::protobuf::Arena* submessage_arena = wasm->GetArena();
    if (message_arena != submessage_arena) {
      wasm = ::google::protobuf::internal::GetOwnedMessage(message_arena, wasm, submessage_arena);
    }
    set_has_wasm();
    _impl_.template_type_.wasm_ = wasm;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TemplateType.wasm)
}
void TemplateType::set_allocated_flow(::tari::rpc::FlowInfo* flow) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_template_type();
  if (flow) {
    ::google::protobuf::Arena* submessage_arena = flow->GetArena();
    if (message_arena != submessage_arena) {
      flow = ::google::protobuf::internal::GetOwnedMessage(message_arena, flow, submessage_arena);
    }
    set_has_flow();
    _impl_.template_type_.flow_ = flow;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TemplateType.flow)
}
void TemplateType::set_allocated_manifest(::tari::rpc::ManifestInfo* manifest) {
  ::google::protobuf::Arena* message_arena = GetArena();
  clear_template_type();
  if (manifest) {
    ::google::protobuf::Arena* submessage_arena = manifest->GetArena();
    if (message_arena != submessage_arena) {
      manifest = ::google::protobuf::internal::GetOwnedMessage(message_arena, manifest, submessage_arena);
    }
    set_has_manifest();
    _impl_.template_type_.manifest_ = manifest;
  }
  // @@protoc_insertion_point(field_set_allocated:tari.rpc.TemplateType.manifest)
}
TemplateType::TemplateType(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.TemplateType)
}
inline PROTOBUF_NDEBUG_INLINE TemplateType::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : template_type_{},
        _cached_size_{0},
        _oneof_case_{from._oneof_case_[0]} {}

TemplateType::TemplateType(
    ::google::protobuf::Arena* arena,
    const TemplateType& from)
    : ::google::protobuf::Message(arena) {
  TemplateType* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);
  switch (template_type_case()) {
    case TEMPLATE_TYPE_NOT_SET:
      break;
      case kWasm:
        _impl_.template_type_.wasm_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::WasmInfo>(arena, *from._impl_.template_type_.wasm_);
        break;
      case kFlow:
        _impl_.template_type_.flow_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::FlowInfo>(arena, *from._impl_.template_type_.flow_);
        break;
      case kManifest:
        _impl_.template_type_.manifest_ = ::google::protobuf::Message::CopyConstruct<::tari::rpc::ManifestInfo>(arena, *from._impl_.template_type_.manifest_);
        break;
  }

  // @@protoc_insertion_point(copy_constructor:tari.rpc.TemplateType)
}
inline PROTOBUF_NDEBUG_INLINE TemplateType::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : template_type_{},
        _cached_size_{0},
        _oneof_case_{} {}

inline void TemplateType::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
TemplateType::~TemplateType() {
  // @@protoc_insertion_point(destructor:tari.rpc.TemplateType)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void TemplateType::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  if (has_template_type()) {
    clear_template_type();
  }
  _impl_.~Impl_();
}

void TemplateType::clear_template_type() {
// @@protoc_insertion_point(one_of_clear_start:tari.rpc.TemplateType)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  switch (template_type_case()) {
    case kWasm: {
      if (GetArena() == nullptr) {
        delete _impl_.template_type_.wasm_;
      }
      break;
    }
    case kFlow: {
      if (GetArena() == nullptr) {
        delete _impl_.template_type_.flow_;
      }
      break;
    }
    case kManifest: {
      if (GetArena() == nullptr) {
        delete _impl_.template_type_.manifest_;
      }
      break;
    }
    case TEMPLATE_TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TEMPLATE_TYPE_NOT_SET;
}


const ::google::protobuf::MessageLite::ClassData*
TemplateType::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(TemplateType, _impl_._cached_size_),
              false,
          },
          &TemplateType::MergeImpl,
          &TemplateType::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void TemplateType::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.TemplateType)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_template_type();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* TemplateType::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<0, 3, 3, 0, 2> TemplateType::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    3, 0,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967288,  // skipmap
    offsetof(decltype(_table_), field_entries),
    3,  // num_field_entries
    3,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_TemplateType_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::TemplateType>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    {::_pbi::TcParser::MiniParse, {}},
  }}, {{
    65535, 65535
  }}, {{
    // .tari.rpc.WasmInfo wasm = 1;
    {PROTOBUF_FIELD_OFFSET(TemplateType, _impl_.template_type_.wasm_), _Internal::kOneofCaseOffset + 0, 0,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.FlowInfo flow = 2;
    {PROTOBUF_FIELD_OFFSET(TemplateType, _impl_.template_type_.flow_), _Internal::kOneofCaseOffset + 0, 1,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvDefault)},
    // .tari.rpc.ManifestInfo manifest = 3;
    {PROTOBUF_FIELD_OFFSET(TemplateType, _impl_.template_type_.manifest_), _Internal::kOneofCaseOffset + 0, 2,
    (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvDefault)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::WasmInfo>()},
    {::_pbi::FieldAuxDefaultMessage{}, &::tari::rpc::_FlowInfo_default_instance_},
    {::_pbi::FieldAuxDefaultMessage{}, &::tari::rpc::_ManifestInfo_default_instance_},
  }}, {{
  }},
};

::uint8_t* TemplateType::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.TemplateType)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  switch (template_type_case()) {
    case kWasm: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          1, *_impl_.template_type_.wasm_, _impl_.template_type_.wasm_->GetCachedSize(), target, stream);
      break;
    }
    case kFlow: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          2, *_impl_.template_type_.flow_, _impl_.template_type_.flow_->GetCachedSize(), target, stream);
      break;
    }
    case kManifest: {
      target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
          3, *_impl_.template_type_.manifest_, _impl_.template_type_.manifest_->GetCachedSize(), target, stream);
      break;
    }
    default:
      break;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.TemplateType)
  return target;
}

::size_t TemplateType::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.TemplateType)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (template_type_case()) {
    // .tari.rpc.WasmInfo wasm = 1;
    case kWasm: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.template_type_.wasm_);
      break;
    }
    // .tari.rpc.FlowInfo flow = 2;
    case kFlow: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.template_type_.flow_);
      break;
    }
    // .tari.rpc.ManifestInfo manifest = 3;
    case kManifest: {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.template_type_.manifest_);
      break;
    }
    case TEMPLATE_TYPE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void TemplateType::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<TemplateType*>(&to_msg);
  auto& from = static_cast<const TemplateType&>(from_msg);
  ::google::protobuf::Arena* arena = _this->GetArena();
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.TemplateType)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (const uint32_t oneof_from_case = from._impl_._oneof_case_[0]) {
    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
    if (oneof_needs_init) {
      if (oneof_to_case != 0) {
        _this->clear_template_type();
      }
      _this->_impl_._oneof_case_[0] = oneof_from_case;
    }

    switch (oneof_from_case) {
      case kWasm: {
        if (oneof_needs_init) {
          _this->_impl_.template_type_.wasm_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::WasmInfo>(arena, *from._impl_.template_type_.wasm_);
        } else {
          _this->_impl_.template_type_.wasm_->MergeFrom(from._internal_wasm());
        }
        break;
      }
      case kFlow: {
        if (oneof_needs_init) {
          _this->_impl_.template_type_.flow_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::FlowInfo>(arena, *from._impl_.template_type_.flow_);
        } else {
          _this->_impl_.template_type_.flow_->MergeFrom(from._internal_flow());
        }
        break;
      }
      case kManifest: {
        if (oneof_needs_init) {
          _this->_impl_.template_type_.manifest_ =
              ::google::protobuf::Message::CopyConstruct<::tari::rpc::ManifestInfo>(arena, *from._impl_.template_type_.manifest_);
        } else {
          _this->_impl_.template_type_.manifest_->MergeFrom(from._internal_manifest());
        }
        break;
      }
      case TEMPLATE_TYPE_NOT_SET:
        break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void TemplateType::CopyFrom(const TemplateType& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.TemplateType)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool TemplateType::IsInitialized() const {
  return true;
}

void TemplateType::InternalSwap(TemplateType* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.template_type_, other->_impl_.template_type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

::google::protobuf::Metadata TemplateType::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[4]);
}
// ===================================================================

class WasmInfo::_Internal {
 public:
};

WasmInfo::WasmInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.WasmInfo)
}
WasmInfo::WasmInfo(
    ::google::protobuf::Arena* arena, const WasmInfo& from)
    : WasmInfo(arena) {
  MergeFrom(from);
}
inline PROTOBUF_NDEBUG_INLINE WasmInfo::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : _cached_size_{0} {}

inline void WasmInfo::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  _impl_.abi_version_ = {};
}
WasmInfo::~WasmInfo() {
  // @@protoc_insertion_point(destructor:tari.rpc.WasmInfo)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void WasmInfo::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
WasmInfo::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(WasmInfo, _impl_._cached_size_),
              false,
          },
          &WasmInfo::MergeImpl,
          &WasmInfo::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void WasmInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.WasmInfo)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.abi_version_ = 0u;
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* WasmInfo::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<0, 1, 0, 0, 2> WasmInfo::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    1, 0,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967294,  // skipmap
    offsetof(decltype(_table_), field_entries),
    1,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_WasmInfo_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::WasmInfo>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // uint32 abi_version = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(WasmInfo, _impl_.abi_version_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(WasmInfo, _impl_.abi_version_)}},
  }}, {{
    65535, 65535
  }}, {{
    // uint32 abi_version = 1;
    {PROTOBUF_FIELD_OFFSET(WasmInfo, _impl_.abi_version_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
  }},
  // no aux_entries
  {{
  }},
};

::uint8_t* WasmInfo::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.WasmInfo)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // uint32 abi_version = 1;
  if (this->_internal_abi_version() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        1, this->_internal_abi_version(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.WasmInfo)
  return target;
}

::size_t WasmInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.WasmInfo)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // uint32 abi_version = 1;
  if (this->_internal_abi_version() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
        this->_internal_abi_version());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void WasmInfo::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<WasmInfo*>(&to_msg);
  auto& from = static_cast<const WasmInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.WasmInfo)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_abi_version() != 0) {
    _this->_impl_.abi_version_ = from._impl_.abi_version_;
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void WasmInfo::CopyFrom(const WasmInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.WasmInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool WasmInfo::IsInitialized() const {
  return true;
}

void WasmInfo::InternalSwap(WasmInfo* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
        swap(_impl_.abi_version_, other->_impl_.abi_version_);
}

::google::protobuf::Metadata WasmInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[5]);
}
// ===================================================================

class FlowInfo::_Internal {
 public:
};

FlowInfo::FlowInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::internal::ZeroFieldsBase(arena) {
  // @@protoc_insertion_point(arena_constructor:tari.rpc.FlowInfo)
}
FlowInfo::FlowInfo(
    ::google::protobuf::Arena* arena,
    const FlowInfo& from)
    : ::google::protobuf::internal::ZeroFieldsBase(arena) {
  FlowInfo* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);

  // @@protoc_insertion_point(copy_constructor:tari.rpc.FlowInfo)
}









::google::protobuf::Metadata FlowInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[6]);
}
// ===================================================================

class ManifestInfo::_Internal {
 public:
};

ManifestInfo::ManifestInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::internal::ZeroFieldsBase(arena) {
  // @@protoc_insertion_point(arena_constructor:tari.rpc.ManifestInfo)
}
ManifestInfo::ManifestInfo(
    ::google::protobuf::Arena* arena,
    const ManifestInfo& from)
    : ::google::protobuf::internal::ZeroFieldsBase(arena) {
  ManifestInfo* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);

  // @@protoc_insertion_point(copy_constructor:tari.rpc.ManifestInfo)
}









::google::protobuf::Metadata ManifestInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[7]);
}
// ===================================================================

class BuildInfo::_Internal {
 public:
};

BuildInfo::BuildInfo(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.BuildInfo)
}
inline PROTOBUF_NDEBUG_INLINE BuildInfo::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : repo_url_(arena, from.repo_url_),
        commit_hash_(arena, from.commit_hash_),
        _cached_size_{0} {}

BuildInfo::BuildInfo(
    ::google::protobuf::Arena* arena,
    const BuildInfo& from)
    : ::google::protobuf::Message(arena) {
  BuildInfo* const _this = this;
  (void)_this;
  _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
      from._internal_metadata_);
  new (&_impl_) Impl_(internal_visibility(), arena, from._impl_);

  // @@protoc_insertion_point(copy_constructor:tari.rpc.BuildInfo)
}
inline PROTOBUF_NDEBUG_INLINE BuildInfo::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : repo_url_(arena),
        commit_hash_(arena),
        _cached_size_{0} {}

inline void BuildInfo::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
}
BuildInfo::~BuildInfo() {
  // @@protoc_insertion_point(destructor:tari.rpc.BuildInfo)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void BuildInfo::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.repo_url_.Destroy();
  _impl_.commit_hash_.Destroy();
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
BuildInfo::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(BuildInfo, _impl_._cached_size_),
              false,
          },
          &BuildInfo::MergeImpl,
          &BuildInfo::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void BuildInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.BuildInfo)
  PROTOBUF_TSAN_WRITE(&_impl_._tsan_detect_race);
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.repo_url_.ClearToEmpty();
  _impl_.commit_hash_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* BuildInfo::_InternalParse(
    const char* ptr, ::_pbi::ParseContext* ctx) {
  ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
  return ptr;
}


PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<1, 2, 0, 35, 2> BuildInfo::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    2, 8,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967292,  // skipmap
    offsetof(decltype(_table_), field_entries),
    2,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_BuildInfo_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::BuildInfo>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // bytes commit_hash = 2;
    {::_pbi::TcParser::FastBS1,
     {18, 63, 0, PROTOBUF_FIELD_OFFSET(BuildInfo, _impl_.commit_hash_)}},
    // string repo_url = 1;
    {::_pbi::TcParser::FastUS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(BuildInfo, _impl_.repo_url_)}},
  }}, {{
    65535, 65535
  }}, {{
    // string repo_url = 1;
    {PROTOBUF_FIELD_OFFSET(BuildInfo, _impl_.repo_url_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUtf8String | ::_fl::kRepAString)},
    // bytes commit_hash = 2;
    {PROTOBUF_FIELD_OFFSET(BuildInfo, _impl_.commit_hash_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
    "\22\10\0\0\0\0\0\0"
    "tari.rpc.BuildInfo"
    "repo_url"
  }},
};

::uint8_t* BuildInfo::_InternalSerialize(
    ::uint8_t* target,
    ::google::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:tari.rpc.BuildInfo)
  ::uint32_t cached_has_bits = 0;
  (void)cached_has_bits;

  // string repo_url = 1;
  if (!this->_internal_repo_url().empty()) {
    const std::string& _s = this->_internal_repo_url();
    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "tari.rpc.BuildInfo.repo_url");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // bytes commit_hash = 2;
  if (!this->_internal_commit_hash().empty()) {
    const std::string& _s = this->_internal_commit_hash();
    target = stream->WriteBytesMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target =
        ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
            _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:tari.rpc.BuildInfo)
  return target;
}

::size_t BuildInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.BuildInfo)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string repo_url = 1;
  if (!this->_internal_repo_url().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize(
                                    this->_internal_repo_url());
  }

  // bytes commit_hash = 2;
  if (!this->_internal_commit_hash().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_commit_hash());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}


void BuildInfo::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
  auto* const _this = static_cast<BuildInfo*>(&to_msg);
  auto& from = static_cast<const BuildInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:tari.rpc.BuildInfo)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_repo_url().empty()) {
    _this->_internal_set_repo_url(from._internal_repo_url());
  }
  if (!from._internal_commit_hash().empty()) {
    _this->_internal_set_commit_hash(from._internal_commit_hash());
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void BuildInfo::CopyFrom(const BuildInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:tari.rpc.BuildInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

PROTOBUF_NOINLINE bool BuildInfo::IsInitialized() const {
  return true;
}

void BuildInfo::InternalSwap(BuildInfo* PROTOBUF_RESTRICT other) {
  using std::swap;
  auto* arena = GetArena();
  ABSL_DCHECK_EQ(arena, other->GetArena());
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.repo_url_, &other->_impl_.repo_url_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.commit_hash_, &other->_impl_.commit_hash_, arena);
}

::google::protobuf::Metadata BuildInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_sidechain_5ftypes_2eproto_getter,
                                   &descriptor_table_sidechain_5ftypes_2eproto_once,
                                   file_level_metadata_sidechain_5ftypes_2eproto[8]);
}
// @@protoc_insertion_point(namespace_scope)
}  // namespace rpc
}  // namespace tari
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google
// @@protoc_insertion_point(global_scope)
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2
static ::std::false_type _static_init_ PROTOBUF_UNUSED =
    (::_pbi::AddDescriptors(&descriptor_table_sidechain_5ftypes_2eproto),
     ::std::false_type{});
#include "google/protobuf/port_undef.inc"
