import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { ValueRuleDeviceTypeEnum_ValueRuleDeviceType } from "../enums/value_rule_device_type";
import { ValueRuleGeoLocationMatchTypeEnum_ValueRuleGeoLocationMatchType } from "../enums/value_rule_geo_location_match_type";
import { ValueRuleOperationEnum_ValueRuleOperation } from "../enums/value_rule_operation";
import { ConversionValueRuleStatusEnum_ConversionValueRuleStatus } from "../enums/conversion_value_rule_status";
/**
 * A conversion value rule
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ConversionValueRule
 */
export interface ConversionValueRule {
    /**
     * Immutable. The resource name of the conversion value rule.
     * Conversion value rule resource names have the form:
     *
     * `customers/{customer_id}/conversionValueRules/{conversion_value_rule_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the conversion value rule.
     *
     * @generated from protobuf field: int64 id = 2;
     */
    id: bigint;
    /**
     * Action applied when the rule is triggered.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAction action = 3;
     */
    action?: ConversionValueRule_ValueRuleAction;
    /**
     * Condition for Geo location that must be satisfied for the value rule to
     * apply.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleGeoLocationCondition geo_location_condition = 4;
     */
    geoLocationCondition?: ConversionValueRule_ValueRuleGeoLocationCondition;
    /**
     * Condition for device type that must be satisfied for the value rule to
     * apply.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleDeviceCondition device_condition = 5;
     */
    deviceCondition?: ConversionValueRule_ValueRuleDeviceCondition;
    /**
     * Condition for audience that must be satisfied for the value rule to apply.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAudienceCondition audience_condition = 6;
     */
    audienceCondition?: ConversionValueRule_ValueRuleAudienceCondition;
    /**
     * Output only. The resource name of the conversion value rule's owner customer.
     * When the value rule is inherited from a manager
     * customer, owner_customer will be the resource name of the manager whereas
     * the customer in the resource_name will be of the requesting serving
     * customer.
     * ** Read-only **
     *
     * @generated from protobuf field: string owner_customer = 7;
     */
    ownerCustomer: string;
    /**
     * The status of the conversion value rule.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus status = 8;
     */
    status: ConversionValueRuleStatusEnum_ConversionValueRuleStatus;
}
/**
 * Action applied when rule is applied.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAction
 */
export interface ConversionValueRule_ValueRuleAction {
    /**
     * Specifies applied operation.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ValueRuleOperationEnum.ValueRuleOperation operation = 1;
     */
    operation: ValueRuleOperationEnum_ValueRuleOperation;
    /**
     * Specifies applied value.
     *
     * @generated from protobuf field: double value = 2;
     */
    value: number;
}
/**
 * Condition on Geo dimension.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleGeoLocationCondition
 */
export interface ConversionValueRule_ValueRuleGeoLocationCondition {
    /**
     * Geo locations that advertisers want to exclude.
     *
     * @generated from protobuf field: repeated string excluded_geo_target_constants = 1;
     */
    excludedGeoTargetConstants: string[];
    /**
     * Excluded Geo location match type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType excluded_geo_match_type = 2;
     */
    excludedGeoMatchType: ValueRuleGeoLocationMatchTypeEnum_ValueRuleGeoLocationMatchType;
    /**
     * Geo locations that advertisers want to include.
     *
     * @generated from protobuf field: repeated string geo_target_constants = 3;
     */
    geoTargetConstants: string[];
    /**
     * Included Geo location match type.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType geo_match_type = 4;
     */
    geoMatchType: ValueRuleGeoLocationMatchTypeEnum_ValueRuleGeoLocationMatchType;
}
/**
 * Condition on Device dimension.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleDeviceCondition
 */
export interface ConversionValueRule_ValueRuleDeviceCondition {
    /**
     * Value for device type condition.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.ValueRuleDeviceTypeEnum.ValueRuleDeviceType device_types = 1;
     */
    deviceTypes: ValueRuleDeviceTypeEnum_ValueRuleDeviceType[];
}
/**
 * Condition on Audience dimension.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAudienceCondition
 */
export interface ConversionValueRule_ValueRuleAudienceCondition {
    /**
     * User Lists.
     *
     * @generated from protobuf field: repeated string user_lists = 1;
     */
    userLists: string[];
    /**
     * User Interests.
     *
     * @generated from protobuf field: repeated string user_interests = 2;
     */
    userInterests: string[];
}
declare class ConversionValueRule$Type extends MessageType<ConversionValueRule> {
    constructor();
    create(value?: PartialMessage<ConversionValueRule>): ConversionValueRule;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConversionValueRule): ConversionValueRule;
    internalBinaryWrite(message: ConversionValueRule, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ConversionValueRule
 */
export declare const ConversionValueRule: ConversionValueRule$Type;
declare class ConversionValueRule_ValueRuleAction$Type extends MessageType<ConversionValueRule_ValueRuleAction> {
    constructor();
    create(value?: PartialMessage<ConversionValueRule_ValueRuleAction>): ConversionValueRule_ValueRuleAction;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConversionValueRule_ValueRuleAction): ConversionValueRule_ValueRuleAction;
    internalBinaryWrite(message: ConversionValueRule_ValueRuleAction, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAction
 */
export declare const ConversionValueRule_ValueRuleAction: ConversionValueRule_ValueRuleAction$Type;
declare class ConversionValueRule_ValueRuleGeoLocationCondition$Type extends MessageType<ConversionValueRule_ValueRuleGeoLocationCondition> {
    constructor();
    create(value?: PartialMessage<ConversionValueRule_ValueRuleGeoLocationCondition>): ConversionValueRule_ValueRuleGeoLocationCondition;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConversionValueRule_ValueRuleGeoLocationCondition): ConversionValueRule_ValueRuleGeoLocationCondition;
    internalBinaryWrite(message: ConversionValueRule_ValueRuleGeoLocationCondition, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleGeoLocationCondition
 */
export declare const ConversionValueRule_ValueRuleGeoLocationCondition: ConversionValueRule_ValueRuleGeoLocationCondition$Type;
declare class ConversionValueRule_ValueRuleDeviceCondition$Type extends MessageType<ConversionValueRule_ValueRuleDeviceCondition> {
    constructor();
    create(value?: PartialMessage<ConversionValueRule_ValueRuleDeviceCondition>): ConversionValueRule_ValueRuleDeviceCondition;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConversionValueRule_ValueRuleDeviceCondition): ConversionValueRule_ValueRuleDeviceCondition;
    internalBinaryWrite(message: ConversionValueRule_ValueRuleDeviceCondition, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleDeviceCondition
 */
export declare const ConversionValueRule_ValueRuleDeviceCondition: ConversionValueRule_ValueRuleDeviceCondition$Type;
declare class ConversionValueRule_ValueRuleAudienceCondition$Type extends MessageType<ConversionValueRule_ValueRuleAudienceCondition> {
    constructor();
    create(value?: PartialMessage<ConversionValueRule_ValueRuleAudienceCondition>): ConversionValueRule_ValueRuleAudienceCondition;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ConversionValueRule_ValueRuleAudienceCondition): ConversionValueRule_ValueRuleAudienceCondition;
    internalBinaryWrite(message: ConversionValueRule_ValueRuleAudienceCondition, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.ConversionValueRule.ValueRuleAudienceCondition
 */
export declare const ConversionValueRule_ValueRuleAudienceCondition: ConversionValueRule_ValueRuleAudienceCondition$Type;
export {};
