// third_party/blink/public/mojom/ai/ai_manager.mojom-test-utils.h is auto generated by mojom_bindings_generator.py, do not edit

// 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.

#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_AI_AI_MANAGER_MOJOM_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_AI_AI_MANAGER_MOJOM_TEST_UTILS_H_

#include "third_party/blink/public/mojom/ai/ai_manager.mojom.h"
#include "third_party/blink/public/common/common_export.h"


namespace blink::mojom {


class BLINK_COMMON_EXPORT AIManagerCreateWriterClientInterceptorForTesting : public AIManagerCreateWriterClient {
  virtual AIManagerCreateWriterClient* GetForwardingInterface() = 0;
  void OnResult(::mojo::PendingRemote<::blink::mojom::AIWriter> writer) override;
  void OnError(::blink::mojom::AIManagerCreateClientError error, ::blink::mojom::QuotaErrorInfoPtr quota_error_info) override;
};
class BLINK_COMMON_EXPORT AIManagerCreateWriterClientAsyncWaiter {
 public:
  explicit AIManagerCreateWriterClientAsyncWaiter(AIManagerCreateWriterClient* proxy);

  AIManagerCreateWriterClientAsyncWaiter(const AIManagerCreateWriterClientAsyncWaiter&) = delete;
  AIManagerCreateWriterClientAsyncWaiter& operator=(const AIManagerCreateWriterClientAsyncWaiter&) = delete;

  ~AIManagerCreateWriterClientAsyncWaiter();

 private:
  AIManagerCreateWriterClient* const proxy_;
};


class BLINK_COMMON_EXPORT AIManagerCreateRewriterClientInterceptorForTesting : public AIManagerCreateRewriterClient {
  virtual AIManagerCreateRewriterClient* GetForwardingInterface() = 0;
  void OnResult(::mojo::PendingRemote<::blink::mojom::AIRewriter> rewriter) override;
  void OnError(::blink::mojom::AIManagerCreateClientError error, ::blink::mojom::QuotaErrorInfoPtr quota_error_info) override;
};
class BLINK_COMMON_EXPORT AIManagerCreateRewriterClientAsyncWaiter {
 public:
  explicit AIManagerCreateRewriterClientAsyncWaiter(AIManagerCreateRewriterClient* proxy);

  AIManagerCreateRewriterClientAsyncWaiter(const AIManagerCreateRewriterClientAsyncWaiter&) = delete;
  AIManagerCreateRewriterClientAsyncWaiter& operator=(const AIManagerCreateRewriterClientAsyncWaiter&) = delete;

  ~AIManagerCreateRewriterClientAsyncWaiter();

 private:
  AIManagerCreateRewriterClient* const proxy_;
};


class BLINK_COMMON_EXPORT AIManagerCreateSummarizerClientInterceptorForTesting : public AIManagerCreateSummarizerClient {
  virtual AIManagerCreateSummarizerClient* GetForwardingInterface() = 0;
  void OnResult(::mojo::PendingRemote<::blink::mojom::AISummarizer> summarizer) override;
  void OnError(::blink::mojom::AIManagerCreateClientError error, ::blink::mojom::QuotaErrorInfoPtr quota_error_info) override;
};
class BLINK_COMMON_EXPORT AIManagerCreateSummarizerClientAsyncWaiter {
 public:
  explicit AIManagerCreateSummarizerClientAsyncWaiter(AIManagerCreateSummarizerClient* proxy);

  AIManagerCreateSummarizerClientAsyncWaiter(const AIManagerCreateSummarizerClientAsyncWaiter&) = delete;
  AIManagerCreateSummarizerClientAsyncWaiter& operator=(const AIManagerCreateSummarizerClientAsyncWaiter&) = delete;

  ~AIManagerCreateSummarizerClientAsyncWaiter();

 private:
  AIManagerCreateSummarizerClient* const proxy_;
};


class BLINK_COMMON_EXPORT AIManagerCreateProofreaderClientInterceptorForTesting : public AIManagerCreateProofreaderClient {
  virtual AIManagerCreateProofreaderClient* GetForwardingInterface() = 0;
  void OnResult(::mojo::PendingRemote<::blink::mojom::AIProofreader> proofreader) override;
  void OnError(::blink::mojom::AIManagerCreateClientError error, ::blink::mojom::QuotaErrorInfoPtr quota_error_info) override;
};
class BLINK_COMMON_EXPORT AIManagerCreateProofreaderClientAsyncWaiter {
 public:
  explicit AIManagerCreateProofreaderClientAsyncWaiter(AIManagerCreateProofreaderClient* proxy);

  AIManagerCreateProofreaderClientAsyncWaiter(const AIManagerCreateProofreaderClientAsyncWaiter&) = delete;
  AIManagerCreateProofreaderClientAsyncWaiter& operator=(const AIManagerCreateProofreaderClientAsyncWaiter&) = delete;

  ~AIManagerCreateProofreaderClientAsyncWaiter();

