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

from google.ads.google_ads.v3.proto.enums.reach_plan_ad_length_pb2 import (
    ReachPlanAdLengthEnum as google___ads___googleads___v3___enums___reach_plan_ad_length_pb2___ReachPlanAdLengthEnum,
)

from google.ads.google_ads.v3.proto.enums.reach_plan_age_range_pb2 import (
    ReachPlanAgeRangeEnum as google___ads___googleads___v3___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum,
)

from google.ads.google_ads.v3.proto.enums.reach_plan_network_pb2 import (
    ReachPlanNetworkEnum as google___ads___googleads___v3___enums___reach_plan_network_pb2___ReachPlanNetworkEnum,
)

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,
    Union as typing___Union,
)

from typing_extensions import Literal as typing_extensions___Literal

builtin___bool = bool
builtin___bytes = bytes
builtin___float = float
builtin___int = int
if sys.version_info < (3,):
    builtin___buffer = buffer
    builtin___unicode = unicode

class ListPlannableLocationsRequest(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    def __init__(self,) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ListPlannableLocationsRequest: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ListPlannableLocationsRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...

global___ListPlannableLocationsRequest = ListPlannableLocationsRequest

class ListPlannableLocationsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def plannable_locations(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___PlannableLocation
    ]: ...
    def __init__(
        self,
        *,
        plannable_locations: typing___Optional[
            typing___Iterable[global___PlannableLocation]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ListPlannableLocationsResponse: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ListPlannableLocationsResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_locations", b"plannable_locations"
        ],
    ) -> None: ...

global___ListPlannableLocationsResponse = ListPlannableLocationsResponse

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> PlannableLocation: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> PlannableLocation: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "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"
        ],
    ) -> None: ...

global___PlannableLocation = PlannableLocation

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ListPlannableProductsRequest: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ListPlannableProductsRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_location_id", b"plannable_location_id"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_location_id", b"plannable_location_id"
        ],
    ) -> None: ...

global___ListPlannableProductsRequest = ListPlannableProductsRequest

class ListPlannableProductsResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def product_metadata(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___ProductMetadata
    ]: ...
    def __init__(
        self,
        *,
        product_metadata: typing___Optional[
            typing___Iterable[global___ProductMetadata]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ListPlannableProductsResponse: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ListPlannableProductsResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "product_metadata", b"product_metadata"
        ],
    ) -> None: ...

global___ListPlannableProductsResponse = ListPlannableProductsResponse

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) -> global___PlannableTargeting: ...
    def __init__(
        self,
        *,
        plannable_product_code: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        plannable_targeting: typing___Optional[global___PlannableTargeting] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ProductMetadata: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ProductMetadata: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "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_targeting",
            b"plannable_targeting",
        ],
    ) -> None: ...

global___ProductMetadata = ProductMetadata

class PlannableTargeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    age_ranges = (
        ...
    )  # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[google___ads___googleads___v3___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange]
    networks = (
        ...
    )  # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[google___ads___googleads___v3___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetwork]
    @property
    def genders(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v3___common___criteria_pb2___GenderInfo
    ]: ...
    @property
    def devices(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v3___common___criteria_pb2___DeviceInfo
    ]: ...
    def __init__(
        self,
        *,
        age_ranges: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange
            ]
        ] = None,
        genders: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___common___criteria_pb2___GenderInfo
            ]
        ] = None,
        devices: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___common___criteria_pb2___DeviceInfo
            ]
        ] = None,
        networks: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetwork
            ]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> PlannableTargeting: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> PlannableTargeting: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "age_ranges",
            b"age_ranges",
            "devices",
            b"devices",
            "genders",
            b"genders",
            "networks",
            b"networks",
        ],
    ) -> None: ...

global___PlannableTargeting = PlannableTargeting

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) -> global___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[global___Preferences] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> GenerateProductMixIdeasRequest: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> GenerateProductMixIdeasRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "budget_micros",
            b"budget_micros",
            "currency_code",
            b"currency_code",
            "plannable_location_id",
            b"plannable_location_id",
            "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: ...

global___GenerateProductMixIdeasRequest = GenerateProductMixIdeasRequest

class Preferences(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    ad_length = (
        ...
    )  # type: google___ads___googleads___v3___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___v3___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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> Preferences: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> Preferences: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> 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",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "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: ...

global___Preferences = Preferences

class GenerateProductMixIdeasResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def product_allocation(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___ProductAllocation
    ]: ...
    def __init__(
        self,
        *,
        product_allocation: typing___Optional[
            typing___Iterable[global___ProductAllocation]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> GenerateProductMixIdeasResponse: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> GenerateProductMixIdeasResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "product_allocation", b"product_allocation"
        ],
    ) -> None: ...

global___GenerateProductMixIdeasResponse = GenerateProductMixIdeasResponse

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ProductAllocation: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ProductAllocation: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "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",
        ],
    ) -> None: ...

