// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ads.googleads.v25.common;

option csharp_namespace = "Google.Ads.GoogleAds.V25.Common";
option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v25/common;common";
option java_multiple_files = true;
option java_outer_classname = "GoalCommonProto";
option java_package = "com.google.ads.googleads.v25.common";
option objc_class_prefix = "GAA";
option php_namespace = "Google\\Ads\\GoogleAds\\V25\\Common";
option ruby_package = "Google::Ads::GoogleAds::V25::Common";

// Proto file describing GoalCommon.

// Lifecycle goal optimization value settings.
message CustomerLifecycleOptimizationValueSettings {
  // Conversion value adjustment to be applied to (non high lifetime value)
  // customers in the corresponding lifecycle. For example, for retention goals,
  // conversion value adjustment is the incremental conversion value for lapsed
  // customers who are not of high lifetime value.
  oneof value_adjustment {
    // Incremental conversion value.
    double additional_value = 3;

    // Conversion value multiplier.
    double value_multiplier = 4;
  }

  // Conversion value adjustment to be applied to customers in the corresponding
  // lifecycle and identified as high lifetime value. For example, for customer
  // retention goals, high lifetime value adjustment is the incremental
  // conversion value for lapsed customers who are of high lifetime value. High
  // lifetime value should be greater than value, if set.
  oneof high_lifetime_value_adjustment {
    // Incremental high lifetime conversion value.
    double additional_high_lifetime_value = 5;

    // High lifetime conversion value multiplier.
    double high_lifetime_value_multiplier = 6;
  }
}
