chromium/out/Default/gen/third_party/blink/public/mojom/indexeddb/indexeddb.mojom-blink.h

// third_party/blink/public/mojom/indexeddb/indexeddb.mojom-blink.h is auto generated by mojom_bindings_generator.py, do not edit

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

#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_INDEXEDDB_INDEXEDDB_MOJOM_BLINK_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_INDEXEDDB_INDEXEDDB_MOJOM_BLINK_H_

#include <stdint.h>

#include <limits>
#include <optional>
#include <type_traits>
#include <utility>

#include "base/types/cxx23_to_underlying.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"

#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"

#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-features.h"  // IWYU pragma: export
#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-shared.h"  // IWYU pragma: export
#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-blink-forward.h"  // IWYU pragma: export
#include "mojo/public/mojom/base/string16.mojom-blink.h"
#include "mojo/public/mojom/base/string16.mojom-blink.h"
#include "mojo/public/mojom/base/time.mojom-blink.h"
#include "third_party/blink/public/mojom/blob/blob.mojom-blink-forward.h"
#include "third_party/blink/public/mojom/file_system_access/file_system_access_transfer_token.mojom-blink-forward.h"

#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/blink/renderer/platform/wtf/hash_functions.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"

#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/lib/message_size_estimator.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"


#include "third_party/blink/renderer/modules/indexeddb/idb_key_path.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_key_range.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_metadata.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_value.h"
#include "third_party/blink/renderer/modules/modules_export.h"




