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

#pragma once

#include <fidl/test/union/cpp/natural_types.h>
#include <fidl/test/union/llcpp/fidl.h>

namespace fidl_test_union {
using Union = ::fidl::test::union_::Union;

using StructWithNullableXUnion = ::fidl::test::union_::StructWithNullableXUnion;

using StrictUnion = ::fidl::test::union_::StrictUnion;

using StrictSimpleXUnion = ::fidl::test::union_::StrictSimpleXUnion;

using StrictFoo = ::fidl::test::union_::StrictFoo;

using StrictBoundedXUnion = ::fidl::test::union_::StrictBoundedXUnion;

using ReverseOrdinalUnion = ::fidl::test::union_::ReverseOrdinalUnion;

using Pizza = ::fidl::test::union_::Pizza;

using Pasta = ::fidl::test::union_::Pasta;

using StrictPizzaOrPasta = ::fidl::test::union_::StrictPizzaOrPasta;

using PizzaOrPasta = ::fidl::test::union_::PizzaOrPasta;

using FlexiblePizzaOrPasta = ::fidl::test::union_::FlexiblePizzaOrPasta;

using ExplicitPizzaOrPasta = ::fidl::test::union_::ExplicitPizzaOrPasta;

using OlderSimpleUnion = ::fidl::test::union_::OlderSimpleUnion;

using NullableUnionStruct = ::fidl::test::union_::NullableUnionStruct;

using NewerSimpleUnion = ::fidl::test::union_::NewerSimpleUnion;

using FlexibleUnion = ::fidl::test::union_::FlexibleUnion;

using FlexibleFoo = ::fidl::test::union_::FlexibleFoo;

using FieldCollision = ::fidl::test::union_::FieldCollision;

using ExplicitXUnion = ::fidl::test::union_::ExplicitXUnion;

using ExplicitUnion = ::fidl::test::union_::ExplicitUnion;

using ExplicitStrictFoo = ::fidl::test::union_::ExplicitStrictFoo;

using ExplicitFoo = ::fidl::test::union_::ExplicitFoo;

using Empty = ::fidl::test::union_::Empty;

using XUnionContainingEmptyStruct =
    ::fidl::test::union_::XUnionContainingEmptyStruct;

}  // namespace fidl_test_union
