// Copyright 2014 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_OMNIBOX_BROWSER_SUGGESTION_ANSWER_H_
#define COMPONENTS_OMNIBOX_BROWSER_SUGGESTION_ANSWER_H_

#include <memory>
#include <optional>
#include <string>
#include <vector>

#include "base/memory/ptr_util.h"
#include "base/values.h"
#include "build/build_config.h"
#include "third_party/omnibox_proto/answer_type.pb.h"
#include "third_party/omnibox_proto/rich_answer_template.pb.h"
#include "url/gurl.h"

namespace omnibox::answer_data_parser {
// These values are named and numbered to match a specification at go/ais_api.
// The values are only used for answer results.
//
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.omnibox
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: AnswerTextType
enum TextType {
  // Deprecated: ANSWER = 1,
  // Deprecated: HEADLINE = 2,
  TOP_ALIGNED = 3,
  // Deprecated: DESCRIPTION = 4,
  DESCRIPTION_NEGATIVE = 5,
  DESCRIPTION_POSITIVE = 6,
  // Deprecated: MORE_INFO = 7,
  SUGGESTION = 8,
  // Deprecated: SUGGESTION_POSITIVE = 9,
  // Deprecated: SUGGESTION_NEGATIVE = 10,
  // Deprecated: SUGGESTION_LINK = 11,
  // Deprecated: STATUS = 12,
  PERSONALIZED_SUGGESTION = 13,
  // Deprecated: IMMERSIVE_DESCRIPTION_TEXT = 14,
  // Deprecated: DATE_TEXT = 15,
  // Deprecated: PREVIEW_TEXT = 16,
  ANSWER_TEXT_MEDIUM = 17,
  ANSWER_TEXT_LARGE = 18,
  SUGGESTION_SECONDARY_TEXT_SMALL = 19,
  SUGGESTION_SECONDARY_TEXT_MEDIUM = 20,
};

GURL GetFormattedURL(const std::string* url_string);

// Logs which answer type was used (if any) at the time a user used the
// omnibox to go somewhere.
void LogAnswerUsed(omnibox::AnswerType answer_type);
}  // namespace omnibox::answer_data_parser

#endif  // COMPONENTS_OMNIBOX_BROWSER_SUGGESTION_ANSWER_H_
