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 { QualityScoreBucketEnum_QualityScoreBucket } from "../enums/quality_score_bucket";
import { AudienceInfo } from "../common/criteria";
import { CombinedAudienceInfo } from "../common/criteria";
import { CustomAudienceInfo } from "../common/criteria";
import { CustomIntentInfo } from "../common/criteria";
import { CustomAffinityInfo } from "../common/criteria";
import { AppPaymentModelInfo } from "../common/criteria";
import { WebpageInfo } from "../common/criteria";
import { UserInterestInfo } from "../common/criteria";
import { TopicInfo } from "../common/criteria";
import { YouTubeChannelInfo } from "../common/criteria";
import { YouTubeVideoInfo } from "../common/criteria";
import { UserListInfo } from "../common/criteria";
import { ParentalStatusInfo } from "../common/criteria";
import { IncomeRangeInfo } from "../common/criteria";
import { GenderInfo } from "../common/criteria";
import { AgeRangeInfo } from "../common/criteria";
import { ListingGroupInfo } from "../common/criteria";
import { MobileApplicationInfo } from "../common/criteria";
import { MobileAppCategoryInfo } from "../common/criteria";
import { PlacementInfo } from "../common/criteria";
import { KeywordInfo } from "../common/criteria";
import { CustomParameter } from "../common/custom_parameter";
import { BiddingSourceEnum_BiddingSource } from "../enums/bidding_source";
import { AdGroupCriterionApprovalStatusEnum_AdGroupCriterionApprovalStatus } from "../enums/ad_group_criterion_approval_status";
import { CriterionSystemServingStatusEnum_CriterionSystemServingStatus } from "../enums/criterion_system_serving_status";
import { CriterionTypeEnum_CriterionType } from "../enums/criterion_type";
import { AdGroupCriterionStatusEnum_AdGroupCriterionStatus } from "../enums/ad_group_criterion_status";
/**
 * An ad group criterion.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.AdGroupCriterion
 */
