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

// fidl_experiment = output_index_json

#pragma once

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

#endif  // __Fuchsia__
#include <fidl/test.middle/cpp/type_conversions.h>
#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_transitivedependencies::wire::Baz, ::test_transitivedependencies::Baz> {
  static ::test_transitivedependencies::Baz ToNatural(::test_transitivedependencies::wire::Baz src);
  static ::test_transitivedependencies::wire::Baz ToWire(fidl::AnyArena& arena, ::test_transitivedependencies::Baz src);
};

template <>
struct NaturalTypeForWireType<::test_transitivedependencies::wire::Baz> {
  using type = ::test_transitivedependencies::Baz;
};
template <>
struct WireTypeForNaturalType<::test_transitivedependencies::Baz> {
  using type = ::test_transitivedependencies::wire::Baz;
};

#ifdef __Fuchsia__

#endif  // __Fuchsia__
#pragma clang diagnostic pop

}  // namespace internal
}  // namespace fidl
