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

#pragma once

#include <fidl/test/placementofattributes/llcpp/fidl.h>
namespace fidl_test_placementofattributes {
namespace testing {

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

  using Interface =
      ::fidl::WireInterface<::fidl_test_placementofattributes::ExampleProtocol>;
  virtual void Method(::exampleusing::wire::Empty arg,
                      ::fidl::WireInterface<
                          ::fidl_test_placementofattributes::ExampleProtocol>::
                          MethodCompleter::Sync& completer) override {
    NotImplemented_("Method", completer);
  }
};
}  // namespace testing
}  // namespace fidl_test_placementofattributes
