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

// fidl_experiment = output_index_json

#pragma once

#include <test/service/cpp/fidl.h>
namespace test {
namespace service {
namespace testing {

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

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