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

#pragma once

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

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

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoder, 4>
    fidl_test_requestflexibleenvelope_decoder_encoders = {

        ::fidl::fuzzing::DecoderEncoderImpl<
            ::fidl::WireRequest<::fidl_test_requestflexibleenvelope::Protocol::
                                    RequestStrictResponseFlexible>>,
        ::fidl::fuzzing::DecoderEncoderImpl<
            ::fidl::WireResponse<::fidl_test_requestflexibleenvelope::Protocol::
                                     RequestStrictResponseFlexible>>,
        ::fidl::fuzzing::DecoderEncoderImpl<
            ::fidl::WireRequest<::fidl_test_requestflexibleenvelope::Protocol::
                                    RequestFlexibleResponseStrict>>,
        ::fidl::fuzzing::DecoderEncoderImpl<
            ::fidl::WireResponse<::fidl_test_requestflexibleenvelope::Protocol::
                                     RequestFlexibleResponseStrict>>,
};

}  // namespace fuzzing
