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

#pragma once

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

#include "lib/fidl/cpp/fuzzing/traits.h"
#include "lib/fidl/cpp/internal/header.h"
// For ::std::max_element().
#include <algorithm>
// For uint64_t.
#include <stdint.h>

namespace fuzzing {

using SingleMemberService = ::fidl::test::service::SingleMemberService;
using MultiHomogeneousMemberService =
    ::fidl::test::service::MultiHomogeneousMemberService;
using MultiHeterogeneousMemberService =
    ::fidl::test::service::MultiHeterogeneousMemberService;
using EmptyService = ::fidl::test::service::EmptyService;

}  // namespace fuzzing
