package de.cannamanage.domain.enums;

/**
 * All auditable event types in the system.
 * Immutable audit trail for KCanG compliance (10-year retention).
 */
public enum AuditEventType {
    // Distribution events
    DISTRIBUTION_RECORDED,
    DISTRIBUTION_VOIDED,

    // Member events
    MEMBER_CREATED,
    MEMBER_UPDATED,
    MEMBER_SUSPENDED,
    MEMBER_EXPELLED,

    // Stock events
    BATCH_CREATED,
    BATCH_RECALLED,

    // Auth events
    LOGIN_SUCCESS,
    LOGIN_FAILED,
    LOGOUT,
    PASSWORD_CHANGED,

    // Staff events
    STAFF_INVITED,
    STAFF_PERMISSIONS_CHANGED,
    STAFF_REVOKED,

    // Consent events
    CONSENT_GRANTED,
    CONSENT_REVOKED,
    DATA_EXPORTED,
    DATA_DELETED,

    // Billing events
    SUBSCRIPTION_STARTED,
    SUBSCRIPTION_CANCELED,
    PAYMENT_RECEIVED,
    PAYMENT_FAILED,

    // Sprint 7 — Notification events
    NOTIFICATION_BROADCAST_SENT,

    // Sprint 7 — Info Board events
    INFO_BOARD_POST_CREATED,
    INFO_BOARD_POST_EDITED,
    INFO_BOARD_POST_UPDATED,
    INFO_BOARD_POST_PINNED,
    INFO_BOARD_POST_ARCHIVED,
    INFO_BOARD_POST_DELETED,

    // Sprint 7 — Event Calendar events
    EVENT_CREATED,
    EVENT_UPDATED,
    EVENT_CANCELLED,

    // Sprint 7 — Forum events
    FORUM_TOPIC_CREATED,
    FORUM_TOPIC_LOCKED,
    FORUM_TOPIC_DELETED,
    FORUM_REPLY_CREATED,
    FORUM_REPLY_DELETED,
    FORUM_REPORT_REVIEWED,

    // Sprint 8 — Finance/Treasury events
    PAYMENT_RECORDED,
    PAYMENT_VOIDED,
    FEE_SCHEDULE_CREATED,
    FEE_SCHEDULE_UPDATED,
    EXPENSE_RECORDED
}
