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

#pragma once

#include <bottom/cpp/fidl.h>
#include <fidl/test/foreigntypeinresponseusedthroughcompose/cpp/fidl.h>
#include <middle/cpp/fidl.h>
namespace fidl {
namespace test {
namespace foreigntypeinresponseusedthroughcompose {
namespace testing {
class Top_TestBase
    : public ::fidl::test::foreigntypeinresponseusedthroughcompose::Top {
 public:
  virtual ~Top_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void GetFoo(GetFooCallback callback) override { NotImplemented_("GetFoo"); }
};
}  // namespace testing
}  // namespace foreigntypeinresponseusedthroughcompose
}  // namespace test
}  // namespace fidl
