<?php

declare(strict_types=1);

namespace MintyPHP\App\Module;

/**
 * Central registry of all module event names dispatched by core.
 *
 * Modules reference these constants in their event_listeners manifest declarations
 * and in listener implementations. ValidateCommand warns on unknown event names.
 */
final class ModuleEvents
{
    public const USER_LOGIN = 'user.login';
    public const USER_LOGOUT = 'user.logout';
    public const USER_CREATED = 'user.created';
    public const USER_DELETED = 'user.deleted';
    public const USER_ACTIVATED = 'user.activated';
    public const USER_DEACTIVATED = 'user.deactivated';
    public const USER_ASSIGNMENT_CHANGED = 'user.assignment_changed';
    public const SCHEDULER_JOB_FAILED = 'scheduler.job_failed';

    /** @return list<string> */
    public static function all(): array
    {
        return [
            self::USER_LOGIN,
            self::USER_LOGOUT,
            self::USER_CREATED,
            self::USER_DELETED,
            self::USER_ACTIVATED,
            self::USER_DEACTIVATED,
            self::USER_ASSIGNMENT_CHANGED,
            self::SCHEDULER_JOB_FAILED,
        ];
    }

    private function __construct()
    {
    }
}