global___ProductAllocation = ProductAllocation

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) -> global___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) -> global___Targeting: ...
    @property
    def planned_products(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___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[global___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[global___Targeting] = None,
        planned_products: typing___Optional[
            typing___Iterable[global___PlannedProduct]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> GenerateReachForecastRequest: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> GenerateReachForecastRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "campaign_duration",
            b"campaign_duration",
            "cookie_frequency_cap",
            b"cookie_frequency_cap",
            "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[
            "campaign_duration",
            b"campaign_duration",
            "cookie_frequency_cap",
            b"cookie_frequency_cap",
            "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: ...

global___GenerateReachForecastRequest = GenerateReachForecastRequest

class Targeting(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    age_range = (
        ...
    )  # type: google___ads___googleads___v3___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange
    network = (
        ...
    )  # type: google___ads___googleads___v3___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetwork
    @property
    def plannable_location_id(
        self,
    ) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def genders(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v3___common___criteria_pb2___GenderInfo
    ]: ...
    @property
    def devices(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        google___ads___googleads___v3___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___v3___enums___reach_plan_age_range_pb2___ReachPlanAgeRangeEnum.ReachPlanAgeRange
        ] = None,
        genders: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___common___criteria_pb2___GenderInfo
            ]
        ] = None,
        devices: typing___Optional[
            typing___Iterable[
                google___ads___googleads___v3___common___criteria_pb2___DeviceInfo
            ]
        ] = None,
        network: typing___Optional[
            google___ads___googleads___v3___enums___reach_plan_network_pb2___ReachPlanNetworkEnum.ReachPlanNetwork
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> Targeting: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> Targeting: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "plannable_location_id", b"plannable_location_id"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "age_range",
            b"age_range",
            "devices",
            b"devices",
            "genders",
            b"genders",
            "network",
            b"network",
            "plannable_location_id",
            b"plannable_location_id",
        ],
    ) -> None: ...

global___Targeting = Targeting

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> CampaignDuration: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> CampaignDuration: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "duration_in_days", b"duration_in_days"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "duration_in_days", b"duration_in_days"
        ],
    ) -> None: ...

global___CampaignDuration = CampaignDuration

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> PlannedProduct: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> PlannedProduct: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "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",
        ],
    ) -> None: ...

global___PlannedProduct = PlannedProduct

class GenerateReachForecastResponse(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def on_target_audience_metrics(self) -> global___OnTargetAudienceMetrics: ...
    @property
    def reach_curve(self) -> global___ReachCurve: ...
    def __init__(
        self,
        *,
        on_target_audience_metrics: typing___Optional[
            global___OnTargetAudienceMetrics
        ] = None,
        reach_curve: typing___Optional[global___ReachCurve] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> GenerateReachForecastResponse: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> GenerateReachForecastResponse: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> 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: ...

global___GenerateReachForecastResponse = GenerateReachForecastResponse

class ReachCurve(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def reach_forecasts(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___ReachForecast
    ]: ...
    def __init__(
        self,
        *,
        reach_forecasts: typing___Optional[
            typing___Iterable[global___ReachForecast]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ReachCurve: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ReachCurve: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal["reach_forecasts", b"reach_forecasts"],
    ) -> None: ...

global___ReachCurve = ReachCurve

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) -> global___Forecast: ...
    @property
    def forecasted_product_allocations(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        global___ProductAllocation
    ]: ...
    def __init__(
        self,
        *,
        cost_micros: typing___Optional[
            google___protobuf___wrappers_pb2___Int64Value
        ] = None,
        forecast: typing___Optional[global___Forecast] = None,
        forecasted_product_allocations: typing___Optional[
            typing___Iterable[global___ProductAllocation]
        ] = None,
    ) -> None: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> ReachForecast: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> ReachForecast: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "cost_micros", b"cost_micros", "forecast", b"forecast"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "cost_micros",
            b"cost_micros",
            "forecast",
            b"forecast",
            "forecasted_product_allocations",
            b"forecasted_product_allocations",
        ],
    ) -> None: ...

global___ReachForecast = ReachForecast

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> Forecast: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> Forecast: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> 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",
        ],
    ) -> 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",
        ],
    ) -> None: ...

global___Forecast = Forecast

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: ...
    if sys.version_info >= (3,):
        @classmethod
        def FromString(cls, s: builtin___bytes) -> OnTargetAudienceMetrics: ...
    else:
        @classmethod
        def FromString(
            cls, s: typing___Union[builtin___bytes, builtin___buffer, builtin___unicode]
        ) -> OnTargetAudienceMetrics: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "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",
        ],
    ) -> None: ...

global___OnTargetAudienceMetrics = OnTargetAudienceMetrics
