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

edition = "2023";

package optimization_guide.proto;

import "components/optimization_guide/proto/features/common_quality_data.proto";

import "components/optimization_guide/proto/model_quality_metadata.proto";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.features.proto";

option java_outer_classname = "ZeroStateSuggestionsProto";

// DO NOT EDIT THIS FILE DIRECTLY!
//
// This file is generated in g3 and then synced to Chrome. Instead, please refer to
// http://go/chrome-mqls-onboarding (Google-internal link), and then changes will
// be synced with Chrome automatically.

message ZeroStateSuggestionsLoggingData {
  // The feature request.
  ZeroStateSuggestionsRequest request = 1 [features = { field_presence: EXPLICIT }];

  // The feature response.
  ZeroStateSuggestionsResponse response = 2 [features = { field_presence: EXPLICIT }];

  ModelExecutionInfo model_execution_info = 3 [features = { field_presence: EXPLICIT }];
}

// Next ID: 8
message ZeroStateSuggestionsRequest {
  oneof request {
    // The context of the page to generate suggestions for. This is used when
    // the user has chosen to share the active tab with Glic.
    PageContext page_context = 1;

    // The multiple page contexts to generate suggestions for. This is used when
    // the user has chosen to share multiple tabs with Glic.
    ZeroStatePageContextList page_context_list = 3;
  }

  // Whether the request is for FRE mode.
  bool is_fre = 2 [features = { field_presence: EXPLICIT }];

  // The tools that are supported by Glic for this client.
  repeated string supported_tools = 4;

  // The locale to associate with this request.
  //
  // It is the IETF language tag, defined in BCP 47. The region subtag is not
  // included when it adds no distinguishing information to the language tag
  // (e.g. both "en-US" and "fr" are correct here).
  string locale = 5 [features = { field_presence: EXPLICIT }];

  // The Chrome platform that the request is from.
  ChromePlatform chrome_platform = 6 [features = { field_presence: EXPLICIT }];

  // Whether the request is for a managed account.
  bool is_account_managed = 7 [features = { field_presence: EXPLICIT }];
}

message ZeroStatePageContextList {
  repeated ZeroStatePageContext page_contexts = 1;
}

message ZeroStatePageContext {
  // The page context for the shared tab.
  PageContext page_context = 1 [features = { field_presence: EXPLICIT }];

  // Whether the page context is focused.
  bool is_focused = 2 [features = { field_presence: EXPLICIT }];
}

message ZeroStateSuggestionsResponse {
  repeated Suggestion suggestions = 1;
}

message Suggestion {
  string label = 1 [features = { field_presence: EXPLICIT }];
}
