$invite * @param array $join * @param array $knock * @param array $leave */ public function __construct( private ?array $invite = null, private ?array $join = null, private ?array $knock = null, private ?array $leave = null, ) {} public function jsonSerialize(): array { return [ "invite" => empty($this->invite) ? new \stdClass() : $this->invite, "join" => empty($this->join) ? new \stdClass() : $this->join, "knock" => empty($this->knock) ? new \stdClass() : $this->knock, "leave" => empty($this->leave) ? new \stdClass() : $this->leave, ]; } /** * @return InvitedRoom[] */ public function getInvited(): ?array { return $this->invite; } /** * @return JoinedRoom[] */ public function getJoined(): ?array { return $this->join; } /** * @return KnockedRoom[] */ public function getKnocked(): ?array { return $this->knock; } /** * @return LeftRoom[] */ public function getLeft(): ?array { return $this->leave; } }