# Path: google/cloud/recommendationengine_v1beta1/types/catalog.py
# class CatalogItem(proto.Message):
#     class CategoryHierarchy(proto.Message):
# class ProductCatalogItem(proto.Message):
#     class StockState(proto.Enum):
#     class ExactPrice(proto.Message):
#     class PriceRange(proto.Message):
# class Image(proto.Message):
#         STOCK_STATE_UNSPECIFIED = 0
#         IN_STOCK = 0
#         OUT_OF_STOCK = 1
#         PREORDER = 2
#         BACKORDER = 3
# 
# Path: google/cloud/recommendationengine_v1beta1/types/common.py
# class FeatureMap(proto.Message):
#     class StringList(proto.Message):
#     class FloatList(proto.Message):


import proto  # type: ignore
from google.cloud.recommendationengine_v1beta1.types import catalog
from google.cloud.recommendationengine_v1beta1.types import common
from google.protobuf import timestamp_pb2  # type: ignore
               should be set for this unless the shopping cart is empty.

            This field is not allowed for the following event types:

            -  ``category-page-view``
            -  ``home-page-view``
            -  ``search``
        list_id (str):
            Required for ``add-to-list`` and ``remove-from-list``
            events. The id or name of the list that the item is being
            added to or removed from. Other event types should not set
            this field.
        cart_id (str):
            Optional. The id or name of the associated shopping cart.
            This id is used to associate multiple items added or present
            in the cart before purchase.

            This can only be set for ``add-to-cart``,
            ``remove-from-cart``, ``checkout-start``,
            ``purchase-complete``, or ``shopping-cart-page-view``
            events.
        purchase_transaction (google.cloud.recommendationengine_v1beta1.types.PurchaseTransaction):
            Optional. A transaction represents the entire purchase
            transaction. Required for ``purchase-complete`` events.
            Optional for ``checkout-start`` events. Other event types
            should not set this field.
    """

    search_query = proto.Field(proto.STRING, number=1,)
    page_categories = proto.RepeatedField(

# Path: google/cloud/recommendationengine_v1beta1/types/catalog.py
# class CatalogItem(proto.Message):
#     class CategoryHierarchy(proto.Message):
# class ProductCatalogItem(proto.Message):
#     class StockState(proto.Enum):
#     class ExactPrice(proto.Message):
#     class PriceRange(proto.Message):
# class Image(proto.Message):
#         STOCK_STATE_UNSPECIFIED = 0
#         IN_STOCK = 0
#         OUT_OF_STOCK = 1
#         PREORDER = 2
#         BACKORDER = 3
# 
# Path: google/cloud/recommendationengine_v1beta1/types/common.py
# class FeatureMap(proto.Message):
#     class StringList(proto.Message):
#     class FloatList(proto.Message):


# Path: google/cloud/recommendationengine_v1beta1/types/user_event.py
import proto  # type: ignore
from google.cloud.recommendationengine_v1beta1.types import catalog
from google.cloud.recommendationengine_v1beta1.types import common
from google.protobuf import timestamp_pb2  # type: ignore

               should be set for this unless the shopping cart is empty.

            This field is not allowed for the following event types:

            -  ``category-page-view``
            -  ``home-page-view``
            -  ``search``
        list_id (str):
            Required for ``add-to-list`` and ``remove-from-list``
            events. The id or name of the list that the item is being
            added to or removed from. Other event types should not set
            this field.
        cart_id (str):
            Optional. The id or name of the associated shopping cart.
            This id is used to associate multiple items added or present
            in the cart before purchase.

            This can only be set for ``add-to-cart``,
            ``remove-from-cart``, ``checkout-start``,
            ``purchase-complete``, or ``shopping-cart-page-view``
            events.
        purchase_transaction (google.cloud.recommendationengine_v1beta1.types.PurchaseTransaction):
            Optional. A transaction represents the entire purchase
            transaction. Required for ``purchase-complete`` events.
            Optional for ``checkout-start`` events. Other event types
            should not set this field.
    """

    search_query = proto.Field(proto.STRING, number=1,)
    page_categories = proto.RepeatedField(

        proto.MESSAGE, number=2, message=catalog.CatalogItem.CategoryHierarchy,