type; } /** * @inheritDoc */ public abstract function toArray(): array; /** * @inheritDoc */ public static function fromArray(?array $data): ?PaidMedia { if($data === null) { return null; } if(!isset($data['type'])) { throw new InvalidArgumentException('Paid media type is required'); } return match (PaidMediaType::tryFrom($data['type'])) { PaidMediaType::PHOTO => PaidMediaPhoto::fromArray($data), PaidMediaType::VIDEO => PaidMediaVideo::fromArray($data), PaidMediaType::PREVIEW => PaidMediaPreview::fromArray($data), }; } }