# @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,
    overload as typing___overload,
)

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,
    RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer,
)
from google.protobuf.message import Message as google___protobuf___message___Message
from typing_extensions import Literal as typing_extensions___Literal

from google.ads.google_ads.v6.proto.common.criteria_pb2 import (
    DeviceInfo as google___ads___googleads___v6___common___criteria_pb2___DeviceInfo,
    GenderInfo as google___ads___googleads___v6___common___criteria_pb2___GenderInfo,
)
from google.ads.google_ads.v6.proto.enums.frequency_cap_time_unit_pb2 import (
    FrequencyCapTimeUnitEnum as google___ads___googleads___v6___enums___frequency_cap_time_unit_pb2___FrequencyCapTimeUnitEnum,
)
from google.ads.google_ads.v6.proto.enums.reach_plan_ad_length_pb2 import (
    ReachPlanAdLengthEnum as google___ads___googleads___v6___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum,
)
from google.ads.google_ads.v6.proto.enums.reach_plan_age_range_pb2 import (
    ReachPlanAgeRangeEnum as google___ads___googleads___v6___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum,
)
from google.ads.google_ads.v6.proto.enums.reach_plan_network_pb2 import (
    ReachPlanNetworkEnum as google___ads___googleads___v6___enums___reach_plan_network_pb2___ReachPlanNetworkEnum,
)

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

DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

class ListPlannableLocationsRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    def __init__(self,) -> None: ...

type___ListPlannableLocationsRequest = ListPlannableLocationsRequest

class ListPlannableLocationsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def plannable_locations(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___PlannableLocation
    ]: ...
    def __init__(
        self,
        *,
        plannable_locations: typing___Optional[
            typing___Iterable[type___PlannableLocation]
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_locations", b"plannable_locations"
        ],
    ) -> None: ...

type___ListPlannableLocationsResponse = ListPlannableLocationsResponse

class PlannableLocation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    id: typing___Text = ...
    name: typing___Text = ...
    parent_country_id: builtin___int = ...
    def __init__(
        self,
        *,
        id: typing___Optional[typing___Text] = None,
        name: typing___Optional[typing___Text] = None,
        parent_country_id: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_id",
            b"_id",
            "_name",
            b"_name",
            "_parent_country_id",
            b"_parent_country_id",
            "id",
            b"id",
            "name",
            b"name",
            "parent_country_id",
            b"parent_country_id",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_id",
            b"_id",
            "_name",
            b"_name",
            "_parent_country_id",
            b"_parent_country_id",
            "id",
            b"id",
            "name",
            b"name",
            "parent_country_id",
            b"parent_country_id",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_id", b"_id"]
    ) -> typing_extensions___Literal["id"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_name", b"_name"]
    ) -> typing_extensions___Literal["name"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_parent_country_id", b"_parent_country_id"
        ],
    ) -> typing_extensions___Literal["parent_country_id"]: ...

type___PlannableLocation = PlannableLocation

class ListPlannableProductsRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_location_id: typing___Text = ...
    def __init__(
        self, *, plannable_location_id: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_location_id", b"plannable_location_id"
        ],
    ) -> None: ...

type___ListPlannableProductsRequest = ListPlannableProductsRequest

class ListPlannableProductsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def product_metadata(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___ProductMetadata
    ]: ...
    def __init__(
        self,
        *,
        product_metadata: typing___Optional[
            typing___Iterable[type___ProductMetadata]
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "product_metadata", b"product_metadata"
        ],
    ) -> None: ...

type___ListPlannableProductsResponse = ListPlannableProductsResponse

class ProductMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_product_code: typing___Text = ...
    plannable_product_name: typing___Text = ...
    @property
    def plannable_targeting(self) -> type___PlannableTargeting: ...
    def __init__(
        self,
        *,
        plannable_product_code: typing___Optional[typing___Text] = None,
        plannable_product_name: typing___Optional[typing___Text] = None,
        plannable_targeting: typing___Optional[type___PlannableTargeting] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_plannable_product_code",
            b"_plannable_product_code",
            "plannable_product_code",
            b"plannable_product_code",
            "plannable_targeting",
            b"plannable_targeting",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_plannable_product_code",
            b"_plannable_product_code",
            "plannable_product_code",
            b"plannable_product_code",
            "plannable_product_name",
            b"plannable_product_name",
            "plannable_targeting",
            b"plannable_targeting",
        ],
    ) -> None: ...
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_plannable_product_code", b"_plannable_product_code"
        ],
    ) -> typing_extensions___Literal["plannable_product_code"]: ...

