// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: base_node.proto
// Original file comments:
// Copyright 2020. The Tari Project
//
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
// following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
// disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
// following disclaimer in the documentation and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote
// products derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
// USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef GRPC_base_5fnode_2eproto__INCLUDED
#define GRPC_base_5fnode_2eproto__INCLUDED

#include "base_node.pb.h"

#include <functional>
#include <grpcpp/generic/async_generic_service.h>
#include <grpcpp/support/async_stream.h>
#include <grpcpp/support/async_unary_call.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/client_context.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/support/message_allocator.h>
#include <grpcpp/support/method_handler.h>
#include <grpcpp/impl/proto_utils.h>
#include <grpcpp/impl/rpc_method.h>
#include <grpcpp/support/server_callback.h>
#include <grpcpp/impl/server_callback_handlers.h>
#include <grpcpp/server_context.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/support/status.h>
#include <grpcpp/support/stub_options.h>
#include <grpcpp/support/sync_stream.h>

namespace tari {
namespace rpc {

// The gRPC interface for interacting with the base node.
class BaseNode final {
 public:
  static constexpr char const* service_full_name() {
    return "tari.rpc.BaseNode";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // Lists headers in the current best chain
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::BlockHeaderResponse>> ListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::BlockHeaderResponse>>(ListHeadersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>> AsyncListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>>(AsyncListHeadersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>> PrepareAsyncListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>>(PrepareAsyncListHeadersRaw(context, request, cq));
    }
    // Get header by hash
    virtual ::grpc::Status GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::tari::rpc::BlockHeaderResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>> AsyncGetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>>(AsyncGetHeaderByHashRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>> PrepareAsyncGetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>>(PrepareAsyncGetHeaderByHashRaw(context, request, cq));
    }
    // Returns blocks in the current best chain. Currently only supports querying by height
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>> GetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>>(GetBlocksRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> AsyncGetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(AsyncGetBlocksRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> PrepareAsyncGetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(PrepareAsyncGetBlocksRaw(context, request, cq));
    }
    // Returns the block timing for the chain heights
    virtual ::grpc::Status GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::tari::rpc::BlockTimingResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>> AsyncGetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>>(AsyncGetBlockTimingRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>> PrepareAsyncGetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>>(PrepareAsyncGetBlockTimingRaw(context, request, cq));
    }
    // Returns the network Constants
    virtual ::grpc::Status GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::tari::rpc::ConsensusConstants* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>> AsyncGetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>>(AsyncGetConstantsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>> PrepareAsyncGetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>>(PrepareAsyncGetConstantsRaw(context, request, cq));
    }
    // Returns Block Sizes
    virtual ::grpc::Status GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::tari::rpc::BlockGroupResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>> AsyncGetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>>(AsyncGetBlockSizeRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>> PrepareAsyncGetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>>(PrepareAsyncGetBlockSizeRaw(context, request, cq));
    }
    // Returns Block Fees
    virtual ::grpc::Status GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::tari::rpc::BlockGroupResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>> AsyncGetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>>(AsyncGetBlockFeesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>> PrepareAsyncGetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>>(PrepareAsyncGetBlockFeesRaw(context, request, cq));
    }
    // Get Version
    virtual ::grpc::Status GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::StringValue* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>> AsyncGetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>>(AsyncGetVersionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>>(PrepareAsyncGetVersionRaw(context, request, cq));
    }
    // Check for new updates
    virtual ::grpc::Status CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SoftwareUpdate* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>> AsyncCheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>>(AsyncCheckForUpdatesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>> PrepareAsyncCheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>>(PrepareAsyncCheckForUpdatesRaw(context, request, cq));
    }
    // Get coins in circulation
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::ValueAtHeightResponse>> GetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::ValueAtHeightResponse>>(GetTokensInCirculationRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>> AsyncGetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>>(AsyncGetTokensInCirculationRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>> PrepareAsyncGetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>>(PrepareAsyncGetTokensInCirculationRaw(context, request, cq));
    }
    // Get network difficulties
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::NetworkDifficultyResponse>> GetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::NetworkDifficultyResponse>>(GetNetworkDifficultyRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>> AsyncGetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>>(AsyncGetNetworkDifficultyRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>> PrepareAsyncGetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>>(PrepareAsyncGetNetworkDifficultyRaw(context, request, cq));
    }
    // Get the block template
    virtual ::grpc::Status GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::tari::rpc::NewBlockTemplateResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>> AsyncGetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>>(AsyncGetNewBlockTemplateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>> PrepareAsyncGetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>>(PrepareAsyncGetNewBlockTemplateRaw(context, request, cq));
    }
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::tari::rpc::GetNewBlockResult* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockRaw(context, request, cq));
    }
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::tari::rpc::GetNewBlockResult* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockWithCoinbasesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockWithCoinbasesRaw(context, request, cq));
    }
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::tari::rpc::GetNewBlockResult* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockTemplateWithCoinbasesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockTemplateWithCoinbasesRaw(context, request, cq));
    }
    // Construct a new block and header blob from a provided template
    virtual ::grpc::Status GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::tari::rpc::GetNewBlockBlobResult* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>> AsyncGetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>>(AsyncGetNewBlockBlobRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>> PrepareAsyncGetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>>(PrepareAsyncGetNewBlockBlobRaw(context, request, cq));
    }
    // Submit a new block for propagation
    virtual ::grpc::Status SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::tari::rpc::SubmitBlockResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>> AsyncSubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>>(AsyncSubmitBlockRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>> PrepareAsyncSubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>>(PrepareAsyncSubmitBlockRaw(context, request, cq));
    }
    // Submit a new mined block blob for propagation
    virtual ::grpc::Status SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::tari::rpc::SubmitBlockResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>> AsyncSubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>>(AsyncSubmitBlockBlobRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>> PrepareAsyncSubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>>(PrepareAsyncSubmitBlockBlobRaw(context, request, cq));
    }
    // Submit a transaction for propagation
    virtual ::grpc::Status SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::tari::rpc::SubmitTransactionResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>> AsyncSubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>>(AsyncSubmitTransactionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>> PrepareAsyncSubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>>(PrepareAsyncSubmitTransactionRaw(context, request, cq));
    }
    // Get the base node sync information
    virtual ::grpc::Status GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SyncInfoResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>> AsyncGetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>>(AsyncGetSyncInfoRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>> PrepareAsyncGetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>>(PrepareAsyncGetSyncInfoRaw(context, request, cq));
    }
    // Get the base node sync information
    virtual ::grpc::Status GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SyncProgressResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>> AsyncGetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>>(AsyncGetSyncProgressRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>> PrepareAsyncGetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>>(PrepareAsyncGetSyncProgressRaw(context, request, cq));
    }
    // Get the base node tip information
    virtual ::grpc::Status GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::TipInfoResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>> AsyncGetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>>(AsyncGetTipInfoRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>> PrepareAsyncGetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>>(PrepareAsyncGetTipInfoRaw(context, request, cq));
    }
    // Search for blocks containing the specified kernels
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>> SearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>>(SearchKernelsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> AsyncSearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(AsyncSearchKernelsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> PrepareAsyncSearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(PrepareAsyncSearchKernelsRaw(context, request, cq));
    }
    // Search for blocks containing the specified commitments
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>> SearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>>(SearchUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> AsyncSearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(AsyncSearchUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>> PrepareAsyncSearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>>(PrepareAsyncSearchUtxosRaw(context, request, cq));
    }
    // Fetch any utxos that exist in the main chain
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>> FetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>>(FetchMatchingUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>> AsyncFetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>>(AsyncFetchMatchingUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>> PrepareAsyncFetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>>(PrepareAsyncFetchMatchingUtxosRaw(context, request, cq));
    }
    // get all peers from the base node
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetPeersResponse>> GetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetPeersResponse>>(GetPeersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>> AsyncGetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>>(AsyncGetPeersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>> PrepareAsyncGetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>>(PrepareAsyncGetPeersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>> GetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>>(GetMempoolTransactionsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>> AsyncGetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>>(AsyncGetMempoolTransactionsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>> PrepareAsyncGetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>>(PrepareAsyncGetMempoolTransactionsRaw(context, request, cq));
    }
    virtual ::grpc::Status TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::tari::rpc::TransactionStateResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>> AsyncTransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>>(AsyncTransactionStateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>> PrepareAsyncTransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>>(PrepareAsyncTransactionStateRaw(context, request, cq));
    }
    // This returns the node's network identity
    virtual ::grpc::Status Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::NodeIdentity* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>> AsyncIdentify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>>(AsyncIdentifyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>> PrepareAsyncIdentify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>>(PrepareAsyncIdentifyRaw(context, request, cq));
    }
    // Get Base Node network connectivity status
    virtual ::grpc::Status GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::NetworkStatusResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>> AsyncGetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>>(AsyncGetNetworkStatusRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>> PrepareAsyncGetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>>(PrepareAsyncGetNetworkStatusRaw(context, request, cq));
    }
    // List currently connected peers
    virtual ::grpc::Status ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::ListConnectedPeersResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>> AsyncListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>>(AsyncListConnectedPeersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>> PrepareAsyncListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>>(PrepareAsyncListConnectedPeersRaw(context, request, cq));
    }
    // Get mempool stats
    virtual ::grpc::Status GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::MempoolStatsResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>> AsyncGetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>>(AsyncGetMempoolStatsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>> PrepareAsyncGetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>>(PrepareAsyncGetMempoolStatsRaw(context, request, cq));
    }
    // Get VNs
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>> GetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>>(GetActiveValidatorNodesRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>> AsyncGetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>>(AsyncGetActiveValidatorNodesRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>> PrepareAsyncGetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>>(PrepareAsyncGetActiveValidatorNodesRaw(context, request, cq));
    }
    virtual ::grpc::Status GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::tari::rpc::GetShardKeyResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>> AsyncGetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>>(AsyncGetShardKeyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>> PrepareAsyncGetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>>(PrepareAsyncGetShardKeyRaw(context, request, cq));
    }
    // Get templates
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>> GetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>>(GetTemplateRegistrationsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>> AsyncGetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>>(AsyncGetTemplateRegistrationsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>> PrepareAsyncGetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>>(PrepareAsyncGetTemplateRegistrationsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>> GetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>>(GetSideChainUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>> AsyncGetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>>(AsyncGetSideChainUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>> PrepareAsyncGetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>>(PrepareAsyncGetSideChainUtxosRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      // Lists headers in the current best chain
      virtual void ListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::BlockHeaderResponse>* reactor) = 0;
      // Get header by hash
      virtual void GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Returns blocks in the current best chain. Currently only supports querying by height
      virtual void GetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) = 0;
      // Returns the block timing for the chain heights
      virtual void GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Returns the network Constants
      virtual void GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Returns Block Sizes
      virtual void GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Returns Block Fees
      virtual void GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get Version
      virtual void GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Check for new updates
      virtual void CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response, std::function<void(::grpc::Status)>) = 0;
      virtual void CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get coins in circulation
      virtual void GetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::ValueAtHeightResponse>* reactor) = 0;
      // Get network difficulties
      virtual void GetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::NetworkDifficultyResponse>* reactor) = 0;
      // Get the block template
      virtual void GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Construct a new block from a provided template
      virtual void GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Construct a new block from a provided template
      virtual void GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Construct a new block from a provided template
      virtual void GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Construct a new block and header blob from a provided template
      virtual void GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Submit a new block for propagation
      virtual void SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Submit a new mined block blob for propagation
      virtual void SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Submit a transaction for propagation
      virtual void SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get the base node sync information
      virtual void GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get the base node sync information
      virtual void GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get the base node tip information
      virtual void GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Search for blocks containing the specified kernels
      virtual void SearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) = 0;
      // Search for blocks containing the specified commitments
      virtual void SearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) = 0;
      // Fetch any utxos that exist in the main chain
      virtual void FetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::FetchMatchingUtxosResponse>* reactor) = 0;
      // get all peers from the base node
      virtual void GetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetPeersResponse>* reactor) = 0;
      virtual void GetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetMempoolTransactionsResponse>* reactor) = 0;
      virtual void TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // This returns the node's network identity
      virtual void Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response, std::function<void(::grpc::Status)>) = 0;
      virtual void Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get Base Node network connectivity status
      virtual void GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // List currently connected peers
      virtual void ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get mempool stats
      virtual void GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get VNs
      virtual void GetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetActiveValidatorNodesResponse>* reactor) = 0;
      virtual void GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get templates
      virtual void GetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetTemplateRegistrationResponse>* reactor) = 0;
      virtual void GetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetSideChainUtxosResponse>* reactor) = 0;
    };
    typedef class async_interface experimental_async_interface;
    virtual class async_interface* async() { return nullptr; }
    class async_interface* experimental_async() { return async(); }
   private:
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::BlockHeaderResponse>* ListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>* AsyncListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::BlockHeaderResponse>* PrepareAsyncListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>* AsyncGetHeaderByHashRaw(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockHeaderResponse>* PrepareAsyncGetHeaderByHashRaw(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>* GetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* AsyncGetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* PrepareAsyncGetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>* AsyncGetBlockTimingRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockTimingResponse>* PrepareAsyncGetBlockTimingRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>* AsyncGetConstantsRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ConsensusConstants>* PrepareAsyncGetConstantsRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>* AsyncGetBlockSizeRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>* PrepareAsyncGetBlockSizeRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>* AsyncGetBlockFeesRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::BlockGroupResponse>* PrepareAsyncGetBlockFeesRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::StringValue>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>* AsyncCheckForUpdatesRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SoftwareUpdate>* PrepareAsyncCheckForUpdatesRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::ValueAtHeightResponse>* GetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>* AsyncGetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::ValueAtHeightResponse>* PrepareAsyncGetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::NetworkDifficultyResponse>* GetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>* AsyncGetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::NetworkDifficultyResponse>* PrepareAsyncGetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>* AsyncGetNewBlockTemplateRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NewBlockTemplateResponse>* PrepareAsyncGetNewBlockTemplateRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockTemplateWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockTemplateWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>* AsyncGetNewBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetNewBlockBlobResult>* PrepareAsyncGetNewBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>* AsyncSubmitBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>* PrepareAsyncSubmitBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>* AsyncSubmitBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitBlockResponse>* PrepareAsyncSubmitBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>* AsyncSubmitTransactionRaw(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SubmitTransactionResponse>* PrepareAsyncSubmitTransactionRaw(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>* AsyncGetSyncInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncInfoResponse>* PrepareAsyncGetSyncInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>* AsyncGetSyncProgressRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::SyncProgressResponse>* PrepareAsyncGetSyncProgressRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>* AsyncGetTipInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TipInfoResponse>* PrepareAsyncGetTipInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>* SearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* AsyncSearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* PrepareAsyncSearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::HistoricalBlock>* SearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* AsyncSearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::HistoricalBlock>* PrepareAsyncSearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>* FetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>* AsyncFetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::FetchMatchingUtxosResponse>* PrepareAsyncFetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::GetPeersResponse>* GetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>* AsyncGetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetPeersResponse>* PrepareAsyncGetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>* GetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>* AsyncGetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetMempoolTransactionsResponse>* PrepareAsyncGetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>* AsyncTransactionStateRaw(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::TransactionStateResponse>* PrepareAsyncTransactionStateRaw(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>* AsyncIdentifyRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NodeIdentity>* PrepareAsyncIdentifyRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>* AsyncGetNetworkStatusRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::NetworkStatusResponse>* PrepareAsyncGetNetworkStatusRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>* AsyncListConnectedPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::ListConnectedPeersResponse>* PrepareAsyncListConnectedPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>* AsyncGetMempoolStatsRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::MempoolStatsResponse>* PrepareAsyncGetMempoolStatsRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>* GetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>* AsyncGetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetActiveValidatorNodesResponse>* PrepareAsyncGetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>* AsyncGetShardKeyRaw(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::tari::rpc::GetShardKeyResponse>* PrepareAsyncGetShardKeyRaw(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>* GetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>* AsyncGetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetTemplateRegistrationResponse>* PrepareAsyncGetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>* GetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>* AsyncGetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::tari::rpc::GetSideChainUtxosResponse>* PrepareAsyncGetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq) = 0;
  };
  class Stub final : public StubInterface {
   public:
    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::BlockHeaderResponse>> ListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::BlockHeaderResponse>>(ListHeadersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>> AsyncListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>>(AsyncListHeadersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>> PrepareAsyncListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>>(PrepareAsyncListHeadersRaw(context, request, cq));
    }
    ::grpc::Status GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::tari::rpc::BlockHeaderResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>> AsyncGetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>>(AsyncGetHeaderByHashRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>> PrepareAsyncGetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>>(PrepareAsyncGetHeaderByHashRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>> GetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>>(GetBlocksRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> AsyncGetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(AsyncGetBlocksRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> PrepareAsyncGetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(PrepareAsyncGetBlocksRaw(context, request, cq));
    }
    ::grpc::Status GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::tari::rpc::BlockTimingResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>> AsyncGetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>>(AsyncGetBlockTimingRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>> PrepareAsyncGetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>>(PrepareAsyncGetBlockTimingRaw(context, request, cq));
    }
    ::grpc::Status GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::tari::rpc::ConsensusConstants* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>> AsyncGetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>>(AsyncGetConstantsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>> PrepareAsyncGetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>>(PrepareAsyncGetConstantsRaw(context, request, cq));
    }
    ::grpc::Status GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::tari::rpc::BlockGroupResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>> AsyncGetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>>(AsyncGetBlockSizeRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>> PrepareAsyncGetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>>(PrepareAsyncGetBlockSizeRaw(context, request, cq));
    }
    ::grpc::Status GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::tari::rpc::BlockGroupResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>> AsyncGetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>>(AsyncGetBlockFeesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>> PrepareAsyncGetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>>(PrepareAsyncGetBlockFeesRaw(context, request, cq));
    }
    ::grpc::Status GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::StringValue* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>> AsyncGetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>>(AsyncGetVersionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>> PrepareAsyncGetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>>(PrepareAsyncGetVersionRaw(context, request, cq));
    }
    ::grpc::Status CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SoftwareUpdate* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>> AsyncCheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>>(AsyncCheckForUpdatesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>> PrepareAsyncCheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>>(PrepareAsyncCheckForUpdatesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::ValueAtHeightResponse>> GetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::ValueAtHeightResponse>>(GetTokensInCirculationRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>> AsyncGetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>>(AsyncGetTokensInCirculationRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>> PrepareAsyncGetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>>(PrepareAsyncGetTokensInCirculationRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::NetworkDifficultyResponse>> GetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::NetworkDifficultyResponse>>(GetNetworkDifficultyRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>> AsyncGetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>>(AsyncGetNetworkDifficultyRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>> PrepareAsyncGetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>>(PrepareAsyncGetNetworkDifficultyRaw(context, request, cq));
    }
    ::grpc::Status GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::tari::rpc::NewBlockTemplateResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>> AsyncGetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>>(AsyncGetNewBlockTemplateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>> PrepareAsyncGetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>>(PrepareAsyncGetNewBlockTemplateRaw(context, request, cq));
    }
    ::grpc::Status GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::tari::rpc::GetNewBlockResult* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockRaw(context, request, cq));
    }
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::tari::rpc::GetNewBlockResult* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockWithCoinbasesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockWithCoinbasesRaw(context, request, cq));
    }
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::tari::rpc::GetNewBlockResult* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> AsyncGetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(AsyncGetNewBlockTemplateWithCoinbasesRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>> PrepareAsyncGetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>>(PrepareAsyncGetNewBlockTemplateWithCoinbasesRaw(context, request, cq));
    }
    ::grpc::Status GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::tari::rpc::GetNewBlockBlobResult* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>> AsyncGetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>>(AsyncGetNewBlockBlobRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>> PrepareAsyncGetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>>(PrepareAsyncGetNewBlockBlobRaw(context, request, cq));
    }
    ::grpc::Status SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::tari::rpc::SubmitBlockResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>> AsyncSubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>>(AsyncSubmitBlockRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>> PrepareAsyncSubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>>(PrepareAsyncSubmitBlockRaw(context, request, cq));
    }
    ::grpc::Status SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::tari::rpc::SubmitBlockResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>> AsyncSubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>>(AsyncSubmitBlockBlobRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>> PrepareAsyncSubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>>(PrepareAsyncSubmitBlockBlobRaw(context, request, cq));
    }
    ::grpc::Status SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::tari::rpc::SubmitTransactionResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>> AsyncSubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>>(AsyncSubmitTransactionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>> PrepareAsyncSubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>>(PrepareAsyncSubmitTransactionRaw(context, request, cq));
    }
    ::grpc::Status GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SyncInfoResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>> AsyncGetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>>(AsyncGetSyncInfoRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>> PrepareAsyncGetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>>(PrepareAsyncGetSyncInfoRaw(context, request, cq));
    }
    ::grpc::Status GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::SyncProgressResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>> AsyncGetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>>(AsyncGetSyncProgressRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>> PrepareAsyncGetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>>(PrepareAsyncGetSyncProgressRaw(context, request, cq));
    }
    ::grpc::Status GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::TipInfoResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>> AsyncGetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>>(AsyncGetTipInfoRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>> PrepareAsyncGetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>>(PrepareAsyncGetTipInfoRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>> SearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>>(SearchKernelsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> AsyncSearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(AsyncSearchKernelsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> PrepareAsyncSearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(PrepareAsyncSearchKernelsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>> SearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>>(SearchUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> AsyncSearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(AsyncSearchUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>> PrepareAsyncSearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>>(PrepareAsyncSearchUtxosRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::FetchMatchingUtxosResponse>> FetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::FetchMatchingUtxosResponse>>(FetchMatchingUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>> AsyncFetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>>(AsyncFetchMatchingUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>> PrepareAsyncFetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>>(PrepareAsyncFetchMatchingUtxosRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetPeersResponse>> GetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetPeersResponse>>(GetPeersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>> AsyncGetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>>(AsyncGetPeersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>> PrepareAsyncGetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>>(PrepareAsyncGetPeersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetMempoolTransactionsResponse>> GetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetMempoolTransactionsResponse>>(GetMempoolTransactionsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>> AsyncGetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>>(AsyncGetMempoolTransactionsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>> PrepareAsyncGetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>>(PrepareAsyncGetMempoolTransactionsRaw(context, request, cq));
    }
    ::grpc::Status TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::tari::rpc::TransactionStateResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>> AsyncTransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>>(AsyncTransactionStateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>> PrepareAsyncTransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>>(PrepareAsyncTransactionStateRaw(context, request, cq));
    }
    ::grpc::Status Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::NodeIdentity* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>> AsyncIdentify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>>(AsyncIdentifyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>> PrepareAsyncIdentify(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>>(PrepareAsyncIdentifyRaw(context, request, cq));
    }
    ::grpc::Status GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::NetworkStatusResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>> AsyncGetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>>(AsyncGetNetworkStatusRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>> PrepareAsyncGetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>>(PrepareAsyncGetNetworkStatusRaw(context, request, cq));
    }
    ::grpc::Status ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::ListConnectedPeersResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>> AsyncListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>>(AsyncListConnectedPeersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>> PrepareAsyncListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>>(PrepareAsyncListConnectedPeersRaw(context, request, cq));
    }
    ::grpc::Status GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::tari::rpc::MempoolStatsResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>> AsyncGetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>>(AsyncGetMempoolStatsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>> PrepareAsyncGetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>>(PrepareAsyncGetMempoolStatsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetActiveValidatorNodesResponse>> GetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetActiveValidatorNodesResponse>>(GetActiveValidatorNodesRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>> AsyncGetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>>(AsyncGetActiveValidatorNodesRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>> PrepareAsyncGetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>>(PrepareAsyncGetActiveValidatorNodesRaw(context, request, cq));
    }
    ::grpc::Status GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::tari::rpc::GetShardKeyResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>> AsyncGetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>>(AsyncGetShardKeyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>> PrepareAsyncGetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>>(PrepareAsyncGetShardKeyRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetTemplateRegistrationResponse>> GetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetTemplateRegistrationResponse>>(GetTemplateRegistrationsRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>> AsyncGetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>>(AsyncGetTemplateRegistrationsRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>> PrepareAsyncGetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>>(PrepareAsyncGetTemplateRegistrationsRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetSideChainUtxosResponse>> GetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::tari::rpc::GetSideChainUtxosResponse>>(GetSideChainUtxosRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>> AsyncGetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>>(AsyncGetSideChainUtxosRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>> PrepareAsyncGetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>>(PrepareAsyncGetSideChainUtxosRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void ListHeaders(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::BlockHeaderResponse>* reactor) override;
      void GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response, std::function<void(::grpc::Status)>) override;
      void GetHeaderByHash(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetBlocks(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) override;
      void GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response, std::function<void(::grpc::Status)>) override;
      void GetBlockTiming(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response, std::function<void(::grpc::Status)>) override;
      void GetConstants(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, std::function<void(::grpc::Status)>) override;
      void GetBlockSize(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, std::function<void(::grpc::Status)>) override;
      void GetBlockFees(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response, std::function<void(::grpc::Status)>) override;
      void GetVersion(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response, ::grpc::ClientUnaryReactor* reactor) override;
      void CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response, std::function<void(::grpc::Status)>) override;
      void CheckForUpdates(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetTokensInCirculation(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::ValueAtHeightResponse>* reactor) override;
      void GetNetworkDifficulty(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::NetworkDifficultyResponse>* reactor) override;
      void GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response, std::function<void(::grpc::Status)>) override;
      void GetNewBlockTemplate(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) override;
      void GetNewBlock(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) override;
      void GetNewBlockWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, std::function<void(::grpc::Status)>) override;
      void GetNewBlockTemplateWithCoinbases(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response, std::function<void(::grpc::Status)>) override;
      void GetNewBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response, std::function<void(::grpc::Status)>) override;
      void SubmitBlock(::grpc::ClientContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response, std::function<void(::grpc::Status)>) override;
      void SubmitBlockBlob(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response, std::function<void(::grpc::Status)>) override;
      void SubmitTransaction(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response, std::function<void(::grpc::Status)>) override;
      void GetSyncInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response, std::function<void(::grpc::Status)>) override;
      void GetSyncProgress(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response, std::function<void(::grpc::Status)>) override;
      void GetTipInfo(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SearchKernels(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) override;
      void SearchUtxos(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::HistoricalBlock>* reactor) override;
      void FetchMatchingUtxos(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::FetchMatchingUtxosResponse>* reactor) override;
      void GetPeers(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetPeersResponse>* reactor) override;
      void GetMempoolTransactions(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetMempoolTransactionsResponse>* reactor) override;
      void TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response, std::function<void(::grpc::Status)>) override;
      void TransactionState(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response, std::function<void(::grpc::Status)>) override;
      void Identify(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response, std::function<void(::grpc::Status)>) override;
      void GetNetworkStatus(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response, std::function<void(::grpc::Status)>) override;
      void ListConnectedPeers(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response, std::function<void(::grpc::Status)>) override;
      void GetMempoolStats(::grpc::ClientContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetActiveValidatorNodes(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetActiveValidatorNodesResponse>* reactor) override;
      void GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response, std::function<void(::grpc::Status)>) override;
      void GetShardKey(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetTemplateRegistrations(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetTemplateRegistrationResponse>* reactor) override;
      void GetSideChainUtxos(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest* request, ::grpc::ClientReadReactor< ::tari::rpc::GetSideChainUtxosResponse>* reactor) override;
     private:
      friend class Stub;
      explicit async(Stub* stub): stub_(stub) { }
      Stub* stub() { return stub_; }
      Stub* stub_;
    };
    class async* async() override { return &async_stub_; }

   private:
    std::shared_ptr< ::grpc::ChannelInterface> channel_;
    class async async_stub_{this};
    ::grpc::ClientReader< ::tari::rpc::BlockHeaderResponse>* ListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>* AsyncListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::BlockHeaderResponse>* PrepareAsyncListHeadersRaw(::grpc::ClientContext* context, const ::tari::rpc::ListHeadersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>* AsyncGetHeaderByHashRaw(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockHeaderResponse>* PrepareAsyncGetHeaderByHashRaw(::grpc::ClientContext* context, const ::tari::rpc::GetHeaderByHashRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>* GetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* AsyncGetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* PrepareAsyncGetBlocksRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>* AsyncGetBlockTimingRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockTimingResponse>* PrepareAsyncGetBlockTimingRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>* AsyncGetConstantsRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::ConsensusConstants>* PrepareAsyncGetConstantsRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockHeight& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>* AsyncGetBlockSizeRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>* PrepareAsyncGetBlockSizeRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>* AsyncGetBlockFeesRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::BlockGroupResponse>* PrepareAsyncGetBlockFeesRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockGroupRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>* AsyncGetVersionRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::StringValue>* PrepareAsyncGetVersionRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>* AsyncCheckForUpdatesRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SoftwareUpdate>* PrepareAsyncCheckForUpdatesRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::ValueAtHeightResponse>* GetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>* AsyncGetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::ValueAtHeightResponse>* PrepareAsyncGetTokensInCirculationRaw(::grpc::ClientContext* context, const ::tari::rpc::GetBlocksRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::NetworkDifficultyResponse>* GetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>* AsyncGetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::NetworkDifficultyResponse>* PrepareAsyncGetNetworkDifficultyRaw(::grpc::ClientContext* context, const ::tari::rpc::HeightRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>* AsyncGetNewBlockTemplateRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NewBlockTemplateResponse>* PrepareAsyncGetNewBlockTemplateRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplateRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* AsyncGetNewBlockTemplateWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockResult>* PrepareAsyncGetNewBlockTemplateWithCoinbasesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>* AsyncGetNewBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetNewBlockBlobResult>* PrepareAsyncGetNewBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::NewBlockTemplate& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>* AsyncSubmitBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>* PrepareAsyncSubmitBlockRaw(::grpc::ClientContext* context, const ::tari::rpc::Block& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>* AsyncSubmitBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitBlockResponse>* PrepareAsyncSubmitBlockBlobRaw(::grpc::ClientContext* context, const ::tari::rpc::BlockBlobRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>* AsyncSubmitTransactionRaw(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SubmitTransactionResponse>* PrepareAsyncSubmitTransactionRaw(::grpc::ClientContext* context, const ::tari::rpc::SubmitTransactionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>* AsyncGetSyncInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncInfoResponse>* PrepareAsyncGetSyncInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>* AsyncGetSyncProgressRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::SyncProgressResponse>* PrepareAsyncGetSyncProgressRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>* AsyncGetTipInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::TipInfoResponse>* PrepareAsyncGetTipInfoRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>* SearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* AsyncSearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* PrepareAsyncSearchKernelsRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchKernelsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::HistoricalBlock>* SearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* AsyncSearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::HistoricalBlock>* PrepareAsyncSearchUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::SearchUtxosRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::FetchMatchingUtxosResponse>* FetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>* AsyncFetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::FetchMatchingUtxosResponse>* PrepareAsyncFetchMatchingUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::FetchMatchingUtxosRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::GetPeersResponse>* GetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>* AsyncGetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetPeersResponse>* PrepareAsyncGetPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::GetPeersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::GetMempoolTransactionsResponse>* GetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>* AsyncGetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetMempoolTransactionsResponse>* PrepareAsyncGetMempoolTransactionsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetMempoolTransactionsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>* AsyncTransactionStateRaw(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::TransactionStateResponse>* PrepareAsyncTransactionStateRaw(::grpc::ClientContext* context, const ::tari::rpc::TransactionStateRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>* AsyncIdentifyRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NodeIdentity>* PrepareAsyncIdentifyRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>* AsyncGetNetworkStatusRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::NetworkStatusResponse>* PrepareAsyncGetNetworkStatusRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>* AsyncListConnectedPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::ListConnectedPeersResponse>* PrepareAsyncListConnectedPeersRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>* AsyncGetMempoolStatsRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::MempoolStatsResponse>* PrepareAsyncGetMempoolStatsRaw(::grpc::ClientContext* context, const ::tari::rpc::Empty& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::GetActiveValidatorNodesResponse>* GetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>* AsyncGetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetActiveValidatorNodesResponse>* PrepareAsyncGetActiveValidatorNodesRaw(::grpc::ClientContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>* AsyncGetShardKeyRaw(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::tari::rpc::GetShardKeyResponse>* PrepareAsyncGetShardKeyRaw(::grpc::ClientContext* context, const ::tari::rpc::GetShardKeyRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::GetTemplateRegistrationResponse>* GetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>* AsyncGetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetTemplateRegistrationResponse>* PrepareAsyncGetTemplateRegistrationsRaw(::grpc::ClientContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::tari::rpc::GetSideChainUtxosResponse>* GetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>* AsyncGetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::tari::rpc::GetSideChainUtxosResponse>* PrepareAsyncGetSideChainUtxosRaw(::grpc::ClientContext* context, const ::tari::rpc::GetSideChainUtxosRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_ListHeaders_;
    const ::grpc::internal::RpcMethod rpcmethod_GetHeaderByHash_;
    const ::grpc::internal::RpcMethod rpcmethod_GetBlocks_;
    const ::grpc::internal::RpcMethod rpcmethod_GetBlockTiming_;
    const ::grpc::internal::RpcMethod rpcmethod_GetConstants_;
    const ::grpc::internal::RpcMethod rpcmethod_GetBlockSize_;
    const ::grpc::internal::RpcMethod rpcmethod_GetBlockFees_;
    const ::grpc::internal::RpcMethod rpcmethod_GetVersion_;
    const ::grpc::internal::RpcMethod rpcmethod_CheckForUpdates_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTokensInCirculation_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNetworkDifficulty_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNewBlockTemplate_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNewBlock_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNewBlockWithCoinbases_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNewBlockTemplateWithCoinbases_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNewBlockBlob_;
    const ::grpc::internal::RpcMethod rpcmethod_SubmitBlock_;
    const ::grpc::internal::RpcMethod rpcmethod_SubmitBlockBlob_;
    const ::grpc::internal::RpcMethod rpcmethod_SubmitTransaction_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSyncInfo_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSyncProgress_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTipInfo_;
    const ::grpc::internal::RpcMethod rpcmethod_SearchKernels_;
    const ::grpc::internal::RpcMethod rpcmethod_SearchUtxos_;
    const ::grpc::internal::RpcMethod rpcmethod_FetchMatchingUtxos_;
    const ::grpc::internal::RpcMethod rpcmethod_GetPeers_;
    const ::grpc::internal::RpcMethod rpcmethod_GetMempoolTransactions_;
    const ::grpc::internal::RpcMethod rpcmethod_TransactionState_;
    const ::grpc::internal::RpcMethod rpcmethod_Identify_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNetworkStatus_;
    const ::grpc::internal::RpcMethod rpcmethod_ListConnectedPeers_;
    const ::grpc::internal::RpcMethod rpcmethod_GetMempoolStats_;
    const ::grpc::internal::RpcMethod rpcmethod_GetActiveValidatorNodes_;
    const ::grpc::internal::RpcMethod rpcmethod_GetShardKey_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTemplateRegistrations_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSideChainUtxos_;
  };
  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());

  class Service : public ::grpc::Service {
   public:
    Service();
    virtual ~Service();
    // Lists headers in the current best chain
    virtual ::grpc::Status ListHeaders(::grpc::ServerContext* context, const ::tari::rpc::ListHeadersRequest* request, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* writer);
    // Get header by hash
    virtual ::grpc::Status GetHeaderByHash(::grpc::ServerContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response);
    // Returns blocks in the current best chain. Currently only supports querying by height
    virtual ::grpc::Status GetBlocks(::grpc::ServerContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* writer);
    // Returns the block timing for the chain heights
    virtual ::grpc::Status GetBlockTiming(::grpc::ServerContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response);
    // Returns the network Constants
    virtual ::grpc::Status GetConstants(::grpc::ServerContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response);
    // Returns Block Sizes
    virtual ::grpc::Status GetBlockSize(::grpc::ServerContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response);
    // Returns Block Fees
    virtual ::grpc::Status GetBlockFees(::grpc::ServerContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response);
    // Get Version
    virtual ::grpc::Status GetVersion(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response);
    // Check for new updates
    virtual ::grpc::Status CheckForUpdates(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response);
    // Get coins in circulation
    virtual ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* context, const ::tari::rpc::GetBlocksRequest* request, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* writer);
    // Get network difficulties
    virtual ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* context, const ::tari::rpc::HeightRequest* request, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* writer);
    // Get the block template
    virtual ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response);
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlock(::grpc::ServerContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response);
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response);
    // Construct a new block from a provided template
    virtual ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response);
    // Construct a new block and header blob from a provided template
    virtual ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response);
    // Submit a new block for propagation
    virtual ::grpc::Status SubmitBlock(::grpc::ServerContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response);
    // Submit a new mined block blob for propagation
    virtual ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response);
    // Submit a transaction for propagation
    virtual ::grpc::Status SubmitTransaction(::grpc::ServerContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response);
    // Get the base node sync information
    virtual ::grpc::Status GetSyncInfo(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response);
    // Get the base node sync information
    virtual ::grpc::Status GetSyncProgress(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response);
    // Get the base node tip information
    virtual ::grpc::Status GetTipInfo(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response);
    // Search for blocks containing the specified kernels
    virtual ::grpc::Status SearchKernels(::grpc::ServerContext* context, const ::tari::rpc::SearchKernelsRequest* request, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* writer);
    // Search for blocks containing the specified commitments
    virtual ::grpc::Status SearchUtxos(::grpc::ServerContext* context, const ::tari::rpc::SearchUtxosRequest* request, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* writer);
    // Fetch any utxos that exist in the main chain
    virtual ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* context, const ::tari::rpc::FetchMatchingUtxosRequest* request, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* writer);
    // get all peers from the base node
    virtual ::grpc::Status GetPeers(::grpc::ServerContext* context, const ::tari::rpc::GetPeersRequest* request, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* writer);
    virtual ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* context, const ::tari::rpc::GetMempoolTransactionsRequest* request, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* writer);
    virtual ::grpc::Status TransactionState(::grpc::ServerContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response);
    // This returns the node's network identity
    virtual ::grpc::Status Identify(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response);
    // Get Base Node network connectivity status
    virtual ::grpc::Status GetNetworkStatus(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response);
    // List currently connected peers
    virtual ::grpc::Status ListConnectedPeers(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response);
    // Get mempool stats
    virtual ::grpc::Status GetMempoolStats(::grpc::ServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response);
    // Get VNs
    virtual ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest* request, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* writer);
    virtual ::grpc::Status GetShardKey(::grpc::ServerContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response);
    // Get templates
    virtual ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest* request, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* writer);
    virtual ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* context, const ::tari::rpc::GetSideChainUtxosRequest* request, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* writer);
  };
  template <class BaseClass>
  class WithAsyncMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ListHeaders() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListHeaders(::grpc::ServerContext* context, ::tari::rpc::ListHeadersRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::BlockHeaderResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(0, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHeaderByHash(::grpc::ServerContext* context, ::tari::rpc::GetHeaderByHashRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::BlockHeaderResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetBlocks() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlocks(::grpc::ServerContext* context, ::tari::rpc::GetBlocksRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::HistoricalBlock>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockTiming(::grpc::ServerContext* context, ::tari::rpc::HeightRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::BlockTimingResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetConstants() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetConstants(::grpc::ServerContext* context, ::tari::rpc::BlockHeight* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::ConsensusConstants>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockSize(::grpc::ServerContext* context, ::tari::rpc::BlockGroupRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::BlockGroupResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodAsync(6);
    }
    ~WithAsyncMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockFees(::grpc::ServerContext* context, ::tari::rpc::BlockGroupRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::BlockGroupResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetVersion() {
      ::grpc::Service::MarkMethodAsync(7);
    }
    ~WithAsyncMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetVersion(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::StringValue>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodAsync(8);
    }
    ~WithAsyncMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCheckForUpdates(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SoftwareUpdate>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodAsync(9);
    }
    ~WithAsyncMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTokensInCirculation(::grpc::ServerContext* context, ::tari::rpc::GetBlocksRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::ValueAtHeightResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodAsync(10);
    }
    ~WithAsyncMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkDifficulty(::grpc::ServerContext* context, ::tari::rpc::HeightRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::NetworkDifficultyResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(10, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodAsync(11);
    }
    ~WithAsyncMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockTemplate(::grpc::ServerContext* context, ::tari::rpc::NewBlockTemplateRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::NewBlockTemplateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodAsync(12);
    }
    ~WithAsyncMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlock(::grpc::ServerContext* context, ::tari::rpc::NewBlockTemplate* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::GetNewBlockResult>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodAsync(13);
    }
    ~WithAsyncMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockWithCoinbases(::grpc::ServerContext* context, ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::GetNewBlockResult>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodAsync(14);
    }
    ~WithAsyncMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockTemplateWithCoinbases(::grpc::ServerContext* context, ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::GetNewBlockResult>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodAsync(15);
    }
    ~WithAsyncMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockBlob(::grpc::ServerContext* context, ::tari::rpc::NewBlockTemplate* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::GetNewBlockBlobResult>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodAsync(16);
    }
    ~WithAsyncMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitBlock(::grpc::ServerContext* context, ::tari::rpc::Block* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SubmitBlockResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodAsync(17);
    }
    ~WithAsyncMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitBlockBlob(::grpc::ServerContext* context, ::tari::rpc::BlockBlobRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SubmitBlockResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodAsync(18);
    }
    ~WithAsyncMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitTransaction(::grpc::ServerContext* context, ::tari::rpc::SubmitTransactionRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SubmitTransactionResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodAsync(19);
    }
    ~WithAsyncMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSyncInfo(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SyncInfoResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodAsync(20);
    }
    ~WithAsyncMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSyncProgress(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::SyncProgressResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodAsync(21);
    }
    ~WithAsyncMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTipInfo(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::TipInfoResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SearchKernels() {
      ::grpc::Service::MarkMethodAsync(22);
    }
    ~WithAsyncMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSearchKernels(::grpc::ServerContext* context, ::tari::rpc::SearchKernelsRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::HistoricalBlock>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(22, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodAsync(23);
    }
    ~WithAsyncMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSearchUtxos(::grpc::ServerContext* context, ::tari::rpc::SearchUtxosRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::HistoricalBlock>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(23, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodAsync(24);
    }
    ~WithAsyncMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestFetchMatchingUtxos(::grpc::ServerContext* context, ::tari::rpc::FetchMatchingUtxosRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::FetchMatchingUtxosResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(24, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetPeers() {
      ::grpc::Service::MarkMethodAsync(25);
    }
    ~WithAsyncMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPeers(::grpc::ServerContext* context, ::tari::rpc::GetPeersRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::GetPeersResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(25, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodAsync(26);
    }
    ~WithAsyncMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetMempoolTransactions(::grpc::ServerContext* context, ::tari::rpc::GetMempoolTransactionsRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::GetMempoolTransactionsResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(26, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_TransactionState() {
      ::grpc::Service::MarkMethodAsync(27);
    }
    ~WithAsyncMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestTransactionState(::grpc::ServerContext* context, ::tari::rpc::TransactionStateRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::TransactionStateResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(27, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_Identify() {
      ::grpc::Service::MarkMethodAsync(28);
    }
    ~WithAsyncMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestIdentify(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::NodeIdentity>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(28, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodAsync(29);
    }
    ~WithAsyncMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkStatus(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::NetworkStatusResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(29, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodAsync(30);
    }
    ~WithAsyncMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListConnectedPeers(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::ListConnectedPeersResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(30, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodAsync(31);
    }
    ~WithAsyncMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetMempoolStats(::grpc::ServerContext* context, ::tari::rpc::Empty* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::MempoolStatsResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(31, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodAsync(32);
    }
    ~WithAsyncMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetActiveValidatorNodes(::grpc::ServerContext* context, ::tari::rpc::GetActiveValidatorNodesRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(32, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetShardKey() {
      ::grpc::Service::MarkMethodAsync(33);
    }
    ~WithAsyncMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetShardKey(::grpc::ServerContext* context, ::tari::rpc::GetShardKeyRequest* request, ::grpc::ServerAsyncResponseWriter< ::tari::rpc::GetShardKeyResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(33, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodAsync(34);
    }
    ~WithAsyncMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTemplateRegistrations(::grpc::ServerContext* context, ::tari::rpc::GetTemplateRegistrationsRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::GetTemplateRegistrationResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(34, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodAsync(35);
    }
    ~WithAsyncMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSideChainUtxos(::grpc::ServerContext* context, ::tari::rpc::GetSideChainUtxosRequest* request, ::grpc::ServerAsyncWriter< ::tari::rpc::GetSideChainUtxosResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(35, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_ListHeaders<WithAsyncMethod_GetHeaderByHash<WithAsyncMethod_GetBlocks<WithAsyncMethod_GetBlockTiming<WithAsyncMethod_GetConstants<WithAsyncMethod_GetBlockSize<WithAsyncMethod_GetBlockFees<WithAsyncMethod_GetVersion<WithAsyncMethod_CheckForUpdates<WithAsyncMethod_GetTokensInCirculation<WithAsyncMethod_GetNetworkDifficulty<WithAsyncMethod_GetNewBlockTemplate<WithAsyncMethod_GetNewBlock<WithAsyncMethod_GetNewBlockWithCoinbases<WithAsyncMethod_GetNewBlockTemplateWithCoinbases<WithAsyncMethod_GetNewBlockBlob<WithAsyncMethod_SubmitBlock<WithAsyncMethod_SubmitBlockBlob<WithAsyncMethod_SubmitTransaction<WithAsyncMethod_GetSyncInfo<WithAsyncMethod_GetSyncProgress<WithAsyncMethod_GetTipInfo<WithAsyncMethod_SearchKernels<WithAsyncMethod_SearchUtxos<WithAsyncMethod_FetchMatchingUtxos<WithAsyncMethod_GetPeers<WithAsyncMethod_GetMempoolTransactions<WithAsyncMethod_TransactionState<WithAsyncMethod_Identify<WithAsyncMethod_GetNetworkStatus<WithAsyncMethod_ListConnectedPeers<WithAsyncMethod_GetMempoolStats<WithAsyncMethod_GetActiveValidatorNodes<WithAsyncMethod_GetShardKey<WithAsyncMethod_GetTemplateRegistrations<WithAsyncMethod_GetSideChainUtxos<Service > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ListHeaders() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::ListHeadersRequest, ::tari::rpc::BlockHeaderResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::ListHeadersRequest* request) { return this->ListHeaders(context, request); }));
    }
    ~WithCallbackMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::BlockHeaderResponse>* ListHeaders(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetHeaderByHashRequest, ::tari::rpc::BlockHeaderResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetHeaderByHashRequest* request, ::tari::rpc::BlockHeaderResponse* response) { return this->GetHeaderByHash(context, request, response); }));}
    void SetMessageAllocatorFor_GetHeaderByHash(
        ::grpc::MessageAllocator< ::tari::rpc::GetHeaderByHashRequest, ::tari::rpc::BlockHeaderResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetHeaderByHashRequest, ::tari::rpc::BlockHeaderResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetHeaderByHash(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetBlocks() {
      ::grpc::Service::MarkMethodCallback(2,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetBlocksRequest, ::tari::rpc::HistoricalBlock>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetBlocksRequest* request) { return this->GetBlocks(context, request); }));
    }
    ~WithCallbackMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::HistoricalBlock>* GetBlocks(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::HeightRequest, ::tari::rpc::BlockTimingResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::HeightRequest* request, ::tari::rpc::BlockTimingResponse* response) { return this->GetBlockTiming(context, request, response); }));}
    void SetMessageAllocatorFor_GetBlockTiming(
        ::grpc::MessageAllocator< ::tari::rpc::HeightRequest, ::tari::rpc::BlockTimingResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(3);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::HeightRequest, ::tari::rpc::BlockTimingResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockTiming(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetConstants() {
      ::grpc::Service::MarkMethodCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockHeight, ::tari::rpc::ConsensusConstants>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::BlockHeight* request, ::tari::rpc::ConsensusConstants* response) { return this->GetConstants(context, request, response); }));}
    void SetMessageAllocatorFor_GetConstants(
        ::grpc::MessageAllocator< ::tari::rpc::BlockHeight, ::tari::rpc::ConsensusConstants>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockHeight, ::tari::rpc::ConsensusConstants>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetConstants(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response) { return this->GetBlockSize(context, request, response); }));}
    void SetMessageAllocatorFor_GetBlockSize(
        ::grpc::MessageAllocator< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockSize(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::BlockGroupRequest* request, ::tari::rpc::BlockGroupResponse* response) { return this->GetBlockFees(context, request, response); }));}
    void SetMessageAllocatorFor_GetBlockFees(
        ::grpc::MessageAllocator< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(6);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockFees(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetVersion() {
      ::grpc::Service::MarkMethodCallback(7,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::StringValue>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::StringValue* response) { return this->GetVersion(context, request, response); }));}
    void SetMessageAllocatorFor_GetVersion(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::StringValue>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(7);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::StringValue>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetVersion(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodCallback(8,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SoftwareUpdate>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SoftwareUpdate* response) { return this->CheckForUpdates(context, request, response); }));}
    void SetMessageAllocatorFor_CheckForUpdates(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::SoftwareUpdate>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(8);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SoftwareUpdate>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CheckForUpdates(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodCallback(9,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetBlocksRequest, ::tari::rpc::ValueAtHeightResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetBlocksRequest* request) { return this->GetTokensInCirculation(context, request); }));
    }
    ~WithCallbackMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::ValueAtHeightResponse>* GetTokensInCirculation(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodCallback(10,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::HeightRequest, ::tari::rpc::NetworkDifficultyResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::HeightRequest* request) { return this->GetNetworkDifficulty(context, request); }));
    }
    ~WithCallbackMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::NetworkDifficultyResponse>* GetNetworkDifficulty(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodCallback(11,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplateRequest, ::tari::rpc::NewBlockTemplateResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::NewBlockTemplateRequest* request, ::tari::rpc::NewBlockTemplateResponse* response) { return this->GetNewBlockTemplate(context, request, response); }));}
    void SetMessageAllocatorFor_GetNewBlockTemplate(
        ::grpc::MessageAllocator< ::tari::rpc::NewBlockTemplateRequest, ::tari::rpc::NewBlockTemplateResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(11);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplateRequest, ::tari::rpc::NewBlockTemplateResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockTemplate(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodCallback(12,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockResult>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockResult* response) { return this->GetNewBlock(context, request, response); }));}
    void SetMessageAllocatorFor_GetNewBlock(
        ::grpc::MessageAllocator< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockResult>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(12);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockResult>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlock(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodCallback(13,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetNewBlockWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response) { return this->GetNewBlockWithCoinbases(context, request, response); }));}
    void SetMessageAllocatorFor_GetNewBlockWithCoinbases(
        ::grpc::MessageAllocator< ::tari::rpc::GetNewBlockWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(13);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetNewBlockWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockWithCoinbases(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodCallback(14,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* request, ::tari::rpc::GetNewBlockResult* response) { return this->GetNewBlockTemplateWithCoinbases(context, request, response); }));}
    void SetMessageAllocatorFor_GetNewBlockTemplateWithCoinbases(
        ::grpc::MessageAllocator< ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(14);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockTemplateWithCoinbases(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodCallback(15,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockBlobResult>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::NewBlockTemplate* request, ::tari::rpc::GetNewBlockBlobResult* response) { return this->GetNewBlockBlob(context, request, response); }));}
    void SetMessageAllocatorFor_GetNewBlockBlob(
        ::grpc::MessageAllocator< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockBlobResult>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(15);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockBlobResult>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockBlob(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodCallback(16,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Block, ::tari::rpc::SubmitBlockResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Block* request, ::tari::rpc::SubmitBlockResponse* response) { return this->SubmitBlock(context, request, response); }));}
    void SetMessageAllocatorFor_SubmitBlock(
        ::grpc::MessageAllocator< ::tari::rpc::Block, ::tari::rpc::SubmitBlockResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(16);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Block, ::tari::rpc::SubmitBlockResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitBlock(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodCallback(17,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockBlobRequest, ::tari::rpc::SubmitBlockResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::BlockBlobRequest* request, ::tari::rpc::SubmitBlockResponse* response) { return this->SubmitBlockBlob(context, request, response); }));}
    void SetMessageAllocatorFor_SubmitBlockBlob(
        ::grpc::MessageAllocator< ::tari::rpc::BlockBlobRequest, ::tari::rpc::SubmitBlockResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(17);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::BlockBlobRequest, ::tari::rpc::SubmitBlockResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitBlockBlob(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodCallback(18,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::SubmitTransactionRequest, ::tari::rpc::SubmitTransactionResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::SubmitTransactionRequest* request, ::tari::rpc::SubmitTransactionResponse* response) { return this->SubmitTransaction(context, request, response); }));}
    void SetMessageAllocatorFor_SubmitTransaction(
        ::grpc::MessageAllocator< ::tari::rpc::SubmitTransactionRequest, ::tari::rpc::SubmitTransactionResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(18);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::SubmitTransactionRequest, ::tari::rpc::SubmitTransactionResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitTransaction(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodCallback(19,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SyncInfoResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncInfoResponse* response) { return this->GetSyncInfo(context, request, response); }));}
    void SetMessageAllocatorFor_GetSyncInfo(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::SyncInfoResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(19);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SyncInfoResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSyncInfo(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodCallback(20,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SyncProgressResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::SyncProgressResponse* response) { return this->GetSyncProgress(context, request, response); }));}
    void SetMessageAllocatorFor_GetSyncProgress(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::SyncProgressResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(20);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::SyncProgressResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSyncProgress(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodCallback(21,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::TipInfoResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::TipInfoResponse* response) { return this->GetTipInfo(context, request, response); }));}
    void SetMessageAllocatorFor_GetTipInfo(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::TipInfoResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(21);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::TipInfoResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetTipInfo(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SearchKernels() {
      ::grpc::Service::MarkMethodCallback(22,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::SearchKernelsRequest, ::tari::rpc::HistoricalBlock>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::SearchKernelsRequest* request) { return this->SearchKernels(context, request); }));
    }
    ~WithCallbackMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::HistoricalBlock>* SearchKernels(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodCallback(23,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::SearchUtxosRequest, ::tari::rpc::HistoricalBlock>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::SearchUtxosRequest* request) { return this->SearchUtxos(context, request); }));
    }
    ~WithCallbackMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::HistoricalBlock>* SearchUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodCallback(24,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::FetchMatchingUtxosRequest, ::tari::rpc::FetchMatchingUtxosResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::FetchMatchingUtxosRequest* request) { return this->FetchMatchingUtxos(context, request); }));
    }
    ~WithCallbackMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::FetchMatchingUtxosResponse>* FetchMatchingUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetPeers() {
      ::grpc::Service::MarkMethodCallback(25,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetPeersRequest, ::tari::rpc::GetPeersResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetPeersRequest* request) { return this->GetPeers(context, request); }));
    }
    ~WithCallbackMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::GetPeersResponse>* GetPeers(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodCallback(26,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetMempoolTransactionsRequest, ::tari::rpc::GetMempoolTransactionsResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetMempoolTransactionsRequest* request) { return this->GetMempoolTransactions(context, request); }));
    }
    ~WithCallbackMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::GetMempoolTransactionsResponse>* GetMempoolTransactions(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_TransactionState() {
      ::grpc::Service::MarkMethodCallback(27,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::TransactionStateRequest, ::tari::rpc::TransactionStateResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::TransactionStateRequest* request, ::tari::rpc::TransactionStateResponse* response) { return this->TransactionState(context, request, response); }));}
    void SetMessageAllocatorFor_TransactionState(
        ::grpc::MessageAllocator< ::tari::rpc::TransactionStateRequest, ::tari::rpc::TransactionStateResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(27);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::TransactionStateRequest, ::tari::rpc::TransactionStateResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* TransactionState(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_Identify() {
      ::grpc::Service::MarkMethodCallback(28,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::NodeIdentity>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NodeIdentity* response) { return this->Identify(context, request, response); }));}
    void SetMessageAllocatorFor_Identify(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::NodeIdentity>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(28);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::NodeIdentity>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Identify(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodCallback(29,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::NetworkStatusResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::NetworkStatusResponse* response) { return this->GetNetworkStatus(context, request, response); }));}
    void SetMessageAllocatorFor_GetNetworkStatus(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::NetworkStatusResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(29);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::NetworkStatusResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNetworkStatus(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodCallback(30,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::ListConnectedPeersResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::ListConnectedPeersResponse* response) { return this->ListConnectedPeers(context, request, response); }));}
    void SetMessageAllocatorFor_ListConnectedPeers(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::ListConnectedPeersResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(30);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::ListConnectedPeersResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListConnectedPeers(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodCallback(31,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::MempoolStatsResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::Empty* request, ::tari::rpc::MempoolStatsResponse* response) { return this->GetMempoolStats(context, request, response); }));}
    void SetMessageAllocatorFor_GetMempoolStats(
        ::grpc::MessageAllocator< ::tari::rpc::Empty, ::tari::rpc::MempoolStatsResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(31);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::Empty, ::tari::rpc::MempoolStatsResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetMempoolStats(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodCallback(32,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetActiveValidatorNodesRequest, ::tari::rpc::GetActiveValidatorNodesResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetActiveValidatorNodesRequest* request) { return this->GetActiveValidatorNodes(context, request); }));
    }
    ~WithCallbackMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::GetActiveValidatorNodesResponse>* GetActiveValidatorNodes(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetShardKey() {
      ::grpc::Service::MarkMethodCallback(33,
          new ::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetShardKeyRequest, ::tari::rpc::GetShardKeyResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetShardKeyRequest* request, ::tari::rpc::GetShardKeyResponse* response) { return this->GetShardKey(context, request, response); }));}
    void SetMessageAllocatorFor_GetShardKey(
        ::grpc::MessageAllocator< ::tari::rpc::GetShardKeyRequest, ::tari::rpc::GetShardKeyResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(33);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::tari::rpc::GetShardKeyRequest, ::tari::rpc::GetShardKeyResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetShardKey(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodCallback(34,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetTemplateRegistrationsRequest, ::tari::rpc::GetTemplateRegistrationResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetTemplateRegistrationsRequest* request) { return this->GetTemplateRegistrations(context, request); }));
    }
    ~WithCallbackMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::GetTemplateRegistrationResponse>* GetTemplateRegistrations(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodCallback(35,
          new ::grpc::internal::CallbackServerStreamingHandler< ::tari::rpc::GetSideChainUtxosRequest, ::tari::rpc::GetSideChainUtxosResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::tari::rpc::GetSideChainUtxosRequest* request) { return this->GetSideChainUtxos(context, request); }));
    }
    ~WithCallbackMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::tari::rpc::GetSideChainUtxosResponse>* GetSideChainUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_ListHeaders<WithCallbackMethod_GetHeaderByHash<WithCallbackMethod_GetBlocks<WithCallbackMethod_GetBlockTiming<WithCallbackMethod_GetConstants<WithCallbackMethod_GetBlockSize<WithCallbackMethod_GetBlockFees<WithCallbackMethod_GetVersion<WithCallbackMethod_CheckForUpdates<WithCallbackMethod_GetTokensInCirculation<WithCallbackMethod_GetNetworkDifficulty<WithCallbackMethod_GetNewBlockTemplate<WithCallbackMethod_GetNewBlock<WithCallbackMethod_GetNewBlockWithCoinbases<WithCallbackMethod_GetNewBlockTemplateWithCoinbases<WithCallbackMethod_GetNewBlockBlob<WithCallbackMethod_SubmitBlock<WithCallbackMethod_SubmitBlockBlob<WithCallbackMethod_SubmitTransaction<WithCallbackMethod_GetSyncInfo<WithCallbackMethod_GetSyncProgress<WithCallbackMethod_GetTipInfo<WithCallbackMethod_SearchKernels<WithCallbackMethod_SearchUtxos<WithCallbackMethod_FetchMatchingUtxos<WithCallbackMethod_GetPeers<WithCallbackMethod_GetMempoolTransactions<WithCallbackMethod_TransactionState<WithCallbackMethod_Identify<WithCallbackMethod_GetNetworkStatus<WithCallbackMethod_ListConnectedPeers<WithCallbackMethod_GetMempoolStats<WithCallbackMethod_GetActiveValidatorNodes<WithCallbackMethod_GetShardKey<WithCallbackMethod_GetTemplateRegistrations<WithCallbackMethod_GetSideChainUtxos<Service > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ListHeaders() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetBlocks() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetConstants() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodGeneric(6);
    }
    ~WithGenericMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetVersion() {
      ::grpc::Service::MarkMethodGeneric(7);
    }
    ~WithGenericMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodGeneric(8);
    }
    ~WithGenericMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodGeneric(9);
    }
    ~WithGenericMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodGeneric(10);
    }
    ~WithGenericMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodGeneric(11);
    }
    ~WithGenericMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodGeneric(12);
    }
    ~WithGenericMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodGeneric(13);
    }
    ~WithGenericMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodGeneric(14);
    }
    ~WithGenericMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodGeneric(15);
    }
    ~WithGenericMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodGeneric(16);
    }
    ~WithGenericMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodGeneric(17);
    }
    ~WithGenericMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodGeneric(18);
    }
    ~WithGenericMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodGeneric(19);
    }
    ~WithGenericMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodGeneric(20);
    }
    ~WithGenericMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodGeneric(21);
    }
    ~WithGenericMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SearchKernels() {
      ::grpc::Service::MarkMethodGeneric(22);
    }
    ~WithGenericMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodGeneric(23);
    }
    ~WithGenericMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodGeneric(24);
    }
    ~WithGenericMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetPeers() {
      ::grpc::Service::MarkMethodGeneric(25);
    }
    ~WithGenericMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodGeneric(26);
    }
    ~WithGenericMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_TransactionState() {
      ::grpc::Service::MarkMethodGeneric(27);
    }
    ~WithGenericMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_Identify() {
      ::grpc::Service::MarkMethodGeneric(28);
    }
    ~WithGenericMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodGeneric(29);
    }
    ~WithGenericMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodGeneric(30);
    }
    ~WithGenericMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodGeneric(31);
    }
    ~WithGenericMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodGeneric(32);
    }
    ~WithGenericMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetShardKey() {
      ::grpc::Service::MarkMethodGeneric(33);
    }
    ~WithGenericMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodGeneric(34);
    }
    ~WithGenericMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodGeneric(35);
    }
    ~WithGenericMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ListHeaders() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListHeaders(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(0, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHeaderByHash(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetBlocks() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlocks(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(2, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockTiming(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetConstants() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetConstants(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockSize(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodRaw(6);
    }
    ~WithRawMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBlockFees(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetVersion() {
      ::grpc::Service::MarkMethodRaw(7);
    }
    ~WithRawMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetVersion(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(7, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodRaw(8);
    }
    ~WithRawMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestCheckForUpdates(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(8, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodRaw(9);
    }
    ~WithRawMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTokensInCirculation(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodRaw(10);
    }
    ~WithRawMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkDifficulty(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(10, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodRaw(11);
    }
    ~WithRawMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockTemplate(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(11, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodRaw(12);
    }
    ~WithRawMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlock(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(12, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodRaw(13);
    }
    ~WithRawMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockWithCoinbases(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(13, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodRaw(14);
    }
    ~WithRawMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockTemplateWithCoinbases(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodRaw(15);
    }
    ~WithRawMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNewBlockBlob(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodRaw(16);
    }
    ~WithRawMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitBlock(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodRaw(17);
    }
    ~WithRawMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitBlockBlob(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(17, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodRaw(18);
    }
    ~WithRawMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSubmitTransaction(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(18, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodRaw(19);
    }
    ~WithRawMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSyncInfo(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(19, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodRaw(20);
    }
    ~WithRawMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSyncProgress(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(20, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodRaw(21);
    }
    ~WithRawMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTipInfo(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(21, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SearchKernels() {
      ::grpc::Service::MarkMethodRaw(22);
    }
    ~WithRawMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSearchKernels(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(22, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodRaw(23);
    }
    ~WithRawMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSearchUtxos(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(23, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodRaw(24);
    }
    ~WithRawMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestFetchMatchingUtxos(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(24, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetPeers() {
      ::grpc::Service::MarkMethodRaw(25);
    }
    ~WithRawMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPeers(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(25, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodRaw(26);
    }
    ~WithRawMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetMempoolTransactions(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(26, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_TransactionState() {
      ::grpc::Service::MarkMethodRaw(27);
    }
    ~WithRawMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestTransactionState(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(27, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_Identify() {
      ::grpc::Service::MarkMethodRaw(28);
    }
    ~WithRawMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestIdentify(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(28, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodRaw(29);
    }
    ~WithRawMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkStatus(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(29, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodRaw(30);
    }
    ~WithRawMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestListConnectedPeers(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(30, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodRaw(31);
    }
    ~WithRawMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetMempoolStats(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(31, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodRaw(32);
    }
    ~WithRawMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetActiveValidatorNodes(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(32, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetShardKey() {
      ::grpc::Service::MarkMethodRaw(33);
    }
    ~WithRawMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetShardKey(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(33, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodRaw(34);
    }
    ~WithRawMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTemplateRegistrations(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(34, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodRaw(35);
    }
    ~WithRawMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSideChainUtxos(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(35, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ListHeaders() {
      ::grpc::Service::MarkMethodRawCallback(0,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->ListHeaders(context, request); }));
    }
    ~WithRawCallbackMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* ListHeaders(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodRawCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetHeaderByHash(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetHeaderByHash(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetBlocks() {
      ::grpc::Service::MarkMethodRawCallback(2,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetBlocks(context, request); }));
    }
    ~WithRawCallbackMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetBlocks(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodRawCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetBlockTiming(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockTiming(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetConstants() {
      ::grpc::Service::MarkMethodRawCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetConstants(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetConstants(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodRawCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetBlockSize(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockSize(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodRawCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetBlockFees(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetBlockFees(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetVersion() {
      ::grpc::Service::MarkMethodRawCallback(7,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetVersion(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetVersion(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodRawCallback(8,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->CheckForUpdates(context, request, response); }));
    }
    ~WithRawCallbackMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* CheckForUpdates(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodRawCallback(9,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetTokensInCirculation(context, request); }));
    }
    ~WithRawCallbackMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetTokensInCirculation(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodRawCallback(10,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetNetworkDifficulty(context, request); }));
    }
    ~WithRawCallbackMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetNetworkDifficulty(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodRawCallback(11,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNewBlockTemplate(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockTemplate(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodRawCallback(12,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNewBlock(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlock(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodRawCallback(13,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNewBlockWithCoinbases(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockWithCoinbases(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodRawCallback(14,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNewBlockTemplateWithCoinbases(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockTemplateWithCoinbases(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodRawCallback(15,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNewBlockBlob(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNewBlockBlob(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodRawCallback(16,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SubmitBlock(context, request, response); }));
    }
    ~WithRawCallbackMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitBlock(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodRawCallback(17,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SubmitBlockBlob(context, request, response); }));
    }
    ~WithRawCallbackMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitBlockBlob(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodRawCallback(18,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SubmitTransaction(context, request, response); }));
    }
    ~WithRawCallbackMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SubmitTransaction(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodRawCallback(19,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetSyncInfo(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSyncInfo(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodRawCallback(20,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetSyncProgress(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetSyncProgress(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodRawCallback(21,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetTipInfo(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetTipInfo(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SearchKernels() {
      ::grpc::Service::MarkMethodRawCallback(22,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->SearchKernels(context, request); }));
    }
    ~WithRawCallbackMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* SearchKernels(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodRawCallback(23,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->SearchUtxos(context, request); }));
    }
    ~WithRawCallbackMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* SearchUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodRawCallback(24,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->FetchMatchingUtxos(context, request); }));
    }
    ~WithRawCallbackMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* FetchMatchingUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetPeers() {
      ::grpc::Service::MarkMethodRawCallback(25,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetPeers(context, request); }));
    }
    ~WithRawCallbackMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetPeers(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodRawCallback(26,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetMempoolTransactions(context, request); }));
    }
    ~WithRawCallbackMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetMempoolTransactions(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_TransactionState() {
      ::grpc::Service::MarkMethodRawCallback(27,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->TransactionState(context, request, response); }));
    }
    ~WithRawCallbackMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* TransactionState(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_Identify() {
      ::grpc::Service::MarkMethodRawCallback(28,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->Identify(context, request, response); }));
    }
    ~WithRawCallbackMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Identify(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodRawCallback(29,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetNetworkStatus(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetNetworkStatus(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodRawCallback(30,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->ListConnectedPeers(context, request, response); }));
    }
    ~WithRawCallbackMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ListConnectedPeers(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodRawCallback(31,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetMempoolStats(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetMempoolStats(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodRawCallback(32,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetActiveValidatorNodes(context, request); }));
    }
    ~WithRawCallbackMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetActiveValidatorNodes(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetShardKey() {
      ::grpc::Service::MarkMethodRawCallback(33,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetShardKey(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetShardKey(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodRawCallback(34,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetTemplateRegistrations(context, request); }));
    }
    ~WithRawCallbackMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetTemplateRegistrations(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodRawCallback(35,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetSideChainUtxos(context, request); }));
    }
    ~WithRawCallbackMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetSideChainUtxos(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetHeaderByHash : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetHeaderByHash() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::GetHeaderByHashRequest, ::tari::rpc::BlockHeaderResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::GetHeaderByHashRequest, ::tari::rpc::BlockHeaderResponse>* streamer) {
                       return this->StreamedGetHeaderByHash(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetHeaderByHash() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetHeaderByHash(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetHeaderByHashRequest* /*request*/, ::tari::rpc::BlockHeaderResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetHeaderByHash(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::GetHeaderByHashRequest,::tari::rpc::BlockHeaderResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetBlockTiming : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetBlockTiming() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::HeightRequest, ::tari::rpc::BlockTimingResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::HeightRequest, ::tari::rpc::BlockTimingResponse>* streamer) {
                       return this->StreamedGetBlockTiming(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetBlockTiming() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetBlockTiming(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::tari::rpc::BlockTimingResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetBlockTiming(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::HeightRequest,::tari::rpc::BlockTimingResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetConstants : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetConstants() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::BlockHeight, ::tari::rpc::ConsensusConstants>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::BlockHeight, ::tari::rpc::ConsensusConstants>* streamer) {
                       return this->StreamedGetConstants(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetConstants() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetConstants(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockHeight* /*request*/, ::tari::rpc::ConsensusConstants* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetConstants(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::BlockHeight,::tari::rpc::ConsensusConstants>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetBlockSize : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetBlockSize() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>* streamer) {
                       return this->StreamedGetBlockSize(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetBlockSize() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetBlockSize(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetBlockSize(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::BlockGroupRequest,::tari::rpc::BlockGroupResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetBlockFees : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetBlockFees() {
      ::grpc::Service::MarkMethodStreamed(6,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::BlockGroupRequest, ::tari::rpc::BlockGroupResponse>* streamer) {
                       return this->StreamedGetBlockFees(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetBlockFees() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetBlockFees(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockGroupRequest* /*request*/, ::tari::rpc::BlockGroupResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetBlockFees(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::BlockGroupRequest,::tari::rpc::BlockGroupResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetVersion() {
      ::grpc::Service::MarkMethodStreamed(7,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::StringValue>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::StringValue>* streamer) {
                       return this->StreamedGetVersion(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetVersion(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::StringValue* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetVersion(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::StringValue>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_CheckForUpdates : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_CheckForUpdates() {
      ::grpc::Service::MarkMethodStreamed(8,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::SoftwareUpdate>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::SoftwareUpdate>* streamer) {
                       return this->StreamedCheckForUpdates(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_CheckForUpdates() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status CheckForUpdates(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SoftwareUpdate* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedCheckForUpdates(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::SoftwareUpdate>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNewBlockTemplate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNewBlockTemplate() {
      ::grpc::Service::MarkMethodStreamed(11,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::NewBlockTemplateRequest, ::tari::rpc::NewBlockTemplateResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::NewBlockTemplateRequest, ::tari::rpc::NewBlockTemplateResponse>* streamer) {
                       return this->StreamedGetNewBlockTemplate(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNewBlockTemplate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNewBlockTemplate(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplateRequest* /*request*/, ::tari::rpc::NewBlockTemplateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNewBlockTemplate(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::NewBlockTemplateRequest,::tari::rpc::NewBlockTemplateResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNewBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNewBlock() {
      ::grpc::Service::MarkMethodStreamed(12,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockResult>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockResult>* streamer) {
                       return this->StreamedGetNewBlock(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNewBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNewBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNewBlock(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::NewBlockTemplate,::tari::rpc::GetNewBlockResult>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNewBlockWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNewBlockWithCoinbases() {
      ::grpc::Service::MarkMethodStreamed(13,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::GetNewBlockWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::GetNewBlockWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>* streamer) {
                       return this->StreamedGetNewBlockWithCoinbases(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNewBlockWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNewBlockWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNewBlockWithCoinbases(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::GetNewBlockWithCoinbasesRequest,::tari::rpc::GetNewBlockResult>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNewBlockTemplateWithCoinbases : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNewBlockTemplateWithCoinbases() {
      ::grpc::Service::MarkMethodStreamed(14,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest, ::tari::rpc::GetNewBlockResult>* streamer) {
                       return this->StreamedGetNewBlockTemplateWithCoinbases(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNewBlockTemplateWithCoinbases() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNewBlockTemplateWithCoinbases(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest* /*request*/, ::tari::rpc::GetNewBlockResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNewBlockTemplateWithCoinbases(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::GetNewBlockTemplateWithCoinbasesRequest,::tari::rpc::GetNewBlockResult>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNewBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNewBlockBlob() {
      ::grpc::Service::MarkMethodStreamed(15,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockBlobResult>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::NewBlockTemplate, ::tari::rpc::GetNewBlockBlobResult>* streamer) {
                       return this->StreamedGetNewBlockBlob(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNewBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNewBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::NewBlockTemplate* /*request*/, ::tari::rpc::GetNewBlockBlobResult* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNewBlockBlob(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::NewBlockTemplate,::tari::rpc::GetNewBlockBlobResult>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SubmitBlock : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_SubmitBlock() {
      ::grpc::Service::MarkMethodStreamed(16,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Block, ::tari::rpc::SubmitBlockResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Block, ::tari::rpc::SubmitBlockResponse>* streamer) {
                       return this->StreamedSubmitBlock(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_SubmitBlock() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SubmitBlock(::grpc::ServerContext* /*context*/, const ::tari::rpc::Block* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSubmitBlock(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Block,::tari::rpc::SubmitBlockResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SubmitBlockBlob : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_SubmitBlockBlob() {
      ::grpc::Service::MarkMethodStreamed(17,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::BlockBlobRequest, ::tari::rpc::SubmitBlockResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::BlockBlobRequest, ::tari::rpc::SubmitBlockResponse>* streamer) {
                       return this->StreamedSubmitBlockBlob(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_SubmitBlockBlob() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SubmitBlockBlob(::grpc::ServerContext* /*context*/, const ::tari::rpc::BlockBlobRequest* /*request*/, ::tari::rpc::SubmitBlockResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSubmitBlockBlob(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::BlockBlobRequest,::tari::rpc::SubmitBlockResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SubmitTransaction : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_SubmitTransaction() {
      ::grpc::Service::MarkMethodStreamed(18,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::SubmitTransactionRequest, ::tari::rpc::SubmitTransactionResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::SubmitTransactionRequest, ::tari::rpc::SubmitTransactionResponse>* streamer) {
                       return this->StreamedSubmitTransaction(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_SubmitTransaction() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SubmitTransaction(::grpc::ServerContext* /*context*/, const ::tari::rpc::SubmitTransactionRequest* /*request*/, ::tari::rpc::SubmitTransactionResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSubmitTransaction(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::SubmitTransactionRequest,::tari::rpc::SubmitTransactionResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetSyncInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetSyncInfo() {
      ::grpc::Service::MarkMethodStreamed(19,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::SyncInfoResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::SyncInfoResponse>* streamer) {
                       return this->StreamedGetSyncInfo(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetSyncInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSyncInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetSyncInfo(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::SyncInfoResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetSyncProgress : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetSyncProgress() {
      ::grpc::Service::MarkMethodStreamed(20,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::SyncProgressResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::SyncProgressResponse>* streamer) {
                       return this->StreamedGetSyncProgress(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetSyncProgress() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSyncProgress(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::SyncProgressResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetSyncProgress(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::SyncProgressResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetTipInfo : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetTipInfo() {
      ::grpc::Service::MarkMethodStreamed(21,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::TipInfoResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::TipInfoResponse>* streamer) {
                       return this->StreamedGetTipInfo(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetTipInfo() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTipInfo(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::TipInfoResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetTipInfo(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::TipInfoResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_TransactionState : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_TransactionState() {
      ::grpc::Service::MarkMethodStreamed(27,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::TransactionStateRequest, ::tari::rpc::TransactionStateResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::TransactionStateRequest, ::tari::rpc::TransactionStateResponse>* streamer) {
                       return this->StreamedTransactionState(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_TransactionState() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status TransactionState(::grpc::ServerContext* /*context*/, const ::tari::rpc::TransactionStateRequest* /*request*/, ::tari::rpc::TransactionStateResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedTransactionState(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::TransactionStateRequest,::tari::rpc::TransactionStateResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Identify : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_Identify() {
      ::grpc::Service::MarkMethodStreamed(28,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::NodeIdentity>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::NodeIdentity>* streamer) {
                       return this->StreamedIdentify(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_Identify() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Identify(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NodeIdentity* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedIdentify(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::NodeIdentity>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetNetworkStatus : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetNetworkStatus() {
      ::grpc::Service::MarkMethodStreamed(29,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::NetworkStatusResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::NetworkStatusResponse>* streamer) {
                       return this->StreamedGetNetworkStatus(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetNetworkStatus() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNetworkStatus(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::NetworkStatusResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetNetworkStatus(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::NetworkStatusResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ListConnectedPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ListConnectedPeers() {
      ::grpc::Service::MarkMethodStreamed(30,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::ListConnectedPeersResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::ListConnectedPeersResponse>* streamer) {
                       return this->StreamedListConnectedPeers(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ListConnectedPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListConnectedPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::ListConnectedPeersResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedListConnectedPeers(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::ListConnectedPeersResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetMempoolStats : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetMempoolStats() {
      ::grpc::Service::MarkMethodStreamed(31,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::Empty, ::tari::rpc::MempoolStatsResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::Empty, ::tari::rpc::MempoolStatsResponse>* streamer) {
                       return this->StreamedGetMempoolStats(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetMempoolStats() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetMempoolStats(::grpc::ServerContext* /*context*/, const ::tari::rpc::Empty* /*request*/, ::tari::rpc::MempoolStatsResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetMempoolStats(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::Empty,::tari::rpc::MempoolStatsResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetShardKey : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetShardKey() {
      ::grpc::Service::MarkMethodStreamed(33,
        new ::grpc::internal::StreamedUnaryHandler<
          ::tari::rpc::GetShardKeyRequest, ::tari::rpc::GetShardKeyResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::tari::rpc::GetShardKeyRequest, ::tari::rpc::GetShardKeyResponse>* streamer) {
                       return this->StreamedGetShardKey(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetShardKey() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetShardKey(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetShardKeyRequest* /*request*/, ::tari::rpc::GetShardKeyResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetShardKey(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::tari::rpc::GetShardKeyRequest,::tari::rpc::GetShardKeyResponse>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_GetHeaderByHash<WithStreamedUnaryMethod_GetBlockTiming<WithStreamedUnaryMethod_GetConstants<WithStreamedUnaryMethod_GetBlockSize<WithStreamedUnaryMethod_GetBlockFees<WithStreamedUnaryMethod_GetVersion<WithStreamedUnaryMethod_CheckForUpdates<WithStreamedUnaryMethod_GetNewBlockTemplate<WithStreamedUnaryMethod_GetNewBlock<WithStreamedUnaryMethod_GetNewBlockWithCoinbases<WithStreamedUnaryMethod_GetNewBlockTemplateWithCoinbases<WithStreamedUnaryMethod_GetNewBlockBlob<WithStreamedUnaryMethod_SubmitBlock<WithStreamedUnaryMethod_SubmitBlockBlob<WithStreamedUnaryMethod_SubmitTransaction<WithStreamedUnaryMethod_GetSyncInfo<WithStreamedUnaryMethod_GetSyncProgress<WithStreamedUnaryMethod_GetTipInfo<WithStreamedUnaryMethod_TransactionState<WithStreamedUnaryMethod_Identify<WithStreamedUnaryMethod_GetNetworkStatus<WithStreamedUnaryMethod_ListConnectedPeers<WithStreamedUnaryMethod_GetMempoolStats<WithStreamedUnaryMethod_GetShardKey<Service > > > > > > > > > > > > > > > > > > > > > > > > StreamedUnaryService;
  template <class BaseClass>
  class WithSplitStreamingMethod_ListHeaders : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_ListHeaders() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::ListHeadersRequest, ::tari::rpc::BlockHeaderResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::ListHeadersRequest, ::tari::rpc::BlockHeaderResponse>* streamer) {
                       return this->StreamedListHeaders(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_ListHeaders() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ListHeaders(::grpc::ServerContext* /*context*/, const ::tari::rpc::ListHeadersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::BlockHeaderResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedListHeaders(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::ListHeadersRequest,::tari::rpc::BlockHeaderResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetBlocks : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetBlocks() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetBlocksRequest, ::tari::rpc::HistoricalBlock>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetBlocksRequest, ::tari::rpc::HistoricalBlock>* streamer) {
                       return this->StreamedGetBlocks(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetBlocks() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetBlocks(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetBlocks(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetBlocksRequest,::tari::rpc::HistoricalBlock>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetTokensInCirculation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetTokensInCirculation() {
      ::grpc::Service::MarkMethodStreamed(9,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetBlocksRequest, ::tari::rpc::ValueAtHeightResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetBlocksRequest, ::tari::rpc::ValueAtHeightResponse>* streamer) {
                       return this->StreamedGetTokensInCirculation(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetTokensInCirculation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTokensInCirculation(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetBlocksRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::ValueAtHeightResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetTokensInCirculation(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetBlocksRequest,::tari::rpc::ValueAtHeightResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetNetworkDifficulty : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetNetworkDifficulty() {
      ::grpc::Service::MarkMethodStreamed(10,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::HeightRequest, ::tari::rpc::NetworkDifficultyResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::HeightRequest, ::tari::rpc::NetworkDifficultyResponse>* streamer) {
                       return this->StreamedGetNetworkDifficulty(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetNetworkDifficulty() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNetworkDifficulty(::grpc::ServerContext* /*context*/, const ::tari::rpc::HeightRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::NetworkDifficultyResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetNetworkDifficulty(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::HeightRequest,::tari::rpc::NetworkDifficultyResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_SearchKernels : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_SearchKernels() {
      ::grpc::Service::MarkMethodStreamed(22,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::SearchKernelsRequest, ::tari::rpc::HistoricalBlock>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::SearchKernelsRequest, ::tari::rpc::HistoricalBlock>* streamer) {
                       return this->StreamedSearchKernels(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_SearchKernels() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SearchKernels(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchKernelsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedSearchKernels(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::SearchKernelsRequest,::tari::rpc::HistoricalBlock>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_SearchUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_SearchUtxos() {
      ::grpc::Service::MarkMethodStreamed(23,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::SearchUtxosRequest, ::tari::rpc::HistoricalBlock>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::SearchUtxosRequest, ::tari::rpc::HistoricalBlock>* streamer) {
                       return this->StreamedSearchUtxos(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_SearchUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SearchUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::SearchUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::HistoricalBlock>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedSearchUtxos(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::SearchUtxosRequest,::tari::rpc::HistoricalBlock>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_FetchMatchingUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_FetchMatchingUtxos() {
      ::grpc::Service::MarkMethodStreamed(24,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::FetchMatchingUtxosRequest, ::tari::rpc::FetchMatchingUtxosResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::FetchMatchingUtxosRequest, ::tari::rpc::FetchMatchingUtxosResponse>* streamer) {
                       return this->StreamedFetchMatchingUtxos(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_FetchMatchingUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status FetchMatchingUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::FetchMatchingUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::FetchMatchingUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedFetchMatchingUtxos(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::FetchMatchingUtxosRequest,::tari::rpc::FetchMatchingUtxosResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetPeers : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetPeers() {
      ::grpc::Service::MarkMethodStreamed(25,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetPeersRequest, ::tari::rpc::GetPeersResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetPeersRequest, ::tari::rpc::GetPeersResponse>* streamer) {
                       return this->StreamedGetPeers(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetPeers() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetPeers(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetPeersRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetPeersResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetPeers(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetPeersRequest,::tari::rpc::GetPeersResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetMempoolTransactions : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetMempoolTransactions() {
      ::grpc::Service::MarkMethodStreamed(26,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetMempoolTransactionsRequest, ::tari::rpc::GetMempoolTransactionsResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetMempoolTransactionsRequest, ::tari::rpc::GetMempoolTransactionsResponse>* streamer) {
                       return this->StreamedGetMempoolTransactions(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetMempoolTransactions() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetMempoolTransactions(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetMempoolTransactionsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetMempoolTransactionsResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetMempoolTransactions(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetMempoolTransactionsRequest,::tari::rpc::GetMempoolTransactionsResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetActiveValidatorNodes : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetActiveValidatorNodes() {
      ::grpc::Service::MarkMethodStreamed(32,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetActiveValidatorNodesRequest, ::tari::rpc::GetActiveValidatorNodesResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetActiveValidatorNodesRequest, ::tari::rpc::GetActiveValidatorNodesResponse>* streamer) {
                       return this->StreamedGetActiveValidatorNodes(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetActiveValidatorNodes() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetActiveValidatorNodes(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetActiveValidatorNodesRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetActiveValidatorNodesResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetActiveValidatorNodes(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetActiveValidatorNodesRequest,::tari::rpc::GetActiveValidatorNodesResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetTemplateRegistrations : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetTemplateRegistrations() {
      ::grpc::Service::MarkMethodStreamed(34,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetTemplateRegistrationsRequest, ::tari::rpc::GetTemplateRegistrationResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetTemplateRegistrationsRequest, ::tari::rpc::GetTemplateRegistrationResponse>* streamer) {
                       return this->StreamedGetTemplateRegistrations(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetTemplateRegistrations() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTemplateRegistrations(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetTemplateRegistrationsRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetTemplateRegistrationResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetTemplateRegistrations(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetTemplateRegistrationsRequest,::tari::rpc::GetTemplateRegistrationResponse>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetSideChainUtxos : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetSideChainUtxos() {
      ::grpc::Service::MarkMethodStreamed(35,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::tari::rpc::GetSideChainUtxosRequest, ::tari::rpc::GetSideChainUtxosResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::tari::rpc::GetSideChainUtxosRequest, ::tari::rpc::GetSideChainUtxosResponse>* streamer) {
                       return this->StreamedGetSideChainUtxos(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetSideChainUtxos() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSideChainUtxos(::grpc::ServerContext* /*context*/, const ::tari::rpc::GetSideChainUtxosRequest* /*request*/, ::grpc::ServerWriter< ::tari::rpc::GetSideChainUtxosResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetSideChainUtxos(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::tari::rpc::GetSideChainUtxosRequest,::tari::rpc::GetSideChainUtxosResponse>* server_split_streamer) = 0;
  };
  typedef WithSplitStreamingMethod_ListHeaders<WithSplitStreamingMethod_GetBlocks<WithSplitStreamingMethod_GetTokensInCirculation<WithSplitStreamingMethod_GetNetworkDifficulty<WithSplitStreamingMethod_SearchKernels<WithSplitStreamingMethod_SearchUtxos<WithSplitStreamingMethod_FetchMatchingUtxos<WithSplitStreamingMethod_GetPeers<WithSplitStreamingMethod_GetMempoolTransactions<WithSplitStreamingMethod_GetActiveValidatorNodes<WithSplitStreamingMethod_GetTemplateRegistrations<WithSplitStreamingMethod_GetSideChainUtxos<Service > > > > > > > > > > > > SplitStreamedService;
  typedef WithSplitStreamingMethod_ListHeaders<WithStreamedUnaryMethod_GetHeaderByHash<WithSplitStreamingMethod_GetBlocks<WithStreamedUnaryMethod_GetBlockTiming<WithStreamedUnaryMethod_GetConstants<WithStreamedUnaryMethod_GetBlockSize<WithStreamedUnaryMethod_GetBlockFees<WithStreamedUnaryMethod_GetVersion<WithStreamedUnaryMethod_CheckForUpdates<WithSplitStreamingMethod_GetTokensInCirculation<WithSplitStreamingMethod_GetNetworkDifficulty<WithStreamedUnaryMethod_GetNewBlockTemplate<WithStreamedUnaryMethod_GetNewBlock<WithStreamedUnaryMethod_GetNewBlockWithCoinbases<WithStreamedUnaryMethod_GetNewBlockTemplateWithCoinbases<WithStreamedUnaryMethod_GetNewBlockBlob<WithStreamedUnaryMethod_SubmitBlock<WithStreamedUnaryMethod_SubmitBlockBlob<WithStreamedUnaryMethod_SubmitTransaction<WithStreamedUnaryMethod_GetSyncInfo<WithStreamedUnaryMethod_GetSyncProgress<WithStreamedUnaryMethod_GetTipInfo<WithSplitStreamingMethod_SearchKernels<WithSplitStreamingMethod_SearchUtxos<WithSplitStreamingMethod_FetchMatchingUtxos<WithSplitStreamingMethod_GetPeers<WithSplitStreamingMethod_GetMempoolTransactions<WithStreamedUnaryMethod_TransactionState<WithStreamedUnaryMethod_Identify<WithStreamedUnaryMethod_GetNetworkStatus<WithStreamedUnaryMethod_ListConnectedPeers<WithStreamedUnaryMethod_GetMempoolStats<WithSplitStreamingMethod_GetActiveValidatorNodes<WithStreamedUnaryMethod_GetShardKey<WithSplitStreamingMethod_GetTemplateRegistrations<WithSplitStreamingMethod_GetSideChainUtxos<Service > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > StreamedService;
};

}  // namespace rpc
}  // namespace tari


#endif  // GRPC_base_5fnode_2eproto__INCLUDED
