# @generated by generate_proto_mypy_stubs.py.  Do not edit!
import sys
from google.ads.google_ads.v2.proto.common.criteria_pb2 import (
    DeviceInfo as google___ads___googleads___v2___common___criteria_pb2___DeviceInfo,
    GenderInfo as google___ads___googleads___v2___common___criteria_pb2___GenderInfo,
)

from google.ads.google_ads.v2.proto.enums.reach_plan_ad_length_pb2 import (
    ReachPlanAdLengthEnum as google___ads___googleads___v2___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum,
)

from google.ads.google_ads.v2.proto.enums.reach_plan_age_range_pb2 import (
    ReachPlanAgeRangeEnum as google___ads___googleads___v2___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum,
)

from google.protobuf.descriptor import (
    Descriptor as google___protobuf___descriptor___Descriptor,
)

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 google.protobuf.wrappers_pb2 import (
    BoolValue as google___protobuf___wrappers_pb2___BoolValue,
    Int32Value as google___protobuf___wrappers_pb2___Int32Value,
    Int64Value as google___protobuf___wrappers_pb2___Int64Value,
    StringValue as google___protobuf___wrappers_pb2___StringValue,
)

from typing import (
    Iterable as typing___Iterable,
    Optional as typing___Optional,
    Text as typing___Text,
)

from typing_extensions import (
    Literal as typing_extensions___Literal,
)


class ListPlannableLocationsRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    def __init__(self,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ListPlannableLocationsRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

class ListPlannableLocationsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def plannable_locations(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[PlannableLocation]: ...

    def __init__(self,
        *,
        plannable_locations : typing___Optional[typing___Iterable[PlannableLocation]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ListPlannableLocationsResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_locations"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_locations",b"plannable_locations"]) -> None: ...

class PlannableLocation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def id(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def name(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def parent_country_id(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    def __init__(self,
        *,
        id : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        name : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        parent_country_id : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> PlannableLocation: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"id",u"name",u"parent_country_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"id",u"name",u"parent_country_id"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"id",b"id",u"name",b"name",u"parent_country_id",b"parent_country_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"id",b"id",u"name",b"name",u"parent_country_id",b"parent_country_id"]) -> None: ...

class ListPlannableProductsRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def plannable_location_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    def __init__(self,
        *,
        plannable_location_id : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ListPlannableProductsRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_location_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_location_id"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_location_id",b"plannable_location_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_location_id",b"plannable_location_id"]) -> None: ...

class ListPlannableProductsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def product_metadata(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[ProductMetadata]: ...

    def __init__(self,
        *,
        product_metadata : typing___Optional[typing___Iterable[ProductMetadata]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ListPlannableProductsResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"product_metadata"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"product_metadata",b"product_metadata"]) -> None: ...

class ProductMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def plannable_product_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def plannable_targeting(self) -> PlannableTargeting: ...

    def __init__(self,
        *,
        plannable_product_code : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        plannable_targeting : typing___Optional[PlannableTargeting] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ProductMetadata: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_product_code",u"plannable_targeting"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_product_code",u"plannable_targeting"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_product_code",b"plannable_product_code",u"plannable_targeting",b"plannable_targeting"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"plannable_product_code",b"plannable_product_code",u"plannable_targeting",b"plannable_targeting"]) -> None: ...

class PlannableTargeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    age_ranges = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[google___ads___googleads___v2___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange]

    @property
    def genders(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[google___ads___googleads___v2___common___criteria_pb2___GenderInfo]: ...

    @property
    def devices(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[google___ads___googleads___v2___common___criteria_pb2___DeviceInfo]: ...

    def __init__(self,
        *,
        age_ranges : typing___Optional[typing___Iterable[google___ads___googleads___v2___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange]] = None,
        genders : typing___Optional[typing___Iterable[google___ads___googleads___v2___common___criteria_pb2___GenderInfo]] = None,
        devices : typing___Optional[typing___Iterable[google___ads___googleads___v2___common___criteria_pb2___DeviceInfo]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> PlannableTargeting: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"age_ranges",u"devices",u"genders"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"age_ranges",b"age_ranges",u"devices",b"devices",u"genders",b"genders"]) -> None: ...

class GenerateProductMixIdeasRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    customer_id = ... # type: typing___Text

    @property
    def plannable_location_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def currency_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def budget_micros(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def preferences(self) -> Preferences: ...

    def __init__(self,
        *,
        customer_id : typing___Optional[typing___Text] = None,
        plannable_location_id : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        currency_code : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        budget_micros : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        preferences : typing___Optional[Preferences] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> GenerateProductMixIdeasRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",u"currency_code",u"plannable_location_id",u"preferences"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",u"currency_code",u"customer_id",u"plannable_location_id",u"preferences"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"currency_code",b"currency_code",u"plannable_location_id",b"plannable_location_id",u"preferences",b"preferences"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"currency_code",b"currency_code",u"customer_id",b"customer_id",u"plannable_location_id",b"plannable_location_id",u"preferences",b"preferences"]) -> None: ...

class Preferences(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    ad_length = ... # type: google___ads___googleads___v2___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum.ReachPlanAdLength

    @property
    def is_skippable(self) -> google___protobuf___wrappers_pb2___BoolValue: ...

    @property
    def starts_with_sound(self) -> google___protobuf___wrappers_pb2___BoolValue: ...

    @property
    def top_content_only(self) -> google___protobuf___wrappers_pb2___BoolValue: ...

    @property
    def has_guaranteed_price(self) -> google___protobuf___wrappers_pb2___BoolValue: ...

    def __init__(self,
        *,
        is_skippable : typing___Optional[google___protobuf___wrappers_pb2___BoolValue] = None,
        starts_with_sound : typing___Optional[google___protobuf___wrappers_pb2___BoolValue] = None,
        ad_length : typing___Optional[google___ads___googleads___v2___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum.ReachPlanAdLength] = None,
        top_content_only : typing___Optional[google___protobuf___wrappers_pb2___BoolValue] = None,
        has_guaranteed_price : typing___Optional[google___protobuf___wrappers_pb2___BoolValue] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> Preferences: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"has_guaranteed_price",u"is_skippable",u"starts_with_sound",u"top_content_only"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"ad_length",u"has_guaranteed_price",u"is_skippable",u"starts_with_sound",u"top_content_only"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"has_guaranteed_price",b"has_guaranteed_price",u"is_skippable",b"is_skippable",u"starts_with_sound",b"starts_with_sound",u"top_content_only",b"top_content_only"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"ad_length",b"ad_length",u"has_guaranteed_price",b"has_guaranteed_price",u"is_skippable",b"is_skippable",u"starts_with_sound",b"starts_with_sound",u"top_content_only",b"top_content_only"]) -> None: ...

class GenerateProductMixIdeasResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def product_allocation(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[ProductAllocation]: ...

    def __init__(self,
        *,
        product_allocation : typing___Optional[typing___Iterable[ProductAllocation]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> GenerateProductMixIdeasResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"product_allocation"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"product_allocation",b"product_allocation"]) -> None: ...

class ProductAllocation(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def plannable_product_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def budget_micros(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    def __init__(self,
        *,
        plannable_product_code : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        budget_micros : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ProductAllocation: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",u"plannable_product_code"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",u"plannable_product_code"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"plannable_product_code",b"plannable_product_code"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"plannable_product_code",b"plannable_product_code"]) -> None: ...

class GenerateReachForecastRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    customer_id = ... # type: typing___Text

    @property
    def currency_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def campaign_duration(self) -> CampaignDuration: ...

    @property
    def cookie_frequency_cap(self) -> google___protobuf___wrappers_pb2___Int32Value: ...

    @property
    def min_effective_frequency(self) -> google___protobuf___wrappers_pb2___Int32Value: ...

    @property
    def targeting(self) -> Targeting: ...

    @property
    def planned_products(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[PlannedProduct]: ...

    def __init__(self,
        *,
        customer_id : typing___Optional[typing___Text] = None,
        currency_code : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        campaign_duration : typing___Optional[CampaignDuration] = None,
        cookie_frequency_cap : typing___Optional[google___protobuf___wrappers_pb2___Int32Value] = None,
        min_effective_frequency : typing___Optional[google___protobuf___wrappers_pb2___Int32Value] = None,
        targeting : typing___Optional[Targeting] = None,
        planned_products : typing___Optional[typing___Iterable[PlannedProduct]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> GenerateReachForecastRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"campaign_duration",u"cookie_frequency_cap",u"currency_code",u"min_effective_frequency",u"targeting"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"campaign_duration",u"cookie_frequency_cap",u"currency_code",u"customer_id",u"min_effective_frequency",u"planned_products",u"targeting"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"campaign_duration",b"campaign_duration",u"cookie_frequency_cap",b"cookie_frequency_cap",u"currency_code",b"currency_code",u"min_effective_frequency",b"min_effective_frequency",u"targeting",b"targeting"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"campaign_duration",b"campaign_duration",u"cookie_frequency_cap",b"cookie_frequency_cap",u"currency_code",b"currency_code",u"customer_id",b"customer_id",u"min_effective_frequency",b"min_effective_frequency",u"planned_products",b"planned_products",u"targeting",b"targeting"]) -> None: ...

class Targeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    age_range = ... # type: google___ads___googleads___v2___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange

    @property
    def plannable_location_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def genders(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[google___ads___googleads___v2___common___criteria_pb2___GenderInfo]: ...

    @property
    def devices(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[google___ads___googleads___v2___common___criteria_pb2___DeviceInfo]: ...

    def __init__(self,
        *,
        plannable_location_id : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        age_range : typing___Optional[google___ads___googleads___v2___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange] = None,
        genders : typing___Optional[typing___Iterable[google___ads___googleads___v2___common___criteria_pb2___GenderInfo]] = None,
        devices : typing___Optional[typing___Iterable[google___ads___googleads___v2___common___criteria_pb2___DeviceInfo]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> Targeting: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_location_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"age_range",u"devices",u"genders",u"plannable_location_id"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"plannable_location_id",b"plannable_location_id"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"age_range",b"age_range",u"devices",b"devices",u"genders",b"genders",u"plannable_location_id",b"plannable_location_id"]) -> None: ...

class CampaignDuration(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def duration_in_days(self) -> google___protobuf___wrappers_pb2___Int32Value: ...

    def __init__(self,
        *,
        duration_in_days : typing___Optional[google___protobuf___wrappers_pb2___Int32Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> CampaignDuration: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"duration_in_days"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"duration_in_days"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"duration_in_days",b"duration_in_days"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"duration_in_days",b"duration_in_days"]) -> None: ...

class PlannedProduct(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def plannable_product_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...

    @property
    def budget_micros(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    def __init__(self,
        *,
        plannable_product_code : typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        budget_micros : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> PlannedProduct: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",u"plannable_product_code"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",u"plannable_product_code"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"plannable_product_code",b"plannable_product_code"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"budget_micros",b"budget_micros",u"plannable_product_code",b"plannable_product_code"]) -> None: ...

class GenerateReachForecastResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def on_target_audience_metrics(self) -> OnTargetAudienceMetrics: ...

    @property
    def reach_curve(self) -> ReachCurve: ...

    def __init__(self,
        *,
        on_target_audience_metrics : typing___Optional[OnTargetAudienceMetrics] = None,
        reach_curve : typing___Optional[ReachCurve] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> GenerateReachForecastResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"on_target_audience_metrics",u"reach_curve"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"on_target_audience_metrics",u"reach_curve"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"on_target_audience_metrics",b"on_target_audience_metrics",u"reach_curve",b"reach_curve"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"on_target_audience_metrics",b"on_target_audience_metrics",u"reach_curve",b"reach_curve"]) -> None: ...

class ReachCurve(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def reach_forecasts(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[ReachForecast]: ...

    def __init__(self,
        *,
        reach_forecasts : typing___Optional[typing___Iterable[ReachForecast]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ReachCurve: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"reach_forecasts"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"reach_forecasts",b"reach_forecasts"]) -> None: ...

class ReachForecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def cost_micros(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def forecast(self) -> Forecast: ...

    @property
    def forecasted_product_allocations(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[ProductAllocation]: ...

    def __init__(self,
        *,
        cost_micros : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        forecast : typing___Optional[Forecast] = None,
        forecasted_product_allocations : typing___Optional[typing___Iterable[ProductAllocation]] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ReachForecast: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"cost_micros",u"forecast"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"cost_micros",u"forecast",u"forecasted_product_allocations"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"cost_micros",b"cost_micros",u"forecast",b"forecast"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"cost_micros",b"cost_micros",u"forecast",b"forecast",u"forecasted_product_allocations",b"forecasted_product_allocations"]) -> None: ...

class Forecast(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def on_target_reach(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def total_reach(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def on_target_impressions(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def total_impressions(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    def __init__(self,
        *,
        on_target_reach : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        total_reach : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        on_target_impressions : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        total_impressions : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> Forecast: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"on_target_impressions",u"on_target_reach",u"total_impressions",u"total_reach"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"on_target_impressions",u"on_target_reach",u"total_impressions",u"total_reach"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"on_target_impressions",b"on_target_impressions",u"on_target_reach",b"on_target_reach",u"total_impressions",b"total_impressions",u"total_reach",b"total_reach"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"on_target_impressions",b"on_target_impressions",u"on_target_reach",b"on_target_reach",u"total_impressions",b"total_impressions",u"total_reach",b"total_reach"]) -> None: ...

class OnTargetAudienceMetrics(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...

    @property
    def youtube_audience_size(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    @property
    def census_audience_size(self) -> google___protobuf___wrappers_pb2___Int64Value: ...

    def __init__(self,
        *,
        youtube_audience_size : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        census_audience_size : typing___Optional[google___protobuf___wrappers_pb2___Int64Value] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> OnTargetAudienceMetrics: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"census_audience_size",u"youtube_audience_size"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"census_audience_size",u"youtube_audience_size"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"census_audience_size",b"census_audience_size",u"youtube_audience_size",b"youtube_audience_size"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"census_audience_size",b"census_audience_size",u"youtube_audience_size",b"youtube_audience_size"]) -> None: ...
