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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.byteandbytes/cpp/markers.h>
#include <fidl/test.byteandbytes/cpp/natural_types.h>
#include <fidl/test.byteandbytes/cpp/wire_types.h>
#ifdef __Fuchsia__
#include <fidl/test.byteandbytes/cpp/natural_messaging.h>
#include <fidl/test.byteandbytes/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_byteandbytes::wire::ByteAndBytes, ::test_byteandbytes::ByteAndBytes> {
  static ::test_byteandbytes::ByteAndBytes ToNatural(::test_byteandbytes::wire::ByteAndBytes src);
  static ::test_byteandbytes::wire::ByteAndBytes ToWire(fidl::AnyArena& arena, ::test_byteandbytes::ByteAndBytes src);
};

template <>
struct NaturalTypeForWireType<::test_byteandbytes::wire::ByteAndBytes> {
  using type = ::test_byteandbytes::ByteAndBytes;
};
template <>
struct WireTypeForNaturalType<::test_byteandbytes::ByteAndBytes> {
  using type = ::test_byteandbytes::wire::ByteAndBytes;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
#pragma clang diagnostic pop

}  // namespace internal
}  // namespace fidl
