// WARNING: This file is machine generated by fidlgen.

#pragma once

#include <test/service/cpp/fidl.h>
namespace test {
namespace service {
namespace testing {
class SecondProtocol_TestBase : public ::test::service::SecondProtocol {
 public:
  virtual ~SecondProtocol_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void MethodOnSecond() override {
    NotImplemented_("MethodOnSecond");
  }
};

class FirstProtocol_TestBase : public ::test::service::FirstProtocol {
 public:
  virtual ~FirstProtocol_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void MethodOnFirst() override {
    NotImplemented_("MethodOnFirst");
  }
};
}  // namespace testing
}  // namespace service
}  // namespace test
