react-native-iap 14.3.7 → 14.3.8

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 (98) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +61 -11
  4. package/ios/HybridRnIap.swift +47 -12
  5. package/lib/module/hooks/useIAP.js +31 -21
  6. package/lib/module/hooks/useIAP.js.map +1 -1
  7. package/lib/module/index.js +580 -695
  8. package/lib/module/index.js.map +1 -1
  9. package/lib/module/types.js +12 -0
  10. package/lib/module/types.js.map +1 -1
  11. package/lib/module/utils/purchase.js +22 -0
  12. package/lib/module/utils/purchase.js.map +1 -0
  13. package/lib/module/utils.js +43 -0
  14. package/lib/module/utils.js.map +1 -0
  15. package/lib/typescript/plugin/src/withIAP.d.ts +1 -0
  16. package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
  17. package/lib/typescript/src/hooks/useIAP.d.ts +4 -5
  18. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  19. package/lib/typescript/src/index.d.ts +57 -176
  20. package/lib/typescript/src/index.d.ts.map +1 -1
  21. package/lib/typescript/src/specs/RnIap.nitro.d.ts +113 -154
  22. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  23. package/lib/typescript/src/types.d.ts +99 -76
  24. package/lib/typescript/src/types.d.ts.map +1 -1
  25. package/lib/typescript/src/utils/purchase.d.ts +4 -0
  26. package/lib/typescript/src/utils/purchase.d.ts.map +1 -0
  27. package/lib/typescript/src/utils.d.ts +8 -0
  28. package/lib/typescript/src/utils.d.ts.map +1 -0
  29. package/nitrogen/generated/android/NitroIap+autolinking.cmake +1 -1
  30. package/nitrogen/generated/android/c++/{JNitroSubscriptionOffer.hpp → JAndroidSubscriptionOfferInput.hpp} +15 -15
  31. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +2 -0
  32. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +4 -0
  33. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +16 -16
  34. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +1 -1
  35. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +6 -5
  36. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidType.hpp +59 -0
  37. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +2 -1
  38. package/nitrogen/generated/android/c++/JNitroProduct.hpp +22 -20
  39. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +12 -8
  40. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +2 -2
  41. package/nitrogen/generated/android/c++/JNitroReceiptValidationAndroidOptions.hpp +10 -10
  42. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +6 -6
  43. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +4 -0
  44. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +7 -7
  45. package/nitrogen/generated/android/c++/JRequestPurchaseResult.cpp +39 -0
  46. package/nitrogen/generated/android/c++/JRequestPurchaseResult.hpp +68 -53
  47. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +4 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroSubscriptionOffer.kt → AndroidSubscriptionOfferInput.kt} +5 -5
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +1 -1
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +1 -1
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidType.kt +21 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -11
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +2 -2
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationAndroidOptions.kt +4 -4
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +2 -2
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +1 -1
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/RequestPurchaseResult.kt +31 -13
  58. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +4 -4
  59. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +99 -64
  60. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +6 -6
  61. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +10 -10
  62. package/nitrogen/generated/ios/swift/{NitroSubscriptionOffer.swift → AndroidSubscriptionOfferInput.swift} +13 -13
  63. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_PurchaseAndroid__PurchaseIOS__std__vector_std__variant_PurchaseAndroid__PurchaseIOS____.swift +81 -0
  64. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +1 -1
  65. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +35 -7
  66. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +7 -14
  67. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidType.swift +40 -0
  68. package/nitrogen/generated/ios/swift/NitroProduct.swift +72 -72
  69. package/nitrogen/generated/ios/swift/NitroPurchase.swift +8 -8
  70. package/nitrogen/generated/ios/swift/NitroReceiptValidationAndroidOptions.swift +21 -21
  71. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +37 -11
  72. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +11 -11
  73. package/nitrogen/generated/ios/swift/RequestPurchaseResult.swift +8 -137
  74. package/nitrogen/generated/shared/c++/{NitroSubscriptionOffer.hpp → AndroidSubscriptionOfferInput.hpp} +15 -15
  75. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +9 -6
  76. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +8 -7
  77. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidType.hpp +76 -0
  78. package/nitrogen/generated/shared/c++/NitroProduct.hpp +24 -22
  79. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +15 -10
  80. package/nitrogen/generated/shared/c++/NitroReceiptValidationAndroidOptions.hpp +10 -10
  81. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +9 -9
  82. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +8 -8
  83. package/package.json +2 -2
  84. package/plugin/build/withIAP.d.ts +1 -0
  85. package/plugin/build/withIAP.js +8 -2
  86. package/plugin/src/withIAP.ts +13 -3
  87. package/src/hooks/useIAP.ts +63 -32
  88. package/src/index.ts +716 -790
  89. package/src/specs/RnIap.nitro.ts +131 -163
  90. package/src/types.ts +131 -85
  91. package/src/utils/purchase.ts +32 -0
  92. package/src/utils.ts +68 -0
  93. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.cpp +0 -26
  94. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.hpp +0 -80
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_PurchaseAndroid_PurchaseIOS.kt +0 -42
  96. package/nitrogen/generated/ios/swift/Func_void_RequestPurchaseResult.swift +0 -47
  97. package/nitrogen/generated/ios/swift/Variant_PurchaseAndroid_PurchaseIOS.swift +0 -18
  98. package/nitrogen/generated/shared/c++/RequestPurchaseResult.hpp +0 -78
