source; } /** * @inheritDoc */ public abstract function toArray(): ?array; /** * @inheritDoc */ public static function fromArray(?array $data): ?ChatBoostSource { if($data === null) { return null; } return match (ChatBoostSourceType::tryFrom($data['source'])) { ChatBoostSourceType::GIFT_CODE => ChatBoostSourceGiftCode::fromArray($data), ChatBoostSourceType::PREMIUM => ChatBoostSourcePremium::fromArray($data), ChatBoostSourceType::GIVEAWAY => ChatBoostSourceGiveaway::fromArray($data), default => throw new InvalidArgumentException('Unknown source type') }; } }