<?php

declare(strict_types=1);

namespace App\Framework\Audit\ValueObjects;

/**
 * Auditable action types
 */
enum AuditableAction: string
{
    // Authentication & Authorization
    case LOGIN = 'auth.login';
    case LOGOUT = 'auth.logout';
    case LOGIN_FAILED = 'auth.login_failed';
    case PASSWORD_CHANGED = 'auth.password_changed';
    case PASSWORD_RESET = 'auth.password_reset';
    case PERMISSION_GRANTED = 'authz.permission_granted';
    case PERMISSION_DENIED = 'authz.permission_denied';

    // CRUD Operations
    case CREATE = 'crud.create';
    case READ = 'crud.read';
    case UPDATE = 'crud.update';
    case DELETE = 'crud.delete';

    // Data Operations
    case EXPORT = 'data.export';
    case IMPORT = 'data.import';
    case DOWNLOAD = 'data.download';

    // System Operations
    case CONFIG_CHANGED = 'system.config_changed';
    case FEATURE_ENABLED = 'system.feature_enabled';
    case FEATURE_DISABLED = 'system.feature_disabled';

    // Security Events
    case SECURITY_VIOLATION = 'security.violation';
    case SUSPICIOUS_ACTIVITY = 'security.suspicious_activity';
    case ACCESS_DENIED = 'security.access_denied';

    // Custom
    case CUSTOM = 'custom';
}