@@ -1,5 +1,22 @@
1
1
  import type {HybridObject} from 'react-native-nitro-modules';
2
- import type {RequestPurchaseResult} from '../types';
2
+ // NOTE: This Nitro spec re-exports types from the generated schema (src/types.ts)
3
+ // via type aliases to avoid duplicating structure. Nitro's codegen expects the
4
+ // canonical `Nitro*` names defined here, so we keep the aliases rather than
5
+ // removing the types entirely.
6
+ import type {
7
+ AndroidSubscriptionOfferInput,
8
+ DeepLinkOptions,
9
+ MutationFinishTransactionArgs,
10
+ ProductCommon,
11
+ PurchaseCommon,
12
+ PurchaseOptions,
13
+ ReceiptValidationAndroidOptions,
14
+ ReceiptValidationProps,
15
+ ReceiptValidationResultAndroid,
16
+ RequestPurchaseIosProps,
17
+ RequestPurchaseResult,
18
+ RequestSubscriptionAndroidProps,
19
+ } from '../types';
3
20
 
4
21
  // ╔══════════════════════════════════════════════════════════════════════════╗
5
22
  // ║ PARAMS ║
@@ -7,22 +24,16 @@ import type {RequestPurchaseResult} from '../types';
7
24
 
8
25
  // Receipt validation parameters
9
26
 
10
- /**
11
- * Android-specific receipt validation options
12
- */
13
27
  export interface NitroReceiptValidationAndroidOptions {
14
- packageName: string;
15
- productToken: string;
16
- accessToken: string;
17
- isSub?: boolean;
28
+ accessToken: ReceiptValidationAndroidOptions['accessToken'];
29
+ isSub?: ReceiptValidationAndroidOptions['isSub'];
30
+ packageName: ReceiptValidationAndroidOptions['packageName'];
31
+ productToken: ReceiptValidationAndroidOptions['productToken'];
18
32
  }
19
33
 
20
- /**
21
- * Receipt validation parameters
22
- */
23
34
  export interface NitroReceiptValidationParams {
24
- sku: string;
25
- androidOptions?: NitroReceiptValidationAndroidOptions;
35
+ sku: ReceiptValidationProps['sku'];
36
+ androidOptions?: NitroReceiptValidationAndroidOptions | null;
26
37
  }
27
38
 
28
39
  // Purchase request parameters
