// components/browser_apis/bookmarks/bookmarks_api.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_BROWSER_APIS_BOOKMARKS_BOOKMARKS_API_MOJOM_TEST_UTILS_H_
#define COMPONENTS_BROWSER_APIS_BOOKMARKS_BOOKMARKS_API_MOJOM_TEST_UTILS_H_

#include "components/browser_apis/bookmarks/bookmarks_api.mojom.h"


namespace bookmarks_api::mojom {


class  BookmarksObserverInterceptorForTesting : public BookmarksObserver {
  virtual BookmarksObserver* GetForwardingInterface() = 0;
  void OnBookmarksEvents(std::vector<BookmarksEventPtr> events) override;
};
class  BookmarksObserverAsyncWaiter {
 public:
  explicit BookmarksObserverAsyncWaiter(BookmarksObserver* proxy);

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

  ~BookmarksObserverAsyncWaiter();

 private:
  BookmarksObserver* const proxy_;
};


class  BookmarksServiceInterceptorForTesting : public BookmarksService {
  virtual BookmarksService* GetForwardingInterface() = 0;
  void GetBookmarks(GetBookmarksCallback callback) override;
  void GetBookmark(const ::base::Uuid& id, GetBookmarkCallback callback) override;
  void CreateBookmarkNode(const ::base::Uuid& parent_id, std::optional<int32_t> index, BookmarkNodePtr node, CreateBookmarkNodeCallback callback) override;
  void UpdateBookmarkNode(BookmarkNodePtr node, UpdateBookmarkNodeCallback callback) override;
  void MoveBookmarkNode(const ::base::Uuid& id, const ::base::Uuid& new_parent_id, std::optional<int32_t> index, MoveBookmarkNodeCallback callback) override;
  void DeleteBookmarkNodes(const std::vector<::base::Uuid>& ids, DeleteBookmarkNodesCallback callback) override;
};
class  BookmarksServiceAsyncWaiter {
 public:
  explicit BookmarksServiceAsyncWaiter(BookmarksService* proxy);

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

  ~BookmarksServiceAsyncWaiter();
  void GetBookmarks(
      
base::expected<
  BookmarksSnapshotPtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_GetBookmarks_ResponseParam_ResultPtr GetBookmarks();
  void GetBookmark(
      const ::base::Uuid& id,
base::expected<
  BookmarkNodePtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_GetBookmark_ResponseParam_ResultPtr GetBookmark(const ::base::Uuid& id);
  void CreateBookmarkNode(
      const ::base::Uuid& parent_id, std::optional<int32_t> index, BookmarkNodePtr node,
base::expected<
  BookmarkNodePtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_CreateBookmarkNode_ResponseParam_ResultPtr CreateBookmarkNode(const ::base::Uuid& parent_id, std::optional<int32_t> index, BookmarkNodePtr node);
  void UpdateBookmarkNode(
      BookmarkNodePtr node,
base::expected<
  BookmarkNodePtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_UpdateBookmarkNode_ResponseParam_ResultPtr UpdateBookmarkNode(BookmarkNodePtr node);
  void MoveBookmarkNode(
      const ::base::Uuid& id, const ::base::Uuid& new_parent_id, std::optional<int32_t> index,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_MoveBookmarkNode_ResponseParam_ResultPtr MoveBookmarkNode(const ::base::Uuid& id, const ::base::Uuid& new_parent_id, std::optional<int32_t> index);
  void DeleteBookmarkNodes(
      const std::vector<::base::Uuid>& ids,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  BookmarksService_DeleteBookmarkNodes_ResponseParam_ResultPtr DeleteBookmarkNodes(const std::vector<::base::Uuid>& ids);

 private:
  BookmarksService* const proxy_;
};




}  // bookmarks_api::mojom

#endif  // COMPONENTS_BROWSER_APIS_BOOKMARKS_BOOKMARKS_API_MOJOM_TEST_UTILS_H_