# @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,
)
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.enums.user_identifier_source_pb2 import (
    UserIdentifierSourceEnum as google___ads___googleads___v6___enums___user_identifier_source_pb2___UserIdentifierSourceEnum,
)

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

DESCRIPTOR: google___protobuf___descriptor___FileDescriptor = ...

class OfflineUserAddressInfo(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    hashed_first_name: typing___Text = ...
    hashed_last_name: typing___Text = ...
    city: typing___Text = ...
    state: typing___Text = ...
    country_code: typing___Text = ...
    postal_code: typing___Text = ...
    def __init__(
        self,
        *,
        hashed_first_name: typing___Optional[typing___Text] = None,
        hashed_last_name: typing___Optional[typing___Text] = None,
        city: typing___Optional[typing___Text] = None,
        state: typing___Optional[typing___Text] = None,
        country_code: typing___Optional[typing___Text] = None,
        postal_code: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_city",
            b"_city",
            "_country_code",
            b"_country_code",
            "_hashed_first_name",
            b"_hashed_first_name",
            "_hashed_last_name",
            b"_hashed_last_name",
            "_postal_code",
            b"_postal_code",
            "_state",
            b"_state",
            "city",
            b"city",
            "country_code",
            b"country_code",
            "hashed_first_name",
            b"hashed_first_name",
            "hashed_last_name",
            b"hashed_last_name",
            "postal_code",
            b"postal_code",
            "state",
            b"state",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_city",
            b"_city",
            "_country_code",
            b"_country_code",
            "_hashed_first_name",
            b"_hashed_first_name",
            "_hashed_last_name",
            b"_hashed_last_name",
            "_postal_code",
            b"_postal_code",
            "_state",
            b"_state",
            "city",
            b"city",
            "country_code",
            b"country_code",
            "hashed_first_name",
            b"hashed_first_name",
            "hashed_last_name",
            b"hashed_last_name",
            "postal_code",
            b"postal_code",
            "state",
            b"state",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_city", b"_city"]
    ) -> typing_extensions___Literal["city"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal["_country_code", b"_country_code"],
    ) -> typing_extensions___Literal["country_code"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_hashed_first_name", b"_hashed_first_name"
        ],
    ) -> typing_extensions___Literal["hashed_first_name"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_hashed_last_name", b"_hashed_last_name"
        ],
    ) -> typing_extensions___Literal["hashed_last_name"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_postal_code", b"_postal_code"]
    ) -> typing_extensions___Literal["postal_code"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_state", b"_state"]
    ) -> typing_extensions___Literal["state"]: ...

type___OfflineUserAddressInfo = OfflineUserAddressInfo

class UserIdentifier(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    user_identifier_source: google___ads___googleads___v6___enums___user_identifier_source_pb2___UserIdentifierSourceEnum.UserIdentifierSourceValue = ...
    hashed_email: typing___Text = ...
    hashed_phone_number: typing___Text = ...
    mobile_id: typing___Text = ...
    third_party_user_id: typing___Text = ...
    @property
    def address_info(self) -> type___OfflineUserAddressInfo: ...
    def __init__(
        self,
        *,
        user_identifier_source: typing___Optional[
            google___ads___googleads___v6___enums___user_identifier_source_pb2___UserIdentifierSourceEnum.UserIdentifierSourceValue
        ] = None,
        hashed_email: typing___Optional[typing___Text] = None,
        hashed_phone_number: typing___Optional[typing___Text] = None,
        mobile_id: typing___Optional[typing___Text] = None,
        third_party_user_id: typing___Optional[typing___Text] = None,
        address_info: typing___Optional[type___OfflineUserAddressInfo] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "address_info",
            b"address_info",
            "hashed_email",
            b"hashed_email",
            "hashed_phone_number",
            b"hashed_phone_number",
            "identifier",
            b"identifier",
            "mobile_id",
            b"mobile_id",
            "third_party_user_id",
            b"third_party_user_id",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "address_info",
            b"address_info",
            "hashed_email",
            b"hashed_email",
            "hashed_phone_number",
            b"hashed_phone_number",
            "identifier",
            b"identifier",
            "mobile_id",
            b"mobile_id",
            "third_party_user_id",
            b"third_party_user_id",
            "user_identifier_source",
            b"user_identifier_source",
        ],
    ) -> None: ...
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["identifier", b"identifier"]
    ) -> typing_extensions___Literal[
        "hashed_email",
        "hashed_phone_number",
        "mobile_id",
        "third_party_user_id",
        "address_info",
    ]: ...

