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

#include "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 WeightParams::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : kernel_weight_{::uint64_t{0u}},
        input_weight_{::uint64_t{0u}},
        output_weight_{::uint64_t{0u}},
        features_and_scripts_bytes_per_gram_{::uint64_t{0u}},
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WeightParamsDefaultTypeInternal _WeightParams_default_instance_;

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

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SignatureDefaultTypeInternal _Signature_default_instance_;

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

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeProofDefaultTypeInternal _RangeProof_default_instance_;

inline constexpr Range::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : min_{::uint64_t{0u}},
        max_{::uint64_t{0u}},
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RangeDefaultTypeInternal _Range_default_instance_;

inline constexpr PowAlgorithmConstants::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : min_difficulty_{::uint64_t{0u}},
        max_difficulty_{::uint64_t{0u}},
        target_time_{::uint64_t{0u}},
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PowAlgorithmConstantsDefaultTypeInternal _PowAlgorithmConstants_default_instance_;

inline constexpr PermittedRangeProofs::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : range_proof_types_{},
        _range_proof_types_cached_byte_size_{0},
        output_type_{static_cast< ::tari::rpc::OutputType >(0)},
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PermittedRangeProofsDefaultTypeInternal _PermittedRangeProofs_default_instance_;
      template <typename>
PROTOBUF_CONSTEXPR Empty::Empty(::_pbi::ConstantInitialized) {}
struct EmptyDefaultTypeInternal {
  PROTOBUF_CONSTEXPR EmptyDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~EmptyDefaultTypeInternal() {}
  union {
    Empty _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 EmptyDefaultTypeInternal _Empty_default_instance_;

inline constexpr CommitmentSignature::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : public_nonce_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        u_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        v_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommitmentSignatureDefaultTypeInternal _CommitmentSignature_default_instance_;

inline constexpr ComAndPubSignature::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : ephemeral_commitment_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        ephemeral_pubkey_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        u_a_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        u_x_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        u_y_(
            &::google::protobuf::internal::fixed_address_empty_string,
            ::_pbi::ConstantInitialized()),
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ComAndPubSignatureDefaultTypeInternal _ComAndPubSignature_default_instance_;

inline constexpr BlockHeight::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : block_height_{::uint64_t{0u}},
        _cached_size_{0} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BlockHeightDefaultTypeInternal _BlockHeight_default_instance_;

inline constexpr OutputsVersion::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        outputs_{nullptr},
        features_{nullptr} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OutputsVersionDefaultTypeInternal _OutputsVersion_default_instance_;
      template <typename>
PROTOBUF_CONSTEXPR ConsensusConstants_ProofOfWorkEntry_DoNotUse::ConsensusConstants_ProofOfWorkEntry_DoNotUse(::_pbi::ConstantInitialized) {}
struct ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal() {}
  union {
    ConsensusConstants_ProofOfWorkEntry_DoNotUse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConsensusConstants_ProofOfWorkEntry_DoNotUseDefaultTypeInternal _ConsensusConstants_ProofOfWorkEntry_DoNotUse_default_instance_;

inline constexpr ConsensusConstants::Impl_::Impl_(
    ::_pbi::ConstantInitialized) noexcept
      : _cached_size_{0},
        emission_decay_{},
        _emission_decay_cached_byte_size_{0},
        proof_of_work_{},
        permitted_output_types_{},
        _permitted_output_types_cached_byte_size_{0},
        permitted_range_proof_types_{},
        valid_blockchain_version_range_{nullptr},
        transaction_weight_{nullptr},
        input_version_range_{nullptr},
        output_version_range_{nullptr},
        kernel_version_range_{nullptr},
        coinbase_min_maturity_{::uint64_t{0u}},
        future_time_limit_{::uint64_t{0u}},
        difficulty_block_window_{::uint64_t{0u}},
        max_block_transaction_weight_{::uint64_t{0u}},
        pow_algo_count_{::uint64_t{0u}},
        median_timestamp_count_{::uint64_t{0u}},
        emission_initial_{::uint64_t{0u}},
        emission_tail_{::uint64_t{0u}},
        min_sha3x_pow_difficulty_{::uint64_t{0u}},
        block_weight_inputs_{::uint64_t{0u}},
        block_weight_outputs_{::uint64_t{0u}},
        block_weight_kernels_{::uint64_t{0u}},
        faucet_value_{::uint64_t{0u}},
        max_script_byte_size_{::uint64_t{0u}},
        validator_node_validity_period_{::uint64_t{0u}},
        effective_from_height_{::uint64_t{0u}},
        max_randomx_seed_height_{::uint64_t{0u}},
        epoch_length_{::uint64_t{0u}},
        validator_node_registration_min_deposit_amount_{::uint64_t{0u}},
        validator_node_registration_min_lock_height_{::uint64_t{0u}},
        validator_node_registration_shuffle_interval_epoch_{::uint64_t{0u}},
        inflation_bips_{::uint64_t{0u}},
        tail_epoch_length_{::uint64_t{0u}},
        blockchain_version_{0u} {}

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

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ConsensusConstantsDefaultTypeInternal _ConsensusConstants_default_instance_;
}  // namespace rpc
}  // namespace tari
static ::_pb::Metadata file_level_metadata_types_2eproto[13];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_types_2eproto[2];
static constexpr const ::_pb::ServiceDescriptor**
    file_level_service_descriptors_types_2eproto = nullptr;
const ::uint32_t
    TableStruct_types_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
        protodesc_cold) = {
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::Range, _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::Range, _impl_.min_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::Range, _impl_.max_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::Empty, _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::BlockHeight, _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::BlockHeight, _impl_.block_height_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::Signature, _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::Signature, _impl_.public_nonce_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::Signature, _impl_.signature_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ComAndPubSignature, _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::ComAndPubSignature, _impl_.ephemeral_commitment_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ComAndPubSignature, _impl_.ephemeral_pubkey_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ComAndPubSignature, _impl_.u_a_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ComAndPubSignature, _impl_.u_x_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ComAndPubSignature, _impl_.u_y_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::CommitmentSignature, _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::CommitmentSignature, _impl_.public_nonce_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::CommitmentSignature, _impl_.u_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::CommitmentSignature, _impl_.v_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::PowAlgorithmConstants, _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::PowAlgorithmConstants, _impl_.min_difficulty_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::PowAlgorithmConstants, _impl_.max_difficulty_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::PowAlgorithmConstants, _impl_.target_time_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WeightParams, _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::WeightParams, _impl_.kernel_weight_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WeightParams, _impl_.input_weight_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WeightParams, _impl_.output_weight_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::WeightParams, _impl_.features_and_scripts_bytes_per_gram_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::OutputsVersion, _impl_._has_bits_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::OutputsVersion, _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::OutputsVersion, _impl_.outputs_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::OutputsVersion, _impl_.features_),
        0,
        1,
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::PermittedRangeProofs, _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::PermittedRangeProofs, _impl_.output_type_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::PermittedRangeProofs, _impl_.range_proof_types_),
        ~0u,  // no _has_bits_
        PROTOBUF_FIELD_OFFSET(::tari::rpc::RangeProof, _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::RangeProof, _impl_.proof_bytes_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants_ProofOfWorkEntry_DoNotUse, _has_bits_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants_ProofOfWorkEntry_DoNotUse, _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::ConsensusConstants_ProofOfWorkEntry_DoNotUse, key_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants_ProofOfWorkEntry_DoNotUse, value_),
        0,
        1,
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_._has_bits_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _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::ConsensusConstants, _impl_.coinbase_min_maturity_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.blockchain_version_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.future_time_limit_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.difficulty_block_window_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.max_block_transaction_weight_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.pow_algo_count_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.median_timestamp_count_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.emission_initial_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.emission_decay_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.emission_tail_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.min_sha3x_pow_difficulty_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.block_weight_inputs_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.block_weight_outputs_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.block_weight_kernels_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.faucet_value_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.max_script_byte_size_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.validator_node_validity_period_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.effective_from_height_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.valid_blockchain_version_range_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.max_randomx_seed_height_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.proof_of_work_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.transaction_weight_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.input_version_range_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.output_version_range_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.kernel_version_range_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.permitted_output_types_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.epoch_length_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.validator_node_registration_min_deposit_amount_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.validator_node_registration_min_lock_height_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.validator_node_registration_shuffle_interval_epoch_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.permitted_range_proof_types_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.inflation_bips_),
        PROTOBUF_FIELD_OFFSET(::tari::rpc::ConsensusConstants, _impl_.tail_epoch_length_),
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        0,
        ~0u,
        ~0u,
        1,
        2,
        3,
        4,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
        ~0u,
};