export interface AdGroupCriterion {
    /**
     * Immutable. The resource name of the ad group criterion.
     * Ad group criterion resource names have the form:
     *
     * `customers/{customer_id}/adGroupCriteria/{ad_group_id}~{criterion_id}`
     *
     * @generated from protobuf field: string resource_name = 1;
     */
    resourceName: string;
    /**
     * Output only. The ID of the criterion.
     *
     * This field is ignored for mutates.
     *
     * @generated from protobuf field: optional int64 criterion_id = 56;
     */
    criterionId?: bigint;
    /**
     * Output only. The display name of the criterion.
     *
     * This field is ignored for mutates.
     *
     * @generated from protobuf field: string display_name = 77;
     */
    displayName: string;
    /**
     * The status of the criterion.
     *
     * This is the status of the ad group criterion entity, set by the client.
     * Note: UI reports may incorporate additional information that affects
     * whether a criterion is eligible to run. In some cases a criterion that's
     * REMOVED in the API can still show as enabled in the UI.
     * For example, campaigns by default show to users of all age ranges unless
     * excluded. The UI will show each age range as "enabled", since they're
     * eligible to see the ads; but AdGroupCriterion.status will show "removed",
     * since no positive criterion was added.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus status = 3;
     */
    status: AdGroupCriterionStatusEnum_AdGroupCriterionStatus;
    /**
     * Output only. Information regarding the quality of the criterion.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupCriterion.QualityInfo quality_info = 4;
     */
    qualityInfo?: AdGroupCriterion_QualityInfo;
    /**
     * Immutable. The ad group to which the criterion belongs.
     *
     * @generated from protobuf field: optional string ad_group = 57;
     */
    adGroup?: string;
    /**
     * Output only. The type of the criterion.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CriterionTypeEnum.CriterionType type = 25;
     */
    type: CriterionTypeEnum_CriterionType;
    /**
     * Immutable. Whether to target (`false`) or exclude (`true`) the criterion.
     *
     * This field is immutable. To switch a criterion from positive to negative,
     * remove then re-add it.
     *
     * @generated from protobuf field: optional bool negative = 58;
     */
    negative?: boolean;
    /**
     * Output only. Serving status of the criterion.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus system_serving_status = 52;
     */
    systemServingStatus: CriterionSystemServingStatusEnum_CriterionSystemServingStatus;
    /**
     * Output only. Approval status of the criterion.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus approval_status = 53;
     */
    approvalStatus: AdGroupCriterionApprovalStatusEnum_AdGroupCriterionApprovalStatus;
    /**
     * Output only. List of disapproval reasons of the criterion.
     *
     * The different reasons for disapproving a criterion can be found here:
     * https://support.google.com/adspolicy/answer/6008942
     *
     * This field is read-only.
     *
     * @generated from protobuf field: repeated string disapproval_reasons = 59;
     */
    disapprovalReasons: string[];
    /**
     * Output only. The resource names of labels attached to this ad group criterion.
     *
     * @generated from protobuf field: repeated string labels = 60;
     */
    labels: string[];
    /**
     * The modifier for the bid when the criterion matches. The modifier must be
     * in the range: 0.1 - 10.0. Most targetable criteria types support modifiers.
     *
     * @generated from protobuf field: optional double bid_modifier = 61;
     */
    bidModifier?: number;
    /**
     * The CPC (cost-per-click) bid.
     *
     * @generated from protobuf field: optional int64 cpc_bid_micros = 62;
     */
    cpcBidMicros?: bigint;
    /**
     * The CPM (cost-per-thousand viewable impressions) bid.
     *
     * @generated from protobuf field: optional int64 cpm_bid_micros = 63;
     */
    cpmBidMicros?: bigint;
    /**
     * The CPV (cost-per-view) bid.
     *
     * @generated from protobuf field: optional int64 cpv_bid_micros = 64;
     */
    cpvBidMicros?: bigint;
    /**
     * The CPC bid amount, expressed as a fraction of the advertised price
     * for some good or service. The valid range for the fraction is [0,1) and the
     * value stored here is 1,000,000 * [fraction].
     *
     * @generated from protobuf field: optional int64 percent_cpc_bid_micros = 65;
     */
    percentCpcBidMicros?: bigint;
    /**
     * Output only. The effective CPC (cost-per-click) bid.
     *
     * @generated from protobuf field: optional int64 effective_cpc_bid_micros = 66;
     */
    effectiveCpcBidMicros?: bigint;
    /**
     * Output only. The effective CPM (cost-per-thousand viewable impressions) bid.
     *
     * @generated from protobuf field: optional int64 effective_cpm_bid_micros = 67;
     */
    effectiveCpmBidMicros?: bigint;
    /**
     * Output only. The effective CPV (cost-per-view) bid.
     *
     * @generated from protobuf field: optional int64 effective_cpv_bid_micros = 68;
     */
    effectiveCpvBidMicros?: bigint;
    /**
     * Output only. The effective Percent CPC bid amount.
     *
     * @generated from protobuf field: optional int64 effective_percent_cpc_bid_micros = 69;
     */
    effectivePercentCpcBidMicros?: bigint;
    /**
     * Output only. Source of the effective CPC bid.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BiddingSourceEnum.BiddingSource effective_cpc_bid_source = 21;
     */
    effectiveCpcBidSource: BiddingSourceEnum_BiddingSource;
    /**
     * Output only. Source of the effective CPM bid.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BiddingSourceEnum.BiddingSource effective_cpm_bid_source = 22;
     */
    effectiveCpmBidSource: BiddingSourceEnum_BiddingSource;
    /**
     * Output only. Source of the effective CPV bid.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BiddingSourceEnum.BiddingSource effective_cpv_bid_source = 23;
     */
    effectiveCpvBidSource: BiddingSourceEnum_BiddingSource;
    /**
     * Output only. Source of the effective Percent CPC bid.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.BiddingSourceEnum.BiddingSource effective_percent_cpc_bid_source = 35;
     */
    effectivePercentCpcBidSource: BiddingSourceEnum_BiddingSource;
    /**
     * Output only. Estimates for criterion bids at various positions.
     *
     * @generated from protobuf field: google.ads.googleads.v11.resources.AdGroupCriterion.PositionEstimates position_estimates = 10;
     */
    positionEstimates?: AdGroupCriterion_PositionEstimates;
    /**
     * The list of possible final URLs after all cross-domain redirects for the
     * ad.
     *
     * @generated from protobuf field: repeated string final_urls = 70;
     */
    finalUrls: string[];
    /**
     * The list of possible final mobile URLs after all cross-domain redirects.
     *
     * @generated from protobuf field: repeated string final_mobile_urls = 71;
     */
    finalMobileUrls: string[];
    /**
     * URL template for appending params to final URL.
     *
     * @generated from protobuf field: optional string final_url_suffix = 72;
     */
    finalUrlSuffix?: string;
    /**
     * The URL template for constructing a tracking URL.
     *
     * @generated from protobuf field: optional string tracking_url_template = 73;
     */
    trackingUrlTemplate?: string;
    /**
     * The list of mappings used to substitute custom parameter tags in a
     * `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.CustomParameter url_custom_parameters = 14;
     */
    urlCustomParameters: CustomParameter[];
    /**
     * @generated from protobuf oneof: criterion
     */
    criterion: {
        oneofKind: "keyword";
        /**
         * Immutable. Keyword.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.KeywordInfo keyword = 27;
         */
        keyword: KeywordInfo;
    } | {
        oneofKind: "placement";
        /**
         * Immutable. Placement.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.PlacementInfo placement = 28;
         */
        placement: PlacementInfo;
    } | {
        oneofKind: "mobileAppCategory";
        /**
         * Immutable. Mobile app category.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.MobileAppCategoryInfo mobile_app_category = 29;
         */
        mobileAppCategory: MobileAppCategoryInfo;
    } | {
        oneofKind: "mobileApplication";
        /**
         * Immutable. Mobile application.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.MobileApplicationInfo mobile_application = 30;
         */
        mobileApplication: MobileApplicationInfo;
    } | {
        oneofKind: "listingGroup";
        /**
         * Immutable. Listing group.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ListingGroupInfo listing_group = 32;
         */
        listingGroup: ListingGroupInfo;
    } | {
        oneofKind: "ageRange";
        /**
         * Immutable. Age range.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AgeRangeInfo age_range = 36;
         */
        ageRange: AgeRangeInfo;
    } | {
        oneofKind: "gender";
        /**
         * Immutable. Gender.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.GenderInfo gender = 37;
         */
        gender: GenderInfo;
    } | {
        oneofKind: "incomeRange";
        /**
         * Immutable. Income range.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.IncomeRangeInfo income_range = 38;
         */
        incomeRange: IncomeRangeInfo;
    } | {
        oneofKind: "parentalStatus";
        /**
         * Immutable. Parental status.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ParentalStatusInfo parental_status = 39;
         */
        parentalStatus: ParentalStatusInfo;
    } | {
        oneofKind: "userList";
        /**
         * Immutable. User List.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserListInfo user_list = 42;
         */
        userList: UserListInfo;
    } | {
        oneofKind: "youtubeVideo";
        /**
         * Immutable. YouTube Video.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.YouTubeVideoInfo youtube_video = 40;
         */
        youtubeVideo: YouTubeVideoInfo;
    } | {
        oneofKind: "youtubeChannel";
        /**
         * Immutable. YouTube Channel.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.YouTubeChannelInfo youtube_channel = 41;
         */
        youtubeChannel: YouTubeChannelInfo;
    } | {
        oneofKind: "topic";
        /**
         * Immutable. Topic.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.TopicInfo topic = 43;
         */
        topic: TopicInfo;
    } | {
        oneofKind: "userInterest";
        /**
         * Immutable. User Interest.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserInterestInfo user_interest = 45;
         */
        userInterest: UserInterestInfo;
    } | {
        oneofKind: "webpage";
        /**
         * Immutable. Webpage
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.WebpageInfo webpage = 46;
         */
        webpage: WebpageInfo;
    } | {
        oneofKind: "appPaymentModel";
        /**
         * Immutable. App Payment Model.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AppPaymentModelInfo app_payment_model = 47;
         */
        appPaymentModel: AppPaymentModelInfo;
    } | {
        oneofKind: "customAffinity";
        /**
         * Immutable. Custom Affinity.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomAffinityInfo custom_affinity = 48;
         */
        customAffinity: CustomAffinityInfo;
    } | {
        oneofKind: "customIntent";
        /**
         * Immutable. Custom Intent.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomIntentInfo custom_intent = 49;
         */
        customIntent: CustomIntentInfo;
    } | {
        oneofKind: "customAudience";
        /**
         * Immutable. Custom Audience.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomAudienceInfo custom_audience = 74;
         */
        customAudience: CustomAudienceInfo;
    } | {
        oneofKind: "combinedAudience";
        /**
         * Immutable. Combined Audience.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CombinedAudienceInfo combined_audience = 75;
         */
        combinedAudience: CombinedAudienceInfo;
    } | {
        oneofKind: "audience";
        /**
         * Immutable. Audience.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AudienceInfo audience = 79;
         */
        audience: AudienceInfo;
    } | {
        oneofKind: undefined;
    };
}
/**
 * A container for ad group criterion quality information.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.AdGroupCriterion.QualityInfo
 */
