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

// fidl_experiment = output_index_json

#pragma once

#include <lib/fidl/cpp/wire/internal/display_error.h>
#include <lib/fidl/cpp/wire/traits.h>
#include <lib/stdcompat/optional.h>

#include <cinttypes>

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

namespace test_protocols {

enum class ErrorEnum : uint32_t {

  kErrFoo = 1u,

  kErrBar = 2u,
};

}  // namespace test_protocols

template <>
struct fidl::internal::DisplayError<::test_protocols::ErrorEnum> {
  static size_t Format(const ::test_protocols::ErrorEnum& value, char* destination, size_t capacity);
};

namespace fidl {

constexpr inline auto ToUnderlying(::test_protocols::ErrorEnum value) -> uint32_t {
  return static_cast<uint32_t>(value);
}

template <>
struct IsFidlType<::test_protocols::ErrorEnum> : public std::true_type {};
template <>
struct ContainsHandle<::test_protocols::ErrorEnum> : public std::false_type {};

#pragma clang diagnostic pop

}  // namespace fidl
