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 { TargetingDimensionEnum_TargetingDimension } from "../enums/targeting_dimension";
/**
 * Settings for the targeting-related features, at the campaign and ad group
 * levels. For more details about the targeting setting, visit
 * https://support.google.com/google-ads/answer/7365594
 *
 * @generated from protobuf message google.ads.googleads.v11.common.TargetingSetting
 */
export interface TargetingSetting {
    /**
     * The per-targeting-dimension setting to restrict the reach of your campaign
     * or ad group.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.TargetRestriction target_restrictions = 1;
     */
    targetRestrictions: TargetRestriction[];
    /**
     * The list of operations changing the target restrictions.
     *
     * Adding a target restriction with a targeting dimension that already exists
     * causes the existing target restriction to be replaced with the new value.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.TargetRestrictionOperation target_restriction_operations = 2;
     */
    targetRestrictionOperations: TargetRestrictionOperation[];
}
/**
 * The list of per-targeting-dimension targeting settings.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.TargetRestriction
 */
export interface TargetRestriction {
    /**
     * The targeting dimension that these settings apply to.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.TargetingDimensionEnum.TargetingDimension targeting_dimension = 1;
     */
    targetingDimension: TargetingDimensionEnum_TargetingDimension;
    /**
     * Indicates whether to restrict your ads to show only for the criteria you
     * have selected for this targeting_dimension, or to target all values for
     * this targeting_dimension and show ads based on your targeting in other
     * TargetingDimensions. A value of `true` means that these criteria will only
     * apply bid modifiers, and not affect targeting. A value of `false` means
     * that these criteria will restrict targeting as well as applying bid
     * modifiers.
     *
     * @generated from protobuf field: optional bool bid_only = 3;
     */
    bidOnly?: boolean;
}
/**
 * Operation to be performed on a target restriction list in a mutate.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.TargetRestrictionOperation
 */
export interface TargetRestrictionOperation {
    /**
     * Type of list operation to perform.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.TargetRestrictionOperation.Operator operator = 1;
     */
    operator: TargetRestrictionOperation_Operator;
    /**
     * The target restriction being added to or removed from the list.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.TargetRestriction value = 2;
     */
    value?: TargetRestriction;
}
/**
 * The operator.
 *
 * @generated from protobuf enum google.ads.googleads.v11.common.TargetRestrictionOperation.Operator
 */
export declare enum TargetRestrictionOperation_Operator {
    /**
     * Unspecified.
     *
     * @generated from protobuf enum value: UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Used for return value only. Represents value unknown in this version.
     *
     * @generated from protobuf enum value: UNKNOWN = 1;
     */
    UNKNOWN = 1,
    /**
     * Add the restriction to the existing restrictions.
     *
     * @generated from protobuf enum value: ADD = 2;
     */
    ADD = 2,
    /**
     * Remove the restriction from the existing restrictions.
     *
     * @generated from protobuf enum value: REMOVE = 3;
     */
    REMOVE = 3
}
declare class TargetingSetting$Type extends MessageType<TargetingSetting> {
    constructor();
    create(value?: PartialMessage<TargetingSetting>): TargetingSetting;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TargetingSetting): TargetingSetting;
    internalBinaryWrite(message: TargetingSetting, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.TargetingSetting
 */
export declare const TargetingSetting: TargetingSetting$Type;
declare class TargetRestriction$Type extends MessageType<TargetRestriction> {
    constructor();
    create(value?: PartialMessage<TargetRestriction>): TargetRestriction;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TargetRestriction): TargetRestriction;
    internalBinaryWrite(message: TargetRestriction, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.TargetRestriction
 */
export declare const TargetRestriction: TargetRestriction$Type;
declare class TargetRestrictionOperation$Type extends MessageType<TargetRestrictionOperation> {
    constructor();
    create(value?: PartialMessage<TargetRestrictionOperation>): TargetRestrictionOperation;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TargetRestrictionOperation): TargetRestrictionOperation;
    internalBinaryWrite(message: TargetRestrictionOperation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.TargetRestrictionOperation
 */
export declare const TargetRestrictionOperation: TargetRestrictionOperation$Type;
export {};