type___UserIdentifier = UserIdentifier

class TransactionAttribute(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    transaction_date_time: typing___Text = ...
    transaction_amount_micros: builtin___float = ...
    currency_code: typing___Text = ...
    conversion_action: typing___Text = ...
    order_id: typing___Text = ...
    custom_value: typing___Text = ...
    @property
    def store_attribute(self) -> type___StoreAttribute: ...
    def __init__(
        self,
        *,
        transaction_date_time: typing___Optional[typing___Text] = None,
        transaction_amount_micros: typing___Optional[builtin___float] = None,
        currency_code: typing___Optional[typing___Text] = None,
        conversion_action: typing___Optional[typing___Text] = None,
        order_id: typing___Optional[typing___Text] = None,
        store_attribute: typing___Optional[type___StoreAttribute] = None,
        custom_value: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_conversion_action",
            b"_conversion_action",
            "_currency_code",
            b"_currency_code",
            "_custom_value",
            b"_custom_value",
            "_order_id",
            b"_order_id",
            "_transaction_amount_micros",
            b"_transaction_amount_micros",
            "_transaction_date_time",
            b"_transaction_date_time",
            "conversion_action",
            b"conversion_action",
            "currency_code",
            b"currency_code",
            "custom_value",
            b"custom_value",
            "order_id",
            b"order_id",
            "store_attribute",
            b"store_attribute",
            "transaction_amount_micros",
            b"transaction_amount_micros",
            "transaction_date_time",
            b"transaction_date_time",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_conversion_action",
            b"_conversion_action",
            "_currency_code",
            b"_currency_code",
            "_custom_value",
            b"_custom_value",
            "_order_id",
            b"_order_id",
            "_transaction_amount_micros",
            b"_transaction_amount_micros",
            "_transaction_date_time",
            b"_transaction_date_time",
            "conversion_action",
            b"conversion_action",
            "currency_code",
            b"currency_code",
            "custom_value",
            b"custom_value",
            "order_id",
            b"order_id",
            "store_attribute",
            b"store_attribute",
            "transaction_amount_micros",
            b"transaction_amount_micros",
            "transaction_date_time",
            b"transaction_date_time",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_conversion_action", b"_conversion_action"
        ],
    ) -> typing_extensions___Literal["conversion_action"]: ...
    @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["_custom_value", b"_custom_value"],
    ) -> typing_extensions___Literal["custom_value"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_order_id", b"_order_id"]
    ) -> typing_extensions___Literal["order_id"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_transaction_amount_micros", b"_transaction_amount_micros"
        ],
    ) -> typing_extensions___Literal["transaction_amount_micros"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_transaction_date_time", b"_transaction_date_time"
        ],
    ) -> typing_extensions___Literal["transaction_date_time"]: ...

type___TransactionAttribute = TransactionAttribute

class StoreAttribute(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    store_code: typing___Text = ...
    def __init__(
        self, *, store_code: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_store_code", b"_store_code", "store_code", b"store_code"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_store_code", b"_store_code", "store_code", b"store_code"
        ],
    ) -> None: ...
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_store_code", b"_store_code"]
    ) -> typing_extensions___Literal["store_code"]: ...

type___StoreAttribute = StoreAttribute

