<?php

namespace App\Shared\Event\Message;

/**
 * پیام async یک رویداد دامنه.
 *
 * `uuid` شناسهٔ idempotency است: messenger ممکن است پیام را دوباره تحویل بدهد، و
 * **مصرف‌کننده** باید تکراری را تشخیص بدهد — نه اینکه رویداد تضمین یکتایی بدهد.
 */
final readonly class DomainEventMessage
{
    /** @param array<string, scalar|null> $payload */
    public function __construct(
        public string $uuid,
        public string $name,
        public string $entityType,
        public int    $entityId,
        public array  $payload,
        public int    $occurredAt,
    ) {}
}
