<?php

declare(strict_types=1);

namespace App\Module\Core\Application\DTO;

use DateTimeImmutable;

/**
 * DTO de sortie pour une ligne d'audit.
 *
 * Readonly : aucune mutation possible apres hydration. La resource API
 * Platform expose directement ce DTO (pas d'entite sous-jacente car la
 * table audit_log n'est pas geree par l'ORM).
 */
final readonly class AuditLogOutput
{
    public function __construct(
        public string $id,
        public string $entityType,
        public string $entityId,
        public string $action,
        /** @var array<string, mixed> */
        public array $changes,
        public string $performedBy,
        public DateTimeImmutable $performedAt,
        public ?string $ipAddress,
        public ?string $requestId,
    ) {}
}
