chromium/components/optimization_guide/core/model_execution/on_device_model_component.h

// Copyright 2023 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_OPTIMIZATION_GUIDE_CORE_MODEL_EXECUTION_ON_DEVICE_MODEL_COMPONENT_H_
#define COMPONENTS_OPTIMIZATION_GUIDE_CORE_MODEL_EXECUTION_ON_DEVICE_MODEL_COMPONENT_H_

#include <memory>
#include <string>

#include "base/files/file_path.h"
#include "base/functional/callback.h"
#include "base/memory/ref_counted.h"
#include "base/observer_list.h"
#include "base/observer_list_types.h"
#include "base/sequence_checker.h"
#include "base/values.h"
#include "base/version.h"
#include "components/optimization_guide/core/optimization_guide_enums.h"

class PrefService;

namespace optimization_guide {

inline constexpr std::string_view kOnDeviceModelCrxId =;

class OnDeviceModelComponentState;

enum class ModelBasedCapabilityKey;

// Wraps the specification needed to determine compatibility of the
// on-device base model with any feature specific code.
struct OnDeviceBaseModelSpec {};

// Manages the state of the on-device component.
// This object needs to have lifetime equal to the browser process. This is
// achieved by holding a scoped_refptr on KeyedServices which need it, and on
// the installer (which is owned by ComponentUpdaterService).
class OnDeviceModelComponentStateManager
    : public base::RefCounted<OnDeviceModelComponentStateManager> {};

// State of the on-device model component.
class OnDeviceModelComponentState {};

}  // namespace optimization_guide

#endif  // COMPONENTS_OPTIMIZATION_GUIDE_CORE_MODEL_EXECUTION_ON_DEVICE_MODEL_COMPONENT_H_