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

#pragma once

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

namespace test_errorsyntax {

class ExampleUseOfErrorSyntax final {
  ExampleUseOfErrorSyntax() = delete;

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

   public:
    using Protocol = ::test_errorsyntax::ExampleUseOfErrorSyntax;
    static constexpr bool kHasRequest = true;
    static constexpr bool kHasResponse = true;
  };
  class CallWhichMayFail final {
    CallWhichMayFail() = delete;

   public:
    using Protocol = ::test_errorsyntax::ExampleUseOfErrorSyntax;
    static constexpr bool kHasRequest = true;
    static constexpr bool kHasResponse = true;
  };
};
}  // namespace test_errorsyntax
