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

#pragma once

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

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

namespace fuzzing {

inline constexpr ::std::array<::fidl::fuzzing::DecoderEncoder, 2>
    fidl_test_foreigntypeinresponseusedthroughcompose_decoder_encoders = {

        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireRequest<
            ::fidl_test_foreigntypeinresponseusedthroughcompose::Top::GetFoo>>,
        ::fidl::fuzzing::DecoderEncoderImpl<::fidl::WireResponse<
            ::fidl_test_foreigntypeinresponseusedthroughcompose::Top::GetFoo>>,
};

}  // namespace fuzzing