namespace blink::mojom::blink {

class IDBFactoryClientProxy;

template <typename ImplRefTraits>
class IDBFactoryClientStub;

class IDBFactoryClientRequestValidator;


class MODULES_EXPORT IDBFactoryClient
    : public IDBFactoryClientInterfaceBase {};

class IDBDatabaseCallbacksProxy;

template <typename ImplRefTraits>
class IDBDatabaseCallbacksStub;

class IDBDatabaseCallbacksRequestValidator;


class MODULES_EXPORT IDBDatabaseCallbacks
    : public IDBDatabaseCallbacksInterfaceBase {};

class IDBCursorProxy;

template <typename ImplRefTraits>
class IDBCursorStub;

class IDBCursorRequestValidator;
class IDBCursorResponseValidator;


class MODULES_EXPORT IDBCursor
    : public IDBCursorInterfaceBase {};

class IDBTransactionProxy;

template <typename ImplRefTraits>
class IDBTransactionStub;

class IDBTransactionRequestValidator;
class IDBTransactionResponseValidator;


class MODULES_EXPORT IDBTransaction
    : public IDBTransactionInterfaceBase {};

class IDBDatabaseGetAllResultSinkProxy;

template <typename ImplRefTraits>
class IDBDatabaseGetAllResultSinkStub;

class IDBDatabaseGetAllResultSinkRequestValidator;


class MODULES_EXPORT IDBDatabaseGetAllResultSink
    : public IDBDatabaseGetAllResultSinkInterfaceBase {};

class IDBDatabaseProxy;

template <typename ImplRefTraits>
class IDBDatabaseStub;

class IDBDatabaseRequestValidator;
class IDBDatabaseResponseValidator;


class MODULES_EXPORT IDBDatabase
    : public IDBDatabaseInterfaceBase {};

class IDBFactoryProxy;

template <typename ImplRefTraits>
class IDBFactoryStub;

class IDBFactoryRequestValidator;
class IDBFactoryResponseValidator;


class MODULES_EXPORT IDBFactory
    : public IDBFactoryInterfaceBase {};



class MODULES_EXPORT IDBFactoryClientProxy
    : public IDBFactoryClient {};



class MODULES_EXPORT IDBDatabaseCallbacksProxy
    : public IDBDatabaseCallbacks {};



class MODULES_EXPORT IDBCursorProxy
    : public IDBCursor {};



class MODULES_EXPORT IDBTransactionProxy
    : public IDBTransaction {};



class MODULES_EXPORT IDBDatabaseGetAllResultSinkProxy
    : public IDBDatabaseGetAllResultSink {};



class MODULES_EXPORT IDBDatabaseProxy
    : public IDBDatabase {};



class MODULES_EXPORT IDBFactoryProxy
    : public IDBFactory {};
class MODULES_EXPORT IDBFactoryClientStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBFactoryClient>>
class IDBFactoryClientStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBFactoryClientStub() = default;
  ~IDBFactoryClientStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBDatabaseCallbacksStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBDatabaseCallbacks>>
class IDBDatabaseCallbacksStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBDatabaseCallbacksStub() = default;
  ~IDBDatabaseCallbacksStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBCursorStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBCursor>>
class IDBCursorStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBCursorStub() = default;
  ~IDBCursorStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBTransactionStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBTransaction>>
class IDBTransactionStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBTransactionStub() = default;
  ~IDBTransactionStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBDatabaseGetAllResultSinkStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBDatabaseGetAllResultSink>>
class IDBDatabaseGetAllResultSinkStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBDatabaseGetAllResultSinkStub() = default;
  ~IDBDatabaseGetAllResultSinkStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBDatabaseStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBDatabase>>
class IDBDatabaseStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBDatabaseStub() = default;
  ~IDBDatabaseStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBFactoryStubDispatch {};

template <typename ImplRefTraits =
              mojo::RawPtrImplRefTraits<IDBFactory>>
class IDBFactoryStub
    : public mojo::MessageReceiverWithResponderStatus {
 public:
  using ImplPointerType = typename ImplRefTraits::PointerType;

  IDBFactoryStub() = default;
  ~IDBFactoryStub() override = default;

  void set_sink(ImplPointerType sink) {}
  ImplPointerType& sink() {}

  bool Accept(mojo::Message* message) override {}

  bool AcceptWithResponder(
      mojo::Message* message,
      std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {}

 private:
  ImplPointerType sink_;
};
class MODULES_EXPORT IDBFactoryClientRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBDatabaseCallbacksRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBCursorRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBTransactionRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBDatabaseGetAllResultSinkRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBDatabaseRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBFactoryRequestValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBCursorResponseValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBTransactionResponseValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBDatabaseResponseValidator : public mojo::MessageReceiver {};
class MODULES_EXPORT IDBFactoryResponseValidator : public mojo::MessageReceiver {};



















class MODULES_EXPORT IDBKey {};



class MODULES_EXPORT IDBKeyPathData {};



class MODULES_EXPORT IDBExternalObject {};



class MODULES_EXPORT IDBCursorResult {};



class MODULES_EXPORT IDBTransactionPutResult {};



class MODULES_EXPORT IDBDatabaseGetResult {};



class MODULES_EXPORT IDBDatabaseOpenCursorResult {};





class MODULES_EXPORT IDBKeyPath {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBKeyPath::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBKeyPath::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBKeyPath::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBKeyPath::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBKeyRange {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBKeyRange::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBKeyRange::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBKeyRange::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBKeyRange::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBIndexMetadata {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBIndexMetadata::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBIndexMetadata::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBIndexMetadata::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBIndexMetadata::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBObjectStoreMetadata {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBDatabaseMetadata {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBDatabaseMetadata::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBDatabaseMetadata::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBDatabaseMetadata::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBDatabaseMetadata::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBNameAndVersion {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBNameAndVersion::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBNameAndVersion::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBNameAndVersion::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBNameAndVersion::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBIndexKeys {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBIndexKeys::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBIndexKeys::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBIndexKeys::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBIndexKeys::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBFileInfo {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBFileInfo::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBFileInfo::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBFileInfo::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBFileInfo::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBBlobInfo {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBBlobInfo::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBBlobInfo::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBBlobInfo::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBBlobInfo::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBValue {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBValue::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBValue::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBValue::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBValue::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBReturnValue {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBReturnValue::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBReturnValue::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBReturnValue::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBReturnValue::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBError {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBError::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBError::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBError::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBError::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBCursorValue {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBCursorValue::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBCursorValue::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBCursorValue::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBCursorValue::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}





class MODULES_EXPORT IDBDatabaseOpenCursorValue {};

// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);

template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {}

template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {}

template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {}

template <typename UnionPtrType>
IDBKeyPtr IDBKey::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBKey>::value>::type*>
bool IDBKey::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBKeyPathDataPtr IDBKeyPathData::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBKeyPathData>::value>::type*>
bool IDBKeyPathData::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBExternalObjectPtr IDBExternalObject::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBExternalObject>::value>::type*>
bool IDBExternalObject::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBCursorResultPtr IDBCursorResult::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBCursorResult>::value>::type*>
bool IDBCursorResult::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBTransactionPutResultPtr IDBTransactionPutResult::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBTransactionPutResult>::value>::type*>
bool IDBTransactionPutResult::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBDatabaseGetResultPtr IDBDatabaseGetResult::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBDatabaseGetResult>::value>::type*>
bool IDBDatabaseGetResult::Equals(const T& other) const {}
template <typename UnionPtrType>
IDBDatabaseOpenCursorResultPtr IDBDatabaseOpenCursorResult::Clone() const {}

template <typename T,
          typename std::enable_if<std::is_same<
              T, IDBDatabaseOpenCursorResult>::value>::type*>
bool IDBDatabaseOpenCursorResult::Equals(const T& other) const {}
template <typename StructPtrType>
IDBKeyPathPtr IDBKeyPath::Clone() const {}

template <typename T, IDBKeyPath::EnableIfSame<T>*>
bool IDBKeyPath::Equals(const T& other_struct) const {}

template <typename T, IDBKeyPath::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBKeyRangePtr IDBKeyRange::Clone() const {}

template <typename T, IDBKeyRange::EnableIfSame<T>*>
bool IDBKeyRange::Equals(const T& other_struct) const {}

template <typename T, IDBKeyRange::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBIndexMetadataPtr IDBIndexMetadata::Clone() const {}

template <typename T, IDBIndexMetadata::EnableIfSame<T>*>
bool IDBIndexMetadata::Equals(const T& other_struct) const {}

template <typename T, IDBIndexMetadata::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBObjectStoreMetadataPtr IDBObjectStoreMetadata::Clone() const {}

template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>*>
bool IDBObjectStoreMetadata::Equals(const T& other_struct) const {}

template <typename T, IDBObjectStoreMetadata::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBDatabaseMetadataPtr IDBDatabaseMetadata::Clone() const {}

template <typename T, IDBDatabaseMetadata::EnableIfSame<T>*>
bool IDBDatabaseMetadata::Equals(const T& other_struct) const {}

template <typename T, IDBDatabaseMetadata::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBNameAndVersionPtr IDBNameAndVersion::Clone() const {}

template <typename T, IDBNameAndVersion::EnableIfSame<T>*>
bool IDBNameAndVersion::Equals(const T& other_struct) const {}

template <typename T, IDBNameAndVersion::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBIndexKeysPtr IDBIndexKeys::Clone() const {}

template <typename T, IDBIndexKeys::EnableIfSame<T>*>
bool IDBIndexKeys::Equals(const T& other_struct) const {}

template <typename T, IDBIndexKeys::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBFileInfoPtr IDBFileInfo::Clone() const {}

template <typename T, IDBFileInfo::EnableIfSame<T>*>
bool IDBFileInfo::Equals(const T& other_struct) const {}

template <typename T, IDBFileInfo::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBBlobInfoPtr IDBBlobInfo::Clone() const {}

template <typename T, IDBBlobInfo::EnableIfSame<T>*>
bool IDBBlobInfo::Equals(const T& other_struct) const {}

template <typename T, IDBBlobInfo::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBValuePtr IDBValue::Clone() const {}

template <typename T, IDBValue::EnableIfSame<T>*>
bool IDBValue::Equals(const T& other_struct) const {}

template <typename T, IDBValue::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBReturnValuePtr IDBReturnValue::Clone() const {}

template <typename T, IDBReturnValue::EnableIfSame<T>*>
bool IDBReturnValue::Equals(const T& other_struct) const {}

template <typename T, IDBReturnValue::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBErrorPtr IDBError::Clone() const {}

template <typename T, IDBError::EnableIfSame<T>*>
bool IDBError::Equals(const T& other_struct) const {}

template <typename T, IDBError::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBCursorValuePtr IDBCursorValue::Clone() const {}

template <typename T, IDBCursorValue::EnableIfSame<T>*>
bool IDBCursorValue::Equals(const T& other_struct) const {}

template <typename T, IDBCursorValue::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}
template <typename StructPtrType>
IDBDatabaseOpenCursorValuePtr IDBDatabaseOpenCursorValue::Clone() const {}

template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>*>
bool IDBDatabaseOpenCursorValue::Equals(const T& other_struct) const {}

template <typename T, IDBDatabaseOpenCursorValue::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {}


}  // blink::mojom::blink

namespace mojo {


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBKeyPath::DataView,
                                         ::blink::mojom::blink::IDBKeyPathPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBKeyRange::DataView,
                                         ::blink::mojom::blink::IDBKeyRangePtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBIndexMetadata::DataView,
                                         ::blink::mojom::blink::IDBIndexMetadataPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBObjectStoreMetadata::DataView,
                                         ::blink::mojom::blink::IDBObjectStoreMetadataPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBDatabaseMetadata::DataView,
                                         ::blink::mojom::blink::IDBDatabaseMetadataPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBNameAndVersion::DataView,
                                         ::blink::mojom::blink::IDBNameAndVersionPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBIndexKeys::DataView,
                                         ::blink::mojom::blink::IDBIndexKeysPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBFileInfo::DataView,
                                         ::blink::mojom::blink::IDBFileInfoPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBBlobInfo::DataView,
                                         ::blink::mojom::blink::IDBBlobInfoPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBValue::DataView,
                                         ::blink::mojom::blink::IDBValuePtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBReturnValue::DataView,
                                         ::blink::mojom::blink::IDBReturnValuePtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBError::DataView,
                                         ::blink::mojom::blink::IDBErrorPtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBCursorValue::DataView,
                                         ::blink::mojom::blink::IDBCursorValuePtr> {};


template <>
struct MODULES_EXPORT StructTraits<::blink::mojom::blink::IDBDatabaseOpenCursorValue::DataView,
                                         ::blink::mojom::blink::IDBDatabaseOpenCursorValuePtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBKey::DataView,
                                        ::blink::mojom::blink::IDBKeyPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBKeyPathData::DataView,
                                        ::blink::mojom::blink::IDBKeyPathDataPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBExternalObject::DataView,
                                        ::blink::mojom::blink::IDBExternalObjectPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBCursorResult::DataView,
                                        ::blink::mojom::blink::IDBCursorResultPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBTransactionPutResult::DataView,
                                        ::blink::mojom::blink::IDBTransactionPutResultPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBDatabaseGetResult::DataView,
                                        ::blink::mojom::blink::IDBDatabaseGetResultPtr> {};


template <>
struct MODULES_EXPORT UnionTraits<::blink::mojom::blink::IDBDatabaseOpenCursorResult::DataView,
                                        ::blink::mojom::blink::IDBDatabaseOpenCursorResultPtr> {};

}  // namespace mojo

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_INDEXEDDB_INDEXEDDB_MOJOM_BLINK_H_