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

// fidl_experiment = output_index_json

#pragma once

#include <fidl/test.dependent/cpp/natural_ostream.h>
#include <fidl/test.importedconstvalues/cpp/natural_types.h>
#include <lib/fidl/cpp/natural_ostream.h>

#include <iostream>

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

template <>
struct fidl::ostream::Formatter<::test_importedconstvalues::MyStruct> {
  static std::ostream& Format(std::ostream& os, const ::test_importedconstvalues::MyStruct& value);
};

namespace test_importedconstvalues {

std::ostream& operator<<(std::ostream& os, const ::test_importedconstvalues::MyStruct& value);

}  // namespace test_importedconstvalues

#ifdef __Fuchsia__

#endif  // __Fuchsia__

#pragma clang diagnostic pop
