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

#pragma once

#include <fidl/test/service/llcpp/fidl.h>

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

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoderForType, 2>
    fidl_test_service_decoder_encoders = {

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_service::"
                              "SecondProtocol::MethodOnSecond>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_service::SecondProtocol::MethodOnSecond>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name = "::fidl::WireRequest<::fidl_test_service::"
                              "FirstProtocol::MethodOnFirst>",
            .has_flexible_envelope = false,
            .decoder_encoder =
                ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
                    ::fidl_test_service::FirstProtocol::MethodOnFirst>>,
        },
};

}  // namespace fuzzing
