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 Package
s, 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 SKProduct
s 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 StoreProduct
s 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 StoreProduct
s 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 Package
s, 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 SKProduct
s 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 StoreProduct
s 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 StoreProduct
s 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