<?php

declare(strict_types=1);

namespace App\Framework\Exception\SecurityEvent;

use App\Framework\Exception\SecurityLogLevel;

/**
 * Interface für alle Security-Event Value Objects
 */
interface SecurityEventInterface
{
    /**
     * Gibt den OWASP-Event-Identifier zurück (z.B. "authn_login_fail:user123")
     */
    public function getEventIdentifier(): string;

    /**
     * Gibt die OWASP-Beschreibung zurück (z.B. "User user123 login failure")
     */
    public function getDescription(): string;

    /**
     * Gibt das Log-Level zurück
     */
    public function getLogLevel(): SecurityLogLevel;

    /**
     * Prüft ob Event kritisch ist und Alerting erfordert
     */
    public function requiresAlert(): bool;

    /**
     * Gibt die Event-Daten als Array zurück
     */
    public function toArray(): array;

    /**
     * Gibt die Event-Kategorie zurück (auth, authz, input, etc.)
     */
    public function getCategory(): string;
}
