type; } /** * @inheritDoc */ public abstract function toArray(): array; /** * @inheritDoc */ public static function fromArray(array $data): ObjectTypeInterface { 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), }; } }