      * If the purchase was not successful, there will be an `NSError`.
      * If the user cancelled, `userCancelled` will be `YES`.
      */
-    @available(swift, obsoleted: 1, renamed: "purchase(product:_:)")
+    @available(iOS, obsoleted: 1, renamed: "purchase(product:_:)")
+    @available(tvOS, obsoleted: 1, renamed: "purchase(product:_:)")
+    @available(watchOS, obsoleted: 1, renamed: "purchase(product:_:)")
+    @available(macOS, obsoleted: 1, renamed: "purchase(product:_:)")
     func purchaseProduct(_ product: SKProduct, _ completion: @escaping PurchaseCompletedBlock) {
         fatalError()
     }


}

@available(swift, obsoleted: 1, renamed: "CustomerInfo")
@available(*, deprecated, message: "use RCCustomerInfo:", renamed: "RCCustomerInfo")
@objc(RCPurchaserInfo) public class PurchaserInfo: NSObject { }

     * - Parameter completion: A completion block called when offerings are available.
     * Called immediately if offerings are cached. Offerings will be nil if an error occurred.
     */
    @available(iOS, obsoleted: 1, renamed: "getOfferings(completion:)")
    @available(tvOS, obsoleted: 1, renamed: "getOfferings(completion:)")
    @available(watchOS, obsoleted: 1, renamed: "getOfferings(completion:)")
    @available(macOS, obsoleted: 1, renamed: "getOfferings(completion:)")
    @objc func offerings(completion: @escaping (Offerings?, Error?) -> Void) {
        fatalError()
    }
