"""Cart Plugin event definitions."""
from typing import Dict, List

CART_EVENTS: List[Dict] = [
    {
        "event_id": "cart.session_created",
        "event_name": "Cart Session Created",
        "description": "Emitted when a new cart session is created via the Shopping Cart Plugin SDK.",
        "topic": "payment_events_cart",
        "emitted_by": "cart_plugin/services.py",
        "consumed_by": [],
        "data_contract": {
            "cart_session_id": "int",
            "merchant_id": "int",
            "widget_key_id": "int",
            "subtotal": "int",
            "currency": "str",
        },
    },
    {
        "event_id": "cart.payment_completed",
        "event_name": "Cart Payment Completed",
        "description": "Emitted when a cart session is successfully paid.  Triggers merchant webhook delivery.",
        "topic": "payment_events_cart",
        "emitted_by": "cart_plugin/services.py",
        "consumed_by": ["cart_plugin/listener.py"],
        "data_contract": {
            "cart_session_id": "int",
            "cart_session_token": "str",
            "merchant_id": "int",
            "transaction_id": "int",
            "amount": "int",
            "currency": "str",
            "customer_email": "str",
        },
    },
    {
        "event_id": "cart.session_expired",
        "event_name": "Cart Session Expired",
        "description": "Emitted by the expire_cart_sessions Celery task when a PENDING session passes its expires_at.",
        "topic": "payment_events_cart",
        "emitted_by": "cart_plugin/tasks/expire_cart_sessions.py",
        "consumed_by": [],
        "data_contract": {
            "cart_session_id": "int",
            "merchant_id": "int",
        },
    },
]
