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

#pragma once

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

template <>
class WireTestBase<::test_handles::SomeProtocol> : public ::fidl::WireServer<::test_handles::SomeProtocol> {
 public:
  virtual ~WireTestBase<::test_handles::SomeProtocol>() = default;
  virtual void NotImplemented_(const std::string& name, ::fidl::CompleterBase& completer) = 0;
};

template <>
class ::fidl::testing::WireSyncEventHandlerTestBase<::test_handles::SomeProtocol> : public ::fidl::WireSyncEventHandler<::test_handles::SomeProtocol> {
 public:
  virtual ~WireSyncEventHandlerTestBase<::test_handles::SomeProtocol>() = default;
  virtual void NotImplemented_(const std::string& name) = 0;
};
}  // namespace testing
}  // namespace fidl
