from enum import Enum


class ReactionTypes(Enum):
    EMAIL = "EMAIL"
    SMS = "SMS"
    HTTP_CALLBACK = "HTTP_CALLBACK"


class EventCategory(Enum):
    CHAT_ACTIONS = "NOTIFICATIONS_CHAT_ACTIONS"
    NOTIFICATIONS = "NOTIFICATIONS"
    NOTIFICATION_RULES = "NOTIFICATION_RULES"
    # Messaging-platform connectors (Slack/Teams/Google-Chat) are audited as
    # integrations, alongside ticketing and other third-party connectors.
    INTEGRATIONS = "INTEGRATIONS"


class EventType(Enum):
    SLACK_COMMAND = "NOTIFICATIONS_SLACK_COMMAND"
    SLACK_EVENT = "NOTIFICATIONS_SLACK_EVENT"
    SLACK_INTERACTION = "NOTIFICATIONS_SLACK_INTERACTION"
    NOTIFICATION_RULE_CREATE = "NOTIFICATION_RULE_CREATE"
    NOTIFICATION_RULE_UPDATE = "NOTIFICATION_RULE_UPDATE"
    NOTIFICATION_SLACK_CONFIGURATION_CREATE = "NOTIFICATION_SLACK_CONFIGURATION_CREATE"
    NOTIFICATION_MSTEAMS_CONFIGURATION_CREATE = "NOTIFICATION_MS_TEAMS_CONFIGURATION_CREATE"
    NOTIFICATION_GCHAT_CONFIGURATION_CREATE = "NOTIFICATION_GOOGLE_CHAT_CONFIGURATION_CREATE"


class EventActor(Enum):
    SLACK = "NOTIFICATIONS_SLACK"
    MS_TEAMS = "NOTIFICATIONS_MS_TEAMS"
    GOOGLE_CHAT = "NOTIFICATIONS_GOOGLE_CHAT"
    NOTIFICATION_SERVICE = "NOTIFICATION_SERVICE"


class EventAction(Enum):
    CREATE = "CREATE"
    UPDATE = "UPDATE"
    DELETE = "DELETE"
    READ = "READ"


class EventStatus(Enum):
    SUCCESS = "SUCCESS"
    FAILURE = "FAILURE"


class PlatformTypes(str, Enum):
    SLACK = "slack"
    MS_TEAMS = "ms_teams"
    GOOGLE_CHAT = "google_chat"
