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

#pragma once

#include <fidl/test.importedconstvalues/cpp/markers.h>
#include <fidl/test.importedconstvalues/cpp/natural_types.h>
#include <fidl/test.importedconstvalues/cpp/wire_types.h>
#ifdef __Fuchsia__
#include <fidl/test.importedconstvalues/cpp/natural_messaging.h>
#include <fidl/test.importedconstvalues/cpp/wire_messaging.h>
#endif  // __Fuchsia__
#include <fidl/test.dependent/cpp/type_conversions.h>
#include <lib/fidl/cpp/wire_natural_conversions.h>
namespace fidl {
namespace internal {

template <>
struct WireNaturalConversionTraits<::test_importedconstvalues::wire::MyStruct,
                                   ::test_importedconstvalues::MyStruct> {
  static ::test_importedconstvalues::MyStruct ToNatural(
      ::test_importedconstvalues::wire::MyStruct src);
  static ::test_importedconstvalues::wire::MyStruct ToWire(
      fidl::AnyArena& arena, ::test_importedconstvalues::MyStruct src);
};

template <>
struct NaturalTypeForWireType<::test_importedconstvalues::wire::MyStruct> {
  using type = ::test_importedconstvalues::MyStruct;
};
template <>
struct WireTypeForNaturalType<::test_importedconstvalues::MyStruct> {
  using type = ::test_importedconstvalues::wire::MyStruct;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
}  // namespace internal
}  // namespace fidl
