from

fun from(productId: String, offer: ProductDetails.SubscriptionOfferDetails): OfferInfo

Classifies the pricing phases of a ProductDetails.SubscriptionOfferDetails and returns a populated OfferInfo. Phases are matched by recurrence mode and price, not by list position, so an offer with phases in any order is handled correctly.