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

#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>

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__
}  // namespace internal
}  // namespace fidl