class UserData(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def user_identifiers(
        self,
    ) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[
        type___UserIdentifier
    ]: ...
    @property
    def transaction_attribute(self) -> type___TransactionAttribute: ...
    @property
    def user_attribute(self) -> type___UserAttribute: ...
    def __init__(
        self,
        *,
        user_identifiers: typing___Optional[
            typing___Iterable[type___UserIdentifier]
        ] = None,
        transaction_attribute: typing___Optional[type___TransactionAttribute] = None,
        user_attribute: typing___Optional[type___UserAttribute] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "transaction_attribute",
            b"transaction_attribute",
            "user_attribute",
            b"user_attribute",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "transaction_attribute",
            b"transaction_attribute",
            "user_attribute",
            b"user_attribute",
            "user_identifiers",
            b"user_identifiers",
        ],
    ) -> None: ...

type___UserData = UserData

class UserAttribute(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    lifetime_value_micros: builtin___int = ...
    lifetime_value_bucket: builtin___int = ...
    def __init__(
        self,
        *,
        lifetime_value_micros: typing___Optional[builtin___int] = None,
        lifetime_value_bucket: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_lifetime_value_bucket",
            b"_lifetime_value_bucket",
            "_lifetime_value_micros",
            b"_lifetime_value_micros",
            "lifetime_value_bucket",
            b"lifetime_value_bucket",
            "lifetime_value_micros",
            b"lifetime_value_micros",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_lifetime_value_bucket",
            b"_lifetime_value_bucket",
            "_lifetime_value_micros",
            b"_lifetime_value_micros",
            "lifetime_value_bucket",
            b"lifetime_value_bucket",
            "lifetime_value_micros",
            b"lifetime_value_micros",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_lifetime_value_bucket", b"_lifetime_value_bucket"
        ],
    ) -> typing_extensions___Literal["lifetime_value_bucket"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_lifetime_value_micros", b"_lifetime_value_micros"
        ],
    ) -> typing_extensions___Literal["lifetime_value_micros"]: ...

type___UserAttribute = UserAttribute

class CustomerMatchUserListMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    user_list: typing___Text = ...
    def __init__(
        self, *, user_list: typing___Optional[typing___Text] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_user_list", b"_user_list", "user_list", b"user_list"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_user_list", b"_user_list", "user_list", b"user_list"
        ],
    ) -> None: ...
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_user_list", b"_user_list"]
    ) -> typing_extensions___Literal["user_list"]: ...

type___CustomerMatchUserListMetadata = CustomerMatchUserListMetadata

class StoreSalesMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    loyalty_fraction: builtin___float = ...
    transaction_upload_fraction: builtin___float = ...
    custom_key: typing___Text = ...
    @property
    def third_party_metadata(self) -> type___StoreSalesThirdPartyMetadata: ...
    def __init__(
        self,
        *,
        loyalty_fraction: typing___Optional[builtin___float] = None,
        transaction_upload_fraction: typing___Optional[builtin___float] = None,
        custom_key: typing___Optional[typing___Text] = None,
        third_party_metadata: typing___Optional[
            type___StoreSalesThirdPartyMetadata
        ] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_custom_key",
            b"_custom_key",
            "_loyalty_fraction",
            b"_loyalty_fraction",
            "_transaction_upload_fraction",
            b"_transaction_upload_fraction",
            "custom_key",
            b"custom_key",
            "loyalty_fraction",
            b"loyalty_fraction",
            "third_party_metadata",
            b"third_party_metadata",
            "transaction_upload_fraction",
            b"transaction_upload_fraction",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_custom_key",
            b"_custom_key",
            "_loyalty_fraction",
            b"_loyalty_fraction",
            "_transaction_upload_fraction",
            b"_transaction_upload_fraction",
            "custom_key",
            b"custom_key",
            "loyalty_fraction",
            b"loyalty_fraction",
            "third_party_metadata",
            b"third_party_metadata",
            "transaction_upload_fraction",
            b"transaction_upload_fraction",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_custom_key", b"_custom_key"]
    ) -> typing_extensions___Literal["custom_key"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_loyalty_fraction", b"_loyalty_fraction"
        ],
    ) -> typing_extensions___Literal["loyalty_fraction"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_transaction_upload_fraction", b"_transaction_upload_fraction"
        ],
    ) -> typing_extensions___Literal["transaction_upload_fraction"]: ...

