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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.protocollayouts/cpp/wire.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

namespace fidl {
namespace testing {

template <>
class WireTestBase<::test_protocollayouts::MainProtocol> : public ::fidl::WireServer<::test_protocollayouts::MainProtocol> {
 public:
  virtual ~WireTestBase<::test_protocollayouts::MainProtocol>() = default;
  virtual void NotImplemented_(const std::string& name, ::fidl::CompleterBase& completer) = 0;
  virtual void OneWayAnonComposed(
      ::test_protocollayouts_imported::wire::ComposedProtocolOneWayAnonComposedRequest* request,
      OneWayAnonComposedCompleter::Sync& completer) override {
    NotImplemented_("OneWayAnonComposed", completer);
  }
  virtual void TwoWayAnonComposed(
      ::test_protocollayouts_imported::wire::ComposedProtocolTwoWayAnonComposedRequest* request,
      TwoWayAnonComposedCompleter::Sync& completer) override {
    NotImplemented_("TwoWayAnonComposed", completer);
  }
  virtual void TwoWayAnonComposedWithError(
      ::test_protocollayouts_imported::wire::ComposedProtocolTwoWayAnonComposedWithErrorRequest* request,
      TwoWayAnonComposedWithErrorCompleter::Sync& completer) override {
    NotImplemented_("TwoWayAnonComposedWithError", completer);
  }
  virtual void OneWayNamedComposed(
      ::test_protocollayouts_imported::wire::ImportTablePayload* request,
      OneWayNamedComposedCompleter::Sync& completer) override {
    NotImplemented_("OneWayNamedComposed", completer);
  }
  virtual void TwoWayNamedComposed(
      ::test_protocollayouts_imported::wire::ImportUnionPayload* request,
      TwoWayNamedComposedCompleter::Sync& completer) override {
    NotImplemented_("TwoWayNamedComposed", completer);
  }
  virtual void TwoWayNamedComposedWithError(
      ::test_protocollayouts_imported::wire::ImportTablePayload* request,
      TwoWayNamedComposedWithErrorCompleter::Sync& completer) override {
    NotImplemented_("TwoWayNamedComposedWithError", completer);
  }
  virtual void OneWayImport(
      ::test_protocollayouts_imported::wire::ImportTablePayload* request,
      OneWayImportCompleter::Sync& completer) override {
    NotImplemented_("OneWayImport", completer);
  }
  virtual void TwoWayImport(
      ::test_protocollayouts_imported::wire::ImportUnionPayload* request,
      TwoWayImportCompleter::Sync& completer) override {
    NotImplemented_("TwoWayImport", completer);
  }
  virtual void TwoWayImportWithError(
      ::test_protocollayouts_imported::wire::ImportTablePayload* request,
      TwoWayImportWithErrorCompleter::Sync& completer) override {
    NotImplemented_("TwoWayImportWithError", completer);
  }
  virtual void OneWayLocal(
      ::test_protocollayouts::wire::LocalTablePayload* request,
      OneWayLocalCompleter::Sync& completer) override {
    NotImplemented_("OneWayLocal", completer);
  }
  virtual void TwoWayLocal(
      ::test_protocollayouts::wire::LocalUnionPayload* request,
      TwoWayLocalCompleter::Sync& completer) override {
    NotImplemented_("TwoWayLocal", completer);
  }
  virtual void TwoWayLocalWithError(
      ::test_protocollayouts::wire::LocalTablePayload* request,
      TwoWayLocalWithErrorCompleter::Sync& completer) override {
    NotImplemented_("TwoWayLocalWithError", completer);
  }
  virtual void OneWayAnon(
      ::test_protocollayouts::wire::MainProtocolOneWayAnonRequest* request,
      OneWayAnonCompleter::Sync& completer) override {
    NotImplemented_("OneWayAnon", completer);
  }
  virtual void TwoWayAnon(
      ::test_protocollayouts::wire::MainProtocolTwoWayAnonRequest* request,
      TwoWayAnonCompleter::Sync& completer) override {
    NotImplemented_("TwoWayAnon", completer);
  }
  virtual void TwoWayAnonWithError(
      ::test_protocollayouts::wire::MainProtocolTwoWayAnonWithErrorRequest* request,
      TwoWayAnonWithErrorCompleter::Sync& completer) override {
    NotImplemented_("TwoWayAnonWithError", completer);
  }
};

template <>
class WireSyncEventHandlerTestBase<::test_protocollayouts::MainProtocol> : public ::fidl::WireSyncEventHandler<::test_protocollayouts::MainProtocol> {
 public:
  virtual ~WireSyncEventHandlerTestBase<::test_protocollayouts::MainProtocol>() = default;
  virtual void NotImplemented_(const std::string& name) = 0;
  void OnAnonComposed(::fidl::WireEvent<::test_protocollayouts::MainProtocol::OnAnonComposed>* event) override {
    NotImplemented_("OnAnonComposed");
  }
  void OnNamedComposed(::fidl::WireEvent<::test_protocollayouts::MainProtocol::OnNamedComposed>* event) override {
    NotImplemented_("OnNamedComposed");
  }
  void OnImport(::fidl::WireEvent<::test_protocollayouts::MainProtocol::OnImport>* event) override {
    NotImplemented_("OnImport");
  }
  void OnLocal(::fidl::WireEvent<::test_protocollayouts::MainProtocol::OnLocal>* event) override {
    NotImplemented_("OnLocal");
  }
  void OnAnon(::fidl::WireEvent<::test_protocollayouts::MainProtocol::OnAnon>* event) override {
    NotImplemented_("OnAnon");
  }
};

template <>
class WireTestBase<::test_protocollayouts::OpenProtocol> : public ::fidl::WireServer<::test_protocollayouts::OpenProtocol> {
 public:
  virtual ~WireTestBase<::test_protocollayouts::OpenProtocol>() = default;
  virtual void NotImplemented_(const std::string& name, ::fidl::CompleterBase& completer) = 0;
  virtual void FlexibleOneWay(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolFlexibleOneWayRequest* request,
      FlexibleOneWayCompleter::Sync& completer) override {
    NotImplemented_("FlexibleOneWay", completer);
  }
  virtual void FlexibleTwoWayNoError(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolFlexibleTwoWayNoErrorRequest* request,
      FlexibleTwoWayNoErrorCompleter::Sync& completer) override {
    NotImplemented_("FlexibleTwoWayNoError", completer);
  }
  virtual void FlexibleTwoWayWithError(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolFlexibleTwoWayWithErrorRequest* request,
      FlexibleTwoWayWithErrorCompleter::Sync& completer) override {
    NotImplemented_("FlexibleTwoWayWithError", completer);
  }
  virtual void StrictOneWay(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolStrictOneWayRequest* request,
      StrictOneWayCompleter::Sync& completer) override {
    NotImplemented_("StrictOneWay", completer);
  }
  virtual void StrictTwoWayNoError(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolStrictTwoWayNoErrorRequest* request,
      StrictTwoWayNoErrorCompleter::Sync& completer) override {
    NotImplemented_("StrictTwoWayNoError", completer);
  }
  virtual void StrictTwoWayWithError(
      ::test_protocollayouts_imported::wire::ComposedOpenProtocolStrictTwoWayWithErrorRequest* request,
      StrictTwoWayWithErrorCompleter::Sync& completer) override {
    NotImplemented_("StrictTwoWayWithError", completer);
  }
  virtual void FlexibleOneWayNamedPayload(
      ::test_protocollayouts_imported::wire::ImportStructPayload* request,
      FlexibleOneWayNamedPayloadCompleter::Sync& completer) override {
    NotImplemented_("FlexibleOneWayNamedPayload", completer);
  }
  virtual void handle_unknown_method(::fidl::UnknownMethodMetadata<::test_protocollayouts::OpenProtocol> metadata, UnknownMethodCompleter::Sync& completer) override {
    NotImplemented_("handle_unknown_method", completer);
  }
};

template <>
class WireSyncEventHandlerTestBase<::test_protocollayouts::OpenProtocol> : public ::fidl::WireSyncEventHandler<::test_protocollayouts::OpenProtocol> {
 public:
  virtual ~WireSyncEventHandlerTestBase<::test_protocollayouts::OpenProtocol>() = default;
  virtual void NotImplemented_(const std::string& name) = 0;
  void FlexibleEvent(::fidl::WireEvent<::test_protocollayouts::OpenProtocol::FlexibleEvent>* event) override {
    NotImplemented_("FlexibleEvent");
  }
  void StrictEvent(::fidl::WireEvent<::test_protocollayouts::OpenProtocol::StrictEvent>* event) override {
    NotImplemented_("StrictEvent");
  }
  virtual void handle_unknown_event(::fidl::UnknownEventMetadata<::test_protocollayouts::OpenProtocol> metadata) override {
    NotImplemented_("handle_unknown_event");
  }
};
#pragma clang diagnostic pop

}  // namespace testing
}  // namespace fidl
