// components/private_ai/mojom/oak_session.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 COMPONENTS_PRIVATE_AI_MOJOM_OAK_SESSION_MOJOM_TEST_UTILS_H_
#define COMPONENTS_PRIVATE_AI_MOJOM_OAK_SESSION_MOJOM_TEST_UTILS_H_

#include "components/private_ai/mojom/oak_session.mojom.h"


namespace private_ai::mojom {


class  OakSessionInterceptorForTesting : public OakSession {
  virtual OakSession* GetForwardingInterface() = 0;
  void InitiateHandshake(InitiateHandshakeCallback callback) override;
  void CompleteHandshake(::private_ai::HandshakeMessage response, CompleteHandshakeCallback callback) override;
  void Encrypt(const std::vector<uint8_t>& input, EncryptCallback callback) override;
  void Decrypt(const std::vector<uint8_t>& input, DecryptCallback callback) override;
};
class  OakSessionAsyncWaiter {
 public:
  explicit OakSessionAsyncWaiter(OakSession* proxy);

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

  ~OakSessionAsyncWaiter();
  void InitiateHandshake(
      ::private_ai::HandshakeMessage* out_request);
  ::private_ai::HandshakeMessage InitiateHandshake();
  void CompleteHandshake(
      ::private_ai::HandshakeMessage response, bool* out_success);
  bool CompleteHandshake(::private_ai::HandshakeMessage response);
  void Encrypt(
      const std::vector<uint8_t>& input, std::optional<std::vector<uint8_t>>* out_output);
  std::optional<std::vector<uint8_t>> Encrypt(const std::vector<uint8_t>& input);
  void Decrypt(
      const std::vector<uint8_t>& input, std::optional<std::vector<uint8_t>>* out_output);
  std::optional<std::vector<uint8_t>> Decrypt(const std::vector<uint8_t>& input);

 private:
  OakSession* const proxy_;
};




}  // private_ai::mojom

#endif  // COMPONENTS_PRIVATE_AI_MOJOM_OAK_SESSION_MOJOM_TEST_UTILS_H_