react-native-iap 14.5.0 → 14.5.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +47 -7
  2. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  3. package/ios/reactnativeiap.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  4. package/lib/module/types.js +35 -0
  5. package/lib/module/types.js.map +1 -1
  6. package/lib/module/utils/type-bridge.js +2 -1
  7. package/lib/module/utils/type-bridge.js.map +1 -1
  8. package/lib/typescript/src/specs/RnIap.nitro.d.ts +54 -1
  9. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  10. package/lib/typescript/src/types.d.ts +127 -14
  11. package/lib/typescript/src/types.d.ts.map +1 -1
  12. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
  13. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +13 -0
  14. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +24 -0
  15. package/nitrogen/generated/android/c++/JNitroDiscountAmountAndroid.hpp +61 -0
  16. package/nitrogen/generated/android/c++/JNitroDiscountDisplayInfoAndroid.hpp +64 -0
  17. package/nitrogen/generated/android/c++/JNitroLimitedQuantityInfoAndroid.hpp +61 -0
  18. package/nitrogen/generated/android/c++/JNitroOneTimePurchaseOfferDetail.hpp +70 -3
  19. package/nitrogen/generated/android/c++/JNitroPreorderDetailsAndroid.hpp +61 -0
  20. package/nitrogen/generated/android/c++/JNitroProduct.hpp +35 -5
  21. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +7 -3
  22. package/nitrogen/generated/android/c++/JNitroRentalDetailsAndroid.hpp +62 -0
  23. package/nitrogen/generated/android/c++/JNitroValidTimeWindowAndroid.hpp +61 -0
  24. package/nitrogen/generated/android/c++/JPurchaseAndroid.hpp +5 -1
  25. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroDiscountAmountAndroid.kt +39 -0
  26. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroDiscountDisplayInfoAndroid.kt +39 -0
  27. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroLimitedQuantityInfoAndroid.kt +39 -0
  28. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroOneTimePurchaseOfferDetail.kt +30 -3
  29. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPreorderDetailsAndroid.kt +39 -0
  30. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +2 -2
  31. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +6 -3
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRentalDetailsAndroid.kt +39 -0
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroValidTimeWindowAndroid.kt +39 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseAndroid.kt +5 -2
  35. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +137 -18
  36. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +18 -0
  37. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +18 -0
  38. package/nitrogen/generated/ios/swift/NitroDiscountAmountAndroid.swift +46 -0
  39. package/nitrogen/generated/ios/swift/NitroDiscountDisplayInfoAndroid.swift +70 -0
  40. package/nitrogen/generated/ios/swift/NitroLimitedQuantityInfoAndroid.swift +46 -0
  41. package/nitrogen/generated/ios/swift/NitroOneTimePurchaseOfferDetail.swift +211 -2
  42. package/nitrogen/generated/ios/swift/NitroPreorderDetailsAndroid.swift +46 -0
  43. package/nitrogen/generated/ios/swift/NitroProduct.swift +26 -7
  44. package/nitrogen/generated/ios/swift/NitroPurchase.swift +31 -1
  45. package/nitrogen/generated/ios/swift/NitroRentalDetailsAndroid.swift +65 -0
  46. package/nitrogen/generated/ios/swift/NitroValidTimeWindowAndroid.swift +46 -0
  47. package/nitrogen/generated/ios/swift/PurchaseAndroid.swift +32 -2
  48. package/nitrogen/generated/shared/c++/NitroDiscountAmountAndroid.hpp +79 -0
  49. package/nitrogen/generated/shared/c++/NitroDiscountDisplayInfoAndroid.hpp +81 -0
  50. package/nitrogen/generated/shared/c++/NitroLimitedQuantityInfoAndroid.hpp +79 -0
  51. package/nitrogen/generated/shared/c++/NitroOneTimePurchaseOfferDetail.hpp +55 -3
  52. package/nitrogen/generated/shared/c++/NitroPreorderDetailsAndroid.hpp +79 -0
  53. package/nitrogen/generated/shared/c++/NitroProduct.hpp +6 -5
  54. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +6 -2
  55. package/nitrogen/generated/shared/c++/NitroRentalDetailsAndroid.hpp +80 -0
  56. package/nitrogen/generated/shared/c++/NitroValidTimeWindowAndroid.hpp +79 -0
  57. package/nitrogen/generated/shared/c++/PurchaseAndroid.hpp +5 -1
  58. package/openiap-versions.json +2 -2
  59. package/package.json +1 -1
  60. package/plugin/build/src/withIAP.d.ts +3 -0
  61. package/plugin/build/src/withIAP.js +81 -0
  62. package/plugin/build/tsconfig.tsbuildinfo +1 -0
  63. package/plugin/tsconfig.tsbuildinfo +1 -1
  64. package/src/specs/RnIap.nitro.ts +60 -1
  65. package/src/types.ts +133 -14
  66. package/src/utils/type-bridge.ts +1 -0
