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

#pragma once

#include <fidl/fidl.test.protocols/cpp/wire.h>

// For ::fidl::fuzzing::DecoderEncoderImpl.
#include <lib/fidl/cpp/fuzzing/decoder_encoder.h>

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoderForType, 51>
    fidl_test_protocols_decoder_encoders = {
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl_test_protocols::wire::"
                              "WithErrorSyntaxHandleInResultResponse",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl_test_protocols::wire::
                    WithErrorSyntaxHandleInResultResponse>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "HandleRightsProtocol::NoResponseMethod>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::HandleRightsProtocol::
                        NoResponseMethod>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "HandleRightsProtocol::ResponseMethod>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireRequest<::fidl_test_protocols::
                                        HandleRightsProtocol::ResponseMethod>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "HandleRightsProtocol::ResponseMethod>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireResponse<::fidl_test_protocols::
                                         HandleRightsProtocol::ResponseMethod>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "HandleRightsProtocol::AnEvent>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::HandleRightsProtocol::AnEvent>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl_test_protocols::wire::"
                              "WithErrorSyntaxResponseAsStructResponse",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl_test_protocols::wire::
                    WithErrorSyntaxResponseAsStructResponse>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl_test_protocols::wire::"
                              "WithErrorSyntaxErrorAsPrimitiveResponse",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl_test_protocols::wire::
                    WithErrorSyntaxErrorAsPrimitiveResponse>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl_test_protocols::wire::"
                              "WithErrorSyntaxErrorAsEnumResponse",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl_test_protocols::wire::
                    WithErrorSyntaxErrorAsEnumResponse>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::NoRequestNoResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        NoRequestNoResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::NoRequestEmptyResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        NoRequestEmptyResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::NoRequestEmptyResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        NoRequestEmptyResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::NoRequestWithResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        NoRequestWithResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::NoRequestWithResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        NoRequestWithResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::WithRequestNoResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        WithRequestNoResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::WithRequestEmptyResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        WithRequestEmptyResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::WithRequestEmptyResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        WithRequestEmptyResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::WithRequestWithResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        WithRequestWithResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_protocols::"
                "WithAndWithoutRequestResponse::WithRequestWithResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        WithRequestWithResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithAndWithoutRequestResponse::OnEmptyResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        OnEmptyResponse>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithAndWithoutRequestResponse::OnWithResponse>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithAndWithoutRequestResponse::
                        OnWithResponse>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "Transitional::Request>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::Transitional::Request>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "Transitional::Request>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::Transitional::Request>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "Transitional::OneWay>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::Transitional::OneWay>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "Transitional::Event>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::Transitional::Event>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "MethodWithUnion::UnionMethod>",
            .has_flexible_envelope = true,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::MethodWithUnion::UnionMethod>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl_test_protocols::wire::ProtocolEnds",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl_test_protocols::wire::ProtocolEnds>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithProtocolEnds::ClientEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithProtocolEnds::ClientEnds>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithProtocolEnds::ClientEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithProtocolEnds::ClientEnds>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithProtocolEnds::ServerEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithProtocolEnds::ServerEnds>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithProtocolEnds::ServerEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithProtocolEnds::ServerEnds>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithProtocolEnds::StructContainingEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireRequest<::fidl_test_protocols::WithProtocolEnds::
                                        StructContainingEnds>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithProtocolEnds::StructContainingEnds>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireResponse<::fidl_test_protocols::WithProtocolEnds::
                                         StructContainingEnds>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "ManyParameters::Fifteen>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::ManyParameters::Fifteen>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithErrorSyntax::ResponseAsStruct>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithErrorSyntax::ResponseAsStruct>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithErrorSyntax::ResponseAsStruct>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithErrorSyntax::ResponseAsStruct>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithErrorSyntax::ErrorAsPrimitive>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithErrorSyntax::ErrorAsPrimitive>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithErrorSyntax::ErrorAsPrimitive>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithErrorSyntax::ErrorAsPrimitive>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithErrorSyntax::ErrorAsEnum>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithErrorSyntax::ErrorAsEnum>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithErrorSyntax::ErrorAsEnum>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithErrorSyntax::ErrorAsEnum>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "WithErrorSyntax::HandleInResult>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::WithErrorSyntax::HandleInResult>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "WithErrorSyntax::HandleInResult>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::WithErrorSyntax::HandleInResult>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "DiscoverableProtocol::Method>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::DiscoverableProtocol::Method>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "ChannelProtocol::MethodA>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::ChannelProtocol::MethodA>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "ChannelProtocol::EventA>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::ChannelProtocol::EventA>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "ChannelProtocol::MethodB>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::ChannelProtocol::MethodB>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "ChannelProtocol::MethodB>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::ChannelProtocol::MethodB>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "ChannelProtocol::TakeHandle>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::ChannelProtocol::TakeHandle>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "ChannelProtocol::TakeHandle>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::ChannelProtocol::TakeHandle>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_protocols::"
                              "ChannelProtocol::MutateSocket>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_protocols::ChannelProtocol::MutateSocket>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireResponse<::fidl_test_protocols::"
                              "ChannelProtocol::MutateSocket>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
                    ::fidl_test_protocols::ChannelProtocol::MutateSocket>>,
        },
};

}  // namespace fuzzing