static const ::_pbi::MigrationSchema
    schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
        {0, -1, -1, sizeof(::tari::rpc::Range)},
        {10, -1, -1, sizeof(::tari::rpc::Empty)},
        {18, -1, -1, sizeof(::tari::rpc::BlockHeight)},
        {27, -1, -1, sizeof(::tari::rpc::Signature)},
        {37, -1, -1, sizeof(::tari::rpc::ComAndPubSignature)},
        {50, -1, -1, sizeof(::tari::rpc::CommitmentSignature)},
        {61, -1, -1, sizeof(::tari::rpc::PowAlgorithmConstants)},
        {72, -1, -1, sizeof(::tari::rpc::WeightParams)},
        {84, 94, -1, sizeof(::tari::rpc::OutputsVersion)},
        {96, -1, -1, sizeof(::tari::rpc::PermittedRangeProofs)},
        {106, -1, -1, sizeof(::tari::rpc::RangeProof)},
        {115, 125, -1, sizeof(::tari::rpc::ConsensusConstants_ProofOfWorkEntry_DoNotUse)},
        {127, 168, -1, sizeof(::tari::rpc::ConsensusConstants)},
};
static const ::_pb::Message* const file_default_instances[] = {
    &::tari::rpc::_Range_default_instance_._instance,
    &::tari::rpc::_Empty_default_instance_._instance,
    &::tari::rpc::_BlockHeight_default_instance_._instance,
    &::tari::rpc::_Signature_default_instance_._instance,
    &::tari::rpc::_ComAndPubSignature_default_instance_._instance,
    &::tari::rpc::_CommitmentSignature_default_instance_._instance,
    &::tari::rpc::_PowAlgorithmConstants_default_instance_._instance,
    &::tari::rpc::_WeightParams_default_instance_._instance,
    &::tari::rpc::_OutputsVersion_default_instance_._instance,
    &::tari::rpc::_PermittedRangeProofs_default_instance_._instance,
    &::tari::rpc::_RangeProof_default_instance_._instance,
    &::tari::rpc::_ConsensusConstants_ProofOfWorkEntry_DoNotUse_default_instance_._instance,
    &::tari::rpc::_ConsensusConstants_default_instance_._instance,
};
const char descriptor_table_protodef_types_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
    protodesc_cold) = {
    "\n\013types.proto\022\010tari.rpc\"!\n\005Range\022\013\n\003min\030"
    "\001 \001(\004\022\013\n\003max\030\002 \001(\004\"\007\n\005Empty\"#\n\013BlockHeig"
    "ht\022\024\n\014block_height\030\001 \001(\004\"4\n\tSignature\022\024\n"
    "\014public_nonce\030\001 \001(\014\022\021\n\tsignature\030\002 \001(\014\"s"
    "\n\022ComAndPubSignature\022\034\n\024ephemeral_commit"
    "ment\030\001 \001(\014\022\030\n\020ephemeral_pubkey\030\002 \001(\014\022\013\n\003"
    "u_a\030\003 \001(\014\022\013\n\003u_x\030\004 \001(\014\022\013\n\003u_y\030\005 \001(\014\"A\n\023C"
    "ommitmentSignature\022\024\n\014public_nonce\030\001 \001(\014"
    "\022\t\n\001u\030\002 \001(\014\022\t\n\001v\030\003 \001(\014\"\\\n\025PowAlgorithmCo"
    "nstants\022\026\n\016min_difficulty\030\002 \001(\004\022\026\n\016max_d"
    "ifficulty\030\003 \001(\004\022\023\n\013target_time\030\004 \001(\004\"\177\n\014"
    "WeightParams\022\025\n\rkernel_weight\030\001 \001(\004\022\024\n\014i"
    "nput_weight\030\002 \001(\004\022\025\n\routput_weight\030\003 \001(\004"
    "\022+\n#features_and_scripts_bytes_per_gram\030"
    "\004 \001(\004\"U\n\016OutputsVersion\022 \n\007outputs\030\001 \001(\013"
    "2\017.tari.rpc.Range\022!\n\010features\030\002 \001(\0132\017.ta"
    "ri.rpc.Range\"v\n\024PermittedRangeProofs\022)\n\013"
    "output_type\030\001 \001(\0162\024.tari.rpc.OutputType\022"
    "3\n\021range_proof_types\030\002 \003(\0162\030.tari.rpc.Ra"
    "ngeProofType\"!\n\nRangeProof\022\023\n\013proof_byte"
    "s\030\001 \001(\014\"\327\n\n\022ConsensusConstants\022\035\n\025coinba"
    "se_min_maturity\030\001 \001(\004\022\032\n\022blockchain_vers"
    "ion\030\002 \001(\r\022\031\n\021future_time_limit\030\003 \001(\004\022\037\n\027"
    "difficulty_block_window\030\005 \001(\004\022$\n\034max_blo"
    "ck_transaction_weight\030\007 \001(\004\022\026\n\016pow_algo_"
    "count\030\010 \001(\004\022\036\n\026median_timestamp_count\030\t "
    "\001(\004\022\030\n\020emission_initial\030\n \001(\004\022\026\n\016emissio"
    "n_decay\030\013 \003(\004\022\031\n\remission_tail\030\014 \001(\004B\002\030\001"
    "\022 \n\030min_sha3x_pow_difficulty\030\r \001(\004\022\033\n\023bl"
    "ock_weight_inputs\030\016 \001(\004\022\034\n\024block_weight_"
    "outputs\030\017 \001(\004\022\034\n\024block_weight_kernels\030\020 "
    "\001(\004\022\024\n\014faucet_value\030\021 \001(\004\022\034\n\024max_script_"
    "byte_size\030\022 \001(\004\022&\n\036validator_node_validi"
    "ty_period\030\023 \001(\004\022\035\n\025effective_from_height"
    "\030\024 \001(\004\0227\n\036valid_blockchain_version_range"
    "\030\025 \001(\0132\017.tari.rpc.Range\022\037\n\027max_randomx_s"
    "eed_height\030\026 \001(\004\022D\n\rproof_of_work\030\027 \003(\0132"
    "-.tari.rpc.ConsensusConstants.ProofOfWor"
    "kEntry\0222\n\022transaction_weight\030\030 \001(\0132\026.tar"
    "i.rpc.WeightParams\022,\n\023input_version_rang"
    "e\030\032 \001(\0132\017.tari.rpc.Range\0226\n\024output_versi"
    "on_range\030\033 \001(\0132\030.tari.rpc.OutputsVersion"
    "\022-\n\024kernel_version_range\030\034 \001(\0132\017.tari.rp"
    "c.Range\0224\n\026permitted_output_types\030\035 \003(\0162"
    "\024.tari.rpc.OutputType\022\024\n\014epoch_length\030\036 "
    "\001(\004\0226\n.validator_node_registration_min_d"
    "eposit_amount\030\037 \001(\004\0223\n+validator_node_re"
    "gistration_min_lock_height\030  \001(\004\022:\n2vali"
    "dator_node_registration_shuffle_interval"
    "_epoch\030! \001(\004\022C\n\033permitted_range_proof_ty"
    "pes\030\" \003(\0132\036.tari.rpc.PermittedRangeProof"
    "s\022\026\n\016inflation_bips\030# \001(\004\022\031\n\021tail_epoch_"
    "length\030$ \001(\004\032S\n\020ProofOfWorkEntry\022\013\n\003key\030"
    "\001 \001(\r\022.\n\005value\030\002 \001(\0132\037.tari.rpc.PowAlgor"
    "ithmConstants:\0028\001*s\n\nOutputType\022\014\n\010STAND"
    "ARD\020\000\022\014\n\010COINBASE\020\001\022\010\n\004BURN\020\002\022\037\n\033VALIDAT"
    "OR_NODE_REGISTRATION\020\003\022\036\n\032CODE_TEMPLATE_"
    "REGISTRATION\020\004*:\n\016RangeProofType\022\024\n\020BULL"
    "ETPROOF_PLUS\020\000\022\022\n\016REVEALED_VALUE\020\001b\006prot"
    "o3"
};
static ::absl::once_flag descriptor_table_types_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_types_2eproto = {
    false,
    false,
    2362,
    descriptor_table_protodef_types_2eproto,
    "types.proto",
    &descriptor_table_types_2eproto_once,
    nullptr,
    0,
    13,
    schemas,
    file_default_instances,
    TableStruct_types_2eproto::offsets,
    file_level_metadata_types_2eproto,
    file_level_enum_descriptors_types_2eproto,
    file_level_service_descriptors_types_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_types_2eproto_getter() {
  return &descriptor_table_types_2eproto;
}
namespace tari {
namespace rpc {
const ::google::protobuf::EnumDescriptor* OutputType_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_types_2eproto);
  return file_level_enum_descriptors_types_2eproto[0];
}
PROTOBUF_CONSTINIT const uint32_t OutputType_internal_data_[] = {
    327680u, 0u, };
bool OutputType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
const ::google::protobuf::EnumDescriptor* RangeProofType_descriptor() {
  ::google::protobuf::internal::AssignDescriptors(&descriptor_table_types_2eproto);
  return file_level_enum_descriptors_types_2eproto[1];
}
PROTOBUF_CONSTINIT const uint32_t RangeProofType_internal_data_[] = {
    131072u, 0u, };
bool RangeProofType_IsValid(int value) {
  return 0 <= value && value <= 1;
}
// ===================================================================

class Range::_Internal {
 public:
};

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

inline void Range::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, min_),
           0,
           offsetof(Impl_, max_) -
               offsetof(Impl_, min_) +
               sizeof(Impl_::max_));
}
Range::~Range() {
  // @@protoc_insertion_point(destructor:tari.rpc.Range)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void Range::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
Range::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(Range, _impl_._cached_size_),
              false,
          },
          &Range::MergeImpl,
          &Range::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void Range::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.Range)
  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;

  ::memset(&_impl_.min_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.max_) -
      reinterpret_cast<char*>(&_impl_.min_)) + sizeof(_impl_.max_));
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* Range::_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, 0, 2> Range::_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
    &_Range_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::Range>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // uint64 max = 2;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(Range, _impl_.max_), 63>(),
     {16, 63, 0, PROTOBUF_FIELD_OFFSET(Range, _impl_.max_)}},
    // uint64 min = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(Range, _impl_.min_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(Range, _impl_.min_)}},
  }}, {{
    65535, 65535
  }}, {{
    // uint64 min = 1;
    {PROTOBUF_FIELD_OFFSET(Range, _impl_.min_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 max = 2;
    {PROTOBUF_FIELD_OFFSET(Range, _impl_.max_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // uint64 min = 1;
  if (this->_internal_min() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        1, this->_internal_min(), target);
  }

  // uint64 max = 2;
  if (this->_internal_max() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        2, this->_internal_max(), 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.Range)
  return target;
}

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

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

  // uint64 min = 1;
  if (this->_internal_min() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_min());
  }

  // uint64 max = 2;
  if (this->_internal_max() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_max());
  }

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


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

  if (from._internal_min() != 0) {
    _this->_impl_.min_ = from._impl_.min_;
  }
  if (from._internal_max() != 0) {
    _this->_impl_.max_ = from._impl_.max_;
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Range::InternalSwap(Range* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Range, _impl_.max_)
      + sizeof(Range::_impl_.max_)
      - PROTOBUF_FIELD_OFFSET(Range, _impl_.min_)>(
          reinterpret_cast<char*>(&_impl_.min_),
          reinterpret_cast<char*>(&other->_impl_.min_));
}

::google::protobuf::Metadata Range::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[0]);
}
// ===================================================================

class Empty::_Internal {
 public:
};

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

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









::google::protobuf::Metadata Empty::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[1]);
}
// ===================================================================