type___ProductMetadata = ProductMetadata

class PlannableTargeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    age_ranges: google___protobuf___internal___containers___RepeatedScalarFieldContainer[
        google___ads___googleads___v6___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRangeValue
    ] = ...
    networks: google___protobuf___internal___containers___RepeatedScalarFieldContainer[
        google___ads___googleads___v6___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetworkValue
    ] = ...
    @property
    def genders(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v6___common___criteria_pb2___GenderInfo
    ]: ...
    @property
    def devices(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v6___common___criteria_pb2___DeviceInfo
    ]: ...
    def __init__(
        self,
        *,
        age_ranges: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRangeValue
            ]
        ] = None,
        genders: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___common___criteria_pb2___GenderInfo
            ]
        ] = None,
        devices: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___common___criteria_pb2___DeviceInfo
            ]
        ] = None,
        networks: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetworkValue
            ]
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "age_ranges",
            b"age_ranges",
            "devices",
            b"devices",
            "genders",
            b"genders",
            "networks",
            b"networks",
        ],
    ) -> None: ...

type___PlannableTargeting = PlannableTargeting

class GenerateProductMixIdeasRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    customer_id: typing___Text = ...
    plannable_location_id: typing___Text = ...
    currency_code: typing___Text = ...
    budget_micros: builtin___int = ...
    @property
    def preferences(self) -> type___Preferences: ...
    def __init__(
        self,
        *,
        customer_id: typing___Optional[typing___Text] = None,
        plannable_location_id: typing___Optional[typing___Text] = None,
        currency_code: typing___Optional[typing___Text] = None,
        budget_micros: typing___Optional[builtin___int] = None,
        preferences: typing___Optional[type___Preferences] = None,
    ) -> None: ...
    def HasField(
        self, field_name: typing_extensions___Literal["preferences", b"preferences"]
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "budget_micros",
            b"budget_micros",
            "currency_code",
            b"currency_code",
            "customer_id",
            b"customer_id",
            "plannable_location_id",
            b"plannable_location_id",
            "preferences",
            b"preferences",
        ],
    ) -> None: ...

type___GenerateProductMixIdeasRequest = GenerateProductMixIdeasRequest

class Preferences(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    is_skippable: builtin___bool = ...
    starts_with_sound: builtin___bool = ...
    ad_length: google___ads___googleads___v6___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum.ReachPlanAdLengthValue = ...
    top_content_only: builtin___bool = ...
    has_guaranteed_price: builtin___bool = ...
    def __init__(
        self,
        *,
        is_skippable: typing___Optional[builtin___bool] = None,
        starts_with_sound: typing___Optional[builtin___bool] = None,
        ad_length: typing___Optional[
            google___ads___googleads___v6___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum.ReachPlanAdLengthValue
        ] = None,
        top_content_only: typing___Optional[builtin___bool] = None,
        has_guaranteed_price: typing___Optional[builtin___bool] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_has_guaranteed_price",
            b"_has_guaranteed_price",
            "_is_skippable",
            b"_is_skippable",
            "_starts_with_sound",
            b"_starts_with_sound",
            "_top_content_only",
            b"_top_content_only",
            "has_guaranteed_price",
            b"has_guaranteed_price",
            "is_skippable",
            b"is_skippable",
            "starts_with_sound",
            b"starts_with_sound",
            "top_content_only",
            b"top_content_only",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_has_guaranteed_price",
            b"_has_guaranteed_price",
            "_is_skippable",
            b"_is_skippable",
            "_starts_with_sound",
            b"_starts_with_sound",
            "_top_content_only",
            b"_top_content_only",
            "ad_length",
            b"ad_length",
            "has_guaranteed_price",
            b"has_guaranteed_price",
            "is_skippable",
            b"is_skippable",
            "starts_with_sound",
            b"starts_with_sound",
            "top_content_only",
            b"top_content_only",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_has_guaranteed_price", b"_has_guaranteed_price"
        ],
    ) -> typing_extensions___Literal["has_guaranteed_price"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_is_skippable", b"_is_skippable"],
    ) -> typing_extensions___Literal["is_skippable"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_starts_with_sound", b"_starts_with_sound"
        ],
    ) -> typing_extensions___Literal["starts_with_sound"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_top_content_only", b"_top_content_only"
        ],
    ) -> typing_extensions___Literal["top_content_only"]: ...

type___Preferences = Preferences

class GenerateProductMixIdeasResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def product_allocation(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___ProductAllocation
    ]: ...
    def __init__(
        self,
        *,
        product_allocation: typing___Optional[
            typing___Iterable[type___ProductAllocation]
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "product_allocation", b"product_allocation"
        ],
    ) -> None: ...

