$payload Free-form event payload, JSON-encoded into details_json. * MUST NOT contain raw secrets (raw tokens, passwords). * @param string|null $entityLabel Human-readable identifier (name, slug, IP, CIDR, prefix). * Frozen at write time — later renames don't rewrite history. Pass null only when no * meaningful label exists (system-wide actions like maintenance.purged). */ public function emit( string $action, ?string $entityType, int|string|null $entityId, array $payload, AuditContext $context, ?string $entityLabel = null, ): void; }