# @generated by mypy-protobuf.  Do not edit manually!
import sys
from typing import (
    Iterable as typing___Iterable,
    Optional as typing___Optional,
    Text as typing___Text,
)

from google.protobuf.descriptor import (
    Descriptor as google___protobuf___descriptor___Descriptor,
    FileDescriptor as google___protobuf___descriptor___FileDescriptor,
)
from google.protobuf.internal.containers import (
    RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer,
)
from google.protobuf.message import Message as google___protobuf___message___Message
from google.protobuf.wrappers_pb2 import (
    BoolValue as google___protobuf___wrappers_pb2___BoolValue,
    DoubleValue as google___protobuf___wrappers_pb2___DoubleValue,
    Int64Value as google___protobuf___wrappers_pb2___Int64Value,
    StringValue as google___protobuf___wrappers_pb2___StringValue,
)
from typing_extensions import Literal as typing_extensions___Literal

from google.ads.google_ads.v3.proto.common.criteria_pb2 import (
    KeywordInfo as google___ads___googleads___v3___common___criteria_pb2___KeywordInfo,
)
from google.ads.google_ads.v3.proto.common.extensions_pb2 import (
    CallFeedItem as google___ads___googleads___v3___common___extensions_pb2___CallFeedItem,
    CalloutFeedItem as google___ads___googleads___v3___common___extensions_pb2___CalloutFeedItem,
    SitelinkFeedItem as google___ads___googleads___v3___common___extensions_pb2___SitelinkFeedItem,
)
from google.ads.google_ads.v3.proto.enums.keyword_match_type_pb2 import (
    KeywordMatchTypeEnum as google___ads___googleads___v3___enums___keyword_match_type_pb2___KeywordMatchTypeEnum,
)
from google.ads.google_ads.v3.proto.enums.recommendation_type_pb2 import (
    RecommendationTypeEnum as google___ads___googleads___v3___enums___recommendation_type_pb2___RecommendationTypeEnum,
)
from google.ads.google_ads.v3.proto.enums.target_cpa_opt_in_recommendation_goal_pb2 import (
    TargetCpaOptInRecommendationGoalEnum as google___ads___googleads___v3___enums___target_cpa_opt_in_recommendation_goal_pb2___TargetCpaOptInRecommendationGoalEnum,
)
from google.ads.google_ads.v3.proto.resources.ad_pb2 import (
    Ad as google___ads___googleads___v3___resources___ad_pb2___Ad,
)

builtin___bool = bool
builtin___bytes = bytes
builtin___float = float
builtin___int = int

DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

