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

#pragma once

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

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

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoder, 6>
    fidl_test_protocolrequest_decoder_encoders = {

        ::fidl::fuzzing::DecoderEncoderImpl<
            ::fidl::WireRequest<::fidl_test_protocolrequest::Parent::GetChild>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
            ::fidl_test_protocolrequest::Parent::GetChild>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
            ::fidl_test_protocolrequest::Parent::GetChildRequest>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
            ::fidl_test_protocolrequest::Parent::GetChildRequest>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
            ::fidl_test_protocolrequest::Parent::TakeChild>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
            ::fidl_test_protocolrequest::Parent::TakeChildRequest>>,
};

}  // namespace fuzzing
