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

#pragma once

#include <fidl/test.someotherlibrary/cpp/common_types.h>
#include <lib/fidl/llcpp/internal/display_error.h>
#include <lib/fidl/llcpp/traits.h>
#include <lib/stdcompat/optional.h>

#include <cinttypes>

namespace test_typealiases {

enum class ObjType : uint32_t {

  kNone = 0u,

  kChannel = 4u,
};

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

namespace fidl {

template <>
struct IsFidlType<::test_typealiases::ObjType> : public std::true_type {};
template <>
struct ContainsHandle<::test_typealiases::ObjType> : public std::false_type {};

}  // namespace fidl
