$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" => $this->invite ?? new \stdClass(), "join" => $this->join ?? new \stdClass(), "knock" => $this->knock ?? new \stdClass(), "leave" => $this->leave ?? new \stdClass(), ]; } /** * @return InvitedRoom[] */ public function getInvite(): ?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; } }