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

#pragma once

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

namespace test_placementofattributes {

class ExampleProtocol final {
  ExampleProtocol() = delete;

 public:
  using Transport = ::fidl::internal::ChannelTransport;
  class Method final {
    Method() = delete;

   public:
    using Protocol = ::test_placementofattributes::ExampleProtocol;
    static constexpr bool kHasRequest = true;
    static constexpr bool kHasResponse = false;
  };
};
}  // namespace test_placementofattributes
