// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: keyapis/preset/v1/keyapis_preset_preset_v1.proto
// Original file comments:
//
// Сервис реализует функционал хранения пресетов устройств
#ifndef GRPC_keyapis_2fpreset_2fv1_2fkeyapis_5fpreset_5fpreset_5fv1_2eproto__INCLUDED
#define GRPC_keyapis_2fpreset_2fv1_2fkeyapis_5fpreset_5fpreset_5fv1_2eproto__INCLUDED

#include "keyapis/preset/v1/keyapis_preset_preset_v1.pb.h"

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

namespace keyapis {
namespace preset {
namespace v1 {

// Сервис пресетов
class PresetService final {
 public:
  static constexpr char const* service_full_name() {
    return "keyapis.preset.v1.PresetService";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // Метод сохранения пресетов.
    // Поддерживает создание и обновление.
    // При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
    // Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
    // - Sip;
    // - Ntp;
    // - Syslog;
    // - Room;
    // - VideoConfig;
    // - Dtmf.
    // Метод доступен для: admin, service
    virtual ::grpc::Status PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::keyapis::preset::v1::PostPresetResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>> AsyncPostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>>(AsyncPostPresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>> PrepareAsyncPostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>>(PrepareAsyncPostPresetRaw(context, request, cq));
    }
    // Метод получения пресета по идентификатору.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::keyapis::preset::v1::GetPresetResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>> AsyncGetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>>(AsyncGetPresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>> PrepareAsyncGetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>>(PrepareAsyncGetPresetRaw(context, request, cq));
    }
    // Метод получения дефолтного пресета.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::keyapis::preset::v1::GetPresetDefaultResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>> AsyncGetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>>(AsyncGetPresetDefaultRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>> PrepareAsyncGetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>>(PrepareAsyncGetPresetDefaultRaw(context, request, cq));
    }
    // Метод получения пресетов.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    std::unique_ptr< ::grpc::ClientReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>> GetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>>(GetPresetListRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>> AsyncGetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>>(AsyncGetPresetListRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>> PrepareAsyncGetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>>(PrepareAsyncGetPresetListRaw(context, request, cq));
    }
    // Метод получения количества пресетов.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::keyapis::preset::v1::GetPresetCountResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>> AsyncGetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>>(AsyncGetPresetCountRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>> PrepareAsyncGetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>>(PrepareAsyncGetPresetCountRaw(context, request, cq));
    }
    // Метод удаления пресета.
    // Нельзя удалить пресет, если он используется на устройстве.
    // Нельзя удалить дефолтный пресет.
    // Метод доступен для: admin, service
    virtual ::grpc::Status DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::keyapis::preset::v1::DeletePresetResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>> AsyncDeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>>(AsyncDeletePresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>> PrepareAsyncDeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>>(PrepareAsyncDeletePresetRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      // Метод сохранения пресетов.
      // Поддерживает создание и обновление.
      // При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
      // Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
      // - Sip;
      // - Ntp;
      // - Syslog;
      // - Room;
      // - VideoConfig;
      // - Dtmf.
      // Метод доступен для: admin, service
      virtual void PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения пресета по идентификатору.
      // Метод доступен для: admin, service, bti, ltp_first, owner, employee
      virtual void GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения дефолтного пресета.
      // Метод доступен для: admin, service, bti, ltp_first, owner, employee
      virtual void GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения пресетов.
      // Метод доступен для: admin, service, bti, ltp_first, owner, employee
      virtual void GetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest* request, ::grpc::ClientReadReactor< ::keyapis::preset::v1::GetPresetListResponse>* reactor) = 0;
      // Метод получения количества пресетов.
      // Метод доступен для: admin, service, bti, ltp_first, owner, employee
      virtual void GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод удаления пресета.
      // Нельзя удалить пресет, если он используется на устройстве.
      // Нельзя удалить дефолтный пресет.
      // Метод доступен для: admin, service
      virtual void DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response, ::grpc::ClientUnaryReactor* 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::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>* AsyncPostPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::PostPresetResponse>* PrepareAsyncPostPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>* AsyncGetPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetResponse>* PrepareAsyncGetPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>* AsyncGetPresetDefaultRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetDefaultResponse>* PrepareAsyncGetPresetDefaultRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>* GetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>* AsyncGetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::keyapis::preset::v1::GetPresetListResponse>* PrepareAsyncGetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>* AsyncGetPresetCountRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::GetPresetCountResponse>* PrepareAsyncGetPresetCountRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>* AsyncDeletePresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::keyapis::preset::v1::DeletePresetResponse>* PrepareAsyncDeletePresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& 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());
    ::grpc::Status PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::keyapis::preset::v1::PostPresetResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>> AsyncPostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>>(AsyncPostPresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>> PrepareAsyncPostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>>(PrepareAsyncPostPresetRaw(context, request, cq));
    }
    ::grpc::Status GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::keyapis::preset::v1::GetPresetResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>> AsyncGetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>>(AsyncGetPresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>> PrepareAsyncGetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>>(PrepareAsyncGetPresetRaw(context, request, cq));
    }
    ::grpc::Status GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::keyapis::preset::v1::GetPresetDefaultResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>> AsyncGetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>>(AsyncGetPresetDefaultRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>> PrepareAsyncGetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>>(PrepareAsyncGetPresetDefaultRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::keyapis::preset::v1::GetPresetListResponse>> GetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::keyapis::preset::v1::GetPresetListResponse>>(GetPresetListRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>> AsyncGetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>>(AsyncGetPresetListRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>> PrepareAsyncGetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>>(PrepareAsyncGetPresetListRaw(context, request, cq));
    }
    ::grpc::Status GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::keyapis::preset::v1::GetPresetCountResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>> AsyncGetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>>(AsyncGetPresetCountRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>> PrepareAsyncGetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>>(PrepareAsyncGetPresetCountRaw(context, request, cq));
    }
    ::grpc::Status DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::keyapis::preset::v1::DeletePresetResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>> AsyncDeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>>(AsyncDeletePresetRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>> PrepareAsyncDeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>>(PrepareAsyncDeletePresetRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response, std::function<void(::grpc::Status)>) override;
      void PostPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response, std::function<void(::grpc::Status)>) override;
      void GetPreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response, std::function<void(::grpc::Status)>) override;
      void GetPresetDefault(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetPresetList(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest* request, ::grpc::ClientReadReactor< ::keyapis::preset::v1::GetPresetListResponse>* reactor) override;
      void GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response, std::function<void(::grpc::Status)>) override;
      void GetPresetCount(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response, std::function<void(::grpc::Status)>) override;
      void DeletePreset(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response, ::grpc::ClientUnaryReactor* 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::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>* AsyncPostPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::PostPresetResponse>* PrepareAsyncPostPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::PostPresetRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>* AsyncGetPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetResponse>* PrepareAsyncGetPresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>* AsyncGetPresetDefaultRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetDefaultResponse>* PrepareAsyncGetPresetDefaultRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::keyapis::preset::v1::GetPresetListResponse>* GetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request) override;
    ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>* AsyncGetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::keyapis::preset::v1::GetPresetListResponse>* PrepareAsyncGetPresetListRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>* AsyncGetPresetCountRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::GetPresetCountResponse>* PrepareAsyncGetPresetCountRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::GetPresetCountRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>* AsyncDeletePresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::keyapis::preset::v1::DeletePresetResponse>* PrepareAsyncDeletePresetRaw(::grpc::ClientContext* context, const ::keyapis::preset::v1::DeletePresetRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_PostPreset_;
    const ::grpc::internal::RpcMethod rpcmethod_GetPreset_;
    const ::grpc::internal::RpcMethod rpcmethod_GetPresetDefault_;
    const ::grpc::internal::RpcMethod rpcmethod_GetPresetList_;
    const ::grpc::internal::RpcMethod rpcmethod_GetPresetCount_;
    const ::grpc::internal::RpcMethod rpcmethod_DeletePreset_;
  };
  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();
    // Метод сохранения пресетов.
    // Поддерживает создание и обновление.
    // При обновлении пресета посылается задача PresetInstallTask в очередь key.preset.install.
    // Данное сообщение должно отправляться только если изменению подверглось одно из следующих полей:
    // - Sip;
    // - Ntp;
    // - Syslog;
    // - Room;
    // - VideoConfig;
    // - Dtmf.
    // Метод доступен для: admin, service
    virtual ::grpc::Status PostPreset(::grpc::ServerContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response);
    // Метод получения пресета по идентификатору.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPreset(::grpc::ServerContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response);
    // Метод получения дефолтного пресета.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPresetDefault(::grpc::ServerContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response);
    // Метод получения пресетов.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPresetList(::grpc::ServerContext* context, const ::keyapis::preset::v1::GetPresetListRequest* request, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* writer);
    // Метод получения количества пресетов.
    // Метод доступен для: admin, service, bti, ltp_first, owner, employee
    virtual ::grpc::Status GetPresetCount(::grpc::ServerContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response);
    // Метод удаления пресета.
    // Нельзя удалить пресет, если он используется на устройстве.
    // Нельзя удалить дефолтный пресет.
    // Метод доступен для: admin, service
    virtual ::grpc::Status DeletePreset(::grpc::ServerContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_PostPreset() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestPostPreset(::grpc::ServerContext* context, ::keyapis::preset::v1::PostPresetRequest* request, ::grpc::ServerAsyncResponseWriter< ::keyapis::preset::v1::PostPresetResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetPreset() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPreset(::grpc::ServerContext* context, ::keyapis::preset::v1::GetPresetRequest* request, ::grpc::ServerAsyncResponseWriter< ::keyapis::preset::v1::GetPresetResponse>* 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_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetDefault(::grpc::ServerContext* context, ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::grpc::ServerAsyncResponseWriter< ::keyapis::preset::v1::GetPresetDefaultResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetPresetList() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetList(::grpc::ServerContext* context, ::keyapis::preset::v1::GetPresetListRequest* request, ::grpc::ServerAsyncWriter< ::keyapis::preset::v1::GetPresetListResponse>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(3, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetPresetCount() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetCount(::grpc::ServerContext* context, ::keyapis::preset::v1::GetPresetCountRequest* request, ::grpc::ServerAsyncResponseWriter< ::keyapis::preset::v1::GetPresetCountResponse>* 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_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DeletePreset() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeletePreset(::grpc::ServerContext* context, ::keyapis::preset::v1::DeletePresetRequest* request, ::grpc::ServerAsyncResponseWriter< ::keyapis::preset::v1::DeletePresetResponse>* 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);
    }
  };
  typedef WithAsyncMethod_PostPreset<WithAsyncMethod_GetPreset<WithAsyncMethod_GetPresetDefault<WithAsyncMethod_GetPresetList<WithAsyncMethod_GetPresetCount<WithAsyncMethod_DeletePreset<Service > > > > > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_PostPreset() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::PostPresetRequest, ::keyapis::preset::v1::PostPresetResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::PostPresetRequest* request, ::keyapis::preset::v1::PostPresetResponse* response) { return this->PostPreset(context, request, response); }));}
    void SetMessageAllocatorFor_PostPreset(
        ::grpc::MessageAllocator< ::keyapis::preset::v1::PostPresetRequest, ::keyapis::preset::v1::PostPresetResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::PostPresetRequest, ::keyapis::preset::v1::PostPresetResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* PostPreset(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetPreset() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetRequest, ::keyapis::preset::v1::GetPresetResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::GetPresetRequest* request, ::keyapis::preset::v1::GetPresetResponse* response) { return this->GetPreset(context, request, response); }));}
    void SetMessageAllocatorFor_GetPreset(
        ::grpc::MessageAllocator< ::keyapis::preset::v1::GetPresetRequest, ::keyapis::preset::v1::GetPresetResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetRequest, ::keyapis::preset::v1::GetPresetResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPreset(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetDefaultRequest, ::keyapis::preset::v1::GetPresetDefaultResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::GetPresetDefaultRequest* request, ::keyapis::preset::v1::GetPresetDefaultResponse* response) { return this->GetPresetDefault(context, request, response); }));}
    void SetMessageAllocatorFor_GetPresetDefault(
        ::grpc::MessageAllocator< ::keyapis::preset::v1::GetPresetDefaultRequest, ::keyapis::preset::v1::GetPresetDefaultResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetDefaultRequest, ::keyapis::preset::v1::GetPresetDefaultResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPresetDefault(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetPresetList() {
      ::grpc::Service::MarkMethodCallback(3,
          new ::grpc::internal::CallbackServerStreamingHandler< ::keyapis::preset::v1::GetPresetListRequest, ::keyapis::preset::v1::GetPresetListResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::GetPresetListRequest* request) { return this->GetPresetList(context, request); }));
    }
    ~WithCallbackMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::keyapis::preset::v1::GetPresetListResponse>* GetPresetList(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetPresetCount() {
      ::grpc::Service::MarkMethodCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetCountRequest, ::keyapis::preset::v1::GetPresetCountResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::GetPresetCountRequest* request, ::keyapis::preset::v1::GetPresetCountResponse* response) { return this->GetPresetCount(context, request, response); }));}
    void SetMessageAllocatorFor_GetPresetCount(
        ::grpc::MessageAllocator< ::keyapis::preset::v1::GetPresetCountRequest, ::keyapis::preset::v1::GetPresetCountResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::GetPresetCountRequest, ::keyapis::preset::v1::GetPresetCountResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPresetCount(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DeletePreset() {
      ::grpc::Service::MarkMethodCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::DeletePresetRequest, ::keyapis::preset::v1::DeletePresetResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::keyapis::preset::v1::DeletePresetRequest* request, ::keyapis::preset::v1::DeletePresetResponse* response) { return this->DeletePreset(context, request, response); }));}
    void SetMessageAllocatorFor_DeletePreset(
        ::grpc::MessageAllocator< ::keyapis::preset::v1::DeletePresetRequest, ::keyapis::preset::v1::DeletePresetResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::keyapis::preset::v1::DeletePresetRequest, ::keyapis::preset::v1::DeletePresetResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeletePreset(
      ::grpc::CallbackServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_PostPreset<WithCallbackMethod_GetPreset<WithCallbackMethod_GetPresetDefault<WithCallbackMethod_GetPresetList<WithCallbackMethod_GetPresetCount<WithCallbackMethod_DeletePreset<Service > > > > > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_PostPreset() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetPreset() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetPresetList() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetPresetCount() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DeletePreset() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_PostPreset() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestPostPreset(::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(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetPreset() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPreset(::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_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetDefault(::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(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetPresetList() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetList(::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(3, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetPresetCount() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetPresetCount(::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_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DeletePreset() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeletePreset(::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 WithRawCallbackMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_PostPreset() {
      ::grpc::Service::MarkMethodRawCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->PostPreset(context, request, response); }));
    }
    ~WithRawCallbackMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* PostPreset(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetPreset() {
      ::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->GetPreset(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPreset(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodRawCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetPresetDefault(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPresetDefault(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetPresetList() {
      ::grpc::Service::MarkMethodRawCallback(3,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetPresetList(context, request); }));
    }
    ~WithRawCallbackMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetPresetList(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetPresetCount() {
      ::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->GetPresetCount(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetPresetCount(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DeletePreset() {
      ::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->DeletePreset(context, request, response); }));
    }
    ~WithRawCallbackMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeletePreset(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_PostPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_PostPreset() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::keyapis::preset::v1::PostPresetRequest, ::keyapis::preset::v1::PostPresetResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::keyapis::preset::v1::PostPresetRequest, ::keyapis::preset::v1::PostPresetResponse>* streamer) {
                       return this->StreamedPostPreset(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_PostPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status PostPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::PostPresetRequest* /*request*/, ::keyapis::preset::v1::PostPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedPostPreset(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::keyapis::preset::v1::PostPresetRequest,::keyapis::preset::v1::PostPresetResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetPreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetPreset() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::keyapis::preset::v1::GetPresetRequest, ::keyapis::preset::v1::GetPresetResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::keyapis::preset::v1::GetPresetRequest, ::keyapis::preset::v1::GetPresetResponse>* streamer) {
                       return this->StreamedGetPreset(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetPreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetPreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetRequest* /*request*/, ::keyapis::preset::v1::GetPresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetPreset(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::keyapis::preset::v1::GetPresetRequest,::keyapis::preset::v1::GetPresetResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetPresetDefault : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetPresetDefault() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler<
          ::keyapis::preset::v1::GetPresetDefaultRequest, ::keyapis::preset::v1::GetPresetDefaultResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::keyapis::preset::v1::GetPresetDefaultRequest, ::keyapis::preset::v1::GetPresetDefaultResponse>* streamer) {
                       return this->StreamedGetPresetDefault(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetPresetDefault() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetPresetDefault(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetDefaultRequest* /*request*/, ::keyapis::preset::v1::GetPresetDefaultResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetPresetDefault(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::keyapis::preset::v1::GetPresetDefaultRequest,::keyapis::preset::v1::GetPresetDefaultResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetPresetCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetPresetCount() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler<
          ::keyapis::preset::v1::GetPresetCountRequest, ::keyapis::preset::v1::GetPresetCountResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::keyapis::preset::v1::GetPresetCountRequest, ::keyapis::preset::v1::GetPresetCountResponse>* streamer) {
                       return this->StreamedGetPresetCount(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetPresetCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetPresetCount(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetCountRequest* /*request*/, ::keyapis::preset::v1::GetPresetCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetPresetCount(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::keyapis::preset::v1::GetPresetCountRequest,::keyapis::preset::v1::GetPresetCountResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeletePreset : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DeletePreset() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler<
          ::keyapis::preset::v1::DeletePresetRequest, ::keyapis::preset::v1::DeletePresetResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::keyapis::preset::v1::DeletePresetRequest, ::keyapis::preset::v1::DeletePresetResponse>* streamer) {
                       return this->StreamedDeletePreset(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DeletePreset() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeletePreset(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::DeletePresetRequest* /*request*/, ::keyapis::preset::v1::DeletePresetResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeletePreset(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::keyapis::preset::v1::DeletePresetRequest,::keyapis::preset::v1::DeletePresetResponse>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_PostPreset<WithStreamedUnaryMethod_GetPreset<WithStreamedUnaryMethod_GetPresetDefault<WithStreamedUnaryMethod_GetPresetCount<WithStreamedUnaryMethod_DeletePreset<Service > > > > > StreamedUnaryService;
  template <class BaseClass>
  class WithSplitStreamingMethod_GetPresetList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetPresetList() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::keyapis::preset::v1::GetPresetListRequest, ::keyapis::preset::v1::GetPresetListResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::keyapis::preset::v1::GetPresetListRequest, ::keyapis::preset::v1::GetPresetListResponse>* streamer) {
                       return this->StreamedGetPresetList(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetPresetList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetPresetList(::grpc::ServerContext* /*context*/, const ::keyapis::preset::v1::GetPresetListRequest* /*request*/, ::grpc::ServerWriter< ::keyapis::preset::v1::GetPresetListResponse>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetPresetList(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::keyapis::preset::v1::GetPresetListRequest,::keyapis::preset::v1::GetPresetListResponse>* server_split_streamer) = 0;
  };
  typedef WithSplitStreamingMethod_GetPresetList<Service > SplitStreamedService;
  typedef WithStreamedUnaryMethod_PostPreset<WithStreamedUnaryMethod_GetPreset<WithStreamedUnaryMethod_GetPresetDefault<WithSplitStreamingMethod_GetPresetList<WithStreamedUnaryMethod_GetPresetCount<WithStreamedUnaryMethod_DeletePreset<Service > > > > > > StreamedService;
};

}  // namespace v1
}  // namespace preset
}  // namespace keyapis


#endif  // GRPC_keyapis_2fpreset_2fv1_2fkeyapis_5fpreset_5fpreset_5fv1_2eproto__INCLUDED