class BlockHeight::_Internal {
 public:
};

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

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

const ::google::protobuf::MessageLite::ClassData*
BlockHeight::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(BlockHeight, _impl_._cached_size_),
              false,
          },
          &BlockHeight::MergeImpl,
          &BlockHeight::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void BlockHeight::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.BlockHeight)
  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_.block_height_ = ::uint64_t{0u};
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* BlockHeight::_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> BlockHeight::_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
    &_BlockHeight_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::BlockHeight>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // uint64 block_height = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(BlockHeight, _impl_.block_height_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(BlockHeight, _impl_.block_height_)}},
  }}, {{
    65535, 65535
  }}, {{
    // uint64 block_height = 1;
    {PROTOBUF_FIELD_OFFSET(BlockHeight, _impl_.block_height_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // uint64 block_height = 1;
  if (this->_internal_block_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        1, this->_internal_block_height(), 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.BlockHeight)
  return target;
}

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

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

  // uint64 block_height = 1;
  if (this->_internal_block_height() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_block_height());
  }

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


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

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

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

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

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

::google::protobuf::Metadata BlockHeight::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[2]);
}
// ===================================================================

class Signature::_Internal {
 public:
};

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

Signature::Signature(
    ::google::protobuf::Arena* arena,
    const Signature& from)
    : ::google::protobuf::Message(arena) {
  Signature* 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.Signature)
}
inline PROTOBUF_NDEBUG_INLINE Signature::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : public_nonce_(arena),
        signature_(arena),
        _cached_size_{0} {}

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

const ::google::protobuf::MessageLite::ClassData*
Signature::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(Signature, _impl_._cached_size_),
              false,
          },
          &Signature::MergeImpl,
          &Signature::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void Signature::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.Signature)
  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_nonce_.ClearToEmpty();
  _impl_.signature_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* Signature::_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, 0, 2> Signature::_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
    &_Signature_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::Signature>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // bytes signature = 2;
    {::_pbi::TcParser::FastBS1,
     {18, 63, 0, PROTOBUF_FIELD_OFFSET(Signature, _impl_.signature_)}},
    // bytes public_nonce = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(Signature, _impl_.public_nonce_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes public_nonce = 1;
    {PROTOBUF_FIELD_OFFSET(Signature, _impl_.public_nonce_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes signature = 2;
    {PROTOBUF_FIELD_OFFSET(Signature, _impl_.signature_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
  }},
};

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

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

  // bytes signature = 2;
  if (!this->_internal_signature().empty()) {
    const std::string& _s = this->_internal_signature();
    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.Signature)
  return target;
}

::size_t Signature::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.Signature)
  ::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_nonce = 1;
  if (!this->_internal_public_nonce().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_public_nonce());
  }

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

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


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

  if (!from._internal_public_nonce().empty()) {
    _this->_internal_set_public_nonce(from._internal_public_nonce());
  }
  if (!from._internal_signature().empty()) {
    _this->_internal_set_signature(from._internal_signature());
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Signature::InternalSwap(Signature* 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_.public_nonce_, &other->_impl_.public_nonce_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.signature_, &other->_impl_.signature_, arena);
}

::google::protobuf::Metadata Signature::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[3]);
}
// ===================================================================

class ComAndPubSignature::_Internal {
 public:
};

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

ComAndPubSignature::ComAndPubSignature(
    ::google::protobuf::Arena* arena,
    const ComAndPubSignature& from)
    : ::google::protobuf::Message(arena) {
  ComAndPubSignature* 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.ComAndPubSignature)
}
inline PROTOBUF_NDEBUG_INLINE ComAndPubSignature::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : ephemeral_commitment_(arena),
        ephemeral_pubkey_(arena),
        u_a_(arena),
        u_x_(arena),
        u_y_(arena),
        _cached_size_{0} {}

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

const ::google::protobuf::MessageLite::ClassData*
ComAndPubSignature::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_._cached_size_),
              false,
          },
          &ComAndPubSignature::MergeImpl,
          &ComAndPubSignature::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void ComAndPubSignature::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.ComAndPubSignature)
  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_.ephemeral_commitment_.ClearToEmpty();
  _impl_.ephemeral_pubkey_.ClearToEmpty();
  _impl_.u_a_.ClearToEmpty();
  _impl_.u_x_.ClearToEmpty();
  _impl_.u_y_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* ComAndPubSignature::_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, 5, 0, 0, 2> ComAndPubSignature::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    5, 56,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967264,  // skipmap
    offsetof(decltype(_table_), field_entries),
    5,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_ComAndPubSignature_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::ComAndPubSignature>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    {::_pbi::TcParser::MiniParse, {}},
    // bytes ephemeral_commitment = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.ephemeral_commitment_)}},
    // bytes ephemeral_pubkey = 2;
    {::_pbi::TcParser::FastBS1,
     {18, 63, 0, PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.ephemeral_pubkey_)}},
    // bytes u_a = 3;
    {::_pbi::TcParser::FastBS1,
     {26, 63, 0, PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_a_)}},
    // bytes u_x = 4;
    {::_pbi::TcParser::FastBS1,
     {34, 63, 0, PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_x_)}},
    // bytes u_y = 5;
    {::_pbi::TcParser::FastBS1,
     {42, 63, 0, PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_y_)}},
    {::_pbi::TcParser::MiniParse, {}},
    {::_pbi::TcParser::MiniParse, {}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes ephemeral_commitment = 1;
    {PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.ephemeral_commitment_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes ephemeral_pubkey = 2;
    {PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.ephemeral_pubkey_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes u_a = 3;
    {PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_a_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes u_x = 4;
    {PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_x_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes u_y = 5;
    {PROTOBUF_FIELD_OFFSET(ComAndPubSignature, _impl_.u_y_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
  }},
};

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

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

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

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

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

  // bytes u_y = 5;
  if (!this->_internal_u_y().empty()) {
    const std::string& _s = this->_internal_u_y();
    target = stream->WriteBytesMaybeAliased(5, _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.ComAndPubSignature)
  return target;
}

::size_t ComAndPubSignature::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.ComAndPubSignature)
  ::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 ephemeral_commitment = 1;
  if (!this->_internal_ephemeral_commitment().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_ephemeral_commitment());
  }

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

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

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

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

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


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

  if (!from._internal_ephemeral_commitment().empty()) {
    _this->_internal_set_ephemeral_commitment(from._internal_ephemeral_commitment());
  }
  if (!from._internal_ephemeral_pubkey().empty()) {
    _this->_internal_set_ephemeral_pubkey(from._internal_ephemeral_pubkey());
  }
  if (!from._internal_u_a().empty()) {
    _this->_internal_set_u_a(from._internal_u_a());
  }
  if (!from._internal_u_x().empty()) {
    _this->_internal_set_u_x(from._internal_u_x());
  }
  if (!from._internal_u_y().empty()) {
    _this->_internal_set_u_y(from._internal_u_y());
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ComAndPubSignature::InternalSwap(ComAndPubSignature* 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_.ephemeral_commitment_, &other->_impl_.ephemeral_commitment_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.ephemeral_pubkey_, &other->_impl_.ephemeral_pubkey_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.u_a_, &other->_impl_.u_a_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.u_x_, &other->_impl_.u_x_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.u_y_, &other->_impl_.u_y_, arena);
}

::google::protobuf::Metadata ComAndPubSignature::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[4]);
}
// ===================================================================

class CommitmentSignature::_Internal {
 public:
};

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

CommitmentSignature::CommitmentSignature(
    ::google::protobuf::Arena* arena,
    const CommitmentSignature& from)
    : ::google::protobuf::Message(arena) {
  CommitmentSignature* 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.CommitmentSignature)
}
inline PROTOBUF_NDEBUG_INLINE CommitmentSignature::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : public_nonce_(arena),
        u_(arena),
        v_(arena),
        _cached_size_{0} {}

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

const ::google::protobuf::MessageLite::ClassData*
CommitmentSignature::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_._cached_size_),
              false,
          },
          &CommitmentSignature::MergeImpl,
          &CommitmentSignature::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void CommitmentSignature::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.CommitmentSignature)
  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_nonce_.ClearToEmpty();
  _impl_.u_.ClearToEmpty();
  _impl_.v_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* CommitmentSignature::_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<2, 3, 0, 0, 2> CommitmentSignature::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    3, 24,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967288,  // skipmap
    offsetof(decltype(_table_), field_entries),
    3,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_CommitmentSignature_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::CommitmentSignature>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    {::_pbi::TcParser::MiniParse, {}},
    // bytes public_nonce = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.public_nonce_)}},
    // bytes u = 2;
    {::_pbi::TcParser::FastBS1,
     {18, 63, 0, PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.u_)}},
    // bytes v = 3;
    {::_pbi::TcParser::FastBS1,
     {26, 63, 0, PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.v_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes public_nonce = 1;
    {PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.public_nonce_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes u = 2;
    {PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.u_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
    // bytes v = 3;
    {PROTOBUF_FIELD_OFFSET(CommitmentSignature, _impl_.v_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
  }},
};

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

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

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

  // bytes v = 3;
  if (!this->_internal_v().empty()) {
    const std::string& _s = this->_internal_v();
    target = stream->WriteBytesMaybeAliased(3, _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.CommitmentSignature)
  return target;
}

::size_t CommitmentSignature::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.CommitmentSignature)
  ::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_nonce = 1;
  if (!this->_internal_public_nonce().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_public_nonce());
  }

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

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

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


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

  if (!from._internal_public_nonce().empty()) {
    _this->_internal_set_public_nonce(from._internal_public_nonce());
  }
  if (!from._internal_u().empty()) {
    _this->_internal_set_u(from._internal_u());
  }
  if (!from._internal_v().empty()) {
    _this->_internal_set_v(from._internal_v());
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CommitmentSignature::InternalSwap(CommitmentSignature* 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_.public_nonce_, &other->_impl_.public_nonce_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.u_, &other->_impl_.u_, arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.v_, &other->_impl_.v_, arena);
}

::google::protobuf::Metadata CommitmentSignature::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[5]);
}
// ===================================================================

class PowAlgorithmConstants::_Internal {
 public:
};

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