@@ -30,41 +41,27 @@ export interface NitroReceiptValidationParams {
30
41
  /**
31
42
  * iOS-specific purchase request parameters
32
43
  */
33
- interface NitroRequestPurchaseIos {
34
- sku: string;
35
- andDangerouslyFinishTransactionAutomatically?: boolean;
36
- appAccountToken?: string;
37
- quantity?: number;
38
- withOffer?: Record<string, string>;
44
+ export interface NitroRequestPurchaseIos {
45
+ sku: RequestPurchaseIosProps['sku'];
46
+ andDangerouslyFinishTransactionAutomatically?: RequestPurchaseIosProps['andDangerouslyFinishTransactionAutomatically'];
47
+ appAccountToken?: RequestPurchaseIosProps['appAccountToken'];
48
+ quantity?: RequestPurchaseIosProps['quantity'];
49
+ withOffer?: Record<string, string> | null;
39
50
  }
40
51
 
41
- /**
42
- * Android subscription offer structure
43
- */
44
- interface NitroSubscriptionOffer {
45
- sku: string;
46
- offerToken: string;
47
- }
48
-
49
- /**
50
- * Android-specific purchase request parameters
51
- */
52
- interface NitroRequestPurchaseAndroid {
53
- skus: string[];
54
- obfuscatedAccountIdAndroid?: string;
55
- obfuscatedProfileIdAndroid?: string;
56
- isOfferPersonalized?: boolean;
57
- subscriptionOffers?: NitroSubscriptionOffer[];
58
- replacementModeAndroid?: number;
59
- purchaseTokenAndroid?: string;
52
+ export interface NitroRequestPurchaseAndroid {
53
+ skus: RequestSubscriptionAndroidProps['skus'];
54
+ obfuscatedAccountIdAndroid?: RequestSubscriptionAndroidProps['obfuscatedAccountIdAndroid'];
55
+ obfuscatedProfileIdAndroid?: RequestSubscriptionAndroidProps['obfuscatedProfileIdAndroid'];
56
+ isOfferPersonalized?: RequestSubscriptionAndroidProps['isOfferPersonalized'];
57
+ subscriptionOffers?: AndroidSubscriptionOfferInput[] | null;
58
+ replacementModeAndroid?: RequestSubscriptionAndroidProps['replacementModeAndroid'];
59
+ purchaseTokenAndroid?: RequestSubscriptionAndroidProps['purchaseTokenAndroid'];
60
60
  }
61
61
 
62
- /**
63
- * Unified purchase request with platform-specific options
64
- */
65
- interface NitroPurchaseRequest {
66
- ios?: NitroRequestPurchaseIos;
67
- android?: NitroRequestPurchaseAndroid;
62
+ export interface NitroPurchaseRequest {
63
+ ios?: NitroRequestPurchaseIos | null;
64
+ android?: NitroRequestPurchaseAndroid | null;
68
65
  }
69
66
 
70
67
  // Available purchases parameters
@@ -72,26 +69,20 @@ interface NitroPurchaseRequest {
72
69
  /**
73
70
  * iOS-specific options for getting available purchases
74
71
  */
75
- interface NitroAvailablePurchasesIosOptions {
76
- alsoPublishToEventListener?: boolean; // @deprecated Use alsoPublishToEventListenerIOS
77
- onlyIncludeActiveItems?: boolean; // @deprecated Use onlyIncludeActiveItemsIOS
78
- alsoPublishToEventListenerIOS?: boolean;
79
- onlyIncludeActiveItemsIOS?: boolean;
72
+ export interface NitroAvailablePurchasesIosOptions extends PurchaseOptions {
73
+ alsoPublishToEventListener?: boolean | null;
74
+ onlyIncludeActiveItems?: boolean | null;
80
75
  }
81
76
 
82
- /**
83
- * Android-specific options for getting available purchases
84
- */
85
- interface NitroAvailablePurchasesAndroidOptions {
86
- type?: string; // 'inapp' or 'subs'
77
+ type NitroAvailablePurchasesAndroidType = 'inapp' | 'subs';
78
+
79
+ export interface NitroAvailablePurchasesAndroidOptions {
80
+ type?: NitroAvailablePurchasesAndroidType;
87
81
  }
88
82
 
89
- /**
90
- * Unified available purchases options with platform-specific parameters
91
- */
92
- interface NitroAvailablePurchasesOptions {
93
- ios?: NitroAvailablePurchasesIosOptions;
94
- android?: NitroAvailablePurchasesAndroidOptions;
83
+ export interface NitroAvailablePurchasesOptions {
84
+ ios?: NitroAvailablePurchasesIosOptions | null;
85
+ android?: NitroAvailablePurchasesAndroidOptions | null;
95
86
  }
96
87
 
97
88
  // Transaction finish parameters
@@ -99,32 +90,29 @@ interface NitroAvailablePurchasesOptions {
99
90
  /**
100
91
  * iOS-specific parameters for finishing a transaction
101
92
  */
102
- interface NitroFinishTransactionIosParams {
93
+ export interface NitroFinishTransactionIosParams {
103
94
  transactionId: string;
104
95
  }
105
96
 
106
97
  /**
107
98
  * Android-specific parameters for finishing a transaction
108
99
  */
109
- interface NitroFinishTransactionAndroidParams {
100
+ export interface NitroFinishTransactionAndroidParams {
110
101
  purchaseToken: string;
111
- isConsumable?: boolean;
102
+ isConsumable?: MutationFinishTransactionArgs['isConsumable'];
112
103
  }
113
104
 
114
105
  /**
115
106
  * Unified finish transaction parameters with platform-specific options
116
107
  */
117
- interface NitroFinishTransactionParams {
118
- ios?: NitroFinishTransactionIosParams;
119
- android?: NitroFinishTransactionAndroidParams;
108
+ export interface NitroFinishTransactionParams {
109
+ ios?: NitroFinishTransactionIosParams | null;
110
+ android?: NitroFinishTransactionAndroidParams | null;
120
111
  }
121
112
 
122
- /**
123
- * Android deep link options for subscription management
124
- */
125
- interface NitroDeepLinkOptionsAndroid {
126
- skuAndroid?: string;
127
- packageNameAndroid?: string;
113
+ export interface NitroDeepLinkOptionsAndroid {
114
+ skuAndroid?: DeepLinkOptions['skuAndroid'];
115
+ packageNameAndroid?: DeepLinkOptions['packageNameAndroid'];
128
116
  }
129
117
 
130
118
  // ╔══════════════════════════════════════════════════════════════════════════╗
@@ -136,10 +124,10 @@ interface NitroDeepLinkOptionsAndroid {
136
124
  */
137
125
  export interface NitroSubscriptionRenewalInfo {
138
126
  autoRenewStatus: boolean;
139
- autoRenewPreference?: string;
140
- expirationReason?: number;
141
- gracePeriodExpirationDate?: number;
142
- currentProductID?: string;
127
+ autoRenewPreference?: string | null;
128
+ expirationReason?: number | null;
129
+ gracePeriodExpirationDate?: number | null;
130
+ currentProductID?: string | null;
143
131
  platform: string;
144
132
  }
145
133
 
@@ -149,7 +137,7 @@ export interface NitroSubscriptionRenewalInfo {
149
137
  export interface NitroSubscriptionStatus {
150
138
  state: number;
151
139
  platform: string;
152
- renewalInfo?: NitroSubscriptionRenewalInfo;
140
+ renewalInfo?: NitroSubscriptionRenewalInfo | null;
153
141
  }
154
142
 
155
143
  /**
@@ -163,108 +151,88 @@ export interface NitroPurchaseResult {
163
151
  purchaseToken?: string;
164
152
  }
165
153
 
166
- /**
167
- * iOS receipt validation result
168
- */
169
154
  export interface NitroReceiptValidationResultIOS {
170
155
  isValid: boolean;
171
156
  receiptData: string;
172
157
  jwsRepresentation: string;
173
- latestTransaction?: NitroPurchase;
158
+ latestTransaction?: NitroPurchase | null;
174
159
  }
175
160
 
176
- /**
177
- * Android receipt validation result
178
- */
179
161
  export interface NitroReceiptValidationResultAndroid {
180
- autoRenewing: boolean;
181
- betaProduct: boolean;
182
- cancelDate: number | null;
183
- cancelReason: string;
184
- deferredDate: number | null;
185
- deferredSku: number | null;
186
- freeTrialEndDate: number;
187
- gracePeriodEndDate: number;
188
- parentProductId: string;
189
- productId: string;
190
- productType: string;
191
- purchaseDate: number;
192
- quantity: number;
193
- receiptId: string;
194
- renewalDate: number;
195
- term: string;
196
- termSku: string;
197
- testTransaction: boolean;
162
+ autoRenewing: ReceiptValidationResultAndroid['autoRenewing'];
163
+ betaProduct: ReceiptValidationResultAndroid['betaProduct'];
164
+ cancelDate: ReceiptValidationResultAndroid['cancelDate'];
165
+ cancelReason: ReceiptValidationResultAndroid['cancelReason'];
166
+ deferredDate: ReceiptValidationResultAndroid['deferredDate'];
167
+ deferredSku: ReceiptValidationResultAndroid['deferredSku'];
168
+ freeTrialEndDate: ReceiptValidationResultAndroid['freeTrialEndDate'];
169
+ gracePeriodEndDate: ReceiptValidationResultAndroid['gracePeriodEndDate'];
170
+ parentProductId: ReceiptValidationResultAndroid['parentProductId'];
171
+ productId: ReceiptValidationResultAndroid['productId'];
172
+ productType: ReceiptValidationResultAndroid['productType'];
173
+ purchaseDate: ReceiptValidationResultAndroid['purchaseDate'];
174
+ quantity: ReceiptValidationResultAndroid['quantity'];
175
+ receiptId: ReceiptValidationResultAndroid['receiptId'];
176
+ renewalDate: ReceiptValidationResultAndroid['renewalDate'];
177
+ term: ReceiptValidationResultAndroid['term'];
178
+ termSku: ReceiptValidationResultAndroid['termSku'];
179
+ testTransaction: ReceiptValidationResultAndroid['testTransaction'];
198
180
  }
199
181
 
200
- /**
201
- * Purchase data structure returned from native
202
- */
203
182
  export interface NitroPurchase {
204
- // Common fields
205
- id: string;
206
- productId: string;
207
- transactionDate: number;
208
- purchaseToken?: string;
209
- platform: string;
210
- quantity: number;
211
- purchaseState: string;
212
- isAutoRenewing: boolean;
213
-
214
- // iOS specific fields
215
- quantityIOS?: number;
216
- originalTransactionDateIOS?: number;
217
- originalTransactionIdentifierIOS?: string;
218
- appAccountToken?: string;
219
-
220
- // Android specific fields
221
- purchaseTokenAndroid?: string;
222
- dataAndroid?: string;
223
- signatureAndroid?: string;
224
- autoRenewingAndroid?: boolean;
225
- purchaseStateAndroid?: number;
226
- isAcknowledgedAndroid?: boolean;
227
- packageNameAndroid?: string;
228
- obfuscatedAccountIdAndroid?: string;
229
- obfuscatedProfileIdAndroid?: string;
183
+ id: PurchaseCommon['id'];
184
+ productId: PurchaseCommon['productId'];
185
+ transactionDate: PurchaseCommon['transactionDate'];
186
+ purchaseToken?: PurchaseCommon['purchaseToken'];
187
+ platform: PurchaseCommon['platform'];
188
+ quantity: PurchaseCommon['quantity'];
189
+ purchaseState: PurchaseCommon['purchaseState'];
190
+ isAutoRenewing: PurchaseCommon['isAutoRenewing'];
191
+ quantityIOS?: number | null;
192
+ originalTransactionDateIOS?: number | null;
193
+ originalTransactionIdentifierIOS?: string | null;
194
+ appAccountToken?: string | null;
195
+ purchaseTokenAndroid?: string | null;
196
+ dataAndroid?: string | null;
197
+ signatureAndroid?: string | null;
198
+ autoRenewingAndroid?: boolean | null;
199
+ purchaseStateAndroid?: number | null;
200
+ isAcknowledgedAndroid?: boolean | null;
201
+ packageNameAndroid?: string | null;
202
+ obfuscatedAccountIdAndroid?: string | null;
203
+ obfuscatedProfileIdAndroid?: string | null;
230
204
  }
231
205
 
232
- /**
233
- * Product data structure returned from native
234
- */
235
206
  export interface NitroProduct {
236
- // Common fields
237
- id: string;
238
- title: string;
239
- description: string;
207
+ id: ProductCommon['id'];
208
+ title: ProductCommon['title'];
209
+ description: ProductCommon['description'];
240
210
  type: string;
241
- displayName?: string;
242
- displayPrice?: string;
243
- currency?: string;
244
- price?: number;
245
- platform: string;
246
-
211
+ displayName?: ProductCommon['displayName'];
212
+ displayPrice?: ProductCommon['displayPrice'];
213
+ currency?: ProductCommon['currency'];
214
+ price?: ProductCommon['price'];
215
+ platform: ProductCommon['platform'];
247
216
  // iOS specific fields
248
- typeIOS?: string;
249
- isFamilyShareableIOS?: boolean;
250
- jsonRepresentationIOS?: string;
251
- subscriptionPeriodUnitIOS?: string;
252
- subscriptionPeriodNumberIOS?: number;
253
- introductoryPriceIOS?: string;
254
- introductoryPriceAsAmountIOS?: number;
255
- introductoryPricePaymentModeIOS?: string;
256
- introductoryPriceNumberOfPeriodsIOS?: number;
257
- introductoryPriceSubscriptionPeriodIOS?: string;
258
-
217
+ typeIOS?: string | null;
218
+ isFamilyShareableIOS?: boolean | null;
219
+ jsonRepresentationIOS?: string | null;
220
+ introductoryPriceIOS?: string | null;
221
+ introductoryPriceAsAmountIOS?: number | null;
222
+ introductoryPriceNumberOfPeriodsIOS?: number | null;
223
+ introductoryPricePaymentModeIOS?: string | null;
224
+ introductoryPriceSubscriptionPeriodIOS?: string | null;
225
+ subscriptionPeriodNumberIOS?: number | null;
226
+ subscriptionPeriodUnitIOS?: string | null;
259
227
  // Android specific fields
260
- originalPriceAndroid?: string;
261
- originalPriceAmountMicrosAndroid?: number;
262
- introductoryPriceValueAndroid?: number;
263
- introductoryPriceCyclesAndroid?: number;
264
- introductoryPricePeriodAndroid?: string;
265
- subscriptionPeriodAndroid?: string;
266
- freeTrialPeriodAndroid?: string;
267
- subscriptionOfferDetailsAndroid?: string; // Android subscription offer details as JSON string
228
+ originalPriceAndroid?: string | null;
229
+ originalPriceAmountMicrosAndroid?: number | null;
230
+ introductoryPriceCyclesAndroid?: number | null;
231
+ introductoryPricePeriodAndroid?: string | null;
232
+ introductoryPriceValueAndroid?: number | null;
233
+ subscriptionPeriodAndroid?: string | null;
234
+ freeTrialPeriodAndroid?: string | null;
235
+ subscriptionOfferDetailsAndroid?: string | null;
268
236
  }
269
237
 
270
238
  // ╔══════════════════════════════════════════════════════════════════════════╗