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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.bits/cpp/markers.h>
#include <fidl/test.bits/cpp/natural_types.h>
#include <fidl/test.bits/cpp/wire_types.h>
#ifdef __Fuchsia__
#include <fidl/test.bits/cpp/natural_messaging.h>
#include <fidl/test.bits/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 NaturalTypeForWireType<::test_bits::wire::MyBits> {
  using type = ::test_bits::MyBits;
};
template <>
struct WireTypeForNaturalType<::test_bits::MyBits> {
  using type = ::test_bits::wire::MyBits;
};
template <>
struct NaturalTypeForWireType<::test_bits::wire::StrictBits> {
  using type = ::test_bits::StrictBits;
};
template <>
struct WireTypeForNaturalType<::test_bits::StrictBits> {
  using type = ::test_bits::wire::StrictBits;
};
template <>
struct NaturalTypeForWireType<::test_bits::wire::FlexibleBits> {
  using type = ::test_bits::FlexibleBits;
};
template <>
struct WireTypeForNaturalType<::test_bits::FlexibleBits> {
  using type = ::test_bits::wire::FlexibleBits;
};
template <>
struct NaturalTypeForWireType<::test_bits::wire::EmptyBits> {
  using type = ::test_bits::EmptyBits;
};
template <>
struct WireTypeForNaturalType<::test_bits::EmptyBits> {
  using type = ::test_bits::wire::EmptyBits;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
#pragma clang diagnostic pop

}  // namespace internal
}  // namespace fidl