@@ -18,10 +18,75 @@ public extension NitroOneTimePurchaseOfferDetail {
18
18
  /**
19
19
  * Create a new instance of `NitroOneTimePurchaseOfferDetail`.
20
20
  */
21
- init(formattedPrice: String, priceAmountMicros: String, priceCurrencyCode: String) {
22
- self.init(std.string(formattedPrice), std.string(priceAmountMicros), std.string(priceCurrencyCode))
21
+ init(discountDisplayInfo: NitroDiscountDisplayInfoAndroid?, formattedPrice: String, fullPriceMicros: String?, limitedQuantityInfo: NitroLimitedQuantityInfoAndroid?, offerId: String?, offerTags: [String], offerToken: String, preorderDetailsAndroid: NitroPreorderDetailsAndroid?, priceAmountMicros: String, priceCurrencyCode: String, rentalDetailsAndroid: NitroRentalDetailsAndroid?, validTimeWindow: NitroValidTimeWindowAndroid?) {
22
+ self.init({ () -> bridge.std__optional_NitroDiscountDisplayInfoAndroid_ in
23
+ if let __unwrappedValue = discountDisplayInfo {
24
+ return bridge.create_std__optional_NitroDiscountDisplayInfoAndroid_(__unwrappedValue)
25
+ } else {
26
+ return .init()
27
+ }
28
+ }(), std.string(formattedPrice), { () -> bridge.std__optional_std__string_ in
29
+ if let __unwrappedValue = fullPriceMicros {
30
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
31
+ } else {
32
+ return .init()
33
+ }
34
+ }(), { () -> bridge.std__optional_NitroLimitedQuantityInfoAndroid_ in
35
+ if let __unwrappedValue = limitedQuantityInfo {
36
+ return bridge.create_std__optional_NitroLimitedQuantityInfoAndroid_(__unwrappedValue)
37
+ } else {
38
+ return .init()
39
+ }
40
+ }(), { () -> bridge.std__optional_std__string_ in
41
+ if let __unwrappedValue = offerId {
42
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
43
+ } else {
44
+ return .init()
45
+ }
46
+ }(), { () -> bridge.std__vector_std__string_ in
47
+ var __vector = bridge.create_std__vector_std__string_(offerTags.count)
48
+ for __item in offerTags {
49
+ __vector.push_back(std.string(__item))
50
+ }
51
+ return __vector
52
+ }(), std.string(offerToken), { () -> bridge.std__optional_NitroPreorderDetailsAndroid_ in
53
+ if let __unwrappedValue = preorderDetailsAndroid {
54
+ return bridge.create_std__optional_NitroPreorderDetailsAndroid_(__unwrappedValue)
55
+ } else {
56
+ return .init()
57
+ }
58
+ }(), std.string(priceAmountMicros), std.string(priceCurrencyCode), { () -> bridge.std__optional_NitroRentalDetailsAndroid_ in
59
+ if let __unwrappedValue = rentalDetailsAndroid {
60
+ return bridge.create_std__optional_NitroRentalDetailsAndroid_(__unwrappedValue)
61
+ } else {
62
+ return .init()
63
+ }
64
+ }(), { () -> bridge.std__optional_NitroValidTimeWindowAndroid_ in
65
+ if let __unwrappedValue = validTimeWindow {
66
+ return bridge.create_std__optional_NitroValidTimeWindowAndroid_(__unwrappedValue)
67
+ } else {
68
+ return .init()
69
+ }
70
+ }())
23
71
  }
24
72
 
73
+ var discountDisplayInfo: NitroDiscountDisplayInfoAndroid? {
74
+ @inline(__always)
75
+ get {
76
+ return self.__discountDisplayInfo.value
77
+ }
78
+ @inline(__always)
79
+ set {
80
+ self.__discountDisplayInfo = { () -> bridge.std__optional_NitroDiscountDisplayInfoAndroid_ in
81
+ if let __unwrappedValue = newValue {
82
+ return bridge.create_std__optional_NitroDiscountDisplayInfoAndroid_(__unwrappedValue)
83
+ } else {
84
+ return .init()
85
+ }
86
+ }()
87
+ }
88
+ }
89
+
25
90
  var formattedPrice: String {
26
91
  @inline(__always)
27
92
  get {
@@ -33,6 +98,116 @@ public extension NitroOneTimePurchaseOfferDetail {
33
98
  }
34
99
  }
35
100
 
101
+ var fullPriceMicros: String? {
102
+ @inline(__always)
103
+ get {
104
+ return { () -> String? in
105
+ if bridge.has_value_std__optional_std__string_(self.__fullPriceMicros) {
106
+ let __unwrapped = bridge.get_std__optional_std__string_(self.__fullPriceMicros)
107
+ return String(__unwrapped)
108
+ } else {
109
+ return nil
110
+ }
111
+ }()
112
+ }
113
+ @inline(__always)
114
+ set {
115
+ self.__fullPriceMicros = { () -> bridge.std__optional_std__string_ in
116
+ if let __unwrappedValue = newValue {
117
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
118
+ } else {
119
+ return .init()
120
+ }
121
+ }()
122
+ }
123
+ }
124
+
125
+ var limitedQuantityInfo: NitroLimitedQuantityInfoAndroid? {
126
+ @inline(__always)
127
+ get {
128
+ return self.__limitedQuantityInfo.value
129
+ }
130
+ @inline(__always)
131
+ set {
132
+ self.__limitedQuantityInfo = { () -> bridge.std__optional_NitroLimitedQuantityInfoAndroid_ in
133
+ if let __unwrappedValue = newValue {
134
+ return bridge.create_std__optional_NitroLimitedQuantityInfoAndroid_(__unwrappedValue)
135
+ } else {
136
+ return .init()
137
+ }
138
+ }()
139
+ }
140
+ }
141
+
142
+ var offerId: String? {
143
+ @inline(__always)
144
+ get {
145
+ return { () -> String? in
146
+ if bridge.has_value_std__optional_std__string_(self.__offerId) {
147
+ let __unwrapped = bridge.get_std__optional_std__string_(self.__offerId)
148
+ return String(__unwrapped)
149
+ } else {
150
+ return nil
151
+ }
152
+ }()
153
+ }
154
+ @inline(__always)
155
+ set {
156
+ self.__offerId = { () -> bridge.std__optional_std__string_ in
157
+ if let __unwrappedValue = newValue {
158
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
159
+ } else {
160
+ return .init()
161
+ }
162
+ }()
163
+ }
164
+ }
165
+
166
+ var offerTags: [String] {
167
+ @inline(__always)
168
+ get {
169
+ return self.__offerTags.map({ __item in String(__item) })
170
+ }
171
+ @inline(__always)
172
+ set {
173
+ self.__offerTags = { () -> bridge.std__vector_std__string_ in
174
+ var __vector = bridge.create_std__vector_std__string_(newValue.count)
175
+ for __item in newValue {
176
+ __vector.push_back(std.string(__item))
177
+ }
178
+ return __vector
179
+ }()
180
+ }
181
+ }
182
+
183
+ var offerToken: String {
184
+ @inline(__always)
185
+ get {
186
+ return String(self.__offerToken)
187
+ }
188
+ @inline(__always)
189
+ set {
190
+ self.__offerToken = std.string(newValue)
191
+ }
192
+ }
193
+
194
+ var preorderDetailsAndroid: NitroPreorderDetailsAndroid? {
195
+ @inline(__always)
196
+ get {
197
+ return self.__preorderDetailsAndroid.value
198
+ }
199
+ @inline(__always)
200
+ set {
201
+ self.__preorderDetailsAndroid = { () -> bridge.std__optional_NitroPreorderDetailsAndroid_ in
202
+ if let __unwrappedValue = newValue {
203
+ return bridge.create_std__optional_NitroPreorderDetailsAndroid_(__unwrappedValue)
204
+ } else {
205
+ return .init()
206
+ }
207
+ }()
208
+ }
209
+ }
210
+
36
211
  var priceAmountMicros: String {
37
212
  @inline(__always)
38
213
  get {
@@ -54,4 +229,38 @@ public extension NitroOneTimePurchaseOfferDetail {
54
229
  self.__priceCurrencyCode = std.string(newValue)
55
230
  }
56
231
  }
232
+
233
+ var rentalDetailsAndroid: NitroRentalDetailsAndroid? {
234
+ @inline(__always)
235
+ get {
236
+ return self.__rentalDetailsAndroid.value
237
+ }
238
+ @inline(__always)
239
+ set {
240
+ self.__rentalDetailsAndroid = { () -> bridge.std__optional_NitroRentalDetailsAndroid_ in
241
+ if let __unwrappedValue = newValue {
242
+ return bridge.create_std__optional_NitroRentalDetailsAndroid_(__unwrappedValue)
243
+ } else {
244
+ return .init()
245
+ }
246
+ }()
247
+ }
248
+ }
249
+
250
+ var validTimeWindow: NitroValidTimeWindowAndroid? {
251
+ @inline(__always)
252
+ get {
253
+ return self.__validTimeWindow.value
254
+ }
255
+ @inline(__always)
256
+ set {
257
+ self.__validTimeWindow = { () -> bridge.std__optional_NitroValidTimeWindowAndroid_ in
258
+ if let __unwrappedValue = newValue {
259
+ return bridge.create_std__optional_NitroValidTimeWindowAndroid_(__unwrappedValue)
260
+ } else {
261
+ return .init()
262
+ }
263
+ }()
264
+ }
265
+ }
57
266
  }
@@ -0,0 +1,46 @@
1
+ ///
2
+ /// NitroPreorderDetailsAndroid.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `NitroPreorderDetailsAndroid`, backed by a C++ struct.
12
+ */
13
+ public typealias NitroPreorderDetailsAndroid = margelo.nitro.iap.NitroPreorderDetailsAndroid
14
+
15
+ public extension NitroPreorderDetailsAndroid {
16
+ private typealias bridge = margelo.nitro.iap.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `NitroPreorderDetailsAndroid`.
20
+ */
21
+ init(preorderPresaleEndTimeMillis: String, preorderReleaseTimeMillis: String) {
22
+ self.init(std.string(preorderPresaleEndTimeMillis), std.string(preorderReleaseTimeMillis))
23
+ }
24
+
25
+ var preorderPresaleEndTimeMillis: String {
26
+ @inline(__always)
27
+ get {
28
+ return String(self.__preorderPresaleEndTimeMillis)
29
+ }
30
+ @inline(__always)
31
+ set {
32
+ self.__preorderPresaleEndTimeMillis = std.string(newValue)
33
+ }
34
+ }
35
+
36
+ var preorderReleaseTimeMillis: String {
37
+ @inline(__always)
38
+ get {
39
+ return String(self.__preorderReleaseTimeMillis)
40
+ }
41
+ @inline(__always)
42
+ set {
43
+ self.__preorderReleaseTimeMillis = std.string(newValue)
44
+ }
45
+ }
46
+ }
@@ -18,7 +18,7 @@ public extension NitroProduct {
18
18
  /**
19
19
  * Create a new instance of `NitroProduct`.
20
20
  */
21
- init(id: String, title: String, description: String, type: String, displayName: String?, displayPrice: String?, currency: String?, price: Double?, platform: IapPlatform, typeIOS: String?, isFamilyShareableIOS: Bool?, jsonRepresentationIOS: String?, discountsIOS: String?, introductoryPriceIOS: String?, introductoryPriceAsAmountIOS: Double?, introductoryPriceNumberOfPeriodsIOS: Double?, introductoryPricePaymentModeIOS: PaymentModeIOS, introductoryPriceSubscriptionPeriodIOS: String?, subscriptionPeriodNumberIOS: Double?, subscriptionPeriodUnitIOS: String?, nameAndroid: String?, originalPriceAndroid: String?, originalPriceAmountMicrosAndroid: Double?, introductoryPriceCyclesAndroid: Double?, introductoryPricePeriodAndroid: String?, introductoryPriceValueAndroid: Double?, subscriptionPeriodAndroid: String?, freeTrialPeriodAndroid: String?, subscriptionOfferDetailsAndroid: String?, oneTimePurchaseOfferDetailsAndroid: NitroOneTimePurchaseOfferDetail?) {
21
+ init(id: String, title: String, description: String, type: String, displayName: String?, displayPrice: String?, currency: String?, price: Double?, platform: IapPlatform, typeIOS: String?, isFamilyShareableIOS: Bool?, jsonRepresentationIOS: String?, discountsIOS: String?, introductoryPriceIOS: String?, introductoryPriceAsAmountIOS: Double?, introductoryPriceNumberOfPeriodsIOS: Double?, introductoryPricePaymentModeIOS: PaymentModeIOS, introductoryPriceSubscriptionPeriodIOS: String?, subscriptionPeriodNumberIOS: Double?, subscriptionPeriodUnitIOS: String?, nameAndroid: String?, originalPriceAndroid: String?, originalPriceAmountMicrosAndroid: Double?, introductoryPriceCyclesAndroid: Double?, introductoryPricePeriodAndroid: String?, introductoryPriceValueAndroid: Double?, subscriptionPeriodAndroid: String?, freeTrialPeriodAndroid: String?, subscriptionOfferDetailsAndroid: String?, oneTimePurchaseOfferDetailsAndroid: [NitroOneTimePurchaseOfferDetail]?) {
22
22
  self.init(std.string(id), std.string(title), std.string(description), std.string(type), { () -> bridge.std__optional_std__string_ in
23
23
  if let __unwrappedValue = displayName {
24
24
  return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
@@ -157,9 +157,15 @@ public extension NitroProduct {
157
157
  } else {
158
158
  return .init()
159
159
  }
160
- }(), { () -> bridge.std__optional_NitroOneTimePurchaseOfferDetail_ in
160
+ }(), { () -> bridge.std__optional_std__vector_NitroOneTimePurchaseOfferDetail__ in
161
161
  if let __unwrappedValue = oneTimePurchaseOfferDetailsAndroid {
162
- return bridge.create_std__optional_NitroOneTimePurchaseOfferDetail_(__unwrappedValue)
162
+ return bridge.create_std__optional_std__vector_NitroOneTimePurchaseOfferDetail__({ () -> bridge.std__vector_NitroOneTimePurchaseOfferDetail_ in
163
+ var __vector = bridge.create_std__vector_NitroOneTimePurchaseOfferDetail_(__unwrappedValue.count)
164
+ for __item in __unwrappedValue {
165
+ __vector.push_back(__item)
166
+ }
167
+ return __vector
168
+ }())
163
169
  } else {
164
170
  return .init()
165
171
  }
@@ -735,16 +741,29 @@ public extension NitroProduct {
735
741
  }
736
742
  }
737
743
 
738
- var oneTimePurchaseOfferDetailsAndroid: NitroOneTimePurchaseOfferDetail? {
744
+ var oneTimePurchaseOfferDetailsAndroid: [NitroOneTimePurchaseOfferDetail]? {
739
745
  @inline(__always)
740
746
  get {
741
- return self.__oneTimePurchaseOfferDetailsAndroid.value
747
+ return { () -> [NitroOneTimePurchaseOfferDetail]? in
748
+ if bridge.has_value_std__optional_std__vector_NitroOneTimePurchaseOfferDetail__(self.__oneTimePurchaseOfferDetailsAndroid) {
749
+ let __unwrapped = bridge.get_std__optional_std__vector_NitroOneTimePurchaseOfferDetail__(self.__oneTimePurchaseOfferDetailsAndroid)
750
+ return __unwrapped.map({ __item in __item })
751
+ } else {
752
+ return nil
753
+ }
754
+ }()
742
755
  }
743
756
  @inline(__always)
744
757
  set {
745
- self.__oneTimePurchaseOfferDetailsAndroid = { () -> bridge.std__optional_NitroOneTimePurchaseOfferDetail_ in
758
+ self.__oneTimePurchaseOfferDetailsAndroid = { () -> bridge.std__optional_std__vector_NitroOneTimePurchaseOfferDetail__ in
746
759
  if let __unwrappedValue = newValue {
747
- return bridge.create_std__optional_NitroOneTimePurchaseOfferDetail_(__unwrappedValue)
760
+ return bridge.create_std__optional_std__vector_NitroOneTimePurchaseOfferDetail__({ () -> bridge.std__vector_NitroOneTimePurchaseOfferDetail_ in
761
+ var __vector = bridge.create_std__vector_NitroOneTimePurchaseOfferDetail_(__unwrappedValue.count)
762
+ for __item in __unwrappedValue {
763
+ __vector.push_back(__item)
764
+ }
765
+ return __vector
766
+ }())
748
767
  } else {
749
768
  return .init()
750
769
  }
@@ -18,7 +18,7 @@ public extension NitroPurchase {
18
18
  /**
19
19
  * Create a new instance of `NitroPurchase`.
20
20
  */
21
- init(id: String, productId: String, transactionDate: Double, purchaseToken: String?, platform: IapPlatform, store: IapStore, quantity: Double, purchaseState: PurchaseState, isAutoRenewing: Bool, quantityIOS: Double?, originalTransactionDateIOS: Double?, originalTransactionIdentifierIOS: String?, appAccountToken: String?, appBundleIdIOS: String?, countryCodeIOS: String?, currencyCodeIOS: String?, currencySymbolIOS: String?, environmentIOS: String?, expirationDateIOS: Double?, isUpgradedIOS: Bool?, offerIOS: String?, ownershipTypeIOS: String?, reasonIOS: String?, reasonStringRepresentationIOS: String?, revocationDateIOS: Double?, revocationReasonIOS: String?, storefrontCountryCodeIOS: String?, subscriptionGroupIdIOS: String?, transactionReasonIOS: String?, webOrderLineItemIdIOS: String?, renewalInfoIOS: NitroRenewalInfoIOS?, purchaseTokenAndroid: String?, dataAndroid: String?, signatureAndroid: String?, autoRenewingAndroid: Bool?, purchaseStateAndroid: Double?, isAcknowledgedAndroid: Bool?, packageNameAndroid: String?, obfuscatedAccountIdAndroid: String?, obfuscatedProfileIdAndroid: String?, developerPayloadAndroid: String?) {
21
+ init(id: String, productId: String, transactionDate: Double, purchaseToken: String?, platform: IapPlatform, store: IapStore, quantity: Double, purchaseState: PurchaseState, isAutoRenewing: Bool, quantityIOS: Double?, originalTransactionDateIOS: Double?, originalTransactionIdentifierIOS: String?, appAccountToken: String?, appBundleIdIOS: String?, countryCodeIOS: String?, currencyCodeIOS: String?, currencySymbolIOS: String?, environmentIOS: String?, expirationDateIOS: Double?, isUpgradedIOS: Bool?, offerIOS: String?, ownershipTypeIOS: String?, reasonIOS: String?, reasonStringRepresentationIOS: String?, revocationDateIOS: Double?, revocationReasonIOS: String?, storefrontCountryCodeIOS: String?, subscriptionGroupIdIOS: String?, transactionReasonIOS: String?, webOrderLineItemIdIOS: String?, renewalInfoIOS: NitroRenewalInfoIOS?, purchaseTokenAndroid: String?, dataAndroid: String?, signatureAndroid: String?, autoRenewingAndroid: Bool?, purchaseStateAndroid: Double?, isAcknowledgedAndroid: Bool?, packageNameAndroid: String?, obfuscatedAccountIdAndroid: String?, obfuscatedProfileIdAndroid: String?, developerPayloadAndroid: String?, isSuspendedAndroid: Bool?) {
22
22
  self.init(std.string(id), std.string(productId), transactionDate, { () -> bridge.std__optional_std__string_ in
23
23
  if let __unwrappedValue = purchaseToken {
24
24
  return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
@@ -217,6 +217,12 @@ public extension NitroPurchase {
217
217
  } else {
218
218
  return .init()
219
219
  }
220
+ }(), { () -> bridge.std__optional_bool_ in
221
+ if let __unwrappedValue = isSuspendedAndroid {
222
+ return bridge.create_std__optional_bool_(__unwrappedValue)
223
+ } else {
224
+ return .init()
225
+ }
220
226
  }())
221
227
  }
222
228
 
@@ -1057,4 +1063,28 @@ public extension NitroPurchase {
1057
1063
  }()
1058
1064
  }
1059
1065
  }
1066
+
1067
+ var isSuspendedAndroid: Bool? {
1068
+ @inline(__always)
1069
+ get {
1070
+ return { () -> Bool? in
1071
+ if bridge.has_value_std__optional_bool_(self.__isSuspendedAndroid) {
1072
+ let __unwrapped = bridge.get_std__optional_bool_(self.__isSuspendedAndroid)
1073
+ return __unwrapped
1074
+ } else {
1075
+ return nil
1076
+ }
1077
+ }()
1078
+ }
1079
+ @inline(__always)
1080
+ set {
1081
+ self.__isSuspendedAndroid = { () -> bridge.std__optional_bool_ in
1082
+ if let __unwrappedValue = newValue {
1083
+ return bridge.create_std__optional_bool_(__unwrappedValue)
1084
+ } else {
1085
+ return .init()
1086
+ }
1087
+ }()
1088
+ }
1089
+ }
1060
1090
  }
@@ -0,0 +1,65 @@
1
+ ///
2
+ /// NitroRentalDetailsAndroid.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `NitroRentalDetailsAndroid`, backed by a C++ struct.
12
+ */
13
+ public typealias NitroRentalDetailsAndroid = margelo.nitro.iap.NitroRentalDetailsAndroid
14
+
15
+ public extension NitroRentalDetailsAndroid {
16
+ private typealias bridge = margelo.nitro.iap.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `NitroRentalDetailsAndroid`.
20
+ */
21
+ init(rentalExpirationPeriod: String?, rentalPeriod: String) {
22
+ self.init({ () -> bridge.std__optional_std__string_ in
23
+ if let __unwrappedValue = rentalExpirationPeriod {
24
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
25
+ } else {
26
+ return .init()
27
+ }
28
+ }(), std.string(rentalPeriod))
29
+ }
30
+
31
+ var rentalExpirationPeriod: String? {
32
+ @inline(__always)
33
+ get {
34
+ return { () -> String? in
35
+ if bridge.has_value_std__optional_std__string_(self.__rentalExpirationPeriod) {
36
+ let __unwrapped = bridge.get_std__optional_std__string_(self.__rentalExpirationPeriod)
37
+ return String(__unwrapped)
38
+ } else {
39
+ return nil
40
+ }
41
+ }()
42
+ }
43
+ @inline(__always)
44
+ set {
45
+ self.__rentalExpirationPeriod = { () -> bridge.std__optional_std__string_ in
46
+ if let __unwrappedValue = newValue {
47
+ return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
48
+ } else {
49
+ return .init()
50
+ }
51
+ }()
52
+ }
53
+ }
54
+
55
+ var rentalPeriod: String {
56
+ @inline(__always)
57
+ get {
58
+ return String(self.__rentalPeriod)
59
+ }
60
+ @inline(__always)
61
+ set {
62
+ self.__rentalPeriod = std.string(newValue)
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,46 @@
1
+ ///
2
+ /// NitroValidTimeWindowAndroid.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Represents an instance of `NitroValidTimeWindowAndroid`, backed by a C++ struct.
12
+ */
13
+ public typealias NitroValidTimeWindowAndroid = margelo.nitro.iap.NitroValidTimeWindowAndroid
14
+
15
+ public extension NitroValidTimeWindowAndroid {
16
+ private typealias bridge = margelo.nitro.iap.bridge.swift
17
+
18
+ /**
19
+ * Create a new instance of `NitroValidTimeWindowAndroid`.
20
+ */
21
+ init(endTimeMillis: String, startTimeMillis: String) {
22
+ self.init(std.string(endTimeMillis), std.string(startTimeMillis))
23
+ }
24
+
25
+ var endTimeMillis: String {
26
+ @inline(__always)
27
+ get {
28
+ return String(self.__endTimeMillis)
29
+ }
30
+ @inline(__always)
31
+ set {
32
+ self.__endTimeMillis = std.string(newValue)
33
+ }
34
+ }
35
+
36
+ var startTimeMillis: String {
37
+ @inline(__always)
38
+ get {
39
+ return String(self.__startTimeMillis)
40
+ }
41
+ @inline(__always)
42
+ set {
43
+ self.__startTimeMillis = std.string(newValue)
44
+ }
45
+ }
46
+ }
@@ -18,7 +18,7 @@ public extension PurchaseAndroid {
18
18
  /**
19
19
  * Create a new instance of `PurchaseAndroid`.
20
20
  */
21
- init(autoRenewingAndroid: Bool?, currentPlanId: String?, dataAndroid: String?, developerPayloadAndroid: String?, id: String, ids: [String]?, isAcknowledgedAndroid: Bool?, isAutoRenewing: Bool, obfuscatedAccountIdAndroid: String?, obfuscatedProfileIdAndroid: String?, packageNameAndroid: String?, platform: IapPlatform, productId: String, purchaseState: PurchaseState, purchaseToken: String?, quantity: Double, signatureAndroid: String?, store: IapStore, transactionDate: Double, transactionId: String?) {
21
+ init(autoRenewingAndroid: Bool?, currentPlanId: String?, dataAndroid: String?, developerPayloadAndroid: String?, id: String, ids: [String]?, isAcknowledgedAndroid: Bool?, isAutoRenewing: Bool, isSuspendedAndroid: Bool?, obfuscatedAccountIdAndroid: String?, obfuscatedProfileIdAndroid: String?, packageNameAndroid: String?, platform: IapPlatform, productId: String, purchaseState: PurchaseState, purchaseToken: String?, quantity: Double, signatureAndroid: String?, store: IapStore, transactionDate: Double, transactionId: String?) {
22
22
  self.init({ () -> bridge.std__optional_bool_ in
23
23
  if let __unwrappedValue = autoRenewingAndroid {
24
24
  return bridge.create_std__optional_bool_(__unwrappedValue)
@@ -61,7 +61,13 @@ public extension PurchaseAndroid {
61
61
  } else {
62
62
  return .init()
63
63
  }
64
- }(), isAutoRenewing, { () -> bridge.std__optional_std__string_ in
64
+ }(), isAutoRenewing, { () -> bridge.std__optional_bool_ in
65
+ if let __unwrappedValue = isSuspendedAndroid {
66
+ return bridge.create_std__optional_bool_(__unwrappedValue)
67
+ } else {
68
+ return .init()
69
+ }
70
+ }(), { () -> bridge.std__optional_std__string_ in
65
71
  if let __unwrappedValue = obfuscatedAccountIdAndroid {
66
72
  return bridge.create_std__optional_std__string_(std.string(__unwrappedValue))
67
73
  } else {
@@ -272,6 +278,30 @@ public extension PurchaseAndroid {
272
278
  }
273
279
  }
274
280
 
281
+ var isSuspendedAndroid: Bool? {
282
+ @inline(__always)
283
+ get {
284
+ return { () -> Bool? in
285
+ if bridge.has_value_std__optional_bool_(self.__isSuspendedAndroid) {
286
+ let __unwrapped = bridge.get_std__optional_bool_(self.__isSuspendedAndroid)
287
+ return __unwrapped
288
+ } else {
289
+ return nil
290
+ }
291
+ }()
292
+ }
293
+ @inline(__always)
294
+ set {
295
+ self.__isSuspendedAndroid = { () -> bridge.std__optional_bool_ in
296
+ if let __unwrappedValue = newValue {
297
+ return bridge.create_std__optional_bool_(__unwrappedValue)
298
+ } else {
299
+ return .init()
300
+ }
301
+ }()
302
+ }
303
+ }
304
+
275
305
  var obfuscatedAccountIdAndroid: String? {
276
306
  @inline(__always)
277
307
  get {
@@ -0,0 +1,79 @@
1
+ ///
2
+ /// NitroDiscountAmountAndroid.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #if __has_include(<NitroModules/JSIConverter.hpp>)
11
+ #include <NitroModules/JSIConverter.hpp>
12
+ #else
13
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
+ #endif
15
+ #if __has_include(<NitroModules/NitroDefines.hpp>)
16
+ #include <NitroModules/NitroDefines.hpp>
17
+ #else
18
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
19
+ #endif
20
+ #if __has_include(<NitroModules/JSIHelpers.hpp>)
21
+ #include <NitroModules/JSIHelpers.hpp>
22
+ #else
23
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
+ #endif
25
+
26
+
27
+
28
+ #include <string>
29
+
30
+ namespace margelo::nitro::iap {
31
+
32
+ /**
33
+ * A struct which can be represented as a JavaScript object (NitroDiscountAmountAndroid).
34
+ */
35
+ struct NitroDiscountAmountAndroid {
36
+ public:
37
+ std::string discountAmountMicros SWIFT_PRIVATE;
38
+ std::string formattedDiscountAmount SWIFT_PRIVATE;
39
+
40
+ public:
41
+ NitroDiscountAmountAndroid() = default;
42
+ explicit NitroDiscountAmountAndroid(std::string discountAmountMicros, std::string formattedDiscountAmount): discountAmountMicros(discountAmountMicros), formattedDiscountAmount(formattedDiscountAmount) {}
43
+ };
44
+
45
+ } // namespace margelo::nitro::iap
46
+
47
+ namespace margelo::nitro {
48
+
49
+ // C++ NitroDiscountAmountAndroid <> JS NitroDiscountAmountAndroid (object)
50
+ template <>
51
+ struct JSIConverter<margelo::nitro::iap::NitroDiscountAmountAndroid> final {
52
+ static inline margelo::nitro::iap::NitroDiscountAmountAndroid fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
53
+ jsi::Object obj = arg.asObject(runtime);
54
+ return margelo::nitro::iap::NitroDiscountAmountAndroid(
55
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "discountAmountMicros")),
56
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "formattedDiscountAmount"))
57
+ );
58
+ }
59
+ static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::iap::NitroDiscountAmountAndroid& arg) {
60
+ jsi::Object obj(runtime);
61
+ obj.setProperty(runtime, "discountAmountMicros", JSIConverter<std::string>::toJSI(runtime, arg.discountAmountMicros));
62
+ obj.setProperty(runtime, "formattedDiscountAmount", JSIConverter<std::string>::toJSI(runtime, arg.formattedDiscountAmount));
63
+ return obj;
64
+ }
65
+ static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
66
+ if (!value.isObject()) {
67
+ return false;
68
+ }
69
+ jsi::Object obj = value.getObject(runtime);
70
+ if (!nitro::isPlainObject(runtime, obj)) {
71
+ return false;
72
+ }
73
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "discountAmountMicros"))) return false;
74
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "formattedDiscountAmount"))) return false;
75
+ return true;
76
+ }
77
+ };
78
+
79
+ } // namespace margelo::nitro