// 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.

edition = "2023";

package optimization_guide.proto;

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

message ProtoDescriptor {
  // The tag number of the proto field.
  int32 tag_number = 1 [features.field_presence = IMPLICIT];
}

message ProtoField {
  // The descriptors to get to the desired field.
  //
  // If more than one entry, it is expected that all entries prior to the last
  // one are message types.
  repeated ProtoDescriptor proto_descriptors = 1;
}

message Value {
  oneof type {
    // int64 type.
    int64 int64_value = 1;

    // int32 type. Enums are int32s.
    int32 int32_value = 2;

    // float type.
    double float_value = 3;

    // string type.
    string string_value = 4;

    // boolean type.
    bool boolean_value = 5;
  }
}
