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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.vectors/cpp/markers.h>
#include <fidl/test.vectors/cpp/natural_types.h>
#include <fidl/test.vectors/cpp/wire_types.h>
#ifdef __Fuchsia__
#include <fidl/test.vectors/cpp/natural_messaging.h>
#include <fidl/test.vectors/cpp/wire_messaging.h>

#endif  // __Fuchsia__
#include <lib/fidl/cpp/wire_natural_conversions.h>

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

namespace fidl {
namespace internal {

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

template <>
struct NaturalTypeForWireType<::test_vectors::wire::ExampleUseOfVectors> {
  using type = ::test_vectors::ExampleUseOfVectors;
};
template <>
struct WireTypeForNaturalType<::test_vectors::ExampleUseOfVectors> {
  using type = ::test_vectors::wire::ExampleUseOfVectors;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
#pragma clang diagnostic pop

}  // namespace internal
}  // namespace fidl