type___GenerateProductMixIdeasResponse = GenerateProductMixIdeasResponse

class ProductAllocation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_product_code: typing___Text = ...
    budget_micros: builtin___int = ...
    def __init__(
        self,
        *,
        plannable_product_code: typing___Optional[typing___Text] = None,
        budget_micros: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_budget_micros",
            b"_budget_micros",
            "_plannable_product_code",
            b"_plannable_product_code",
            "budget_micros",
            b"budget_micros",
            "plannable_product_code",
            b"plannable_product_code",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_budget_micros",
            b"_budget_micros",
            "_plannable_product_code",
            b"_plannable_product_code",
            "budget_micros",
            b"budget_micros",
            "plannable_product_code",
            b"plannable_product_code",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_budget_micros", b"_budget_micros"],
    ) -> typing_extensions___Literal["budget_micros"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_plannable_product_code", b"_plannable_product_code"
        ],
    ) -> typing_extensions___Literal["plannable_product_code"]: ...

type___ProductAllocation = ProductAllocation

class GenerateReachForecastRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    customer_id: typing___Text = ...
    currency_code: typing___Text = ...
    cookie_frequency_cap: builtin___int = ...
    min_effective_frequency: builtin___int = ...
    @property
    def campaign_duration(self) -> type___CampaignDuration: ...
    @property
    def cookie_frequency_cap_setting(self) -> type___FrequencyCap: ...
    @property
    def targeting(self) -> type___Targeting: ...
    @property
    def planned_products(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___PlannedProduct
    ]: ...
    def __init__(
        self,
        *,
        customer_id: typing___Optional[typing___Text] = None,
        currency_code: typing___Optional[typing___Text] = None,
        campaign_duration: typing___Optional[type___CampaignDuration] = None,
        cookie_frequency_cap: typing___Optional[builtin___int] = None,
        cookie_frequency_cap_setting: typing___Optional[type___FrequencyCap] = None,
        min_effective_frequency: typing___Optional[builtin___int] = None,
        targeting: typing___Optional[type___Targeting] = None,
        planned_products: typing___Optional[
            typing___Iterable[type___PlannedProduct]
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_cookie_frequency_cap",
            b"_cookie_frequency_cap",
            "_currency_code",
            b"_currency_code",
            "_min_effective_frequency",
            b"_min_effective_frequency",
            "campaign_duration",
            b"campaign_duration",
            "cookie_frequency_cap",
            b"cookie_frequency_cap",
            "cookie_frequency_cap_setting",
            b"cookie_frequency_cap_setting",
            "currency_code",
            b"currency_code",
            "min_effective_frequency",
            b"min_effective_frequency",
            "targeting",
            b"targeting",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_cookie_frequency_cap",
            b"_cookie_frequency_cap",
            "_currency_code",
            b"_currency_code",
            "_min_effective_frequency",
            b"_min_effective_frequency",
            "campaign_duration",
            b"campaign_duration",
            "cookie_frequency_cap",
            b"cookie_frequency_cap",
            "cookie_frequency_cap_setting",
            b"cookie_frequency_cap_setting",
            "currency_code",
            b"currency_code",
            "customer_id",
            b"customer_id",
            "min_effective_frequency",
            b"min_effective_frequency",
            "planned_products",
            b"planned_products",
            "targeting",
            b"targeting",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_cookie_frequency_cap", b"_cookie_frequency_cap"
        ],
    ) -> typing_extensions___Literal["cookie_frequency_cap"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_currency_code", b"_currency_code"],
    ) -> typing_extensions___Literal["currency_code"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_min_effective_frequency", b"_min_effective_frequency"
        ],
    ) -> typing_extensions___Literal["min_effective_frequency"]: ...

type___GenerateReachForecastRequest = GenerateReachForecastRequest