export interface AdGroupCriterion_QualityInfo {
    /**
     * Output only. The quality score.
     *
     * This field may not be populated if Google does not have enough
     * information to determine a value.
     *
     * @generated from protobuf field: optional int32 quality_score = 5;
     */
    qualityScore?: number;
    /**
     * Output only. The performance of the ad compared to other advertisers.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.QualityScoreBucketEnum.QualityScoreBucket creative_quality_score = 2;
     */
    creativeQualityScore: QualityScoreBucketEnum_QualityScoreBucket;
    /**
     * Output only. The quality score of the landing page.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.QualityScoreBucketEnum.QualityScoreBucket post_click_quality_score = 3;
     */
    postClickQualityScore: QualityScoreBucketEnum_QualityScoreBucket;
    /**
     * Output only. The click-through rate compared to that of other advertisers.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.QualityScoreBucketEnum.QualityScoreBucket search_predicted_ctr = 4;
     */
    searchPredictedCtr: QualityScoreBucketEnum_QualityScoreBucket;
}
/**
 * Estimates for criterion bids at various positions.
 *
 * @generated from protobuf message google.ads.googleads.v11.resources.AdGroupCriterion.PositionEstimates
 */
export interface AdGroupCriterion_PositionEstimates {
    /**
     * Output only. The estimate of the CPC bid required for ad to be shown on first
     * page of search results.
     *
     * @generated from protobuf field: optional int64 first_page_cpc_micros = 6;
     */
    firstPageCpcMicros?: bigint;
    /**
     * Output only. The estimate of the CPC bid required for ad to be displayed in first
     * position, at the top of the first page of search results.
     *
     * @generated from protobuf field: optional int64 first_position_cpc_micros = 7;
     */
    firstPositionCpcMicros?: bigint;
    /**
     * Output only. The estimate of the CPC bid required for ad to be displayed at the top
     * of the first page of search results.
     *
     * @generated from protobuf field: optional int64 top_of_page_cpc_micros = 8;
     */
    topOfPageCpcMicros?: bigint;
    /**
     * Output only. Estimate of how many clicks per week you might get by changing your
     * keyword bid to the value in first_position_cpc_micros.
     *
     * @generated from protobuf field: optional int64 estimated_add_clicks_at_first_position_cpc = 9;
     */
    estimatedAddClicksAtFirstPositionCpc?: bigint;
    /**
     * Output only. Estimate of how your cost per week might change when changing your
     * keyword bid to the value in first_position_cpc_micros.
     *
     * @generated from protobuf field: optional int64 estimated_add_cost_at_first_position_cpc = 10;
     */
    estimatedAddCostAtFirstPositionCpc?: bigint;
}
declare class AdGroupCriterion$Type extends MessageType<AdGroupCriterion> {
    constructor();
    create(value?: PartialMessage<AdGroupCriterion>): AdGroupCriterion;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AdGroupCriterion): AdGroupCriterion;
    internalBinaryWrite(message: AdGroupCriterion, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.AdGroupCriterion
 */
export declare const AdGroupCriterion: AdGroupCriterion$Type;
declare class AdGroupCriterion_QualityInfo$Type extends MessageType<AdGroupCriterion_QualityInfo> {
    constructor();
    create(value?: PartialMessage<AdGroupCriterion_QualityInfo>): AdGroupCriterion_QualityInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AdGroupCriterion_QualityInfo): AdGroupCriterion_QualityInfo;
    internalBinaryWrite(message: AdGroupCriterion_QualityInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.AdGroupCriterion.QualityInfo
 */
export declare const AdGroupCriterion_QualityInfo: AdGroupCriterion_QualityInfo$Type;
declare class AdGroupCriterion_PositionEstimates$Type extends MessageType<AdGroupCriterion_PositionEstimates> {
    constructor();
    create(value?: PartialMessage<AdGroupCriterion_PositionEstimates>): AdGroupCriterion_PositionEstimates;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AdGroupCriterion_PositionEstimates): AdGroupCriterion_PositionEstimates;
    internalBinaryWrite(message: AdGroupCriterion_PositionEstimates, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.resources.AdGroupCriterion.PositionEstimates
 */
export declare const AdGroupCriterion_PositionEstimates: AdGroupCriterion_PositionEstimates$Type;
export {};