class Recommendation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    class RecommendationImpact(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def base_metrics(self) -> type___Recommendation.RecommendationMetrics: ...
        @property
        def potential_metrics(self) -> type___Recommendation.RecommendationMetrics: ...
        def __init__(
            self,
            *,
            base_metrics: typing___Optional[
                type___Recommendation.RecommendationMetrics
            ] = None,
            potential_metrics: typing___Optional[
                type___Recommendation.RecommendationMetrics
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "base_metrics",
                b"base_metrics",
                "potential_metrics",
                b"potential_metrics",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "base_metrics",
                b"base_metrics",
                "potential_metrics",
                b"potential_metrics",
            ],
        ) -> None: ...
    type___RecommendationImpact = RecommendationImpact
    class RecommendationMetrics(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def impressions(self) -> google___protobuf___wrappers_pb2___DoubleValue: ...
        @property
        def clicks(self) -> google___protobuf___wrappers_pb2___DoubleValue: ...
        @property
        def cost_micros(self) -> google___protobuf___wrappers_pb2___Int64Value: ...
        @property
        def conversions(self) -> google___protobuf___wrappers_pb2___DoubleValue: ...
        @property
        def video_views(self) -> google___protobuf___wrappers_pb2___DoubleValue: ...
        def __init__(
            self,
            *,
            impressions: typing___Optional[
                google___protobuf___wrappers_pb2___DoubleValue
            ] = None,
            clicks: typing___Optional[
                google___protobuf___wrappers_pb2___DoubleValue
            ] = None,
            cost_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
            conversions: typing___Optional[
                google___protobuf___wrappers_pb2___DoubleValue
            ] = None,
            video_views: typing___Optional[
                google___protobuf___wrappers_pb2___DoubleValue
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "clicks",
                b"clicks",
                "conversions",
                b"conversions",
                "cost_micros",
                b"cost_micros",
                "impressions",
                b"impressions",
                "video_views",
                b"video_views",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "clicks",
                b"clicks",
                "conversions",
                b"conversions",
                "cost_micros",
                b"cost_micros",
                "impressions",
                b"impressions",
                "video_views",
                b"video_views",
            ],
        ) -> None: ...
    type___RecommendationMetrics = RecommendationMetrics
    class CampaignBudgetRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        class CampaignBudgetRecommendationOption(google___protobuf___message___Message):
            DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
            @property
            def budget_amount_micros(
                self,
            ) -> google___protobuf___wrappers_pb2___Int64Value: ...
            @property
            def impact(self) -> type___Recommendation.RecommendationImpact: ...
            def __init__(
                self,
                *,
                budget_amount_micros: typing___Optional[
                    google___protobuf___wrappers_pb2___Int64Value
                ] = None,
                impact: typing___Optional[
                    type___Recommendation.RecommendationImpact
                ] = None,
            ) -> None: ...
            def HasField(
                self,
                field_name: typing_extensions___Literal[
                    "budget_amount_micros", b"budget_amount_micros", "impact", b"impact"
                ],
            ) -> builtin___bool: ...
            def ClearField(
                self,
                field_name: typing_extensions___Literal[
                    "budget_amount_micros", b"budget_amount_micros", "impact", b"impact"
                ],
            ) -> None: ...
        type___CampaignBudgetRecommendationOption = CampaignBudgetRecommendationOption
        @property
        def current_budget_amount_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        @property
        def recommended_budget_amount_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        @property
        def budget_options(
            self,
        ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
            type___Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption
        ]: ...
        def __init__(
            self,
            *,
            current_budget_amount_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
            recommended_budget_amount_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
            budget_options: typing___Optional[
                typing___Iterable[
                    type___Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption
                ]
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "current_budget_amount_micros",
                b"current_budget_amount_micros",
                "recommended_budget_amount_micros",
                b"recommended_budget_amount_micros",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "budget_options",
                b"budget_options",
                "current_budget_amount_micros",
                b"current_budget_amount_micros",
                "recommended_budget_amount_micros",
                b"recommended_budget_amount_micros",
            ],
        ) -> None: ...
    type___CampaignBudgetRecommendation = CampaignBudgetRecommendation
    class KeywordRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def keyword(
            self,
        ) -> google___ads___googleads___v3___common___criteria_pb2___KeywordInfo: ...
        @property
        def recommended_cpc_bid_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        def __init__(
            self,
            *,
            keyword: typing___Optional[
                google___ads___googleads___v3___common___criteria_pb2___KeywordInfo
            ] = None,
            recommended_cpc_bid_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "keyword",
                b"keyword",
                "recommended_cpc_bid_micros",
                b"recommended_cpc_bid_micros",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "keyword",
                b"keyword",
                "recommended_cpc_bid_micros",
                b"recommended_cpc_bid_micros",
            ],
        ) -> None: ...
    type___KeywordRecommendation = KeywordRecommendation
    class MaximizeConversionsOptInRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def recommended_budget_amount_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        def __init__(
            self,
            *,
            recommended_budget_amount_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_budget_amount_micros", b"recommended_budget_amount_micros"
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_budget_amount_micros", b"recommended_budget_amount_micros"
            ],
        ) -> None: ...
    type___MaximizeConversionsOptInRecommendation = (
        MaximizeConversionsOptInRecommendation
    )
    class TextAdRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def ad(self) -> google___ads___googleads___v3___resources___ad_pb2___Ad: ...
        @property
        def creation_date(self) -> google___protobuf___wrappers_pb2___StringValue: ...
        @property
        def auto_apply_date(self) -> google___protobuf___wrappers_pb2___StringValue: ...
        def __init__(
            self,
            *,
            ad: typing___Optional[
                google___ads___googleads___v3___resources___ad_pb2___Ad
            ] = None,
            creation_date: typing___Optional[
                google___protobuf___wrappers_pb2___StringValue
            ] = None,
            auto_apply_date: typing___Optional[
                google___protobuf___wrappers_pb2___StringValue
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "ad",
                b"ad",
                "auto_apply_date",
                b"auto_apply_date",
                "creation_date",
                b"creation_date",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "ad",
                b"ad",
                "auto_apply_date",
                b"auto_apply_date",
                "creation_date",
                b"creation_date",
            ],
        ) -> None: ...
    type___TextAdRecommendation = TextAdRecommendation
    class MoveUnusedBudgetRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def excess_campaign_budget(
            self,
        ) -> google___protobuf___wrappers_pb2___StringValue: ...
        @property
        def budget_recommendation(
            self,
        ) -> type___Recommendation.CampaignBudgetRecommendation: ...
        def __init__(
            self,
            *,
            excess_campaign_budget: typing___Optional[
                google___protobuf___wrappers_pb2___StringValue
            ] = None,
            budget_recommendation: typing___Optional[
                type___Recommendation.CampaignBudgetRecommendation
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "budget_recommendation",
                b"budget_recommendation",
                "excess_campaign_budget",
                b"excess_campaign_budget",
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "budget_recommendation",
                b"budget_recommendation",
                "excess_campaign_budget",
                b"excess_campaign_budget",
            ],
        ) -> None: ...
    type___MoveUnusedBudgetRecommendation = MoveUnusedBudgetRecommendation
    class TargetCpaOptInRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        class TargetCpaOptInRecommendationOption(google___protobuf___message___Message):
            DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
            goal: google___ads___googleads___v3___enums___target_cpa_opt_in_recommendation_goal_pb2___TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoalValue = ...
            @property
            def target_cpa_micros(
                self,
            ) -> google___protobuf___wrappers_pb2___Int64Value: ...
            @property
            def required_campaign_budget_amount_micros(
                self,
            ) -> google___protobuf___wrappers_pb2___Int64Value: ...
            @property
            def impact(self) -> type___Recommendation.RecommendationImpact: ...
            def __init__(
                self,
                *,
                goal: typing___Optional[
                    google___ads___googleads___v3___enums___target_cpa_opt_in_recommendation_goal_pb2___TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoalValue
                ] = None,
                target_cpa_micros: typing___Optional[
                    google___protobuf___wrappers_pb2___Int64Value
                ] = None,
                required_campaign_budget_amount_micros: typing___Optional[
                    google___protobuf___wrappers_pb2___Int64Value
                ] = None,
                impact: typing___Optional[
                    type___Recommendation.RecommendationImpact
                ] = None,
            ) -> None: ...
            def HasField(
                self,
                field_name: typing_extensions___Literal[
                    "impact",
                    b"impact",
                    "required_campaign_budget_amount_micros",
                    b"required_campaign_budget_amount_micros",
                    "target_cpa_micros",
                    b"target_cpa_micros",
                ],
            ) -> builtin___bool: ...
            def ClearField(
                self,
                field_name: typing_extensions___Literal[
                    "goal",
                    b"goal",
                    "impact",
                    b"impact",
                    "required_campaign_budget_amount_micros",
                    b"required_campaign_budget_amount_micros",
                    "target_cpa_micros",
                    b"target_cpa_micros",
                ],
            ) -> None: ...
        type___TargetCpaOptInRecommendationOption = TargetCpaOptInRecommendationOption
        @property
        def options(
            self,
        ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
            type___Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption
        ]: ...
        @property
        def recommended_target_cpa_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        def __init__(
            self,
            *,
            options: typing___Optional[
                typing___Iterable[
                    type___Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption
                ]
            ] = None,
            recommended_target_cpa_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_target_cpa_micros", b"recommended_target_cpa_micros"
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "options",
                b"options",
                "recommended_target_cpa_micros",
                b"recommended_target_cpa_micros",
            ],
        ) -> None: ...
    type___TargetCpaOptInRecommendation = TargetCpaOptInRecommendation
    class SearchPartnersOptInRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        def __init__(self,) -> None: ...
    type___SearchPartnersOptInRecommendation = SearchPartnersOptInRecommendation
    class EnhancedCpcOptInRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        def __init__(self,) -> None: ...
    type___EnhancedCpcOptInRecommendation = EnhancedCpcOptInRecommendation
    class MaximizeClicksOptInRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def recommended_budget_amount_micros(
            self,
        ) -> google___protobuf___wrappers_pb2___Int64Value: ...
        def __init__(
            self,
            *,
            recommended_budget_amount_micros: typing___Optional[
                google___protobuf___wrappers_pb2___Int64Value
            ] = None,
        ) -> None: ...
        def HasField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_budget_amount_micros", b"recommended_budget_amount_micros"
            ],
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_budget_amount_micros", b"recommended_budget_amount_micros"
            ],
        ) -> None: ...
    type___MaximizeClicksOptInRecommendation = MaximizeClicksOptInRecommendation
    class OptimizeAdRotationRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        def __init__(self,) -> None: ...
    type___OptimizeAdRotationRecommendation = OptimizeAdRotationRecommendation
    class SitelinkExtensionRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def recommended_extensions(
            self,
        ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
            google___ads___googleads___v3___common___extensions_pb2___SitelinkFeedItem
        ]: ...
        def __init__(
            self,
            *,
            recommended_extensions: typing___Optional[
                typing___Iterable[
                    google___ads___googleads___v3___common___extensions_pb2___SitelinkFeedItem
                ]
            ] = None,
        ) -> None: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_extensions", b"recommended_extensions"
            ],
        ) -> None: ...
    type___SitelinkExtensionRecommendation = SitelinkExtensionRecommendation
    class CalloutExtensionRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def recommended_extensions(
            self,
        ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
            google___ads___googleads___v3___common___extensions_pb2___CalloutFeedItem
        ]: ...
        def __init__(
            self,
            *,
            recommended_extensions: typing___Optional[
                typing___Iterable[
                    google___ads___googleads___v3___common___extensions_pb2___CalloutFeedItem
                ]
            ] = None,
        ) -> None: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_extensions", b"recommended_extensions"
            ],
        ) -> None: ...
    type___CalloutExtensionRecommendation = CalloutExtensionRecommendation
    class CallExtensionRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        @property
        def recommended_extensions(
            self,
        ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
            google___ads___googleads___v3___common___extensions_pb2___CallFeedItem
        ]: ...
        def __init__(
            self,
            *,
            recommended_extensions: typing___Optional[
                typing___Iterable[
                    google___ads___googleads___v3___common___extensions_pb2___CallFeedItem
                ]
            ] = None,
        ) -> None: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "recommended_extensions", b"recommended_extensions"
            ],
        ) -> None: ...
    type___CallExtensionRecommendation = CallExtensionRecommendation
    class KeywordMatchTypeRecommendation(google___protobuf___message___Message):
        DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
        recommended_match_type: google___ads___googleads___v3___enums___keyword_match_type_pb2___KeywordMatchTypeEnum.KeywordMatchTypeValue = ...
        @property
        def keyword(
            self,
        ) -> google___ads___googleads___v3___common___criteria_pb2___KeywordInfo: ...
        def __init__(
            self,
            *,
            keyword: typing___Optional[
                google___ads___googleads___v3___common___criteria_pb2___KeywordInfo
            ] = None,
            recommended_match_type: typing___Optional[
                google___ads___googleads___v3___enums___keyword_match_type_pb2___KeywordMatchTypeEnum.KeywordMatchTypeValue
            ] = None,
        ) -> None: ...
        def HasField(
            self, field_name: typing_extensions___Literal["keyword", b"keyword"]
        ) -> builtin___bool: ...
        def ClearField(
            self,
            field_name: typing_extensions___Literal[
                "keyword",
                b"keyword",
                "recommended_match_type",
                b"recommended_match_type",
            ],
        ) -> None: ...
    type___KeywordMatchTypeRecommendation = KeywordMatchTypeRecommendation

    resource_name: typing___Text = ...
    type: google___ads___googleads___v3___enums___recommendation_type_pb2___RecommendationTypeEnum.RecommendationTypeValue = ...
    @property
    def impact(self) -> type___Recommendation.RecommendationImpact: ...
    @property
    def campaign_budget(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def campaign(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def ad_group(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def dismissed(self) -> google___protobuf___wrappers_pb2___BoolValue: ...
    @property
    def campaign_budget_recommendation(
        self,
    ) -> type___Recommendation.CampaignBudgetRecommendation: ...
    @property
    def keyword_recommendation(self) -> type___Recommendation.KeywordRecommendation: ...
    @property
    def text_ad_recommendation(self) -> type___Recommendation.TextAdRecommendation: ...
    @property
    def target_cpa_opt_in_recommendation(
        self,
    ) -> type___Recommendation.TargetCpaOptInRecommendation: ...
    @property
    def maximize_conversions_opt_in_recommendation(
        self,
    ) -> type___Recommendation.MaximizeConversionsOptInRecommendation: ...
    @property
    def enhanced_cpc_opt_in_recommendation(
        self,
    ) -> type___Recommendation.EnhancedCpcOptInRecommendation: ...
    @property
    def search_partners_opt_in_recommendation(
        self,
    ) -> type___Recommendation.SearchPartnersOptInRecommendation: ...
    @property
    def maximize_clicks_opt_in_recommendation(
        self,
    ) -> type___Recommendation.MaximizeClicksOptInRecommendation: ...
    @property
    def optimize_ad_rotation_recommendation(
        self,
    ) -> type___Recommendation.OptimizeAdRotationRecommendation: ...
    @property
    def callout_extension_recommendation(
        self,
    ) -> type___Recommendation.CalloutExtensionRecommendation: ...
    @property
    def sitelink_extension_recommendation(
        self,
    ) -> type___Recommendation.SitelinkExtensionRecommendation: ...
    @property
    def call_extension_recommendation(
        self,
    ) -> type___Recommendation.CallExtensionRecommendation: ...
    @property
    def keyword_match_type_recommendation(
        self,
    ) -> type___Recommendation.KeywordMatchTypeRecommendation: ...
    @property
    def move_unused_budget_recommendation(
        self,
    ) -> type___Recommendation.MoveUnusedBudgetRecommendation: ...
    def __init__(
        self,
        *,
        resource_name: typing___Optional[typing___Text] = None,
        type: typing___Optional[
            google___ads___googleads___v3___enums___recommendation_type_pb2___RecommendationTypeEnum.RecommendationTypeValue
        ] = None,
        impact: typing___Optional[type___Recommendation.RecommendationImpact] = None,
        campaign_budget: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        campaign: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        ad_group: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        dismissed: typing___Optional[
            google___protobuf___wrappers_pb2___BoolValue
        ] = None,
        campaign_budget_recommendation: typing___Optional[
            type___Recommendation.CampaignBudgetRecommendation
        ] = None,
        keyword_recommendation: typing___Optional[
            type___Recommendation.KeywordRecommendation
        ] = None,
        text_ad_recommendation: typing___Optional[
            type___Recommendation.TextAdRecommendation
        ] = None,
        target_cpa_opt_in_recommendation: typing___Optional[
            type___Recommendation.TargetCpaOptInRecommendation
        ] = None,
        maximize_conversions_opt_in_recommendation: typing___Optional[
            type___Recommendation.MaximizeConversionsOptInRecommendation
        ] = None,
        enhanced_cpc_opt_in_recommendation: typing___Optional[
            type___Recommendation.EnhancedCpcOptInRecommendation
        ] = None,
        search_partners_opt_in_recommendation: typing___Optional[
            type___Recommendation.SearchPartnersOptInRecommendation
        ] = None,
        maximize_clicks_opt_in_recommendation: typing___Optional[
            type___Recommendation.MaximizeClicksOptInRecommendation
        ] = None,
        optimize_ad_rotation_recommendation: typing___Optional[
            type___Recommendation.OptimizeAdRotationRecommendation
        ] = None,
        callout_extension_recommendation: typing___Optional[
            type___Recommendation.CalloutExtensionRecommendation
        ] = None,
        sitelink_extension_recommendation: typing___Optional[
            type___Recommendation.SitelinkExtensionRecommendation
        ] = None,
        call_extension_recommendation: typing___Optional[
            type___Recommendation.CallExtensionRecommendation
        ] = None,
        keyword_match_type_recommendation: typing___Optional[
            type___Recommendation.KeywordMatchTypeRecommendation
        ] = None,
        move_unused_budget_recommendation: typing___Optional[
            type___Recommendation.MoveUnusedBudgetRecommendation
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "ad_group",
            b"ad_group",
            "call_extension_recommendation",
            b"call_extension_recommendation",
            "callout_extension_recommendation",
            b"callout_extension_recommendation",
            "campaign",
            b"campaign",
            "campaign_budget",
            b"campaign_budget",
            "campaign_budget_recommendation",
            b"campaign_budget_recommendation",
            "dismissed",
            b"dismissed",
            "enhanced_cpc_opt_in_recommendation",
            b"enhanced_cpc_opt_in_recommendation",
            "impact",
            b"impact",
            "keyword_match_type_recommendation",
            b"keyword_match_type_recommendation",
            "keyword_recommendation",
            b"keyword_recommendation",
            "maximize_clicks_opt_in_recommendation",
            b"maximize_clicks_opt_in_recommendation",
            "maximize_conversions_opt_in_recommendation",
            b"maximize_conversions_opt_in_recommendation",
            "move_unused_budget_recommendation",
            b"move_unused_budget_recommendation",
            "optimize_ad_rotation_recommendation",
            b"optimize_ad_rotation_recommendation",
            "recommendation",
            b"recommendation",
            "search_partners_opt_in_recommendation",
            b"search_partners_opt_in_recommendation",
            "sitelink_extension_recommendation",
            b"sitelink_extension_recommendation",
            "target_cpa_opt_in_recommendation",
            b"target_cpa_opt_in_recommendation",
            "text_ad_recommendation",
            b"text_ad_recommendation",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "ad_group",
            b"ad_group",
            "call_extension_recommendation",
            b"call_extension_recommendation",
            "callout_extension_recommendation",
            b"callout_extension_recommendation",
            "campaign",
            b"campaign",
            "campaign_budget",
            b"campaign_budget",
            "campaign_budget_recommendation",
            b"campaign_budget_recommendation",
            "dismissed",
            b"dismissed",
            "enhanced_cpc_opt_in_recommendation",
            b"enhanced_cpc_opt_in_recommendation",
            "impact",
            b"impact",
            "keyword_match_type_recommendation",
            b"keyword_match_type_recommendation",
            "keyword_recommendation",
            b"keyword_recommendation",
            "maximize_clicks_opt_in_recommendation",
            b"maximize_clicks_opt_in_recommendation",
            "maximize_conversions_opt_in_recommendation",
            b"maximize_conversions_opt_in_recommendation",
            "move_unused_budget_recommendation",
            b"move_unused_budget_recommendation",
            "optimize_ad_rotation_recommendation",
            b"optimize_ad_rotation_recommendation",
            "recommendation",
            b"recommendation",
            "resource_name",
            b"resource_name",
            "search_partners_opt_in_recommendation",
            b"search_partners_opt_in_recommendation",
            "sitelink_extension_recommendation",
            b"sitelink_extension_recommendation",
            "target_cpa_opt_in_recommendation",
            b"target_cpa_opt_in_recommendation",
            "text_ad_recommendation",
            b"text_ad_recommendation",
            "type",
            b"type",
        ],
    ) -> None: ...
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["recommendation", b"recommendation"],
    ) -> typing_extensions___Literal[
        "campaign_budget_recommendation",
        "keyword_recommendation",
        "text_ad_recommendation",
        "target_cpa_opt_in_recommendation",
        "maximize_conversions_opt_in_recommendation",
        "enhanced_cpc_opt_in_recommendation",
        "search_partners_opt_in_recommendation",
        "maximize_clicks_opt_in_recommendation",
        "optimize_ad_rotation_recommendation",
        "callout_extension_recommendation",
        "sitelink_extension_recommendation",
        "call_extension_recommendation",
        "keyword_match_type_recommendation",
        "move_unused_budget_recommendation",
    ]: ...

type___Recommendation = Recommendation
