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

#pragma once

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

namespace test_versions {

class OtherProtocol final {
  OtherProtocol() = delete;

 public:
  using Transport = ::fidl::internal::ChannelTransport;
};

class Protocol final {
  Protocol() = delete;

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

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