class FrequencyCap(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    impressions: builtin___int = ...
    time_unit: google___ads___googleads___v6___enums___frequency_cap_time_unit_pb2___FrequencyCapTimeUnitEnum.FrequencyCapTimeUnitValue = ...
    def __init__(
        self,
        *,
        impressions: typing___Optional[builtin___int] = None,
        time_unit: typing___Optional[
            google___ads___googleads___v6___enums___frequency_cap_time_unit_pb2___FrequencyCapTimeUnitEnum.FrequencyCapTimeUnitValue
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "impressions", b"impressions", "time_unit", b"time_unit"
        ],
    ) -> None: ...

type___FrequencyCap = FrequencyCap

class Targeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_location_id: typing___Text = ...
    age_range: google___ads___googleads___v6___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRangeValue = ...
    network: google___ads___googleads___v6___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetworkValue = ...
    @property
    def genders(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v6___common___criteria_pb2___GenderInfo
    ]: ...
    @property
    def devices(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v6___common___criteria_pb2___DeviceInfo
    ]: ...
    def __init__(
        self,
        *,
        plannable_location_id: typing___Optional[typing___Text] = None,
        age_range: typing___Optional[
            google___ads___googleads___v6___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRangeValue
        ] = None,
        genders: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___common___criteria_pb2___GenderInfo
            ]
        ] = None,
        devices: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v6___common___criteria_pb2___DeviceInfo
            ]
        ] = None,
        network: typing___Optional[
            google___ads___googleads___v6___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetworkValue
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_plannable_location_id",
            b"_plannable_location_id",
            "plannable_location_id",
            b"plannable_location_id",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_plannable_location_id",
            b"_plannable_location_id",
            "age_range",
            b"age_range",
            "devices",
            b"devices",
            "genders",
            b"genders",
            "network",
            b"network",
            "plannable_location_id",
            b"plannable_location_id",
        ],
    ) -> None: ...
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_plannable_location_id", b"_plannable_location_id"
        ],
    ) -> typing_extensions___Literal["plannable_location_id"]: ...

type___Targeting = Targeting

class CampaignDuration(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    duration_in_days: builtin___int = ...
    def __init__(
        self, *, duration_in_days: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_duration_in_days",
            b"_duration_in_days",
            "duration_in_days",
            b"duration_in_days",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_duration_in_days",
            b"_duration_in_days",
            "duration_in_days",
            b"duration_in_days",
        ],
    ) -> None: ...
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_duration_in_days", b"_duration_in_days"
        ],
    ) -> typing_extensions___Literal["duration_in_days"]: ...

type___CampaignDuration = CampaignDuration

class PlannedProduct(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_product_code: typing___Text = ...
    budget_micros: builtin___int = ...
    def __init__(
        self,
        *,
        plannable_product_code: typing___Optional[typing___Text] = None,
        budget_micros: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_budget_micros",
            b"_budget_micros",
            "_plannable_product_code",
            b"_plannable_product_code",
            "budget_micros",
            b"budget_micros",
            "plannable_product_code",
            b"plannable_product_code",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_budget_micros",
            b"_budget_micros",
            "_plannable_product_code",
            b"_plannable_product_code",
            "budget_micros",
            b"budget_micros",
            "plannable_product_code",
            b"plannable_product_code",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_budget_micros", b"_budget_micros"],
    ) -> typing_extensions___Literal["budget_micros"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_plannable_product_code", b"_plannable_product_code"
        ],
    ) -> typing_extensions___Literal["plannable_product_code"]: ...

type___PlannedProduct = PlannedProduct

class GenerateReachForecastResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def on_target_audience_metrics(self) -> type___OnTargetAudienceMetrics: ...
    @property
    def reach_curve(self) -> type___ReachCurve: ...
    def __init__(
        self,
        *,
        on_target_audience_metrics: typing___Optional[
            type___OnTargetAudienceMetrics
        ] = None,
        reach_curve: typing___Optional[type___ReachCurve] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "on_target_audience_metrics",
            b"on_target_audience_metrics",
            "reach_curve",
            b"reach_curve",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "on_target_audience_metrics",
            b"on_target_audience_metrics",
            "reach_curve",
            b"reach_curve",
        ],
    ) -> None: ...

type___GenerateReachForecastResponse = GenerateReachForecastResponse

class ReachCurve(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def reach_forecasts(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___ReachForecast
    ]: ...
    def __init__(
        self,
        *,
        reach_forecasts: typing___Optional[
            typing___Iterable[type___ReachForecast]
        ] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal["reach_forecasts", b"reach_forecasts"],
    ) -> None: ...

type___ReachCurve = ReachCurve

class ReachForecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    cost_micros: builtin___int = ...
    @property
    def forecast(self) -> type___Forecast: ...
    @property
    def planned_product_reach_forecasts(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___PlannedProductReachForecast
    ]: ...
    def __init__(
        self,
        *,
        cost_micros: typing___Optional[builtin___int] = None,
        forecast: typing___Optional[type___Forecast] = None,
        planned_product_reach_forecasts: typing___Optional[
            typing___Iterable[type___PlannedProductReachForecast]
        ] = None,
    ) -> None: ...
    def HasField(
        self, field_name: typing_extensions___Literal["forecast", b"forecast"]
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "cost_micros",
            b"cost_micros",
            "forecast",
            b"forecast",
            "planned_product_reach_forecasts",
            b"planned_product_reach_forecasts",
        ],
    ) -> None: ...

