#ifndef COMPONENTS_COMMERCE_CORE_SHOPPING_SERVICE_H_
#define COMPONENTS_COMMERCE_CORE_SHOPPING_SERVICE_H_
#include <map>
#include <memory>
#include <string>
#include <tuple>
#include <unordered_set>
#include <utility>
#include "base/cancelable_callback.h"
#include "base/containers/flat_set.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "base/scoped_observation_traits.h"
#include "base/sequence_checker.h"
#include "base/supports_user_data.h"
#include "components/commerce/core/account_checker.h"
#include "components/commerce/core/commerce_info_cache.h"
#include "components/commerce/core/commerce_types.h"
#include "components/commerce/core/compare/cluster_manager.h"
#include "components/commerce/core/product_specifications/product_specifications_service.h"
#include "components/commerce/core/product_specifications/product_specifications_set.h"
#include "components/commerce/core/proto/commerce_subscription_db_content.pb.h"
#include "components/commerce/core/proto/discounts_db_content.pb.h"
#include "components/commerce/core/proto/parcel_tracking_db_content.pb.h"
#include "components/commerce/core/subscriptions/commerce_subscription.h"
#include "components/commerce/core/web_extractor.h"
#include "components/history/core/browser/history_service.h"
#include "components/history/core/browser/history_service_observer.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/optimization_guide/core/optimization_guide_decision.h"
#include "components/unified_consent/consent_throttle.h"
#include "services/data_decoder/public/cpp/data_decoder.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
class GURL;
class PrefService;
template <typename T>
class SessionProtoStorage;
namespace base {
class Value;
}
namespace bookmarks {
class BookmarkModel;
class BookmarkNode;
}
namespace network {
class SharedURLLoaderFactory;
}
namespace optimization_guide {
class OptimizationGuideDecider;
class OptimizationMetadata;
}
namespace power_bookmarks {
class PowerBookmarkService;
}
namespace signin {
class IdentityManager;
}
namespace syncer {
class SyncService;
}
namespace commerce {
extern const char kImageAvailabilityHistogramName[];
extern const char kProductInfoLocalExtractionTime[];
extern const uint64_t kProductInfoLocalExtractionDelayMs;
enum class ProductImageAvailability { … };
enum class ProductInfoFallback { … };
namespace metrics {
class ScheduledMetricsManager;
}
class BookmarkUpdateManager;
class DiscountsStorage;
class ParcelsManager;
class ProductSpecificationsServerProxy;
class ProductSpecificationsService;
class ShoppingPowerBookmarkDataProvider;
class ShoppingBookmarkModelObserver;
class SubscriptionsManager;
class SubscriptionsObserver;
class WebWrapper;
enum class SubscriptionType;
struct CommerceSubscription;
enum class ShoppingPageType { … };
DiscountsPair;
DiscountsOptGuideCallback;
RepeatingProductInfoCallback;
BookmarkProductInfoUpdatedCallback;
UrlProductIdentifierTuple;
UrlProductIdentifierTupleCallback;
class ShoppingService : public KeyedService,
public base::SupportsUserData,
public history::HistoryServiceObserver { … };
}
namespace base {
template <>
struct ScopedObservationTraits<commerce::ShoppingService,
commerce::SubscriptionsObserver> { … };
}
#endif