type; } /** * @inheritDoc */ public abstract function toArray(): array; /** * @inheritDoc */ public static function fromArray(?array $data): ?InputMedia { if($data === null) { return null; } if(!isset($data['type'])) { throw new InvalidArgumentException('type is not provided'); } return match (InputMediaType::tryFrom($data['type'])) { InputMediaType::PHOTO => InputMediaPhoto::fromArray($data), InputMediaType::VIDEO => InputMediaVideo::fromArray($data), InputMediaType::ANIMATION => InputMediaAnimation::fromArray($data), InputMediaType::AUDIO => InputMediaAudio::fromArray($data), InputMediaType::DOCUMENT => InputMediaDocument::fromArray($data), default => throw new InvalidArgumentException('Unknown type') }; } }