chromium/components/visited_url_ranking/public/url_visit.h

// Copyright 2024 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_VISITED_URL_RANKING_PUBLIC_URL_VISIT_H_
#define COMPONENTS_VISITED_URL_RANKING_PUBLIC_URL_VISIT_H_

#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include <variant>
#include <vector>

#include "base/functional/callback.h"
#include "base/time/time.h"
#include "components/history/core/browser/history_types.h"
#include "components/history/core/browser/url_row.h"
#include "components/segmentation_platform/public/trigger.h"
#include "components/sync_device_info/device_info.h"
#include "components/visited_url_ranking/public/decoration.h"
#include "url/gurl.h"

namespace visited_url_ranking {

// The currently supported URL visit data fetchers that may participate in a
// fetch request.
enum class Fetcher {};

// URL visit associated data.
struct URLVisit {};

/**
 * A wrapper data type that encompasses URL visit related data from various
 * sources.
 */
struct URLVisitAggregate {};

// Helper to visit each variant of URLVisitVariant.
// Usage:
//   std::visit(URLVisitVariantHelper{
//         [](Variant1& variant1) {},
//         [](Variant2& variant1) {},
//         [](Variant3& variant1) {},
//      variant_data);
template <class... Ts>
struct URLVisitVariantHelper : Ts... {};

}  // namespace visited_url_ranking

#endif  // COMPONENTS_VISITED_URL_RANKING_PUBLIC_URL_VISIT_H_