// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// DO NOT EDIT: This file is auto-generated by
// //third_party/blink/renderer/bindings/scripts/generate_bindings.py
//
// Use the GN flag `blink_enable_generated_code_formatting=true` to enable
// formatting of the generated files.

#ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_MODULES_V8_V8_AVAILABILITY_H_
#define THIRD_PARTY_BLINK_RENDERER_BINDINGS_MODULES_V8_V8_AVAILABILITY_H_

#include <optional>

#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"  // IWYU pragma: export

namespace blink {

class ExceptionState;

class MODULES_EXPORT V8Availability final : public bindings::EnumerationBase {
  
  public:
enum class Enum : enum_int_t {
kUnavailable, kDownloadable, kDownloading, kAvailable
};
static constexpr size_t kEnumSize = 4;

static V8Availability Create(v8::Isolate* isolate, v8::Local<v8::Value> value, ExceptionState& exception_state);
static std::optional<V8Availability> Create(const String& value);

explicit constexpr  V8Availability(Enum value) : bindings::EnumerationBase(static_cast<enum_int_t>(value), string_table_[static_cast<enum_int_t>(value)]) {
  
}
constexpr  V8Availability(const V8Availability&) = default;
constexpr  V8Availability(V8Availability&&) = default;
 ~V8Availability() = default;

V8Availability& operator=(const V8Availability&) = default;
V8Availability& operator=(V8Availability&&) = default;

Enum AsEnum() const {
  return static_cast<Enum>(GetEnumValue());
}


  
  private:
static const char* const string_table_[];

constexpr  V8Availability() = default;


  
};

inline bool operator==(const V8Availability& lhs, V8Availability::Enum rhs) {
  return lhs.AsEnum() == rhs;
}

inline bool operator==(V8Availability::Enum lhs, const V8Availability& rhs) {
  return lhs == rhs.AsEnum();
}


}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_BINDINGS_MODULES_V8_V8_AVAILABILITY_H_
