// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: lily.proto
#ifndef GRPC_lily_2eproto__INCLUDED
#define GRPC_lily_2eproto__INCLUDED

#include "lily.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 palm {
namespace lily {
namespace v1 {

// ----------------------------------------------------------------------------
//
class Excel final {
 public:
  static constexpr char const* service_full_name() {
    return "palm.lily.v1.Excel";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    virtual ::grpc::Status Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::palm::lily::v1::ExcelModel* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::ExcelModel>> AsyncParse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::ExcelModel>>(AsyncParseRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::ExcelModel>> PrepareAsyncParse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::ExcelModel>>(PrepareAsyncParseRaw(context, request, cq));
    }
    virtual ::grpc::Status Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::palm::lily::v1::S3File* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> AsyncGenerate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(AsyncGenerateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> PrepareAsyncGenerate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(PrepareAsyncGenerateRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      virtual void Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response, std::function<void(::grpc::Status)>) = 0;
      virtual void Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      virtual void Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) = 0;
      virtual void Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::ExcelModel>* AsyncParseRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::ExcelModel>* PrepareAsyncParseRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* AsyncGenerateRaw(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* PrepareAsyncGenerateRaw(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& 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 Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::palm::lily::v1::ExcelModel* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::ExcelModel>> AsyncParse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::ExcelModel>>(AsyncParseRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::ExcelModel>> PrepareAsyncParse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::ExcelModel>>(PrepareAsyncParseRaw(context, request, cq));
    }
    ::grpc::Status Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::palm::lily::v1::S3File* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> AsyncGenerate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(AsyncGenerateRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> PrepareAsyncGenerate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(PrepareAsyncGenerateRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response, std::function<void(::grpc::Status)>) override;
      void Parse(::grpc::ClientContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response, ::grpc::ClientUnaryReactor* reactor) override;
      void Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) override;
      void Generate(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::ExcelModel>* AsyncParseRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::ExcelModel>* PrepareAsyncParseRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3File& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* AsyncGenerateRaw(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* PrepareAsyncGenerateRaw(::grpc::ClientContext* context, const ::palm::lily::v1::ExcelModel& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_Parse_;
    const ::grpc::internal::RpcMethod rpcmethod_Generate_;
  };
  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();
    virtual ::grpc::Status Parse(::grpc::ServerContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response);
    virtual ::grpc::Status Generate(::grpc::ServerContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_Parse() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestParse(::grpc::ServerContext* context, ::palm::lily::v1::S3File* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::ExcelModel>* 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_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_Generate() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGenerate(::grpc::ServerContext* context, ::palm::lily::v1::ExcelModel* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::S3File>* 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);
    }
  };
  typedef WithAsyncMethod_Parse<WithAsyncMethod_Generate<Service > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_Parse() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::S3File, ::palm::lily::v1::ExcelModel>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::S3File* request, ::palm::lily::v1::ExcelModel* response) { return this->Parse(context, request, response); }));}
    void SetMessageAllocatorFor_Parse(
        ::grpc::MessageAllocator< ::palm::lily::v1::S3File, ::palm::lily::v1::ExcelModel>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::S3File, ::palm::lily::v1::ExcelModel>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Parse(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_Generate() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::ExcelModel, ::palm::lily::v1::S3File>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::ExcelModel* request, ::palm::lily::v1::S3File* response) { return this->Generate(context, request, response); }));}
    void SetMessageAllocatorFor_Generate(
        ::grpc::MessageAllocator< ::palm::lily::v1::ExcelModel, ::palm::lily::v1::S3File>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::ExcelModel, ::palm::lily::v1::S3File>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Generate(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_Parse<WithCallbackMethod_Generate<Service > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_Parse() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_Generate() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_Parse() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestParse(::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_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_Generate() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGenerate(::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 WithRawCallbackMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_Parse() {
      ::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->Parse(context, request, response); }));
    }
    ~WithRawCallbackMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Parse(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_Generate() {
      ::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->Generate(context, request, response); }));
    }
    ~WithRawCallbackMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Generate(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Parse : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_Parse() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::S3File, ::palm::lily::v1::ExcelModel>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::S3File, ::palm::lily::v1::ExcelModel>* streamer) {
                       return this->StreamedParse(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_Parse() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Parse(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3File* /*request*/, ::palm::lily::v1::ExcelModel* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedParse(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::S3File,::palm::lily::v1::ExcelModel>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Generate : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_Generate() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::ExcelModel, ::palm::lily::v1::S3File>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::ExcelModel, ::palm::lily::v1::S3File>* streamer) {
                       return this->StreamedGenerate(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_Generate() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Generate(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::ExcelModel* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGenerate(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::ExcelModel,::palm::lily::v1::S3File>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_Parse<WithStreamedUnaryMethod_Generate<Service > > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_Parse<WithStreamedUnaryMethod_Generate<Service > > StreamedService;
};

class S3 final {
 public:
  static constexpr char const* service_full_name() {
    return "palm.lily.v1.S3";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    virtual ::grpc::Status GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::palm::lily::v1::S3GetFileResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3GetFileResponse>> AsyncGetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3GetFileResponse>>(AsyncGetFileRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3GetFileResponse>> PrepareAsyncGetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3GetFileResponse>>(PrepareAsyncGetFileRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      virtual void GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* 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< ::palm::lily::v1::S3GetFileResponse>* AsyncGetFileRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3GetFileResponse>* PrepareAsyncGetFileRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& 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 GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::palm::lily::v1::S3GetFileResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3GetFileResponse>> AsyncGetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3GetFileResponse>>(AsyncGetFileRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3GetFileResponse>> PrepareAsyncGetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3GetFileResponse>>(PrepareAsyncGetFileRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* response, std::function<void(::grpc::Status)>) override;
      void GetFile(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* 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< ::palm::lily::v1::S3GetFileResponse>* AsyncGetFileRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3GetFileResponse>* PrepareAsyncGetFileRaw(::grpc::ClientContext* context, const ::palm::lily::v1::S3GetFileRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_GetFile_;
  };
  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();
    virtual ::grpc::Status GetFile(::grpc::ServerContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetFile() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetFile(::grpc::ServerContext* context, ::palm::lily::v1::S3GetFileRequest* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::S3GetFileResponse>* 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);
    }
  };
  typedef WithAsyncMethod_GetFile<Service > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetFile() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::S3GetFileRequest, ::palm::lily::v1::S3GetFileResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::S3GetFileRequest* request, ::palm::lily::v1::S3GetFileResponse* response) { return this->GetFile(context, request, response); }));}
    void SetMessageAllocatorFor_GetFile(
        ::grpc::MessageAllocator< ::palm::lily::v1::S3GetFileRequest, ::palm::lily::v1::S3GetFileResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::S3GetFileRequest, ::palm::lily::v1::S3GetFileResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetFile(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_GetFile<Service > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetFile() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetFile() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetFile(::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 WithRawCallbackMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetFile() {
      ::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->GetFile(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetFile(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetFile : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetFile() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::S3GetFileRequest, ::palm::lily::v1::S3GetFileResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::S3GetFileRequest, ::palm::lily::v1::S3GetFileResponse>* streamer) {
                       return this->StreamedGetFile(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetFile() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetFile(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::S3GetFileRequest* /*request*/, ::palm::lily::v1::S3GetFileResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetFile(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::S3GetFileRequest,::palm::lily::v1::S3GetFileResponse>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_GetFile<Service > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_GetFile<Service > StreamedService;
};

class Tex final {
 public:
  static constexpr char const* service_full_name() {
    return "palm.lily.v1.Tex";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    virtual ::grpc::Status ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::palm::lily::v1::S3File* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> AsyncToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(AsyncToPdfRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> PrepareAsyncToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(PrepareAsyncToPdfRaw(context, request, cq));
    }
    virtual ::grpc::Status ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::palm::lily::v1::S3File* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> AsyncToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(AsyncToWordRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> PrepareAsyncToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(PrepareAsyncToWordRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      virtual void ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      virtual void ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::S3File>* AsyncToPdfRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* PrepareAsyncToPdfRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* AsyncToWordRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* PrepareAsyncToWordRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& 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 ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::palm::lily::v1::S3File* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> AsyncToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(AsyncToPdfRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> PrepareAsyncToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(PrepareAsyncToPdfRaw(context, request, cq));
    }
    ::grpc::Status ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::palm::lily::v1::S3File* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> AsyncToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(AsyncToWordRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> PrepareAsyncToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(PrepareAsyncToWordRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) override;
      void ToPdf(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, ::grpc::ClientUnaryReactor* reactor) override;
      void ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) override;
      void ToWord(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::S3File>* AsyncToPdfRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* PrepareAsyncToPdfRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* AsyncToWordRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* PrepareAsyncToWordRaw(::grpc::ClientContext* context, const ::palm::lily::v1::TexToRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_ToPdf_;
    const ::grpc::internal::RpcMethod rpcmethod_ToWord_;
  };
  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();
    virtual ::grpc::Status ToPdf(::grpc::ServerContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response);
    virtual ::grpc::Status ToWord(::grpc::ServerContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ToPdf() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestToPdf(::grpc::ServerContext* context, ::palm::lily::v1::TexToRequest* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::S3File>* 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_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ToWord() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestToWord(::grpc::ServerContext* context, ::palm::lily::v1::TexToRequest* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::S3File>* 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);
    }
  };
  typedef WithAsyncMethod_ToPdf<WithAsyncMethod_ToWord<Service > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ToPdf() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response) { return this->ToPdf(context, request, response); }));}
    void SetMessageAllocatorFor_ToPdf(
        ::grpc::MessageAllocator< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ToPdf(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ToWord() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::TexToRequest* request, ::palm::lily::v1::S3File* response) { return this->ToWord(context, request, response); }));}
    void SetMessageAllocatorFor_ToWord(
        ::grpc::MessageAllocator< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ToWord(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_ToPdf<WithCallbackMethod_ToWord<Service > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ToPdf() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ToWord() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ToPdf() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestToPdf(::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_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ToWord() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestToWord(::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 WithRawCallbackMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ToPdf() {
      ::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->ToPdf(context, request, response); }));
    }
    ~WithRawCallbackMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ToPdf(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ToWord() {
      ::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->ToWord(context, request, response); }));
    }
    ~WithRawCallbackMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ToWord(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ToPdf : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ToPdf() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>* streamer) {
                       return this->StreamedToPdf(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ToPdf() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ToPdf(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedToPdf(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::TexToRequest,::palm::lily::v1::S3File>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ToWord : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ToWord() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::TexToRequest, ::palm::lily::v1::S3File>* streamer) {
                       return this->StreamedToWord(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ToWord() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ToWord(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::TexToRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedToWord(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::TexToRequest,::palm::lily::v1::S3File>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_ToPdf<WithStreamedUnaryMethod_ToWord<Service > > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_ToPdf<WithStreamedUnaryMethod_ToWord<Service > > StreamedService;
};

// ----------------------------------------------------------------------------
//
class Epub final {
 public:
  static constexpr char const* service_full_name() {
    return "palm.lily.v1.Epub";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    virtual ::grpc::Status Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::palm::lily::v1::S3File* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> AsyncBuild(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(AsyncBuildRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>> PrepareAsyncBuild(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>>(PrepareAsyncBuildRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      virtual void Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) = 0;
      virtual void Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::S3File>* AsyncBuildRaw(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::palm::lily::v1::S3File>* PrepareAsyncBuildRaw(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& 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 Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::palm::lily::v1::S3File* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> AsyncBuild(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(AsyncBuildRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>> PrepareAsyncBuild(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>>(PrepareAsyncBuildRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* response, std::function<void(::grpc::Status)>) override;
      void Build(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* 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< ::palm::lily::v1::S3File>* AsyncBuildRaw(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::palm::lily::v1::S3File>* PrepareAsyncBuildRaw(::grpc::ClientContext* context, const ::palm::lily::v1::EpubBuildRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_Build_;
  };
  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();
    virtual ::grpc::Status Build(::grpc::ServerContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_Build() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestBuild(::grpc::ServerContext* context, ::palm::lily::v1::EpubBuildRequest* request, ::grpc::ServerAsyncResponseWriter< ::palm::lily::v1::S3File>* 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);
    }
  };
  typedef WithAsyncMethod_Build<Service > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_Build() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::EpubBuildRequest, ::palm::lily::v1::S3File>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::palm::lily::v1::EpubBuildRequest* request, ::palm::lily::v1::S3File* response) { return this->Build(context, request, response); }));}
    void SetMessageAllocatorFor_Build(
        ::grpc::MessageAllocator< ::palm::lily::v1::EpubBuildRequest, ::palm::lily::v1::S3File>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::palm::lily::v1::EpubBuildRequest, ::palm::lily::v1::S3File>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Build(
      ::grpc::CallbackServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_Build<Service > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_Build() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_Build() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestBuild(::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 WithRawCallbackMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_Build() {
      ::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->Build(context, request, response); }));
    }
    ~WithRawCallbackMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Build(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Build : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_Build() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::palm::lily::v1::EpubBuildRequest, ::palm::lily::v1::S3File>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::palm::lily::v1::EpubBuildRequest, ::palm::lily::v1::S3File>* streamer) {
                       return this->StreamedBuild(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_Build() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Build(::grpc::ServerContext* /*context*/, const ::palm::lily::v1::EpubBuildRequest* /*request*/, ::palm::lily::v1::S3File* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedBuild(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::palm::lily::v1::EpubBuildRequest,::palm::lily::v1::S3File>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_Build<Service > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_Build<Service > StreamedService;
};

}  // namespace v1
}  // namespace lily
}  // namespace palm


#endif  // GRPC_lily_2eproto__INCLUDED
