"""This file is the entrypoint for housing all events related to authentication app"""

from src.events.base import BaseEvent
from datetime import datetime
from typing import Dict

class UserLoggedInEvent(BaseEvent):
    """Event triggered when a user logs in"""
    def __init__(
            self,
            user_id: str,
            merchant_id: str,
            ip_address: str,
            login_time: datetime,
            geo_data: Dict = {}
        ):
        """Event triggered when a user logs in"""
        super().__init__(
            event_type='auth.user.logged_in',
            data={
                "user_id": user_id,
                "merchant_id": merchant_id,
                "ip_address": ip_address,
                "login_time": login_time.isoformat(),
                "geo_data": geo_data
            }
        )

class UserLoggedOutEvent(BaseEvent):
    """Event triggered when a user logs out"""
    def __init__(
            self,
            user_id: str,
            merchant_id: str,
            ip_address: str,
            logout_time: datetime,
            geo_data: Dict = {}
        ):
        """Event triggered when a user logs out"""
        super().__init__(
            event_type='auth.user.logged_out',
            data={
                "user_id": user_id,
                "merchant_id": merchant_id,
                "ip_address": ip_address,
                "logout_time": logout_time.isoformat(),
                "geo_data": geo_data
            }
        )