diff --git a/.gitignore b/.gitignore index f9f0cbe..870ccdb 100644 --- a/.gitignore +++ b/.gitignore @@ -359,3 +359,4 @@ MigrationBackup/ # End of https://www.toptal.com/developers/gitignore/api/visualstudio +.DS_Store diff --git a/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/indexLayout.xml b/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/indexLayout.xml index 27ba142..7b08163 100644 --- a/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/indexLayout.xml +++ b/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/indexLayout.xml @@ -1,6 +1,6 @@ - + diff --git a/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/riderModule.iml b/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/riderModule.iml deleted file mode 100644 index 1a4e0d9..0000000 --- a/.idea/.idea.Xamarin.RevenueCat.iOS/.idea/riderModule.iml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index d6f5150..fff5381 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 fun.music IT GmbH +Copyright (c) 2022 fun.music IT GmbH Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 25d9772..922dca1 100644 --- a/README.md +++ b/README.md @@ -39,47 +39,6 @@ Add `-gcc_flags "-ObjC"` to the `MtouchExtraArgs` XML element of your project fi Please see [this issue](https://github.com/thisisthekap/Xamarin.RevenueCat.iOS/issues/13) for more details. -## How to bind new version - -This section explains how to create resp. adapt the bindings to bind to a newer version of RevenueCat for iOS. - -### Build static library - -1. `cd sharpie` -2. Set the desired version of RevenueCat for iOS in `revenuecat-version.txt` -3. Execute `./prepare-library-build.sh` -4. Right click "Purchases" to add files: - * ![howto-1](readme-images/howto-1.png) -5. Select everything in the "Purchases" folder, and make sure that the settings are configured as described: - * ![howto-2](readme-images/howto-2.png) -6. Press "Add" -7. Close XCode -8. Execute `./finish-library-build.sh` - -After these steps, a new static library was built and moved to `Xamarin.RevenueCat.iOS/nativelib/libPurchases.a`. This file is referenced as `NativeReference` in `Xamarin.RevenueCat.iOS.csproj`. - -### Create C# Bindings using Objective Sharpie - -This section describes how to create `ApiBindings.cs` and `StructsAndEnums.cs`. - -1. `cd sharpie` -2. Set the desired version of RevenueCat for iOS in `revenuecat-version.txt` -3. Execute `./create-sharpie-files.sh` -4. Copy `ApiBindings.cs` and `StructsAndEnums.cs` to `../Xamarin.RevenueCat.iOS` - -#### Tip when updating to newer version of revenuecat/purchases-ios - -To find out which API changes were made between two versions of revenuecat/purchases-ios, you could execute sharpie twice: - -1. Execute steps 1 to 3 from the steps above - * Do not change the version of `revenuecat/purchases-ios` in `revenuecat-version.txt` -2. Execute `mv ApiBindings.cs ApiBindings_old.cs` -3. Execute `mv StructsAndEnums.cs StructsAndEnums_old.cs` -4. Change the version of `revenuecat/purchases-ios` in `revenuecat-version.txt` -5. Execute `./create-sharpie-files.sh` - -Now you can use `diff` or your favorite diff tool to detect the changes between both versions. - ## License The license for this repository is specified in diff --git a/Xamarin.RevenueCat.iOS.Extensions/LoginResult.cs b/Xamarin.RevenueCat.iOS.Extensions/LoginResult.cs new file mode 100644 index 0000000..d4e2ee4 --- /dev/null +++ b/Xamarin.RevenueCat.iOS.Extensions/LoginResult.cs @@ -0,0 +1,16 @@ +using RevenueCat; + +namespace Xamarin.RevenueCat.iOS.Extensions +{ + public struct LoginResult + { + public RCCustomerInfo CustomerInfo { get; } + public bool Created { get; } + + public LoginResult(RCCustomerInfo customerInfo, bool created) + { + CustomerInfo = customerInfo; + Created = created; + } + } +} diff --git a/Xamarin.RevenueCat.iOS.Extensions/PurchaseSuccessInfo.cs b/Xamarin.RevenueCat.iOS.Extensions/PurchaseSuccessInfo.cs index a1c3c2f..b8d8818 100644 --- a/Xamarin.RevenueCat.iOS.Extensions/PurchaseSuccessInfo.cs +++ b/Xamarin.RevenueCat.iOS.Extensions/PurchaseSuccessInfo.cs @@ -1,17 +1,16 @@ -using Purchases; -using StoreKit; +using RevenueCat; namespace Xamarin.RevenueCat.iOS.Extensions { - public class PurchaseSuccessInfo + public struct PurchaseSuccessInfo { - public SKPaymentTransaction Transaction { get; } - public RCPurchaserInfo PurchaserInfo { get; } + public RCStoreTransaction Transaction { get; } + public RCCustomerInfo CustomerInfo { get; } - public PurchaseSuccessInfo(SKPaymentTransaction transaction, RCPurchaserInfo purchaserInfo) + public PurchaseSuccessInfo(RCStoreTransaction transaction, RCCustomerInfo customerInfo) { Transaction = transaction; - PurchaserInfo = purchaserInfo; + CustomerInfo = customerInfo; } } } diff --git a/Xamarin.RevenueCat.iOS.Extensions/Exceptions/PurchasesErrorException.cs b/Xamarin.RevenueCat.iOS.Extensions/PurchasesErrorException.cs similarity index 72% rename from Xamarin.RevenueCat.iOS.Extensions/Exceptions/PurchasesErrorException.cs rename to Xamarin.RevenueCat.iOS.Extensions/PurchasesErrorException.cs index 0873094..a9feff9 100644 --- a/Xamarin.RevenueCat.iOS.Extensions/Exceptions/PurchasesErrorException.cs +++ b/Xamarin.RevenueCat.iOS.Extensions/PurchasesErrorException.cs @@ -1,8 +1,8 @@ using System; using Foundation; -using Purchases; +using RevenueCat; -namespace Xamarin.RevenueCat.iOS.Extensions.Exceptions +namespace Xamarin.RevenueCat.iOS.Extensions { public class PurchasesErrorException : Exception { @@ -15,22 +15,22 @@ public class PurchasesErrorException : Exception public RCPurchasesErrorCode PurchasesErrorCode { get; } public PurchasesErrorException(NSError purchasesError, bool userCancelled) - : base($"{purchasesError?.Description} userCancelled: {userCancelled}") + : base($"{purchasesError?.Description} userCancelled: {userCancelled}", + new NSErrorException(purchasesError)) { PurchasesError = purchasesError; UserCancelled = userCancelled; if (purchasesError != null) { - purchasesError.UserInfo.TryGetValue(RCPurchasesErrors.RCReadableErrorCodeKey, - out NSObject readableErrorCode); + purchasesError.UserInfo.TryGetValue(ErrorDetails.ReadableErrorCodeKey, out NSObject readableErrorCode); ReadableErrorCode = readableErrorCode; purchasesError.UserInfo.TryGetValue(NSError.UnderlyingErrorKey, out NSObject underlyingError); UnderlyingError = underlyingError; var localizedDescription = purchasesError.LocalizedDescription; LocalizedDescription = localizedDescription; - int purchaseErrorCodeInt = (int) purchasesError.Code; - PurchasesErrorCode = (RCPurchasesErrorCode) purchaseErrorCodeInt; + int purchaseErrorCodeInt = (int)purchasesError.Code; + PurchasesErrorCode = (RCPurchasesErrorCode)purchaseErrorCodeInt; } } } diff --git a/Xamarin.RevenueCat.iOS.Extensions/RCPurchasesExtensions.cs b/Xamarin.RevenueCat.iOS.Extensions/RCPurchasesExtensions.cs index f4ec9f4..2d2fe87 100644 --- a/Xamarin.RevenueCat.iOS.Extensions/RCPurchasesExtensions.cs +++ b/Xamarin.RevenueCat.iOS.Extensions/RCPurchasesExtensions.cs @@ -1,20 +1,19 @@ using System.Threading; using System.Threading.Tasks; using Foundation; -using Purchases; -using StoreKit; -using Xamarin.RevenueCat.iOS.Extensions.Exceptions; +using RevenueCat; namespace Xamarin.RevenueCat.iOS.Extensions { + // ReSharper disable once InconsistentNaming public static class RCPurchasesExtensions { - public static Task IdentifyAsync(this RCPurchases purchases, string appUserId, + public static Task LoginAsync(this RCPurchases purchases, string appUserId, CancellationToken cancellationToken = default) { - var tcs = new TaskCompletionSource(); + var tcs = new TaskCompletionSource(); cancellationToken.Register(() => tcs.TrySetCanceled()); - purchases.Identify(appUserId, (purchaserInfo, error) => + purchases.LogIn(appUserId, (customerInfo, created, error) => { if (error != null) { @@ -22,7 +21,7 @@ public static Task IdentifyAsync(this RCPurchases purchases, st } else { - tcs.TrySetResult(purchaserInfo); + tcs.TrySetResult(new LoginResult(customerInfo, created)); } }); return tcs.Task; @@ -33,7 +32,7 @@ public static Task GetOfferingsAsync(this RCPurchases purchases, { var tcs = new TaskCompletionSource(); cancellationToken.Register(() => tcs.TrySetCanceled()); - purchases.OfferingsWithCompletionBlock((RCOfferings offerings, NSError error) => + purchases.GetOfferingsWithCompletion((RCOfferings offerings, NSError error) => { if (error != null) { @@ -53,7 +52,7 @@ public static Task PurchasePackageAsync(this RCPurchases pu var tcs = new TaskCompletionSource(); cancellationToken.Register(() => tcs.TrySetCanceled()); purchases.PurchasePackage(packageToPurchase, - (SKPaymentTransaction transaction, RCPurchaserInfo purchaserInfo, NSError error, bool userCancelled) => + (RCStoreTransaction transaction, RCCustomerInfo customerInfo, NSError error, bool userCancelled) => { if (error != null) { @@ -65,18 +64,18 @@ public static Task PurchasePackageAsync(this RCPurchases pu } else { - tcs.TrySetResult(new PurchaseSuccessInfo(transaction, purchaserInfo)); + tcs.TrySetResult(new PurchaseSuccessInfo(transaction, customerInfo)); } }); return tcs.Task; } - public static Task RestoreTransactionsAsync(this RCPurchases purchases, + public static Task RestoreTransactionsAsync(this RCPurchases purchases, CancellationToken cancellationToken = default) { - var tcs = new TaskCompletionSource(); + var tcs = new TaskCompletionSource(); cancellationToken.Register(() => tcs.TrySetCanceled()); - purchases.RestoreTransactionsWithCompletionBlock((RCPurchaserInfo purchaserInfo, NSError error) => + purchases.RestorePurchasesWithCompletion((RCCustomerInfo customerInfo, NSError error) => { if (error != null) { @@ -84,18 +83,18 @@ public static Task RestoreTransactionsAsync(this RCPurchases pu } else { - tcs.TrySetResult(purchaserInfo); + tcs.TrySetResult(customerInfo); } }); return tcs.Task; } - public static Task GetPurchaserInfoAsync(this RCPurchases purchases, + public static Task GetCustomerInfoAsync(this RCPurchases purchases, CancellationToken cancellationToken = default) { - var tcs = new TaskCompletionSource(); + var tcs = new TaskCompletionSource(); cancellationToken.Register(() => tcs.TrySetCanceled()); - purchases.PurchaserInfoWithCompletionBlock((RCPurchaserInfo purchaserInfo, NSError error) => + purchases.GetCustomerInfoWithCompletion((RCCustomerInfo customerInfo, NSError error) => { if (error != null) { @@ -103,7 +102,7 @@ public static Task GetPurchaserInfoAsync(this RCPurchases purch } else { - tcs.TrySetResult(purchaserInfo); + tcs.TrySetResult(customerInfo); } }); return tcs.Task; diff --git a/Xamarin.RevenueCat.iOS.Extensions/Xamarin.RevenueCat.iOS.Extensions.csproj b/Xamarin.RevenueCat.iOS.Extensions/Xamarin.RevenueCat.iOS.Extensions.csproj index 4356e0b..385b767 100644 --- a/Xamarin.RevenueCat.iOS.Extensions/Xamarin.RevenueCat.iOS.Extensions.csproj +++ b/Xamarin.RevenueCat.iOS.Extensions/Xamarin.RevenueCat.iOS.Extensions.csproj @@ -1,65 +1,69 @@  - - true - Xamarin.RevenueCat.iOS.Extensions - Contains convenience methods and async extensions for Xamarin.RevenueCat.iOS - 3.5.3.10 - Christian Kapplmüller - fun.music IT GmbH - nugetoutput - ..\..\..\LICENSE.txt - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {9774C184-1A52-40A3-82F7-3D27F92AD38E} - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {a52b8a63-bc84-4b47-910d-692533484892} - Library - Xamarin.RevenueCat.iOS.Extensions - Resources - Xamarin.RevenueCat.iOS.Extensions - PackageReference - - - true - full - false - bin\Debug - DEBUG; - prompt - 4 - - - full - true - bin\Release - prompt - 4 - - - - - - - - - - - - - - - - - - - {EAA9C04E-CFAD-49D2-A3A8-168A811D79DA} - Xamarin.RevenueCat.iOS - - - - \ No newline at end of file + + true + Xamarin.RevenueCat.iOS.Extensions + Contains convenience methods and async extensions for Xamarin.RevenueCat.iOS + 4.1.0.4 + Christian Kapplmüller + fun.music IT GmbH + nugetoutput + ..\..\..\LICENSE.txt + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {9774C184-1A52-40A3-82F7-3D27F92AD38E} + {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {a52b8a63-bc84-4b47-910d-692533484892} + Library + Xamarin.RevenueCat.iOS.Extensions + Resources + Xamarin.RevenueCat.iOS.Extensions + PackageReference + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + + + full + true + bin\Release + prompt + 4 + + + + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + {EAA9C04E-CFAD-49D2-A3A8-168A811D79DA} + Xamarin.RevenueCat.iOS + + + + diff --git a/Xamarin.RevenueCat.iOS.UsageChecker/AppDelegate.cs b/Xamarin.RevenueCat.iOS.UsageChecker/AppDelegate.cs index 2750d02..491b982 100644 --- a/Xamarin.RevenueCat.iOS.UsageChecker/AppDelegate.cs +++ b/Xamarin.RevenueCat.iOS.UsageChecker/AppDelegate.cs @@ -1,5 +1,5 @@ using Foundation; -using Purchases; +using RevenueCat; using UIKit; namespace Xamarin.RevenueCat.iOS.UsageChecker diff --git a/Xamarin.RevenueCat.iOS.UsageChecker/Info.plist b/Xamarin.RevenueCat.iOS.UsageChecker/Info.plist index faedd6c..82193a6 100644 --- a/Xamarin.RevenueCat.iOS.UsageChecker/Info.plist +++ b/Xamarin.RevenueCat.iOS.UsageChecker/Info.plist @@ -32,7 +32,7 @@ MinimumOSVersion - 9.0 + 11.0 UIDeviceFamily 1 diff --git a/Xamarin.RevenueCat.iOS.UsageChecker/Xamarin.RevenueCat.iOS.UsageChecker.csproj b/Xamarin.RevenueCat.iOS.UsageChecker/Xamarin.RevenueCat.iOS.UsageChecker.csproj index 3500fa2..d0a3e06 100644 --- a/Xamarin.RevenueCat.iOS.UsageChecker/Xamarin.RevenueCat.iOS.UsageChecker.csproj +++ b/Xamarin.RevenueCat.iOS.UsageChecker/Xamarin.RevenueCat.iOS.UsageChecker.csproj @@ -69,7 +69,7 @@ - + diff --git a/Xamarin.RevenueCat.iOS/Additions/ErrorDetails.cs b/Xamarin.RevenueCat.iOS/Additions/ErrorDetails.cs new file mode 100644 index 0000000..1bc681c --- /dev/null +++ b/Xamarin.RevenueCat.iOS/Additions/ErrorDetails.cs @@ -0,0 +1,17 @@ +using Foundation; + +// ReSharper disable once CheckNamespace +namespace RevenueCat +{ + /// + /// C# representation of https://github.com/RevenueCat/purchases-ios/blob/4.1.0/Purchases/Error%20Handling/ErrorDetails.swift + /// + public static class ErrorDetails + { + public static readonly NSString FinishableKey = new("finishable"); + public static readonly NSString ReadableErrorCodeKey = new("readable_error_code"); + public static readonly NSString ExtraContextKey = new("extra_context"); + public static readonly NSString FileKey = new("source_file"); + public static readonly NSString FunctionKey = new("source_function"); + } +} diff --git a/Xamarin.RevenueCat.iOS/ApiDefinitions.cs b/Xamarin.RevenueCat.iOS/ApiDefinitions.cs index bb76304..1269065 100644 --- a/Xamarin.RevenueCat.iOS/ApiDefinitions.cs +++ b/Xamarin.RevenueCat.iOS/ApiDefinitions.cs @@ -1,525 +1,906 @@ +using System; using Foundation; using ObjCRuntime; using StoreKit; -namespace Purchases +namespace RevenueCat { - // @interface RCPurchasesErrors - [Static] - interface RCPurchasesErrors - { - // extern const NSErrorDomain RCPurchasesErrorDomain __attribute__((swift_name("Purchases.ErrorDomain"))); - [Field("RCPurchasesErrorDomain", "__Internal")] - NSString RCPurchasesErrorDomain { get; } - - // extern const NSErrorDomain RCBackendErrorDomain __attribute__((swift_name("Purchases.RevenueCatBackendErrorDomain"))); - [Field("RCBackendErrorDomain", "__Internal")] - NSString RCBackendErrorDomain { get; } - - // extern const NSErrorUserInfoKey RCFinishableKey __attribute__((swift_name("Purchases.FinishableKey"))); - [Field("RCFinishableKey", "__Internal")] - NSString RCFinishableKey { get; } - - // extern const NSErrorUserInfoKey RCReadableErrorCodeKey __attribute__((swift_name("Purchases.ReadableErrorCodeKey"))); - [Field("RCReadableErrorCodeKey", "__Internal")] - NSString RCReadableErrorCodeKey { get; } - } - - // @interface RCOffering : NSObject - [BaseType(typeof(NSObject))] - interface RCOffering : INativeObject - { - // @property (readonly) NSString * _Nonnull identifier; - [Export("identifier")] - string Identifier { get; } - - // @property (readonly) NSString * _Nonnull serverDescription; - [Export("serverDescription")] - string ServerDescription { get; } - - // @property (readonly) NSArray * _Nonnull availablePackages; - [Export("availablePackages")] - RCPackage[] AvailablePackages { get; } - - // @property (readonly) RCPackage * _Nullable lifetime; - [NullAllowed, Export("lifetime")] - RCPackage Lifetime { get; } - - // @property (readonly) RCPackage * _Nullable annual; - [NullAllowed, Export("annual")] - RCPackage Annual { get; } - - // @property (readonly) RCPackage * _Nullable sixMonth; - [NullAllowed, Export("sixMonth")] - RCPackage SixMonth { get; } - - // @property (readonly) RCPackage * _Nullable threeMonth; - [NullAllowed, Export("threeMonth")] - RCPackage ThreeMonth { get; } - - // @property (readonly) RCPackage * _Nullable twoMonth; - [NullAllowed, Export("twoMonth")] - RCPackage TwoMonth { get; } - - // @property (readonly) RCPackage * _Nullable monthly; - [NullAllowed, Export("monthly")] - RCPackage Monthly { get; } - - // @property (readonly) RCPackage * _Nullable weekly; - [NullAllowed, Export("weekly")] - RCPackage Weekly { get; } - - // -(RCPackage * _Nullable)packageWithIdentifier:(NSString * _Nullable)identifier __attribute__((swift_name("package(identifier:)"))); - [Export("packageWithIdentifier:")] - [return: NullAllowed] - RCPackage PackageWithIdentifier([NullAllowed] string identifier); - - // -(RCPackage * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key; - [Export("objectForKeyedSubscript:")] - [return: NullAllowed] - RCPackage ObjectForKeyedSubscript(string key); - } - - // @interface RCOfferings : NSObject - [BaseType(typeof(NSObject))] - interface RCOfferings : INativeObject - { - // @property (readonly) RCOffering * _Nullable current; - [NullAllowed, Export("current")] - RCOffering Current { get; } - - // @property (readonly) NSDictionary * _Nonnull all; - [Export("all")] - NSDictionary All { get; } - - // -(RCOffering * _Nullable)offeringWithIdentifier:(NSString * _Nullable)identifier __attribute__((swift_name("offering(identifier:)"))); - [Export("offeringWithIdentifier:")] - [return: NullAllowed] - RCOffering OfferingWithIdentifier([NullAllowed] string identifier); - - // -(RCOffering * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key; - [Export("objectForKeyedSubscript:")] - [return: NullAllowed] - RCOffering ObjectForKeyedSubscript(string key); - } - - // typedef void (^RCReceivePurchaserInfoBlock)(RCPurchaserInfo * _Nullable, NSError * _Nullable); - delegate void RCReceivePurchaserInfoBlock([NullAllowed] RCPurchaserInfo arg0, [NullAllowed] NSError arg1); - - // typedef void (^RCReceiveIntroEligibilityBlock)(NSDictionary * _Nonnull); - delegate void RCReceiveIntroEligibilityBlock(NSDictionary arg0); - - // typedef void (^RCReceiveOfferingsBlock)(RCOfferings * _Nullable, NSError * _Nullable); - delegate void RCReceiveOfferingsBlock([NullAllowed] RCOfferings arg0, [NullAllowed] NSError arg1); - - // typedef void (^RCReceiveProductsBlock)(NSArray * _Nonnull); - delegate void RCReceiveProductsBlock(SKProduct[] arg0); - - // typedef void (^RCPurchaseCompletedBlock)(SKPaymentTransaction * _Nullable, RCPurchaserInfo * _Nullable, NSError * _Nullable, BOOL); - delegate void RCPurchaseCompletedBlock([NullAllowed] SKPaymentTransaction arg0, [NullAllowed] RCPurchaserInfo arg1, [NullAllowed] NSError arg2, bool arg3); - - // typedef void (^RCDeferredPromotionalPurchaseBlock)(RCPurchaseCompletedBlock _Nonnull); - delegate void RCDeferredPromotionalPurchaseBlock(RCPurchaseCompletedBlock arg0); - - // typedef void (^RCPaymentDiscountBlock)(SKPaymentDiscount * _Nullable, NSError * _Nullable); - delegate void RCPaymentDiscountBlock([NullAllowed] SKPaymentDiscount arg0, [NullAllowed] NSError arg1); - - // @interface RCPurchases : NSObject - [BaseType(typeof(NSObject))] - interface RCPurchases : INativeObject - { - // @property (assign, nonatomic, class) BOOL automaticAppleSearchAdsAttributionCollection; - [Static] - [Export("automaticAppleSearchAdsAttributionCollection")] - bool AutomaticAppleSearchAdsAttributionCollection { get; set; } - - // @property (assign, nonatomic, class) BOOL debugLogsEnabled; - [Static] - [Export("debugLogsEnabled")] - bool DebugLogsEnabled { get; set; } - - // @property (copy, nonatomic, class) NSURL * _Nullable proxyURL; - [Static] - [NullAllowed, Export("proxyURL", ArgumentSemantic.Copy)] - NSUrl ProxyURL { get; set; } - - // +(instancetype _Nonnull)configureWithAPIKey:(NSString * _Nonnull)APIKey; - [Static] - [Export("configureWithAPIKey:")] - RCPurchases ConfigureWithAPIKey(string APIKey); - - // +(instancetype _Nonnull)configureWithAPIKey:(NSString * _Nonnull)APIKey appUserID:(NSString * _Nullable)appUserID; - [Static] - [Export("configureWithAPIKey:appUserID:")] - RCPurchases ConfigureWithAPIKey(string APIKey, [NullAllowed] string appUserID); - - // +(instancetype _Nonnull)configureWithAPIKey:(NSString * _Nonnull)APIKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode; - [Static] - [Export("configureWithAPIKey:appUserID:observerMode:")] - RCPurchases ConfigureWithAPIKey(string APIKey, [NullAllowed] string appUserID, bool observerMode); - - // +(instancetype _Nonnull)configureWithAPIKey:(NSString * _Nonnull)APIKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults; - [Static] - [Export("configureWithAPIKey:appUserID:observerMode:userDefaults:")] - RCPurchases ConfigureWithAPIKey(string APIKey, [NullAllowed] string appUserID, bool observerMode, [NullAllowed] NSUserDefaults userDefaults); - - // +(BOOL)canMakePayments; - [Static] - [Export("canMakePayments")] - bool CanMakePayments { get; } - - // @property (readonly, nonatomic, class) RCPurchases * _Nonnull sharedPurchases; - [Static] - [Export("sharedPurchases")] - RCPurchases SharedPurchases { get; } - - // @property (nonatomic) BOOL allowSharingAppStoreAccount; - [Export("allowSharingAppStoreAccount")] - bool AllowSharingAppStoreAccount { get; set; } - - // @property (nonatomic) BOOL finishTransactions; - [Export("finishTransactions")] - bool FinishTransactions { get; set; } - - // +(NSString * _Nonnull)frameworkVersion; - [Static] - [Export("frameworkVersion")] - string FrameworkVersion { get; } - - [Wrap("WeakDelegate")] - [NullAllowed] - RCPurchasesDelegate Delegate { get; set; } - - // @property (nonatomic, weak) id _Nullable delegate; - [NullAllowed, Export("delegate", ArgumentSemantic.Weak)] - NSObject WeakDelegate { get; set; } - - // @property (readonly, nonatomic) NSString * _Nonnull appUserID; - [Export("appUserID")] - string AppUserID { get; } - - // @property (readonly, nonatomic) BOOL isAnonymous; - [Export("isAnonymous")] - bool IsAnonymous { get; } - - // -(void)createAlias:(NSString * _Nonnull)alias completionBlock:(RCReceivePurchaserInfoBlock _Nullable)completion __attribute__((swift_name("createAlias(_:_:)"))); - [Export("createAlias:completionBlock:")] - void CreateAlias(string alias, [NullAllowed] RCReceivePurchaserInfoBlock completion); - - // -(void)identify:(NSString * _Nonnull)appUserID completionBlock:(RCReceivePurchaserInfoBlock _Nullable)completion __attribute__((swift_name("identify(_:_:)"))); - [Export("identify:completionBlock:")] - void Identify(string appUserID, [NullAllowed] RCReceivePurchaserInfoBlock completion); - - // -(void)resetWithCompletionBlock:(RCReceivePurchaserInfoBlock _Nullable)completion __attribute__((swift_name("reset(_:)"))); - [Export("resetWithCompletionBlock:")] - void ResetWithCompletionBlock([NullAllowed] RCReceivePurchaserInfoBlock completion); - - // +(void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(RCAttributionNetwork)network; - [Static] - [Export("addAttributionData:fromNetwork:")] - void AddAttributionData(NSDictionary data, RCAttributionNetwork network); - - // +(void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId __attribute__((swift_name("addAttributionData(_:from:forNetworkUserId:)"))); - [Static] - [Export("addAttributionData:fromNetwork:forNetworkUserId:")] - void AddAttributionData(NSDictionary data, RCAttributionNetwork network, [NullAllowed] string networkUserId); - - // -(void)purchaserInfoWithCompletionBlock:(RCReceivePurchaserInfoBlock _Nonnull)completion __attribute__((swift_name("purchaserInfo(_:)"))); - [Export("purchaserInfoWithCompletionBlock:")] - void PurchaserInfoWithCompletionBlock(RCReceivePurchaserInfoBlock completion); - - // -(void)offeringsWithCompletionBlock:(RCReceiveOfferingsBlock _Nonnull)completion __attribute__((swift_name("offerings(_:)"))); - [Export("offeringsWithCompletionBlock:")] - void OfferingsWithCompletionBlock(RCReceiveOfferingsBlock completion); - - // -(void)productsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completionBlock:(RCReceiveProductsBlock _Nonnull)completion __attribute__((swift_name("products(_:_:)"))); - [Export("productsWithIdentifiers:completionBlock:")] - void ProductsWithIdentifiers(string[] productIdentifiers, RCReceiveProductsBlock completion); - - // -(void)purchaseProduct:(SKProduct * _Nonnull)product withCompletionBlock:(RCPurchaseCompletedBlock _Nonnull)completion __attribute__((swift_name("purchaseProduct(_:_:)"))); - [Export("purchaseProduct:withCompletionBlock:")] - void PurchaseProduct(SKProduct product, RCPurchaseCompletedBlock completion); - - // -(void)purchasePackage:(RCPackage * _Nonnull)package withCompletionBlock:(RCPurchaseCompletedBlock _Nonnull)completion __attribute__((swift_name("purchasePackage(_:_:)"))); - [Export("purchasePackage:withCompletionBlock:")] - void PurchasePackage(RCPackage package, RCPurchaseCompletedBlock completion); - - // -(void)restoreTransactionsWithCompletionBlock:(RCReceivePurchaserInfoBlock _Nullable)completion __attribute__((swift_name("restoreTransactions(_:)"))); - [Export("restoreTransactionsWithCompletionBlock:")] - void RestoreTransactionsWithCompletionBlock([NullAllowed] RCReceivePurchaserInfoBlock completion); - - // -(void)checkTrialOrIntroductoryPriceEligibility:(NSArray * _Nonnull)productIdentifiers completionBlock:(RCReceiveIntroEligibilityBlock _Nonnull)receiveEligibility; - [Export("checkTrialOrIntroductoryPriceEligibility:completionBlock:")] - void CheckTrialOrIntroductoryPriceEligibility(string[] productIdentifiers, RCReceiveIntroEligibilityBlock receiveEligibility); - - // -(void)paymentDiscountForProductDiscount:(SKProductDiscount * _Nonnull)discount product:(SKProduct * _Nonnull)product completion:(RCPaymentDiscountBlock _Nonnull)completion __attribute__((availability(ios, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))); - [Mac(10, 14, 4), iOS(12, 2)] - [Export("paymentDiscountForProductDiscount:product:completion:")] - void PaymentDiscountForProductDiscount(SKProductDiscount discount, SKProduct product, RCPaymentDiscountBlock completion); - - // -(void)purchaseProduct:(SKProduct * _Nonnull)product withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(RCPurchaseCompletedBlock _Nonnull)completion __attribute__((swift_name("purchaseProduct(_:discount:_:)"))) __attribute__((availability(ios, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))); - [Mac(10, 14, 4), iOS(12, 2)] - [Export("purchaseProduct:withDiscount:completionBlock:")] - void PurchaseProduct(SKProduct product, SKPaymentDiscount discount, RCPurchaseCompletedBlock completion); - - // -(void)purchasePackage:(RCPackage * _Nonnull)package withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(RCPurchaseCompletedBlock _Nonnull)completion __attribute__((swift_name("purchasePackage(_:discount:_:)"))) __attribute__((availability(ios, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))); - [Mac(10, 14, 4), iOS(12, 2)] - [Export("purchasePackage:withDiscount:completionBlock:")] - void PurchasePackage(RCPackage package, SKPaymentDiscount discount, RCPurchaseCompletedBlock completion); - - // -(void)invalidatePurchaserInfoCache; - [Export("invalidatePurchaserInfoCache")] - void InvalidatePurchaserInfoCache(); - - // -(void)setAttributes:(NSDictionary * _Nonnull)attributes; - [Export("setAttributes:")] - void SetAttributes(NSDictionary attributes); - - // -(void)setEmail:(NSString * _Nullable)email; - [Export("setEmail:")] - void SetEmail([NullAllowed] string email); - - // -(void)setPhoneNumber:(NSString * _Nullable)phoneNumber; - [Export("setPhoneNumber:")] - void SetPhoneNumber([NullAllowed] string phoneNumber); - - // -(void)setDisplayName:(NSString * _Nullable)displayName; - [Export("setDisplayName:")] - void SetDisplayName([NullAllowed] string displayName); - - // -(void)setPushToken:(NSData * _Nullable)pushToken; - [Export("setPushToken:")] - void SetPushToken([NullAllowed] NSData pushToken); - } - - // typedef void (^RCReceiveEntitlementsBlock)(id _Nullable, NSError * _Nullable); - delegate void RCReceiveEntitlementsBlock([NullAllowed] NSObject arg0, [NullAllowed] NSError arg1); - - // @protocol RCPurchasesDelegate - [Protocol, Model(AutoGeneratedName = true)] - [BaseType(typeof(NSObject))] - interface RCPurchasesDelegate : INativeObject - { - // @optional -(void)purchases:(RCPurchases * _Nonnull)purchases didReceiveUpdatedPurchaserInfo:(RCPurchaserInfo * _Nonnull)purchaserInfo __attribute__((swift_name("purchases(_:didReceiveUpdated:)"))); - [Export("purchases:didReceiveUpdatedPurchaserInfo:")] - void DidReceiveUpdatedPurchaserInfo(RCPurchases purchases, RCPurchaserInfo purchaserInfo); - - // @optional -(void)purchases:(RCPurchases * _Nonnull)purchases shouldPurchasePromoProduct:(SKProduct * _Nonnull)product defermentBlock:(RCDeferredPromotionalPurchaseBlock _Nonnull)makeDeferredPurchase; - [Export("purchases:shouldPurchasePromoProduct:defermentBlock:")] - void ShouldPurchasePromoProduct(RCPurchases purchases, SKProduct product, RCDeferredPromotionalPurchaseBlock makeDeferredPurchase); - } - - // @interface RCPurchaserInfo : NSObject - [BaseType(typeof(NSObject))] - interface RCPurchaserInfo : INativeObject - { - // @property (readonly, nonatomic) RCEntitlementInfos * _Nonnull entitlements; - [Export("entitlements")] - RCEntitlementInfos Entitlements { get; } - - // @property (readonly, nonatomic) NSSet * _Nonnull activeSubscriptions; - [Export("activeSubscriptions")] - NSSet ActiveSubscriptions { get; } - - // @property (readonly, nonatomic) NSSet * _Nonnull allPurchasedProductIdentifiers; - [Export("allPurchasedProductIdentifiers")] - NSSet AllPurchasedProductIdentifiers { get; } - - // @property (readonly) NSDate * _Nullable latestExpirationDate; - [NullAllowed, Export("latestExpirationDate")] - NSDate LatestExpirationDate { get; } - - // @property (readonly, nonatomic) NSSet * _Nonnull nonConsumablePurchases; - [Export("nonConsumablePurchases")] - NSSet NonConsumablePurchases { get; } - - // @property (readonly, nonatomic) NSString * _Nullable originalApplicationVersion; - [NullAllowed, Export("originalApplicationVersion")] - string OriginalApplicationVersion { get; } - - // @property (readonly, nonatomic) NSDate * _Nullable originalPurchaseDate; - [NullAllowed, Export("originalPurchaseDate")] - NSDate OriginalPurchaseDate { get; } - - // @property (readonly, nonatomic) NSDate * _Nullable requestDate; - [NullAllowed, Export("requestDate")] - NSDate RequestDate { get; } - - // @property (readonly, nonatomic) NSDate * _Nonnull firstSeen; - [Export("firstSeen")] - NSDate FirstSeen { get; } - - // @property (readonly, nonatomic) NSString * _Nonnull originalAppUserId; - [Export("originalAppUserId")] - string OriginalAppUserId { get; } - - // @property (readonly, nonatomic) NSURL * _Nullable managementURL; - [NullAllowed, Export("managementURL")] - NSUrl ManagementURL { get; } - - // -(NSDate * _Nullable)expirationDateForProductIdentifier:(NSString * _Nonnull)productIdentifier; - [Export("expirationDateForProductIdentifier:")] - [return: NullAllowed] - NSDate ExpirationDateForProductIdentifier(string productIdentifier); - - // -(NSDate * _Nullable)purchaseDateForProductIdentifier:(NSString * _Nonnull)productIdentifier; - [Export("purchaseDateForProductIdentifier:")] - [return: NullAllowed] - NSDate PurchaseDateForProductIdentifier(string productIdentifier); - - // -(NSDate * _Nullable)expirationDateForEntitlement:(NSString * _Nonnull)entitlementId; - [Export("expirationDateForEntitlement:")] - [return: NullAllowed] - NSDate ExpirationDateForEntitlement(string entitlementId); - - // -(NSDate * _Nullable)purchaseDateForEntitlement:(NSString * _Nonnull)entitlementId; - [Export("purchaseDateForEntitlement:")] - [return: NullAllowed] - NSDate PurchaseDateForEntitlement(string entitlementId); - } - - // @interface RCIntroEligibility : NSObject - [BaseType(typeof(NSObject))] - interface RCIntroEligibility : INativeObject - { - // @property (readonly) RCIntroEligibilityStatus status; - [Export("status")] - RCIntroEligibilityStatus Status { get; } - } - - // @interface RCPackage : NSObject - [BaseType(typeof(NSObject))] - interface RCPackage : INativeObject - { - // @property (readonly) NSString * _Nonnull identifier; - [Export("identifier")] - string Identifier { get; } - - // @property (readonly) RCPackageType packageType; - [Export("packageType")] - RCPackageType PackageType { get; } - - // @property (readonly) SKProduct * _Nonnull product; - [Export("product")] - SKProduct Product { get; } - - // @property (readonly) NSString * _Nonnull localizedPriceString; - [Export("localizedPriceString")] - string LocalizedPriceString { get; } - - // @property (readonly) NSString * _Nonnull localizedIntroductoryPriceString; - [Export("localizedIntroductoryPriceString")] - string LocalizedIntroductoryPriceString { get; } - } - - // @interface RCPurchasesErrorUtils : NSObject - [BaseType(typeof(NSObject))] - interface RCPurchasesErrorUtils : INativeObject - { - // +(NSError * _Nonnull)networkErrorWithUnderlyingError:(NSError * _Nonnull)underlyingError; - [Static] - [Export("networkErrorWithUnderlyingError:")] - NSError NetworkErrorWithUnderlyingError(NSError underlyingError); - - // +(NSError * _Nonnull)backendErrorWithBackendCode:(NSNumber * _Nullable)backendCode backendMessage:(NSString * _Nullable)backendMessage; - [Static] - [Export("backendErrorWithBackendCode:backendMessage:")] - NSError BackendErrorWithBackendCode([NullAllowed] NSNumber backendCode, [NullAllowed] string backendMessage); - - // +(NSError * _Nonnull)backendErrorWithBackendCode:(NSNumber * _Nullable)backendCode backendMessage:(NSString * _Nullable)backendMessage finishable:(BOOL)finishable; - [Static] - [Export("backendErrorWithBackendCode:backendMessage:finishable:")] - NSError BackendErrorWithBackendCode([NullAllowed] NSNumber backendCode, [NullAllowed] string backendMessage, bool finishable); - - // +(NSError * _Nonnull)unexpectedBackendResponseError; - [Static] - [Export("unexpectedBackendResponseError")] - NSError UnexpectedBackendResponseError { get; } - - // +(NSError * _Nonnull)missingReceiptFileError; - [Static] - [Export("missingReceiptFileError")] - NSError MissingReceiptFileError { get; } - - // +(NSError * _Nonnull)missingAppUserIDError; - [Static] - [Export("missingAppUserIDError")] - NSError MissingAppUserIDError { get; } - - // +(NSError * _Nonnull)purchasesErrorWithSKError:(NSError * _Nonnull)skError; - [Static] - [Export("purchasesErrorWithSKError:")] - NSError PurchasesErrorWithSKError(NSError skError); - } - - // @interface RCEntitlementInfo : NSObject - [BaseType(typeof(NSObject))] - interface RCEntitlementInfo : INativeObject - { - // @property (readonly) NSString * _Nonnull identifier; - [Export("identifier")] - string Identifier { get; } - - // @property (readonly) BOOL isActive; - [Export("isActive")] - bool IsActive { get; } - - // @property (readonly) BOOL willRenew; - [Export("willRenew")] - bool WillRenew { get; } - - // @property (readonly) RCPeriodType periodType; - [Export("periodType")] - RCPeriodType PeriodType { get; } - - // @property (readonly) NSDate * _Nonnull latestPurchaseDate; - [Export("latestPurchaseDate")] - NSDate LatestPurchaseDate { get; } - - // @property (readonly) NSDate * _Nonnull originalPurchaseDate; - [Export("originalPurchaseDate")] - NSDate OriginalPurchaseDate { get; } - - // @property (readonly) NSDate * _Nullable expirationDate; - [NullAllowed, Export("expirationDate")] - NSDate ExpirationDate { get; } - - // @property (readonly) RCStore store; - [Export("store")] - RCStore Store { get; } - - // @property (readonly) NSString * _Nonnull productIdentifier; - [Export("productIdentifier")] - string ProductIdentifier { get; } - - // @property (readonly) BOOL isSandbox; - [Export("isSandbox")] - bool IsSandbox { get; } - - // @property (readonly) NSDate * _Nullable unsubscribeDetectedAt; - [NullAllowed, Export("unsubscribeDetectedAt")] - NSDate UnsubscribeDetectedAt { get; } - - // @property (readonly) NSDate * _Nullable billingIssueDetectedAt; - [NullAllowed, Export("billingIssueDetectedAt")] - NSDate BillingIssueDetectedAt { get; } - } - - // @interface RCEntitlementInfos : NSObject - [BaseType(typeof(NSObject))] - interface RCEntitlementInfos - { - // @property (readonly) NSDictionary * _Nonnull all; - [Export("all")] - NSDictionary All { get; } - - // @property (readonly) NSDictionary * _Nonnull active; - [Export("active")] - NSDictionary Active { get; } - - // -(RCEntitlementInfo * _Nullable)objectForKeyedSubscript:(id _Nonnull)key; - [Export("objectForKeyedSubscript:")] - [return: NullAllowed] - RCEntitlementInfo ObjectForKeyedSubscript(NSObject key); - } + // @interface RCCustomerInfo : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCCustomerInfo + { + // @property (readonly, nonatomic, strong) RCEntitlementInfos * _Nonnull entitlements; + [Export("entitlements", ArgumentSemantic.Strong)] + RCEntitlementInfos Entitlements { get; } + + // @property (readonly, copy, nonatomic) NSSet * _Nonnull activeSubscriptions; + [Export("activeSubscriptions", ArgumentSemantic.Copy)] + NSSet ActiveSubscriptions { get; } + + // @property (readonly, copy, nonatomic) NSSet * _Nonnull allPurchasedProductIdentifiers; + [Export("allPurchasedProductIdentifiers", ArgumentSemantic.Copy)] + NSSet AllPurchasedProductIdentifiers { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable latestExpirationDate; + [NullAllowed, Export("latestExpirationDate", ArgumentSemantic.Copy)] + NSDate LatestExpirationDate { get; } + + // @property (readonly, copy, nonatomic) SWIFT_DEPRECATED_MSG("use nonSubscriptionTransactions") NSSet * nonConsumablePurchases __attribute__((deprecated("use nonSubscriptionTransactions"))); + [Export("nonConsumablePurchases", ArgumentSemantic.Copy)] + NSSet NonConsumablePurchases { get; } + + // @property (readonly, copy, nonatomic) NSArray * _Nonnull nonSubscriptionTransactions; + [Export("nonSubscriptionTransactions", ArgumentSemantic.Copy)] + RCStoreTransaction[] NonSubscriptionTransactions { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nonnull requestDate; + [Export("requestDate", ArgumentSemantic.Copy)] + NSDate RequestDate { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nonnull firstSeen; + [Export("firstSeen", ArgumentSemantic.Copy)] + NSDate FirstSeen { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull originalAppUserId; + [Export("originalAppUserId")] + string OriginalAppUserId { get; } + + // @property (readonly, copy, nonatomic) NSURL * _Nullable managementURL; + [NullAllowed, Export("managementURL", ArgumentSemantic.Copy)] + NSUrl ManagementURL { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable originalPurchaseDate; + [NullAllowed, Export("originalPurchaseDate", ArgumentSemantic.Copy)] + NSDate OriginalPurchaseDate { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nullable originalApplicationVersion; + [NullAllowed, Export("originalApplicationVersion")] + string OriginalApplicationVersion { get; } + + // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull rawData; + [Export("rawData", ArgumentSemantic.Copy)] + NSDictionary RawData { get; } + + // -(NSDate * _Nullable)expirationDateForProductIdentifier:(NSString * _Nonnull)productIdentifier __attribute__((warn_unused_result(""))); + [Export("expirationDateForProductIdentifier:")] + [return: NullAllowed] + NSDate ExpirationDateForProductIdentifier(string productIdentifier); + + // -(NSDate * _Nullable)purchaseDateForProductIdentifier:(NSString * _Nonnull)productIdentifier __attribute__((warn_unused_result(""))); + [Export("purchaseDateForProductIdentifier:")] + [return: NullAllowed] + NSDate PurchaseDateForProductIdentifier(string productIdentifier); + + // -(NSDate * _Nullable)expirationDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier __attribute__((warn_unused_result(""))); + [Export("expirationDateForEntitlement:")] + [return: NullAllowed] + NSDate ExpirationDateForEntitlement(string entitlementIdentifier); + + // -(NSDate * _Nullable)purchaseDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier __attribute__((warn_unused_result(""))); + [Export("purchaseDateForEntitlement:")] + [return: NullAllowed] + NSDate PurchaseDateForEntitlement(string entitlementIdentifier); + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + } + + // @interface RCDangerousSettings : NSObject + [BaseType(typeof(NSObject))] + interface RCDangerousSettings + { + // @property (readonly, nonatomic) BOOL autoSyncPurchases; + [Export("autoSyncPurchases")] + bool AutoSyncPurchases { get; } + + // -(instancetype _Nonnull)initWithAutoSyncPurchases:(BOOL)autoSyncPurchases __attribute__((objc_designated_initializer)); + [Export("initWithAutoSyncPurchases:")] + [DesignatedInitializer] + IntPtr Constructor(bool autoSyncPurchases); + } + + // @interface RCEntitlementInfo : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCEntitlementInfo : INativeObject + { + // @property (readonly, copy, nonatomic) NSString * _Nonnull identifier; + [Export("identifier")] + string Identifier { get; } + + // @property (readonly, nonatomic) BOOL isActive; + [Export("isActive")] + bool IsActive { get; } + + // @property (readonly, nonatomic) BOOL willRenew; + [Export("willRenew")] + bool WillRenew { get; } + + // @property (readonly, nonatomic) enum RCPeriodType periodType; + [Export("periodType")] + RCPeriodType PeriodType { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable latestPurchaseDate; + [NullAllowed, Export("latestPurchaseDate", ArgumentSemantic.Copy)] + NSDate LatestPurchaseDate { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable originalPurchaseDate; + [NullAllowed, Export("originalPurchaseDate", ArgumentSemantic.Copy)] + NSDate OriginalPurchaseDate { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable expirationDate; + [NullAllowed, Export("expirationDate", ArgumentSemantic.Copy)] + NSDate ExpirationDate { get; } + + // @property (readonly, nonatomic) enum RCStore store; + [Export("store")] + RCStore Store { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull productIdentifier; + [Export("productIdentifier")] + string ProductIdentifier { get; } + + // @property (readonly, nonatomic) BOOL isSandbox; + [Export("isSandbox")] + bool IsSandbox { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable unsubscribeDetectedAt; + [NullAllowed, Export("unsubscribeDetectedAt", ArgumentSemantic.Copy)] + NSDate UnsubscribeDetectedAt { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nullable billingIssueDetectedAt; + [NullAllowed, Export("billingIssueDetectedAt", ArgumentSemantic.Copy)] + NSDate BillingIssueDetectedAt { get; } + + // @property (readonly, nonatomic) enum RCPurchaseOwnershipType ownershipType; + [Export("ownershipType")] + RCPurchaseOwnershipType OwnershipType { get; } + + // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull rawData; + [Export("rawData", ArgumentSemantic.Copy)] + NSDictionary RawData { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + } + + // @interface RCEntitlementInfos : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCEntitlementInfos + { + // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull all; + [Export("all", ArgumentSemantic.Copy)] + NSDictionary All { get; } + + // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull active; + [Export("active", ArgumentSemantic.Copy)] + NSDictionary Active { get; } + + // -(RCEntitlementInfo * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key __attribute__((warn_unused_result(""))); + [Export("objectForKeyedSubscript:")] + [return: NullAllowed] + RCEntitlementInfo ObjectForKeyedSubscript(string key); + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + } + + // @interface RCIntroEligibility : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCIntroEligibility : INativeObject + { + // @property (readonly, nonatomic) enum RCIntroEligibilityStatus status; + [Export("status")] + RCIntroEligibilityStatus Status { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + } + + // @interface RCOffering : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCOffering : INativeObject + { + // @property (readonly, copy, nonatomic) NSString * _Nonnull identifier; + [Export("identifier")] + string Identifier { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull serverDescription; + [Export("serverDescription")] + string ServerDescription { get; } + + // @property (readonly, copy, nonatomic) NSArray * _Nonnull availablePackages; + [Export("availablePackages", ArgumentSemantic.Copy)] + RCPackage[] AvailablePackages { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable lifetime; + [NullAllowed, Export("lifetime", ArgumentSemantic.Strong)] + RCPackage Lifetime { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable annual; + [NullAllowed, Export("annual", ArgumentSemantic.Strong)] + RCPackage Annual { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable sixMonth; + [NullAllowed, Export("sixMonth", ArgumentSemantic.Strong)] + RCPackage SixMonth { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable threeMonth; + [NullAllowed, Export("threeMonth", ArgumentSemantic.Strong)] + RCPackage ThreeMonth { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable twoMonth; + [NullAllowed, Export("twoMonth", ArgumentSemantic.Strong)] + RCPackage TwoMonth { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable monthly; + [NullAllowed, Export("monthly", ArgumentSemantic.Strong)] + RCPackage Monthly { get; } + + // @property (readonly, nonatomic, strong) RCPackage * _Nullable weekly; + [NullAllowed, Export("weekly", ArgumentSemantic.Strong)] + RCPackage Weekly { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + + // -(RCPackage * _Nullable)packageWithIdentifier:(NSString * _Nullable)identifier __attribute__((warn_unused_result(""))); + [Export("packageWithIdentifier:")] + [return: NullAllowed] + RCPackage PackageWithIdentifier([NullAllowed] string identifier); + + // -(RCPackage * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key __attribute__((warn_unused_result(""))); + [Export("objectForKeyedSubscript:")] + [return: NullAllowed] + RCPackage ObjectForKeyedSubscript(string key); + } + + // @interface RCOfferings : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCOfferings + { + // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull all; + [Export("all", ArgumentSemantic.Copy)] + NSDictionary All { get; } + + // @property (readonly, nonatomic, strong) RCOffering * _Nullable current; + [NullAllowed, Export("current", ArgumentSemantic.Strong)] + RCOffering Current { get; } + + // -(RCOffering * _Nullable)offeringWithIdentifier:(NSString * _Nullable)identifier __attribute__((warn_unused_result(""))); + [Export("offeringWithIdentifier:")] + [return: NullAllowed] + RCOffering OfferingWithIdentifier([NullAllowed] string identifier); + + // -(RCOffering * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key __attribute__((warn_unused_result(""))); + [Export("objectForKeyedSubscript:")] + [return: NullAllowed] + RCOffering ObjectForKeyedSubscript(string key); + + // @property (readonly, copy, nonatomic) NSString * _Nonnull description; + [Export("description")] + string Description { get; } + } + + // @interface RCPackage : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCPackage + { + // @property (readonly, copy, nonatomic) NSString * _Nonnull identifier; + [Export("identifier")] + string Identifier { get; } + + // @property (readonly, nonatomic) enum RCPackageType packageType; + [Export("packageType")] + RCPackageType PackageType { get; } + + // @property (readonly, nonatomic, strong) RCStoreProduct * _Nonnull storeProduct; + [Export("storeProduct", ArgumentSemantic.Strong)] + RCStoreProduct StoreProduct { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull offeringIdentifier; + [Export("offeringIdentifier")] + string OfferingIdentifier { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedPriceString; + [Export("localizedPriceString")] + string LocalizedPriceString { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nullable localizedIntroductoryPriceString; + [NullAllowed, Export("localizedIntroductoryPriceString")] + string LocalizedIntroductoryPriceString { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // +(NSString * _Nullable)stringFrom:(enum RCPackageType)packageType __attribute__((warn_unused_result(""))); + [Static] + [Export("stringFrom:")] + [return: NullAllowed] + string StringFrom(RCPackageType packageType); + + // +(enum RCPackageType)packageTypeFrom:(NSString * _Nonnull)string __attribute__((warn_unused_result(""))); + [Static] + [Export("packageTypeFrom:")] + RCPackageType PackageTypeFrom(string @string); + } + + // @interface RCPromotionalOffer : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCPromotionalOffer + { + } + + delegate void DefermentBlockHandler([BlockCallback] DefermentBlockHandler defermentBlock); + delegate void ShouldPurchasePromoProductCallbackHandler(RCStoreTransaction transaction, RCCustomerInfo customerInfo, NSError error, bool userCancelled); + + // @interface RCPurchases : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCPurchases + { + // @property (readonly, nonatomic, strong, class) RCPurchases * _Nonnull sharedPurchases; + [Static] + [Export("sharedPurchases", ArgumentSemantic.Strong)] + RCPurchases SharedPurchases { get; } + + // @property (readonly, nonatomic, class) BOOL isConfigured; + [Static] + [Export("isConfigured")] + bool IsConfigured { get; } + + [Wrap("WeakDelegate")] + [NullAllowed] + RCPurchasesDelegate Delegate { get; set; } + + // @property (nonatomic, strong) id _Nullable delegate; + [NullAllowed, Export("delegate", ArgumentSemantic.Strong)] + NSObject WeakDelegate { get; set; } + + // @property (nonatomic, class) BOOL automaticAppleSearchAdsAttributionCollection; + [Static] + [Export("automaticAppleSearchAdsAttributionCollection")] + bool AutomaticAppleSearchAdsAttributionCollection { get; set; } + + // @property (nonatomic, class) enum RCLogLevel logLevel; + [Static] + [Export("logLevel", ArgumentSemantic.Assign)] + RCLogLevel LogLevel { get; set; } + + // @property (copy, nonatomic, class) NSURL * _Nullable proxyURL; + [Static] + [NullAllowed, Export("proxyURL", ArgumentSemantic.Copy)] + NSUrl ProxyURL { get; set; } + + // @property (nonatomic, class) BOOL forceUniversalAppStore; + [Static] + [Export("forceUniversalAppStore")] + bool ForceUniversalAppStore { get; set; } + + // @property (nonatomic, class) BOOL simulatesAskToBuyInSandbox __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(macos, introduced=10.14))) __attribute__((availability(ios, introduced=8.0))); + [Watch(6, 2), Mac(10, 14), iOS(8, 0)] + [Static] + [Export("simulatesAskToBuyInSandbox")] + bool SimulatesAskToBuyInSandbox { get; set; } + + // +(BOOL)canMakePayments __attribute__((warn_unused_result(""))); + [Static] + [Export("canMakePayments")] + bool CanMakePayments { get; } + + // @property (copy, nonatomic, class) void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull) logHandler; + [Static] + [Export("logHandler", ArgumentSemantic.Copy)] + Action LogHandler { get; set; } + + // @property (copy, nonatomic, class) void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger) verboseLogHandler; + [Static] + [Export("verboseLogHandler", ArgumentSemantic.Copy)] + Action VerboseLogHandler { get; set; } + + // @property (nonatomic, class) BOOL verboseLogs; + [Static] + [Export("verboseLogs")] + bool VerboseLogs { get; set; } + + // @property (readonly, copy, nonatomic, class) NSString * _Nonnull frameworkVersion; + [Static] + [Export("frameworkVersion")] + string FrameworkVersion { get; } + + // @property (nonatomic) BOOL finishTransactions; + [Export("finishTransactions")] + bool FinishTransactions { get; set; } + + // -(void)collectDeviceIdentifiers; + [Export("collectDeviceIdentifiers")] + void CollectDeviceIdentifiers(); + + // -(void)shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))defermentBlock; + [Export("shouldPurchasePromoProduct:defermentBlock:")] + void ShouldPurchasePromoProduct(RCStoreProduct product, DefermentBlockHandler defermentBlock); + + // @property (nonatomic, strong, class) RCPlatformInfo * _Nullable platformInfo; + [Static] + [NullAllowed, Export("platformInfo", ArgumentSemantic.Strong)] + RCPlatformInfo PlatformInfo { get; set; } + + // @property (nonatomic, class) BOOL debugLogsEnabled __attribute__((deprecated("use Purchases.logLevel instead"))); + [Static] + [Export("debugLogsEnabled")] + bool DebugLogsEnabled { get; set; } + + // @property (nonatomic) BOOL allowSharingAppStoreAccount __attribute__((deprecated("Configure behavior through the RevenueCat dashboard instead"))); + [Export("allowSharingAppStoreAccount")] + bool AllowSharingAppStoreAccount { get; set; } + + // +(void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network __attribute__((deprecated("Use the set functions instead"))); + [Static] + [Export("addAttributionData:fromNetwork:")] + void AddAttributionData(NSDictionary data, RCAttributionNetwork network); + + // +(void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId __attribute__((deprecated("Use the set functions instead"))); + [Static] + [Export("addAttributionData:fromNetwork:forNetworkUserId:")] + void AddAttributionData(NSDictionary data, RCAttributionNetwork network, [NullAllowed] string networkUserId); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey; + [Static] + [Export("configureWithAPIKey:")] + RCPurchases ConfigureWithAPIKey(string apiKey); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID; + [Static] + [Export("configureWithAPIKey:appUserID:")] + RCPurchases ConfigureWithAPIKey(string apiKey, [NullAllowed] string appUserID); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode; + [Static] + [Export("configureWithAPIKey:appUserID:observerMode:")] + RCPurchases ConfigureWithAPIKey(string apiKey, [NullAllowed] string appUserID, bool observerMode); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults; + [Static] + [Export("configureWithAPIKey:appUserID:observerMode:userDefaults:")] + RCPurchases ConfigureWithAPIKey(string apiKey, [NullAllowed] string appUserID, bool observerMode, [NullAllowed] NSUserDefaults userDefaults); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable; + [Static] + [Export("configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:")] + RCPurchases ConfigureWithAPIKey(string apiKey, [NullAllowed] string appUserID, bool observerMode, [NullAllowed] NSUserDefaults userDefaults, bool useStoreKit2IfAvailable); + + // +(RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable dangerousSettings:(RCDangerousSettings * _Nullable)dangerousSettings; + [Static] + [Export("configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:dangerousSettings:")] + RCPurchases ConfigureWithAPIKey(string apiKey, [NullAllowed] string appUserID, bool observerMode, [NullAllowed] NSUserDefaults userDefaults, bool useStoreKit2IfAvailable, [NullAllowed] RCDangerousSettings dangerousSettings); + + // @property (readonly, copy, nonatomic) NSString * _Nonnull appUserID; + [Export("appUserID")] + string AppUserID { get; } + + // @property (readonly, nonatomic) BOOL isAnonymous; + [Export("isAnonymous")] + bool IsAnonymous { get; } + + // -(void)logIn:(NSString * _Nonnull)appUserID completion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, BOOL, NSError * _Nullable))completion; + [Export("logIn:completion:")] + void LogIn(string appUserID, Action completion); + + // -(void)logOutWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; + [Export("logOutWithCompletion:")] + void LogOutWithCompletion([NullAllowed] Action completion); + + // -(void)getOfferingsWithCompletion:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion; + [Export("getOfferingsWithCompletion:")] + void GetOfferingsWithCompletion(Action completion); + + // -(void)setAttributes:(NSDictionary * _Nonnull)attributes; + [Export("setAttributes:")] + void SetAttributes(NSDictionary attributes); + + // -(void)setEmail:(NSString * _Nullable)email; + [Export("setEmail:")] + void SetEmail([NullAllowed] string email); + + // -(void)setPhoneNumber:(NSString * _Nullable)phoneNumber; + [Export("setPhoneNumber:")] + void SetPhoneNumber([NullAllowed] string phoneNumber); + + // -(void)setDisplayName:(NSString * _Nullable)displayName; + [Export("setDisplayName:")] + void SetDisplayName([NullAllowed] string displayName); + + // -(void)setPushToken:(NSData * _Nullable)pushToken; + [Export("setPushToken:")] + void SetPushToken([NullAllowed] NSData pushToken); + + // -(void)setAdjustID:(NSString * _Nullable)adjustID; + [Export("setAdjustID:")] + void SetAdjustID([NullAllowed] string adjustID); + + // -(void)setAppsflyerID:(NSString * _Nullable)appsflyerID; + [Export("setAppsflyerID:")] + void SetAppsflyerID([NullAllowed] string appsflyerID); + + // -(void)setFBAnonymousID:(NSString * _Nullable)fbAnonymousID; + [Export("setFBAnonymousID:")] + void SetFBAnonymousID([NullAllowed] string fbAnonymousID); + + // -(void)setMparticleID:(NSString * _Nullable)mparticleID; + [Export("setMparticleID:")] + void SetMparticleID([NullAllowed] string mparticleID); + + // -(void)setOnesignalID:(NSString * _Nullable)onesignalID; + [Export("setOnesignalID:")] + void SetOnesignalID([NullAllowed] string onesignalID); + + // -(void)setAirshipChannelID:(NSString * _Nullable)airshipChannelID; + [Export("setAirshipChannelID:")] + void SetAirshipChannelID([NullAllowed] string airshipChannelID); + + // -(void)setCleverTapID:(NSString * _Nullable)cleverTapID; + [Export("setCleverTapID:")] + void SetCleverTapID([NullAllowed] string cleverTapID); + + // -(void)setMediaSource:(NSString * _Nullable)mediaSource; + [Export("setMediaSource:")] + void SetMediaSource([NullAllowed] string mediaSource); + + // -(void)setCampaign:(NSString * _Nullable)campaign; + [Export("setCampaign:")] + void SetCampaign([NullAllowed] string campaign); + + // -(void)setAdGroup:(NSString * _Nullable)adGroup; + [Export("setAdGroup:")] + void SetAdGroup([NullAllowed] string adGroup); + + // -(void)setAd:(NSString * _Nullable)installAd; + [Export("setAd:")] + void SetAd([NullAllowed] string installAd); + + // -(void)setKeyword:(NSString * _Nullable)keyword; + [Export("setKeyword:")] + void SetKeyword([NullAllowed] string keyword); + + // -(void)setCreative:(NSString * _Nullable)creative; + [Export("setCreative:")] + void SetCreative([NullAllowed] string creative); + + // -(void)getCustomerInfoWithCompletion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; + [Export("getCustomerInfoWithCompletion:")] + void GetCustomerInfoWithCompletion(Action completion); + + // -(void)getProductsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSArray * _Nonnull))completion; + [Export("getProductsWithIdentifiers:completion:")] + void GetProductsWithIdentifiers(string[] productIdentifiers, Action> completion); + + // -(void)purchaseProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; + [Export("purchaseProduct:withCompletion:")] + void PurchaseProduct(RCStoreProduct product, Action completion); + + // -(void)purchasePackage:(RCPackage * _Nonnull)package withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; + [Export("purchasePackage:withCompletion:")] + void PurchasePackage(RCPackage package, Action completion); + + // -(void)purchaseProduct:(RCStoreProduct * _Nonnull)product withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion __attribute__((availability(tvos, introduced=12.2))) __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(macos, introduced=10.14.4))) __attribute__((availability(ios, introduced=12.2))); + [Watch(6, 2), TV(12, 2), Mac(10, 14, 4), iOS(12, 2)] + [Export("purchaseProduct:withPromotionalOffer:completion:")] + void PurchaseProduct(RCStoreProduct product, RCPromotionalOffer promotionalOffer, Action completion); + + // -(void)purchasePackage:(RCPackage * _Nonnull)package withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion __attribute__((availability(tvos, introduced=12.2))) __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(macos, introduced=10.14.4))) __attribute__((availability(ios, introduced=12.2))); + [Watch(6, 2), TV(12, 2), Mac(10, 14, 4), iOS(12, 2)] + [Export("purchasePackage:withPromotionalOffer:completion:")] + void PurchasePackage(RCPackage package, RCPromotionalOffer promotionalOffer, Action completion); + + // -(void)syncPurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; + [Export("syncPurchasesWithCompletion:")] + void SyncPurchasesWithCompletion([NullAllowed] Action completion); + + // -(void)restorePurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; + [Export("restorePurchasesWithCompletion:")] + void RestorePurchasesWithCompletion([NullAllowed] Action completion); + + // -(void)checkTrialOrIntroDiscountEligibility:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSDictionary * _Nonnull))completion; + [Export("checkTrialOrIntroDiscountEligibility:completion:")] + void CheckTrialOrIntroDiscountEligibility(string[] productIdentifiers, Action> completion); + + // -(void)checkTrialOrIntroDiscountEligibilityForProduct:(RCStoreProduct * _Nonnull)product completion:(void (^ _Nonnull)(enum RCIntroEligibilityStatus))completion; + [Export("checkTrialOrIntroDiscountEligibilityForProduct:completion:")] + void CheckTrialOrIntroDiscountEligibilityForProduct(RCStoreProduct product, Action completion); + + // -(void)invalidateCustomerInfoCache; + [Export("invalidateCustomerInfoCache")] + void InvalidateCustomerInfoCache(); + + // -(void)presentCodeRedemptionSheet __attribute__((availability(macos, unavailable))) __attribute__((availability(tvos, unavailable))) __attribute__((availability(watchos, unavailable))) __attribute__((availability(ios, introduced=14.0))); + [NoWatch, NoTV, NoMac, iOS(14, 0)] + [Export("presentCodeRedemptionSheet")] + void PresentCodeRedemptionSheet(); + + // -(void)getPromotionalOfferForProductDiscount:(RCStoreProductDiscount * _Nonnull)discount withProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCPromotionalOffer * _Nullable, NSError * _Nullable))completion __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))) __attribute__((availability(ios, introduced=12.2))); + [Watch(6, 2), TV(12, 2), Mac(10, 14, 4), iOS(12, 2)] + [Export("getPromotionalOfferForProductDiscount:withProduct:withCompletion:")] + void GetPromotionalOfferForProductDiscount(RCStoreProductDiscount discount, RCStoreProduct product, Action completion); + + // -(void)showManageSubscriptionsWithCompletion:(void (^ _Nonnull)(NSError * _Nullable))completion __attribute__((availability(macos, introduced=10.15))) __attribute__((availability(ios, introduced=13.0))) __attribute__((availability(tvos, unavailable))) __attribute__((availability(watchos, unavailable))); + [NoWatch, NoTV, Mac(10, 15), iOS(13, 0)] + [Export("showManageSubscriptionsWithCompletion:")] + void ShowManageSubscriptionsWithCompletion(Action completion); + + // -(void)beginRefundRequestForProduct:(NSString * _Nonnull)productID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler __attribute__((availability(tvos, unavailable))) __attribute__((availability(watchos, unavailable))) __attribute__((availability(macos, unavailable))) __attribute__((availability(ios, introduced=15.0))); + [NoWatch, NoTV, NoMac, iOS(15, 0)] + [Export("beginRefundRequestForProduct:completion:")] + void BeginRefundRequestForProduct(string productID, Action completionHandler); + + // -(void)beginRefundRequestForEntitlement:(NSString * _Nonnull)entitlementID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler __attribute__((availability(tvos, unavailable))) __attribute__((availability(watchos, unavailable))) __attribute__((availability(macos, unavailable))) __attribute__((availability(ios, introduced=15.0))); + [NoWatch, NoTV, NoMac, iOS(15, 0)] + [Export("beginRefundRequestForEntitlement:completion:")] + void BeginRefundRequestForEntitlement(string entitlementID, Action completionHandler); + + // -(void)beginRefundRequestForActiveEntitlementWithCompletion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler __attribute__((availability(tvos, unavailable))) __attribute__((availability(watchos, unavailable))) __attribute__((availability(macos, unavailable))) __attribute__((availability(ios, introduced=15.0))); + [NoWatch, NoTV, NoMac, iOS(15, 0)] + [Export("beginRefundRequestForActiveEntitlementWithCompletion:")] + void BeginRefundRequestForActiveEntitlementWithCompletion(Action completionHandler); + } + + // @interface RCPlatformInfo : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCPlatformInfo + { + // -(instancetype _Nonnull)initWithFlavor:(NSString * _Nonnull)flavor version:(NSString * _Nonnull)version __attribute__((objc_designated_initializer)); + [Export("initWithFlavor:version:")] + [DesignatedInitializer] + IntPtr Constructor(string flavor, string version); + } + + // @protocol RCPurchasesDelegate + [Protocol, Model(AutoGeneratedName = true)] + [BaseType(typeof(NSObject))] + interface RCPurchasesDelegate + { + // @optional -(void)purchases:(RCPurchases * _Nonnull)purchases receivedUpdatedCustomerInfo:(RCCustomerInfo * _Nonnull)customerInfo; + [Export("purchases:receivedUpdatedCustomerInfo:")] + void ReceivedUpdatedCustomerInfo(RCPurchases purchases, RCCustomerInfo customerInfo); + + // @optional -(void)purchases:(RCPurchases * _Nonnull)purchases shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))makeDeferredPurchase; + [Export("purchases:shouldPurchasePromoProduct:defermentBlock:")] + void ShouldPurchasePromoProduct(RCPurchases purchases, RCStoreProduct product, DefermentBlockHandler makeDeferredPurchase); + } + + // @interface RCStoreProduct : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCStoreProduct : INativeObject + { + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // @property (readonly, nonatomic) enum RCStoreProductType productType; + [Export("productType")] + RCStoreProductType ProductType { get; } + + // @property (readonly, nonatomic) enum RCStoreProductCategory productCategory; + [Export("productCategory")] + RCStoreProductCategory ProductCategory { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedDescription; + [Export("localizedDescription")] + string LocalizedDescription { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedTitle; + [Export("localizedTitle")] + string LocalizedTitle { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nullable currencyCode; + [NullAllowed, Export("currencyCode")] + string CurrencyCode { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedPriceString; + [Export("localizedPriceString")] + string LocalizedPriceString { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull productIdentifier; + [Export("productIdentifier")] + string ProductIdentifier { get; } + + // @property (readonly, nonatomic) BOOL isFamilyShareable __attribute__((availability(watchos, introduced=8.0))) __attribute__((availability(tvos, introduced=14.0))) __attribute__((availability(macos, introduced=11.0))) __attribute__((availability(ios, introduced=14.0))); + [Watch(8, 0), TV(14, 0), Mac(11, 0), iOS(14, 0)] + [Export("isFamilyShareable")] + bool IsFamilyShareable { get; } + + // @property (readonly, copy, nonatomic) SWIFT_AVAILABILITY(watchos,introduced=6.2) NSString * subscriptionGroupIdentifier __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(macos, introduced=10.14))) __attribute__((availability(tvos, introduced=12.0))) __attribute__((availability(ios, introduced=12.0))); + [Watch(6, 2), TV(12, 0), Mac(10, 14), iOS(12, 0)] + [Export("subscriptionGroupIdentifier")] + string SubscriptionGroupIdentifier { get; } + + // @property (readonly, nonatomic, strong) NSNumberFormatter * _Nullable priceFormatter; + [NullAllowed, Export("priceFormatter", ArgumentSemantic.Strong)] + NSNumberFormatter PriceFormatter { get; } + + // @property (readonly, nonatomic, strong) SWIFT_AVAILABILITY(watchos,introduced=6.2) RCSubscriptionPeriod * subscriptionPeriod __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=11.2))) __attribute__((availability(macos, introduced=10.13.2))) __attribute__((availability(ios, introduced=11.2))); + [Watch(6, 2), TV(11, 2), Mac(10, 13, 2), iOS(11, 2)] + [Export("subscriptionPeriod", ArgumentSemantic.Strong)] + RCSubscriptionPeriod SubscriptionPeriod { get; } + + // @property (readonly, nonatomic, strong) SWIFT_AVAILABILITY(watchos,introduced=6.2) RCStoreProductDiscount * introductoryDiscount __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=11.2))) __attribute__((availability(macos, introduced=10.13.2))) __attribute__((availability(ios, introduced=11.2))); + [Watch(6, 2), TV(11, 2), Mac(10, 13, 2), iOS(11, 2)] + [Export("introductoryDiscount", ArgumentSemantic.Strong)] + RCStoreProductDiscount IntroductoryDiscount { get; } + + // @property (readonly, copy, nonatomic) SWIFT_AVAILABILITY(watchos,introduced=6.2) NSArray * discounts __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))) __attribute__((availability(ios, introduced=12.2))); + [Watch(6, 2), TV(12, 2), Mac(10, 14, 4), iOS(12, 2)] + [Export("discounts", ArgumentSemantic.Copy)] + RCStoreProductDiscount[] Discounts { get; } + + // -(instancetype _Nonnull)initWithSk1Product:(SKProduct * _Nonnull)sk1Product; + [Export("initWithSk1Product:")] + IntPtr Constructor(SKProduct sk1Product); + + // @property (readonly, nonatomic, strong) SKProduct * _Nullable sk1Product; + [NullAllowed, Export("sk1Product", ArgumentSemantic.Strong)] + SKProduct Sk1Product { get; } + + // @property (readonly, nonatomic, strong) NSDecimalNumber * _Nonnull price; + [Export("price", ArgumentSemantic.Strong)] + NSDecimalNumber Price { get; } + + // @property (readonly, nonatomic, strong) SWIFT_AVAILABILITY(watchos,introduced=6.2) NSDecimalNumber * pricePerMonth __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=11.2))) __attribute__((availability(macos, introduced=10.13.2))) __attribute__((availability(ios, introduced=11.2))); + [Watch(6, 2), TV(11, 2), Mac(10, 13, 2), iOS(11, 2)] + [Export("pricePerMonth", ArgumentSemantic.Strong)] + NSDecimalNumber PricePerMonth { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nullable localizedIntroductoryPriceString; + [NullAllowed, Export("localizedIntroductoryPriceString")] + string LocalizedIntroductoryPriceString { get; } + } + + // @interface RCStoreProductDiscount : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCStoreProductDiscount + { + // @property (readonly, copy, nonatomic) NSString * _Nullable offerIdentifier; + [NullAllowed, Export("offerIdentifier")] + string OfferIdentifier { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nullable currencyCode; + [NullAllowed, Export("currencyCode")] + string CurrencyCode { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedPriceString; + [Export("localizedPriceString")] + string LocalizedPriceString { get; } + + // @property (readonly, nonatomic) enum RCPaymentMode paymentMode; + [Export("paymentMode")] + RCPaymentMode PaymentMode { get; } + + // @property (readonly, nonatomic, strong) RCSubscriptionPeriod * _Nonnull subscriptionPeriod; + [Export("subscriptionPeriod", ArgumentSemantic.Strong)] + RCSubscriptionPeriod SubscriptionPeriod { get; } + + // @property (readonly, nonatomic) enum RCDiscountType type; + [Export("type")] + RCDiscountType Type { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // @property (readonly, nonatomic, strong) NSDecimalNumber * _Nonnull price; + [Export("price", ArgumentSemantic.Strong)] + NSDecimalNumber Price { get; } + + // @property (readonly, nonatomic, strong) SWIFT_AVAILABILITY(watchos,introduced=6.2) SKProductDiscount * sk1Discount __attribute__((availability(watchos, introduced=6.2))) __attribute__((availability(tvos, introduced=12.2))) __attribute__((availability(macos, introduced=10.14.4))) __attribute__((availability(ios, introduced=12.2))); + [Watch(6, 2), TV(12, 2), Mac(10, 14, 4), iOS(12, 2)] + [Export("sk1Discount", ArgumentSemantic.Strong)] + SKProductDiscount Sk1Discount { get; } + } + + // @interface RCStoreTransaction : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCStoreTransaction + { + // @property (readonly, copy, nonatomic) NSString * _Nonnull productIdentifier; + [Export("productIdentifier")] + string ProductIdentifier { get; } + + // @property (readonly, copy, nonatomic) NSDate * _Nonnull purchaseDate; + [Export("purchaseDate", ArgumentSemantic.Copy)] + NSDate PurchaseDate { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull transactionIdentifier; + [Export("transactionIdentifier")] + string TransactionIdentifier { get; } + + // @property (readonly, nonatomic) NSInteger quantity; + [Export("quantity")] + nint Quantity { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // @property (readonly, nonatomic, strong) SKPaymentTransaction * _Nullable sk1Transaction; + [NullAllowed, Export("sk1Transaction", ArgumentSemantic.Strong)] + SKPaymentTransaction Sk1Transaction { get; } + } + + // @interface RCSubscriptionPeriod : NSObject + [BaseType(typeof(NSObject))] + [DisableDefaultCtor] + interface RCSubscriptionPeriod + { + // @property (readonly, nonatomic) NSInteger value; + [Export("value")] + nint Value { get; } + + // @property (readonly, nonatomic) enum RCSubscriptionPeriodUnit unit; + [Export("unit")] + RCSubscriptionPeriodUnit Unit { get; } + + // -(BOOL)isEqual:(id _Nullable)object __attribute__((warn_unused_result(""))); + [Export("isEqual:")] + bool IsEqual([NullAllowed] NSObject @object); + + // @property (readonly, nonatomic) NSUInteger hash; + [Export("hash")] + nuint Hash { get; } + + // @property (readonly, copy, nonatomic) NSString * _Nonnull debugDescription; + [Export("debugDescription")] + string DebugDescription { get; } + } } diff --git a/Xamarin.RevenueCat.iOS/StructsAndEnums.cs b/Xamarin.RevenueCat.iOS/StructsAndEnums.cs index 79424eb..2ba3592 100644 --- a/Xamarin.RevenueCat.iOS/StructsAndEnums.cs +++ b/Xamarin.RevenueCat.iOS/StructsAndEnums.cs @@ -1,107 +1,173 @@ using ObjCRuntime; +// ReSharper disable InconsistentNaming -namespace Purchases +namespace RevenueCat { - [Native] - public enum RCAttributionNetwork : long - { - AppleSearchAds = 0, - Adjust, - AppsFlyer, - Branch, - Tenjin, - Facebook, - MParticle - } + [Native] + public enum RCAttributionNetwork : long + { + AppleSearchAds = 0, + Adjust = 1, + AppsFlyer = 2, + Branch = 3, + Tenjin = 4, + Facebook = 5, + MParticle = 6, + } - [Native] - public enum RCIntroEligibilityStatus : long - { - Unknown = 0, - Ineligible, - Eligible - } + [Native] + public enum RCPurchasesErrorCode : long + { + UnknownError = 0, + PurchaseCancelledError = 1, + StoreProblemError = 2, + PurchaseNotAllowedError = 3, + PurchaseInvalidError = 4, + ProductNotAvailableForPurchaseError = 5, + ProductAlreadyPurchasedError = 6, + ReceiptAlreadyInUseError = 7, + InvalidReceiptError = 8, + MissingReceiptFileError = 9, + NetworkError = 10, + InvalidCredentialsError = 11, + UnexpectedBackendResponseError = 12, + ReceiptInUseByOtherSubscriberError = 13, + InvalidAppUserIdError = 14, + OperationAlreadyInProgressForProductError = 15, + UnknownBackendError = 16, + InvalidAppleSubscriptionKeyError = 17, + IneligibleError = 18, + InsufficientPermissionsError = 19, + PaymentPendingError = 20, + InvalidSubscriberAttributesError = 21, + LogOutAnonymousUserError = 22, + ConfigurationError = 23, + UnsupportedError = 24, + EmptySubscriberAttributesError = 25, + ProductDiscountMissingIdentifierError = 26, + MissingAppUserIDForAliasCreationError = 27, + ProductDiscountMissingSubscriptionGroupIdentifierError = 28, + CustomerInfoError = 29, + SystemInfoError = 30, + BeginRefundRequestError = 31, + ProductRequestTimedOut = 32, + APIEndpointBlocked = 33, + InvalidPromotionalOfferError = 34, + } - [Native] - public enum RCPackageType : long - { - Unknown = -2, - Custom, - Lifetime, - Annual, - SixMonth, - ThreeMonth, - TwoMonth, - Monthly, - Weekly - } + [Native] + public enum FakeTrackingManagerAuthorizationStatus : long + { + NotDetermined = 0, + Restricted = 1, + Denied = 2, + Authorized = 3, + } - [Native] - public enum RCPurchasesErrorCode : long - { - UnknownError = 0, - PurchaseCancelledError, - StoreProblemError, - PurchaseNotAllowedError, - PurchaseInvalidError, - ProductNotAvailableForPurchaseError, - ProductAlreadyPurchasedError, - ReceiptAlreadyInUseError, - InvalidReceiptError, - MissingReceiptFileError, - NetworkError, - InvalidCredentialsError, - UnexpectedBackendResponseError, - ReceiptInUseByOtherSubscriberError, - InvalidAppUserIdError, - OperationAlreadyInProgressError, - UnknownBackendError, - InvalidAppleSubscriptionKeyError, - IneligibleError, - InsufficientPermissionsError, - PaymentPendingError, - InvalidSubscriberAttributesError - } + [Native] + public enum RCIntroEligibilityStatus : long + { + Unknown = 0, + Ineligible = 1, + Eligible = 2, + NoIntroOfferExists = 3, + } - [Native] - public enum RCBackendErrorCode : long - { - InvalidPlatform = 7000, - StoreProblem = 7101, - CannotTransferPurchase = 7102, - InvalidReceiptToken = 7103, - InvalidAppStoreSharedSecret = 7104, - InvalidPaymentModeOrIntroPriceNotProvided = 7105, - ProductIdForGoogleReceiptNotProvided = 7106, - InvalidPlayStoreCredentials = 7107, - EmptyAppUserId = 7220, - InvalidAuthToken = 7224, - InvalidAPIKey = 7225, - PlayStoreQuotaExceeded = 7229, - PlayStoreInvalidPackageName = 7230, - PlayStoreGenericError = 7231, - UserIneligibleForPromoOffer = 7232, - InvalidAppleSubscriptionKey = 7234, - InvalidSubscriberAttributes = 7263, - InvalidSubscriberAttributesBody = 7264 - } + [Native] + public enum RCLogLevel : long + { + Debug = 0, + Info = 1, + Warn = 2, + Error = 3, + } - [Native] - public enum RCStore : long - { - AppStore = 0, - MacAppStore, - PlayStore, - Stripe, - Promotional, - UnknownStore - } + [Native] + public enum RCPackageType : long + { + Unknown = -2, + Custom = -1, + Lifetime = 0, + Annual = 1, + SixMonth = 2, + ThreeMonth = 3, + TwoMonth = 4, + Monthly = 5, + Weekly = 6, + } - [Native] - public enum RCPeriodType : long - { - Normal = 0, - Intro, - Trial - } + [Native] + public enum RCPeriodType : long + { + Normal = 0, + Intro = 1, + Trial = 2, + } + + [Native] + public enum RCPurchaseOwnershipType : long + { + Purchased = 0, + FamilyShared = 1, + Unknown = 2, + } + + [Native] + public enum RCRefundRequestStatus : long + { + UserCancelled = 0, + Success = 1, + Error = 2, + } + + [Native] + public enum RCStore : long + { + AppStore = 0, + MacAppStore = 1, + PlayStore = 2, + Stripe = 3, + Promotional = 4, + UnknownStore = 5, + } + + [Native] + public enum RCStoreProductCategory : long + { + Subscription = 0, + NonSubscription = 1, + } + + [Native] + public enum RCStoreProductType : long + { + Consumable = 0, + NonConsumable = 1, + NonRenewableSubscription = 2, + AutoRenewableSubscription = 3, + } + + [Native] + public enum RCPaymentMode : long + { + PayAsYouGo = 0, + PayUpFront = 1, + FreeTrial = 2, + } + + [Native] + public enum RCDiscountType : long + { + Introductory = 0, + Promotional = 1, + } + + [Native] + public enum RCSubscriptionPeriodUnit : long + { + Day = 0, + Week = 1, + Month = 2, + Year = 3, + } } diff --git a/Xamarin.RevenueCat.iOS/Xamarin.RevenueCat.iOS.csproj b/Xamarin.RevenueCat.iOS/Xamarin.RevenueCat.iOS.csproj index 84f7191..bab156c 100644 --- a/Xamarin.RevenueCat.iOS/Xamarin.RevenueCat.iOS.csproj +++ b/Xamarin.RevenueCat.iOS/Xamarin.RevenueCat.iOS.csproj @@ -3,7 +3,7 @@ true Xamarin.RevenueCat.iOS - 3.5.3.10 + 4.1.0.4 Contains bindings for https://docs.revenuecat.com/docs/ios Christian Kapplmüller fun.music IT GmbH @@ -41,35 +41,34 @@ true - - + + - + - + + - + - + - + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + - - Static - False - + + Framework + False + True + - - - - <_BuiltProjectOutputGroupOutputIntermediate Remove="$(OutDir)$(_DeploymentTargetApplicationManifestFileName)" /> - - - - \ No newline at end of file + + diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat-Swift.h b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat-Swift.h new file mode 100644 index 0000000..e28ecd5 --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat-Swift.h @@ -0,0 +1,4600 @@ +#ifndef TARGET_OS_SIMULATOR +#include +#endif +#if TARGET_OS_SIMULATOR +// Generated by Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +#ifndef REVENUECAT_SWIFT_H +#define REVENUECAT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +@import StoreKit; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RevenueCat",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +/// Enum of supported attribution networks +typedef SWIFT_ENUM_NAMED(NSInteger, RCAttributionNetwork, "AttributionNetwork", open) { +/// Apple’s search ads + RCAttributionNetworkAppleSearchAds = 0, +/// Adjust https://www.adjust.com/ + RCAttributionNetworkAdjust = 1, +/// AppsFlyer https://www.appsflyer.com/ + RCAttributionNetworkAppsFlyer = 2, +/// Branch https://www.branch.io/ + RCAttributionNetworkBranch = 3, +/// Tenjin https://www.tenjin.io/ + RCAttributionNetworkTenjin = 4, +/// Facebook https://developers.facebook.com/ + RCAttributionNetworkFacebook = 5, +/// mParticle https://www.mparticle.com/ + RCAttributionNetworkMParticle = 6, +}; + +@class NSNumber; + +SWIFT_CLASS("_TtC10RevenueCat16NetworkOperation") +@interface NetworkOperation : NSOperation +@property (nonatomic, readonly, getter=isExecuting) BOOL executing; +@property (nonatomic, readonly, getter=isFinished) BOOL finished; +@property (nonatomic, readonly, getter=isCancelled) BOOL cancelled; +- (void)main; +- (void)cancel; +@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_CLASS("_TtC10RevenueCat25CacheableNetworkOperation") +@interface CacheableNetworkOperation : NetworkOperation +@end + + +SWIFT_CLASS("_TtC10RevenueCat20CreateAliasOperation") +@interface CreateAliasOperation : CacheableNetworkOperation +@end + + + +@class RCEntitlementInfos; +@class NSString; +@class NSDate; +@class RCStoreTransaction; +@class NSURL; + +/// A container for the most recent customer info returned from Purchases. +/// These objects are non-mutable and do not update automatically. +SWIFT_CLASS_NAMED("CustomerInfo") +@interface RCCustomerInfo : NSObject +/// EntitlementInfos attached to this customer info. +@property (nonatomic, readonly, strong) RCEntitlementInfos * _Nonnull entitlements; +/// All subscription product identifiers with expiration dates in the future. +@property (nonatomic, readonly, copy) NSSet * _Nonnull activeSubscriptions; +/// All product identifiers purchases by the user regardless of expiration. +@property (nonatomic, readonly, copy) NSSet * _Nonnull allPurchasedProductIdentifiers; +/// Returns the latest expiration date of all products, nil if there are none. +@property (nonatomic, readonly, copy) NSDate * _Nullable latestExpirationDate; +/// Returns all product IDs of the non-subscription purchases a user has made. +@property (nonatomic, readonly, copy) NSSet * _Nonnull nonConsumablePurchases SWIFT_DEPRECATED_MSG("use nonSubscriptionTransactions"); +/// Returns all the non-subscription purchases a user has made. +/// The purchases are ordered by purchase date in ascending order. +@property (nonatomic, readonly, copy) NSArray * _Nonnull nonSubscriptionTransactions; +/// Returns the fetch date of this CustomerInfo. +@property (nonatomic, readonly, copy) NSDate * _Nonnull requestDate; +/// The date this user was first seen in RevenueCat. +@property (nonatomic, readonly, copy) NSDate * _Nonnull firstSeen; +/// The original App User Id recorded for this user. +@property (nonatomic, readonly, copy) NSString * _Nonnull originalAppUserId; +/// URL to manage the active subscription of the user. +///
    +///
  • +/// If this user has an active iOS subscription, this will point to the App Store. +///
  • +///
  • +/// If the user has an active Play Store subscription it will point there. +///
  • +///
  • +/// If there are no active subscriptions it will be null. +///
  • +///
  • +/// If there are multiple for different platforms, it will point to the App Store. +///
  • +///
+@property (nonatomic, readonly, copy) NSURL * _Nullable managementURL; +/// Returns the purchase date for the version of the application when the user bought the app. +/// Use this for grandfathering users when migrating to subscriptions. +/// note: +/// This can be nil, see Purchases/restorePurchases(completion:) +@property (nonatomic, readonly, copy) NSDate * _Nullable originalPurchaseDate; +/// The build number (in iOS) or the marketing version (in macOS) for the version of the application when the user +/// bought the app. This corresponds to the value of CFBundleVersion (in iOS) or CFBundleShortVersionString +/// (in macOS) in the Info.plist file when the purchase was originally made. Use this for grandfathering users +/// when migrating to subscriptions. +/// note: +/// This can be nil, see -Purchases.restorePurchases(completion:) +@property (nonatomic, readonly, copy) NSString * _Nullable originalApplicationVersion; +/// The underlying data for this CustomerInfo. +/// note: +/// the content and format of this data isn’t documented and is subject to change. +/// it’s only meant for debugging purposes or for getting access to future data +/// without updating the SDK. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; +/// Get the expiration date for a given product identifier. You should use Entitlements though! +/// \param productIdentifier Product identifier for product +/// +/// +/// returns: +/// The expiration date for productIdentifier, nil if product never purchased +- (NSDate * _Nullable)expirationDateForProductIdentifier:(NSString * _Nonnull)productIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the latest purchase or renewal date for a given product identifier. You should use Entitlements though! +/// \param productIdentifier Product identifier for subscription product +/// +/// +/// returns: +/// The purchase date for productIdentifier, nil if product never purchased +- (NSDate * _Nullable)purchaseDateForProductIdentifier:(NSString * _Nonnull)productIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the expiration date for a given entitlement. +/// \param entitlementIdentifier The ID of the entitlement +/// +/// +/// returns: +/// The expiration date for the passed in entitlementIdentifier, or nil +- (NSDate * _Nullable)expirationDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the latest purchase or renewal date for a given entitlement identifier. +/// \param entitlementIdentifier Entitlement identifier for entitlement +/// +/// +/// returns: +/// The purchase date for entitlementIdentifier, nil if product never purchased +- (NSDate * _Nullable)purchaseDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier SWIFT_WARN_UNUSED_RESULT; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + +/// Only use a Dangerous Setting if suggested by RevenueCat support team. +SWIFT_CLASS_NAMED("DangerousSettings") +@interface RCDangerousSettings : NSObject +/// Disable or enable subscribing to the StoreKit queue. If this is disabled, RevenueCat won’t observe +/// the StoreKit queue, and it will not sync any purchase automatically. +/// Call syncPurchases whenever a new transaction is completed so the receipt is sent to RevenueCat’s backend. +/// Consumables disappear from the receipt after the transaction is finished, so make sure purchases are +/// synced before finishing any consumable transaction, otherwise RevenueCat won’t register the purchase. +/// Auto syncing of purchases is enabled by default. +@property (nonatomic, readonly) BOOL autoSyncPurchases; +- (nonnull instancetype)init; +/// Only use a Dangerous Setting if suggested by RevenueCat support team. +/// \param autoSyncPurchases Disable or enable subscribing to the StoreKit queue. +/// If this is disabled, RevenueCat won’t observe the StoreKit queue, and it will not sync any purchase +/// automatically. +/// +- (nonnull instancetype)initWithAutoSyncPurchases:(BOOL)autoSyncPurchases OBJC_DESIGNATED_INITIALIZER; +@end + + +enum RCPeriodType : NSInteger; +enum RCStore : NSInteger; +enum RCPurchaseOwnershipType : NSInteger; + +/// The EntitlementInfo object gives you access to all of the information about the status of a user entitlement. +SWIFT_CLASS_NAMED("EntitlementInfo") +@interface RCEntitlementInfo : NSObject +/// The entitlement identifier configured in the RevenueCat dashboard +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// True if the user has access to this entitlement +@property (nonatomic, readonly) BOOL isActive; +/// True if the underlying subscription is set to renew at the end of +/// the billing period (expirationDate). Will always be true if entitlement +/// is for lifetime access. +@property (nonatomic, readonly) BOOL willRenew; +/// The last period type this entitlement was in +/// Either: PeriodType/normal, PeriodType/intro, PeriodType/trial +@property (nonatomic, readonly) enum RCPeriodType periodType; +/// The latest purchase or renewal date for the entitlement. +@property (nonatomic, readonly, copy) NSDate * _Nullable latestPurchaseDate; +/// The first date this entitlement was purchased +@property (nonatomic, readonly, copy) NSDate * _Nullable originalPurchaseDate; +/// The expiration date for the entitlement, can be nil for lifetime access. +/// If the periodType is PeriodType/trial, this is the trial expiration date. +@property (nonatomic, readonly, copy) NSDate * _Nullable expirationDate; +/// The store where this entitlement was unlocked from either: Store/appStore, Store/macAppStore, +/// Store/playStore, Store/stripe, Store/promotional, or Store/unknownStore. +@property (nonatomic, readonly) enum RCStore store; +/// The product identifier that unlocked this entitlement +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +/// False if this entitlement is unlocked via a production purchase +@property (nonatomic, readonly) BOOL isSandbox; +/// The date an unsubscribe was detected. Can be nil. +/// note: +/// Entitlement may still be active even if user has unsubscribed. Check the isActive property. +@property (nonatomic, readonly, copy) NSDate * _Nullable unsubscribeDetectedAt; +/// The date a billing issue was detected. Can be nil if there is no +/// billing issue or an issue has been resolved. +/// note: +/// Entitlement may still be active even if there is a billing issue. +/// Check the isActive property. +@property (nonatomic, readonly, copy) NSDate * _Nullable billingIssueDetectedAt; +/// Use this property to determine whether a purchase was made by the current user +/// or shared to them by a family member. This can be useful for onboarding users who have had +/// an entitlement shared with them, but might not be entirely aware of the benefits they now have. +@property (nonatomic, readonly) enum RCPurchaseOwnershipType ownershipType; +/// The underlying data for this EntitlementInfo. +/// note: +/// the content and format of this data isn’t documented and is subject to change, +/// it’s only meant for debugging purposes or for getting access to future data +/// without updating the SDK. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + + + +/// This class contains all the entitlements associated to the user. +SWIFT_CLASS_NAMED("EntitlementInfos") +@interface RCEntitlementInfos : NSObject +/// Dictionary of all EntitlementInfo (EntitlementInfo) objects (active and inactive) keyed by entitlement +/// identifier. This dictionary can also be accessed by using an index subscript on EntitlementInfos, e.g. +/// entitlementInfos["pro_entitlement_id"]. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull all; +/// Dictionary of active EntitlementInfo (RCEntitlementInfo) objects keyed by entitlement identifier. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull active; +- (RCEntitlementInfo * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Error codes used by the Purchases SDK +typedef SWIFT_ENUM_NAMED(NSInteger, RCPurchasesErrorCode, "ErrorCode", open) { + RCUnknownError SWIFT_COMPILE_NAME("unknownError") = 0, + RCPurchaseCancelledError SWIFT_COMPILE_NAME("purchaseCancelledError") = 1, + RCStoreProblemError SWIFT_COMPILE_NAME("storeProblemError") = 2, + RCPurchaseNotAllowedError SWIFT_COMPILE_NAME("purchaseNotAllowedError") = 3, + RCPurchaseInvalidError SWIFT_COMPILE_NAME("purchaseInvalidError") = 4, + RCProductNotAvailableForPurchaseError SWIFT_COMPILE_NAME("productNotAvailableForPurchaseError") = 5, + RCProductAlreadyPurchasedError SWIFT_COMPILE_NAME("productAlreadyPurchasedError") = 6, + RCReceiptAlreadyInUseError SWIFT_COMPILE_NAME("receiptAlreadyInUseError") = 7, + RCInvalidReceiptError SWIFT_COMPILE_NAME("invalidReceiptError") = 8, + RCMissingReceiptFileError SWIFT_COMPILE_NAME("missingReceiptFileError") = 9, + RCNetworkError SWIFT_COMPILE_NAME("networkError") = 10, + RCInvalidCredentialsError SWIFT_COMPILE_NAME("invalidCredentialsError") = 11, + RCUnexpectedBackendResponseError SWIFT_COMPILE_NAME("unexpectedBackendResponseError") = 12, + RCReceiptInUseByOtherSubscriberError SWIFT_COMPILE_NAME("receiptInUseByOtherSubscriberError") = 13, + RCInvalidAppUserIdError SWIFT_COMPILE_NAME("invalidAppUserIdError") = 14, + RCOperationAlreadyInProgressForProductError SWIFT_COMPILE_NAME("operationAlreadyInProgressForProductError") = 15, + RCUnknownBackendError SWIFT_COMPILE_NAME("unknownBackendError") = 16, + RCInvalidAppleSubscriptionKeyError SWIFT_COMPILE_NAME("invalidAppleSubscriptionKeyError") = 17, + RCIneligibleError SWIFT_COMPILE_NAME("ineligibleError") = 18, + RCInsufficientPermissionsError SWIFT_COMPILE_NAME("insufficientPermissionsError") = 19, + RCPaymentPendingError SWIFT_COMPILE_NAME("paymentPendingError") = 20, + RCInvalidSubscriberAttributesError SWIFT_COMPILE_NAME("invalidSubscriberAttributesError") = 21, + RCLogOutAnonymousUserError SWIFT_COMPILE_NAME("logOutAnonymousUserError") = 22, + RCConfigurationError SWIFT_COMPILE_NAME("configurationError") = 23, + RCUnsupportedError SWIFT_COMPILE_NAME("unsupportedError") = 24, + RCEmptySubscriberAttributesError SWIFT_COMPILE_NAME("emptySubscriberAttributes") = 25, + RCProductDiscountMissingIdentifierError SWIFT_COMPILE_NAME("productDiscountMissingIdentifierError") = 26, + RCMissingAppUserIDForAliasCreationError SWIFT_COMPILE_NAME("missingAppUserIDForAliasCreationError") = 27, + RCProductDiscountMissingSubscriptionGroupIdentifierError SWIFT_COMPILE_NAME("productDiscountMissingSubscriptionGroupIdentifierError") = 28, + RCCustomerInfoError SWIFT_COMPILE_NAME("customerInfoError") = 29, + RCSystemInfoError SWIFT_COMPILE_NAME("systemInfoError") = 30, + RCBeginRefundRequestError SWIFT_COMPILE_NAME("beginRefundRequestError") = 31, + RCProductRequestTimedOut SWIFT_COMPILE_NAME("productRequestTimedOut") = 32, + RCAPIEndpointBlocked SWIFT_COMPILE_NAME("apiEndpointBlockedError") = 33, + RCInvalidPromotionalOfferError SWIFT_COMPILE_NAME("invalidPromotionalOfferError") = 34, +}; +static NSString * _Nonnull const RCPurchasesErrorCodeDomain = @"RevenueCat.ErrorCode"; + + +SWIFT_CLASS("_TtC10RevenueCat12ErrorDetails") +@interface ErrorDetails : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15FakeASIdManager") +@interface FakeASIdManager : NSObject ++ (FakeASIdManager * _Nonnull)sharedManager SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat17FakeAfficheClient") +@interface FakeAfficheClient : NSObject ++ (FakeAfficheClient * _Nonnull)sharedClient SWIFT_WARN_UNUSED_RESULT; +- (void)requestAttributionDetailsWithBlock:(void (^ _Nonnull)(NSDictionary * _Nullable, NSError * _Nullable))completionHandler; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat19FakeTrackingManager") +@interface FakeTrackingManager : NSObject ++ (NSInteger)trackingAuthorizationStatus SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +typedef SWIFT_ENUM(NSInteger, FakeTrackingManagerAuthorizationStatus, closed) { + FakeTrackingManagerAuthorizationStatusNotDetermined = 0, + FakeTrackingManagerAuthorizationStatusRestricted = 1, + FakeTrackingManagerAuthorizationStatusDenied = 2, + FakeTrackingManagerAuthorizationStatusAuthorized = 3, +}; + + +SWIFT_CLASS("_TtC10RevenueCat24GetCustomerInfoOperation") +@interface GetCustomerInfoOperation : CacheableNetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat28GetIntroEligibilityOperation") +@interface GetIntroEligibilityOperation : NetworkOperation +@end + + + + +SWIFT_CLASS("_TtC10RevenueCat21GetOfferingsOperation") +@interface GetOfferingsOperation : CacheableNetworkOperation +@end + + + + + +enum RCIntroEligibilityStatus : NSInteger; + +/// Holds the introductory price status +SWIFT_CLASS_NAMED("IntroEligibility") +@interface RCIntroEligibility : NSObject +/// The introductory price eligibility status +@property (nonatomic, readonly) enum RCIntroEligibilityStatus status; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Enum of different possible states for intro price eligibility status. +///
    +///
  • +/// IntroEligibilityStatus/unknown RevenueCat doesn’t have enough information to determine eligibility. +///
  • +///
  • +/// IntroEligibilityStatus/ineligible The user is not eligible for a free trial or intro pricing for this +/// product. +///
  • +///
  • +/// IntroEligibilityStatus/eligible The user is eligible for a free trial or intro pricing for this product. +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCIntroEligibilityStatus, "IntroEligibilityStatus", open) { +/// RevenueCat doesn’t have enough information to determine eligibility. + RCIntroEligibilityStatusUnknown = 0, +/// The user is not eligible for a free trial or intro pricing for this product. + RCIntroEligibilityStatusIneligible = 1, +/// The user is eligible for a free trial or intro pricing for this product. + RCIntroEligibilityStatusEligible = 2, +/// There is no free trial or intro pricing for this product. + RCIntroEligibilityStatusNoIntroOfferExists = 3, +}; + + +SWIFT_CLASS("_TtC10RevenueCat14LogInOperation") +@interface LogInOperation : CacheableNetworkOperation +@end + + + +/// Enumeration of the different verbosity levels. +///

Related Symbols

+///
    +///
  • +/// Purchases/logLevel +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCLogLevel, "LogLevel", open) { + RCLogLevelDebug = 0, + RCLogLevelInfo = 1, + RCLogLevelWarn = 2, + RCLogLevelError = 3, +}; + + + + + +@class RCPackage; + +/// An offering is a collection of Packages, and they let you control which products +/// are shown to users without requiring an app update. +/// Building paywalls that are dynamic and can react to different product +/// configurations gives you maximum flexibility to make remote updates. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Offering") +@interface RCOffering : NSObject +/// Unique identifier defined in RevenueCat dashboard. +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// Offering description defined in RevenueCat dashboard. +@property (nonatomic, readonly, copy) NSString * _Nonnull serverDescription; +/// Array of Package objects available for purchase. +@property (nonatomic, readonly, copy) NSArray * _Nonnull availablePackages; +/// Lifetime Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable lifetime; +/// Annual Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable annual; +/// Six month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable sixMonth; +/// Three month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable threeMonth; +/// Two month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable twoMonth; +/// Monthly Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable monthly; +/// Weekly Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable weekly; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// Retrieves a specific Package by identifier, use this to access custom package types configured in the +/// RevenueCat dashboard, e.g. offering.package(identifier: "custom_package_id") or +/// offering["custom_package_id"]. +- (RCPackage * _Nullable)packageWithIdentifier:(NSString * _Nullable)identifier SWIFT_WARN_UNUSED_RESULT; +- (RCPackage * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +/// This class contains all the offerings configured in RevenueCat dashboard. +/// Offerings let you control which products are shown to users without requiring an app update. +/// Building paywalls that are dynamic and can react to different product +/// configurations gives you maximum flexibility to make remote updates. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Offerings") +@interface RCOfferings : NSObject +/// Dictionary of all Offerings (Offering) objects keyed by their identifier. This dictionary can also be accessed +/// by using an index subscript on Offerings, e.g. offerings["offering_id"]. To access the current offering use +/// Offerings/current. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull all; +/// Current Offering configured in the RevenueCat dashboard. +@property (nonatomic, readonly, strong) RCOffering * _Nullable current; +/// Retrieves a specific offering by its identifier, use this to access additional offerings configured in the +/// RevenueCat dashboard, e.g. offerings.offering(identifier: "offering_id") or offerings[@"offering_id"]. +/// To access the current offering use Offerings/current. +- (RCOffering * _Nullable)offeringWithIdentifier:(NSString * _Nullable)identifier SWIFT_WARN_UNUSED_RESULT; +- (RCOffering * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +enum RCPackageType : NSInteger; +@class RCStoreProduct; + +/// Packages help abstract platform-specific products by grouping equivalent products across iOS, Android, and web. +/// A package is made up of three parts: identifier, packageType, and underlying StoreProduct. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Package") +@interface RCPackage : NSObject +/// The identifier for this Package. +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// The type configured for this package. +@property (nonatomic, readonly) enum RCPackageType packageType; +/// The underlying storeProduct +@property (nonatomic, readonly, strong) RCStoreProduct * _Nonnull storeProduct; +/// The identifier of the Offering containing this Package. +@property (nonatomic, readonly, copy) NSString * _Nonnull offeringIdentifier; +/// The price of this product using StoreProduct/priceFormatter. +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +/// The price of the StoreProduct/introductoryDiscount formatted using StoreProduct/priceFormatter. +/// +/// returns: +/// nil if there is no introductoryDiscount. +@property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +@interface RCPackage (SWIFT_EXTENSION(RevenueCat)) +/// \param packageType A PackageType. +/// +/// +/// returns: +/// an optional description of the packageType. ++ (NSString * _Nullable)stringFrom:(enum RCPackageType)packageType SWIFT_WARN_UNUSED_RESULT; +/// \param string A string that maps to a enumeration value of type PackageType +/// +/// +/// returns: +/// a PackageType for the given string. ++ (enum RCPackageType)packageTypeFrom:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT; +@end + +@class SKProduct; + +@interface RCPackage (SWIFT_EXTENSION(RevenueCat)) +/// SKProduct assigned to this package. https://developer.apple.com/documentation/storekit/skproduct +@property (nonatomic, readonly, strong) SKProduct * _Nonnull product SWIFT_AVAILABILITY(macos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead"); +@end + + +/// Enumeration of all possible Package types, as configured on the package. +///

Related Articles

+/// +typedef SWIFT_ENUM_NAMED(NSInteger, RCPackageType, "PackageType", open) { +/// A package that was defined with an unknown identifier. + RCPackageTypeUnknown = -2, +/// A package that was defined with an unknown identifier. + RCPackageTypeCustom = -1, +/// A package that was defined with an unknown identifier. + RCPackageTypeLifetime = 0, +/// A package that was defined with an unknown identifier. + RCPackageTypeAnnual = 1, +/// A package that was defined with an unknown identifier. + RCPackageTypeSixMonth = 2, +/// A package that was defined with an unknown identifier. + RCPackageTypeThreeMonth = 3, +/// A package that was defined with an unknown identifier. + RCPackageTypeTwoMonth = 4, +/// A package that was defined with an unknown identifier. + RCPackageTypeMonthly = 5, +/// A package that was defined with an unknown identifier. + RCPackageTypeWeekly = 6, +}; + +/// Enum of supported period types for an entitlement. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPeriodType, "PeriodType", open) { +/// If the entitlement is not under an introductory or trial period. + RCNormal SWIFT_COMPILE_NAME("normal") = 0, +/// If the entitlement is under a introductory price period. + RCIntro SWIFT_COMPILE_NAME("intro") = 1, +/// If the entitlement is under a trial period. + RCTrial SWIFT_COMPILE_NAME("trial") = 2, +}; + + +SWIFT_CLASS("_TtC10RevenueCat28PostAttributionDataOperation") +@interface PostAttributionDataOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat28PostOfferForSigningOperation") +@interface PostOfferForSigningOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat24PostReceiptDataOperation") +@interface PostReceiptDataOperation : CacheableNetworkOperation +@end + + +SWIFT_CLASS("_TtC10RevenueCat33PostSubscriberAttributesOperation") +@interface PostSubscriberAttributesOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat18ProductsFetcherSK1") +@interface ProductsFetcherSK1 : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@class SKProductsRequest; +@class SKProductsResponse; +@class SKRequest; + +@interface ProductsFetcherSK1 (SWIFT_EXTENSION(RevenueCat)) +- (void)productsRequest:(SKProductsRequest * _Nonnull)request didReceiveResponse:(SKProductsResponse * _Nonnull)response; +- (void)requestDidFinish:(SKRequest * _Nonnull)request; +- (void)request:(SKRequest * _Nonnull)request didFailWithError:(NSError * _Nonnull)error; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15ProductsManager") +@interface ProductsManager : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +/// Represents a StoreProductDiscount that has been validated and +/// is ready to be used for a purchase. +///

Related Symbols

+///
    +///
  • +/// Purchases/getPromotionalOffer(forProductDiscount:product:) +///
  • +///
  • +/// Purchases/getPromotionalOffer(forProductDiscount:product:completion:) +///
  • +///
  • +/// StoreProduct/getEligiblePromotionalOffers() +///
  • +///
  • +/// Purchases/getEligiblePromotionalOffers(forProduct:) +///
  • +///
  • +/// Purchases/purchase(package:promotionalOffer:) +///
  • +///
  • +/// Purchases/purchase(package:promotionalOffer:completion:) +///
  • +///
  • +/// Purchases/purchase(product:promotionalOffer:) +///
  • +///
  • +/// Purchases/purchase(product:promotionalOffer:completion:) +///
  • +///
+SWIFT_CLASS_NAMED("PromotionalOffer") +@interface RCPromotionalOffer : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + +SWIFT_CLASS_NAMED("PromotionalOfferEligibility") SWIFT_AVAILABILITY(macos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(ios,obsoleted=1,message="Use PromotionalOffer instead") +@interface RCPromotionalOfferEligibility : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// The types used to describe whether a transaction was purchased by the user, +/// or is available to them through Family Sharing. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPurchaseOwnershipType, "PurchaseOwnershipType", open) { +/// The purchase was made directly by this user. + RCPurchaseOwnershipTypePurchased = 0, +/// The purchase has been shared to this user by a family member. + RCPurchaseOwnershipTypeFamilyShared = 1, +/// The ownership type could not be determined. + RCPurchaseOwnershipTypeUnknown = 2, +}; + + +SWIFT_CLASS_NAMED("PurchaserInfo") SWIFT_AVAILABILITY(macos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") +@interface RCPurchaserInfo : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@protocol RCPurchasesDelegate; + +/// Purchases is the entry point for RevenueCat.framework. It should be instantiated as soon as your app has a unique +/// user id for your user. This can be when a user logs in if you have accounts or on launch if you can generate a random +/// user identifier. +/// warning: +/// Only one instance of Purchases should be instantiated at a time! Use a configure method to let the +/// framework handle the singleton instance for you. +SWIFT_CLASS_NAMED("Purchases") +@interface RCPurchases : NSObject +/// Returns the already configured instance of Purchases. +/// warning: +/// this method will crash with fatalError if Purchases has not been initialized through +/// configure(withAPIKey:) or one of its overloads. If there’s a chance that may have not happened yet, +/// you can use isConfigured to check if it’s safe to call. +///

Related symbols

+///
    +///
  • +/// isConfigured +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RCPurchases * _Nonnull sharedPurchases;) ++ (RCPurchases * _Nonnull)sharedPurchases SWIFT_WARN_UNUSED_RESULT; +/// Returns true if RevenueCat has already been initialized through configure(withAPIKey:) +/// or one of is overloads. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL isConfigured;) ++ (BOOL)isConfigured SWIFT_WARN_UNUSED_RESULT; +/// Delegate for Purchases instance. The delegate is responsible for handling promotional product purchases and +/// changes to customer information. +@property (nonatomic, strong) id _Nullable delegate; +/// Enable automatic collection of Apple Search Ads attribution. Defaults to false. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL automaticAppleSearchAdsAttributionCollection;) ++ (BOOL)automaticAppleSearchAdsAttributionCollection SWIFT_WARN_UNUSED_RESULT; ++ (void)setAutomaticAppleSearchAdsAttributionCollection:(BOOL)value; +/// Used to set the log level. Useful for debugging issues with the lovely team @RevenueCat. +///

Related Symbols

+///
    +///
  • +/// logHandler +///
  • +///
  • +/// verboseLogHandler +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class) enum RCLogLevel logLevel;) ++ (enum RCLogLevel)logLevel SWIFT_WARN_UNUSED_RESULT; ++ (void)setLogLevel:(enum RCLogLevel)newValue; +/// Set this property to your proxy URL before configuring Purchases only if you’ve received a proxy key value +/// from your RevenueCat contact. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) NSURL * _Nullable proxyURL;) ++ (NSURL * _Nullable)proxyURL SWIFT_WARN_UNUSED_RESULT; ++ (void)setProxyURL:(NSURL * _Nullable)newValue; +/// Set this property to true only if you’re transitioning an existing Mac app from the Legacy +/// Mac App Store into the Universal Store, and you’ve configured your RevenueCat app accordingly. +/// Contact RevenueCat support before using this. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL forceUniversalAppStore;) ++ (BOOL)forceUniversalAppStore SWIFT_WARN_UNUSED_RESULT; ++ (void)setForceUniversalAppStore:(BOOL)newValue; +/// Set this property to true only when testing the ask-to-buy / SCA purchases flow. +/// More information available here. +///

Related Articles

+/// +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL simulatesAskToBuyInSandbox SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14) SWIFT_AVAILABILITY(ios,introduced=8.0);) ++ (BOOL)simulatesAskToBuyInSandbox SWIFT_WARN_UNUSED_RESULT; ++ (void)setSimulatesAskToBuyInSandbox:(BOOL)newValue; +/// Indicates whether the user is allowed to make payments. +/// More information on when this might be false here ++ (BOOL)canMakePayments SWIFT_WARN_UNUSED_RESULT; +/// Set a custom log handler for redirecting logs to your own logging system. +/// By default, this sends LogLevel/info, LogLevel/warn, and LogLevel/error messages. +/// If you wish to receive Debug level messages, set the log level to LogLevel/debug. +/// note: +/// verboseLogHandler provides additional information. +///

Related Symbols

+///
    +///
  • +/// verboseLogHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) void (^ _Nonnull logHandler)(enum RCLogLevel, NSString * _Nonnull);) ++ (void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull))logHandler SWIFT_WARN_UNUSED_RESULT; ++ (void)setLogHandler:(void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull))newValue; +/// Set a custom log handler for redirecting logs to your own logging system. +/// By default, this sends LogLevel/info, LogLevel/warn, and LogLevel/error messages. +/// If you wish to receive Debug level messages, set the log level to LogLevel/debug. +/// note: +/// you can use logHandler if you don’t need filename information. +///

Related Symbols

+///
    +///
  • +/// logHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) void (^ _Nonnull verboseLogHandler)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger);) ++ (void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger))verboseLogHandler SWIFT_WARN_UNUSED_RESULT; ++ (void)setVerboseLogHandler:(void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger))newValue; +/// Setting this to true adds additional information to the default log handler: +/// Filename, line, and method data. +/// You can also access that information for your own logging system by using verboseLogHandler. +///

Related Symbols

+///
    +///
  • +/// verboseLogHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL verboseLogs;) ++ (BOOL)verboseLogs SWIFT_WARN_UNUSED_RESULT; ++ (void)setVerboseLogs:(BOOL)newValue; +/// Current version of the Purchases framework. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull frameworkVersion;) ++ (NSString * _Nonnull)frameworkVersion SWIFT_WARN_UNUSED_RESULT; +/// Whether transactions should be finished automatically. true by default. +/// * - Warning: Setting this value to false will prevent the SDK from finishing transactions. +/// * In this case, you must finish transactions in your app, otherwise they will remain in the queue and +/// * will turn up every time the app is opened. +/// * More information on finishing transactions manually is available here. +@property (nonatomic) BOOL finishTransactions; +/// Automatically collect subscriber attributes associated with the device identifiers +///
    +///
  • +/// $idfa +///
  • +///
  • +/// $idfv +///
  • +///
  • +/// $ip +///
  • +///
+- (void)collectDeviceIdentifiers; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_PROTOCOL("_TtP10RevenueCat29PurchasesOrchestratorDelegate_") +@protocol PurchasesOrchestratorDelegate +- (void)shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))defermentBlock; +@end + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Called when a user initiates a promotional in-app purchase from the App Store. +/// If your app is able to handle a purchase at the current time, run the deferment block in this method. +/// If the app is not in a state to make a purchase: cache the defermentBlock, then call the defermentBlock +/// when the app is ready to make the promotional purchase. +/// If the purchase should never be made, you don’t need to ever call the defermentBlock and Purchases +/// will not proceed with promotional purchases. +/// \param product StoreProduct the product that was selected from the app store. +/// +- (void)shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))defermentBlock; +@end + + + +@class RCPlatformInfo; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) RCPlatformInfo * _Nullable platformInfo;) ++ (RCPlatformInfo * _Nullable)platformInfo SWIFT_WARN_UNUSED_RESULT; ++ (void)setPlatformInfo:(RCPlatformInfo * _Nullable)value; +@end + + +SWIFT_CLASS_NAMED("PlatformInfo") +@interface RCPlatformInfo : NSObject +- (nonnull instancetype)initWithFlavor:(NSString * _Nonnull)flavor version:(NSString * _Nonnull)version OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Enable debug logging. Useful for debugging issues with the lovely team @RevenueCat. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DEPRECATED_MSG("use Purchases.logLevel instead");) ++ (BOOL)debugLogsEnabled SWIFT_WARN_UNUSED_RESULT; ++ (void)setDebugLogsEnabled:(BOOL)newValue; +/// Deprecated +@property (nonatomic) BOOL allowSharingAppStoreAccount SWIFT_DEPRECATED_MSG("Configure behavior through the RevenueCat dashboard instead"); +/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns. +///

Related articles

+/// +/// \param data Dictionary provided by the network. +/// +/// \param network Enum for the network the data is coming from, see AttributionNetwork for supported +/// networks. +/// ++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network SWIFT_DEPRECATED_MSG("Use the set functions instead"); +/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns. +///

Related articles

+/// +/// \param data Dictionary provided by the network. +/// +/// \param network Enum for the network the data is coming from, see AttributionNetwork for supported +/// networks. +/// +/// \param networkUserId User Id that should be sent to the network. Default is the current App User Id. +/// ++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId SWIFT_DEPRECATED_MSG("Use the set functions instead"); +@end + +@class NSUserDefaults; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Configures an instance of the Purchases SDK with a specified API key. +/// The instance will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// note: +/// Use this initializer if your app does not have an account system. +/// Purchases will generate a unique identifier for the current device and persist it to NSUserDefaults. +/// This also affects the behavior of Purchases/restorePurchases(completion:). +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey; +/// Configures an instance of the Purchases SDK with a specified API key and app user ID. +/// The instance will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// note: +/// Best practice is to use a salted hash of your unique app user ids. +/// warning: +/// Use this initializer if you have your own user identifiers that you manage. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID; +/// Configures an instance of the Purchases SDK with a custom UserDefaults. +/// Use this constructor if you want to +/// sync status across a shared container, such as between a host app and an extension. The instance of the +/// Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode; +/// Configures an instance of the Purchases SDK with a custom UserDefaults. +/// Use this constructor if you want to +/// sync status across a shared container, such as between a host app and an extension. The instance of the +/// Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults; +/// Configures an instance of the Purchases SDK with a custom userDefaults. +/// Use this constructor if you want to sync status across a shared container, +/// such as between a host app and an extension. +/// The instance of the Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// important: +/// Support for purchases using StoreKit 2 is currently in an experimental phase. +/// We recommend setting this value to false (default) for production apps. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// \param useStoreKit2IfAvailable EXPERIMENTAL. opt in to using StoreKit 2 on devices that support it. +/// Purchases will be made using StoreKit 2 under the hood automatically. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable; +/// Configures an instance of the Purchases SDK with a custom userDefaults. +/// Use this constructor if you want to sync status across a shared container, +/// such as between a host app and an extension. +/// The instance of the Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// important: +/// Support for purchases using StoreKit 2 is currently in an experimental phase. +/// We recommend setting this value to false (default) for production apps. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// \param dangerousSettings Only use if suggested by RevenueCat support team. +/// +/// \param useStoreKit2IfAvailable EXPERIMENTAL. opt in to using StoreKit 2 on devices that support it. +/// Purchases will be made using StoreKit 2 under the hood automatically. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable dangerousSettings:(RCDangerousSettings * _Nullable)dangerousSettings; +@end + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +///
    +///
  • +/// The appUserID used by Purchases. +///
  • +///
  • +/// If not passed on initialization this will be generated and cached by Purchases. +///
  • +///
+@property (nonatomic, readonly, copy) NSString * _Nonnull appUserID; +/// Returns true if the appUserID has been generated by RevenueCat, false otherwise. +@property (nonatomic, readonly) BOOL isAnonymous; +/// This function will log in the current user with an appUserID. +/// The completion block will be called with the latest CustomerInfo and a Bool specifying +/// whether the user was created for the first time in the RevenueCat backend. +/// RevenueCat provides a source of truth for a subscriber’s status across different platforms. +/// To do this, each subscriber has an App User ID that uniquely identifies them within your application. +/// User identity is one of the most important components of many mobile applications, +/// and it’s extra important to make sure the subscription status RevenueCat is +/// tracking gets associated with the correct user. +/// The Purchases SDK allows you to specify your own user identifiers or use anonymous identifiers +/// generated by RevenueCat. Some apps will use a combination +/// of their own identifiers and RevenueCat anonymous Ids - that’s okay! +///

Related Articles

+///
    +///
  • +/// Identifying Users +///
  • +///
  • +/// logOut(completion:) +///
  • +///
  • +/// isAnonymous +///
  • +///
  • +/// Purchases/appUserID +///
  • +///
+/// \param appUserID The appUserID that should be linked to the current user. +/// +- (void)logIn:(NSString * _Nonnull)appUserID completion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, BOOL, NSError * _Nullable))completion; +/// Logs out the Purchases client, clearing the saved appUserID. +/// This will generate a random user id and save it in the cache. +/// If this method is called and the current user is anonymous, it will return an error. +///

Related Articles

+///
    +///
  • +/// Identifying Users +///
  • +///
  • +/// logIn(_:completion:) +///
  • +///
  • +/// isAnonymous +///
  • +///
  • +/// Purchases/appUserID +///
  • +///
+- (void)logOutWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Fetch the configured Offerings for this user. +/// \code +/// *``Offerings`` allows you to configure your in-app products +/// +/// \endcodevia RevenueCat and greatly simplifies management. +/// Offerings will be fetched and cached on instantiation so that, by the time they are needed, +/// your prices are loaded for your purchase flow. Time is money. +///

Related Articles

+/// +/// \param completion A completion block called when offerings are available. +/// Called immediately if offerings are cached. Offerings will be nil if an error occurred. +/// +- (void)getOfferingsWithCompletion:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion; +@end + + + +@class NSData; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Subscriber attributes are useful for storing additional, structured information on a user. +/// Since attributes are writable using a public key they should not be used for +/// managing secure or sensitive information such as subscription status, coins, etc. +/// Key names starting with “$” are reserved names used by RevenueCat. For a full list of key +/// restrictions refer to our guide +/// \param attributes Map of attributes by key. Set the value as an empty string to delete an attribute. +/// +- (void)setAttributes:(NSDictionary * _Nonnull)attributes; +/// Subscriber attribute associated with the email address for the user. +///

Related Articles

+/// +/// \param email Empty String or nil will delete the subscriber attribute. +/// +- (void)setEmail:(NSString * _Nullable)email; +/// Subscriber attribute associated with the phone number for the user. +///

Related Articles

+/// +/// \param phoneNumber Empty String or nil will delete the subscriber attribute. +/// +- (void)setPhoneNumber:(NSString * _Nullable)phoneNumber; +/// Subscriber attribute associated with the display name for the user. +///

Related Articles

+/// +/// \param displayName Empty String or nil will delete the subscriber attribute. +/// +- (void)setDisplayName:(NSString * _Nullable)displayName; +/// Subscriber attribute associated with the push token for the user. +///

Related Articles

+/// +/// \param pushToken nil will delete the subscriber attribute. +/// +- (void)setPushToken:(NSData * _Nullable)pushToken; +/// Subscriber attribute associated with the Adjust Id for the user. +/// Required for the RevenueCat Adjust integration. +///

Related Articles

+/// +- (void)setAdjustID:(NSString * _Nullable)adjustID; +/// Subscriber attribute associated with the Appsflyer Id for the user. +/// Required for the RevenueCat Appsflyer integration. +///

Related Articles

+/// +- (void)setAppsflyerID:(NSString * _Nullable)appsflyerID; +/// Subscriber attribute associated with the Facebook SDK Anonymous Id for the user. +/// Recommended for the RevenueCat Facebook integration. +///

Related Articles

+/// +- (void)setFBAnonymousID:(NSString * _Nullable)fbAnonymousID; +/// Subscriber attribute associated with the mParticle Id for the user. +/// Recommended for the RevenueCat mParticle integration. +///

Related Articles

+/// +- (void)setMparticleID:(NSString * _Nullable)mparticleID; +/// Subscriber attribute associated with the OneSignal Player ID for the user. +/// Required for the RevenueCat OneSignal integration. +///

Related Articles

+/// +- (void)setOnesignalID:(NSString * _Nullable)onesignalID; +/// Subscriber attribute associated with the Airship Channel ID for the user. +/// Required for the RevenueCat Airship integration. +///

Related Articles

+/// +- (void)setAirshipChannelID:(NSString * _Nullable)airshipChannelID; +/// Subscriber attribute associated with the CleverTap ID for the user. +/// Required for the RevenueCat CleverTap integration. +///

Related Articles

+/// +- (void)setCleverTapID:(NSString * _Nullable)cleverTapID; +/// Subscriber attribute associated with the install media source for the user. +///

Related Articles

+/// +/// \param mediaSource Empty String or nil will delete the subscriber attribute. +/// +- (void)setMediaSource:(NSString * _Nullable)mediaSource; +/// Subscriber attribute associated with the install campaign for the user. +///

Related Articles

+/// +/// \param campaign Empty String or nil will delete the subscriber attribute. +/// +- (void)setCampaign:(NSString * _Nullable)campaign; +/// Subscriber attribute associated with the install ad group for the user +///

Related Articles

+/// +/// \param adGroup Empty String or nil will delete the subscriber attribute. +/// +- (void)setAdGroup:(NSString * _Nullable)adGroup; +/// Subscriber attribute associated with the install ad for the user +///

Related Articles

+/// +/// \param installAd Empty String or nil will delete the subscriber attribute. +/// +- (void)setAd:(NSString * _Nullable)installAd; +/// Subscriber attribute associated with the install keyword for the user +///

Related Articles

+/// +/// \param keyword Empty String or nil will delete the subscriber attribute. +/// +- (void)setKeyword:(NSString * _Nullable)keyword; +/// Subscriber attribute associated with the install ad creative for the user. +///

Related Articles

+/// +/// \param creative Empty String or nil will delete the subscriber attribute. +/// +- (void)setCreative:(NSString * _Nullable)creative; +@end + +@class SKPaymentDiscount; +@class SKProductDiscount; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// This method will post all purchases associated with the current App Store account to RevenueCat and become +/// associated with the current appUserID. If the receipt is being used by an existing user, the current +/// appUserID will be aliased together with the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// You shouldn’t use this method if you have your own account system. In that case “restoration” is provided +/// by your app passing the same appUserId used to purchase originally. +/// note: +/// This may force your users to enter the App Store password so should only be performed on request of +/// the user. Typically with a button in settings or near your purchase UI. Use +/// Purchases/syncPurchases(completion:) if you need to restore transactions programmatically. +- (void)restoreTransactionsWithCompletionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'"); +/// Get latest available purchaser info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if info is cached. Customer info can be nil if an error occurred. +/// +- (void)customerInfoWithCompletion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'"); +/// Get latest available purchaser info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if info is cached. Customer info can be nil if an error occurred. +/// +- (void)purchaserInfoWithCompletionBlock:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'"); +/// Fetches the SKProducts for your IAPs for given productIdentifiers. +/// Use this method if you aren’t using -offeringsWithCompletionBlock:. +/// You should use offerings though. +/// note: +/// completion may be called without SKProducts that you are expecting. +/// This is usually caused by iTunesConnect configuration errors. +/// Ensure your IAPs have the “Ready to Submit” status in iTunesConnect. +/// Also ensure that you have an active developer program subscription and you have +/// signed the latest paid application agreements. +/// If you’re having trouble see: https://www.revenuecat.com/2018/10/11/configuring-in-app-products-is-hard +/// \param productIdentifiers A set of product identifiers for in app purchases setup via iTunesConnect. +/// This should be either hard coded in your application, from a file, or from +/// a custom endpoint if you want to be able to deploy new IAPs without an app update. +/// +/// \param completion An @escaping callback that is called with the loaded products. +/// If the fetch fails for any reason it will return an empty array. +/// +- (void)productsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completionBlock:(void (^ _Nonnull)(NSArray * _Nonnull))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'"); +/// Fetch the configured offerings for this users. +/// Offerings allows you to configure your in-app products via RevenueCat and greatly simplifies management. +/// Offerings will be fetched and cached on instantiation so that, by the time they are needed, +/// your prices are loaded for your purchase flow. Time is money. +///

Related Articles

+/// +/// \param completion A completion block called when offerings are available. +/// Called immediately if offerings are cached. Offerings will be nil if an error occurred. +/// +- (void)offeringsWithCompletionBlock:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'"); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withCompletionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'"); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(watchos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(tvos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(ios,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'"); +/// Use this function if you are not using the Offerings system to purchase an SKProduct. +/// If you are using the Offerings system, use -[RCPurchases purchasePackage:withCompletionBlock] instead. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param product The SKProduct the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchaseProduct:(SKProduct * _Nonnull)product withCompletionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'"); +/// Use this function if you are not using the Offerings system to purchase an SKProduct. +/// If you are using the Offerings system, use -[RCPurchases purchasePackage:withCompletionBlock] instead. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param product The SKProduct the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchaseProduct:(SKProduct * _Nonnull)product withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(watchos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(tvos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(ios,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'"); +- (void)invalidatePurchaserInfoCache SWIFT_AVAILABILITY(macos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'"); +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers use instead, +/// use Purchases/checkPromotionalDiscountEligibility(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibilty, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +/// \param productIdentifiers Array of product identifiers for which you want to compute eligibility +/// +/// \param completion A block that receives a dictionary of product_id -> IntroEligibility. +/// +- (void)checkTrialOrIntroductoryPriceEligibility:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSDictionary * _Nonnull))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'"); +/// Use this function to retrieve the SKPaymentDiscount for a given SKProduct. +/// \param discount The SKProductDiscount to apply to the product. +/// +/// \param product The SKProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the SKPaymentDiscount is returned. +/// If it was not successful, there will be an Error. +/// +- (void)paymentDiscountForProductDiscount:(SKProductDiscount * _Nonnull)discount product:(SKProduct * _Nonnull)product completion:(void (^ _Nonnull)(SKPaymentDiscount * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(watchos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(tvos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(ios,unavailable,message="Check eligibility for a discount using getPromotionalOffer:"); +/// This function will alias two appUserIDs together. +/// \param alias The new appUserID that should be linked to the currently identified appUserID +/// +/// \param completion An optional completion block called when the aliasing has been successful. +/// This completion block will receive an error if there’s been one. +/// +- (void)createAlias:(NSString * _Nonnull)alias completionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'createAlias' has been renamed to 'logIn'"); +/// This function will identify the current user with an appUserID. Typically this would be used after a +/// logout to identify a new user without calling configure. +/// \param appUserID The appUserID that should be linked to the current user. +/// +/// \param completion An optional completion block called when the identify call has completed. +/// This completion block will receive an error if there’s been one. +/// +- (void)identify:(NSString * _Nonnull)appUserID completionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'identify' has been renamed to 'logIn'"); +/// Resets the Purchases client clearing the saved appUserID. +/// This will generate a random user id and save it in the cache. +- (void)resetWithCompletionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'"); +@end + +@class RCStoreProductDiscount; +enum RCRefundRequestStatus : NSInteger; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Get latest available customer info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if CustomerInfo is cached. Customer info can be nil if an error occurred. +/// +- (void)getCustomerInfoWithCompletion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Fetches the StoreProducts for your IAPs for given productIdentifiers. +/// Use this method if you aren’t using getOfferings(completion:). +/// You should use getOfferings(completion:) though. +/// note: +/// completion may be called without StoreProducts that you are expecting. This is usually caused by +/// iTunesConnect configuration errors. Ensure your IAPs have the “Ready to Submit” status in iTunesConnect. +/// Also ensure that you have an active developer program subscription and you have signed the latest paid +/// application agreements. +/// If you’re having trouble, see: +/// App Store Connect In-App Purchase Configuration +/// \param productIdentifiers A set of product identifiers for in-app purchases setup via +/// AppStoreConnect +/// This should be either hard coded in your application, from a file, or from a custom endpoint if you want +/// to be able to deploy new IAPs without an app update. +/// +/// \param completion An @escaping callback that is called with the loaded products. +/// If the fetch fails for any reason it will return an empty array. +/// +- (void)getProductsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSArray * _Nonnull))completion; +/// Initiates a purchase of a StoreProduct. +/// Use this function if you are not using the Offerings system to purchase a StoreProduct. +/// If you are using the Offerings system, use Purchases/purchase(package:completion:) instead. +/// important: +/// Call this method when a user has decided to purchase a product. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will +/// handle this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be true. +/// \param product The StoreProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchaseProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; +/// Initiates a purchase of a Package. +/// important: +/// Call this method when a user has decided to purchase a product. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will +/// handle this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; +/// Initiates a purchase of a StoreProduct with a PromotionalOffer. +/// Use this function if you are not using the Offerings system to purchase a StoreProduct with an +/// applied PromotionalOffer. +/// If you are using the Offerings system, use Purchases/purchase(package:promotionalOffer:completion:) instead. +/// important: +/// Call this method when a user has decided to purchase a product with an applied discount. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will handle +/// this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/discounts +///
  • +///
  • +/// StoreProduct/getEligiblePromotionalOffers() +///
  • +///
  • +/// getPromotionalOffer(forProductDiscount:product:) +///
  • +///
+/// \param product The StoreProduct the user intends to purchase. +/// +/// \param promotionalOffer The PromotionalOffer to apply to the purchase. +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchaseProduct:(RCStoreProduct * _Nonnull)product withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product with an applied discount. Only call this in +/// direct response to user input. From here Purchases will handle the purchase with StoreKit and call the +/// PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will handle +/// this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +/// \param package The Package the user intends to purchase +/// +/// \param promotionalOffer The PromotionalOffer to apply to the purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// This method will post all purchases associated with the current App Store account to RevenueCat and +/// become associated with the current appUserID. +/// If the receipt is being used by an existing user, the current appUserID will be aliased together with +/// the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// warning: +/// This function should only be called if you’re not calling any purchase method. +/// note: +/// This method will not trigger a login prompt from App Store. However, if the receipt currently +/// on the device does not contain subscriptions, but the user has made subscription purchases, this method +/// won’t be able to restore them. Use restorePurchases(completion:) to cover those cases. +- (void)syncPurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// This method will post all purchases associated with the current App Store account to RevenueCat and become +/// associated with the current appUserID. If the receipt is being used by an existing user, the current +/// appUserID will be aliased together with the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// You shouldn’t use this method if you have your own account system. In that case “restoration” is provided +/// by your app passing the same appUserID used to purchase originally. +/// note: +/// This may force your users to enter the App Store password so should only be performed on request of +/// the user. Typically with a button in settings or near your purchase UI. Use +/// Purchases/syncPurchases(completion:) if you need to restore transactions programmatically. +- (void)restorePurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers instead, +/// use Purchases/getPromotionalOffer(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibility, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +///

Related symbols

+///
    +///
  • +/// checkTrialOrIntroDiscountEligibility(product:completion:) +///
  • +///
+/// \param productIdentifiers Array of product identifiers for which you want to compute eligibility +/// +/// \param completion A block that receives a dictionary of product_id -> IntroEligibility. +/// +- (void)checkTrialOrIntroDiscountEligibility:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSDictionary * _Nonnull))completion; +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers instead, +/// use Purchases/getPromotionalOffer(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibility, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +///

Related symbols

+///
    +///
  • +/// checkTrialOrIntroDiscountEligibility(productIdentifiers:completion:) +///
  • +///
+/// \param product The StoreProduct for which you want to compute eligibility. +/// +/// \param completion A block that receives an IntroEligibilityStatus. +/// +- (void)checkTrialOrIntroDiscountEligibilityForProduct:(RCStoreProduct * _Nonnull)product completion:(void (^ _Nonnull)(enum RCIntroEligibilityStatus))completion; +/// Invalidates the cache for customer information. +/// Most apps will not need to use this method; invalidating the cache can leave your app in an invalid state. +/// Refer to +/// Get User Information +/// for more information on using the cache properly. +/// This is useful for cases where customer information might have been updated outside of the app, like if a +/// promotional subscription is granted through the RevenueCat dashboard. +- (void)invalidateCustomerInfoCache; +/// Displays a sheet that enables users to redeem subscription offer codes that you generated in App Store Connect. +- (void)presentCodeRedemptionSheet SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(ios,introduced=14.0); +/// Use this method to fetch PromotionalOffer +/// to use in purchase(package:promotionalOffer:) or purchase(product:promotionalOffer:). +/// iOS Promotional Offers. +/// note: +/// If you’re looking to use free trials or Introductory Offers instead, +/// use Purchases/checkTrialOrIntroDiscountEligibility(productIdentifiers:completion:). +/// \param discount The StoreProductDiscount to apply to the product. +/// +/// \param product The StoreProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the PromotionalOffer is returned. +/// If it was not successful, there will be an Error. +/// +- (void)getPromotionalOfferForProductDiscount:(RCStoreProductDiscount * _Nonnull)discount withProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCPromotionalOffer * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// Use this function to open the manage subscriptions page. +/// If the manage subscriptions page can’t be opened, the CustomerInfo/managementURL in +/// the CustomerInfo will be opened. If CustomerInfo/managementURL is not available, +/// the App Store’s subscription management section will be opened. +/// The completion block will be called when the modal is opened, not when it’s actually closed. +/// This is because of an undocumented change in StoreKit’s behavior between iOS 15.0 and 15.2, +/// where 15.0 would return when the modal was closed, +/// and 15.2 returns when the modal is opened. +/// \param completion A completion block that is called when the modal is closed. +/// If it was not successful, there will be an Error. +/// +- (void)showManageSubscriptionsWithCompletion:(void (^ _Nonnull)(NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the productID +/// \param productID The productID to begin a refund request for. +/// If the request was successful, there will be a RefundRequestStatus. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +/// +/// +/// throws: +/// If the request was unsuccessful, there will be an Error and RefundRequestStatus.error. +- (void)beginRefundRequestForProduct:(NSString * _Nonnull)productID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the entitlement ID. +/// \param entitlementID The entitlementID to begin a refund request for. +/// +/// +/// throws: +/// If the request was unsuccessful or the entitlement could not be found, an Error will be thrown. +/// +/// returns: +/// RefundRequestStatus: The status of the refund request. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +- (void)beginRefundRequestForEntitlement:(NSString * _Nonnull)entitlementID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the active entitlement. +/// +/// returns: +/// RefundRequestStatus: The status of the refund request. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +/// *- throws: If the request was unsuccessful, no active entitlements could be found for the user, +/// or multiple active entitlements were found for the user, an Error will be thrown. +/// *- important: This method should only be used if your user can only +/// have a single active entitlement at a given time. +/// If a user could have more than one entitlement at a time, use beginRefundRequest(forEntitlement:) instead. +- (void)beginRefundRequestForActiveEntitlementWithCompletion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +@end + + +/// Delegate for Purchases responsible for handling updating your app’s state in response to updated customer info +/// or promotional product purchases. +/// note: +/// Delegate methods can be called at any time after the delegate is set, not just in response to +/// customerInfo: calls. Ensure your app is capable of handling these calls at anytime if delegate is set. +SWIFT_PROTOCOL_NAMED("PurchasesDelegate") +@protocol RCPurchasesDelegate +@optional +/// note: +/// Deprecated, use purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) or +/// objc: purchases:receivedUpdatedCustomerInfo: +- (void)purchases:(RCPurchases * _Nonnull)purchases didReceiveUpdatedPurchaserInfo:(RCCustomerInfo * _Nonnull)purchaserInfo SWIFT_AVAILABILITY(watchos,obsoleted=1) SWIFT_AVAILABILITY(tvos,obsoleted=1) SWIFT_AVAILABILITY(macos,obsoleted=1) SWIFT_AVAILABILITY(ios,obsoleted=1); +/// Called whenever Purchases receives updated customer info. This may happen periodically +/// throughout the life of the app if new information becomes available (e.g. UIApplicationDidBecomeActive).* +/// \param purchases Related Purchases object +/// +/// \param customerInfo Updated CustomerInfo +/// +- (void)purchases:(RCPurchases * _Nonnull)purchases receivedUpdatedCustomerInfo:(RCCustomerInfo * _Nonnull)customerInfo; +/// Called when a user initiates a promotional in-app purchase from the App Store. +/// If your app is able to handle a purchase at the current time, run the deferment block in this method. +/// If the app is not in a state to make a purchase: cache the defermentBlock, +/// then call the defermentBlock when the app is ready to make the promotional purchase. +/// If the purchase should never be made, you don’t need to ever call the defermentBlock and +/// Purchases will not proceed with promotional purchases. +/// \param product StoreProduct the product that was selected from the app store +/// +- (void)purchases:(RCPurchases * _Nonnull)purchases shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))makeDeferredPurchase; +@end + + + +SWIFT_CLASS("_TtC10RevenueCat21RCPurchasesErrorUtils") SWIFT_AVAILABILITY(macos,obsoleted=1) SWIFT_AVAILABILITY(watchos,obsoleted=1) SWIFT_AVAILABILITY(tvos,obsoleted=1) SWIFT_AVAILABILITY(ios,obsoleted=1) +@interface RCPurchasesErrorUtils : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// Status codes for refund requests. +typedef SWIFT_ENUM_NAMED(NSInteger, RCRefundRequestStatus, "RefundRequestStatus", open) { +/// User canceled submission of the refund request. + RCRefundRequestUserCancelled SWIFT_COMPILE_NAME("userCancelled") = 0, +/// Apple has received the refund request. + RCRefundRequestSuccess SWIFT_COMPILE_NAME("success") = 1, +/// There was an error with the request. See message for more details. + RCRefundRequestError SWIFT_COMPILE_NAME("error") = 2, +}; + + + +/// Enum of supported stores +typedef SWIFT_ENUM_NAMED(NSInteger, RCStore, "Store", open) { +/// For entitlements granted via Apple App Store. + RCAppStore SWIFT_COMPILE_NAME("appStore") = 0, +/// For entitlements granted via Apple Mac App Store. + RCMacAppStore SWIFT_COMPILE_NAME("macAppStore") = 1, +/// For entitlements granted via Google Play Store. + RCPlayStore SWIFT_COMPILE_NAME("playStore") = 2, +/// For entitlements granted via Stripe. + RCStripe SWIFT_COMPILE_NAME("stripe") = 3, +/// For entitlements granted via a promo in RevenueCat. + RCPromotional SWIFT_COMPILE_NAME("promotional") = 4, +/// For entitlements granted via an unknown store. + RCUnknownStore SWIFT_COMPILE_NAME("unknownStore") = 5, +}; + + +SWIFT_CLASS("_TtC10RevenueCat22StoreKitRequestFetcher") +@interface StoreKitRequestFetcher : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface StoreKitRequestFetcher (SWIFT_EXTENSION(RevenueCat)) +- (void)requestDidFinish:(SKRequest * _Nonnull)request; +- (void)request:(SKRequest * _Nonnull)request didFailWithError:(NSError * _Nonnull)error; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15StoreKitWrapper") +@interface StoreKitWrapper : NSObject +- (nonnull instancetype)init; +@end + +@class SKPaymentQueue; +@class SKPaymentTransaction; +@class SKPayment; + +@interface StoreKitWrapper (SWIFT_EXTENSION(RevenueCat)) +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue updatedTransactions:(NSArray * _Nonnull)transactions; +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue removedTransactions:(NSArray * _Nonnull)transactions; +- (BOOL)paymentQueue:(SKPaymentQueue * _Nonnull)queue shouldAddStorePayment:(SKPayment * _Nonnull)payment forProduct:(SKProduct * _Nonnull)product SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(watchos,unavailable); +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue didRevokeEntitlementsForProductIdentifiers:(NSArray * _Nonnull)productIdentifiers SWIFT_AVAILABILITY(watchos,introduced=7.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0); +@end + +enum RCStoreProductType : NSInteger; +enum RCStoreProductCategory : NSInteger; +@class NSNumberFormatter; +@class RCSubscriptionPeriod; + +/// Type that provides access to all of StoreKit‘s product type’s properties. +SWIFT_CLASS_NAMED("StoreProduct") +@interface RCStoreProduct : NSObject +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +@property (nonatomic, readonly) enum RCStoreProductType productType; +@property (nonatomic, readonly) enum RCStoreProductCategory productCategory; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedDescription; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedTitle; +@property (nonatomic, readonly, copy) NSString * _Nullable currencyCode; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +@property (nonatomic, readonly) BOOL isFamilyShareable SWIFT_AVAILABILITY(watchos,introduced=8.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0); +@property (nonatomic, readonly, copy) NSString * _Nullable subscriptionGroupIdentifier SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14) SWIFT_AVAILABILITY(tvos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=12.0); +@property (nonatomic, readonly, strong) NSNumberFormatter * _Nullable priceFormatter; +@property (nonatomic, readonly, strong) RCSubscriptionPeriod * _Nullable subscriptionPeriod SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +@property (nonatomic, readonly, strong) RCStoreProductDiscount * _Nullable introductoryDiscount SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +@property (nonatomic, readonly, copy) NSArray * _Nonnull discounts SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +@end + +/// The category of a product, whether a subscription or a one-time purchase. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/ProductType-swift.enum +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductCategory, "ProductCategory", open) { +/// A non-renewable or auto-renewable subscription. + RCStoreProductCategorySubscription = 0, +/// A consumable or non-consumable in-app purchase. + RCStoreProductCategoryNonSubscription = 1, +}; + +/// The type of product, equivalent to StoreKit’s Product.ProductType. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/ProductCategory-swift.enum +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { +/// A consumable in-app purchase. + RCStoreProductTypeConsumable = 0, +/// A non-consumable in-app purchase. + RCStoreProductTypeNonConsumable = 1, +/// A non-renewing subscription. + RCStoreProductTypeNonRenewableSubscription = 2, +/// An auto-renewable subscription. + RCStoreProductTypeAutoRenewableSubscription = 3, +}; + +@class NSLocale; + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +/// The object containing introductory price information for the product. +@property (nonatomic, readonly, strong) SKProductDiscount * _Nullable introductoryPrice SWIFT_AVAILABILITY(macos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(watchos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(tvos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(ios,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead"); +/// The locale used to format the price of the product. +@property (nonatomic, readonly, copy) NSLocale * _Nonnull priceLocale SWIFT_AVAILABILITY(macos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(watchos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(tvos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(ios,unavailable,message="Use localizedPriceString instead"); +@end + + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product; +/// Returns the SKProduct if this StoreProduct represents a StoreKit.SKProduct. +@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product; +@end + +@class NSDecimalNumber; + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +/// The decimal representation of the cost of the product, in local currency. +/// For a string representation of the price to display to customers, use localizedPriceString. +/// note: +/// this is meant for Objective-C. For Swift, use price instead. +/// seealso: +/// pricePerMonth. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nonnull price; +/// Calculates the price of this subscription product per month. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerMonth SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// The price of the introductoryPrice formatted using priceFormatter. +/// +/// returns: +/// nil if there is no introductoryPrice. +@property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString; +@end + +enum RCPaymentMode : NSInteger; +enum RCDiscountType : NSInteger; + +/// Type that wraps StoreKit.Product.SubscriptionOffer and SKProductDiscount +/// and provides access to their properties. +/// Information about a subscription offer that you configured in App Store Connect. +SWIFT_CLASS_NAMED("StoreProductDiscount") +@interface RCStoreProductDiscount : NSObject +@property (nonatomic, readonly, copy) NSString * _Nullable offerIdentifier; +@property (nonatomic, readonly, copy) NSString * _Nullable currencyCode; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +@property (nonatomic, readonly) enum RCPaymentMode paymentMode; +@property (nonatomic, readonly, strong) RCSubscriptionPeriod * _Nonnull subscriptionPeriod; +@property (nonatomic, readonly) enum RCDiscountType type; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// The payment mode for a StoreProductDiscount +/// Indicates how the product discount price is charged. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPaymentMode, "PaymentMode", open) { +/// Price is charged one or more times + RCPaymentModePayAsYouGo = 0, +/// Price is charged once in advance + RCPaymentModePayUpFront = 1, +/// No initial charge + RCPaymentModeFreeTrial = 2, +}; + +/// The discount type for a StoreProductDiscount +/// Wraps SKProductDiscount.Type if this StoreProductDiscount represents a SKProductDiscount. +/// Wraps Product.SubscriptionOffer.OfferType if this StoreProductDiscount represents +/// a Product.SubscriptionOffer. +typedef SWIFT_ENUM_NAMED(NSInteger, RCDiscountType, "DiscountType", open) { +/// Introductory offer + RCDiscountTypeIntroductory = 0, +/// Promotional offer for subscriptions + RCDiscountTypePromotional = 1, +}; + + + +@interface RCStoreProductDiscount (SWIFT_EXTENSION(RevenueCat)) +/// The discount price of the product in the local currency. +/// note: +/// this is meant for Objective-C. For Swift, use price instead. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nonnull price; +@end + + + + +@interface RCStoreProductDiscount (SWIFT_EXTENSION(RevenueCat)) +/// Returns the SK1ProductDiscount if this StoreProductDiscount represents a SKProductDiscount. +@property (nonatomic, readonly, strong) SKProductDiscount * _Nullable sk1Discount SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +@end + + +/// Abstract class that provides access to all of StoreKit’s product type’s properties. +SWIFT_CLASS_NAMED("StoreTransaction") +@interface RCStoreTransaction : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +@property (nonatomic, readonly, copy) NSDate * _Nonnull purchaseDate; +@property (nonatomic, readonly, copy) NSString * _Nonnull transactionIdentifier; +@property (nonatomic, readonly) NSInteger quantity; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCStoreTransaction (SWIFT_EXTENSION(RevenueCat)) +@property (nonatomic, readonly, copy) NSString * _Nonnull productId SWIFT_AVAILABILITY(macos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'"); +@property (nonatomic, readonly, copy) NSString * _Nonnull revenueCatId SWIFT_AVAILABILITY(macos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'"); +@end + + +@interface RCStoreTransaction (SWIFT_EXTENSION(RevenueCat)) +/// Returns the SKPaymentTransaction if this StoreTransaction represents a SKPaymentTransaction. +@property (nonatomic, readonly, strong) SKPaymentTransaction * _Nullable sk1Transaction; +@end + +enum RCSubscriptionPeriodUnit : NSInteger; + +/// The duration of time between subscription renewals. +/// Use the value and the unit together to determine the subscription period. +/// For example, if the unit is .month, and the value is 3, the subscription period is three months. +SWIFT_CLASS_NAMED("SubscriptionPeriod") +@interface RCSubscriptionPeriod : NSObject +/// The number of period units. +@property (nonatomic, readonly) NSInteger value; +/// The increment of time that a subscription period is specified in. +@property (nonatomic, readonly) enum RCSubscriptionPeriodUnit unit; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Units of time used to describe subscription periods. +typedef SWIFT_ENUM_NAMED(NSInteger, RCSubscriptionPeriodUnit, "Unit", open) { +/// A subscription period unit of a day. + RCSubscriptionPeriodUnitDay = 0, +/// A subscription period unit of a week. + RCSubscriptionPeriodUnitWeek = 1, +/// A subscription period unit of a month. + RCSubscriptionPeriodUnitMonth = 2, +/// A subscription period unit of a year. + RCSubscriptionPeriodUnitYear = 3, +}; + + + +@interface RCSubscriptionPeriod (SWIFT_EXTENSION(RevenueCat)) +@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; +@end + + +@interface RCSubscriptionPeriod (SWIFT_EXTENSION(RevenueCat)) +/// The number of units per subscription period +@property (nonatomic, readonly) NSInteger numberOfUnits SWIFT_AVAILABILITY(macos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(watchos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(tvos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(ios,unavailable,message="'numberOfUnits' has been renamed to 'value'"); +@end + + + +SWIFT_CLASS("_TtC10RevenueCat20TrackingManagerProxy") +@interface TrackingManagerProxy : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull authorizationStatusPropertyName; +- (NSInteger)trackingAuthorizationStatus SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS_NAMED("Transaction") SWIFT_AVAILABILITY(macos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") +@interface RCTransaction : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop +#endif + +#else +// Generated by Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +#ifndef REVENUECAT_SWIFT_H +#define REVENUECAT_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +#else +# define SWIFT_RELEASES_ARGUMENT +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#if __has_feature(modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import Foundation; +@import ObjectiveC; +@import StoreKit; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RevenueCat",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +/// Enum of supported attribution networks +typedef SWIFT_ENUM_NAMED(NSInteger, RCAttributionNetwork, "AttributionNetwork", open) { +/// Apple’s search ads + RCAttributionNetworkAppleSearchAds = 0, +/// Adjust https://www.adjust.com/ + RCAttributionNetworkAdjust = 1, +/// AppsFlyer https://www.appsflyer.com/ + RCAttributionNetworkAppsFlyer = 2, +/// Branch https://www.branch.io/ + RCAttributionNetworkBranch = 3, +/// Tenjin https://www.tenjin.io/ + RCAttributionNetworkTenjin = 4, +/// Facebook https://developers.facebook.com/ + RCAttributionNetworkFacebook = 5, +/// mParticle https://www.mparticle.com/ + RCAttributionNetworkMParticle = 6, +}; + +@class NSNumber; + +SWIFT_CLASS("_TtC10RevenueCat16NetworkOperation") +@interface NetworkOperation : NSOperation +@property (nonatomic, readonly, getter=isExecuting) BOOL executing; +@property (nonatomic, readonly, getter=isFinished) BOOL finished; +@property (nonatomic, readonly, getter=isCancelled) BOOL cancelled; +- (void)main; +- (void)cancel; +@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_CLASS("_TtC10RevenueCat25CacheableNetworkOperation") +@interface CacheableNetworkOperation : NetworkOperation +@end + + +SWIFT_CLASS("_TtC10RevenueCat20CreateAliasOperation") +@interface CreateAliasOperation : CacheableNetworkOperation +@end + + + +@class RCEntitlementInfos; +@class NSString; +@class NSDate; +@class RCStoreTransaction; +@class NSURL; + +/// A container for the most recent customer info returned from Purchases. +/// These objects are non-mutable and do not update automatically. +SWIFT_CLASS_NAMED("CustomerInfo") +@interface RCCustomerInfo : NSObject +/// EntitlementInfos attached to this customer info. +@property (nonatomic, readonly, strong) RCEntitlementInfos * _Nonnull entitlements; +/// All subscription product identifiers with expiration dates in the future. +@property (nonatomic, readonly, copy) NSSet * _Nonnull activeSubscriptions; +/// All product identifiers purchases by the user regardless of expiration. +@property (nonatomic, readonly, copy) NSSet * _Nonnull allPurchasedProductIdentifiers; +/// Returns the latest expiration date of all products, nil if there are none. +@property (nonatomic, readonly, copy) NSDate * _Nullable latestExpirationDate; +/// Returns all product IDs of the non-subscription purchases a user has made. +@property (nonatomic, readonly, copy) NSSet * _Nonnull nonConsumablePurchases SWIFT_DEPRECATED_MSG("use nonSubscriptionTransactions"); +/// Returns all the non-subscription purchases a user has made. +/// The purchases are ordered by purchase date in ascending order. +@property (nonatomic, readonly, copy) NSArray * _Nonnull nonSubscriptionTransactions; +/// Returns the fetch date of this CustomerInfo. +@property (nonatomic, readonly, copy) NSDate * _Nonnull requestDate; +/// The date this user was first seen in RevenueCat. +@property (nonatomic, readonly, copy) NSDate * _Nonnull firstSeen; +/// The original App User Id recorded for this user. +@property (nonatomic, readonly, copy) NSString * _Nonnull originalAppUserId; +/// URL to manage the active subscription of the user. +///
    +///
  • +/// If this user has an active iOS subscription, this will point to the App Store. +///
  • +///
  • +/// If the user has an active Play Store subscription it will point there. +///
  • +///
  • +/// If there are no active subscriptions it will be null. +///
  • +///
  • +/// If there are multiple for different platforms, it will point to the App Store. +///
  • +///
+@property (nonatomic, readonly, copy) NSURL * _Nullable managementURL; +/// Returns the purchase date for the version of the application when the user bought the app. +/// Use this for grandfathering users when migrating to subscriptions. +/// note: +/// This can be nil, see Purchases/restorePurchases(completion:) +@property (nonatomic, readonly, copy) NSDate * _Nullable originalPurchaseDate; +/// The build number (in iOS) or the marketing version (in macOS) for the version of the application when the user +/// bought the app. This corresponds to the value of CFBundleVersion (in iOS) or CFBundleShortVersionString +/// (in macOS) in the Info.plist file when the purchase was originally made. Use this for grandfathering users +/// when migrating to subscriptions. +/// note: +/// This can be nil, see -Purchases.restorePurchases(completion:) +@property (nonatomic, readonly, copy) NSString * _Nullable originalApplicationVersion; +/// The underlying data for this CustomerInfo. +/// note: +/// the content and format of this data isn’t documented and is subject to change. +/// it’s only meant for debugging purposes or for getting access to future data +/// without updating the SDK. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; +/// Get the expiration date for a given product identifier. You should use Entitlements though! +/// \param productIdentifier Product identifier for product +/// +/// +/// returns: +/// The expiration date for productIdentifier, nil if product never purchased +- (NSDate * _Nullable)expirationDateForProductIdentifier:(NSString * _Nonnull)productIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the latest purchase or renewal date for a given product identifier. You should use Entitlements though! +/// \param productIdentifier Product identifier for subscription product +/// +/// +/// returns: +/// The purchase date for productIdentifier, nil if product never purchased +- (NSDate * _Nullable)purchaseDateForProductIdentifier:(NSString * _Nonnull)productIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the expiration date for a given entitlement. +/// \param entitlementIdentifier The ID of the entitlement +/// +/// +/// returns: +/// The expiration date for the passed in entitlementIdentifier, or nil +- (NSDate * _Nullable)expirationDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier SWIFT_WARN_UNUSED_RESULT; +/// Get the latest purchase or renewal date for a given entitlement identifier. +/// \param entitlementIdentifier Entitlement identifier for entitlement +/// +/// +/// returns: +/// The purchase date for entitlementIdentifier, nil if product never purchased +- (NSDate * _Nullable)purchaseDateForEntitlement:(NSString * _Nonnull)entitlementIdentifier SWIFT_WARN_UNUSED_RESULT; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + +/// Only use a Dangerous Setting if suggested by RevenueCat support team. +SWIFT_CLASS_NAMED("DangerousSettings") +@interface RCDangerousSettings : NSObject +/// Disable or enable subscribing to the StoreKit queue. If this is disabled, RevenueCat won’t observe +/// the StoreKit queue, and it will not sync any purchase automatically. +/// Call syncPurchases whenever a new transaction is completed so the receipt is sent to RevenueCat’s backend. +/// Consumables disappear from the receipt after the transaction is finished, so make sure purchases are +/// synced before finishing any consumable transaction, otherwise RevenueCat won’t register the purchase. +/// Auto syncing of purchases is enabled by default. +@property (nonatomic, readonly) BOOL autoSyncPurchases; +- (nonnull instancetype)init; +/// Only use a Dangerous Setting if suggested by RevenueCat support team. +/// \param autoSyncPurchases Disable or enable subscribing to the StoreKit queue. +/// If this is disabled, RevenueCat won’t observe the StoreKit queue, and it will not sync any purchase +/// automatically. +/// +- (nonnull instancetype)initWithAutoSyncPurchases:(BOOL)autoSyncPurchases OBJC_DESIGNATED_INITIALIZER; +@end + + +enum RCPeriodType : NSInteger; +enum RCStore : NSInteger; +enum RCPurchaseOwnershipType : NSInteger; + +/// The EntitlementInfo object gives you access to all of the information about the status of a user entitlement. +SWIFT_CLASS_NAMED("EntitlementInfo") +@interface RCEntitlementInfo : NSObject +/// The entitlement identifier configured in the RevenueCat dashboard +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// True if the user has access to this entitlement +@property (nonatomic, readonly) BOOL isActive; +/// True if the underlying subscription is set to renew at the end of +/// the billing period (expirationDate). Will always be true if entitlement +/// is for lifetime access. +@property (nonatomic, readonly) BOOL willRenew; +/// The last period type this entitlement was in +/// Either: PeriodType/normal, PeriodType/intro, PeriodType/trial +@property (nonatomic, readonly) enum RCPeriodType periodType; +/// The latest purchase or renewal date for the entitlement. +@property (nonatomic, readonly, copy) NSDate * _Nullable latestPurchaseDate; +/// The first date this entitlement was purchased +@property (nonatomic, readonly, copy) NSDate * _Nullable originalPurchaseDate; +/// The expiration date for the entitlement, can be nil for lifetime access. +/// If the periodType is PeriodType/trial, this is the trial expiration date. +@property (nonatomic, readonly, copy) NSDate * _Nullable expirationDate; +/// The store where this entitlement was unlocked from either: Store/appStore, Store/macAppStore, +/// Store/playStore, Store/stripe, Store/promotional, or Store/unknownStore. +@property (nonatomic, readonly) enum RCStore store; +/// The product identifier that unlocked this entitlement +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +/// False if this entitlement is unlocked via a production purchase +@property (nonatomic, readonly) BOOL isSandbox; +/// The date an unsubscribe was detected. Can be nil. +/// note: +/// Entitlement may still be active even if user has unsubscribed. Check the isActive property. +@property (nonatomic, readonly, copy) NSDate * _Nullable unsubscribeDetectedAt; +/// The date a billing issue was detected. Can be nil if there is no +/// billing issue or an issue has been resolved. +/// note: +/// Entitlement may still be active even if there is a billing issue. +/// Check the isActive property. +@property (nonatomic, readonly, copy) NSDate * _Nullable billingIssueDetectedAt; +/// Use this property to determine whether a purchase was made by the current user +/// or shared to them by a family member. This can be useful for onboarding users who have had +/// an entitlement shared with them, but might not be entirely aware of the benefits they now have. +@property (nonatomic, readonly) enum RCPurchaseOwnershipType ownershipType; +/// The underlying data for this EntitlementInfo. +/// note: +/// the content and format of this data isn’t documented and is subject to change, +/// it’s only meant for debugging purposes or for getting access to future data +/// without updating the SDK. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull rawData; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + + + +/// This class contains all the entitlements associated to the user. +SWIFT_CLASS_NAMED("EntitlementInfos") +@interface RCEntitlementInfos : NSObject +/// Dictionary of all EntitlementInfo (EntitlementInfo) objects (active and inactive) keyed by entitlement +/// identifier. This dictionary can also be accessed by using an index subscript on EntitlementInfos, e.g. +/// entitlementInfos["pro_entitlement_id"]. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull all; +/// Dictionary of active EntitlementInfo (RCEntitlementInfo) objects keyed by entitlement identifier. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull active; +- (RCEntitlementInfo * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Error codes used by the Purchases SDK +typedef SWIFT_ENUM_NAMED(NSInteger, RCPurchasesErrorCode, "ErrorCode", open) { + RCUnknownError SWIFT_COMPILE_NAME("unknownError") = 0, + RCPurchaseCancelledError SWIFT_COMPILE_NAME("purchaseCancelledError") = 1, + RCStoreProblemError SWIFT_COMPILE_NAME("storeProblemError") = 2, + RCPurchaseNotAllowedError SWIFT_COMPILE_NAME("purchaseNotAllowedError") = 3, + RCPurchaseInvalidError SWIFT_COMPILE_NAME("purchaseInvalidError") = 4, + RCProductNotAvailableForPurchaseError SWIFT_COMPILE_NAME("productNotAvailableForPurchaseError") = 5, + RCProductAlreadyPurchasedError SWIFT_COMPILE_NAME("productAlreadyPurchasedError") = 6, + RCReceiptAlreadyInUseError SWIFT_COMPILE_NAME("receiptAlreadyInUseError") = 7, + RCInvalidReceiptError SWIFT_COMPILE_NAME("invalidReceiptError") = 8, + RCMissingReceiptFileError SWIFT_COMPILE_NAME("missingReceiptFileError") = 9, + RCNetworkError SWIFT_COMPILE_NAME("networkError") = 10, + RCInvalidCredentialsError SWIFT_COMPILE_NAME("invalidCredentialsError") = 11, + RCUnexpectedBackendResponseError SWIFT_COMPILE_NAME("unexpectedBackendResponseError") = 12, + RCReceiptInUseByOtherSubscriberError SWIFT_COMPILE_NAME("receiptInUseByOtherSubscriberError") = 13, + RCInvalidAppUserIdError SWIFT_COMPILE_NAME("invalidAppUserIdError") = 14, + RCOperationAlreadyInProgressForProductError SWIFT_COMPILE_NAME("operationAlreadyInProgressForProductError") = 15, + RCUnknownBackendError SWIFT_COMPILE_NAME("unknownBackendError") = 16, + RCInvalidAppleSubscriptionKeyError SWIFT_COMPILE_NAME("invalidAppleSubscriptionKeyError") = 17, + RCIneligibleError SWIFT_COMPILE_NAME("ineligibleError") = 18, + RCInsufficientPermissionsError SWIFT_COMPILE_NAME("insufficientPermissionsError") = 19, + RCPaymentPendingError SWIFT_COMPILE_NAME("paymentPendingError") = 20, + RCInvalidSubscriberAttributesError SWIFT_COMPILE_NAME("invalidSubscriberAttributesError") = 21, + RCLogOutAnonymousUserError SWIFT_COMPILE_NAME("logOutAnonymousUserError") = 22, + RCConfigurationError SWIFT_COMPILE_NAME("configurationError") = 23, + RCUnsupportedError SWIFT_COMPILE_NAME("unsupportedError") = 24, + RCEmptySubscriberAttributesError SWIFT_COMPILE_NAME("emptySubscriberAttributes") = 25, + RCProductDiscountMissingIdentifierError SWIFT_COMPILE_NAME("productDiscountMissingIdentifierError") = 26, + RCMissingAppUserIDForAliasCreationError SWIFT_COMPILE_NAME("missingAppUserIDForAliasCreationError") = 27, + RCProductDiscountMissingSubscriptionGroupIdentifierError SWIFT_COMPILE_NAME("productDiscountMissingSubscriptionGroupIdentifierError") = 28, + RCCustomerInfoError SWIFT_COMPILE_NAME("customerInfoError") = 29, + RCSystemInfoError SWIFT_COMPILE_NAME("systemInfoError") = 30, + RCBeginRefundRequestError SWIFT_COMPILE_NAME("beginRefundRequestError") = 31, + RCProductRequestTimedOut SWIFT_COMPILE_NAME("productRequestTimedOut") = 32, + RCAPIEndpointBlocked SWIFT_COMPILE_NAME("apiEndpointBlockedError") = 33, + RCInvalidPromotionalOfferError SWIFT_COMPILE_NAME("invalidPromotionalOfferError") = 34, +}; +static NSString * _Nonnull const RCPurchasesErrorCodeDomain = @"RevenueCat.ErrorCode"; + + +SWIFT_CLASS("_TtC10RevenueCat12ErrorDetails") +@interface ErrorDetails : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15FakeASIdManager") +@interface FakeASIdManager : NSObject ++ (FakeASIdManager * _Nonnull)sharedManager SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat17FakeAfficheClient") +@interface FakeAfficheClient : NSObject ++ (FakeAfficheClient * _Nonnull)sharedClient SWIFT_WARN_UNUSED_RESULT; +- (void)requestAttributionDetailsWithBlock:(void (^ _Nonnull)(NSDictionary * _Nullable, NSError * _Nullable))completionHandler; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC10RevenueCat19FakeTrackingManager") +@interface FakeTrackingManager : NSObject ++ (NSInteger)trackingAuthorizationStatus SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +typedef SWIFT_ENUM(NSInteger, FakeTrackingManagerAuthorizationStatus, closed) { + FakeTrackingManagerAuthorizationStatusNotDetermined = 0, + FakeTrackingManagerAuthorizationStatusRestricted = 1, + FakeTrackingManagerAuthorizationStatusDenied = 2, + FakeTrackingManagerAuthorizationStatusAuthorized = 3, +}; + + +SWIFT_CLASS("_TtC10RevenueCat24GetCustomerInfoOperation") +@interface GetCustomerInfoOperation : CacheableNetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat28GetIntroEligibilityOperation") +@interface GetIntroEligibilityOperation : NetworkOperation +@end + + + + +SWIFT_CLASS("_TtC10RevenueCat21GetOfferingsOperation") +@interface GetOfferingsOperation : CacheableNetworkOperation +@end + + + + + +enum RCIntroEligibilityStatus : NSInteger; + +/// Holds the introductory price status +SWIFT_CLASS_NAMED("IntroEligibility") +@interface RCIntroEligibility : NSObject +/// The introductory price eligibility status +@property (nonatomic, readonly) enum RCIntroEligibilityStatus status; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Enum of different possible states for intro price eligibility status. +///
    +///
  • +/// IntroEligibilityStatus/unknown RevenueCat doesn’t have enough information to determine eligibility. +///
  • +///
  • +/// IntroEligibilityStatus/ineligible The user is not eligible for a free trial or intro pricing for this +/// product. +///
  • +///
  • +/// IntroEligibilityStatus/eligible The user is eligible for a free trial or intro pricing for this product. +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCIntroEligibilityStatus, "IntroEligibilityStatus", open) { +/// RevenueCat doesn’t have enough information to determine eligibility. + RCIntroEligibilityStatusUnknown = 0, +/// The user is not eligible for a free trial or intro pricing for this product. + RCIntroEligibilityStatusIneligible = 1, +/// The user is eligible for a free trial or intro pricing for this product. + RCIntroEligibilityStatusEligible = 2, +/// There is no free trial or intro pricing for this product. + RCIntroEligibilityStatusNoIntroOfferExists = 3, +}; + + +SWIFT_CLASS("_TtC10RevenueCat14LogInOperation") +@interface LogInOperation : CacheableNetworkOperation +@end + + + +/// Enumeration of the different verbosity levels. +///

Related Symbols

+///
    +///
  • +/// Purchases/logLevel +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCLogLevel, "LogLevel", open) { + RCLogLevelDebug = 0, + RCLogLevelInfo = 1, + RCLogLevelWarn = 2, + RCLogLevelError = 3, +}; + + + + + +@class RCPackage; + +/// An offering is a collection of Packages, and they let you control which products +/// are shown to users without requiring an app update. +/// Building paywalls that are dynamic and can react to different product +/// configurations gives you maximum flexibility to make remote updates. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Offering") +@interface RCOffering : NSObject +/// Unique identifier defined in RevenueCat dashboard. +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// Offering description defined in RevenueCat dashboard. +@property (nonatomic, readonly, copy) NSString * _Nonnull serverDescription; +/// Array of Package objects available for purchase. +@property (nonatomic, readonly, copy) NSArray * _Nonnull availablePackages; +/// Lifetime Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable lifetime; +/// Annual Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable annual; +/// Six month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable sixMonth; +/// Three month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable threeMonth; +/// Two month Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable twoMonth; +/// Monthly Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable monthly; +/// Weekly Package type configured in the RevenueCat dashboard, if available. +@property (nonatomic, readonly, strong) RCPackage * _Nullable weekly; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +/// Retrieves a specific Package by identifier, use this to access custom package types configured in the +/// RevenueCat dashboard, e.g. offering.package(identifier: "custom_package_id") or +/// offering["custom_package_id"]. +- (RCPackage * _Nullable)packageWithIdentifier:(NSString * _Nullable)identifier SWIFT_WARN_UNUSED_RESULT; +- (RCPackage * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +/// This class contains all the offerings configured in RevenueCat dashboard. +/// Offerings let you control which products are shown to users without requiring an app update. +/// Building paywalls that are dynamic and can react to different product +/// configurations gives you maximum flexibility to make remote updates. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Offerings") +@interface RCOfferings : NSObject +/// Dictionary of all Offerings (Offering) objects keyed by their identifier. This dictionary can also be accessed +/// by using an index subscript on Offerings, e.g. offerings["offering_id"]. To access the current offering use +/// Offerings/current. +@property (nonatomic, readonly, copy) NSDictionary * _Nonnull all; +/// Current Offering configured in the RevenueCat dashboard. +@property (nonatomic, readonly, strong) RCOffering * _Nullable current; +/// Retrieves a specific offering by its identifier, use this to access additional offerings configured in the +/// RevenueCat dashboard, e.g. offerings.offering(identifier: "offering_id") or offerings[@"offering_id"]. +/// To access the current offering use Offerings/current. +- (RCOffering * _Nullable)offeringWithIdentifier:(NSString * _Nullable)identifier SWIFT_WARN_UNUSED_RESULT; +- (RCOffering * _Nullable)objectForKeyedSubscript:(NSString * _Nonnull)key SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +enum RCPackageType : NSInteger; +@class RCStoreProduct; + +/// Packages help abstract platform-specific products by grouping equivalent products across iOS, Android, and web. +/// A package is made up of three parts: identifier, packageType, and underlying StoreProduct. +///

Related Articles

+/// +SWIFT_CLASS_NAMED("Package") +@interface RCPackage : NSObject +/// The identifier for this Package. +@property (nonatomic, readonly, copy) NSString * _Nonnull identifier; +/// The type configured for this package. +@property (nonatomic, readonly) enum RCPackageType packageType; +/// The underlying storeProduct +@property (nonatomic, readonly, strong) RCStoreProduct * _Nonnull storeProduct; +/// The identifier of the Offering containing this Package. +@property (nonatomic, readonly, copy) NSString * _Nonnull offeringIdentifier; +/// The price of this product using StoreProduct/priceFormatter. +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +/// The price of the StoreProduct/introductoryDiscount formatted using StoreProduct/priceFormatter. +/// +/// returns: +/// nil if there is no introductoryDiscount. +@property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +@interface RCPackage (SWIFT_EXTENSION(RevenueCat)) +/// \param packageType A PackageType. +/// +/// +/// returns: +/// an optional description of the packageType. ++ (NSString * _Nullable)stringFrom:(enum RCPackageType)packageType SWIFT_WARN_UNUSED_RESULT; +/// \param string A string that maps to a enumeration value of type PackageType +/// +/// +/// returns: +/// a PackageType for the given string. ++ (enum RCPackageType)packageTypeFrom:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT; +@end + +@class SKProduct; + +@interface RCPackage (SWIFT_EXTENSION(RevenueCat)) +/// SKProduct assigned to this package. https://developer.apple.com/documentation/storekit/skproduct +@property (nonatomic, readonly, strong) SKProduct * _Nonnull product SWIFT_AVAILABILITY(macos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'product' has been renamed to 'storeProduct': Use StoreProduct instead"); +@end + + +/// Enumeration of all possible Package types, as configured on the package. +///

Related Articles

+/// +typedef SWIFT_ENUM_NAMED(NSInteger, RCPackageType, "PackageType", open) { +/// A package that was defined with an unknown identifier. + RCPackageTypeUnknown = -2, +/// A package that was defined with an unknown identifier. + RCPackageTypeCustom = -1, +/// A package that was defined with an unknown identifier. + RCPackageTypeLifetime = 0, +/// A package that was defined with an unknown identifier. + RCPackageTypeAnnual = 1, +/// A package that was defined with an unknown identifier. + RCPackageTypeSixMonth = 2, +/// A package that was defined with an unknown identifier. + RCPackageTypeThreeMonth = 3, +/// A package that was defined with an unknown identifier. + RCPackageTypeTwoMonth = 4, +/// A package that was defined with an unknown identifier. + RCPackageTypeMonthly = 5, +/// A package that was defined with an unknown identifier. + RCPackageTypeWeekly = 6, +}; + +/// Enum of supported period types for an entitlement. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPeriodType, "PeriodType", open) { +/// If the entitlement is not under an introductory or trial period. + RCNormal SWIFT_COMPILE_NAME("normal") = 0, +/// If the entitlement is under a introductory price period. + RCIntro SWIFT_COMPILE_NAME("intro") = 1, +/// If the entitlement is under a trial period. + RCTrial SWIFT_COMPILE_NAME("trial") = 2, +}; + + +SWIFT_CLASS("_TtC10RevenueCat28PostAttributionDataOperation") +@interface PostAttributionDataOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat28PostOfferForSigningOperation") +@interface PostOfferForSigningOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat24PostReceiptDataOperation") +@interface PostReceiptDataOperation : CacheableNetworkOperation +@end + + +SWIFT_CLASS("_TtC10RevenueCat33PostSubscriberAttributesOperation") +@interface PostSubscriberAttributesOperation : NetworkOperation +@end + + + +SWIFT_CLASS("_TtC10RevenueCat18ProductsFetcherSK1") +@interface ProductsFetcherSK1 : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@class SKProductsRequest; +@class SKProductsResponse; +@class SKRequest; + +@interface ProductsFetcherSK1 (SWIFT_EXTENSION(RevenueCat)) +- (void)productsRequest:(SKProductsRequest * _Nonnull)request didReceiveResponse:(SKProductsResponse * _Nonnull)response; +- (void)requestDidFinish:(SKRequest * _Nonnull)request; +- (void)request:(SKRequest * _Nonnull)request didFailWithError:(NSError * _Nonnull)error; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15ProductsManager") +@interface ProductsManager : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +/// Represents a StoreProductDiscount that has been validated and +/// is ready to be used for a purchase. +///

Related Symbols

+///
    +///
  • +/// Purchases/getPromotionalOffer(forProductDiscount:product:) +///
  • +///
  • +/// Purchases/getPromotionalOffer(forProductDiscount:product:completion:) +///
  • +///
  • +/// StoreProduct/getEligiblePromotionalOffers() +///
  • +///
  • +/// Purchases/getEligiblePromotionalOffers(forProduct:) +///
  • +///
  • +/// Purchases/purchase(package:promotionalOffer:) +///
  • +///
  • +/// Purchases/purchase(package:promotionalOffer:completion:) +///
  • +///
  • +/// Purchases/purchase(product:promotionalOffer:) +///
  • +///
  • +/// Purchases/purchase(product:promotionalOffer:completion:) +///
  • +///
+SWIFT_CLASS_NAMED("PromotionalOffer") +@interface RCPromotionalOffer : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + + +SWIFT_CLASS_NAMED("PromotionalOfferEligibility") SWIFT_AVAILABILITY(macos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="Use PromotionalOffer instead") SWIFT_AVAILABILITY(ios,obsoleted=1,message="Use PromotionalOffer instead") +@interface RCPromotionalOfferEligibility : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// The types used to describe whether a transaction was purchased by the user, +/// or is available to them through Family Sharing. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPurchaseOwnershipType, "PurchaseOwnershipType", open) { +/// The purchase was made directly by this user. + RCPurchaseOwnershipTypePurchased = 0, +/// The purchase has been shared to this user by a family member. + RCPurchaseOwnershipTypeFamilyShared = 1, +/// The ownership type could not be determined. + RCPurchaseOwnershipTypeUnknown = 2, +}; + + +SWIFT_CLASS_NAMED("PurchaserInfo") SWIFT_AVAILABILITY(macos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'PurchaserInfo' has been renamed to 'RCCustomerInfo'") +@interface RCPurchaserInfo : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@protocol RCPurchasesDelegate; + +/// Purchases is the entry point for RevenueCat.framework. It should be instantiated as soon as your app has a unique +/// user id for your user. This can be when a user logs in if you have accounts or on launch if you can generate a random +/// user identifier. +/// warning: +/// Only one instance of Purchases should be instantiated at a time! Use a configure method to let the +/// framework handle the singleton instance for you. +SWIFT_CLASS_NAMED("Purchases") +@interface RCPurchases : NSObject +/// Returns the already configured instance of Purchases. +/// warning: +/// this method will crash with fatalError if Purchases has not been initialized through +/// configure(withAPIKey:) or one of its overloads. If there’s a chance that may have not happened yet, +/// you can use isConfigured to check if it’s safe to call. +///

Related symbols

+///
    +///
  • +/// isConfigured +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RCPurchases * _Nonnull sharedPurchases;) ++ (RCPurchases * _Nonnull)sharedPurchases SWIFT_WARN_UNUSED_RESULT; +/// Returns true if RevenueCat has already been initialized through configure(withAPIKey:) +/// or one of is overloads. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL isConfigured;) ++ (BOOL)isConfigured SWIFT_WARN_UNUSED_RESULT; +/// Delegate for Purchases instance. The delegate is responsible for handling promotional product purchases and +/// changes to customer information. +@property (nonatomic, strong) id _Nullable delegate; +/// Enable automatic collection of Apple Search Ads attribution. Defaults to false. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL automaticAppleSearchAdsAttributionCollection;) ++ (BOOL)automaticAppleSearchAdsAttributionCollection SWIFT_WARN_UNUSED_RESULT; ++ (void)setAutomaticAppleSearchAdsAttributionCollection:(BOOL)value; +/// Used to set the log level. Useful for debugging issues with the lovely team @RevenueCat. +///

Related Symbols

+///
    +///
  • +/// logHandler +///
  • +///
  • +/// verboseLogHandler +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class) enum RCLogLevel logLevel;) ++ (enum RCLogLevel)logLevel SWIFT_WARN_UNUSED_RESULT; ++ (void)setLogLevel:(enum RCLogLevel)newValue; +/// Set this property to your proxy URL before configuring Purchases only if you’ve received a proxy key value +/// from your RevenueCat contact. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) NSURL * _Nullable proxyURL;) ++ (NSURL * _Nullable)proxyURL SWIFT_WARN_UNUSED_RESULT; ++ (void)setProxyURL:(NSURL * _Nullable)newValue; +/// Set this property to true only if you’re transitioning an existing Mac app from the Legacy +/// Mac App Store into the Universal Store, and you’ve configured your RevenueCat app accordingly. +/// Contact RevenueCat support before using this. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL forceUniversalAppStore;) ++ (BOOL)forceUniversalAppStore SWIFT_WARN_UNUSED_RESULT; ++ (void)setForceUniversalAppStore:(BOOL)newValue; +/// Set this property to true only when testing the ask-to-buy / SCA purchases flow. +/// More information available here. +///

Related Articles

+/// +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL simulatesAskToBuyInSandbox SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14) SWIFT_AVAILABILITY(ios,introduced=8.0);) ++ (BOOL)simulatesAskToBuyInSandbox SWIFT_WARN_UNUSED_RESULT; ++ (void)setSimulatesAskToBuyInSandbox:(BOOL)newValue; +/// Indicates whether the user is allowed to make payments. +/// More information on when this might be false here ++ (BOOL)canMakePayments SWIFT_WARN_UNUSED_RESULT; +/// Set a custom log handler for redirecting logs to your own logging system. +/// By default, this sends LogLevel/info, LogLevel/warn, and LogLevel/error messages. +/// If you wish to receive Debug level messages, set the log level to LogLevel/debug. +/// note: +/// verboseLogHandler provides additional information. +///

Related Symbols

+///
    +///
  • +/// verboseLogHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) void (^ _Nonnull logHandler)(enum RCLogLevel, NSString * _Nonnull);) ++ (void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull))logHandler SWIFT_WARN_UNUSED_RESULT; ++ (void)setLogHandler:(void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull))newValue; +/// Set a custom log handler for redirecting logs to your own logging system. +/// By default, this sends LogLevel/info, LogLevel/warn, and LogLevel/error messages. +/// If you wish to receive Debug level messages, set the log level to LogLevel/debug. +/// note: +/// you can use logHandler if you don’t need filename information. +///

Related Symbols

+///
    +///
  • +/// logHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class, copy) void (^ _Nonnull verboseLogHandler)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger);) ++ (void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger))verboseLogHandler SWIFT_WARN_UNUSED_RESULT; ++ (void)setVerboseLogHandler:(void (^ _Nonnull)(enum RCLogLevel, NSString * _Nonnull, NSString * _Nullable, NSString * _Nullable, NSUInteger))newValue; +/// Setting this to true adds additional information to the default log handler: +/// Filename, line, and method data. +/// You can also access that information for your own logging system by using verboseLogHandler. +///

Related Symbols

+///
    +///
  • +/// verboseLogHandler +///
  • +///
  • +/// logLevel +///
  • +///
+SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL verboseLogs;) ++ (BOOL)verboseLogs SWIFT_WARN_UNUSED_RESULT; ++ (void)setVerboseLogs:(BOOL)newValue; +/// Current version of the Purchases framework. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull frameworkVersion;) ++ (NSString * _Nonnull)frameworkVersion SWIFT_WARN_UNUSED_RESULT; +/// Whether transactions should be finished automatically. true by default. +/// * - Warning: Setting this value to false will prevent the SDK from finishing transactions. +/// * In this case, you must finish transactions in your app, otherwise they will remain in the queue and +/// * will turn up every time the app is opened. +/// * More information on finishing transactions manually is available here. +@property (nonatomic) BOOL finishTransactions; +/// Automatically collect subscriber attributes associated with the device identifiers +///
    +///
  • +/// $idfa +///
  • +///
  • +/// $idfv +///
  • +///
  • +/// $ip +///
  • +///
+- (void)collectDeviceIdentifiers; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + +SWIFT_PROTOCOL("_TtP10RevenueCat29PurchasesOrchestratorDelegate_") +@protocol PurchasesOrchestratorDelegate +- (void)shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))defermentBlock; +@end + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Called when a user initiates a promotional in-app purchase from the App Store. +/// If your app is able to handle a purchase at the current time, run the deferment block in this method. +/// If the app is not in a state to make a purchase: cache the defermentBlock, then call the defermentBlock +/// when the app is ready to make the promotional purchase. +/// If the purchase should never be made, you don’t need to ever call the defermentBlock and Purchases +/// will not proceed with promotional purchases. +/// \param product StoreProduct the product that was selected from the app store. +/// +- (void)shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))defermentBlock; +@end + + + +@class RCPlatformInfo; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, strong) RCPlatformInfo * _Nullable platformInfo;) ++ (RCPlatformInfo * _Nullable)platformInfo SWIFT_WARN_UNUSED_RESULT; ++ (void)setPlatformInfo:(RCPlatformInfo * _Nullable)value; +@end + + +SWIFT_CLASS_NAMED("PlatformInfo") +@interface RCPlatformInfo : NSObject +- (nonnull instancetype)initWithFlavor:(NSString * _Nonnull)flavor version:(NSString * _Nonnull)version OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Enable debug logging. Useful for debugging issues with the lovely team @RevenueCat. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class) BOOL debugLogsEnabled SWIFT_DEPRECATED_MSG("use Purchases.logLevel instead");) ++ (BOOL)debugLogsEnabled SWIFT_WARN_UNUSED_RESULT; ++ (void)setDebugLogsEnabled:(BOOL)newValue; +/// Deprecated +@property (nonatomic) BOOL allowSharingAppStoreAccount SWIFT_DEPRECATED_MSG("Configure behavior through the RevenueCat dashboard instead"); +/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns. +///

Related articles

+/// +/// \param data Dictionary provided by the network. +/// +/// \param network Enum for the network the data is coming from, see AttributionNetwork for supported +/// networks. +/// ++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network SWIFT_DEPRECATED_MSG("Use the set functions instead"); +/// Send your attribution data to RevenueCat so you can track the revenue generated by your different campaigns. +///

Related articles

+/// +/// \param data Dictionary provided by the network. +/// +/// \param network Enum for the network the data is coming from, see AttributionNetwork for supported +/// networks. +/// +/// \param networkUserId User Id that should be sent to the network. Default is the current App User Id. +/// ++ (void)addAttributionData:(NSDictionary * _Nonnull)data fromNetwork:(enum RCAttributionNetwork)network forNetworkUserId:(NSString * _Nullable)networkUserId SWIFT_DEPRECATED_MSG("Use the set functions instead"); +@end + +@class NSUserDefaults; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Configures an instance of the Purchases SDK with a specified API key. +/// The instance will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// note: +/// Use this initializer if your app does not have an account system. +/// Purchases will generate a unique identifier for the current device and persist it to NSUserDefaults. +/// This also affects the behavior of Purchases/restorePurchases(completion:). +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey; +/// Configures an instance of the Purchases SDK with a specified API key and app user ID. +/// The instance will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// note: +/// Best practice is to use a salted hash of your unique app user ids. +/// warning: +/// Use this initializer if you have your own user identifiers that you manage. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID; +/// Configures an instance of the Purchases SDK with a custom UserDefaults. +/// Use this constructor if you want to +/// sync status across a shared container, such as between a host app and an extension. The instance of the +/// Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode; +/// Configures an instance of the Purchases SDK with a custom UserDefaults. +/// Use this constructor if you want to +/// sync status across a shared container, such as between a host app and an extension. The instance of the +/// Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults; +/// Configures an instance of the Purchases SDK with a custom userDefaults. +/// Use this constructor if you want to sync status across a shared container, +/// such as between a host app and an extension. +/// The instance of the Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// important: +/// Support for purchases using StoreKit 2 is currently in an experimental phase. +/// We recommend setting this value to false (default) for production apps. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// \param useStoreKit2IfAvailable EXPERIMENTAL. opt in to using StoreKit 2 on devices that support it. +/// Purchases will be made using StoreKit 2 under the hood automatically. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable; +/// Configures an instance of the Purchases SDK with a custom userDefaults. +/// Use this constructor if you want to sync status across a shared container, +/// such as between a host app and an extension. +/// The instance of the Purchases SDK will be set as a singleton. +/// You should access the singleton instance using Purchases/shared +/// important: +/// Support for purchases using StoreKit 2 is currently in an experimental phase. +/// We recommend setting this value to false (default) for production apps. +/// \param apiKey The API Key generated for your app from https://app.revenuecat.com/ +/// +/// \param appUserID The unique app user id for this user. This user id will allow users to share their +/// purchases and subscriptions across devices. Pass nil or an empty string if you want Purchases +/// to generate this for you. +/// +/// \param observerMode Set this to true if you have your own IAP implementation and want to use only +/// RevenueCat’s backend. Default is false. +/// +/// \param userDefaults Custom UserDefaults to use +/// +/// \param dangerousSettings Only use if suggested by RevenueCat support team. +/// +/// \param useStoreKit2IfAvailable EXPERIMENTAL. opt in to using StoreKit 2 on devices that support it. +/// Purchases will be made using StoreKit 2 under the hood automatically. +/// +/// +/// returns: +/// An instantiated Purchases object that has been set as a singleton. ++ (RCPurchases * _Nonnull)configureWithAPIKey:(NSString * _Nonnull)apiKey appUserID:(NSString * _Nullable)appUserID observerMode:(BOOL)observerMode userDefaults:(NSUserDefaults * _Nullable)userDefaults useStoreKit2IfAvailable:(BOOL)useStoreKit2IfAvailable dangerousSettings:(RCDangerousSettings * _Nullable)dangerousSettings; +@end + + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +///
    +///
  • +/// The appUserID used by Purchases. +///
  • +///
  • +/// If not passed on initialization this will be generated and cached by Purchases. +///
  • +///
+@property (nonatomic, readonly, copy) NSString * _Nonnull appUserID; +/// Returns true if the appUserID has been generated by RevenueCat, false otherwise. +@property (nonatomic, readonly) BOOL isAnonymous; +/// This function will log in the current user with an appUserID. +/// The completion block will be called with the latest CustomerInfo and a Bool specifying +/// whether the user was created for the first time in the RevenueCat backend. +/// RevenueCat provides a source of truth for a subscriber’s status across different platforms. +/// To do this, each subscriber has an App User ID that uniquely identifies them within your application. +/// User identity is one of the most important components of many mobile applications, +/// and it’s extra important to make sure the subscription status RevenueCat is +/// tracking gets associated with the correct user. +/// The Purchases SDK allows you to specify your own user identifiers or use anonymous identifiers +/// generated by RevenueCat. Some apps will use a combination +/// of their own identifiers and RevenueCat anonymous Ids - that’s okay! +///

Related Articles

+///
    +///
  • +/// Identifying Users +///
  • +///
  • +/// logOut(completion:) +///
  • +///
  • +/// isAnonymous +///
  • +///
  • +/// Purchases/appUserID +///
  • +///
+/// \param appUserID The appUserID that should be linked to the current user. +/// +- (void)logIn:(NSString * _Nonnull)appUserID completion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, BOOL, NSError * _Nullable))completion; +/// Logs out the Purchases client, clearing the saved appUserID. +/// This will generate a random user id and save it in the cache. +/// If this method is called and the current user is anonymous, it will return an error. +///

Related Articles

+///
    +///
  • +/// Identifying Users +///
  • +///
  • +/// logIn(_:completion:) +///
  • +///
  • +/// isAnonymous +///
  • +///
  • +/// Purchases/appUserID +///
  • +///
+- (void)logOutWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Fetch the configured Offerings for this user. +/// \code +/// *``Offerings`` allows you to configure your in-app products +/// +/// \endcodevia RevenueCat and greatly simplifies management. +/// Offerings will be fetched and cached on instantiation so that, by the time they are needed, +/// your prices are loaded for your purchase flow. Time is money. +///

Related Articles

+/// +/// \param completion A completion block called when offerings are available. +/// Called immediately if offerings are cached. Offerings will be nil if an error occurred. +/// +- (void)getOfferingsWithCompletion:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion; +@end + + + +@class NSData; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Subscriber attributes are useful for storing additional, structured information on a user. +/// Since attributes are writable using a public key they should not be used for +/// managing secure or sensitive information such as subscription status, coins, etc. +/// Key names starting with “$” are reserved names used by RevenueCat. For a full list of key +/// restrictions refer to our guide +/// \param attributes Map of attributes by key. Set the value as an empty string to delete an attribute. +/// +- (void)setAttributes:(NSDictionary * _Nonnull)attributes; +/// Subscriber attribute associated with the email address for the user. +///

Related Articles

+/// +/// \param email Empty String or nil will delete the subscriber attribute. +/// +- (void)setEmail:(NSString * _Nullable)email; +/// Subscriber attribute associated with the phone number for the user. +///

Related Articles

+/// +/// \param phoneNumber Empty String or nil will delete the subscriber attribute. +/// +- (void)setPhoneNumber:(NSString * _Nullable)phoneNumber; +/// Subscriber attribute associated with the display name for the user. +///

Related Articles

+/// +/// \param displayName Empty String or nil will delete the subscriber attribute. +/// +- (void)setDisplayName:(NSString * _Nullable)displayName; +/// Subscriber attribute associated with the push token for the user. +///

Related Articles

+/// +/// \param pushToken nil will delete the subscriber attribute. +/// +- (void)setPushToken:(NSData * _Nullable)pushToken; +/// Subscriber attribute associated with the Adjust Id for the user. +/// Required for the RevenueCat Adjust integration. +///

Related Articles

+/// +- (void)setAdjustID:(NSString * _Nullable)adjustID; +/// Subscriber attribute associated with the Appsflyer Id for the user. +/// Required for the RevenueCat Appsflyer integration. +///

Related Articles

+/// +- (void)setAppsflyerID:(NSString * _Nullable)appsflyerID; +/// Subscriber attribute associated with the Facebook SDK Anonymous Id for the user. +/// Recommended for the RevenueCat Facebook integration. +///

Related Articles

+/// +- (void)setFBAnonymousID:(NSString * _Nullable)fbAnonymousID; +/// Subscriber attribute associated with the mParticle Id for the user. +/// Recommended for the RevenueCat mParticle integration. +///

Related Articles

+/// +- (void)setMparticleID:(NSString * _Nullable)mparticleID; +/// Subscriber attribute associated with the OneSignal Player ID for the user. +/// Required for the RevenueCat OneSignal integration. +///

Related Articles

+/// +- (void)setOnesignalID:(NSString * _Nullable)onesignalID; +/// Subscriber attribute associated with the Airship Channel ID for the user. +/// Required for the RevenueCat Airship integration. +///

Related Articles

+/// +- (void)setAirshipChannelID:(NSString * _Nullable)airshipChannelID; +/// Subscriber attribute associated with the CleverTap ID for the user. +/// Required for the RevenueCat CleverTap integration. +///

Related Articles

+/// +- (void)setCleverTapID:(NSString * _Nullable)cleverTapID; +/// Subscriber attribute associated with the install media source for the user. +///

Related Articles

+/// +/// \param mediaSource Empty String or nil will delete the subscriber attribute. +/// +- (void)setMediaSource:(NSString * _Nullable)mediaSource; +/// Subscriber attribute associated with the install campaign for the user. +///

Related Articles

+/// +/// \param campaign Empty String or nil will delete the subscriber attribute. +/// +- (void)setCampaign:(NSString * _Nullable)campaign; +/// Subscriber attribute associated with the install ad group for the user +///

Related Articles

+/// +/// \param adGroup Empty String or nil will delete the subscriber attribute. +/// +- (void)setAdGroup:(NSString * _Nullable)adGroup; +/// Subscriber attribute associated with the install ad for the user +///

Related Articles

+/// +/// \param installAd Empty String or nil will delete the subscriber attribute. +/// +- (void)setAd:(NSString * _Nullable)installAd; +/// Subscriber attribute associated with the install keyword for the user +///

Related Articles

+/// +/// \param keyword Empty String or nil will delete the subscriber attribute. +/// +- (void)setKeyword:(NSString * _Nullable)keyword; +/// Subscriber attribute associated with the install ad creative for the user. +///

Related Articles

+/// +/// \param creative Empty String or nil will delete the subscriber attribute. +/// +- (void)setCreative:(NSString * _Nullable)creative; +@end + +@class SKPaymentDiscount; +@class SKProductDiscount; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// This method will post all purchases associated with the current App Store account to RevenueCat and become +/// associated with the current appUserID. If the receipt is being used by an existing user, the current +/// appUserID will be aliased together with the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// You shouldn’t use this method if you have your own account system. In that case “restoration” is provided +/// by your app passing the same appUserId used to purchase originally. +/// note: +/// This may force your users to enter the App Store password so should only be performed on request of +/// the user. Typically with a button in settings or near your purchase UI. Use +/// Purchases/syncPurchases(completion:) if you need to restore transactions programmatically. +- (void)restoreTransactionsWithCompletionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'restoreTransactions' has been renamed to 'restorePurchasesWithCompletion:'"); +/// Get latest available purchaser info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if info is cached. Customer info can be nil if an error occurred. +/// +- (void)customerInfoWithCompletion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'customerInfo' has been renamed to 'getCustomerInfoWithCompletion:'"); +/// Get latest available purchaser info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if info is cached. Customer info can be nil if an error occurred. +/// +- (void)purchaserInfoWithCompletionBlock:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchaserInfo' has been renamed to 'getCustomerInfoWithCompletion:'"); +/// Fetches the SKProducts for your IAPs for given productIdentifiers. +/// Use this method if you aren’t using -offeringsWithCompletionBlock:. +/// You should use offerings though. +/// note: +/// completion may be called without SKProducts that you are expecting. +/// This is usually caused by iTunesConnect configuration errors. +/// Ensure your IAPs have the “Ready to Submit” status in iTunesConnect. +/// Also ensure that you have an active developer program subscription and you have +/// signed the latest paid application agreements. +/// If you’re having trouble see: https://www.revenuecat.com/2018/10/11/configuring-in-app-products-is-hard +/// \param productIdentifiers A set of product identifiers for in app purchases setup via iTunesConnect. +/// This should be either hard coded in your application, from a file, or from +/// a custom endpoint if you want to be able to deploy new IAPs without an app update. +/// +/// \param completion An @escaping callback that is called with the loaded products. +/// If the fetch fails for any reason it will return an empty array. +/// +- (void)productsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completionBlock:(void (^ _Nonnull)(NSArray * _Nonnull))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'products' has been renamed to 'getProductsWithIdentifiers:completion:'"); +/// Fetch the configured offerings for this users. +/// Offerings allows you to configure your in-app products via RevenueCat and greatly simplifies management. +/// Offerings will be fetched and cached on instantiation so that, by the time they are needed, +/// your prices are loaded for your purchase flow. Time is money. +///

Related Articles

+/// +/// \param completion A completion block called when offerings are available. +/// Called immediately if offerings are cached. Offerings will be nil if an error occurred. +/// +- (void)offeringsWithCompletionBlock:(void (^ _Nonnull)(RCOfferings * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'offerings' has been renamed to 'getOfferingsWithCompletion:'"); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withCompletionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchasePackage' has been renamed to 'purchasePackage:withCompletion:'"); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(watchos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(tvos,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(ios,unavailable,message="'purchasePackage' has been renamed to 'purchasePackage:withPromotionalOffer:completion:'"); +/// Use this function if you are not using the Offerings system to purchase an SKProduct. +/// If you are using the Offerings system, use -[RCPurchases purchasePackage:withCompletionBlock] instead. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param product The SKProduct the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchaseProduct:(SKProduct * _Nonnull)product withCompletionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'purchaseProduct' has been renamed to 'purchase(product:_:)'"); +/// Use this function if you are not using the Offerings system to purchase an SKProduct. +/// If you are using the Offerings system, use -[RCPurchases purchasePackage:withCompletionBlock] instead. +/// Call this method when a user has decided to purchase a product. Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the RCPurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, +/// Purchases will handle this for you. +/// \param product The SKProduct the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// If the purchase was successful there will be a SKPaymentTransaction and a RCPurchaserInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be YES. +/// +- (void)purchaseProduct:(SKProduct * _Nonnull)product withDiscount:(SKPaymentDiscount * _Nonnull)discount completionBlock:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(macos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(watchos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(tvos,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'") SWIFT_AVAILABILITY(ios,unavailable,message="'purchaseProduct' has been renamed to 'purchaseProduct:withPromotionalOffer:completion:'"); +- (void)invalidatePurchaserInfoCache SWIFT_AVAILABILITY(macos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'invalidatePurchaserInfoCache' has been renamed to 'invalidateCustomerInfoCache'"); +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers use instead, +/// use Purchases/checkPromotionalDiscountEligibility(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibilty, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +/// \param productIdentifiers Array of product identifiers for which you want to compute eligibility +/// +/// \param completion A block that receives a dictionary of product_id -> IntroEligibility. +/// +- (void)checkTrialOrIntroductoryPriceEligibility:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSDictionary * _Nonnull))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'checkTrialOrIntroductoryPriceEligibility' has been renamed to 'checkTrialOrIntroDiscountEligibility(_:completion:)'"); +/// Use this function to retrieve the SKPaymentDiscount for a given SKProduct. +/// \param discount The SKProductDiscount to apply to the product. +/// +/// \param product The SKProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the SKPaymentDiscount is returned. +/// If it was not successful, there will be an Error. +/// +- (void)paymentDiscountForProductDiscount:(SKProductDiscount * _Nonnull)discount product:(SKProduct * _Nonnull)product completion:(void (^ _Nonnull)(SKPaymentDiscount * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(watchos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(tvos,unavailable,message="Check eligibility for a discount using getPromotionalOffer:") SWIFT_AVAILABILITY(ios,unavailable,message="Check eligibility for a discount using getPromotionalOffer:"); +/// This function will alias two appUserIDs together. +/// \param alias The new appUserID that should be linked to the currently identified appUserID +/// +/// \param completion An optional completion block called when the aliasing has been successful. +/// This completion block will receive an error if there’s been one. +/// +- (void)createAlias:(NSString * _Nonnull)alias completionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'createAlias' has been renamed to 'logIn'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'createAlias' has been renamed to 'logIn'"); +/// This function will identify the current user with an appUserID. Typically this would be used after a +/// logout to identify a new user without calling configure. +/// \param appUserID The appUserID that should be linked to the current user. +/// +/// \param completion An optional completion block called when the identify call has completed. +/// This completion block will receive an error if there’s been one. +/// +- (void)identify:(NSString * _Nonnull)appUserID completionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'identify' has been renamed to 'logIn'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'identify' has been renamed to 'logIn'"); +/// Resets the Purchases client clearing the saved appUserID. +/// This will generate a random user id and save it in the cache. +- (void)resetWithCompletionBlock:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'reset' has been renamed to 'logOutWithCompletion:'"); +@end + +@class RCStoreProductDiscount; +enum RCRefundRequestStatus : NSInteger; + +@interface RCPurchases (SWIFT_EXTENSION(RevenueCat)) +/// Get latest available customer info. +/// \param completion A completion block called when customer info is available and not stale. +/// Called immediately if CustomerInfo is cached. Customer info can be nil if an error occurred. +/// +- (void)getCustomerInfoWithCompletion:(void (^ _Nonnull)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Fetches the StoreProducts for your IAPs for given productIdentifiers. +/// Use this method if you aren’t using getOfferings(completion:). +/// You should use getOfferings(completion:) though. +/// note: +/// completion may be called without StoreProducts that you are expecting. This is usually caused by +/// iTunesConnect configuration errors. Ensure your IAPs have the “Ready to Submit” status in iTunesConnect. +/// Also ensure that you have an active developer program subscription and you have signed the latest paid +/// application agreements. +/// If you’re having trouble, see: +/// App Store Connect In-App Purchase Configuration +/// \param productIdentifiers A set of product identifiers for in-app purchases setup via +/// AppStoreConnect +/// This should be either hard coded in your application, from a file, or from a custom endpoint if you want +/// to be able to deploy new IAPs without an app update. +/// +/// \param completion An @escaping callback that is called with the loaded products. +/// If the fetch fails for any reason it will return an empty array. +/// +- (void)getProductsWithIdentifiers:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSArray * _Nonnull))completion; +/// Initiates a purchase of a StoreProduct. +/// Use this function if you are not using the Offerings system to purchase a StoreProduct. +/// If you are using the Offerings system, use Purchases/purchase(package:completion:) instead. +/// important: +/// Call this method when a user has decided to purchase a product. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will +/// handle this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an NSError. +/// If the user cancelled, userCancelled will be true. +/// \param product The StoreProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchaseProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; +/// Initiates a purchase of a Package. +/// important: +/// Call this method when a user has decided to purchase a product. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will +/// handle this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +/// \param package The Package the user intends to purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withCompletion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion; +/// Initiates a purchase of a StoreProduct with a PromotionalOffer. +/// Use this function if you are not using the Offerings system to purchase a StoreProduct with an +/// applied PromotionalOffer. +/// If you are using the Offerings system, use Purchases/purchase(package:promotionalOffer:completion:) instead. +/// important: +/// Call this method when a user has decided to purchase a product with an applied discount. +/// Only call this in direct response to user input. +/// From here Purchases will handle the purchase with StoreKit and call the PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will handle +/// this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/discounts +///
  • +///
  • +/// StoreProduct/getEligiblePromotionalOffers() +///
  • +///
  • +/// getPromotionalOffer(forProductDiscount:product:) +///
  • +///
+/// \param product The StoreProduct the user intends to purchase. +/// +/// \param promotionalOffer The PromotionalOffer to apply to the purchase. +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchaseProduct:(RCStoreProduct * _Nonnull)product withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// Purchase the passed Package. +/// Call this method when a user has decided to purchase a product with an applied discount. Only call this in +/// direct response to user input. From here Purchases will handle the purchase with StoreKit and call the +/// PurchaseCompletedBlock. +/// note: +/// You do not need to finish the transaction yourself in the completion callback, Purchases will handle +/// this for you. +/// If the purchase was successful there will be a StoreTransaction and a CustomerInfo. +/// If the purchase was not successful, there will be an Error. +/// If the user cancelled, userCancelled will be true. +/// \param package The Package the user intends to purchase +/// +/// \param promotionalOffer The PromotionalOffer to apply to the purchase +/// +/// \param completion A completion block that is called when the purchase completes. +/// +- (void)purchasePackage:(RCPackage * _Nonnull)package withPromotionalOffer:(RCPromotionalOffer * _Nonnull)promotionalOffer completion:(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL))completion SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// This method will post all purchases associated with the current App Store account to RevenueCat and +/// become associated with the current appUserID. +/// If the receipt is being used by an existing user, the current appUserID will be aliased together with +/// the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// warning: +/// This function should only be called if you’re not calling any purchase method. +/// note: +/// This method will not trigger a login prompt from App Store. However, if the receipt currently +/// on the device does not contain subscriptions, but the user has made subscription purchases, this method +/// won’t be able to restore them. Use restorePurchases(completion:) to cover those cases. +- (void)syncPurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// This method will post all purchases associated with the current App Store account to RevenueCat and become +/// associated with the current appUserID. If the receipt is being used by an existing user, the current +/// appUserID will be aliased together with the appUserID of the existing user. +/// Going forward, either appUserID will be able to reference the same user. +/// You shouldn’t use this method if you have your own account system. In that case “restoration” is provided +/// by your app passing the same appUserID used to purchase originally. +/// note: +/// This may force your users to enter the App Store password so should only be performed on request of +/// the user. Typically with a button in settings or near your purchase UI. Use +/// Purchases/syncPurchases(completion:) if you need to restore transactions programmatically. +- (void)restorePurchasesWithCompletion:(void (^ _Nullable)(RCCustomerInfo * _Nullable, NSError * _Nullable))completion; +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers instead, +/// use Purchases/getPromotionalOffer(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibility, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +///

Related symbols

+///
    +///
  • +/// checkTrialOrIntroDiscountEligibility(product:completion:) +///
  • +///
+/// \param productIdentifiers Array of product identifiers for which you want to compute eligibility +/// +/// \param completion A block that receives a dictionary of product_id -> IntroEligibility. +/// +- (void)checkTrialOrIntroDiscountEligibility:(NSArray * _Nonnull)productIdentifiers completion:(void (^ _Nonnull)(NSDictionary * _Nonnull))completion; +/// Computes whether or not a user is eligible for the introductory pricing period of a given product. +/// You should use this method to determine whether or not you show the user the normal product price or +/// the introductory price. This also applies to trials (trials are considered a type of introductory pricing). +/// iOS Introductory Offers. +/// note: +/// If you’re looking to use Promotional Offers instead, +/// use Purchases/getPromotionalOffer(forProductDiscount:product:completion:). +/// note: +/// Subscription groups are automatically collected for determining eligibility. If RevenueCat can’t +/// definitively compute the eligibility, most likely because of missing group information, it will return +/// IntroEligibilityStatus/unknown. The best course of action on unknown status is to display the non-intro +/// pricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest +/// version of iOS so that the subscription group can be collected by the SDK. +///

Related symbols

+///
    +///
  • +/// checkTrialOrIntroDiscountEligibility(productIdentifiers:completion:) +///
  • +///
+/// \param product The StoreProduct for which you want to compute eligibility. +/// +/// \param completion A block that receives an IntroEligibilityStatus. +/// +- (void)checkTrialOrIntroDiscountEligibilityForProduct:(RCStoreProduct * _Nonnull)product completion:(void (^ _Nonnull)(enum RCIntroEligibilityStatus))completion; +/// Invalidates the cache for customer information. +/// Most apps will not need to use this method; invalidating the cache can leave your app in an invalid state. +/// Refer to +/// Get User Information +/// for more information on using the cache properly. +/// This is useful for cases where customer information might have been updated outside of the app, like if a +/// promotional subscription is granted through the RevenueCat dashboard. +- (void)invalidateCustomerInfoCache; +/// Displays a sheet that enables users to redeem subscription offer codes that you generated in App Store Connect. +- (void)presentCodeRedemptionSheet SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(ios,introduced=14.0); +/// Use this method to fetch PromotionalOffer +/// to use in purchase(package:promotionalOffer:) or purchase(product:promotionalOffer:). +/// iOS Promotional Offers. +/// note: +/// If you’re looking to use free trials or Introductory Offers instead, +/// use Purchases/checkTrialOrIntroDiscountEligibility(productIdentifiers:completion:). +/// \param discount The StoreProductDiscount to apply to the product. +/// +/// \param product The StoreProduct the user intends to purchase. +/// +/// \param completion A completion block that is called when the PromotionalOffer is returned. +/// If it was not successful, there will be an Error. +/// +- (void)getPromotionalOfferForProductDiscount:(RCStoreProductDiscount * _Nonnull)discount withProduct:(RCStoreProduct * _Nonnull)product withCompletion:(void (^ _Nonnull)(RCPromotionalOffer * _Nullable, NSError * _Nullable))completion SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +/// Use this function to open the manage subscriptions page. +/// If the manage subscriptions page can’t be opened, the CustomerInfo/managementURL in +/// the CustomerInfo will be opened. If CustomerInfo/managementURL is not available, +/// the App Store’s subscription management section will be opened. +/// The completion block will be called when the modal is opened, not when it’s actually closed. +/// This is because of an undocumented change in StoreKit’s behavior between iOS 15.0 and 15.2, +/// where 15.0 would return when the modal was closed, +/// and 15.2 returns when the modal is opened. +/// \param completion A completion block that is called when the modal is closed. +/// If it was not successful, there will be an Error. +/// +- (void)showManageSubscriptionsWithCompletion:(void (^ _Nonnull)(NSError * _Nullable))completion SWIFT_AVAILABILITY(macos,introduced=10.15) SWIFT_AVAILABILITY(ios,introduced=13.0) SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the productID +/// \param productID The productID to begin a refund request for. +/// If the request was successful, there will be a RefundRequestStatus. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +/// +/// +/// throws: +/// If the request was unsuccessful, there will be an Error and RefundRequestStatus.error. +- (void)beginRefundRequestForProduct:(NSString * _Nonnull)productID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the entitlement ID. +/// \param entitlementID The entitlementID to begin a refund request for. +/// +/// +/// throws: +/// If the request was unsuccessful or the entitlement could not be found, an Error will be thrown. +/// +/// returns: +/// RefundRequestStatus: The status of the refund request. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +- (void)beginRefundRequestForEntitlement:(NSString * _Nonnull)entitlementID completion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +/// Presents a refund request sheet in the current window scene for +/// the latest transaction associated with the active entitlement. +/// +/// returns: +/// RefundRequestStatus: The status of the refund request. +/// Keep in mind the status could be RefundRequestStatus/userCancelled +/// *- throws: If the request was unsuccessful, no active entitlements could be found for the user, +/// or multiple active entitlements were found for the user, an Error will be thrown. +/// *- important: This method should only be used if your user can only +/// have a single active entitlement at a given time. +/// If a user could have more than one entitlement at a time, use beginRefundRequest(forEntitlement:) instead. +- (void)beginRefundRequestForActiveEntitlementWithCompletion:(void (^ _Nonnull)(enum RCRefundRequestStatus, NSError * _Nullable))completionHandler SWIFT_AVAILABILITY(tvos,unavailable) SWIFT_AVAILABILITY(watchos,unavailable) SWIFT_AVAILABILITY(macos,unavailable) SWIFT_AVAILABILITY(ios,introduced=15.0); +@end + + +/// Delegate for Purchases responsible for handling updating your app’s state in response to updated customer info +/// or promotional product purchases. +/// note: +/// Delegate methods can be called at any time after the delegate is set, not just in response to +/// customerInfo: calls. Ensure your app is capable of handling these calls at anytime if delegate is set. +SWIFT_PROTOCOL_NAMED("PurchasesDelegate") +@protocol RCPurchasesDelegate +@optional +/// note: +/// Deprecated, use purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) or +/// objc: purchases:receivedUpdatedCustomerInfo: +- (void)purchases:(RCPurchases * _Nonnull)purchases didReceiveUpdatedPurchaserInfo:(RCCustomerInfo * _Nonnull)purchaserInfo SWIFT_AVAILABILITY(watchos,obsoleted=1) SWIFT_AVAILABILITY(tvos,obsoleted=1) SWIFT_AVAILABILITY(macos,obsoleted=1) SWIFT_AVAILABILITY(ios,obsoleted=1); +/// Called whenever Purchases receives updated customer info. This may happen periodically +/// throughout the life of the app if new information becomes available (e.g. UIApplicationDidBecomeActive).* +/// \param purchases Related Purchases object +/// +/// \param customerInfo Updated CustomerInfo +/// +- (void)purchases:(RCPurchases * _Nonnull)purchases receivedUpdatedCustomerInfo:(RCCustomerInfo * _Nonnull)customerInfo; +/// Called when a user initiates a promotional in-app purchase from the App Store. +/// If your app is able to handle a purchase at the current time, run the deferment block in this method. +/// If the app is not in a state to make a purchase: cache the defermentBlock, +/// then call the defermentBlock when the app is ready to make the promotional purchase. +/// If the purchase should never be made, you don’t need to ever call the defermentBlock and +/// Purchases will not proceed with promotional purchases. +/// \param product StoreProduct the product that was selected from the app store +/// +- (void)purchases:(RCPurchases * _Nonnull)purchases shouldPurchasePromoProduct:(RCStoreProduct * _Nonnull)product defermentBlock:(void (^ _Nonnull)(void (^ _Nonnull)(RCStoreTransaction * _Nullable, RCCustomerInfo * _Nullable, NSError * _Nullable, BOOL)))makeDeferredPurchase; +@end + + + +SWIFT_CLASS("_TtC10RevenueCat21RCPurchasesErrorUtils") SWIFT_AVAILABILITY(macos,obsoleted=1) SWIFT_AVAILABILITY(watchos,obsoleted=1) SWIFT_AVAILABILITY(tvos,obsoleted=1) SWIFT_AVAILABILITY(ios,obsoleted=1) +@interface RCPurchasesErrorUtils : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// Status codes for refund requests. +typedef SWIFT_ENUM_NAMED(NSInteger, RCRefundRequestStatus, "RefundRequestStatus", open) { +/// User canceled submission of the refund request. + RCRefundRequestUserCancelled SWIFT_COMPILE_NAME("userCancelled") = 0, +/// Apple has received the refund request. + RCRefundRequestSuccess SWIFT_COMPILE_NAME("success") = 1, +/// There was an error with the request. See message for more details. + RCRefundRequestError SWIFT_COMPILE_NAME("error") = 2, +}; + + + +/// Enum of supported stores +typedef SWIFT_ENUM_NAMED(NSInteger, RCStore, "Store", open) { +/// For entitlements granted via Apple App Store. + RCAppStore SWIFT_COMPILE_NAME("appStore") = 0, +/// For entitlements granted via Apple Mac App Store. + RCMacAppStore SWIFT_COMPILE_NAME("macAppStore") = 1, +/// For entitlements granted via Google Play Store. + RCPlayStore SWIFT_COMPILE_NAME("playStore") = 2, +/// For entitlements granted via Stripe. + RCStripe SWIFT_COMPILE_NAME("stripe") = 3, +/// For entitlements granted via a promo in RevenueCat. + RCPromotional SWIFT_COMPILE_NAME("promotional") = 4, +/// For entitlements granted via an unknown store. + RCUnknownStore SWIFT_COMPILE_NAME("unknownStore") = 5, +}; + + +SWIFT_CLASS("_TtC10RevenueCat22StoreKitRequestFetcher") +@interface StoreKitRequestFetcher : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface StoreKitRequestFetcher (SWIFT_EXTENSION(RevenueCat)) +- (void)requestDidFinish:(SKRequest * _Nonnull)request; +- (void)request:(SKRequest * _Nonnull)request didFailWithError:(NSError * _Nonnull)error; +@end + + +SWIFT_CLASS("_TtC10RevenueCat15StoreKitWrapper") +@interface StoreKitWrapper : NSObject +- (nonnull instancetype)init; +@end + +@class SKPaymentQueue; +@class SKPaymentTransaction; +@class SKPayment; + +@interface StoreKitWrapper (SWIFT_EXTENSION(RevenueCat)) +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue updatedTransactions:(NSArray * _Nonnull)transactions; +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue removedTransactions:(NSArray * _Nonnull)transactions; +- (BOOL)paymentQueue:(SKPaymentQueue * _Nonnull)queue shouldAddStorePayment:(SKPayment * _Nonnull)payment forProduct:(SKProduct * _Nonnull)product SWIFT_WARN_UNUSED_RESULT SWIFT_AVAILABILITY(watchos,unavailable); +- (void)paymentQueue:(SKPaymentQueue * _Nonnull)queue didRevokeEntitlementsForProductIdentifiers:(NSArray * _Nonnull)productIdentifiers SWIFT_AVAILABILITY(watchos,introduced=7.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0); +@end + +enum RCStoreProductType : NSInteger; +enum RCStoreProductCategory : NSInteger; +@class NSNumberFormatter; +@class RCSubscriptionPeriod; + +/// Type that provides access to all of StoreKit‘s product type’s properties. +SWIFT_CLASS_NAMED("StoreProduct") +@interface RCStoreProduct : NSObject +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +@property (nonatomic, readonly) enum RCStoreProductType productType; +@property (nonatomic, readonly) enum RCStoreProductCategory productCategory; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedDescription; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedTitle; +@property (nonatomic, readonly, copy) NSString * _Nullable currencyCode; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +@property (nonatomic, readonly) BOOL isFamilyShareable SWIFT_AVAILABILITY(watchos,introduced=8.0) SWIFT_AVAILABILITY(tvos,introduced=14.0) SWIFT_AVAILABILITY(macos,introduced=11.0) SWIFT_AVAILABILITY(ios,introduced=14.0); +@property (nonatomic, readonly, copy) NSString * _Nullable subscriptionGroupIdentifier SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(macos,introduced=10.14) SWIFT_AVAILABILITY(tvos,introduced=12.0) SWIFT_AVAILABILITY(ios,introduced=12.0); +@property (nonatomic, readonly, strong) NSNumberFormatter * _Nullable priceFormatter; +@property (nonatomic, readonly, strong) RCSubscriptionPeriod * _Nullable subscriptionPeriod SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +@property (nonatomic, readonly, strong) RCStoreProductDiscount * _Nullable introductoryDiscount SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +@property (nonatomic, readonly, copy) NSArray * _Nonnull discounts SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +@end + +/// The category of a product, whether a subscription or a one-time purchase. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/ProductType-swift.enum +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductCategory, "ProductCategory", open) { +/// A non-renewable or auto-renewable subscription. + RCStoreProductCategorySubscription = 0, +/// A consumable or non-consumable in-app purchase. + RCStoreProductCategoryNonSubscription = 1, +}; + +/// The type of product, equivalent to StoreKit’s Product.ProductType. +///

Related Symbols

+///
    +///
  • +/// StoreProduct/ProductCategory-swift.enum +///
  • +///
+typedef SWIFT_ENUM_NAMED(NSInteger, RCStoreProductType, "ProductType", open) { +/// A consumable in-app purchase. + RCStoreProductTypeConsumable = 0, +/// A non-consumable in-app purchase. + RCStoreProductTypeNonConsumable = 1, +/// A non-renewing subscription. + RCStoreProductTypeNonRenewableSubscription = 2, +/// An auto-renewable subscription. + RCStoreProductTypeAutoRenewableSubscription = 3, +}; + +@class NSLocale; + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +/// The object containing introductory price information for the product. +@property (nonatomic, readonly, strong) SKProductDiscount * _Nullable introductoryPrice SWIFT_AVAILABILITY(macos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(watchos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(tvos,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead") SWIFT_AVAILABILITY(ios,unavailable,message="'introductoryPrice' has been renamed to 'introductoryDiscount': Use StoreProductDiscount instead"); +/// The locale used to format the price of the product. +@property (nonatomic, readonly, copy) NSLocale * _Nonnull priceLocale SWIFT_AVAILABILITY(macos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(watchos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(tvos,unavailable,message="Use localizedPriceString instead") SWIFT_AVAILABILITY(ios,unavailable,message="Use localizedPriceString instead"); +@end + + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +- (nonnull instancetype)initWithSk1Product:(SKProduct * _Nonnull)sk1Product; +/// Returns the SKProduct if this StoreProduct represents a StoreKit.SKProduct. +@property (nonatomic, readonly, strong) SKProduct * _Nullable sk1Product; +@end + +@class NSDecimalNumber; + +@interface RCStoreProduct (SWIFT_EXTENSION(RevenueCat)) +/// The decimal representation of the cost of the product, in local currency. +/// For a string representation of the price to display to customers, use localizedPriceString. +/// note: +/// this is meant for Objective-C. For Swift, use price instead. +/// seealso: +/// pricePerMonth. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nonnull price; +/// Calculates the price of this subscription product per month. +/// +/// returns: +/// nil if the product is not a subscription. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nullable pricePerMonth SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=11.2) SWIFT_AVAILABILITY(macos,introduced=10.13.2) SWIFT_AVAILABILITY(ios,introduced=11.2); +/// The price of the introductoryPrice formatted using priceFormatter. +/// +/// returns: +/// nil if there is no introductoryPrice. +@property (nonatomic, readonly, copy) NSString * _Nullable localizedIntroductoryPriceString; +@end + +enum RCPaymentMode : NSInteger; +enum RCDiscountType : NSInteger; + +/// Type that wraps StoreKit.Product.SubscriptionOffer and SKProductDiscount +/// and provides access to their properties. +/// Information about a subscription offer that you configured in App Store Connect. +SWIFT_CLASS_NAMED("StoreProductDiscount") +@interface RCStoreProductDiscount : NSObject +@property (nonatomic, readonly, copy) NSString * _Nullable offerIdentifier; +@property (nonatomic, readonly, copy) NSString * _Nullable currencyCode; +@property (nonatomic, readonly, copy) NSString * _Nonnull localizedPriceString; +@property (nonatomic, readonly) enum RCPaymentMode paymentMode; +@property (nonatomic, readonly, strong) RCSubscriptionPeriod * _Nonnull subscriptionPeriod; +@property (nonatomic, readonly) enum RCDiscountType type; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// The payment mode for a StoreProductDiscount +/// Indicates how the product discount price is charged. +typedef SWIFT_ENUM_NAMED(NSInteger, RCPaymentMode, "PaymentMode", open) { +/// Price is charged one or more times + RCPaymentModePayAsYouGo = 0, +/// Price is charged once in advance + RCPaymentModePayUpFront = 1, +/// No initial charge + RCPaymentModeFreeTrial = 2, +}; + +/// The discount type for a StoreProductDiscount +/// Wraps SKProductDiscount.Type if this StoreProductDiscount represents a SKProductDiscount. +/// Wraps Product.SubscriptionOffer.OfferType if this StoreProductDiscount represents +/// a Product.SubscriptionOffer. +typedef SWIFT_ENUM_NAMED(NSInteger, RCDiscountType, "DiscountType", open) { +/// Introductory offer + RCDiscountTypeIntroductory = 0, +/// Promotional offer for subscriptions + RCDiscountTypePromotional = 1, +}; + + + +@interface RCStoreProductDiscount (SWIFT_EXTENSION(RevenueCat)) +/// The discount price of the product in the local currency. +/// note: +/// this is meant for Objective-C. For Swift, use price instead. +@property (nonatomic, readonly, strong) NSDecimalNumber * _Nonnull price; +@end + + + + +@interface RCStoreProductDiscount (SWIFT_EXTENSION(RevenueCat)) +/// Returns the SK1ProductDiscount if this StoreProductDiscount represents a SKProductDiscount. +@property (nonatomic, readonly, strong) SKProductDiscount * _Nullable sk1Discount SWIFT_AVAILABILITY(watchos,introduced=6.2) SWIFT_AVAILABILITY(tvos,introduced=12.2) SWIFT_AVAILABILITY(macos,introduced=10.14.4) SWIFT_AVAILABILITY(ios,introduced=12.2); +@end + + +/// Abstract class that provides access to all of StoreKit’s product type’s properties. +SWIFT_CLASS_NAMED("StoreTransaction") +@interface RCStoreTransaction : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull productIdentifier; +@property (nonatomic, readonly, copy) NSDate * _Nonnull purchaseDate; +@property (nonatomic, readonly, copy) NSString * _Nonnull transactionIdentifier; +@property (nonatomic, readonly) NSInteger quantity; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + + + +@interface RCStoreTransaction (SWIFT_EXTENSION(RevenueCat)) +@property (nonatomic, readonly, copy) NSString * _Nonnull productId SWIFT_AVAILABILITY(macos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'productId' has been renamed to 'productIdentifier'"); +@property (nonatomic, readonly, copy) NSString * _Nonnull revenueCatId SWIFT_AVAILABILITY(macos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'revenueCatId' has been renamed to 'transactionIdentifier'"); +@end + + +@interface RCStoreTransaction (SWIFT_EXTENSION(RevenueCat)) +/// Returns the SKPaymentTransaction if this StoreTransaction represents a SKPaymentTransaction. +@property (nonatomic, readonly, strong) SKPaymentTransaction * _Nullable sk1Transaction; +@end + +enum RCSubscriptionPeriodUnit : NSInteger; + +/// The duration of time between subscription renewals. +/// Use the value and the unit together to determine the subscription period. +/// For example, if the unit is .month, and the value is 3, the subscription period is three months. +SWIFT_CLASS_NAMED("SubscriptionPeriod") +@interface RCSubscriptionPeriod : NSObject +/// The number of period units. +@property (nonatomic, readonly) NSInteger value; +/// The increment of time that a subscription period is specified in. +@property (nonatomic, readonly) enum RCSubscriptionPeriodUnit unit; +- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) NSUInteger hash; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// Units of time used to describe subscription periods. +typedef SWIFT_ENUM_NAMED(NSInteger, RCSubscriptionPeriodUnit, "Unit", open) { +/// A subscription period unit of a day. + RCSubscriptionPeriodUnitDay = 0, +/// A subscription period unit of a week. + RCSubscriptionPeriodUnitWeek = 1, +/// A subscription period unit of a month. + RCSubscriptionPeriodUnitMonth = 2, +/// A subscription period unit of a year. + RCSubscriptionPeriodUnitYear = 3, +}; + + + +@interface RCSubscriptionPeriod (SWIFT_EXTENSION(RevenueCat)) +@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; +@end + + +@interface RCSubscriptionPeriod (SWIFT_EXTENSION(RevenueCat)) +/// The number of units per subscription period +@property (nonatomic, readonly) NSInteger numberOfUnits SWIFT_AVAILABILITY(macos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(watchos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(tvos,unavailable,message="'numberOfUnits' has been renamed to 'value'") SWIFT_AVAILABILITY(ios,unavailable,message="'numberOfUnits' has been renamed to 'value'"); +@end + + + +SWIFT_CLASS("_TtC10RevenueCat20TrackingManagerProxy") +@interface TrackingManagerProxy : NSObject +@property (nonatomic, readonly, copy) NSString * _Nonnull authorizationStatusPropertyName; +- (NSInteger)trackingAuthorizationStatus SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS_NAMED("Transaction") SWIFT_AVAILABILITY(macos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(watchos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(tvos,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") SWIFT_AVAILABILITY(ios,obsoleted=1,message="'Transaction' has been renamed to 'RCStoreTransaction'") +@interface RCTransaction : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + + +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#pragma clang diagnostic pop +#endif + +#endif diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat.h b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat.h new file mode 100644 index 0000000..0596d8a --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Headers/RevenueCat.h @@ -0,0 +1,21 @@ +// +// Copyright RevenueCat Inc. All Rights Reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// RevenueCat.h +// +// Created by Andrés Boedo on 8/18/20. +// + +#import + +//! Project version number for Purchases. +FOUNDATION_EXPORT double RevenueCatVersionNumber; + +//! Project version string for Purchases. +FOUNDATION_EXPORT const unsigned char RevenueCatVersionString[]; diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Info.plist b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Info.plist new file mode 100644 index 0000000..ac96273 Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Info.plist differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo new file mode 100644 index 0000000..a3a9393 Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64.swiftsourceinfo b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64.swiftsourceinfo new file mode 100644 index 0000000..a3a9393 Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/Project/x86_64.swiftsourceinfo differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftdoc b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 0000000..018153a Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftinterface b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftinterface new file mode 100644 index 0000000..1e3745f --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftinterface @@ -0,0 +1,1419 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +// swift-module-flags: -target arm64-apple-ios11.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name RevenueCat +import Foundation +@_exported import RevenueCat +import StoreKit +import Swift +import UIKit +import _Concurrency +@_hasMissingDesignatedInitializers @objc(RCOffering) public class Offering : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let serverDescription: Swift.String + @objc final public let availablePackages: [RevenueCat.Package] + @objc public var lifetime: RevenueCat.Package? { + get + } + @objc public var annual: RevenueCat.Package? { + get + } + @objc public var sixMonth: RevenueCat.Package? { + get + } + @objc public var threeMonth: RevenueCat.Package? { + get + } + @objc public var twoMonth: RevenueCat.Package? { + get + } + @objc public var monthly: RevenueCat.Package? { + get + } + @objc public var weekly: RevenueCat.Package? { + get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc public func package(identifier: Swift.String?) -> RevenueCat.Package? + @objc public subscript(key: Swift.String) -> RevenueCat.Package? { + @objc get + } + @objc deinit +} +extension RevenueCat.Offering : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@_hasMissingDesignatedInitializers @objc(RCOfferings) public class Offerings : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.Offering] + @objc public var current: RevenueCat.Offering? { + @objc get + } + @objc public func offering(identifier: Swift.String?) -> RevenueCat.Offering? + @objc public subscript(key: Swift.String) -> RevenueCat.Offering? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(RCStoreProductCategory) public enum ProductCategory : Swift.Int { + case subscription + case nonSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCStoreProductType) public enum ProductType : Swift.Int { + case consumable + case nonConsumable + case nonRenewableSubscription + case autoRenewableSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(tvOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(watchOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(macOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @objc(restoreTransactionsWithCompletionBlock:) dynamic public func restoreTransactions(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "restorePurchases()") + @available(macOS, unavailable, introduced: 10.15, renamed: "restorePurchases()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "restorePurchases()") + public func restoreTransactions() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc dynamic public func customerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc(purchaserInfoWithCompletionBlock:) dynamic public func purchaserInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "customerInfo()") + @available(macOS, unavailable, introduced: 10.15, renamed: "customerInfo()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "customerInfo()") + public func purchaserInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @objc(productsWithIdentifiers:completionBlock:) dynamic public func products(_ productIdentifiers: [Swift.String], completion: @escaping ([StoreKit.SKProduct]) -> Swift.Void) + @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(offeringsWithCompletionBlock:) dynamic public func offerings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(tvOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(watchOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(macOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @objc(purchasePackage:withCompletionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:)") + public func purchasePackage(_ package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:completion:)") + @objc(purchasePackage:withDiscount:completionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @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:_:)") + @objc(purchaseProduct:withCompletionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:)") + public func purchaseProduct(_ product: StoreKit.SKProduct) async throws + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:completion:)") + @objc(purchaseProduct:withDiscount:completionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount) async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + @available(iOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) + @available(iOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (Swift.AnyObject, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(tvOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(watchOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macCatalyst, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @objc dynamic public func invalidatePurchaserInfoCache() + @available(iOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macCatalyst, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @objc(checkTrialOrIntroductoryPriceEligibility:completion:) dynamic public func checkTrialOrIntroductoryPriceEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + @available(iOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.14.4, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @objc(paymentDiscountForProductDiscount:product:completion:) dynamic public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct, completion: @escaping (StoreKit.SKPaymentDiscount?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.15, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct) async throws -> StoreKit.SKPaymentDiscount + #endif + + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(createAlias:completionBlock:) dynamic public func createAlias(_ alias: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(identify:completionBlock:) dynamic public func identify(_ appUserID: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logOut") + @available(tvOS, obsoleted: 1, renamed: "logOut") + @available(watchOS, obsoleted: 1, renamed: "logOut") + @available(macOS, obsoleted: 1, renamed: "logOut") + @objc(resetWithCompletionBlock:) dynamic public func reset(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "CustomerInfo") +@available(tvOS, obsoleted: 1, renamed: "CustomerInfo") +@available(watchOS, obsoleted: 1, renamed: "CustomerInfo") +@available(macOS, obsoleted: 1, renamed: "CustomerInfo") +@objc(RCPurchaserInfo) public class PurchaserInfo : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "StoreTransaction") +@available(tvOS, obsoleted: 1, renamed: "StoreTransaction") +@available(watchOS, obsoleted: 1, renamed: "StoreTransaction") +@available(macOS, obsoleted: 1, renamed: "StoreTransaction") +@objc(RCTransaction) public class Transaction : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.StoreTransaction { + @available(iOS, obsoleted: 1, renamed: "productIdentifier") + @available(tvOS, obsoleted: 1, renamed: "productIdentifier") + @available(watchOS, obsoleted: 1, renamed: "productIdentifier") + @available(macOS, obsoleted: 1, renamed: "productIdentifier") + @objc final public var productId: Swift.String { + @objc get + } + @available(iOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(tvOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(watchOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(macOS, obsoleted: 1, renamed: "transactionIdentifier") + @objc final public var revenueCatId: Swift.String { + @objc get + } +} +extension RevenueCat.Package { + @available(iOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(tvOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(watchOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macCatalyst, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @objc dynamic public var product: StoreKit.SKProduct { + @objc get + } +} +extension RevenueCat.StoreProductDiscount.PaymentMode { + @available(iOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(tvOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(watchOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macCatalyst, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + public static var none: RevenueCat.StoreProductDiscount.PaymentMode { + get + } +} +@available(iOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(tvOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(watchOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macCatalyst, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +public enum RCPaymentMode { +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(tvOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(watchOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macCatalyst, obsoleted: 1, message: "Use PromotionalOffer instead") +@objc(RCPromotionalOfferEligibility) public class PromotionalOfferEligibility : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public var ErrorDomain: Foundation.NSErrorDomain { + get +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public enum RCBackendErrorCode { +} +@objc @_inheritsConvenienceInitializers @available(iOS, obsoleted: 1) +@available(tvOS, obsoleted: 1) +@available(watchOS, obsoleted: 1) +@available(macOS, obsoleted: 1) +@available(macCatalyst, obsoleted: 1) +public class RCPurchasesErrorUtils : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "ErrorCode") + @available(tvOS, obsoleted: 1, renamed: "ErrorCode") + @available(watchOS, obsoleted: 1, renamed: "ErrorCode") + @available(macOS, obsoleted: 1, renamed: "ErrorCode") + @available(macCatalyst, obsoleted: 1, renamed: "ErrorCode") + public enum Errors { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum FinishableKey { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ReadableErrorCodeKey { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum ErrorCode { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum RevenueCatBackendErrorCode { + } + @available(iOS, obsoleted: 1, renamed: "StoreTransaction") + @available(tvOS, obsoleted: 1, renamed: "StoreTransaction") + @available(watchOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macCatalyst, obsoleted: 1, renamed: "StoreTransaction") + public enum Transaction { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfos { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PackageType { + } + @available(iOS, obsoleted: 1, renamed: "CustomerInfo") + @available(tvOS, obsoleted: 1, renamed: "CustomerInfo") + @available(watchOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macCatalyst, obsoleted: 1, renamed: "CustomerInfo") + public enum PurchaserInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Offering { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ErrorUtils { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Store { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PeriodType { + } +} +@_hasMissingDesignatedInitializers @objc(RCPromotionalOffer) final public class PromotionalOffer : ObjectiveC.NSObject { + final public let discount: RevenueCat.StoreProductDiscount + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, introduced: 6.2, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, introduced: 10.15, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + +} +@objc(RCPurchasesErrorCode) public enum ErrorCode : Swift.Int, Swift.Error { + @objc(RCUnknownError) case unknownError = 0 + @objc(RCPurchaseCancelledError) case purchaseCancelledError = 1 + @objc(RCStoreProblemError) case storeProblemError = 2 + @objc(RCPurchaseNotAllowedError) case purchaseNotAllowedError = 3 + @objc(RCPurchaseInvalidError) case purchaseInvalidError = 4 + @objc(RCProductNotAvailableForPurchaseError) case productNotAvailableForPurchaseError = 5 + @objc(RCProductAlreadyPurchasedError) case productAlreadyPurchasedError = 6 + @objc(RCReceiptAlreadyInUseError) case receiptAlreadyInUseError = 7 + @objc(RCInvalidReceiptError) case invalidReceiptError = 8 + @objc(RCMissingReceiptFileError) case missingReceiptFileError = 9 + @objc(RCNetworkError) case networkError = 10 + @objc(RCInvalidCredentialsError) case invalidCredentialsError = 11 + @objc(RCUnexpectedBackendResponseError) case unexpectedBackendResponseError = 12 + @objc(RCReceiptInUseByOtherSubscriberError) case receiptInUseByOtherSubscriberError = 13 + @objc(RCInvalidAppUserIdError) case invalidAppUserIdError = 14 + @objc(RCOperationAlreadyInProgressForProductError) case operationAlreadyInProgressForProductError = 15 + @objc(RCUnknownBackendError) case unknownBackendError = 16 + @objc(RCInvalidAppleSubscriptionKeyError) case invalidAppleSubscriptionKeyError = 17 + @objc(RCIneligibleError) case ineligibleError = 18 + @objc(RCInsufficientPermissionsError) case insufficientPermissionsError = 19 + @objc(RCPaymentPendingError) case paymentPendingError = 20 + @objc(RCInvalidSubscriberAttributesError) case invalidSubscriberAttributesError = 21 + @objc(RCLogOutAnonymousUserError) case logOutAnonymousUserError = 22 + @objc(RCConfigurationError) case configurationError = 23 + @objc(RCUnsupportedError) case unsupportedError = 24 + @objc(RCEmptySubscriberAttributesError) case emptySubscriberAttributes = 25 + @objc(RCProductDiscountMissingIdentifierError) case productDiscountMissingIdentifierError = 26 + @objc(RCMissingAppUserIDForAliasCreationError) case missingAppUserIDForAliasCreationError = 27 + @objc(RCProductDiscountMissingSubscriptionGroupIdentifierError) case productDiscountMissingSubscriptionGroupIdentifierError = 28 + @objc(RCCustomerInfoError) case customerInfoError = 29 + @objc(RCSystemInfoError) case systemInfoError = 30 + @objc(RCBeginRefundRequestError) case beginRefundRequestError = 31 + @objc(RCProductRequestTimedOut) case productRequestTimedOut = 32 + @objc(RCAPIEndpointBlocked) case apiEndpointBlockedError = 33 + @objc(RCInvalidPromotionalOfferError) case invalidPromotionalOfferError = 34 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public static var _nsErrorDomain: Swift.String { + get + } + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.ErrorCode : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.ErrorCode] + public static var allCases: [RevenueCat.ErrorCode] { + get + } +} +extension RevenueCat.ErrorCode { + public var description: Swift.String { + get + } +} +extension RevenueCat.ErrorCode : Foundation.CustomNSError { + public var errorUserInfo: [Swift.String : Any] { + get + } +} +@objc(RCRefundRequestStatus) public enum RefundRequestStatus : Swift.Int { + @objc(RCRefundRequestUserCancelled) case userCancelled = 0 + @objc(RCRefundRequestSuccess) case success + @objc(RCRefundRequestError) case error + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Purchases { + @objc(RCPlatformInfo) final public class PlatformInfo : ObjectiveC.NSObject { + @objc public init(flavor: Swift.String, version: Swift.String) + @objc deinit + } + @objc public static var platformInfo: RevenueCat.Purchases.PlatformInfo? +} +@_inheritsConvenienceInitializers @objc(RCDangerousSettings) public class DangerousSettings : ObjectiveC.NSObject { + @objc final public let autoSyncPurchases: Swift.Bool + @objc override convenience dynamic public init() + @objc public init(autoSyncPurchases: Swift.Bool) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(RCCustomerInfo) public class CustomerInfo : ObjectiveC.NSObject { + @objc final public let entitlements: RevenueCat.EntitlementInfos + @objc public var activeSubscriptions: Swift.Set { + @objc get + } + @objc public var allPurchasedProductIdentifiers: Swift.Set { + @objc get + } + @objc public var latestExpirationDate: Foundation.Date? { + @objc get + } + @available(*, deprecated, message: "use nonSubscriptionTransactions") + @objc public var nonConsumablePurchases: Swift.Set { + @objc get + } + @objc final public let nonSubscriptionTransactions: [RevenueCat.StoreTransaction] + @objc final public let requestDate: Foundation.Date + @objc final public let firstSeen: Foundation.Date + @objc final public let originalAppUserId: Swift.String + @objc final public let managementURL: Foundation.URL? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let originalApplicationVersion: Swift.String? + @objc final public let rawData: [Swift.String : Any] + @objc public func expirationDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func expirationDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.CustomerInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +@objc(RCStore) public enum Store : Swift.Int { + @objc(RCAppStore) case appStore = 0 + @objc(RCMacAppStore) case macAppStore = 1 + @objc(RCPlayStore) case playStore = 2 + @objc(RCStripe) case stripe = 3 + @objc(RCPromotional) case promotional = 4 + @objc(RCUnknownStore) case unknownStore = 5 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Store : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.Store] + public static var allCases: [RevenueCat.Store] { + get + } +} +@objc(RCPeriodType) public enum PeriodType : Swift.Int { + @objc(RCNormal) case normal = 0 + @objc(RCIntro) case intro = 1 + @objc(RCTrial) case trial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PeriodType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PeriodType] + public static var allCases: [RevenueCat.PeriodType] { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfo) public class EntitlementInfo : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let isActive: Swift.Bool + @objc final public let willRenew: Swift.Bool + @objc final public let periodType: RevenueCat.PeriodType + @objc final public let latestPurchaseDate: Foundation.Date? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let expirationDate: Foundation.Date? + @objc final public let store: RevenueCat.Store + @objc final public let productIdentifier: Swift.String + @objc final public let isSandbox: Swift.Bool + @objc final public let unsubscribeDetectedAt: Foundation.Date? + @objc final public let billingIssueDetectedAt: Foundation.Date? + @objc final public let ownershipType: RevenueCat.PurchaseOwnershipType + @objc final public let rawData: [Swift.String : Any] + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.EntitlementInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +extension RevenueCat.EntitlementInfo : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCLogLevel) public enum LogLevel : Swift.Int, Swift.CustomStringConvertible { + case debug, info, warn, error + public var description: Swift.String { + get + } + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +public typealias VerboseLogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String, _ file: Swift.String?, _ function: Swift.String?, _ line: Swift.UInt) -> Swift.Void +public typealias LogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String) -> Swift.Void +public typealias SK1Transaction = StoreKit.SKPaymentTransaction +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Transaction = StoreKit.Transaction +@_hasMissingDesignatedInitializers @objc(RCStoreTransaction) final public class StoreTransaction : ObjectiveC.NSObject { + @objc final public var productIdentifier: Swift.String { + @objc get + } + @objc final public var purchaseDate: Foundation.Date { + @objc get + } + @objc final public var transactionIdentifier: Swift.String { + @objc get + } + @objc final public var quantity: Swift.Int { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreTransaction { + @objc final public var sk1Transaction: RevenueCat.SK1Transaction? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Transaction: RevenueCat.SK2Transaction? { + get + } +} +extension RevenueCat.StoreTransaction : Swift.Identifiable { + final public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +public protocol RawDataContainer { + associatedtype Content + var rawData: Self.Content { get } +} +public typealias PurchaseResultData = (transaction: RevenueCat.StoreTransaction?, customerInfo: RevenueCat.CustomerInfo, userCancelled: Swift.Bool) +public typealias PurchaseCompletedBlock = (RevenueCat.StoreTransaction?, RevenueCat.CustomerInfo?, Swift.Error?, Swift.Bool) -> Swift.Void +public typealias DeferredPromotionalPurchaseBlock = (@escaping RevenueCat.PurchaseCompletedBlock) -> Swift.Void +@_hasMissingDesignatedInitializers @objc(RCPurchases) public class Purchases : ObjectiveC.NSObject { + @objc(sharedPurchases) public static var shared: RevenueCat.Purchases { + @objc get + } + @objc public static var isConfigured: Swift.Bool { + @objc get + } + @objc public var delegate: RevenueCat.PurchasesDelegate? { + @objc get + @objc set + } + @objc public static var automaticAppleSearchAdsAttributionCollection: Swift.Bool + @objc public static var logLevel: RevenueCat.LogLevel { + @objc get + @objc set + } + @objc public static var proxyURL: Foundation.URL? { + @objc get + @objc set + } + @objc public static var forceUniversalAppStore: Swift.Bool { + @objc get + @objc set + } + @available(iOS 8.0, macOS 10.14, watchOS 6.2, macCatalyst 13.0, *) + @objc public static var simulatesAskToBuyInSandbox: Swift.Bool { + @objc get + @objc set + } + @objc public static func canMakePayments() -> Swift.Bool + @objc public static var logHandler: RevenueCat.LogHandler { + @objc get + @objc set + } + @objc public static var verboseLogHandler: RevenueCat.VerboseLogHandler { + @objc get + @objc set + } + @objc public static var verboseLogs: Swift.Bool { + @objc get + @objc set + } + @objc public static var frameworkVersion: Swift.String { + @objc get + } + @objc public var finishTransactions: Swift.Bool { + @objc get + @objc set + } + @objc public func collectDeviceIdentifiers() + @objc deinit +} +extension RevenueCat.Purchases { + @objc dynamic public func setAttributes(_ attributes: [Swift.String : Swift.String]) + @objc dynamic public func setEmail(_ email: Swift.String?) + @objc dynamic public func setPhoneNumber(_ phoneNumber: Swift.String?) + @objc dynamic public func setDisplayName(_ displayName: Swift.String?) + @objc dynamic public func setPushToken(_ pushToken: Foundation.Data?) + @objc dynamic public func setAdjustID(_ adjustID: Swift.String?) + @objc dynamic public func setAppsflyerID(_ appsflyerID: Swift.String?) + @objc dynamic public func setFBAnonymousID(_ fbAnonymousID: Swift.String?) + @objc dynamic public func setMparticleID(_ mparticleID: Swift.String?) + @objc dynamic public func setOnesignalID(_ onesignalID: Swift.String?) + @objc dynamic public func setAirshipChannelID(_ airshipChannelID: Swift.String?) + @objc dynamic public func setCleverTapID(_ cleverTapID: Swift.String?) + @objc dynamic public func setMediaSource(_ mediaSource: Swift.String?) + @objc dynamic public func setCampaign(_ campaign: Swift.String?) + @objc dynamic public func setAdGroup(_ adGroup: Swift.String?) + @objc dynamic public func setAd(_ installAd: Swift.String?) + @objc dynamic public func setKeyword(_ keyword: Swift.String?) + @objc dynamic public func setCreative(_ creative: Swift.String?) +} +extension RevenueCat.Purchases { + @objc dynamic public var appUserID: Swift.String { + @objc get + } + @objc dynamic public var isAnonymous: Swift.Bool { + @objc get + } + @objc(logIn:completion:) dynamic public func logIn(_ appUserID: Swift.String, completion: @escaping (RevenueCat.CustomerInfo?, Swift.Bool, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logIn(_ appUserID: Swift.String) async throws -> (customerInfo: RevenueCat.CustomerInfo, created: Swift.Bool) + #endif + + @objc dynamic public func logOut(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logOut() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func getOfferings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func offerings() async throws -> RevenueCat.Offerings + #endif + +} +extension RevenueCat.Purchases { + @objc dynamic public func getCustomerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func customerInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public var customerInfoStream: _Concurrency.AsyncStream { + get + } + @objc(getProductsWithIdentifiers:completion:) dynamic public func getProducts(_ productIdentifiers: [Swift.String], completion: @escaping ([RevenueCat.StoreProduct]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func products(_ productIdentifiers: [Swift.String]) async -> [RevenueCat.StoreProduct] + #endif + + @objc(purchaseProduct:withCompletion:) dynamic public func purchase(product: RevenueCat.StoreProduct, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc(purchasePackage:withCompletion:) dynamic public func purchase(package: RevenueCat.Package, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchaseProduct:withPromotionalOffer:completion:) dynamic public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchasePackage:withPromotionalOffer:completion:) dynamic public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc dynamic public func syncPurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func syncPurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func restorePurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func restorePurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc(checkTrialOrIntroDiscountEligibility:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + + @objc(checkTrialOrIntroDiscountEligibilityForProduct:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.IntroEligibilityStatus) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct) async -> RevenueCat.IntroEligibilityStatus + #endif + + @objc dynamic public func invalidateCustomerInfoCache() + @available(iOS 14.0, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @available(macOS, unavailable) + @available(macCatalyst, unavailable) + @objc dynamic public func presentCodeRedemptionSheet() + @available(iOS 12.2, macOS 10.14.4, macCatalyst 13.0, tvOS 12.2, watchOS 6.2, *) + @objc(getPromotionalOfferForProductDiscount:withProduct:withCompletion:) dynamic public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.PromotionalOffer?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) async throws -> RevenueCat.PromotionalOffer + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getEligiblePromotionalOffers(forProduct product: RevenueCat.StoreProduct) async -> [RevenueCat.PromotionalOffer] + #endif + + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc dynamic public func showManageSubscriptions(completion: @escaping (Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + public func showManageSubscriptions() async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForProduct:completion:) dynamic public func beginRefundRequest(forProduct productID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForEntitlement:completion:) dynamic public func beginRefundRequest(forEntitlement entitlementID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForActiveEntitlementWithCompletion:) dynamic public func beginRefundRequestForActiveEntitlement() async throws -> RevenueCat.RefundRequestStatus + #endif + +} +extension RevenueCat.Purchases { + @discardableResult + @objc(configureWithAPIKey:) public static func configure(withAPIKey apiKey: Swift.String) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:dangerousSettings:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool, dangerousSettings: RevenueCat.DangerousSettings?) -> RevenueCat.Purchases +} +extension RevenueCat.Purchases { + @objc dynamic public func shouldPurchasePromoProduct(_ product: RevenueCat.StoreProduct, defermentBlock: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +extension RevenueCat.Purchases { + @available(*, deprecated, message: "use Purchases.logLevel instead") + @objc public static var debugLogsEnabled: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Configure behavior through the RevenueCat dashboard instead") + @objc dynamic public var allowSharingAppStoreAccount: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Use the set functions instead") + @objc public static func addAttributionData(_ data: [Swift.String : Any], fromNetwork network: RevenueCat.AttributionNetwork) + @available(*, deprecated, message: "Use the set functions instead") + @objc(addAttributionData:fromNetwork:forNetworkUserId:) public static func addAttributionData(_ data: [Swift.String : Any], from network: RevenueCat.AttributionNetwork, forNetworkUserId networkUserId: Swift.String?) +} +@objc(RCSubscriptionPeriod) public class SubscriptionPeriod : ObjectiveC.NSObject { + @objc final public let value: Swift.Int + @objc final public let unit: RevenueCat.SubscriptionPeriod.Unit + public init(value: Swift.Int, unit: RevenueCat.SubscriptionPeriod.Unit) + @objc(RCSubscriptionPeriodUnit) public enum Unit : Swift.Int { + case day = 0 + case week = 1 + case month = 2 + case year = 3 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.SubscriptionPeriod { + @available(iOS, unavailable, renamed: "value") + @available(tvOS, unavailable, renamed: "value") + @available(watchOS, unavailable, renamed: "value") + @available(macOS, unavailable, renamed: "value") + @objc dynamic public var numberOfUnits: Swift.Int { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + get + } +} +extension RevenueCat.SubscriptionPeriod { + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Encodable { +} +extension RevenueCat.SubscriptionPeriod : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +@objc(RCPurchaseOwnershipType) public enum PurchaseOwnershipType : Swift.Int { + case purchased = 0 + case familyShared = 1 + case unknown = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PurchaseOwnershipType] + public static var allCases: [RevenueCat.PurchaseOwnershipType] { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.PeriodType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.Store : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfos) public class EntitlementInfos : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.EntitlementInfo] + @objc public var active: [Swift.String : RevenueCat.EntitlementInfo] { + @objc get + } + @objc public subscript(key: Swift.String) -> RevenueCat.EntitlementInfo? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc deinit +} +@objc(RCPackageType) public enum PackageType : Swift.Int { + case unknown = -2, custom, lifetime, annual, sixMonth, threeMonth, twoMonth, monthly, weekly + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCPackage) public class Package : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let packageType: RevenueCat.PackageType + @objc final public let storeProduct: RevenueCat.StoreProduct + @objc final public let offeringIdentifier: Swift.String + @objc public var localizedPriceString: Swift.String { + @objc get + } + @objc public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +@objc extension RevenueCat.Package { + @objc public static func string(from packageType: RevenueCat.PackageType) -> Swift.String? + @objc dynamic public class func packageType(from string: Swift.String) -> RevenueCat.PackageType +} +extension RevenueCat.Package : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCIntroEligibilityStatus) public enum IntroEligibilityStatus : Swift.Int { + case unknown = 0 + case ineligible + case eligible + case noIntroOfferExists + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.IntroEligibilityStatus : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.IntroEligibilityStatus] + public static var allCases: [RevenueCat.IntroEligibilityStatus] { + get + } +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(RCIntroEligibility) public class IntroEligibility : ObjectiveC.NSObject { + @objc final public let status: RevenueCat.IntroEligibilityStatus + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +@available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) +public typealias SK1ProductDiscount = StoreKit.SKProductDiscount +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2ProductDiscount = StoreKit.Product.SubscriptionOffer +@_hasMissingDesignatedInitializers @objc(RCStoreProductDiscount) final public class StoreProductDiscount : ObjectiveC.NSObject { + @objc(RCPaymentMode) public enum PaymentMode : Swift.Int { + case payAsYouGo = 0 + case payUpFront = 1 + case freeTrial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCDiscountType) public enum DiscountType : Swift.Int { + case introductory = 0 + case promotional = 1 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc final public var offerIdentifier: Swift.String? { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var paymentMode: RevenueCat.StoreProductDiscount.PaymentMode { + @objc get + } + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod { + @objc get + } + @objc final public var type: RevenueCat.StoreProductDiscount.DiscountType { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProductDiscount { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } +} +extension RevenueCat.StoreProductDiscount { + public struct Data : Swift.Hashable { + public func hash(into hasher: inout Swift.Hasher) + public static func == (a: RevenueCat.StoreProductDiscount.Data, b: RevenueCat.StoreProductDiscount.Data) -> Swift.Bool + public var hashValue: Swift.Int { + get + } + } +} +extension RevenueCat.StoreProductDiscount { + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var sk1Discount: RevenueCat.SK1ProductDiscount? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Discount: RevenueCat.SK2ProductDiscount? { + get + } +} +extension RevenueCat.StoreProductDiscount : Swift.Encodable { + final public func encode(to encoder: Swift.Encoder) throws +} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Encodable { +} +extension RevenueCat.StoreProductDiscount : Swift.Identifiable { + final public var id: RevenueCat.StoreProductDiscount.Data { + get + } + public typealias ID = RevenueCat.StoreProductDiscount.Data +} +@objc(RCPurchasesDelegate) public protocol PurchasesDelegate : ObjectiveC.NSObjectProtocol { + @available(swift, obsoleted: 1, renamed: "purchases(_:receivedUpdated:)") + @available(iOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @objc(purchases:didReceiveUpdatedPurchaserInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, didReceiveUpdated purchaserInfo: RevenueCat.CustomerInfo) + @objc(purchases:receivedUpdatedCustomerInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, receivedUpdated customerInfo: RevenueCat.CustomerInfo) + @objc optional func purchases(_ purchases: RevenueCat.Purchases, shouldPurchasePromoProduct product: RevenueCat.StoreProduct, defermentBlock makeDeferredPurchase: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +@objc(RCAttributionNetwork) public enum AttributionNetwork : Swift.Int { + case appleSearchAds + case adjust + case appsFlyer + case branch + case tenjin + case facebook + case mParticle + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.AttributionNetwork : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +public typealias SK1Product = StoreKit.SKProduct +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Product = StoreKit.Product +@_hasMissingDesignatedInitializers @objc(RCStoreProduct) final public class StoreProduct : ObjectiveC.NSObject { + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc final public var productType: RevenueCat.StoreProduct.ProductType { + @objc get + } + @objc final public var productCategory: RevenueCat.StoreProduct.ProductCategory { + @objc get + } + @objc final public var localizedDescription: Swift.String { + @objc get + } + @objc final public var localizedTitle: Swift.String { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var productIdentifier: Swift.String { + @objc get + } + @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 8.0, *) + @objc final public var isFamilyShareable: Swift.Bool { + @objc get + } + @available(iOS 12.0, macCatalyst 13.0, tvOS 12.0, macOS 10.14, watchOS 6.2, *) + @objc final public var subscriptionGroupIdentifier: Swift.String? { + @objc get + } + @objc final public var priceFormatter: Foundation.NumberFormatter? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var introductoryDiscount: RevenueCat.StoreProductDiscount? { + @objc get + } + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var discounts: [RevenueCat.StoreProductDiscount] { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var pricePerMonth: Foundation.NSDecimalNumber? { + @objc get + } + @objc final public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } +} +@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) +extension RevenueCat.StoreProduct { + + #if compiler(>=5.3) && $AsyncAwait + final public func getEligiblePromotionalOffers() async -> [RevenueCat.PromotionalOffer] + #endif + +} +extension RevenueCat.StoreProduct { + @objc convenience dynamic public init(sk1Product: RevenueCat.SK1Product) + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + convenience public init(sk2Product: RevenueCat.SK2Product) + @objc final public var sk1Product: RevenueCat.SK1Product? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Product: RevenueCat.SK2Product? { + get + } +} +extension RevenueCat.StoreProduct { + @available(iOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(tvOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(watchOS, unavailable, introduced: 6.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(macOS, unavailable, introduced: 10.13.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @objc final public var introductoryPrice: StoreKit.SKProductDiscount? { + @objc get + } + @available(iOS, unavailable, message: "Use localizedPriceString instead") + @available(tvOS, unavailable, message: "Use localizedPriceString instead") + @available(watchOS, unavailable, message: "Use localizedPriceString instead") + @available(macOS, unavailable, message: "Use localizedPriceString instead") + @objc final public var priceLocale: Foundation.Locale { + @objc get + } +} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.RawRepresentable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductType : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.Equatable {} +extension RevenueCat.ErrorCode : Swift.Hashable {} +extension RevenueCat.ErrorCode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.CustomStringConvertible {} +extension RevenueCat.RefundRequestStatus : Swift.Equatable {} +extension RevenueCat.RefundRequestStatus : Swift.Hashable {} +extension RevenueCat.RefundRequestStatus : Swift.RawRepresentable {} +extension RevenueCat.Store : Swift.Equatable {} +extension RevenueCat.Store : Swift.Hashable {} +extension RevenueCat.Store : Swift.RawRepresentable {} +extension RevenueCat.PeriodType : Swift.Equatable {} +extension RevenueCat.PeriodType : Swift.Hashable {} +extension RevenueCat.PeriodType : Swift.RawRepresentable {} +extension RevenueCat.LogLevel : Swift.Equatable {} +extension RevenueCat.LogLevel : Swift.Hashable {} +extension RevenueCat.LogLevel : Swift.RawRepresentable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Equatable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Hashable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.RawRepresentable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Equatable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Hashable {} +extension RevenueCat.PurchaseOwnershipType : Swift.RawRepresentable {} +extension RevenueCat.PackageType : Swift.Equatable {} +extension RevenueCat.PackageType : Swift.Hashable {} +extension RevenueCat.PackageType : Swift.RawRepresentable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Equatable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Hashable {} +extension RevenueCat.IntroEligibilityStatus : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.RawRepresentable {} +extension RevenueCat.AttributionNetwork : Swift.Equatable {} +extension RevenueCat.AttributionNetwork : Swift.Hashable {} +extension RevenueCat.AttributionNetwork : Swift.RawRepresentable {} diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftmodule b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftmodule new file mode 100644 index 0000000..20389fa Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64-apple-ios.swiftmodule differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftdoc b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000..018153a Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftdoc differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftinterface b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftinterface new file mode 100644 index 0000000..1e3745f --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftinterface @@ -0,0 +1,1419 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +// swift-module-flags: -target arm64-apple-ios11.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name RevenueCat +import Foundation +@_exported import RevenueCat +import StoreKit +import Swift +import UIKit +import _Concurrency +@_hasMissingDesignatedInitializers @objc(RCOffering) public class Offering : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let serverDescription: Swift.String + @objc final public let availablePackages: [RevenueCat.Package] + @objc public var lifetime: RevenueCat.Package? { + get + } + @objc public var annual: RevenueCat.Package? { + get + } + @objc public var sixMonth: RevenueCat.Package? { + get + } + @objc public var threeMonth: RevenueCat.Package? { + get + } + @objc public var twoMonth: RevenueCat.Package? { + get + } + @objc public var monthly: RevenueCat.Package? { + get + } + @objc public var weekly: RevenueCat.Package? { + get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc public func package(identifier: Swift.String?) -> RevenueCat.Package? + @objc public subscript(key: Swift.String) -> RevenueCat.Package? { + @objc get + } + @objc deinit +} +extension RevenueCat.Offering : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@_hasMissingDesignatedInitializers @objc(RCOfferings) public class Offerings : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.Offering] + @objc public var current: RevenueCat.Offering? { + @objc get + } + @objc public func offering(identifier: Swift.String?) -> RevenueCat.Offering? + @objc public subscript(key: Swift.String) -> RevenueCat.Offering? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(RCStoreProductCategory) public enum ProductCategory : Swift.Int { + case subscription + case nonSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCStoreProductType) public enum ProductType : Swift.Int { + case consumable + case nonConsumable + case nonRenewableSubscription + case autoRenewableSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(tvOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(watchOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(macOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @objc(restoreTransactionsWithCompletionBlock:) dynamic public func restoreTransactions(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "restorePurchases()") + @available(macOS, unavailable, introduced: 10.15, renamed: "restorePurchases()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "restorePurchases()") + public func restoreTransactions() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc dynamic public func customerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc(purchaserInfoWithCompletionBlock:) dynamic public func purchaserInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "customerInfo()") + @available(macOS, unavailable, introduced: 10.15, renamed: "customerInfo()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "customerInfo()") + public func purchaserInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @objc(productsWithIdentifiers:completionBlock:) dynamic public func products(_ productIdentifiers: [Swift.String], completion: @escaping ([StoreKit.SKProduct]) -> Swift.Void) + @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(offeringsWithCompletionBlock:) dynamic public func offerings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(tvOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(watchOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(macOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @objc(purchasePackage:withCompletionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:)") + public func purchasePackage(_ package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:completion:)") + @objc(purchasePackage:withDiscount:completionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @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:_:)") + @objc(purchaseProduct:withCompletionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:)") + public func purchaseProduct(_ product: StoreKit.SKProduct) async throws + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:completion:)") + @objc(purchaseProduct:withDiscount:completionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount) async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + @available(iOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) + @available(iOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (Swift.AnyObject, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(tvOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(watchOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macCatalyst, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @objc dynamic public func invalidatePurchaserInfoCache() + @available(iOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macCatalyst, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @objc(checkTrialOrIntroductoryPriceEligibility:completion:) dynamic public func checkTrialOrIntroductoryPriceEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + @available(iOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.14.4, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @objc(paymentDiscountForProductDiscount:product:completion:) dynamic public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct, completion: @escaping (StoreKit.SKPaymentDiscount?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.15, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct) async throws -> StoreKit.SKPaymentDiscount + #endif + + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(createAlias:completionBlock:) dynamic public func createAlias(_ alias: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(identify:completionBlock:) dynamic public func identify(_ appUserID: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logOut") + @available(tvOS, obsoleted: 1, renamed: "logOut") + @available(watchOS, obsoleted: 1, renamed: "logOut") + @available(macOS, obsoleted: 1, renamed: "logOut") + @objc(resetWithCompletionBlock:) dynamic public func reset(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "CustomerInfo") +@available(tvOS, obsoleted: 1, renamed: "CustomerInfo") +@available(watchOS, obsoleted: 1, renamed: "CustomerInfo") +@available(macOS, obsoleted: 1, renamed: "CustomerInfo") +@objc(RCPurchaserInfo) public class PurchaserInfo : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "StoreTransaction") +@available(tvOS, obsoleted: 1, renamed: "StoreTransaction") +@available(watchOS, obsoleted: 1, renamed: "StoreTransaction") +@available(macOS, obsoleted: 1, renamed: "StoreTransaction") +@objc(RCTransaction) public class Transaction : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.StoreTransaction { + @available(iOS, obsoleted: 1, renamed: "productIdentifier") + @available(tvOS, obsoleted: 1, renamed: "productIdentifier") + @available(watchOS, obsoleted: 1, renamed: "productIdentifier") + @available(macOS, obsoleted: 1, renamed: "productIdentifier") + @objc final public var productId: Swift.String { + @objc get + } + @available(iOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(tvOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(watchOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(macOS, obsoleted: 1, renamed: "transactionIdentifier") + @objc final public var revenueCatId: Swift.String { + @objc get + } +} +extension RevenueCat.Package { + @available(iOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(tvOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(watchOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macCatalyst, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @objc dynamic public var product: StoreKit.SKProduct { + @objc get + } +} +extension RevenueCat.StoreProductDiscount.PaymentMode { + @available(iOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(tvOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(watchOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macCatalyst, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + public static var none: RevenueCat.StoreProductDiscount.PaymentMode { + get + } +} +@available(iOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(tvOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(watchOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macCatalyst, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +public enum RCPaymentMode { +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(tvOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(watchOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macCatalyst, obsoleted: 1, message: "Use PromotionalOffer instead") +@objc(RCPromotionalOfferEligibility) public class PromotionalOfferEligibility : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public var ErrorDomain: Foundation.NSErrorDomain { + get +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public enum RCBackendErrorCode { +} +@objc @_inheritsConvenienceInitializers @available(iOS, obsoleted: 1) +@available(tvOS, obsoleted: 1) +@available(watchOS, obsoleted: 1) +@available(macOS, obsoleted: 1) +@available(macCatalyst, obsoleted: 1) +public class RCPurchasesErrorUtils : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "ErrorCode") + @available(tvOS, obsoleted: 1, renamed: "ErrorCode") + @available(watchOS, obsoleted: 1, renamed: "ErrorCode") + @available(macOS, obsoleted: 1, renamed: "ErrorCode") + @available(macCatalyst, obsoleted: 1, renamed: "ErrorCode") + public enum Errors { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum FinishableKey { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ReadableErrorCodeKey { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum ErrorCode { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum RevenueCatBackendErrorCode { + } + @available(iOS, obsoleted: 1, renamed: "StoreTransaction") + @available(tvOS, obsoleted: 1, renamed: "StoreTransaction") + @available(watchOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macCatalyst, obsoleted: 1, renamed: "StoreTransaction") + public enum Transaction { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfos { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PackageType { + } + @available(iOS, obsoleted: 1, renamed: "CustomerInfo") + @available(tvOS, obsoleted: 1, renamed: "CustomerInfo") + @available(watchOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macCatalyst, obsoleted: 1, renamed: "CustomerInfo") + public enum PurchaserInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Offering { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ErrorUtils { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Store { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PeriodType { + } +} +@_hasMissingDesignatedInitializers @objc(RCPromotionalOffer) final public class PromotionalOffer : ObjectiveC.NSObject { + final public let discount: RevenueCat.StoreProductDiscount + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, introduced: 6.2, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, introduced: 10.15, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + +} +@objc(RCPurchasesErrorCode) public enum ErrorCode : Swift.Int, Swift.Error { + @objc(RCUnknownError) case unknownError = 0 + @objc(RCPurchaseCancelledError) case purchaseCancelledError = 1 + @objc(RCStoreProblemError) case storeProblemError = 2 + @objc(RCPurchaseNotAllowedError) case purchaseNotAllowedError = 3 + @objc(RCPurchaseInvalidError) case purchaseInvalidError = 4 + @objc(RCProductNotAvailableForPurchaseError) case productNotAvailableForPurchaseError = 5 + @objc(RCProductAlreadyPurchasedError) case productAlreadyPurchasedError = 6 + @objc(RCReceiptAlreadyInUseError) case receiptAlreadyInUseError = 7 + @objc(RCInvalidReceiptError) case invalidReceiptError = 8 + @objc(RCMissingReceiptFileError) case missingReceiptFileError = 9 + @objc(RCNetworkError) case networkError = 10 + @objc(RCInvalidCredentialsError) case invalidCredentialsError = 11 + @objc(RCUnexpectedBackendResponseError) case unexpectedBackendResponseError = 12 + @objc(RCReceiptInUseByOtherSubscriberError) case receiptInUseByOtherSubscriberError = 13 + @objc(RCInvalidAppUserIdError) case invalidAppUserIdError = 14 + @objc(RCOperationAlreadyInProgressForProductError) case operationAlreadyInProgressForProductError = 15 + @objc(RCUnknownBackendError) case unknownBackendError = 16 + @objc(RCInvalidAppleSubscriptionKeyError) case invalidAppleSubscriptionKeyError = 17 + @objc(RCIneligibleError) case ineligibleError = 18 + @objc(RCInsufficientPermissionsError) case insufficientPermissionsError = 19 + @objc(RCPaymentPendingError) case paymentPendingError = 20 + @objc(RCInvalidSubscriberAttributesError) case invalidSubscriberAttributesError = 21 + @objc(RCLogOutAnonymousUserError) case logOutAnonymousUserError = 22 + @objc(RCConfigurationError) case configurationError = 23 + @objc(RCUnsupportedError) case unsupportedError = 24 + @objc(RCEmptySubscriberAttributesError) case emptySubscriberAttributes = 25 + @objc(RCProductDiscountMissingIdentifierError) case productDiscountMissingIdentifierError = 26 + @objc(RCMissingAppUserIDForAliasCreationError) case missingAppUserIDForAliasCreationError = 27 + @objc(RCProductDiscountMissingSubscriptionGroupIdentifierError) case productDiscountMissingSubscriptionGroupIdentifierError = 28 + @objc(RCCustomerInfoError) case customerInfoError = 29 + @objc(RCSystemInfoError) case systemInfoError = 30 + @objc(RCBeginRefundRequestError) case beginRefundRequestError = 31 + @objc(RCProductRequestTimedOut) case productRequestTimedOut = 32 + @objc(RCAPIEndpointBlocked) case apiEndpointBlockedError = 33 + @objc(RCInvalidPromotionalOfferError) case invalidPromotionalOfferError = 34 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public static var _nsErrorDomain: Swift.String { + get + } + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.ErrorCode : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.ErrorCode] + public static var allCases: [RevenueCat.ErrorCode] { + get + } +} +extension RevenueCat.ErrorCode { + public var description: Swift.String { + get + } +} +extension RevenueCat.ErrorCode : Foundation.CustomNSError { + public var errorUserInfo: [Swift.String : Any] { + get + } +} +@objc(RCRefundRequestStatus) public enum RefundRequestStatus : Swift.Int { + @objc(RCRefundRequestUserCancelled) case userCancelled = 0 + @objc(RCRefundRequestSuccess) case success + @objc(RCRefundRequestError) case error + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Purchases { + @objc(RCPlatformInfo) final public class PlatformInfo : ObjectiveC.NSObject { + @objc public init(flavor: Swift.String, version: Swift.String) + @objc deinit + } + @objc public static var platformInfo: RevenueCat.Purchases.PlatformInfo? +} +@_inheritsConvenienceInitializers @objc(RCDangerousSettings) public class DangerousSettings : ObjectiveC.NSObject { + @objc final public let autoSyncPurchases: Swift.Bool + @objc override convenience dynamic public init() + @objc public init(autoSyncPurchases: Swift.Bool) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(RCCustomerInfo) public class CustomerInfo : ObjectiveC.NSObject { + @objc final public let entitlements: RevenueCat.EntitlementInfos + @objc public var activeSubscriptions: Swift.Set { + @objc get + } + @objc public var allPurchasedProductIdentifiers: Swift.Set { + @objc get + } + @objc public var latestExpirationDate: Foundation.Date? { + @objc get + } + @available(*, deprecated, message: "use nonSubscriptionTransactions") + @objc public var nonConsumablePurchases: Swift.Set { + @objc get + } + @objc final public let nonSubscriptionTransactions: [RevenueCat.StoreTransaction] + @objc final public let requestDate: Foundation.Date + @objc final public let firstSeen: Foundation.Date + @objc final public let originalAppUserId: Swift.String + @objc final public let managementURL: Foundation.URL? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let originalApplicationVersion: Swift.String? + @objc final public let rawData: [Swift.String : Any] + @objc public func expirationDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func expirationDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.CustomerInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +@objc(RCStore) public enum Store : Swift.Int { + @objc(RCAppStore) case appStore = 0 + @objc(RCMacAppStore) case macAppStore = 1 + @objc(RCPlayStore) case playStore = 2 + @objc(RCStripe) case stripe = 3 + @objc(RCPromotional) case promotional = 4 + @objc(RCUnknownStore) case unknownStore = 5 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Store : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.Store] + public static var allCases: [RevenueCat.Store] { + get + } +} +@objc(RCPeriodType) public enum PeriodType : Swift.Int { + @objc(RCNormal) case normal = 0 + @objc(RCIntro) case intro = 1 + @objc(RCTrial) case trial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PeriodType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PeriodType] + public static var allCases: [RevenueCat.PeriodType] { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfo) public class EntitlementInfo : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let isActive: Swift.Bool + @objc final public let willRenew: Swift.Bool + @objc final public let periodType: RevenueCat.PeriodType + @objc final public let latestPurchaseDate: Foundation.Date? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let expirationDate: Foundation.Date? + @objc final public let store: RevenueCat.Store + @objc final public let productIdentifier: Swift.String + @objc final public let isSandbox: Swift.Bool + @objc final public let unsubscribeDetectedAt: Foundation.Date? + @objc final public let billingIssueDetectedAt: Foundation.Date? + @objc final public let ownershipType: RevenueCat.PurchaseOwnershipType + @objc final public let rawData: [Swift.String : Any] + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.EntitlementInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +extension RevenueCat.EntitlementInfo : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCLogLevel) public enum LogLevel : Swift.Int, Swift.CustomStringConvertible { + case debug, info, warn, error + public var description: Swift.String { + get + } + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +public typealias VerboseLogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String, _ file: Swift.String?, _ function: Swift.String?, _ line: Swift.UInt) -> Swift.Void +public typealias LogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String) -> Swift.Void +public typealias SK1Transaction = StoreKit.SKPaymentTransaction +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Transaction = StoreKit.Transaction +@_hasMissingDesignatedInitializers @objc(RCStoreTransaction) final public class StoreTransaction : ObjectiveC.NSObject { + @objc final public var productIdentifier: Swift.String { + @objc get + } + @objc final public var purchaseDate: Foundation.Date { + @objc get + } + @objc final public var transactionIdentifier: Swift.String { + @objc get + } + @objc final public var quantity: Swift.Int { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreTransaction { + @objc final public var sk1Transaction: RevenueCat.SK1Transaction? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Transaction: RevenueCat.SK2Transaction? { + get + } +} +extension RevenueCat.StoreTransaction : Swift.Identifiable { + final public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +public protocol RawDataContainer { + associatedtype Content + var rawData: Self.Content { get } +} +public typealias PurchaseResultData = (transaction: RevenueCat.StoreTransaction?, customerInfo: RevenueCat.CustomerInfo, userCancelled: Swift.Bool) +public typealias PurchaseCompletedBlock = (RevenueCat.StoreTransaction?, RevenueCat.CustomerInfo?, Swift.Error?, Swift.Bool) -> Swift.Void +public typealias DeferredPromotionalPurchaseBlock = (@escaping RevenueCat.PurchaseCompletedBlock) -> Swift.Void +@_hasMissingDesignatedInitializers @objc(RCPurchases) public class Purchases : ObjectiveC.NSObject { + @objc(sharedPurchases) public static var shared: RevenueCat.Purchases { + @objc get + } + @objc public static var isConfigured: Swift.Bool { + @objc get + } + @objc public var delegate: RevenueCat.PurchasesDelegate? { + @objc get + @objc set + } + @objc public static var automaticAppleSearchAdsAttributionCollection: Swift.Bool + @objc public static var logLevel: RevenueCat.LogLevel { + @objc get + @objc set + } + @objc public static var proxyURL: Foundation.URL? { + @objc get + @objc set + } + @objc public static var forceUniversalAppStore: Swift.Bool { + @objc get + @objc set + } + @available(iOS 8.0, macOS 10.14, watchOS 6.2, macCatalyst 13.0, *) + @objc public static var simulatesAskToBuyInSandbox: Swift.Bool { + @objc get + @objc set + } + @objc public static func canMakePayments() -> Swift.Bool + @objc public static var logHandler: RevenueCat.LogHandler { + @objc get + @objc set + } + @objc public static var verboseLogHandler: RevenueCat.VerboseLogHandler { + @objc get + @objc set + } + @objc public static var verboseLogs: Swift.Bool { + @objc get + @objc set + } + @objc public static var frameworkVersion: Swift.String { + @objc get + } + @objc public var finishTransactions: Swift.Bool { + @objc get + @objc set + } + @objc public func collectDeviceIdentifiers() + @objc deinit +} +extension RevenueCat.Purchases { + @objc dynamic public func setAttributes(_ attributes: [Swift.String : Swift.String]) + @objc dynamic public func setEmail(_ email: Swift.String?) + @objc dynamic public func setPhoneNumber(_ phoneNumber: Swift.String?) + @objc dynamic public func setDisplayName(_ displayName: Swift.String?) + @objc dynamic public func setPushToken(_ pushToken: Foundation.Data?) + @objc dynamic public func setAdjustID(_ adjustID: Swift.String?) + @objc dynamic public func setAppsflyerID(_ appsflyerID: Swift.String?) + @objc dynamic public func setFBAnonymousID(_ fbAnonymousID: Swift.String?) + @objc dynamic public func setMparticleID(_ mparticleID: Swift.String?) + @objc dynamic public func setOnesignalID(_ onesignalID: Swift.String?) + @objc dynamic public func setAirshipChannelID(_ airshipChannelID: Swift.String?) + @objc dynamic public func setCleverTapID(_ cleverTapID: Swift.String?) + @objc dynamic public func setMediaSource(_ mediaSource: Swift.String?) + @objc dynamic public func setCampaign(_ campaign: Swift.String?) + @objc dynamic public func setAdGroup(_ adGroup: Swift.String?) + @objc dynamic public func setAd(_ installAd: Swift.String?) + @objc dynamic public func setKeyword(_ keyword: Swift.String?) + @objc dynamic public func setCreative(_ creative: Swift.String?) +} +extension RevenueCat.Purchases { + @objc dynamic public var appUserID: Swift.String { + @objc get + } + @objc dynamic public var isAnonymous: Swift.Bool { + @objc get + } + @objc(logIn:completion:) dynamic public func logIn(_ appUserID: Swift.String, completion: @escaping (RevenueCat.CustomerInfo?, Swift.Bool, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logIn(_ appUserID: Swift.String) async throws -> (customerInfo: RevenueCat.CustomerInfo, created: Swift.Bool) + #endif + + @objc dynamic public func logOut(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logOut() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func getOfferings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func offerings() async throws -> RevenueCat.Offerings + #endif + +} +extension RevenueCat.Purchases { + @objc dynamic public func getCustomerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func customerInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public var customerInfoStream: _Concurrency.AsyncStream { + get + } + @objc(getProductsWithIdentifiers:completion:) dynamic public func getProducts(_ productIdentifiers: [Swift.String], completion: @escaping ([RevenueCat.StoreProduct]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func products(_ productIdentifiers: [Swift.String]) async -> [RevenueCat.StoreProduct] + #endif + + @objc(purchaseProduct:withCompletion:) dynamic public func purchase(product: RevenueCat.StoreProduct, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc(purchasePackage:withCompletion:) dynamic public func purchase(package: RevenueCat.Package, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchaseProduct:withPromotionalOffer:completion:) dynamic public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchasePackage:withPromotionalOffer:completion:) dynamic public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc dynamic public func syncPurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func syncPurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func restorePurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func restorePurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc(checkTrialOrIntroDiscountEligibility:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + + @objc(checkTrialOrIntroDiscountEligibilityForProduct:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.IntroEligibilityStatus) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct) async -> RevenueCat.IntroEligibilityStatus + #endif + + @objc dynamic public func invalidateCustomerInfoCache() + @available(iOS 14.0, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @available(macOS, unavailable) + @available(macCatalyst, unavailable) + @objc dynamic public func presentCodeRedemptionSheet() + @available(iOS 12.2, macOS 10.14.4, macCatalyst 13.0, tvOS 12.2, watchOS 6.2, *) + @objc(getPromotionalOfferForProductDiscount:withProduct:withCompletion:) dynamic public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.PromotionalOffer?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) async throws -> RevenueCat.PromotionalOffer + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getEligiblePromotionalOffers(forProduct product: RevenueCat.StoreProduct) async -> [RevenueCat.PromotionalOffer] + #endif + + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc dynamic public func showManageSubscriptions(completion: @escaping (Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + public func showManageSubscriptions() async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForProduct:completion:) dynamic public func beginRefundRequest(forProduct productID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForEntitlement:completion:) dynamic public func beginRefundRequest(forEntitlement entitlementID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForActiveEntitlementWithCompletion:) dynamic public func beginRefundRequestForActiveEntitlement() async throws -> RevenueCat.RefundRequestStatus + #endif + +} +extension RevenueCat.Purchases { + @discardableResult + @objc(configureWithAPIKey:) public static func configure(withAPIKey apiKey: Swift.String) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:dangerousSettings:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool, dangerousSettings: RevenueCat.DangerousSettings?) -> RevenueCat.Purchases +} +extension RevenueCat.Purchases { + @objc dynamic public func shouldPurchasePromoProduct(_ product: RevenueCat.StoreProduct, defermentBlock: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +extension RevenueCat.Purchases { + @available(*, deprecated, message: "use Purchases.logLevel instead") + @objc public static var debugLogsEnabled: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Configure behavior through the RevenueCat dashboard instead") + @objc dynamic public var allowSharingAppStoreAccount: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Use the set functions instead") + @objc public static func addAttributionData(_ data: [Swift.String : Any], fromNetwork network: RevenueCat.AttributionNetwork) + @available(*, deprecated, message: "Use the set functions instead") + @objc(addAttributionData:fromNetwork:forNetworkUserId:) public static func addAttributionData(_ data: [Swift.String : Any], from network: RevenueCat.AttributionNetwork, forNetworkUserId networkUserId: Swift.String?) +} +@objc(RCSubscriptionPeriod) public class SubscriptionPeriod : ObjectiveC.NSObject { + @objc final public let value: Swift.Int + @objc final public let unit: RevenueCat.SubscriptionPeriod.Unit + public init(value: Swift.Int, unit: RevenueCat.SubscriptionPeriod.Unit) + @objc(RCSubscriptionPeriodUnit) public enum Unit : Swift.Int { + case day = 0 + case week = 1 + case month = 2 + case year = 3 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.SubscriptionPeriod { + @available(iOS, unavailable, renamed: "value") + @available(tvOS, unavailable, renamed: "value") + @available(watchOS, unavailable, renamed: "value") + @available(macOS, unavailable, renamed: "value") + @objc dynamic public var numberOfUnits: Swift.Int { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + get + } +} +extension RevenueCat.SubscriptionPeriod { + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Encodable { +} +extension RevenueCat.SubscriptionPeriod : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +@objc(RCPurchaseOwnershipType) public enum PurchaseOwnershipType : Swift.Int { + case purchased = 0 + case familyShared = 1 + case unknown = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PurchaseOwnershipType] + public static var allCases: [RevenueCat.PurchaseOwnershipType] { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.PeriodType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.Store : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfos) public class EntitlementInfos : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.EntitlementInfo] + @objc public var active: [Swift.String : RevenueCat.EntitlementInfo] { + @objc get + } + @objc public subscript(key: Swift.String) -> RevenueCat.EntitlementInfo? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc deinit +} +@objc(RCPackageType) public enum PackageType : Swift.Int { + case unknown = -2, custom, lifetime, annual, sixMonth, threeMonth, twoMonth, monthly, weekly + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCPackage) public class Package : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let packageType: RevenueCat.PackageType + @objc final public let storeProduct: RevenueCat.StoreProduct + @objc final public let offeringIdentifier: Swift.String + @objc public var localizedPriceString: Swift.String { + @objc get + } + @objc public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +@objc extension RevenueCat.Package { + @objc public static func string(from packageType: RevenueCat.PackageType) -> Swift.String? + @objc dynamic public class func packageType(from string: Swift.String) -> RevenueCat.PackageType +} +extension RevenueCat.Package : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCIntroEligibilityStatus) public enum IntroEligibilityStatus : Swift.Int { + case unknown = 0 + case ineligible + case eligible + case noIntroOfferExists + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.IntroEligibilityStatus : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.IntroEligibilityStatus] + public static var allCases: [RevenueCat.IntroEligibilityStatus] { + get + } +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(RCIntroEligibility) public class IntroEligibility : ObjectiveC.NSObject { + @objc final public let status: RevenueCat.IntroEligibilityStatus + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +@available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) +public typealias SK1ProductDiscount = StoreKit.SKProductDiscount +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2ProductDiscount = StoreKit.Product.SubscriptionOffer +@_hasMissingDesignatedInitializers @objc(RCStoreProductDiscount) final public class StoreProductDiscount : ObjectiveC.NSObject { + @objc(RCPaymentMode) public enum PaymentMode : Swift.Int { + case payAsYouGo = 0 + case payUpFront = 1 + case freeTrial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCDiscountType) public enum DiscountType : Swift.Int { + case introductory = 0 + case promotional = 1 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc final public var offerIdentifier: Swift.String? { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var paymentMode: RevenueCat.StoreProductDiscount.PaymentMode { + @objc get + } + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod { + @objc get + } + @objc final public var type: RevenueCat.StoreProductDiscount.DiscountType { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProductDiscount { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } +} +extension RevenueCat.StoreProductDiscount { + public struct Data : Swift.Hashable { + public func hash(into hasher: inout Swift.Hasher) + public static func == (a: RevenueCat.StoreProductDiscount.Data, b: RevenueCat.StoreProductDiscount.Data) -> Swift.Bool + public var hashValue: Swift.Int { + get + } + } +} +extension RevenueCat.StoreProductDiscount { + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var sk1Discount: RevenueCat.SK1ProductDiscount? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Discount: RevenueCat.SK2ProductDiscount? { + get + } +} +extension RevenueCat.StoreProductDiscount : Swift.Encodable { + final public func encode(to encoder: Swift.Encoder) throws +} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Encodable { +} +extension RevenueCat.StoreProductDiscount : Swift.Identifiable { + final public var id: RevenueCat.StoreProductDiscount.Data { + get + } + public typealias ID = RevenueCat.StoreProductDiscount.Data +} +@objc(RCPurchasesDelegate) public protocol PurchasesDelegate : ObjectiveC.NSObjectProtocol { + @available(swift, obsoleted: 1, renamed: "purchases(_:receivedUpdated:)") + @available(iOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @objc(purchases:didReceiveUpdatedPurchaserInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, didReceiveUpdated purchaserInfo: RevenueCat.CustomerInfo) + @objc(purchases:receivedUpdatedCustomerInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, receivedUpdated customerInfo: RevenueCat.CustomerInfo) + @objc optional func purchases(_ purchases: RevenueCat.Purchases, shouldPurchasePromoProduct product: RevenueCat.StoreProduct, defermentBlock makeDeferredPurchase: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +@objc(RCAttributionNetwork) public enum AttributionNetwork : Swift.Int { + case appleSearchAds + case adjust + case appsFlyer + case branch + case tenjin + case facebook + case mParticle + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.AttributionNetwork : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +public typealias SK1Product = StoreKit.SKProduct +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Product = StoreKit.Product +@_hasMissingDesignatedInitializers @objc(RCStoreProduct) final public class StoreProduct : ObjectiveC.NSObject { + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc final public var productType: RevenueCat.StoreProduct.ProductType { + @objc get + } + @objc final public var productCategory: RevenueCat.StoreProduct.ProductCategory { + @objc get + } + @objc final public var localizedDescription: Swift.String { + @objc get + } + @objc final public var localizedTitle: Swift.String { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var productIdentifier: Swift.String { + @objc get + } + @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 8.0, *) + @objc final public var isFamilyShareable: Swift.Bool { + @objc get + } + @available(iOS 12.0, macCatalyst 13.0, tvOS 12.0, macOS 10.14, watchOS 6.2, *) + @objc final public var subscriptionGroupIdentifier: Swift.String? { + @objc get + } + @objc final public var priceFormatter: Foundation.NumberFormatter? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var introductoryDiscount: RevenueCat.StoreProductDiscount? { + @objc get + } + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var discounts: [RevenueCat.StoreProductDiscount] { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var pricePerMonth: Foundation.NSDecimalNumber? { + @objc get + } + @objc final public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } +} +@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) +extension RevenueCat.StoreProduct { + + #if compiler(>=5.3) && $AsyncAwait + final public func getEligiblePromotionalOffers() async -> [RevenueCat.PromotionalOffer] + #endif + +} +extension RevenueCat.StoreProduct { + @objc convenience dynamic public init(sk1Product: RevenueCat.SK1Product) + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + convenience public init(sk2Product: RevenueCat.SK2Product) + @objc final public var sk1Product: RevenueCat.SK1Product? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Product: RevenueCat.SK2Product? { + get + } +} +extension RevenueCat.StoreProduct { + @available(iOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(tvOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(watchOS, unavailable, introduced: 6.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(macOS, unavailable, introduced: 10.13.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @objc final public var introductoryPrice: StoreKit.SKProductDiscount? { + @objc get + } + @available(iOS, unavailable, message: "Use localizedPriceString instead") + @available(tvOS, unavailable, message: "Use localizedPriceString instead") + @available(watchOS, unavailable, message: "Use localizedPriceString instead") + @available(macOS, unavailable, message: "Use localizedPriceString instead") + @objc final public var priceLocale: Foundation.Locale { + @objc get + } +} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.RawRepresentable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductType : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.Equatable {} +extension RevenueCat.ErrorCode : Swift.Hashable {} +extension RevenueCat.ErrorCode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.CustomStringConvertible {} +extension RevenueCat.RefundRequestStatus : Swift.Equatable {} +extension RevenueCat.RefundRequestStatus : Swift.Hashable {} +extension RevenueCat.RefundRequestStatus : Swift.RawRepresentable {} +extension RevenueCat.Store : Swift.Equatable {} +extension RevenueCat.Store : Swift.Hashable {} +extension RevenueCat.Store : Swift.RawRepresentable {} +extension RevenueCat.PeriodType : Swift.Equatable {} +extension RevenueCat.PeriodType : Swift.Hashable {} +extension RevenueCat.PeriodType : Swift.RawRepresentable {} +extension RevenueCat.LogLevel : Swift.Equatable {} +extension RevenueCat.LogLevel : Swift.Hashable {} +extension RevenueCat.LogLevel : Swift.RawRepresentable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Equatable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Hashable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.RawRepresentable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Equatable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Hashable {} +extension RevenueCat.PurchaseOwnershipType : Swift.RawRepresentable {} +extension RevenueCat.PackageType : Swift.Equatable {} +extension RevenueCat.PackageType : Swift.Hashable {} +extension RevenueCat.PackageType : Swift.RawRepresentable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Equatable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Hashable {} +extension RevenueCat.IntroEligibilityStatus : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.RawRepresentable {} +extension RevenueCat.AttributionNetwork : Swift.Equatable {} +extension RevenueCat.AttributionNetwork : Swift.Hashable {} +extension RevenueCat.AttributionNetwork : Swift.RawRepresentable {} diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftmodule b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000..20389fa Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/arm64.swiftmodule differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftdoc new file mode 100644 index 0000000..afa84cb Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftinterface new file mode 100644 index 0000000..504a7d2 --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftinterface @@ -0,0 +1,1419 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +// swift-module-flags: -target x86_64-apple-ios11.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name RevenueCat +import Foundation +@_exported import RevenueCat +import StoreKit +import Swift +import UIKit +import _Concurrency +@_hasMissingDesignatedInitializers @objc(RCOffering) public class Offering : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let serverDescription: Swift.String + @objc final public let availablePackages: [RevenueCat.Package] + @objc public var lifetime: RevenueCat.Package? { + get + } + @objc public var annual: RevenueCat.Package? { + get + } + @objc public var sixMonth: RevenueCat.Package? { + get + } + @objc public var threeMonth: RevenueCat.Package? { + get + } + @objc public var twoMonth: RevenueCat.Package? { + get + } + @objc public var monthly: RevenueCat.Package? { + get + } + @objc public var weekly: RevenueCat.Package? { + get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc public func package(identifier: Swift.String?) -> RevenueCat.Package? + @objc public subscript(key: Swift.String) -> RevenueCat.Package? { + @objc get + } + @objc deinit +} +extension RevenueCat.Offering : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@_hasMissingDesignatedInitializers @objc(RCOfferings) public class Offerings : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.Offering] + @objc public var current: RevenueCat.Offering? { + @objc get + } + @objc public func offering(identifier: Swift.String?) -> RevenueCat.Offering? + @objc public subscript(key: Swift.String) -> RevenueCat.Offering? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(RCStoreProductCategory) public enum ProductCategory : Swift.Int { + case subscription + case nonSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCStoreProductType) public enum ProductType : Swift.Int { + case consumable + case nonConsumable + case nonRenewableSubscription + case autoRenewableSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(tvOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(watchOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(macOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @objc(restoreTransactionsWithCompletionBlock:) dynamic public func restoreTransactions(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "restorePurchases()") + @available(macOS, unavailable, introduced: 10.15, renamed: "restorePurchases()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "restorePurchases()") + public func restoreTransactions() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc dynamic public func customerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc(purchaserInfoWithCompletionBlock:) dynamic public func purchaserInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "customerInfo()") + @available(macOS, unavailable, introduced: 10.15, renamed: "customerInfo()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "customerInfo()") + public func purchaserInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @objc(productsWithIdentifiers:completionBlock:) dynamic public func products(_ productIdentifiers: [Swift.String], completion: @escaping ([StoreKit.SKProduct]) -> Swift.Void) + @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(offeringsWithCompletionBlock:) dynamic public func offerings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(tvOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(watchOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(macOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @objc(purchasePackage:withCompletionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:)") + public func purchasePackage(_ package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:completion:)") + @objc(purchasePackage:withDiscount:completionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @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:_:)") + @objc(purchaseProduct:withCompletionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:)") + public func purchaseProduct(_ product: StoreKit.SKProduct) async throws + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:completion:)") + @objc(purchaseProduct:withDiscount:completionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount) async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + @available(iOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) + @available(iOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (Swift.AnyObject, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(tvOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(watchOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macCatalyst, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @objc dynamic public func invalidatePurchaserInfoCache() + @available(iOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macCatalyst, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @objc(checkTrialOrIntroductoryPriceEligibility:completion:) dynamic public func checkTrialOrIntroductoryPriceEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + @available(iOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.14.4, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @objc(paymentDiscountForProductDiscount:product:completion:) dynamic public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct, completion: @escaping (StoreKit.SKPaymentDiscount?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.15, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct) async throws -> StoreKit.SKPaymentDiscount + #endif + + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(createAlias:completionBlock:) dynamic public func createAlias(_ alias: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(identify:completionBlock:) dynamic public func identify(_ appUserID: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logOut") + @available(tvOS, obsoleted: 1, renamed: "logOut") + @available(watchOS, obsoleted: 1, renamed: "logOut") + @available(macOS, obsoleted: 1, renamed: "logOut") + @objc(resetWithCompletionBlock:) dynamic public func reset(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "CustomerInfo") +@available(tvOS, obsoleted: 1, renamed: "CustomerInfo") +@available(watchOS, obsoleted: 1, renamed: "CustomerInfo") +@available(macOS, obsoleted: 1, renamed: "CustomerInfo") +@objc(RCPurchaserInfo) public class PurchaserInfo : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "StoreTransaction") +@available(tvOS, obsoleted: 1, renamed: "StoreTransaction") +@available(watchOS, obsoleted: 1, renamed: "StoreTransaction") +@available(macOS, obsoleted: 1, renamed: "StoreTransaction") +@objc(RCTransaction) public class Transaction : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.StoreTransaction { + @available(iOS, obsoleted: 1, renamed: "productIdentifier") + @available(tvOS, obsoleted: 1, renamed: "productIdentifier") + @available(watchOS, obsoleted: 1, renamed: "productIdentifier") + @available(macOS, obsoleted: 1, renamed: "productIdentifier") + @objc final public var productId: Swift.String { + @objc get + } + @available(iOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(tvOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(watchOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(macOS, obsoleted: 1, renamed: "transactionIdentifier") + @objc final public var revenueCatId: Swift.String { + @objc get + } +} +extension RevenueCat.Package { + @available(iOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(tvOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(watchOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macCatalyst, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @objc dynamic public var product: StoreKit.SKProduct { + @objc get + } +} +extension RevenueCat.StoreProductDiscount.PaymentMode { + @available(iOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(tvOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(watchOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macCatalyst, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + public static var none: RevenueCat.StoreProductDiscount.PaymentMode { + get + } +} +@available(iOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(tvOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(watchOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macCatalyst, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +public enum RCPaymentMode { +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(tvOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(watchOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macCatalyst, obsoleted: 1, message: "Use PromotionalOffer instead") +@objc(RCPromotionalOfferEligibility) public class PromotionalOfferEligibility : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public var ErrorDomain: Foundation.NSErrorDomain { + get +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public enum RCBackendErrorCode { +} +@objc @_inheritsConvenienceInitializers @available(iOS, obsoleted: 1) +@available(tvOS, obsoleted: 1) +@available(watchOS, obsoleted: 1) +@available(macOS, obsoleted: 1) +@available(macCatalyst, obsoleted: 1) +public class RCPurchasesErrorUtils : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "ErrorCode") + @available(tvOS, obsoleted: 1, renamed: "ErrorCode") + @available(watchOS, obsoleted: 1, renamed: "ErrorCode") + @available(macOS, obsoleted: 1, renamed: "ErrorCode") + @available(macCatalyst, obsoleted: 1, renamed: "ErrorCode") + public enum Errors { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum FinishableKey { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ReadableErrorCodeKey { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum ErrorCode { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum RevenueCatBackendErrorCode { + } + @available(iOS, obsoleted: 1, renamed: "StoreTransaction") + @available(tvOS, obsoleted: 1, renamed: "StoreTransaction") + @available(watchOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macCatalyst, obsoleted: 1, renamed: "StoreTransaction") + public enum Transaction { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfos { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PackageType { + } + @available(iOS, obsoleted: 1, renamed: "CustomerInfo") + @available(tvOS, obsoleted: 1, renamed: "CustomerInfo") + @available(watchOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macCatalyst, obsoleted: 1, renamed: "CustomerInfo") + public enum PurchaserInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Offering { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ErrorUtils { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Store { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PeriodType { + } +} +@_hasMissingDesignatedInitializers @objc(RCPromotionalOffer) final public class PromotionalOffer : ObjectiveC.NSObject { + final public let discount: RevenueCat.StoreProductDiscount + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, introduced: 6.2, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, introduced: 10.15, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + +} +@objc(RCPurchasesErrorCode) public enum ErrorCode : Swift.Int, Swift.Error { + @objc(RCUnknownError) case unknownError = 0 + @objc(RCPurchaseCancelledError) case purchaseCancelledError = 1 + @objc(RCStoreProblemError) case storeProblemError = 2 + @objc(RCPurchaseNotAllowedError) case purchaseNotAllowedError = 3 + @objc(RCPurchaseInvalidError) case purchaseInvalidError = 4 + @objc(RCProductNotAvailableForPurchaseError) case productNotAvailableForPurchaseError = 5 + @objc(RCProductAlreadyPurchasedError) case productAlreadyPurchasedError = 6 + @objc(RCReceiptAlreadyInUseError) case receiptAlreadyInUseError = 7 + @objc(RCInvalidReceiptError) case invalidReceiptError = 8 + @objc(RCMissingReceiptFileError) case missingReceiptFileError = 9 + @objc(RCNetworkError) case networkError = 10 + @objc(RCInvalidCredentialsError) case invalidCredentialsError = 11 + @objc(RCUnexpectedBackendResponseError) case unexpectedBackendResponseError = 12 + @objc(RCReceiptInUseByOtherSubscriberError) case receiptInUseByOtherSubscriberError = 13 + @objc(RCInvalidAppUserIdError) case invalidAppUserIdError = 14 + @objc(RCOperationAlreadyInProgressForProductError) case operationAlreadyInProgressForProductError = 15 + @objc(RCUnknownBackendError) case unknownBackendError = 16 + @objc(RCInvalidAppleSubscriptionKeyError) case invalidAppleSubscriptionKeyError = 17 + @objc(RCIneligibleError) case ineligibleError = 18 + @objc(RCInsufficientPermissionsError) case insufficientPermissionsError = 19 + @objc(RCPaymentPendingError) case paymentPendingError = 20 + @objc(RCInvalidSubscriberAttributesError) case invalidSubscriberAttributesError = 21 + @objc(RCLogOutAnonymousUserError) case logOutAnonymousUserError = 22 + @objc(RCConfigurationError) case configurationError = 23 + @objc(RCUnsupportedError) case unsupportedError = 24 + @objc(RCEmptySubscriberAttributesError) case emptySubscriberAttributes = 25 + @objc(RCProductDiscountMissingIdentifierError) case productDiscountMissingIdentifierError = 26 + @objc(RCMissingAppUserIDForAliasCreationError) case missingAppUserIDForAliasCreationError = 27 + @objc(RCProductDiscountMissingSubscriptionGroupIdentifierError) case productDiscountMissingSubscriptionGroupIdentifierError = 28 + @objc(RCCustomerInfoError) case customerInfoError = 29 + @objc(RCSystemInfoError) case systemInfoError = 30 + @objc(RCBeginRefundRequestError) case beginRefundRequestError = 31 + @objc(RCProductRequestTimedOut) case productRequestTimedOut = 32 + @objc(RCAPIEndpointBlocked) case apiEndpointBlockedError = 33 + @objc(RCInvalidPromotionalOfferError) case invalidPromotionalOfferError = 34 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public static var _nsErrorDomain: Swift.String { + get + } + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.ErrorCode : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.ErrorCode] + public static var allCases: [RevenueCat.ErrorCode] { + get + } +} +extension RevenueCat.ErrorCode { + public var description: Swift.String { + get + } +} +extension RevenueCat.ErrorCode : Foundation.CustomNSError { + public var errorUserInfo: [Swift.String : Any] { + get + } +} +@objc(RCRefundRequestStatus) public enum RefundRequestStatus : Swift.Int { + @objc(RCRefundRequestUserCancelled) case userCancelled = 0 + @objc(RCRefundRequestSuccess) case success + @objc(RCRefundRequestError) case error + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Purchases { + @objc(RCPlatformInfo) final public class PlatformInfo : ObjectiveC.NSObject { + @objc public init(flavor: Swift.String, version: Swift.String) + @objc deinit + } + @objc public static var platformInfo: RevenueCat.Purchases.PlatformInfo? +} +@_inheritsConvenienceInitializers @objc(RCDangerousSettings) public class DangerousSettings : ObjectiveC.NSObject { + @objc final public let autoSyncPurchases: Swift.Bool + @objc override convenience dynamic public init() + @objc public init(autoSyncPurchases: Swift.Bool) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(RCCustomerInfo) public class CustomerInfo : ObjectiveC.NSObject { + @objc final public let entitlements: RevenueCat.EntitlementInfos + @objc public var activeSubscriptions: Swift.Set { + @objc get + } + @objc public var allPurchasedProductIdentifiers: Swift.Set { + @objc get + } + @objc public var latestExpirationDate: Foundation.Date? { + @objc get + } + @available(*, deprecated, message: "use nonSubscriptionTransactions") + @objc public var nonConsumablePurchases: Swift.Set { + @objc get + } + @objc final public let nonSubscriptionTransactions: [RevenueCat.StoreTransaction] + @objc final public let requestDate: Foundation.Date + @objc final public let firstSeen: Foundation.Date + @objc final public let originalAppUserId: Swift.String + @objc final public let managementURL: Foundation.URL? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let originalApplicationVersion: Swift.String? + @objc final public let rawData: [Swift.String : Any] + @objc public func expirationDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func expirationDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.CustomerInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +@objc(RCStore) public enum Store : Swift.Int { + @objc(RCAppStore) case appStore = 0 + @objc(RCMacAppStore) case macAppStore = 1 + @objc(RCPlayStore) case playStore = 2 + @objc(RCStripe) case stripe = 3 + @objc(RCPromotional) case promotional = 4 + @objc(RCUnknownStore) case unknownStore = 5 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Store : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.Store] + public static var allCases: [RevenueCat.Store] { + get + } +} +@objc(RCPeriodType) public enum PeriodType : Swift.Int { + @objc(RCNormal) case normal = 0 + @objc(RCIntro) case intro = 1 + @objc(RCTrial) case trial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PeriodType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PeriodType] + public static var allCases: [RevenueCat.PeriodType] { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfo) public class EntitlementInfo : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let isActive: Swift.Bool + @objc final public let willRenew: Swift.Bool + @objc final public let periodType: RevenueCat.PeriodType + @objc final public let latestPurchaseDate: Foundation.Date? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let expirationDate: Foundation.Date? + @objc final public let store: RevenueCat.Store + @objc final public let productIdentifier: Swift.String + @objc final public let isSandbox: Swift.Bool + @objc final public let unsubscribeDetectedAt: Foundation.Date? + @objc final public let billingIssueDetectedAt: Foundation.Date? + @objc final public let ownershipType: RevenueCat.PurchaseOwnershipType + @objc final public let rawData: [Swift.String : Any] + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.EntitlementInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +extension RevenueCat.EntitlementInfo : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCLogLevel) public enum LogLevel : Swift.Int, Swift.CustomStringConvertible { + case debug, info, warn, error + public var description: Swift.String { + get + } + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +public typealias VerboseLogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String, _ file: Swift.String?, _ function: Swift.String?, _ line: Swift.UInt) -> Swift.Void +public typealias LogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String) -> Swift.Void +public typealias SK1Transaction = StoreKit.SKPaymentTransaction +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Transaction = StoreKit.Transaction +@_hasMissingDesignatedInitializers @objc(RCStoreTransaction) final public class StoreTransaction : ObjectiveC.NSObject { + @objc final public var productIdentifier: Swift.String { + @objc get + } + @objc final public var purchaseDate: Foundation.Date { + @objc get + } + @objc final public var transactionIdentifier: Swift.String { + @objc get + } + @objc final public var quantity: Swift.Int { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreTransaction { + @objc final public var sk1Transaction: RevenueCat.SK1Transaction? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Transaction: RevenueCat.SK2Transaction? { + get + } +} +extension RevenueCat.StoreTransaction : Swift.Identifiable { + final public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +public protocol RawDataContainer { + associatedtype Content + var rawData: Self.Content { get } +} +public typealias PurchaseResultData = (transaction: RevenueCat.StoreTransaction?, customerInfo: RevenueCat.CustomerInfo, userCancelled: Swift.Bool) +public typealias PurchaseCompletedBlock = (RevenueCat.StoreTransaction?, RevenueCat.CustomerInfo?, Swift.Error?, Swift.Bool) -> Swift.Void +public typealias DeferredPromotionalPurchaseBlock = (@escaping RevenueCat.PurchaseCompletedBlock) -> Swift.Void +@_hasMissingDesignatedInitializers @objc(RCPurchases) public class Purchases : ObjectiveC.NSObject { + @objc(sharedPurchases) public static var shared: RevenueCat.Purchases { + @objc get + } + @objc public static var isConfigured: Swift.Bool { + @objc get + } + @objc public var delegate: RevenueCat.PurchasesDelegate? { + @objc get + @objc set + } + @objc public static var automaticAppleSearchAdsAttributionCollection: Swift.Bool + @objc public static var logLevel: RevenueCat.LogLevel { + @objc get + @objc set + } + @objc public static var proxyURL: Foundation.URL? { + @objc get + @objc set + } + @objc public static var forceUniversalAppStore: Swift.Bool { + @objc get + @objc set + } + @available(iOS 8.0, macOS 10.14, watchOS 6.2, macCatalyst 13.0, *) + @objc public static var simulatesAskToBuyInSandbox: Swift.Bool { + @objc get + @objc set + } + @objc public static func canMakePayments() -> Swift.Bool + @objc public static var logHandler: RevenueCat.LogHandler { + @objc get + @objc set + } + @objc public static var verboseLogHandler: RevenueCat.VerboseLogHandler { + @objc get + @objc set + } + @objc public static var verboseLogs: Swift.Bool { + @objc get + @objc set + } + @objc public static var frameworkVersion: Swift.String { + @objc get + } + @objc public var finishTransactions: Swift.Bool { + @objc get + @objc set + } + @objc public func collectDeviceIdentifiers() + @objc deinit +} +extension RevenueCat.Purchases { + @objc dynamic public func setAttributes(_ attributes: [Swift.String : Swift.String]) + @objc dynamic public func setEmail(_ email: Swift.String?) + @objc dynamic public func setPhoneNumber(_ phoneNumber: Swift.String?) + @objc dynamic public func setDisplayName(_ displayName: Swift.String?) + @objc dynamic public func setPushToken(_ pushToken: Foundation.Data?) + @objc dynamic public func setAdjustID(_ adjustID: Swift.String?) + @objc dynamic public func setAppsflyerID(_ appsflyerID: Swift.String?) + @objc dynamic public func setFBAnonymousID(_ fbAnonymousID: Swift.String?) + @objc dynamic public func setMparticleID(_ mparticleID: Swift.String?) + @objc dynamic public func setOnesignalID(_ onesignalID: Swift.String?) + @objc dynamic public func setAirshipChannelID(_ airshipChannelID: Swift.String?) + @objc dynamic public func setCleverTapID(_ cleverTapID: Swift.String?) + @objc dynamic public func setMediaSource(_ mediaSource: Swift.String?) + @objc dynamic public func setCampaign(_ campaign: Swift.String?) + @objc dynamic public func setAdGroup(_ adGroup: Swift.String?) + @objc dynamic public func setAd(_ installAd: Swift.String?) + @objc dynamic public func setKeyword(_ keyword: Swift.String?) + @objc dynamic public func setCreative(_ creative: Swift.String?) +} +extension RevenueCat.Purchases { + @objc dynamic public var appUserID: Swift.String { + @objc get + } + @objc dynamic public var isAnonymous: Swift.Bool { + @objc get + } + @objc(logIn:completion:) dynamic public func logIn(_ appUserID: Swift.String, completion: @escaping (RevenueCat.CustomerInfo?, Swift.Bool, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logIn(_ appUserID: Swift.String) async throws -> (customerInfo: RevenueCat.CustomerInfo, created: Swift.Bool) + #endif + + @objc dynamic public func logOut(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logOut() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func getOfferings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func offerings() async throws -> RevenueCat.Offerings + #endif + +} +extension RevenueCat.Purchases { + @objc dynamic public func getCustomerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func customerInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public var customerInfoStream: _Concurrency.AsyncStream { + get + } + @objc(getProductsWithIdentifiers:completion:) dynamic public func getProducts(_ productIdentifiers: [Swift.String], completion: @escaping ([RevenueCat.StoreProduct]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func products(_ productIdentifiers: [Swift.String]) async -> [RevenueCat.StoreProduct] + #endif + + @objc(purchaseProduct:withCompletion:) dynamic public func purchase(product: RevenueCat.StoreProduct, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc(purchasePackage:withCompletion:) dynamic public func purchase(package: RevenueCat.Package, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchaseProduct:withPromotionalOffer:completion:) dynamic public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchasePackage:withPromotionalOffer:completion:) dynamic public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc dynamic public func syncPurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func syncPurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func restorePurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func restorePurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc(checkTrialOrIntroDiscountEligibility:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + + @objc(checkTrialOrIntroDiscountEligibilityForProduct:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.IntroEligibilityStatus) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct) async -> RevenueCat.IntroEligibilityStatus + #endif + + @objc dynamic public func invalidateCustomerInfoCache() + @available(iOS 14.0, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @available(macOS, unavailable) + @available(macCatalyst, unavailable) + @objc dynamic public func presentCodeRedemptionSheet() + @available(iOS 12.2, macOS 10.14.4, macCatalyst 13.0, tvOS 12.2, watchOS 6.2, *) + @objc(getPromotionalOfferForProductDiscount:withProduct:withCompletion:) dynamic public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.PromotionalOffer?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) async throws -> RevenueCat.PromotionalOffer + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getEligiblePromotionalOffers(forProduct product: RevenueCat.StoreProduct) async -> [RevenueCat.PromotionalOffer] + #endif + + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc dynamic public func showManageSubscriptions(completion: @escaping (Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + public func showManageSubscriptions() async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForProduct:completion:) dynamic public func beginRefundRequest(forProduct productID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForEntitlement:completion:) dynamic public func beginRefundRequest(forEntitlement entitlementID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForActiveEntitlementWithCompletion:) dynamic public func beginRefundRequestForActiveEntitlement() async throws -> RevenueCat.RefundRequestStatus + #endif + +} +extension RevenueCat.Purchases { + @discardableResult + @objc(configureWithAPIKey:) public static func configure(withAPIKey apiKey: Swift.String) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:dangerousSettings:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool, dangerousSettings: RevenueCat.DangerousSettings?) -> RevenueCat.Purchases +} +extension RevenueCat.Purchases { + @objc dynamic public func shouldPurchasePromoProduct(_ product: RevenueCat.StoreProduct, defermentBlock: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +extension RevenueCat.Purchases { + @available(*, deprecated, message: "use Purchases.logLevel instead") + @objc public static var debugLogsEnabled: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Configure behavior through the RevenueCat dashboard instead") + @objc dynamic public var allowSharingAppStoreAccount: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Use the set functions instead") + @objc public static func addAttributionData(_ data: [Swift.String : Any], fromNetwork network: RevenueCat.AttributionNetwork) + @available(*, deprecated, message: "Use the set functions instead") + @objc(addAttributionData:fromNetwork:forNetworkUserId:) public static func addAttributionData(_ data: [Swift.String : Any], from network: RevenueCat.AttributionNetwork, forNetworkUserId networkUserId: Swift.String?) +} +@objc(RCSubscriptionPeriod) public class SubscriptionPeriod : ObjectiveC.NSObject { + @objc final public let value: Swift.Int + @objc final public let unit: RevenueCat.SubscriptionPeriod.Unit + public init(value: Swift.Int, unit: RevenueCat.SubscriptionPeriod.Unit) + @objc(RCSubscriptionPeriodUnit) public enum Unit : Swift.Int { + case day = 0 + case week = 1 + case month = 2 + case year = 3 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.SubscriptionPeriod { + @available(iOS, unavailable, renamed: "value") + @available(tvOS, unavailable, renamed: "value") + @available(watchOS, unavailable, renamed: "value") + @available(macOS, unavailable, renamed: "value") + @objc dynamic public var numberOfUnits: Swift.Int { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + get + } +} +extension RevenueCat.SubscriptionPeriod { + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Encodable { +} +extension RevenueCat.SubscriptionPeriod : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +@objc(RCPurchaseOwnershipType) public enum PurchaseOwnershipType : Swift.Int { + case purchased = 0 + case familyShared = 1 + case unknown = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PurchaseOwnershipType] + public static var allCases: [RevenueCat.PurchaseOwnershipType] { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.PeriodType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.Store : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfos) public class EntitlementInfos : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.EntitlementInfo] + @objc public var active: [Swift.String : RevenueCat.EntitlementInfo] { + @objc get + } + @objc public subscript(key: Swift.String) -> RevenueCat.EntitlementInfo? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc deinit +} +@objc(RCPackageType) public enum PackageType : Swift.Int { + case unknown = -2, custom, lifetime, annual, sixMonth, threeMonth, twoMonth, monthly, weekly + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCPackage) public class Package : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let packageType: RevenueCat.PackageType + @objc final public let storeProduct: RevenueCat.StoreProduct + @objc final public let offeringIdentifier: Swift.String + @objc public var localizedPriceString: Swift.String { + @objc get + } + @objc public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +@objc extension RevenueCat.Package { + @objc public static func string(from packageType: RevenueCat.PackageType) -> Swift.String? + @objc dynamic public class func packageType(from string: Swift.String) -> RevenueCat.PackageType +} +extension RevenueCat.Package : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCIntroEligibilityStatus) public enum IntroEligibilityStatus : Swift.Int { + case unknown = 0 + case ineligible + case eligible + case noIntroOfferExists + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.IntroEligibilityStatus : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.IntroEligibilityStatus] + public static var allCases: [RevenueCat.IntroEligibilityStatus] { + get + } +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(RCIntroEligibility) public class IntroEligibility : ObjectiveC.NSObject { + @objc final public let status: RevenueCat.IntroEligibilityStatus + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +@available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) +public typealias SK1ProductDiscount = StoreKit.SKProductDiscount +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2ProductDiscount = StoreKit.Product.SubscriptionOffer +@_hasMissingDesignatedInitializers @objc(RCStoreProductDiscount) final public class StoreProductDiscount : ObjectiveC.NSObject { + @objc(RCPaymentMode) public enum PaymentMode : Swift.Int { + case payAsYouGo = 0 + case payUpFront = 1 + case freeTrial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCDiscountType) public enum DiscountType : Swift.Int { + case introductory = 0 + case promotional = 1 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc final public var offerIdentifier: Swift.String? { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var paymentMode: RevenueCat.StoreProductDiscount.PaymentMode { + @objc get + } + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod { + @objc get + } + @objc final public var type: RevenueCat.StoreProductDiscount.DiscountType { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProductDiscount { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } +} +extension RevenueCat.StoreProductDiscount { + public struct Data : Swift.Hashable { + public func hash(into hasher: inout Swift.Hasher) + public static func == (a: RevenueCat.StoreProductDiscount.Data, b: RevenueCat.StoreProductDiscount.Data) -> Swift.Bool + public var hashValue: Swift.Int { + get + } + } +} +extension RevenueCat.StoreProductDiscount { + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var sk1Discount: RevenueCat.SK1ProductDiscount? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Discount: RevenueCat.SK2ProductDiscount? { + get + } +} +extension RevenueCat.StoreProductDiscount : Swift.Encodable { + final public func encode(to encoder: Swift.Encoder) throws +} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Encodable { +} +extension RevenueCat.StoreProductDiscount : Swift.Identifiable { + final public var id: RevenueCat.StoreProductDiscount.Data { + get + } + public typealias ID = RevenueCat.StoreProductDiscount.Data +} +@objc(RCPurchasesDelegate) public protocol PurchasesDelegate : ObjectiveC.NSObjectProtocol { + @available(swift, obsoleted: 1, renamed: "purchases(_:receivedUpdated:)") + @available(iOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @objc(purchases:didReceiveUpdatedPurchaserInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, didReceiveUpdated purchaserInfo: RevenueCat.CustomerInfo) + @objc(purchases:receivedUpdatedCustomerInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, receivedUpdated customerInfo: RevenueCat.CustomerInfo) + @objc optional func purchases(_ purchases: RevenueCat.Purchases, shouldPurchasePromoProduct product: RevenueCat.StoreProduct, defermentBlock makeDeferredPurchase: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +@objc(RCAttributionNetwork) public enum AttributionNetwork : Swift.Int { + case appleSearchAds + case adjust + case appsFlyer + case branch + case tenjin + case facebook + case mParticle + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.AttributionNetwork : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +public typealias SK1Product = StoreKit.SKProduct +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Product = StoreKit.Product +@_hasMissingDesignatedInitializers @objc(RCStoreProduct) final public class StoreProduct : ObjectiveC.NSObject { + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc final public var productType: RevenueCat.StoreProduct.ProductType { + @objc get + } + @objc final public var productCategory: RevenueCat.StoreProduct.ProductCategory { + @objc get + } + @objc final public var localizedDescription: Swift.String { + @objc get + } + @objc final public var localizedTitle: Swift.String { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var productIdentifier: Swift.String { + @objc get + } + @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 8.0, *) + @objc final public var isFamilyShareable: Swift.Bool { + @objc get + } + @available(iOS 12.0, macCatalyst 13.0, tvOS 12.0, macOS 10.14, watchOS 6.2, *) + @objc final public var subscriptionGroupIdentifier: Swift.String? { + @objc get + } + @objc final public var priceFormatter: Foundation.NumberFormatter? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var introductoryDiscount: RevenueCat.StoreProductDiscount? { + @objc get + } + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var discounts: [RevenueCat.StoreProductDiscount] { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var pricePerMonth: Foundation.NSDecimalNumber? { + @objc get + } + @objc final public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } +} +@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) +extension RevenueCat.StoreProduct { + + #if compiler(>=5.3) && $AsyncAwait + final public func getEligiblePromotionalOffers() async -> [RevenueCat.PromotionalOffer] + #endif + +} +extension RevenueCat.StoreProduct { + @objc convenience dynamic public init(sk1Product: RevenueCat.SK1Product) + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + convenience public init(sk2Product: RevenueCat.SK2Product) + @objc final public var sk1Product: RevenueCat.SK1Product? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Product: RevenueCat.SK2Product? { + get + } +} +extension RevenueCat.StoreProduct { + @available(iOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(tvOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(watchOS, unavailable, introduced: 6.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(macOS, unavailable, introduced: 10.13.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @objc final public var introductoryPrice: StoreKit.SKProductDiscount? { + @objc get + } + @available(iOS, unavailable, message: "Use localizedPriceString instead") + @available(tvOS, unavailable, message: "Use localizedPriceString instead") + @available(watchOS, unavailable, message: "Use localizedPriceString instead") + @available(macOS, unavailable, message: "Use localizedPriceString instead") + @objc final public var priceLocale: Foundation.Locale { + @objc get + } +} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.RawRepresentable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductType : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.Equatable {} +extension RevenueCat.ErrorCode : Swift.Hashable {} +extension RevenueCat.ErrorCode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.CustomStringConvertible {} +extension RevenueCat.RefundRequestStatus : Swift.Equatable {} +extension RevenueCat.RefundRequestStatus : Swift.Hashable {} +extension RevenueCat.RefundRequestStatus : Swift.RawRepresentable {} +extension RevenueCat.Store : Swift.Equatable {} +extension RevenueCat.Store : Swift.Hashable {} +extension RevenueCat.Store : Swift.RawRepresentable {} +extension RevenueCat.PeriodType : Swift.Equatable {} +extension RevenueCat.PeriodType : Swift.Hashable {} +extension RevenueCat.PeriodType : Swift.RawRepresentable {} +extension RevenueCat.LogLevel : Swift.Equatable {} +extension RevenueCat.LogLevel : Swift.Hashable {} +extension RevenueCat.LogLevel : Swift.RawRepresentable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Equatable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Hashable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.RawRepresentable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Equatable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Hashable {} +extension RevenueCat.PurchaseOwnershipType : Swift.RawRepresentable {} +extension RevenueCat.PackageType : Swift.Equatable {} +extension RevenueCat.PackageType : Swift.Hashable {} +extension RevenueCat.PackageType : Swift.RawRepresentable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Equatable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Hashable {} +extension RevenueCat.IntroEligibilityStatus : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.RawRepresentable {} +extension RevenueCat.AttributionNetwork : Swift.Equatable {} +extension RevenueCat.AttributionNetwork : Swift.Hashable {} +extension RevenueCat.AttributionNetwork : Swift.RawRepresentable {} diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftmodule b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftmodule new file mode 100644 index 0000000..874125e Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64-apple-ios-simulator.swiftmodule differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftdoc b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000..afa84cb Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftdoc differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftinterface b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftinterface new file mode 100644 index 0000000..504a7d2 --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftinterface @@ -0,0 +1,1419 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30) +// swift-module-flags: -target x86_64-apple-ios11.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -module-name RevenueCat +import Foundation +@_exported import RevenueCat +import StoreKit +import Swift +import UIKit +import _Concurrency +@_hasMissingDesignatedInitializers @objc(RCOffering) public class Offering : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let serverDescription: Swift.String + @objc final public let availablePackages: [RevenueCat.Package] + @objc public var lifetime: RevenueCat.Package? { + get + } + @objc public var annual: RevenueCat.Package? { + get + } + @objc public var sixMonth: RevenueCat.Package? { + get + } + @objc public var threeMonth: RevenueCat.Package? { + get + } + @objc public var twoMonth: RevenueCat.Package? { + get + } + @objc public var monthly: RevenueCat.Package? { + get + } + @objc public var weekly: RevenueCat.Package? { + get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc public func package(identifier: Swift.String?) -> RevenueCat.Package? + @objc public subscript(key: Swift.String) -> RevenueCat.Package? { + @objc get + } + @objc deinit +} +extension RevenueCat.Offering : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@_hasMissingDesignatedInitializers @objc(RCOfferings) public class Offerings : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.Offering] + @objc public var current: RevenueCat.Offering? { + @objc get + } + @objc public func offering(identifier: Swift.String?) -> RevenueCat.Offering? + @objc public subscript(key: Swift.String) -> RevenueCat.Offering? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(RCStoreProductCategory) public enum ProductCategory : Swift.Int { + case subscription + case nonSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCStoreProductType) public enum ProductType : Swift.Int { + case consumable + case nonConsumable + case nonRenewableSubscription + case autoRenewableSubscription + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(tvOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(watchOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @available(macOS, obsoleted: 1, renamed: "restorePurchases(completion:)") + @objc(restoreTransactionsWithCompletionBlock:) dynamic public func restoreTransactions(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "restorePurchases()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "restorePurchases()") + @available(macOS, unavailable, introduced: 10.15, renamed: "restorePurchases()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "restorePurchases()") + public func restoreTransactions() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc dynamic public func customerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(tvOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(watchOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @available(macOS, obsoleted: 1, renamed: "getCustomerInfo(completion:)") + @objc(purchaserInfoWithCompletionBlock:) dynamic public func purchaserInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(tvOS, unavailable, introduced: 13.0, renamed: "customerInfo()") + @available(watchOS, unavailable, introduced: 6.2, renamed: "customerInfo()") + @available(macOS, unavailable, introduced: 10.15, renamed: "customerInfo()") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "customerInfo()") + public func purchaserInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "getProducts(_:completion:)") + @objc(productsWithIdentifiers:completionBlock:) dynamic public func products(_ productIdentifiers: [Swift.String], completion: @escaping ([StoreKit.SKProduct]) -> Swift.Void) + @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(offeringsWithCompletionBlock:) dynamic public func offerings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(tvOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(watchOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @available(macOS, obsoleted: 1, renamed: "purchase(package:completion:)") + @objc(purchasePackage:withCompletionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:)") + public func purchasePackage(_ package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:completion:)") + @objc(purchasePackage:withDiscount:completionBlock:) dynamic public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchasePackage(_ package: RevenueCat.Package, discount: StoreKit.SKPaymentDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @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:_:)") + @objc(purchaseProduct:withCompletionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:)") + public func purchaseProduct(_ product: StoreKit.SKProduct) async throws + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(product:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:completion:)") + @objc(purchaseProduct:withDiscount:completionBlock:) dynamic public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount, _ completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(product:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(product:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(product:promotionalOffer:)") + public func purchaseProduct(_ product: StoreKit.SKProduct, discount: StoreKit.SKPaymentDiscount) async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(package: RevenueCat.Package, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "purchase(package:promotionalOffer:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "purchase(package:promotionalOffer:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "purchase(package:promotionalOffer:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "purchase(package:promotionalOffer:completion:)") + public func purchase(product: RevenueCat.StoreProduct, discount: RevenueCat.StoreProductDiscount, completion: @escaping RevenueCat.PurchaseCompletedBlock) + @available(iOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(tvOS, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macOS, unavailable, introduced: 10.15, renamed: "getPromotionalOffer(forProductDiscount:product:)") + @available(macCatalyst, unavailable, introduced: 13.0, renamed: "getPromotionalOffer(forProductDiscount:product:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) + @available(iOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(tvOS, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(watchOS, unavailable, introduced: 6.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macOS, unavailable, introduced: 10.14.4, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + @available(macCatalyst, unavailable, introduced: 12.2, renamed: "getPromotionalOffer(forProductDiscount:product:completion:)") + public func checkPromotionalDiscountEligibility(forProductDiscount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (Swift.AnyObject, Swift.Error?) -> Swift.Void) + @available(iOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(tvOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(watchOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macOS, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @available(macCatalyst, obsoleted: 1, renamed: "invalidateCustomerInfoCache") + @objc dynamic public func invalidatePurchaserInfoCache() + @available(iOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(tvOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(watchOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macOS, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @available(macCatalyst, obsoleted: 1, renamed: "checkTrialOrIntroDiscountEligibility(_:completion:)") + @objc(checkTrialOrIntroductoryPriceEligibility:completion:) dynamic public func checkTrialOrIntroductoryPriceEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + @available(iOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 12.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.14.4, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @objc(paymentDiscountForProductDiscount:product:completion:) dynamic public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct, completion: @escaping (StoreKit.SKPaymentDiscount?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(tvOS, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(watchOS, unavailable, introduced: 6.2, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macOS, unavailable, introduced: 10.15, message: "Check eligibility for a discount using getPromotionalOffer:") + @available(macCatalyst, unavailable, introduced: 13.0, message: "Check eligibility for a discount using getPromotionalOffer:") + public func paymentDiscount(for discount: StoreKit.SKProductDiscount, product: StoreKit.SKProduct) async throws -> StoreKit.SKPaymentDiscount + #endif + + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(createAlias:completionBlock:) dynamic public func createAlias(_ alias: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logIn") + @available(tvOS, obsoleted: 1, renamed: "logIn") + @available(watchOS, obsoleted: 1, renamed: "logIn") + @available(macOS, obsoleted: 1, renamed: "logIn") + @objc(identify:completionBlock:) dynamic public func identify(_ appUserID: Swift.String, _ completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + @available(iOS, obsoleted: 1, renamed: "logOut") + @available(tvOS, obsoleted: 1, renamed: "logOut") + @available(watchOS, obsoleted: 1, renamed: "logOut") + @available(macOS, obsoleted: 1, renamed: "logOut") + @objc(resetWithCompletionBlock:) dynamic public func reset(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "CustomerInfo") +@available(tvOS, obsoleted: 1, renamed: "CustomerInfo") +@available(watchOS, obsoleted: 1, renamed: "CustomerInfo") +@available(macOS, obsoleted: 1, renamed: "CustomerInfo") +@objc(RCPurchaserInfo) public class PurchaserInfo : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, renamed: "StoreTransaction") +@available(tvOS, obsoleted: 1, renamed: "StoreTransaction") +@available(watchOS, obsoleted: 1, renamed: "StoreTransaction") +@available(macOS, obsoleted: 1, renamed: "StoreTransaction") +@objc(RCTransaction) public class Transaction : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.StoreTransaction { + @available(iOS, obsoleted: 1, renamed: "productIdentifier") + @available(tvOS, obsoleted: 1, renamed: "productIdentifier") + @available(watchOS, obsoleted: 1, renamed: "productIdentifier") + @available(macOS, obsoleted: 1, renamed: "productIdentifier") + @objc final public var productId: Swift.String { + @objc get + } + @available(iOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(tvOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(watchOS, obsoleted: 1, renamed: "transactionIdentifier") + @available(macOS, obsoleted: 1, renamed: "transactionIdentifier") + @objc final public var revenueCatId: Swift.String { + @objc get + } +} +extension RevenueCat.Package { + @available(iOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(tvOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(watchOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macOS, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @available(macCatalyst, obsoleted: 1, renamed: "storeProduct", message: "Use StoreProduct instead") + @objc dynamic public var product: StoreKit.SKProduct { + @objc get + } +} +extension RevenueCat.StoreProductDiscount.PaymentMode { + @available(iOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(tvOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(watchOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macOS, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + @available(macCatalyst, obsoleted: 1, message: "This option no longer exists. PaymentMode would be nil instead.") + public static var none: RevenueCat.StoreProductDiscount.PaymentMode { + get + } +} +@available(iOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(tvOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(watchOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macOS, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +@available(macCatalyst, obsoleted: 1, renamed: "StoreProductDiscount.PaymentMode") +public enum RCPaymentMode { +} +@_inheritsConvenienceInitializers @available(iOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(tvOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(watchOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macOS, obsoleted: 1, message: "Use PromotionalOffer instead") +@available(macCatalyst, obsoleted: 1, message: "Use PromotionalOffer instead") +@objc(RCPromotionalOfferEligibility) public class PromotionalOfferEligibility : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public var ErrorDomain: Foundation.NSErrorDomain { + get +} +@available(iOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(tvOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(watchOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macOS, obsoleted: 1, message: "Use ErrorCode instead") +@available(macCatalyst, obsoleted: 1, message: "Use ErrorCode instead") +public enum RCBackendErrorCode { +} +@objc @_inheritsConvenienceInitializers @available(iOS, obsoleted: 1) +@available(tvOS, obsoleted: 1) +@available(watchOS, obsoleted: 1) +@available(macOS, obsoleted: 1) +@available(macCatalyst, obsoleted: 1) +public class RCPurchasesErrorUtils : ObjectiveC.NSObject { + @objc override dynamic public init() + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, obsoleted: 1, renamed: "ErrorCode") + @available(tvOS, obsoleted: 1, renamed: "ErrorCode") + @available(watchOS, obsoleted: 1, renamed: "ErrorCode") + @available(macOS, obsoleted: 1, renamed: "ErrorCode") + @available(macCatalyst, obsoleted: 1, renamed: "ErrorCode") + public enum Errors { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum FinishableKey { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ReadableErrorCodeKey { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum ErrorCode { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum RevenueCatBackendErrorCode { + } + @available(iOS, obsoleted: 1, renamed: "StoreTransaction") + @available(tvOS, obsoleted: 1, renamed: "StoreTransaction") + @available(watchOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macOS, obsoleted: 1, renamed: "StoreTransaction") + @available(macCatalyst, obsoleted: 1, renamed: "StoreTransaction") + public enum Transaction { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum EntitlementInfos { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PackageType { + } + @available(iOS, obsoleted: 1, renamed: "CustomerInfo") + @available(tvOS, obsoleted: 1, renamed: "CustomerInfo") + @available(watchOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macOS, obsoleted: 1, renamed: "CustomerInfo") + @available(macCatalyst, obsoleted: 1, renamed: "CustomerInfo") + public enum PurchaserInfo { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Offering { + } + @available(iOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(macCatalyst, obsoleted: 1) + public enum ErrorUtils { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum Store { + } + @available(iOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(tvOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(watchOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macOS, obsoleted: 1, message: "Remove `Purchases.`") + @available(macCatalyst, obsoleted: 1, message: "Remove `Purchases.`") + public enum PeriodType { + } +} +@_hasMissingDesignatedInitializers @objc(RCPromotionalOffer) final public class PromotionalOffer : ObjectiveC.NSObject { + final public let discount: RevenueCat.StoreProductDiscount + @objc deinit +} +extension RevenueCat.Purchases { + @available(iOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(tvOS, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(watchOS, introduced: 6.2, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macOS, introduced: 10.15, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + @available(macCatalyst, introduced: 13.0, deprecated: 1, renamed: "checkTrialOrIntroDiscountEligibility(productIdentifiers:)") + public func checkTrialOrIntroDiscountEligibility(_ productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + +} +@objc(RCPurchasesErrorCode) public enum ErrorCode : Swift.Int, Swift.Error { + @objc(RCUnknownError) case unknownError = 0 + @objc(RCPurchaseCancelledError) case purchaseCancelledError = 1 + @objc(RCStoreProblemError) case storeProblemError = 2 + @objc(RCPurchaseNotAllowedError) case purchaseNotAllowedError = 3 + @objc(RCPurchaseInvalidError) case purchaseInvalidError = 4 + @objc(RCProductNotAvailableForPurchaseError) case productNotAvailableForPurchaseError = 5 + @objc(RCProductAlreadyPurchasedError) case productAlreadyPurchasedError = 6 + @objc(RCReceiptAlreadyInUseError) case receiptAlreadyInUseError = 7 + @objc(RCInvalidReceiptError) case invalidReceiptError = 8 + @objc(RCMissingReceiptFileError) case missingReceiptFileError = 9 + @objc(RCNetworkError) case networkError = 10 + @objc(RCInvalidCredentialsError) case invalidCredentialsError = 11 + @objc(RCUnexpectedBackendResponseError) case unexpectedBackendResponseError = 12 + @objc(RCReceiptInUseByOtherSubscriberError) case receiptInUseByOtherSubscriberError = 13 + @objc(RCInvalidAppUserIdError) case invalidAppUserIdError = 14 + @objc(RCOperationAlreadyInProgressForProductError) case operationAlreadyInProgressForProductError = 15 + @objc(RCUnknownBackendError) case unknownBackendError = 16 + @objc(RCInvalidAppleSubscriptionKeyError) case invalidAppleSubscriptionKeyError = 17 + @objc(RCIneligibleError) case ineligibleError = 18 + @objc(RCInsufficientPermissionsError) case insufficientPermissionsError = 19 + @objc(RCPaymentPendingError) case paymentPendingError = 20 + @objc(RCInvalidSubscriberAttributesError) case invalidSubscriberAttributesError = 21 + @objc(RCLogOutAnonymousUserError) case logOutAnonymousUserError = 22 + @objc(RCConfigurationError) case configurationError = 23 + @objc(RCUnsupportedError) case unsupportedError = 24 + @objc(RCEmptySubscriberAttributesError) case emptySubscriberAttributes = 25 + @objc(RCProductDiscountMissingIdentifierError) case productDiscountMissingIdentifierError = 26 + @objc(RCMissingAppUserIDForAliasCreationError) case missingAppUserIDForAliasCreationError = 27 + @objc(RCProductDiscountMissingSubscriptionGroupIdentifierError) case productDiscountMissingSubscriptionGroupIdentifierError = 28 + @objc(RCCustomerInfoError) case customerInfoError = 29 + @objc(RCSystemInfoError) case systemInfoError = 30 + @objc(RCBeginRefundRequestError) case beginRefundRequestError = 31 + @objc(RCProductRequestTimedOut) case productRequestTimedOut = 32 + @objc(RCAPIEndpointBlocked) case apiEndpointBlockedError = 33 + @objc(RCInvalidPromotionalOfferError) case invalidPromotionalOfferError = 34 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public static var _nsErrorDomain: Swift.String { + get + } + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.ErrorCode : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.ErrorCode] + public static var allCases: [RevenueCat.ErrorCode] { + get + } +} +extension RevenueCat.ErrorCode { + public var description: Swift.String { + get + } +} +extension RevenueCat.ErrorCode : Foundation.CustomNSError { + public var errorUserInfo: [Swift.String : Any] { + get + } +} +@objc(RCRefundRequestStatus) public enum RefundRequestStatus : Swift.Int { + @objc(RCRefundRequestUserCancelled) case userCancelled = 0 + @objc(RCRefundRequestSuccess) case success + @objc(RCRefundRequestError) case error + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Purchases { + @objc(RCPlatformInfo) final public class PlatformInfo : ObjectiveC.NSObject { + @objc public init(flavor: Swift.String, version: Swift.String) + @objc deinit + } + @objc public static var platformInfo: RevenueCat.Purchases.PlatformInfo? +} +@_inheritsConvenienceInitializers @objc(RCDangerousSettings) public class DangerousSettings : ObjectiveC.NSObject { + @objc final public let autoSyncPurchases: Swift.Bool + @objc override convenience dynamic public init() + @objc public init(autoSyncPurchases: Swift.Bool) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(RCCustomerInfo) public class CustomerInfo : ObjectiveC.NSObject { + @objc final public let entitlements: RevenueCat.EntitlementInfos + @objc public var activeSubscriptions: Swift.Set { + @objc get + } + @objc public var allPurchasedProductIdentifiers: Swift.Set { + @objc get + } + @objc public var latestExpirationDate: Foundation.Date? { + @objc get + } + @available(*, deprecated, message: "use nonSubscriptionTransactions") + @objc public var nonConsumablePurchases: Swift.Set { + @objc get + } + @objc final public let nonSubscriptionTransactions: [RevenueCat.StoreTransaction] + @objc final public let requestDate: Foundation.Date + @objc final public let firstSeen: Foundation.Date + @objc final public let originalAppUserId: Swift.String + @objc final public let managementURL: Foundation.URL? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let originalApplicationVersion: Swift.String? + @objc final public let rawData: [Swift.String : Any] + @objc public func expirationDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forProductIdentifier productIdentifier: Swift.String) -> Foundation.Date? + @objc public func expirationDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc public func purchaseDate(forEntitlement entitlementIdentifier: Swift.String) -> Foundation.Date? + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +extension RevenueCat.CustomerInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +@objc(RCStore) public enum Store : Swift.Int { + @objc(RCAppStore) case appStore = 0 + @objc(RCMacAppStore) case macAppStore = 1 + @objc(RCPlayStore) case playStore = 2 + @objc(RCStripe) case stripe = 3 + @objc(RCPromotional) case promotional = 4 + @objc(RCUnknownStore) case unknownStore = 5 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.Store : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.Store] + public static var allCases: [RevenueCat.Store] { + get + } +} +@objc(RCPeriodType) public enum PeriodType : Swift.Int { + @objc(RCNormal) case normal = 0 + @objc(RCIntro) case intro = 1 + @objc(RCTrial) case trial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PeriodType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PeriodType] + public static var allCases: [RevenueCat.PeriodType] { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfo) public class EntitlementInfo : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let isActive: Swift.Bool + @objc final public let willRenew: Swift.Bool + @objc final public let periodType: RevenueCat.PeriodType + @objc final public let latestPurchaseDate: Foundation.Date? + @objc final public let originalPurchaseDate: Foundation.Date? + @objc final public let expirationDate: Foundation.Date? + @objc final public let store: RevenueCat.Store + @objc final public let productIdentifier: Swift.String + @objc final public let isSandbox: Swift.Bool + @objc final public let unsubscribeDetectedAt: Foundation.Date? + @objc final public let billingIssueDetectedAt: Foundation.Date? + @objc final public let ownershipType: RevenueCat.PurchaseOwnershipType + @objc final public let rawData: [Swift.String : Any] + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.EntitlementInfo : RevenueCat.RawDataContainer { + public typealias Content = [Swift.String : Any] +} +extension RevenueCat.EntitlementInfo : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCLogLevel) public enum LogLevel : Swift.Int, Swift.CustomStringConvertible { + case debug, info, warn, error + public var description: Swift.String { + get + } + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +public typealias VerboseLogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String, _ file: Swift.String?, _ function: Swift.String?, _ line: Swift.UInt) -> Swift.Void +public typealias LogHandler = (_ level: RevenueCat.LogLevel, _ message: Swift.String) -> Swift.Void +public typealias SK1Transaction = StoreKit.SKPaymentTransaction +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Transaction = StoreKit.Transaction +@_hasMissingDesignatedInitializers @objc(RCStoreTransaction) final public class StoreTransaction : ObjectiveC.NSObject { + @objc final public var productIdentifier: Swift.String { + @objc get + } + @objc final public var purchaseDate: Foundation.Date { + @objc get + } + @objc final public var transactionIdentifier: Swift.String { + @objc get + } + @objc final public var quantity: Swift.Int { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreTransaction { + @objc final public var sk1Transaction: RevenueCat.SK1Transaction? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Transaction: RevenueCat.SK2Transaction? { + get + } +} +extension RevenueCat.StoreTransaction : Swift.Identifiable { + final public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +public protocol RawDataContainer { + associatedtype Content + var rawData: Self.Content { get } +} +public typealias PurchaseResultData = (transaction: RevenueCat.StoreTransaction?, customerInfo: RevenueCat.CustomerInfo, userCancelled: Swift.Bool) +public typealias PurchaseCompletedBlock = (RevenueCat.StoreTransaction?, RevenueCat.CustomerInfo?, Swift.Error?, Swift.Bool) -> Swift.Void +public typealias DeferredPromotionalPurchaseBlock = (@escaping RevenueCat.PurchaseCompletedBlock) -> Swift.Void +@_hasMissingDesignatedInitializers @objc(RCPurchases) public class Purchases : ObjectiveC.NSObject { + @objc(sharedPurchases) public static var shared: RevenueCat.Purchases { + @objc get + } + @objc public static var isConfigured: Swift.Bool { + @objc get + } + @objc public var delegate: RevenueCat.PurchasesDelegate? { + @objc get + @objc set + } + @objc public static var automaticAppleSearchAdsAttributionCollection: Swift.Bool + @objc public static var logLevel: RevenueCat.LogLevel { + @objc get + @objc set + } + @objc public static var proxyURL: Foundation.URL? { + @objc get + @objc set + } + @objc public static var forceUniversalAppStore: Swift.Bool { + @objc get + @objc set + } + @available(iOS 8.0, macOS 10.14, watchOS 6.2, macCatalyst 13.0, *) + @objc public static var simulatesAskToBuyInSandbox: Swift.Bool { + @objc get + @objc set + } + @objc public static func canMakePayments() -> Swift.Bool + @objc public static var logHandler: RevenueCat.LogHandler { + @objc get + @objc set + } + @objc public static var verboseLogHandler: RevenueCat.VerboseLogHandler { + @objc get + @objc set + } + @objc public static var verboseLogs: Swift.Bool { + @objc get + @objc set + } + @objc public static var frameworkVersion: Swift.String { + @objc get + } + @objc public var finishTransactions: Swift.Bool { + @objc get + @objc set + } + @objc public func collectDeviceIdentifiers() + @objc deinit +} +extension RevenueCat.Purchases { + @objc dynamic public func setAttributes(_ attributes: [Swift.String : Swift.String]) + @objc dynamic public func setEmail(_ email: Swift.String?) + @objc dynamic public func setPhoneNumber(_ phoneNumber: Swift.String?) + @objc dynamic public func setDisplayName(_ displayName: Swift.String?) + @objc dynamic public func setPushToken(_ pushToken: Foundation.Data?) + @objc dynamic public func setAdjustID(_ adjustID: Swift.String?) + @objc dynamic public func setAppsflyerID(_ appsflyerID: Swift.String?) + @objc dynamic public func setFBAnonymousID(_ fbAnonymousID: Swift.String?) + @objc dynamic public func setMparticleID(_ mparticleID: Swift.String?) + @objc dynamic public func setOnesignalID(_ onesignalID: Swift.String?) + @objc dynamic public func setAirshipChannelID(_ airshipChannelID: Swift.String?) + @objc dynamic public func setCleverTapID(_ cleverTapID: Swift.String?) + @objc dynamic public func setMediaSource(_ mediaSource: Swift.String?) + @objc dynamic public func setCampaign(_ campaign: Swift.String?) + @objc dynamic public func setAdGroup(_ adGroup: Swift.String?) + @objc dynamic public func setAd(_ installAd: Swift.String?) + @objc dynamic public func setKeyword(_ keyword: Swift.String?) + @objc dynamic public func setCreative(_ creative: Swift.String?) +} +extension RevenueCat.Purchases { + @objc dynamic public var appUserID: Swift.String { + @objc get + } + @objc dynamic public var isAnonymous: Swift.Bool { + @objc get + } + @objc(logIn:completion:) dynamic public func logIn(_ appUserID: Swift.String, completion: @escaping (RevenueCat.CustomerInfo?, Swift.Bool, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logIn(_ appUserID: Swift.String) async throws -> (customerInfo: RevenueCat.CustomerInfo, created: Swift.Bool) + #endif + + @objc dynamic public func logOut(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func logOut() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func getOfferings(completion: @escaping (RevenueCat.Offerings?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func offerings() async throws -> RevenueCat.Offerings + #endif + +} +extension RevenueCat.Purchases { + @objc dynamic public func getCustomerInfo(completion: @escaping (RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func customerInfo() async throws -> RevenueCat.CustomerInfo + #endif + + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public var customerInfoStream: _Concurrency.AsyncStream { + get + } + @objc(getProductsWithIdentifiers:completion:) dynamic public func getProducts(_ productIdentifiers: [Swift.String], completion: @escaping ([RevenueCat.StoreProduct]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func products(_ productIdentifiers: [Swift.String]) async -> [RevenueCat.StoreProduct] + #endif + + @objc(purchaseProduct:withCompletion:) dynamic public func purchase(product: RevenueCat.StoreProduct, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc(purchasePackage:withCompletion:) dynamic public func purchase(package: RevenueCat.Package, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchaseProduct:withPromotionalOffer:completion:) dynamic public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(product: RevenueCat.StoreProduct, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @available(iOS 12.2, macOS 10.14.4, watchOS 6.2, macCatalyst 13.0, tvOS 12.2, *) + @objc(purchasePackage:withPromotionalOffer:completion:) dynamic public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer, completion: @escaping RevenueCat.PurchaseCompletedBlock) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func purchase(package: RevenueCat.Package, promotionalOffer: RevenueCat.PromotionalOffer) async throws -> RevenueCat.PurchaseResultData + #endif + + @objc dynamic public func syncPurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)?) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func syncPurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc dynamic public func restorePurchases(completion: ((RevenueCat.CustomerInfo?, Swift.Error?) -> Swift.Void)? = nil) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func restorePurchases() async throws -> RevenueCat.CustomerInfo + #endif + + @objc(checkTrialOrIntroDiscountEligibility:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String], completion: @escaping ([Swift.String : RevenueCat.IntroEligibility]) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(productIdentifiers: [Swift.String]) async -> [Swift.String : RevenueCat.IntroEligibility] + #endif + + @objc(checkTrialOrIntroDiscountEligibilityForProduct:completion:) dynamic public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.IntroEligibilityStatus) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, tvOS 13.0, macOS 10.15, watchOS 6.2, *) + public func checkTrialOrIntroDiscountEligibility(product: RevenueCat.StoreProduct) async -> RevenueCat.IntroEligibilityStatus + #endif + + @objc dynamic public func invalidateCustomerInfoCache() + @available(iOS 14.0, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @available(macOS, unavailable) + @available(macCatalyst, unavailable) + @objc dynamic public func presentCodeRedemptionSheet() + @available(iOS 12.2, macOS 10.14.4, macCatalyst 13.0, tvOS 12.2, watchOS 6.2, *) + @objc(getPromotionalOfferForProductDiscount:withProduct:withCompletion:) dynamic public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct, completion: @escaping (RevenueCat.PromotionalOffer?, Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getPromotionalOffer(forProductDiscount discount: RevenueCat.StoreProductDiscount, product: RevenueCat.StoreProduct) async throws -> RevenueCat.PromotionalOffer + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) + public func getEligiblePromotionalOffers(forProduct product: RevenueCat.StoreProduct) async -> [RevenueCat.PromotionalOffer] + #endif + + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc dynamic public func showManageSubscriptions(completion: @escaping (Swift.Error?) -> Swift.Void) + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 13.0, macOS 10.15, *) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + public func showManageSubscriptions() async throws + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForProduct:completion:) dynamic public func beginRefundRequest(forProduct productID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForEntitlement:completion:) dynamic public func beginRefundRequest(forEntitlement entitlementID: Swift.String) async throws -> RevenueCat.RefundRequestStatus + #endif + + + #if compiler(>=5.3) && $AsyncAwait + @available(iOS 15.0, *) + @available(macOS, unavailable) + @available(watchOS, unavailable) + @available(tvOS, unavailable) + @objc(beginRefundRequestForActiveEntitlementWithCompletion:) dynamic public func beginRefundRequestForActiveEntitlement() async throws -> RevenueCat.RefundRequestStatus + #endif + +} +extension RevenueCat.Purchases { + @discardableResult + @objc(configureWithAPIKey:) public static func configure(withAPIKey apiKey: Swift.String) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool) -> RevenueCat.Purchases + @discardableResult + @objc(configureWithAPIKey:appUserID:observerMode:userDefaults:useStoreKit2IfAvailable:dangerousSettings:) public static func configure(withAPIKey apiKey: Swift.String, appUserID: Swift.String?, observerMode: Swift.Bool, userDefaults: Foundation.UserDefaults?, useStoreKit2IfAvailable: Swift.Bool, dangerousSettings: RevenueCat.DangerousSettings?) -> RevenueCat.Purchases +} +extension RevenueCat.Purchases { + @objc dynamic public func shouldPurchasePromoProduct(_ product: RevenueCat.StoreProduct, defermentBlock: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +extension RevenueCat.Purchases { + @available(*, deprecated, message: "use Purchases.logLevel instead") + @objc public static var debugLogsEnabled: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Configure behavior through the RevenueCat dashboard instead") + @objc dynamic public var allowSharingAppStoreAccount: Swift.Bool { + @objc get + @objc set + } + @available(*, deprecated, message: "Use the set functions instead") + @objc public static func addAttributionData(_ data: [Swift.String : Any], fromNetwork network: RevenueCat.AttributionNetwork) + @available(*, deprecated, message: "Use the set functions instead") + @objc(addAttributionData:fromNetwork:forNetworkUserId:) public static func addAttributionData(_ data: [Swift.String : Any], from network: RevenueCat.AttributionNetwork, forNetworkUserId networkUserId: Swift.String?) +} +@objc(RCSubscriptionPeriod) public class SubscriptionPeriod : ObjectiveC.NSObject { + @objc final public let value: Swift.Int + @objc final public let unit: RevenueCat.SubscriptionPeriod.Unit + public init(value: Swift.Int, unit: RevenueCat.SubscriptionPeriod.Unit) + @objc(RCSubscriptionPeriodUnit) public enum Unit : Swift.Int { + case day = 0 + case week = 1 + case month = 2 + case year = 3 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.SubscriptionPeriod { + @available(iOS, unavailable, renamed: "value") + @available(tvOS, unavailable, renamed: "value") + @available(watchOS, unavailable, renamed: "value") + @available(macOS, unavailable, renamed: "value") + @objc dynamic public var numberOfUnits: Swift.Int { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + get + } +} +extension RevenueCat.SubscriptionPeriod { + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } +} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Encodable { +} +extension RevenueCat.SubscriptionPeriod : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +@objc(RCPurchaseOwnershipType) public enum PurchaseOwnershipType : Swift.Int { + case purchased = 0 + case familyShared = 1 + case unknown = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.PurchaseOwnershipType] + public static var allCases: [RevenueCat.PurchaseOwnershipType] { + get + } +} +extension RevenueCat.PurchaseOwnershipType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.PeriodType : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +extension RevenueCat.Store : Swift.Decodable { + public init(from decoder: Swift.Decoder) throws +} +@_hasMissingDesignatedInitializers @objc(RCEntitlementInfos) public class EntitlementInfos : ObjectiveC.NSObject { + @objc final public let all: [Swift.String : RevenueCat.EntitlementInfo] + @objc public var active: [Swift.String : RevenueCat.EntitlementInfo] { + @objc get + } + @objc public subscript(key: Swift.String) -> RevenueCat.EntitlementInfo? { + @objc get + } + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc deinit +} +@objc(RCPackageType) public enum PackageType : Swift.Int { + case unknown = -2, custom, lifetime, annual, sixMonth, threeMonth, twoMonth, monthly, weekly + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@_hasMissingDesignatedInitializers @objc(RCPackage) public class Package : ObjectiveC.NSObject { + @objc final public let identifier: Swift.String + @objc final public let packageType: RevenueCat.PackageType + @objc final public let storeProduct: RevenueCat.StoreProduct + @objc final public let offeringIdentifier: Swift.String + @objc public var localizedPriceString: Swift.String { + @objc get + } + @objc public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } + @objc override dynamic public func isEqual(_ object: Any?) -> Swift.Bool + @objc override dynamic public var hash: Swift.Int { + @objc get + } + @objc deinit +} +@objc extension RevenueCat.Package { + @objc public static func string(from packageType: RevenueCat.PackageType) -> Swift.String? + @objc dynamic public class func packageType(from string: Swift.String) -> RevenueCat.PackageType +} +extension RevenueCat.Package : Swift.Identifiable { + public var id: Swift.String { + get + } + public typealias ID = Swift.String +} +@objc(RCIntroEligibilityStatus) public enum IntroEligibilityStatus : Swift.Int { + case unknown = 0 + case ineligible + case eligible + case noIntroOfferExists + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.IntroEligibilityStatus : Swift.CaseIterable { + public typealias AllCases = [RevenueCat.IntroEligibilityStatus] + public static var allCases: [RevenueCat.IntroEligibilityStatus] { + get + } +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(RCIntroEligibility) public class IntroEligibility : ObjectiveC.NSObject { + @objc final public let status: RevenueCat.IntroEligibilityStatus + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc deinit +} +@available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) +public typealias SK1ProductDiscount = StoreKit.SKProductDiscount +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2ProductDiscount = StoreKit.Product.SubscriptionOffer +@_hasMissingDesignatedInitializers @objc(RCStoreProductDiscount) final public class StoreProductDiscount : ObjectiveC.NSObject { + @objc(RCPaymentMode) public enum PaymentMode : Swift.Int { + case payAsYouGo = 0 + case payUpFront = 1 + case freeTrial = 2 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc(RCDiscountType) public enum DiscountType : Swift.Int { + case introductory = 0 + case promotional = 1 + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc final public var offerIdentifier: Swift.String? { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var paymentMode: RevenueCat.StoreProductDiscount.PaymentMode { + @objc get + } + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod { + @objc get + } + @objc final public var type: RevenueCat.StoreProductDiscount.DiscountType { + @objc get + } + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProductDiscount { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } +} +extension RevenueCat.StoreProductDiscount { + public struct Data : Swift.Hashable { + public func hash(into hasher: inout Swift.Hasher) + public static func == (a: RevenueCat.StoreProductDiscount.Data, b: RevenueCat.StoreProductDiscount.Data) -> Swift.Bool + public var hashValue: Swift.Int { + get + } + } +} +extension RevenueCat.StoreProductDiscount { + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var sk1Discount: RevenueCat.SK1ProductDiscount? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Discount: RevenueCat.SK2ProductDiscount? { + get + } +} +extension RevenueCat.StoreProductDiscount : Swift.Encodable { + final public func encode(to encoder: Swift.Encoder) throws +} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Encodable { +} +extension RevenueCat.StoreProductDiscount : Swift.Identifiable { + final public var id: RevenueCat.StoreProductDiscount.Data { + get + } + public typealias ID = RevenueCat.StoreProductDiscount.Data +} +@objc(RCPurchasesDelegate) public protocol PurchasesDelegate : ObjectiveC.NSObjectProtocol { + @available(swift, obsoleted: 1, renamed: "purchases(_:receivedUpdated:)") + @available(iOS, obsoleted: 1) + @available(macOS, obsoleted: 1) + @available(tvOS, obsoleted: 1) + @available(watchOS, obsoleted: 1) + @objc(purchases:didReceiveUpdatedPurchaserInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, didReceiveUpdated purchaserInfo: RevenueCat.CustomerInfo) + @objc(purchases:receivedUpdatedCustomerInfo:) optional func purchases(_ purchases: RevenueCat.Purchases, receivedUpdated customerInfo: RevenueCat.CustomerInfo) + @objc optional func purchases(_ purchases: RevenueCat.Purchases, shouldPurchasePromoProduct product: RevenueCat.StoreProduct, defermentBlock makeDeferredPurchase: @escaping RevenueCat.DeferredPromotionalPurchaseBlock) +} +@objc(RCAttributionNetwork) public enum AttributionNetwork : Swift.Int { + case appleSearchAds + case adjust + case appsFlyer + case branch + case tenjin + case facebook + case mParticle + public init?(rawValue: Swift.Int) + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension RevenueCat.AttributionNetwork : Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws +} +public typealias SK1Product = StoreKit.SKProduct +@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) +public typealias SK2Product = StoreKit.Product +@_hasMissingDesignatedInitializers @objc(RCStoreProduct) final public class StoreProduct : ObjectiveC.NSObject { + @objc override final public func isEqual(_ object: Any?) -> Swift.Bool + @objc override final public var hash: Swift.Int { + @objc get + } + @objc final public var productType: RevenueCat.StoreProduct.ProductType { + @objc get + } + @objc final public var productCategory: RevenueCat.StoreProduct.ProductCategory { + @objc get + } + @objc final public var localizedDescription: Swift.String { + @objc get + } + @objc final public var localizedTitle: Swift.String { + @objc get + } + @objc final public var currencyCode: Swift.String? { + @objc get + } + final public var price: Foundation.Decimal { + get + } + @objc final public var localizedPriceString: Swift.String { + @objc get + } + @objc final public var productIdentifier: Swift.String { + @objc get + } + @available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 8.0, *) + @objc final public var isFamilyShareable: Swift.Bool { + @objc get + } + @available(iOS 12.0, macCatalyst 13.0, tvOS 12.0, macOS 10.14, watchOS 6.2, *) + @objc final public var subscriptionGroupIdentifier: Swift.String? { + @objc get + } + @objc final public var priceFormatter: Foundation.NumberFormatter? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var subscriptionPeriod: RevenueCat.SubscriptionPeriod? { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var introductoryDiscount: RevenueCat.StoreProductDiscount? { + @objc get + } + @available(iOS 12.2, macOS 10.14.4, tvOS 12.2, watchOS 6.2, *) + @objc final public var discounts: [RevenueCat.StoreProductDiscount] { + @objc get + } + @objc deinit +} +extension RevenueCat.StoreProduct { + @objc(price) final public var priceDecimalNumber: Foundation.NSDecimalNumber { + @objc get + } + @available(iOS 11.2, macOS 10.13.2, tvOS 11.2, watchOS 6.2, *) + @objc final public var pricePerMonth: Foundation.NSDecimalNumber? { + @objc get + } + @objc final public var localizedIntroductoryPriceString: Swift.String? { + @objc get + } +} +@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.2, *) +extension RevenueCat.StoreProduct { + + #if compiler(>=5.3) && $AsyncAwait + final public func getEligiblePromotionalOffers() async -> [RevenueCat.PromotionalOffer] + #endif + +} +extension RevenueCat.StoreProduct { + @objc convenience dynamic public init(sk1Product: RevenueCat.SK1Product) + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + convenience public init(sk2Product: RevenueCat.SK2Product) + @objc final public var sk1Product: RevenueCat.SK1Product? { + @objc get + } + @available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *) + final public var sk2Product: RevenueCat.SK2Product? { + get + } +} +extension RevenueCat.StoreProduct { + @available(iOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(tvOS, unavailable, introduced: 11.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(watchOS, unavailable, introduced: 6.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @available(macOS, unavailable, introduced: 10.13.2, renamed: "introductoryDiscount", message: "Use StoreProductDiscount instead") + @objc final public var introductoryPrice: StoreKit.SKProductDiscount? { + @objc get + } + @available(iOS, unavailable, message: "Use localizedPriceString instead") + @available(tvOS, unavailable, message: "Use localizedPriceString instead") + @available(watchOS, unavailable, message: "Use localizedPriceString instead") + @available(macOS, unavailable, message: "Use localizedPriceString instead") + @objc final public var priceLocale: Foundation.Locale { + @objc get + } +} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductCategory : Swift.RawRepresentable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Equatable {} +extension RevenueCat.StoreProduct.ProductType : Swift.Hashable {} +extension RevenueCat.StoreProduct.ProductType : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.PaymentMode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.Equatable {} +extension RevenueCat.ErrorCode : Swift.Hashable {} +extension RevenueCat.ErrorCode : Swift.RawRepresentable {} +extension RevenueCat.ErrorCode : Swift.CustomStringConvertible {} +extension RevenueCat.RefundRequestStatus : Swift.Equatable {} +extension RevenueCat.RefundRequestStatus : Swift.Hashable {} +extension RevenueCat.RefundRequestStatus : Swift.RawRepresentable {} +extension RevenueCat.Store : Swift.Equatable {} +extension RevenueCat.Store : Swift.Hashable {} +extension RevenueCat.Store : Swift.RawRepresentable {} +extension RevenueCat.PeriodType : Swift.Equatable {} +extension RevenueCat.PeriodType : Swift.Hashable {} +extension RevenueCat.PeriodType : Swift.RawRepresentable {} +extension RevenueCat.LogLevel : Swift.Equatable {} +extension RevenueCat.LogLevel : Swift.Hashable {} +extension RevenueCat.LogLevel : Swift.RawRepresentable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Equatable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.Hashable {} +extension RevenueCat.SubscriptionPeriod.Unit : Swift.RawRepresentable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Equatable {} +extension RevenueCat.PurchaseOwnershipType : Swift.Hashable {} +extension RevenueCat.PurchaseOwnershipType : Swift.RawRepresentable {} +extension RevenueCat.PackageType : Swift.Equatable {} +extension RevenueCat.PackageType : Swift.Hashable {} +extension RevenueCat.PackageType : Swift.RawRepresentable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Equatable {} +extension RevenueCat.IntroEligibilityStatus : Swift.Hashable {} +extension RevenueCat.IntroEligibilityStatus : Swift.RawRepresentable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Equatable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.Hashable {} +extension RevenueCat.StoreProductDiscount.DiscountType : Swift.RawRepresentable {} +extension RevenueCat.AttributionNetwork : Swift.Equatable {} +extension RevenueCat.AttributionNetwork : Swift.Hashable {} +extension RevenueCat.AttributionNetwork : Swift.RawRepresentable {} diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftmodule b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000..874125e Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/RevenueCat.swiftmodule/x86_64.swiftmodule differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/module.modulemap b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/module.modulemap new file mode 100644 index 0000000..246dd26 --- /dev/null +++ b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module RevenueCat { + umbrella header "RevenueCat.h" + + export * + module * { export * } +} + +module RevenueCat.Swift { + header "RevenueCat-Swift.h" + requires objc +} diff --git a/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/RevenueCat b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/RevenueCat new file mode 100755 index 0000000..2fcbb09 Binary files /dev/null and b/Xamarin.RevenueCat.iOS/nativelib/RevenueCat.framework/RevenueCat differ diff --git a/Xamarin.RevenueCat.iOS/nativelib/libPurchases.a b/Xamarin.RevenueCat.iOS/nativelib/libPurchases.a deleted file mode 100644 index e025722..0000000 Binary files a/Xamarin.RevenueCat.iOS/nativelib/libPurchases.a and /dev/null differ diff --git a/readme-images/howto-1.png b/readme-images/howto-1.png deleted file mode 100644 index f29329c..0000000 Binary files a/readme-images/howto-1.png and /dev/null differ diff --git a/readme-images/howto-2.png b/readme-images/howto-2.png deleted file mode 100644 index fba6669..0000000 Binary files a/readme-images/howto-2.png and /dev/null differ diff --git a/sharpie/Makefile b/sharpie/Makefile deleted file mode 100644 index 6be4c4f..0000000 --- a/sharpie/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -PROJECT_ROOT=./Purchases -PROJECT=$(PROJECT_ROOT)/Purchases.xcodeproj -TARGET=Purchases - -all: lib$(TARGET).a - -lib$(TARGET)-x86_64.a: - $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -arch x86_64 -configuration Release clean build - -mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@ - -lib$(TARGET)-armv7.a: - $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build - -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@ - -lib$(TARGET)-arm64.a: - $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build - -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@ - -lib$(TARGET).a: lib$(TARGET)-x86_64.a lib$(TARGET)-armv7.a lib$(TARGET)-arm64.a - xcrun -sdk iphoneos lipo -create -output $@ $^ - -clean: - -rm -f *.a *.dll diff --git a/sharpie/Purchases.zip b/sharpie/Purchases.zip deleted file mode 100644 index e55fefa..0000000 Binary files a/sharpie/Purchases.zip and /dev/null differ diff --git a/sharpie/create-sharpie-files.sh b/sharpie/create-sharpie-files.sh deleted file mode 100755 index 1f28ade..0000000 --- a/sharpie/create-sharpie-files.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -revenueCatVersion=$(cat ./revenuecat-version.txt) -targetSdk=iphoneos14.1 - -git clone https://github.com/RevenueCat/purchases-ios.git -cd purchases-ios -git checkout $revenueCatVersion -cd .. - -sharpie bind \ - -sdk ${targetSdk} \ - ./purchases-ios/Purchases/Public/Purchases.h \ - -scope ./purchases-ios/Purchases/Public \ - -namespace Purchases \ - -c -F . - -rm -rf purchases-ios diff --git a/sharpie/finish-library-build.sh b/sharpie/finish-library-build.sh deleted file mode 100755 index f1bfff4..0000000 --- a/sharpie/finish-library-build.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -make - -mv libPurchases.a ../Xamarin.RevenueCat.iOS/nativelib/libPurchases.a - -rm libPurchases-arm64.a libPurchases-armv7.a libPurchases-x86_64.a - -rm -rf Purchases purchases-ios diff --git a/sharpie/prepare-library-build.sh b/sharpie/prepare-library-build.sh deleted file mode 100755 index cb5bdfa..0000000 --- a/sharpie/prepare-library-build.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -revenueCatVersion=$(cat revenuecat-version.txt) - -git clone https://github.com/RevenueCat/purchases-ios.git -cd purchases-ios -git checkout $revenueCatVersion -cd .. - -tar -xzf Purchases.zip - -cd Purchases/Purchases/ - -cp -r ../../purchases-ios/Purchases/* . - -cd .. -xed . -cd .. diff --git a/sharpie/revenuecat-version.txt b/sharpie/revenuecat-version.txt deleted file mode 100644 index 444877d..0000000 --- a/sharpie/revenuecat-version.txt +++ /dev/null @@ -1 +0,0 @@ -3.5.3