|null $state */ public function __construct( public readonly string $roomId, public readonly int $version, public readonly RoomStateChange $change, public readonly ?array $state = null, ) {} public function broadcastOn(): Channel { return new Channel("rooms.{$this->roomId}"); } public function broadcastAs(): string { return 'room.state.changed'; } /** * @return array{version: int, change: string, state: array|null} */ public function broadcastWith(): array { return [ 'version' => $this->version, 'change' => $this->change->value, 'state' => $this->state, ]; } }