// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_ASSIST_RANKER_PREDICTOR_CONFIG_H_
#define COMPONENTS_ASSIST_RANKER_PREDICTOR_CONFIG_H_

#include <string>

#include "base/containers/flat_set.h"
#include "base/metrics/field_trial_params.h"

namespace assist_ranker {

// TODO(chrome-ranker-team): Implement other logging types.
enum LogType {
  LOG_NONE = 0,
  LOG_UKM = 1,
};

// Empty feature whitelist used for testing.
const base::flat_set<std::string>* GetEmptyWhitelist();

// This struct holds the config options for logging, loading and field trial
// for a predictor.
struct PredictorConfig {
  PredictorConfig(const char* model_name,
                  const char* logging_name,
                  const char* uma_prefix,
                  const LogType log_type,
                  const base::flat_set<std::string>* feature_whitelist,
                  const base::Feature* field_trial,
                  const base::FeatureParam<std::string>* field_trial_url_param,
                  float field_trial_threshold_replacement_param)
      : model_name(model_name),
        logging_name(logging_name),
        uma_prefix(uma_prefix),
        log_type(log_type),
        feature_whitelist(feature_whitelist),
        field_trial(field_trial),
        field_trial_url_param(field_trial_url_param),
        field_trial_threshold_replacement_param(
            field_trial_threshold_replacement_param) {}
  const char* const model_name;
  const char* const logging_name;
  const char* const uma_prefix;
  const LogType log_type;
  const base::flat_set<std::string>* feature_whitelist;
  const base::Feature* field_trial;
  const base::FeatureParam<std::string>* field_trial_url_param;
  const float field_trial_threshold_replacement_param;
};

}  // namespace assist_ranker

#endif  // COMPONENTS_ASSIST_RANKER_PREDICTOR_CONFIG_H_