 private:
  AIManagerCreateProofreaderClient* const proxy_;
};


class BLINK_COMMON_EXPORT AIManagerCreateSemanticEmbedderClientInterceptorForTesting : public AIManagerCreateSemanticEmbedderClient {
  virtual AIManagerCreateSemanticEmbedderClient* GetForwardingInterface() = 0;
  void OnResult(::mojo::PendingRemote<::blink::mojom::AISemanticEmbedder> embedder) override;
  void OnError(::blink::mojom::AIManagerCreateClientError error) override;
};
class BLINK_COMMON_EXPORT AIManagerCreateSemanticEmbedderClientAsyncWaiter {
 public:
  explicit AIManagerCreateSemanticEmbedderClientAsyncWaiter(AIManagerCreateSemanticEmbedderClient* proxy);

  AIManagerCreateSemanticEmbedderClientAsyncWaiter(const AIManagerCreateSemanticEmbedderClientAsyncWaiter&) = delete;
  AIManagerCreateSemanticEmbedderClientAsyncWaiter& operator=(const AIManagerCreateSemanticEmbedderClientAsyncWaiter&) = delete;

  ~AIManagerCreateSemanticEmbedderClientAsyncWaiter();

 private:
  AIManagerCreateSemanticEmbedderClient* const proxy_;
};


class BLINK_COMMON_EXPORT AIManagerInterceptorForTesting : public AIManager {
  virtual AIManager* GetForwardingInterface() = 0;
  void CanCreateLanguageModel(::blink::mojom::AILanguageModelCreateOptionsPtr options, CanCreateLanguageModelCallback callback) override;
  void CreateLanguageModel(::mojo::PendingRemote<::blink::mojom::AIManagerCreateLanguageModelClient> client, ::blink::mojom::AILanguageModelCreateOptionsPtr options, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
  void CanCreateSummarizer(::blink::mojom::AISummarizerCreateOptionsPtr options, CanCreateSummarizerCallback callback) override;
  void CreateSummarizer(::mojo::PendingRemote<AIManagerCreateSummarizerClient> client, ::blink::mojom::AISummarizerCreateOptionsPtr options, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
  void GetLanguageModelParams(GetLanguageModelParamsCallback callback) override;
  void CanCreateWriter(::blink::mojom::AIWriterCreateOptionsPtr options, CanCreateWriterCallback callback) override;
  void CreateWriter(::mojo::PendingRemote<AIManagerCreateWriterClient> client, ::blink::mojom::AIWriterCreateOptionsPtr options, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
  void CanCreateRewriter(::blink::mojom::AIRewriterCreateOptionsPtr options, CanCreateRewriterCallback callback) override;
  void CreateRewriter(::mojo::PendingRemote<AIManagerCreateRewriterClient> client, ::blink::mojom::AIRewriterCreateOptionsPtr options, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
  void CanCreateProofreader(::blink::mojom::AIProofreaderCreateOptionsPtr options, CanCreateProofreaderCallback callback) override;
  void CreateProofreader(::mojo::PendingRemote<AIManagerCreateProofreaderClient> client, ::blink::mojom::AIProofreaderCreateOptionsPtr options, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
  void CanCreateSemanticEmbedder(CanCreateSemanticEmbedderCallback callback) override;
  void CreateSemanticEmbedder(::mojo::PendingRemote<AIManagerCreateSemanticEmbedderClient> client, ::mojo::PendingRemote<::on_device_model::mojom::DownloadObserver> monitor) override;
};
class BLINK_COMMON_EXPORT AIManagerAsyncWaiter {
 public:
  explicit AIManagerAsyncWaiter(AIManager* proxy);

  AIManagerAsyncWaiter(const AIManagerAsyncWaiter&) = delete;
  AIManagerAsyncWaiter& operator=(const AIManagerAsyncWaiter&) = delete;

  ~AIManagerAsyncWaiter();
  void CanCreateLanguageModel(
      ::blink::mojom::AILanguageModelCreateOptionsPtr options, ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateLanguageModel(::blink::mojom::AILanguageModelCreateOptionsPtr options);
  void CanCreateSummarizer(
      ::blink::mojom::AISummarizerCreateOptionsPtr options, ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateSummarizer(::blink::mojom::AISummarizerCreateOptionsPtr options);
  void GetLanguageModelParams(
      ::blink::mojom::AILanguageModelParamsPtr* out_language_model_params);
  ::blink::mojom::AILanguageModelParamsPtr GetLanguageModelParams();
  void CanCreateWriter(
      ::blink::mojom::AIWriterCreateOptionsPtr options, ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateWriter(::blink::mojom::AIWriterCreateOptionsPtr options);
  void CanCreateRewriter(
      ::blink::mojom::AIRewriterCreateOptionsPtr options, ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateRewriter(::blink::mojom::AIRewriterCreateOptionsPtr options);
  void CanCreateProofreader(
      ::blink::mojom::AIProofreaderCreateOptionsPtr options, ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateProofreader(::blink::mojom::AIProofreaderCreateOptionsPtr options);
  void CanCreateSemanticEmbedder(
      ModelAvailabilityCheckResult* out_result);
  ModelAvailabilityCheckResult CanCreateSemanticEmbedder();

 private:
  AIManager* const proxy_;
};




}  // blink::mojom

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_AI_AI_MANAGER_MOJOM_TEST_UTILS_H_