inline void PowAlgorithmConstants::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, min_difficulty_),
           0,
           offsetof(Impl_, target_time_) -
               offsetof(Impl_, min_difficulty_) +
               sizeof(Impl_::target_time_));
}
PowAlgorithmConstants::~PowAlgorithmConstants() {
  // @@protoc_insertion_point(destructor:tari.rpc.PowAlgorithmConstants)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void PowAlgorithmConstants::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
PowAlgorithmConstants::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_._cached_size_),
              false,
          },
          &PowAlgorithmConstants::MergeImpl,
          &PowAlgorithmConstants::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void PowAlgorithmConstants::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.PowAlgorithmConstants)
  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;

  ::memset(&_impl_.min_difficulty_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.target_time_) -
      reinterpret_cast<char*>(&_impl_.min_difficulty_)) + sizeof(_impl_.target_time_));
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* PowAlgorithmConstants::_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<2, 3, 0, 0, 2> PowAlgorithmConstants::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    4, 24,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967281,  // skipmap
    offsetof(decltype(_table_), field_entries),
    3,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_PowAlgorithmConstants_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::PowAlgorithmConstants>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // uint64 target_time = 4;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(PowAlgorithmConstants, _impl_.target_time_), 63>(),
     {32, 63, 0, PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.target_time_)}},
    {::_pbi::TcParser::MiniParse, {}},
    // uint64 min_difficulty = 2;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(PowAlgorithmConstants, _impl_.min_difficulty_), 63>(),
     {16, 63, 0, PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.min_difficulty_)}},
    // uint64 max_difficulty = 3;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(PowAlgorithmConstants, _impl_.max_difficulty_), 63>(),
     {24, 63, 0, PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.max_difficulty_)}},
  }}, {{
    65535, 65535
  }}, {{
    // uint64 min_difficulty = 2;
    {PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.min_difficulty_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 max_difficulty = 3;
    {PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.max_difficulty_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 target_time = 4;
    {PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.target_time_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // uint64 min_difficulty = 2;
  if (this->_internal_min_difficulty() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        2, this->_internal_min_difficulty(), target);
  }

  // uint64 max_difficulty = 3;
  if (this->_internal_max_difficulty() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        3, this->_internal_max_difficulty(), target);
  }

  // uint64 target_time = 4;
  if (this->_internal_target_time() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        4, this->_internal_target_time(), 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.PowAlgorithmConstants)
  return target;
}

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

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

  // uint64 min_difficulty = 2;
  if (this->_internal_min_difficulty() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_min_difficulty());
  }

  // uint64 max_difficulty = 3;
  if (this->_internal_max_difficulty() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_max_difficulty());
  }

  // uint64 target_time = 4;
  if (this->_internal_target_time() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_target_time());
  }

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


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

  if (from._internal_min_difficulty() != 0) {
    _this->_impl_.min_difficulty_ = from._impl_.min_difficulty_;
  }
  if (from._internal_max_difficulty() != 0) {
    _this->_impl_.max_difficulty_ = from._impl_.max_difficulty_;
  }
  if (from._internal_target_time() != 0) {
    _this->_impl_.target_time_ = from._impl_.target_time_;
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void PowAlgorithmConstants::InternalSwap(PowAlgorithmConstants* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.target_time_)
      + sizeof(PowAlgorithmConstants::_impl_.target_time_)
      - PROTOBUF_FIELD_OFFSET(PowAlgorithmConstants, _impl_.min_difficulty_)>(
          reinterpret_cast<char*>(&_impl_.min_difficulty_),
          reinterpret_cast<char*>(&other->_impl_.min_difficulty_));
}

::google::protobuf::Metadata PowAlgorithmConstants::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[6]);
}
// ===================================================================

class WeightParams::_Internal {
 public:
};

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

inline void WeightParams::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, kernel_weight_),
           0,
           offsetof(Impl_, features_and_scripts_bytes_per_gram_) -
               offsetof(Impl_, kernel_weight_) +
               sizeof(Impl_::features_and_scripts_bytes_per_gram_));
}
WeightParams::~WeightParams() {
  // @@protoc_insertion_point(destructor:tari.rpc.WeightParams)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void WeightParams::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
WeightParams::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(WeightParams, _impl_._cached_size_),
              false,
          },
          &WeightParams::MergeImpl,
          &WeightParams::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void WeightParams::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.WeightParams)
  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;

  ::memset(&_impl_.kernel_weight_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.features_and_scripts_bytes_per_gram_) -
      reinterpret_cast<char*>(&_impl_.kernel_weight_)) + sizeof(_impl_.features_and_scripts_bytes_per_gram_));
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* WeightParams::_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<2, 4, 0, 0, 2> WeightParams::_table_ = {
  {
    0,  // no _has_bits_
    0, // no _extensions_
    4, 24,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    4294967280,  // skipmap
    offsetof(decltype(_table_), field_entries),
    4,  // num_field_entries
    0,  // num_aux_entries
    offsetof(decltype(_table_), field_names),  // no aux_entries
    &_WeightParams_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::WeightParams>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // uint64 features_and_scripts_bytes_per_gram = 4;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(WeightParams, _impl_.features_and_scripts_bytes_per_gram_), 63>(),
     {32, 63, 0, PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.features_and_scripts_bytes_per_gram_)}},
    // uint64 kernel_weight = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(WeightParams, _impl_.kernel_weight_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.kernel_weight_)}},
    // uint64 input_weight = 2;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(WeightParams, _impl_.input_weight_), 63>(),
     {16, 63, 0, PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.input_weight_)}},
    // uint64 output_weight = 3;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(WeightParams, _impl_.output_weight_), 63>(),
     {24, 63, 0, PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.output_weight_)}},
  }}, {{
    65535, 65535
  }}, {{
    // uint64 kernel_weight = 1;
    {PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.kernel_weight_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 input_weight = 2;
    {PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.input_weight_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 output_weight = 3;
    {PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.output_weight_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 features_and_scripts_bytes_per_gram = 4;
    {PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.features_and_scripts_bytes_per_gram_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // uint64 kernel_weight = 1;
  if (this->_internal_kernel_weight() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        1, this->_internal_kernel_weight(), target);
  }

  // uint64 input_weight = 2;
  if (this->_internal_input_weight() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        2, this->_internal_input_weight(), target);
  }

  // uint64 output_weight = 3;
  if (this->_internal_output_weight() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        3, this->_internal_output_weight(), target);
  }

  // uint64 features_and_scripts_bytes_per_gram = 4;
  if (this->_internal_features_and_scripts_bytes_per_gram() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        4, this->_internal_features_and_scripts_bytes_per_gram(), 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.WeightParams)
  return target;
}

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

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

  // uint64 kernel_weight = 1;
  if (this->_internal_kernel_weight() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_kernel_weight());
  }

  // uint64 input_weight = 2;
  if (this->_internal_input_weight() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_input_weight());
  }

  // uint64 output_weight = 3;
  if (this->_internal_output_weight() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_output_weight());
  }

  // uint64 features_and_scripts_bytes_per_gram = 4;
  if (this->_internal_features_and_scripts_bytes_per_gram() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_features_and_scripts_bytes_per_gram());
  }

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


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

  if (from._internal_kernel_weight() != 0) {
    _this->_impl_.kernel_weight_ = from._impl_.kernel_weight_;
  }
  if (from._internal_input_weight() != 0) {
    _this->_impl_.input_weight_ = from._impl_.input_weight_;
  }
  if (from._internal_output_weight() != 0) {
    _this->_impl_.output_weight_ = from._impl_.output_weight_;
  }
  if (from._internal_features_and_scripts_bytes_per_gram() != 0) {
    _this->_impl_.features_and_scripts_bytes_per_gram_ = from._impl_.features_and_scripts_bytes_per_gram_;
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void WeightParams::InternalSwap(WeightParams* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.features_and_scripts_bytes_per_gram_)
      + sizeof(WeightParams::_impl_.features_and_scripts_bytes_per_gram_)
      - PROTOBUF_FIELD_OFFSET(WeightParams, _impl_.kernel_weight_)>(
          reinterpret_cast<char*>(&_impl_.kernel_weight_),
          reinterpret_cast<char*>(&other->_impl_.kernel_weight_));
}

::google::protobuf::Metadata WeightParams::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[7]);
}
// ===================================================================

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

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

OutputsVersion::OutputsVersion(
    ::google::protobuf::Arena* arena,
    const OutputsVersion& from)
    : ::google::protobuf::Message(arena) {
  OutputsVersion* 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_.outputs_ = (cached_has_bits & 0x00000001u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(
                              arena, *from._impl_.outputs_)
                        : nullptr;
  _impl_.features_ = (cached_has_bits & 0x00000002u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(
                              arena, *from._impl_.features_)
                        : nullptr;

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

inline void OutputsVersion::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, outputs_),
           0,
           offsetof(Impl_, features_) -
               offsetof(Impl_, outputs_) +
               sizeof(Impl_::features_));
}
OutputsVersion::~OutputsVersion() {
  // @@protoc_insertion_point(destructor:tari.rpc.OutputsVersion)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void OutputsVersion::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  delete _impl_.outputs_;
  delete _impl_.features_;
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
OutputsVersion::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_._cached_size_),
              false,
          },
          &OutputsVersion::MergeImpl,
          &OutputsVersion::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void OutputsVersion::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.OutputsVersion)
  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;

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

