#ifndef COMPONENTS_SUPERVISED_USER_CORE_BROWSER_KIDS_MANAGEMENT_API_FETCHER_H_
#define COMPONENTS_SUPERVISED_USER_CORE_BROWSER_KIDS_MANAGEMENT_API_FETCHER_H_
#include <memory>
#include "base/memory/scoped_refptr.h"
#include "components/supervised_user/core/browser/fetcher_config.h"
#include "components/supervised_user/core/browser/proto/kidsmanagement_messages.pb.h"
#include "components/supervised_user/core/browser/proto_fetcher.h"
namespace network {
class SharedURLLoaderFactory;
}
namespace signin {
class IdentityManager;
}
namespace version_info {
enum class Channel;
}
namespace supervised_user {
ClassifyUrlFetcher;
ListFamilyMembersFetcher;
PermissionRequestFetcher;
std::unique_ptr<ProtoFetcher<kidsmanagement::ListMembersResponse>>
FetchListFamilyMembers(
signin::IdentityManager& identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
TypedProtoFetcher<kidsmanagement::ListMembersResponse>::Callback callback,
const FetcherConfig& config = kListFamilyMembersConfig);
std::unique_ptr<ProtoFetcher<kidsmanagement::ClassifyUrlResponse>>
CreateClassifyURLFetcher(
signin::IdentityManager& identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const kidsmanagement::ClassifyUrlRequest& request,
const FetcherConfig& config = kClassifyUrlConfig,
version_info::Channel channel = version_info::Channel::UNKNOWN);
std::unique_ptr<ProtoFetcher<kidsmanagement::CreatePermissionRequestResponse>>
CreatePermissionRequestFetcher(
signin::IdentityManager& identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const kidsmanagement::PermissionRequest& request,
const FetcherConfig& config = kCreatePermissionRequestConfig);
std::unique_ptr<ProtoFetcher<Response>> CreateTestFetcher(
signin::IdentityManager& identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const Request& request,
const FetcherConfig& fetcher_config);
}
#endif