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

#pragma once

#include <fidl/test/foreigntypeinresponseusedthroughcompose/llcpp/fidl.h>
namespace fidl_test_foreigntypeinresponseusedthroughcompose {
namespace testing {

class Top_TestBase
    : public ::fidl::WireInterface<
          ::fidl_test_foreigntypeinresponseusedthroughcompose::Top> {
 public:
  virtual ~Top_TestBase() {}
  virtual void NotImplemented_(const std::string& name,
                               ::fidl::CompleterBase& completer) = 0;

  using Interface = ::fidl::WireInterface<
      ::fidl_test_foreigntypeinresponseusedthroughcompose::Top>;
  virtual void GetFoo(
      ::fidl::WireInterface<
          ::fidl_test_foreigntypeinresponseusedthroughcompose::Top>::
          GetFooCompleter::Sync& completer) override {
    NotImplemented_("GetFoo", completer);
  }
};
}  // namespace testing
}  // namespace fidl_test_foreigntypeinresponseusedthroughcompose