const char* OutputsVersion::_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, 2, 0, 2> OutputsVersion::_table_ = {
  {
    PROTOBUF_FIELD_OFFSET(OutputsVersion, _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
    2,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_OutputsVersion_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::OutputsVersion>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // .tari.rpc.Range features = 2;
    {::_pbi::TcParser::FastMtS1,
     {18, 1, 1, PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.features_)}},
    // .tari.rpc.Range outputs = 1;
    {::_pbi::TcParser::FastMtS1,
     {10, 0, 0, PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.outputs_)}},
  }}, {{
    65535, 65535
  }}, {{
    // .tari.rpc.Range outputs = 1;
    {PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.outputs_), _Internal::kHasBitsOffset + 0, 0,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.Range features = 2;
    {PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.features_), _Internal::kHasBitsOffset + 1, 1,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::Range>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::Range>()},
  }}, {{
  }},
};

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

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

  // .tari.rpc.Range features = 2;
  if (cached_has_bits & 0x00000002u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        2, *_impl_.features_, _impl_.features_->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.OutputsVersion)
  return target;
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // .tari.rpc.Range outputs = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.outputs_);
    }

    // .tari.rpc.Range features = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size +=
          1 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.features_);
    }

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


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

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(from._impl_.outputs_ != nullptr);
      if (_this->_impl_.outputs_ == nullptr) {
        _this->_impl_.outputs_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(arena, *from._impl_.outputs_);
      } else {
        _this->_impl_.outputs_->MergeFrom(*from._impl_.outputs_);
      }
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(from._impl_.features_ != nullptr);
      if (_this->_impl_.features_ == nullptr) {
        _this->_impl_.features_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(arena, *from._impl_.features_);
      } else {
        _this->_impl_.features_->MergeFrom(*from._impl_.features_);
      }
    }
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void OutputsVersion::InternalSwap(OutputsVersion* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.features_)
      + sizeof(OutputsVersion::_impl_.features_)
      - PROTOBUF_FIELD_OFFSET(OutputsVersion, _impl_.outputs_)>(
          reinterpret_cast<char*>(&_impl_.outputs_),
          reinterpret_cast<char*>(&other->_impl_.outputs_));
}

::google::protobuf::Metadata OutputsVersion::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[8]);
}
// ===================================================================

class PermittedRangeProofs::_Internal {
 public:
};

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

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

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

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

const ::google::protobuf::MessageLite::ClassData*
PermittedRangeProofs::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(PermittedRangeProofs, _impl_._cached_size_),
              false,
          },
          &PermittedRangeProofs::MergeImpl,
          &PermittedRangeProofs::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void PermittedRangeProofs::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.PermittedRangeProofs)
  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_.range_proof_types_.Clear();
  _impl_.output_type_ = 0;
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* PermittedRangeProofs::_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, 0, 2> PermittedRangeProofs::_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
    &_PermittedRangeProofs_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::PermittedRangeProofs>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // repeated .tari.rpc.RangeProofType range_proof_types = 2;
    {::_pbi::TcParser::FastV32P1,
     {18, 63, 0, PROTOBUF_FIELD_OFFSET(PermittedRangeProofs, _impl_.range_proof_types_)}},
    // .tari.rpc.OutputType output_type = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PermittedRangeProofs, _impl_.output_type_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(PermittedRangeProofs, _impl_.output_type_)}},
  }}, {{
    65535, 65535
  }}, {{
    // .tari.rpc.OutputType output_type = 1;
    {PROTOBUF_FIELD_OFFSET(PermittedRangeProofs, _impl_.output_type_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kOpenEnum)},
    // repeated .tari.rpc.RangeProofType range_proof_types = 2;
    {PROTOBUF_FIELD_OFFSET(PermittedRangeProofs, _impl_.range_proof_types_), 0, 0,
    (0 | ::_fl::kFcRepeated | ::_fl::kPackedOpenEnum)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // .tari.rpc.OutputType output_type = 1;
  if (this->_internal_output_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this->_internal_output_type(), target);
  }

  // repeated .tari.rpc.RangeProofType range_proof_types = 2;
  {
    std::size_t byte_size = _impl_._range_proof_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(2, _internal_range_proof_types(),
                                       byte_size, 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.PermittedRangeProofs)
  return target;
}

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

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

  // repeated .tari.rpc.RangeProofType range_proof_types = 2;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_range_proof_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_range_proof_types().Get(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._range_proof_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }
  // .tari.rpc.OutputType output_type = 1;
  if (this->_internal_output_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_output_type());
  }

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


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

  _this->_internal_mutable_range_proof_types()->MergeFrom(from._internal_range_proof_types());
  if (from._internal_output_type() != 0) {
    _this->_impl_.output_type_ = from._impl_.output_type_;
  }
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

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

::google::protobuf::Metadata PermittedRangeProofs::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[9]);
}
// ===================================================================

class RangeProof::_Internal {
 public:
};

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

RangeProof::RangeProof(
    ::google::protobuf::Arena* arena,
    const RangeProof& from)
    : ::google::protobuf::Message(arena) {
  RangeProof* 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.RangeProof)
}
inline PROTOBUF_NDEBUG_INLINE RangeProof::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : proof_bytes_(arena),
        _cached_size_{0} {}

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

const ::google::protobuf::MessageLite::ClassData*
RangeProof::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(RangeProof, _impl_._cached_size_),
              false,
          },
          &RangeProof::MergeImpl,
          &RangeProof::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void RangeProof::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.RangeProof)
  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_.proof_bytes_.ClearToEmpty();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* RangeProof::_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> RangeProof::_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
    &_RangeProof_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::RangeProof>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    // bytes proof_bytes = 1;
    {::_pbi::TcParser::FastBS1,
     {10, 63, 0, PROTOBUF_FIELD_OFFSET(RangeProof, _impl_.proof_bytes_)}},
  }}, {{
    65535, 65535
  }}, {{
    // bytes proof_bytes = 1;
    {PROTOBUF_FIELD_OFFSET(RangeProof, _impl_.proof_bytes_), 0, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kBytes | ::_fl::kRepAString)},
  }},
  // no aux_entries
  {{
  }},
};

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

  // bytes proof_bytes = 1;
  if (!this->_internal_proof_bytes().empty()) {
    const std::string& _s = this->_internal_proof_bytes();
    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.RangeProof)
  return target;
}

::size_t RangeProof::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:tari.rpc.RangeProof)
  ::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 proof_bytes = 1;
  if (!this->_internal_proof_bytes().empty()) {
    total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize(
                                    this->_internal_proof_bytes());
  }

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


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

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

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

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

void RangeProof::InternalSwap(RangeProof* 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_.proof_bytes_, &other->_impl_.proof_bytes_, arena);
}

::google::protobuf::Metadata RangeProof::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[10]);
}
// ===================================================================

ConsensusConstants_ProofOfWorkEntry_DoNotUse::ConsensusConstants_ProofOfWorkEntry_DoNotUse() {}
ConsensusConstants_ProofOfWorkEntry_DoNotUse::ConsensusConstants_ProofOfWorkEntry_DoNotUse(::google::protobuf::Arena* arena)
    : SuperType(arena) {}
::google::protobuf::Metadata ConsensusConstants_ProofOfWorkEntry_DoNotUse::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[11]);
}
// ===================================================================

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

ConsensusConstants::ConsensusConstants(::google::protobuf::Arena* arena)
    : ::google::protobuf::Message(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:tari.rpc.ConsensusConstants)
}
inline PROTOBUF_NDEBUG_INLINE ConsensusConstants::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility, ::google::protobuf::Arena* arena,
    const Impl_& from)
      : _has_bits_{from._has_bits_},
        _cached_size_{0},
        emission_decay_{visibility, arena, from.emission_decay_},
        _emission_decay_cached_byte_size_{0},
        proof_of_work_{visibility, arena, from.proof_of_work_},
        permitted_output_types_{visibility, arena, from.permitted_output_types_},
        _permitted_output_types_cached_byte_size_{0},
        permitted_range_proof_types_{visibility, arena, from.permitted_range_proof_types_} {}

ConsensusConstants::ConsensusConstants(
    ::google::protobuf::Arena* arena,
    const ConsensusConstants& from)
    : ::google::protobuf::Message(arena) {
  ConsensusConstants* 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_.valid_blockchain_version_range_ = (cached_has_bits & 0x00000001u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(
                              arena, *from._impl_.valid_blockchain_version_range_)
                        : nullptr;
  _impl_.transaction_weight_ = (cached_has_bits & 0x00000002u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::WeightParams>(
                              arena, *from._impl_.transaction_weight_)
                        : nullptr;
  _impl_.input_version_range_ = (cached_has_bits & 0x00000004u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(
                              arena, *from._impl_.input_version_range_)
                        : nullptr;
  _impl_.output_version_range_ = (cached_has_bits & 0x00000008u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::OutputsVersion>(
                              arena, *from._impl_.output_version_range_)
                        : nullptr;
  _impl_.kernel_version_range_ = (cached_has_bits & 0x00000010u) ? ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(
                              arena, *from._impl_.kernel_version_range_)
                        : nullptr;
  ::memcpy(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, coinbase_min_maturity_),
           reinterpret_cast<const char *>(&from._impl_) +
               offsetof(Impl_, coinbase_min_maturity_),
           offsetof(Impl_, blockchain_version_) -
               offsetof(Impl_, coinbase_min_maturity_) +
               sizeof(Impl_::blockchain_version_));

  // @@protoc_insertion_point(copy_constructor:tari.rpc.ConsensusConstants)
}
inline PROTOBUF_NDEBUG_INLINE ConsensusConstants::Impl_::Impl_(
    ::google::protobuf::internal::InternalVisibility visibility,
    ::google::protobuf::Arena* arena)
      : _cached_size_{0},
        emission_decay_{visibility, arena},
        _emission_decay_cached_byte_size_{0},
        proof_of_work_{visibility, arena},
        permitted_output_types_{visibility, arena},
        _permitted_output_types_cached_byte_size_{0},
        permitted_range_proof_types_{visibility, arena} {}

inline void ConsensusConstants::SharedCtor(::_pb::Arena* arena) {
  new (&_impl_) Impl_(internal_visibility(), arena);
  ::memset(reinterpret_cast<char *>(&_impl_) +
               offsetof(Impl_, valid_blockchain_version_range_),
           0,
           offsetof(Impl_, blockchain_version_) -
               offsetof(Impl_, valid_blockchain_version_range_) +
               sizeof(Impl_::blockchain_version_));
}
ConsensusConstants::~ConsensusConstants() {
  // @@protoc_insertion_point(destructor:tari.rpc.ConsensusConstants)
  _internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  SharedDtor();
}
inline void ConsensusConstants::SharedDtor() {
  ABSL_DCHECK(GetArena() == nullptr);
  delete _impl_.valid_blockchain_version_range_;
  delete _impl_.transaction_weight_;
  delete _impl_.input_version_range_;
  delete _impl_.output_version_range_;
  delete _impl_.kernel_version_range_;
  _impl_.~Impl_();
}

const ::google::protobuf::MessageLite::ClassData*
ConsensusConstants::GetClassData() const {
  PROTOBUF_CONSTINIT static const ::google::protobuf::MessageLite::
      ClassDataFull _data_ = {
          {
              nullptr,  // OnDemandRegisterArenaDtor
              PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_._cached_size_),
              false,
          },
          &ConsensusConstants::MergeImpl,
          &ConsensusConstants::kDescriptorMethods,
      };
  return &_data_;
}
PROTOBUF_NOINLINE void ConsensusConstants::Clear() {
// @@protoc_insertion_point(message_clear_start:tari.rpc.ConsensusConstants)
  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_.emission_decay_.Clear();
  _impl_.proof_of_work_.Clear();
  _impl_.permitted_output_types_.Clear();
  _impl_.permitted_range_proof_types_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.valid_blockchain_version_range_ != nullptr);
      _impl_.valid_blockchain_version_range_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.transaction_weight_ != nullptr);
      _impl_.transaction_weight_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.input_version_range_ != nullptr);
      _impl_.input_version_range_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      ABSL_DCHECK(_impl_.output_version_range_ != nullptr);
      _impl_.output_version_range_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      ABSL_DCHECK(_impl_.kernel_version_range_ != nullptr);
      _impl_.kernel_version_range_->Clear();
    }
  }
  ::memset(&_impl_.coinbase_min_maturity_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.blockchain_version_) -
      reinterpret_cast<char*>(&_impl_.coinbase_min_maturity_)) + sizeof(_impl_.blockchain_version_));
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
}