type___StoreSalesMetadata = StoreSalesMetadata

class StoreSalesThirdPartyMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    advertiser_upload_date_time: typing___Text = ...
    valid_transaction_fraction: builtin___float = ...
    partner_match_fraction: builtin___float = ...
    partner_upload_fraction: builtin___float = ...
    bridge_map_version_id: typing___Text = ...
    partner_id: builtin___int = ...
    def __init__(
        self,
        *,
        advertiser_upload_date_time: typing___Optional[typing___Text] = None,
        valid_transaction_fraction: typing___Optional[builtin___float] = None,
        partner_match_fraction: typing___Optional[builtin___float] = None,
        partner_upload_fraction: typing___Optional[builtin___float] = None,
        bridge_map_version_id: typing___Optional[typing___Text] = None,
        partner_id: typing___Optional[builtin___int] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "_advertiser_upload_date_time",
            b"_advertiser_upload_date_time",
            "_bridge_map_version_id",
            b"_bridge_map_version_id",
            "_partner_id",
            b"_partner_id",
            "_partner_match_fraction",
            b"_partner_match_fraction",
            "_partner_upload_fraction",
            b"_partner_upload_fraction",
            "_valid_transaction_fraction",
            b"_valid_transaction_fraction",
            "advertiser_upload_date_time",
            b"advertiser_upload_date_time",
            "bridge_map_version_id",
            b"bridge_map_version_id",
            "partner_id",
            b"partner_id",
            "partner_match_fraction",
            b"partner_match_fraction",
            "partner_upload_fraction",
            b"partner_upload_fraction",
            "valid_transaction_fraction",
            b"valid_transaction_fraction",
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "_advertiser_upload_date_time",
            b"_advertiser_upload_date_time",
            "_bridge_map_version_id",
            b"_bridge_map_version_id",
            "_partner_id",
            b"_partner_id",
            "_partner_match_fraction",
            b"_partner_match_fraction",
            "_partner_upload_fraction",
            b"_partner_upload_fraction",
            "_valid_transaction_fraction",
            b"_valid_transaction_fraction",
            "advertiser_upload_date_time",
            b"advertiser_upload_date_time",
            "bridge_map_version_id",
            b"bridge_map_version_id",
            "partner_id",
            b"partner_id",
            "partner_match_fraction",
            b"partner_match_fraction",
            "partner_upload_fraction",
            b"partner_upload_fraction",
            "valid_transaction_fraction",
            b"valid_transaction_fraction",
        ],
    ) -> None: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_advertiser_upload_date_time", b"_advertiser_upload_date_time"
        ],
    ) -> typing_extensions___Literal["advertiser_upload_date_time"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_bridge_map_version_id", b"_bridge_map_version_id"
        ],
    ) -> typing_extensions___Literal["bridge_map_version_id"]: ...
    @typing___overload
    def WhichOneof(
        self, oneof_group: typing_extensions___Literal["_partner_id", b"_partner_id"]
    ) -> typing_extensions___Literal["partner_id"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_partner_match_fraction", b"_partner_match_fraction"
        ],
    ) -> typing_extensions___Literal["partner_match_fraction"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_partner_upload_fraction", b"_partner_upload_fraction"
        ],
    ) -> typing_extensions___Literal["partner_upload_fraction"]: ...
    @typing___overload
    def WhichOneof(
        self,
        oneof_group: typing_extensions___Literal[
            "_valid_transaction_fraction", b"_valid_transaction_fraction"
        ],
    ) -> typing_extensions___Literal["valid_transaction_fraction"]: ...

type___StoreSalesThirdPartyMetadata = StoreSalesThirdPartyMetadata
