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

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

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 = ...
    @property
    def hashed_first_name(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def hashed_last_name(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def city(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def state(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def country_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def postal_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    def __init__(
        self,
        *,
        hashed_first_name: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        hashed_last_name: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        city: typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        state: typing___Optional[google___protobuf___wrappers_pb2___StringValue] = None,
        country_code: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        postal_code: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = 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",
        ],
    ) -> 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",
        ],
    ) -> None: ...

type___OfflineUserAddressInfo = OfflineUserAddressInfo

class UserIdentifier(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def hashed_email(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def hashed_phone_number(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def mobile_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def third_party_user_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def address_info(self) -> type___OfflineUserAddressInfo: ...
    def __init__(
        self,
        *,
        hashed_email: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        hashed_phone_number: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        mobile_id: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        third_party_user_id: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = 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",
        ],
    ) -> 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 = ...
    @property
    def transaction_date_time(
        self,
    ) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def transaction_amount_micros(
        self,
    ) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def currency_code(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def conversion_action(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def order_id(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def store_attribute(self) -> type___StoreAttribute: ...
    @property
    def custom_value(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    def __init__(
        self,
        *,
        transaction_date_time: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        transaction_amount_micros: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        currency_code: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        conversion_action: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        order_id: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        store_attribute: typing___Optional[type___StoreAttribute] = None,
        custom_value: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = 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",
            "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",
            "store_attribute",
            b"store_attribute",
            "transaction_amount_micros",
            b"transaction_amount_micros",
            "transaction_date_time",
            b"transaction_date_time",
        ],
    ) -> None: ...

type___TransactionAttribute = TransactionAttribute

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

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: ...
    def __init__(
        self,
        *,
        user_identifiers: typing___Optional[
            typing___Iterable[type___UserIdentifier]
        ] = None,
        transaction_attribute: typing___Optional[type___TransactionAttribute] = None,
    ) -> None: ...
    def HasField(
        self,
        field_name: typing_extensions___Literal[
            "transaction_attribute", b"transaction_attribute"
        ],
    ) -> builtin___bool: ...
    def ClearField(
        self,
        field_name: typing_extensions___Literal[
            "transaction_attribute",
            b"transaction_attribute",
            "user_identifiers",
            b"user_identifiers",
        ],
    ) -> None: ...

type___UserData = UserData

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

type___CustomerMatchUserListMetadata = CustomerMatchUserListMetadata

class StoreSalesMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def loyalty_fraction(self) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def transaction_upload_fraction(
        self,
    ) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def custom_key(self) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def third_party_metadata(self) -> type___StoreSalesThirdPartyMetadata: ...
    def __init__(
        self,
        *,
        loyalty_fraction: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        transaction_upload_fraction: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        custom_key: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = 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",
            "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",
            "third_party_metadata",
            b"third_party_metadata",
            "transaction_upload_fraction",
            b"transaction_upload_fraction",
        ],
    ) -> None: ...

type___StoreSalesMetadata = StoreSalesMetadata

class StoreSalesThirdPartyMetadata(google___protobuf___message___Message):
    DESCRIPTOR: google___protobuf___descriptor___Descriptor = ...
    @property
    def advertiser_upload_date_time(
        self,
    ) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def valid_transaction_fraction(
        self,
    ) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def partner_match_fraction(
        self,
    ) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def partner_upload_fraction(
        self,
    ) -> google___protobuf___wrappers_pb2___DoubleValue: ...
    @property
    def bridge_map_version_id(
        self,
    ) -> google___protobuf___wrappers_pb2___StringValue: ...
    @property
    def partner_id(self) -> google___protobuf___wrappers_pb2___Int64Value: ...
    def __init__(
        self,
        *,
        advertiser_upload_date_time: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        valid_transaction_fraction: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        partner_match_fraction: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        partner_upload_fraction: typing___Optional[
            google___protobuf___wrappers_pb2___DoubleValue
        ] = None,
        bridge_map_version_id: typing___Optional[
            google___protobuf___wrappers_pb2___StringValue
        ] = None,
        partner_id: typing___Optional[
            google___protobuf___wrappers_pb2___Int64Value
        ] = 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",
        ],
    ) -> 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",
        ],
    ) -> None: ...

type___StoreSalesThirdPartyMetadata = StoreSalesThirdPartyMetadata
