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

#pragma once

#include <lib/fidl/llcpp/internal/transport.h>

namespace test_driverhandle {

class HandlesInProtocol final {
  HandlesInProtocol() = delete;

 public:
  using Transport = ::fidl::internal::DriverTransport;
  class SendHandles final {
    SendHandles() = delete;

   public:
    using Protocol = ::test_driverhandle::HandlesInProtocol;
    static constexpr bool kHasRequest = true;
    static constexpr bool kHasResponse = false;
  };
};

class DriverProtocol final {
  DriverProtocol() = delete;

 public:
  using Transport = ::fidl::internal::DriverTransport;
};
}  // namespace test_driverhandle