type___ReachForecast = ReachForecast

class Forecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    on_target_reach: builtin___int = ...
    total_reach: builtin___int = ...
    on_target_impressions: builtin___int = ...
    total_impressions: builtin___int = ...
    def __init__(
        self,
        *,
        on_target_reach: typing___Optional[builtin___int] = None,
        total_reach: typing___Optional[builtin___int] = None,
        on_target_impressions: typing___Optional[builtin___int] = None,
        total_impressions: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_on_target_impressions",
            b"_on_target_impressions",
            "_on_target_reach",
            b"_on_target_reach",
            "_total_impressions",
            b"_total_impressions",
            "_total_reach",
            b"_total_reach",
            "on_target_impressions",
            b"on_target_impressions",
            "on_target_reach",
            b"on_target_reach",
            "total_impressions",
            b"total_impressions",
            "total_reach",
            b"total_reach",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_on_target_impressions",
            b"_on_target_impressions",
            "_on_target_reach",
            b"_on_target_reach",
            "_total_impressions",
            b"_total_impressions",
            "_total_reach",
            b"_total_reach",
            "on_target_impressions",
            b"on_target_impressions",
            "on_target_reach",
            b"on_target_reach",
            "total_impressions",
            b"total_impressions",
            "total_reach",
            b"total_reach",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_on_target_impressions", b"_on_target_impressions"
        ],
    ) -> typing_extensions___Literal["on_target_impressions"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_on_target_reach", b"_on_target_reach"
        ],
    ) -> typing_extensions___Literal["on_target_reach"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_total_impressions", b"_total_impressions"
        ],
    ) -> typing_extensions___Literal["total_impressions"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_total_reach", b"_total_reach"]
    ) -> typing_extensions___Literal["total_reach"]: ...

type___Forecast = Forecast

class PlannedProductReachForecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    plannable_product_code: typing___Text = ...
    cost_micros: builtin___int = ...
    @property
    def planned_product_forecast(self) -> type___PlannedProductForecast: ...
    def __init__(
        self,
        *,
        plannable_product_code: typing___Optional[typing___Text] = None,
        cost_micros: typing___Optional[builtin___int] = None,
        planned_product_forecast: typing___Optional[
            type___PlannedProductForecast
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "planned_product_forecast", b"planned_product_forecast"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "cost_micros",
            b"cost_micros",
            "plannable_product_code",
            b"plannable_product_code",
            "planned_product_forecast",
            b"planned_product_forecast",
        ],
    ) -> None: ...

type___PlannedProductReachForecast = PlannedProductReachForecast

class PlannedProductForecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    on_target_reach: builtin___int = ...
    total_reach: builtin___int = ...
    on_target_impressions: builtin___int = ...
    total_impressions: builtin___int = ...
    def __init__(
        self,
        *,
        on_target_reach: typing___Optional[builtin___int] = None,
        total_reach: typing___Optional[builtin___int] = None,
        on_target_impressions: typing___Optional[builtin___int] = None,
        total_impressions: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "on_target_impressions",
            b"on_target_impressions",
            "on_target_reach",
            b"on_target_reach",
            "total_impressions",
            b"total_impressions",
            "total_reach",
            b"total_reach",
        ],
    ) -> None: ...

type___PlannedProductForecast = PlannedProductForecast

class OnTargetAudienceMetrics(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    youtube_audience_size: builtin___int = ...
    census_audience_size: builtin___int = ...
    def __init__(
        self,
        *,
        youtube_audience_size: typing___Optional[builtin___int] = None,
        census_audience_size: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_census_audience_size",
            b"_census_audience_size",
            "_youtube_audience_size",
            b"_youtube_audience_size",
            "census_audience_size",
            b"census_audience_size",
            "youtube_audience_size",
            b"youtube_audience_size",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_census_audience_size",
            b"_census_audience_size",
            "_youtube_audience_size",
            b"_youtube_audience_size",
            "census_audience_size",
            b"census_audience_size",
            "youtube_audience_size",
            b"youtube_audience_size",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_census_audience_size", b"_census_audience_size"
        ],
    ) -> typing_extensions___Literal["census_audience_size"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_youtube_audience_size", b"_youtube_audience_size"
        ],
    ) -> typing_extensions___Literal["youtube_audience_size"]: ...

type___OnTargetAudienceMetrics = OnTargetAudienceMetrics