const char* ConsensusConstants::_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<5, 33, 8, 0, 7> ConsensusConstants::_table_ = {
  {
    PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_._has_bits_),
    0, // no _extensions_
    36, 248,  // max_field_number, fast_idx_mask
    offsetof(decltype(_table_), field_lookup_table),
    16777256,  // skipmap
    offsetof(decltype(_table_), field_entries),
    33,  // num_field_entries
    8,  // num_aux_entries
    offsetof(decltype(_table_), aux_entries),
    &_ConsensusConstants_default_instance_._instance,
    ::_pbi::TcParser::GenericFallback,  // fallback
    #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
    ::_pbi::TcParser::GetTable<::tari::rpc::ConsensusConstants>(),  // to_prefetch
    #endif  // PROTOBUF_PREFETCH_PARSE_TABLE
  }, {{
    {::_pbi::TcParser::MiniParse, {}},
    // uint64 coinbase_min_maturity = 1;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.coinbase_min_maturity_), 63>(),
     {8, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.coinbase_min_maturity_)}},
    // uint32 blockchain_version = 2;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(ConsensusConstants, _impl_.blockchain_version_), 63>(),
     {16, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.blockchain_version_)}},
    // uint64 future_time_limit = 3;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.future_time_limit_), 63>(),
     {24, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.future_time_limit_)}},
    {::_pbi::TcParser::MiniParse, {}},
    // uint64 difficulty_block_window = 5;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.difficulty_block_window_), 63>(),
     {40, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.difficulty_block_window_)}},
    {::_pbi::TcParser::MiniParse, {}},
    // uint64 max_block_transaction_weight = 7;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.max_block_transaction_weight_), 63>(),
     {56, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_block_transaction_weight_)}},
    // uint64 pow_algo_count = 8;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.pow_algo_count_), 63>(),
     {64, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.pow_algo_count_)}},
    // uint64 median_timestamp_count = 9;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.median_timestamp_count_), 63>(),
     {72, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.median_timestamp_count_)}},
    // uint64 emission_initial = 10;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.emission_initial_), 63>(),
     {80, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_initial_)}},
    // repeated uint64 emission_decay = 11;
    {::_pbi::TcParser::FastV64P1,
     {90, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_decay_)}},
    // uint64 emission_tail = 12 [deprecated = true];
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.emission_tail_), 63>(),
     {96, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_tail_)}},
    // uint64 min_sha3x_pow_difficulty = 13;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.min_sha3x_pow_difficulty_), 63>(),
     {104, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.min_sha3x_pow_difficulty_)}},
    // uint64 block_weight_inputs = 14;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.block_weight_inputs_), 63>(),
     {112, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_inputs_)}},
    // uint64 block_weight_outputs = 15;
    {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(ConsensusConstants, _impl_.block_weight_outputs_), 63>(),
     {120, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_outputs_)}},
    // uint64 block_weight_kernels = 16;
    {::_pbi::TcParser::FastV64S2,
     {384, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_kernels_)}},
    // uint64 faucet_value = 17;
    {::_pbi::TcParser::FastV64S2,
     {392, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.faucet_value_)}},
    // uint64 max_script_byte_size = 18;
    {::_pbi::TcParser::FastV64S2,
     {400, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_script_byte_size_)}},
    // uint64 validator_node_validity_period = 19;
    {::_pbi::TcParser::FastV64S2,
     {408, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_validity_period_)}},
    // uint64 effective_from_height = 20;
    {::_pbi::TcParser::FastV64S2,
     {416, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.effective_from_height_)}},
    // .tari.rpc.Range valid_blockchain_version_range = 21;
    {::_pbi::TcParser::FastMtS2,
     {426, 0, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.valid_blockchain_version_range_)}},
    // uint64 max_randomx_seed_height = 22;
    {::_pbi::TcParser::FastV64S2,
     {432, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_randomx_seed_height_)}},
    {::_pbi::TcParser::MiniParse, {}},
    // .tari.rpc.WeightParams transaction_weight = 24;
    {::_pbi::TcParser::FastMtS2,
     {450, 1, 3, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.transaction_weight_)}},
    {::_pbi::TcParser::MiniParse, {}},
    // .tari.rpc.Range input_version_range = 26;
    {::_pbi::TcParser::FastMtS2,
     {466, 2, 4, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.input_version_range_)}},
    // .tari.rpc.OutputsVersion output_version_range = 27;
    {::_pbi::TcParser::FastMtS2,
     {474, 3, 5, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.output_version_range_)}},
    // .tari.rpc.Range kernel_version_range = 28;
    {::_pbi::TcParser::FastMtS2,
     {482, 4, 6, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.kernel_version_range_)}},
    // repeated .tari.rpc.OutputType permitted_output_types = 29;
    {::_pbi::TcParser::FastV32P2,
     {490, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.permitted_output_types_)}},
    // uint64 epoch_length = 30;
    {::_pbi::TcParser::FastV64S2,
     {496, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.epoch_length_)}},
    // uint64 validator_node_registration_min_deposit_amount = 31;
    {::_pbi::TcParser::FastV64S2,
     {504, 63, 0, PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_registration_min_deposit_amount_)}},
  }}, {{
    33, 0, 1,
    65520, 29,
    65535, 65535
  }}, {{
    // uint64 coinbase_min_maturity = 1;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.coinbase_min_maturity_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint32 blockchain_version = 2;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.blockchain_version_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt32)},
    // uint64 future_time_limit = 3;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.future_time_limit_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 difficulty_block_window = 5;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.difficulty_block_window_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 max_block_transaction_weight = 7;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_block_transaction_weight_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 pow_algo_count = 8;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.pow_algo_count_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 median_timestamp_count = 9;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.median_timestamp_count_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 emission_initial = 10;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_initial_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // repeated uint64 emission_decay = 11;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_decay_), -1, 0,
    (0 | ::_fl::kFcRepeated | ::_fl::kPackedUInt64)},
    // uint64 emission_tail = 12 [deprecated = true];
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.emission_tail_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 min_sha3x_pow_difficulty = 13;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.min_sha3x_pow_difficulty_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 block_weight_inputs = 14;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_inputs_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 block_weight_outputs = 15;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_outputs_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 block_weight_kernels = 16;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.block_weight_kernels_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 faucet_value = 17;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.faucet_value_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 max_script_byte_size = 18;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_script_byte_size_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 validator_node_validity_period = 19;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_validity_period_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 effective_from_height = 20;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.effective_from_height_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // .tari.rpc.Range valid_blockchain_version_range = 21;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.valid_blockchain_version_range_), _Internal::kHasBitsOffset + 0, 0,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // uint64 max_randomx_seed_height = 22;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.max_randomx_seed_height_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // map<uint32, .tari.rpc.PowAlgorithmConstants> proof_of_work = 23;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.proof_of_work_), -1, 1,
    (0 | ::_fl::kFcRepeated | ::_fl::kMap)},
    // .tari.rpc.WeightParams transaction_weight = 24;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.transaction_weight_), _Internal::kHasBitsOffset + 1, 3,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.Range input_version_range = 26;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.input_version_range_), _Internal::kHasBitsOffset + 2, 4,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.OutputsVersion output_version_range = 27;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.output_version_range_), _Internal::kHasBitsOffset + 3, 5,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // .tari.rpc.Range kernel_version_range = 28;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.kernel_version_range_), _Internal::kHasBitsOffset + 4, 6,
    (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
    // repeated .tari.rpc.OutputType permitted_output_types = 29;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.permitted_output_types_), -1, 0,
    (0 | ::_fl::kFcRepeated | ::_fl::kPackedOpenEnum)},
    // uint64 epoch_length = 30;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.epoch_length_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 validator_node_registration_min_deposit_amount = 31;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_registration_min_deposit_amount_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 validator_node_registration_min_lock_height = 32;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_registration_min_lock_height_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 validator_node_registration_shuffle_interval_epoch = 33;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.validator_node_registration_shuffle_interval_epoch_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // repeated .tari.rpc.PermittedRangeProofs permitted_range_proof_types = 34;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.permitted_range_proof_types_), -1, 7,
    (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
    // uint64 inflation_bips = 35;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.inflation_bips_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
    // uint64 tail_epoch_length = 36;
    {PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.tail_epoch_length_), -1, 0,
    (0 | ::_fl::kFcSingular | ::_fl::kUInt64)},
  }}, {{
    {::_pbi::TcParser::GetTable<::tari::rpc::Range>()},
    {::_pbi::TcParser::GetMapAuxInfo<
        decltype(ConsensusConstants()._impl_.proof_of_work_)>(
        0, 0, 0, 13,
        11)},
    {::_pbi::TcParser::CreateInArenaStorageCb<::tari::rpc::PowAlgorithmConstants>},
    {::_pbi::TcParser::GetTable<::tari::rpc::WeightParams>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::Range>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::OutputsVersion>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::Range>()},
    {::_pbi::TcParser::GetTable<::tari::rpc::PermittedRangeProofs>()},
  }}, {{
  }},
};

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

  // uint64 coinbase_min_maturity = 1;
  if (this->_internal_coinbase_min_maturity() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        1, this->_internal_coinbase_min_maturity(), target);
  }

  // uint32 blockchain_version = 2;
  if (this->_internal_blockchain_version() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(
        2, this->_internal_blockchain_version(), target);
  }

  // uint64 future_time_limit = 3;
  if (this->_internal_future_time_limit() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        3, this->_internal_future_time_limit(), target);
  }

  // uint64 difficulty_block_window = 5;
  if (this->_internal_difficulty_block_window() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        5, this->_internal_difficulty_block_window(), target);
  }

  // uint64 max_block_transaction_weight = 7;
  if (this->_internal_max_block_transaction_weight() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        7, this->_internal_max_block_transaction_weight(), target);
  }

  // uint64 pow_algo_count = 8;
  if (this->_internal_pow_algo_count() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        8, this->_internal_pow_algo_count(), target);
  }

  // uint64 median_timestamp_count = 9;
  if (this->_internal_median_timestamp_count() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        9, this->_internal_median_timestamp_count(), target);
  }

  // uint64 emission_initial = 10;
  if (this->_internal_emission_initial() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        10, this->_internal_emission_initial(), target);
  }

  // repeated uint64 emission_decay = 11;
  {
    int byte_size = _impl_._emission_decay_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteUInt64Packed(
          11, _internal_emission_decay(), byte_size, target);
    }
  }

  // uint64 emission_tail = 12 [deprecated = true];
  if (this->_internal_emission_tail() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        12, this->_internal_emission_tail(), target);
  }

  // uint64 min_sha3x_pow_difficulty = 13;
  if (this->_internal_min_sha3x_pow_difficulty() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        13, this->_internal_min_sha3x_pow_difficulty(), target);
  }

  // uint64 block_weight_inputs = 14;
  if (this->_internal_block_weight_inputs() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        14, this->_internal_block_weight_inputs(), target);
  }

  // uint64 block_weight_outputs = 15;
  if (this->_internal_block_weight_outputs() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        15, this->_internal_block_weight_outputs(), target);
  }

  // uint64 block_weight_kernels = 16;
  if (this->_internal_block_weight_kernels() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        16, this->_internal_block_weight_kernels(), target);
  }

  // uint64 faucet_value = 17;
  if (this->_internal_faucet_value() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        17, this->_internal_faucet_value(), target);
  }

  // uint64 max_script_byte_size = 18;
  if (this->_internal_max_script_byte_size() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        18, this->_internal_max_script_byte_size(), target);
  }

  // uint64 validator_node_validity_period = 19;
  if (this->_internal_validator_node_validity_period() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        19, this->_internal_validator_node_validity_period(), target);
  }

  // uint64 effective_from_height = 20;
  if (this->_internal_effective_from_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        20, this->_internal_effective_from_height(), target);
  }

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

  // uint64 max_randomx_seed_height = 22;
  if (this->_internal_max_randomx_seed_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        22, this->_internal_max_randomx_seed_height(), target);
  }

  // map<uint32, .tari.rpc.PowAlgorithmConstants> proof_of_work = 23;
  if (!_internal_proof_of_work().empty()) {
    using MapType = ::google::protobuf::Map<::uint32_t, ::tari::rpc::PowAlgorithmConstants>;
    using WireHelper = _pbi::MapEntryFuncs<::uint32_t, ::tari::rpc::PowAlgorithmConstants,
                                   _pbi::WireFormatLite::TYPE_UINT32,
                                   _pbi::WireFormatLite::TYPE_MESSAGE>;
    const auto& field = _internal_proof_of_work();

    if (stream->IsSerializationDeterministic() && field.size() > 1) {
      for (const auto& entry : ::google::protobuf::internal::MapSorterFlat<MapType>(field)) {
        target = WireHelper::InternalSerialize(
            23, entry.first, entry.second, target, stream);
      }
    } else {
      for (const auto& entry : field) {
        target = WireHelper::InternalSerialize(
            23, entry.first, entry.second, target, stream);
      }
    }
  }

  // .tari.rpc.WeightParams transaction_weight = 24;
  if (cached_has_bits & 0x00000002u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        24, *_impl_.transaction_weight_, _impl_.transaction_weight_->GetCachedSize(), target, stream);
  }

  // .tari.rpc.Range input_version_range = 26;
  if (cached_has_bits & 0x00000004u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        26, *_impl_.input_version_range_, _impl_.input_version_range_->GetCachedSize(), target, stream);
  }

  // .tari.rpc.OutputsVersion output_version_range = 27;
  if (cached_has_bits & 0x00000008u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        27, *_impl_.output_version_range_, _impl_.output_version_range_->GetCachedSize(), target, stream);
  }

  // .tari.rpc.Range kernel_version_range = 28;
  if (cached_has_bits & 0x00000010u) {
    target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
        28, *_impl_.kernel_version_range_, _impl_.kernel_version_range_->GetCachedSize(), target, stream);
  }

  // repeated .tari.rpc.OutputType permitted_output_types = 29;
  {
    std::size_t byte_size = _impl_._permitted_output_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(29, _internal_permitted_output_types(),
                                       byte_size, target);
    }
  }

  // uint64 epoch_length = 30;
  if (this->_internal_epoch_length() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        30, this->_internal_epoch_length(), target);
  }

  // uint64 validator_node_registration_min_deposit_amount = 31;
  if (this->_internal_validator_node_registration_min_deposit_amount() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        31, this->_internal_validator_node_registration_min_deposit_amount(), target);
  }

  // uint64 validator_node_registration_min_lock_height = 32;
  if (this->_internal_validator_node_registration_min_lock_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        32, this->_internal_validator_node_registration_min_lock_height(), target);
  }

  // uint64 validator_node_registration_shuffle_interval_epoch = 33;
  if (this->_internal_validator_node_registration_shuffle_interval_epoch() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        33, this->_internal_validator_node_registration_shuffle_interval_epoch(), target);
  }

  // repeated .tari.rpc.PermittedRangeProofs permitted_range_proof_types = 34;
  for (unsigned i = 0, n = static_cast<unsigned>(
                           this->_internal_permitted_range_proof_types_size());
       i < n; i++) {
    const auto& repfield = this->_internal_permitted_range_proof_types().Get(i);
    target =
        ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
            34, repfield, repfield.GetCachedSize(),
            target, stream);
  }

  // uint64 inflation_bips = 35;
  if (this->_internal_inflation_bips() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        35, this->_internal_inflation_bips(), target);
  }

  // uint64 tail_epoch_length = 36;
  if (this->_internal_tail_epoch_length() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(
        36, this->_internal_tail_epoch_length(), 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.ConsensusConstants)
  return target;
}

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

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

  // repeated uint64 emission_decay = 11;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::UInt64Size(
        this->_internal_emission_decay())
    ;
    _impl_._emission_decay_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }
  // map<uint32, .tari.rpc.PowAlgorithmConstants> proof_of_work = 23;
  total_size += 2 * ::google::protobuf::internal::FromIntSize(_internal_proof_of_work_size());
  for (const auto& entry : _internal_proof_of_work()) {
    total_size += _pbi::MapEntryFuncs<::uint32_t, ::tari::rpc::PowAlgorithmConstants,
                                   _pbi::WireFormatLite::TYPE_UINT32,
                                   _pbi::WireFormatLite::TYPE_MESSAGE>::ByteSizeLong(entry.first, entry.second);
  }
  // repeated .tari.rpc.OutputType permitted_output_types = 29;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_permitted_output_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_permitted_output_types().Get(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 2;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._permitted_output_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }
  // repeated .tari.rpc.PermittedRangeProofs permitted_range_proof_types = 34;
  total_size += 2UL * this->_internal_permitted_range_proof_types_size();
  for (const auto& msg : this->_internal_permitted_range_proof_types()) {
    total_size += ::google::protobuf::internal::WireFormatLite::MessageSize(msg);
  }
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // .tari.rpc.Range valid_blockchain_version_range = 21;
    if (cached_has_bits & 0x00000001u) {
      total_size +=
          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.valid_blockchain_version_range_);
    }

    // .tari.rpc.WeightParams transaction_weight = 24;
    if (cached_has_bits & 0x00000002u) {
      total_size +=
          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.transaction_weight_);
    }

    // .tari.rpc.Range input_version_range = 26;
    if (cached_has_bits & 0x00000004u) {
      total_size +=
          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.input_version_range_);
    }

    // .tari.rpc.OutputsVersion output_version_range = 27;
    if (cached_has_bits & 0x00000008u) {
      total_size +=
          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.output_version_range_);
    }

    // .tari.rpc.Range kernel_version_range = 28;
    if (cached_has_bits & 0x00000010u) {
      total_size +=
          2 + ::google::protobuf::internal::WireFormatLite::MessageSize(*_impl_.kernel_version_range_);
    }

  }
  // uint64 coinbase_min_maturity = 1;
  if (this->_internal_coinbase_min_maturity() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_coinbase_min_maturity());
  }

  // uint64 future_time_limit = 3;
  if (this->_internal_future_time_limit() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_future_time_limit());
  }

  // uint64 difficulty_block_window = 5;
  if (this->_internal_difficulty_block_window() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_difficulty_block_window());
  }

  // uint64 max_block_transaction_weight = 7;
  if (this->_internal_max_block_transaction_weight() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_max_block_transaction_weight());
  }

  // uint64 pow_algo_count = 8;
  if (this->_internal_pow_algo_count() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_pow_algo_count());
  }

  // uint64 median_timestamp_count = 9;
  if (this->_internal_median_timestamp_count() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_median_timestamp_count());
  }

  // uint64 emission_initial = 10;
  if (this->_internal_emission_initial() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_emission_initial());
  }

  // uint64 emission_tail = 12 [deprecated = true];
  if (this->_internal_emission_tail() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_emission_tail());
  }

  // uint64 min_sha3x_pow_difficulty = 13;
  if (this->_internal_min_sha3x_pow_difficulty() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_min_sha3x_pow_difficulty());
  }

  // uint64 block_weight_inputs = 14;
  if (this->_internal_block_weight_inputs() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_block_weight_inputs());
  }

  // uint64 block_weight_outputs = 15;
  if (this->_internal_block_weight_outputs() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(
        this->_internal_block_weight_outputs());
  }

  // uint64 block_weight_kernels = 16;
  if (this->_internal_block_weight_kernels() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_block_weight_kernels());
  }

  // uint64 faucet_value = 17;
  if (this->_internal_faucet_value() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_faucet_value());
  }

  // uint64 max_script_byte_size = 18;
  if (this->_internal_max_script_byte_size() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_max_script_byte_size());
  }

  // uint64 validator_node_validity_period = 19;
  if (this->_internal_validator_node_validity_period() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_validator_node_validity_period());
  }

  // uint64 effective_from_height = 20;
  if (this->_internal_effective_from_height() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_effective_from_height());
  }

  // uint64 max_randomx_seed_height = 22;
  if (this->_internal_max_randomx_seed_height() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_max_randomx_seed_height());
  }

  // uint64 epoch_length = 30;
  if (this->_internal_epoch_length() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_epoch_length());
  }

  // uint64 validator_node_registration_min_deposit_amount = 31;
  if (this->_internal_validator_node_registration_min_deposit_amount() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_validator_node_registration_min_deposit_amount());
  }

  // uint64 validator_node_registration_min_lock_height = 32;
  if (this->_internal_validator_node_registration_min_lock_height() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_validator_node_registration_min_lock_height());
  }

  // uint64 validator_node_registration_shuffle_interval_epoch = 33;
  if (this->_internal_validator_node_registration_shuffle_interval_epoch() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_validator_node_registration_shuffle_interval_epoch());
  }

  // uint64 inflation_bips = 35;
  if (this->_internal_inflation_bips() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_inflation_bips());
  }

  // uint64 tail_epoch_length = 36;
  if (this->_internal_tail_epoch_length() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::UInt64Size(
                                    this->_internal_tail_epoch_length());
  }

  // uint32 blockchain_version = 2;
  if (this->_internal_blockchain_version() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(
        this->_internal_blockchain_version());
  }

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


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

  _this->_internal_mutable_emission_decay()->MergeFrom(from._internal_emission_decay());
  _this->_impl_.proof_of_work_.MergeFrom(from._impl_.proof_of_work_);
  _this->_internal_mutable_permitted_output_types()->MergeFrom(from._internal_permitted_output_types());
  _this->_internal_mutable_permitted_range_proof_types()->MergeFrom(
      from._internal_permitted_range_proof_types());
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(from._impl_.valid_blockchain_version_range_ != nullptr);
      if (_this->_impl_.valid_blockchain_version_range_ == nullptr) {
        _this->_impl_.valid_blockchain_version_range_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(arena, *from._impl_.valid_blockchain_version_range_);
      } else {
        _this->_impl_.valid_blockchain_version_range_->MergeFrom(*from._impl_.valid_blockchain_version_range_);
      }
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(from._impl_.transaction_weight_ != nullptr);
      if (_this->_impl_.transaction_weight_ == nullptr) {
        _this->_impl_.transaction_weight_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::WeightParams>(arena, *from._impl_.transaction_weight_);
      } else {
        _this->_impl_.transaction_weight_->MergeFrom(*from._impl_.transaction_weight_);
      }
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(from._impl_.input_version_range_ != nullptr);
      if (_this->_impl_.input_version_range_ == nullptr) {
        _this->_impl_.input_version_range_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(arena, *from._impl_.input_version_range_);
      } else {
        _this->_impl_.input_version_range_->MergeFrom(*from._impl_.input_version_range_);
      }
    }
    if (cached_has_bits & 0x00000008u) {
      ABSL_DCHECK(from._impl_.output_version_range_ != nullptr);
      if (_this->_impl_.output_version_range_ == nullptr) {
        _this->_impl_.output_version_range_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::OutputsVersion>(arena, *from._impl_.output_version_range_);
      } else {
        _this->_impl_.output_version_range_->MergeFrom(*from._impl_.output_version_range_);
      }
    }
    if (cached_has_bits & 0x00000010u) {
      ABSL_DCHECK(from._impl_.kernel_version_range_ != nullptr);
      if (_this->_impl_.kernel_version_range_ == nullptr) {
        _this->_impl_.kernel_version_range_ =
            ::google::protobuf::Message::CopyConstruct<::tari::rpc::Range>(arena, *from._impl_.kernel_version_range_);
      } else {
        _this->_impl_.kernel_version_range_->MergeFrom(*from._impl_.kernel_version_range_);
      }
    }
  }
  if (from._internal_coinbase_min_maturity() != 0) {
    _this->_impl_.coinbase_min_maturity_ = from._impl_.coinbase_min_maturity_;
  }
  if (from._internal_future_time_limit() != 0) {
    _this->_impl_.future_time_limit_ = from._impl_.future_time_limit_;
  }
  if (from._internal_difficulty_block_window() != 0) {
    _this->_impl_.difficulty_block_window_ = from._impl_.difficulty_block_window_;
  }
  if (from._internal_max_block_transaction_weight() != 0) {
    _this->_impl_.max_block_transaction_weight_ = from._impl_.max_block_transaction_weight_;
  }
  if (from._internal_pow_algo_count() != 0) {
    _this->_impl_.pow_algo_count_ = from._impl_.pow_algo_count_;
  }
  if (from._internal_median_timestamp_count() != 0) {
    _this->_impl_.median_timestamp_count_ = from._impl_.median_timestamp_count_;
  }
  if (from._internal_emission_initial() != 0) {
    _this->_impl_.emission_initial_ = from._impl_.emission_initial_;
  }
  if (from._internal_emission_tail() != 0) {
    _this->_impl_.emission_tail_ = from._impl_.emission_tail_;
  }
  if (from._internal_min_sha3x_pow_difficulty() != 0) {
    _this->_impl_.min_sha3x_pow_difficulty_ = from._impl_.min_sha3x_pow_difficulty_;
  }
  if (from._internal_block_weight_inputs() != 0) {
    _this->_impl_.block_weight_inputs_ = from._impl_.block_weight_inputs_;
  }
  if (from._internal_block_weight_outputs() != 0) {
    _this->_impl_.block_weight_outputs_ = from._impl_.block_weight_outputs_;
  }
  if (from._internal_block_weight_kernels() != 0) {
    _this->_impl_.block_weight_kernels_ = from._impl_.block_weight_kernels_;
  }
  if (from._internal_faucet_value() != 0) {
    _this->_impl_.faucet_value_ = from._impl_.faucet_value_;
  }
  if (from._internal_max_script_byte_size() != 0) {
    _this->_impl_.max_script_byte_size_ = from._impl_.max_script_byte_size_;
  }
  if (from._internal_validator_node_validity_period() != 0) {
    _this->_impl_.validator_node_validity_period_ = from._impl_.validator_node_validity_period_;
  }
  if (from._internal_effective_from_height() != 0) {
    _this->_impl_.effective_from_height_ = from._impl_.effective_from_height_;
  }
  if (from._internal_max_randomx_seed_height() != 0) {
    _this->_impl_.max_randomx_seed_height_ = from._impl_.max_randomx_seed_height_;
  }
  if (from._internal_epoch_length() != 0) {
    _this->_impl_.epoch_length_ = from._impl_.epoch_length_;
  }
  if (from._internal_validator_node_registration_min_deposit_amount() != 0) {
    _this->_impl_.validator_node_registration_min_deposit_amount_ = from._impl_.validator_node_registration_min_deposit_amount_;
  }
  if (from._internal_validator_node_registration_min_lock_height() != 0) {
    _this->_impl_.validator_node_registration_min_lock_height_ = from._impl_.validator_node_registration_min_lock_height_;
  }
  if (from._internal_validator_node_registration_shuffle_interval_epoch() != 0) {
    _this->_impl_.validator_node_registration_shuffle_interval_epoch_ = from._impl_.validator_node_registration_shuffle_interval_epoch_;
  }
  if (from._internal_inflation_bips() != 0) {
    _this->_impl_.inflation_bips_ = from._impl_.inflation_bips_;
  }
  if (from._internal_tail_epoch_length() != 0) {
    _this->_impl_.tail_epoch_length_ = from._impl_.tail_epoch_length_;
  }
  if (from._internal_blockchain_version() != 0) {
    _this->_impl_.blockchain_version_ = from._impl_.blockchain_version_;
  }
  _this->_impl_._has_bits_[0] |= cached_has_bits;
  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ConsensusConstants::InternalSwap(ConsensusConstants* PROTOBUF_RESTRICT other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.emission_decay_.InternalSwap(&other->_impl_.emission_decay_);
  _impl_.proof_of_work_.InternalSwap(&other->_impl_.proof_of_work_);
  _impl_.permitted_output_types_.InternalSwap(&other->_impl_.permitted_output_types_);
  _impl_.permitted_range_proof_types_.InternalSwap(&other->_impl_.permitted_range_proof_types_);
  ::google::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.blockchain_version_)
      + sizeof(ConsensusConstants::_impl_.blockchain_version_)
      - PROTOBUF_FIELD_OFFSET(ConsensusConstants, _impl_.valid_blockchain_version_range_)>(
          reinterpret_cast<char*>(&_impl_.valid_blockchain_version_range_),
          reinterpret_cast<char*>(&other->_impl_.valid_blockchain_version_range_));
}

::google::protobuf::Metadata ConsensusConstants::GetMetadata() const {
  return ::_pbi::AssignDescriptors(&descriptor_table_types_2eproto_getter,
                                   &descriptor_table_types_2eproto_once,
                                   file_level_metadata_types_2eproto[12]);
}
// @@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_types_2eproto),
     ::std::false_type{});
#include "google/protobuf/port_undef.inc"
