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

#pragma once

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

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

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoderForType, 4>
    fidl_test_inheritance_decoder_encoders = {

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_inheritance::Super::Foo>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireRequest<::fidl_test_inheritance::Super::Foo>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_inheritance::Super::Foo>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireResponse<::fidl_test_inheritance::Super::Foo>>,
        },

        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireRequest<::fidl_test_inheritance::Sub::Foo>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireRequest<::fidl_test_inheritance::Sub::Foo>>,
        },
        ::fidl::fuzzing::DecoderEncoderForType{
            .fidl_type_name =
                "::fidl::WireResponse<::fidl_test_inheritance::Sub::Foo>",
            .has_flexible_envelope = false,
            .decoder_encoder = ::fidl::fuzzing::DecoderEncoderImpl<
                ::fidl::WireResponse<::fidl_test_inheritance::Sub::Foo>>,
        },
};

}  // namespace fuzzing
