status; } /** * @inheritDoc */ public abstract function toArray(): array; /** * @inheritDoc */ public static function fromArray(?array $data): ?ChatMember { if($data === null) { return null; } if(!isset($data['status'])) { throw new InvalidArgumentException('ChatMember expected status'); } return match(ChatMemberStatus::tryFrom($data['status'])) { ChatMemberStatus::ADMINISTRATOR => ChatMemberAdministrator::fromArray($data), ChatMemberStatus::KICKED => ChatMemberBanned::fromArray($data), ChatMemberStatus::LEFT => ChatMemberLeft::fromArray($data), ChatMemberStatus::MEMBER => ChatMemberMember::fromArray($data), ChatMemberStatus::CREATOR => ChatMemberOwner::fromArray($data), ChatMemberStatus::RESTRICTED => ChatMemberRestricted::fromArray($data), default => throw new InvalidArgumentException('Unexpected status for ChatMember') }; } }