// third_party/blink/public/mojom/ai/ai_rewriter.mojom-blink-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_REWRITER_MOJOM_BLINK_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_AI_AI_REWRITER_MOJOM_BLINK_TEST_UTILS_H_

#include "third_party/blink/public/mojom/ai/ai_rewriter.mojom-blink.h"
#include "third_party/blink/renderer/platform/platform_export.h"


namespace blink::mojom::blink {


class PLATFORM_EXPORT AIRewriterInterceptorForTesting : public AIRewriter {
  virtual AIRewriter* GetForwardingInterface() = 0;
  void Rewrite(const ::blink::String& input, const ::blink::String& context, ::mojo::PendingRemote<::blink::mojom::blink::ModelStreamingResponder> pending_responder) override;
  void MeasureUsage(const ::blink::String& input, const ::blink::String& context, MeasureUsageCallback callback) override;
};
class PLATFORM_EXPORT AIRewriterAsyncWaiter {
 public:
  explicit AIRewriterAsyncWaiter(AIRewriter* proxy);

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

  ~AIRewriterAsyncWaiter();
  void MeasureUsage(
      const ::blink::String& input, const ::blink::String& context, std::optional<uint32_t>* out_number_of_tokens);
  std::optional<uint32_t> MeasureUsage(const ::blink::String& input, const ::blink::String& context);

 private:
  AIRewriter* const proxy_;
};




}  // blink::mojom::blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_AI_AI_REWRITER_MOJOM_BLINK_TEST_UTILS_H_