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

// fidl_experiment = output_index_json

#pragma once

#include <test/bottom/cpp/fidl.h>
#include <test/middle/cpp/fidl.h>
#include <test/transitivedependenciescompose/cpp/fidl.h>
namespace test {
namespace transitivedependenciescompose {
namespace testing {

class Top_TestBase : public ::test::transitivedependenciescompose::Top {
 public:
  virtual ~Top_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void GetFoo(GetFooCallback callback) override {
    NotImplemented_("GetFoo");
  }
};
}  // namespace testing
}  // namespace transitivedependenciescompose
}  // namespace test
