react-native-iap 15.6.0 → 15.6.2

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 (67) hide show
  1. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +28 -4
  2. package/android/src/main/java/com/margelo/nitro/iap/RnIapLog.kt +13 -0
  3. package/ios/HybridRnIap.swift +25 -4
  4. package/ios/RnIapHelper.swift +3 -2
  5. package/ios/RnIapLog.swift +14 -0
  6. package/lib/module/hooks/useIAP.js.map +1 -1
  7. package/lib/module/index.js +72 -30
  8. package/lib/module/index.js.map +1 -1
  9. package/lib/module/index.kepler.js +71 -5
  10. package/lib/module/index.kepler.js.map +1 -1
  11. package/lib/module/kit-api.js +78 -3
  12. package/lib/module/kit-api.js.map +1 -1
  13. package/lib/module/types.js +29 -25
  14. package/lib/module/types.js.map +1 -1
  15. package/lib/module/utils/deprecation.js +15 -0
  16. package/lib/module/utils/deprecation.js.map +1 -0
  17. package/lib/module/utils/platform-request.js +28 -0
  18. package/lib/module/utils/platform-request.js.map +1 -0
  19. package/lib/module/utils/type-bridge.js +9 -4
  20. package/lib/module/utils/type-bridge.js.map +1 -1
  21. package/lib/module/vega-adapter.js +31 -22
  22. package/lib/module/vega-adapter.js.map +1 -1
  23. package/lib/typescript/src/hooks/useIAP.d.ts +14 -2
  24. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  25. package/lib/typescript/src/index.d.ts +37 -12
  26. package/lib/typescript/src/index.d.ts.map +1 -1
  27. package/lib/typescript/src/index.kepler.d.ts +49 -4
  28. package/lib/typescript/src/index.kepler.d.ts.map +1 -1
  29. package/lib/typescript/src/kit-api.d.ts +18 -8
  30. package/lib/typescript/src/kit-api.d.ts.map +1 -1
  31. package/lib/typescript/src/specs/RnIap.nitro.d.ts +24 -6
  32. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  33. package/lib/typescript/src/types.d.ts +105 -176
  34. package/lib/typescript/src/types.d.ts.map +1 -1
  35. package/lib/typescript/src/utils/deprecation.d.ts +3 -0
  36. package/lib/typescript/src/utils/deprecation.d.ts.map +1 -0
  37. package/lib/typescript/src/utils/platform-request.d.ts +12 -0
  38. package/lib/typescript/src/utils/platform-request.d.ts.map +1 -0
  39. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
  40. package/lib/typescript/src/vega-adapter.d.ts +1 -0
  41. package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
  42. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +5 -1
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +7 -2
  44. package/nitrogen/generated/ios/swift/NitroPurchase.swift +39 -2
  45. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +5 -1
  46. package/openiap-versions.json +3 -3
  47. package/package.json +1 -1
  48. package/src/hooks/useIAP.ts +14 -2
  49. package/src/index.kepler.ts +82 -8
  50. package/src/index.ts +104 -47
  51. package/src/kit-api.ts +136 -13
  52. package/src/specs/RnIap.nitro.ts +24 -6
  53. package/src/types.ts +116 -204
  54. package/src/utils/deprecation.ts +16 -0
  55. package/src/utils/platform-request.ts +37 -0
  56. package/src/utils/type-bridge.ts +20 -4
  57. package/src/vega-adapter.ts +46 -24
  58. package/lib/module/hooks/useWebhookEvents.js +0 -113
  59. package/lib/module/hooks/useWebhookEvents.js.map +0 -1
  60. package/lib/module/webhook-client.js +0 -164
  61. package/lib/module/webhook-client.js.map +0 -1
  62. package/lib/typescript/src/hooks/useWebhookEvents.d.ts +0 -55
  63. package/lib/typescript/src/hooks/useWebhookEvents.d.ts.map +0 -1
  64. package/lib/typescript/src/webhook-client.d.ts +0 -82
  65. package/lib/typescript/src/webhook-client.d.ts.map +0 -1
  66. package/src/hooks/useWebhookEvents.ts +0 -180
  67. package/src/webhook-client.ts +0 -312
@@ -25,9 +25,9 @@ export interface ActiveSubscription {
25
25
  transactionDate: number;
26
26
  transactionId: string;
27
27
  /**
28
- * @deprecated iOS only - use daysUntilExpirationIOS instead.
29
28
  * Whether the subscription will expire soon (within 7 days).
30
29
  * Consider using daysUntilExpirationIOS for more precise control.
30
+ * @deprecated iOS only - use daysUntilExpirationIOS instead. Scheduled for removal in OpenIAP 3.0.
31
31
  */
32
32
  willExpireSoon?: (boolean | null);
33
33
  }
@@ -80,8 +80,9 @@ export interface AdvancedCommerceRefundIOS {
80
80
  /**
81
81
  * Alternative billing mode for Android
82
82
  * Controls which billing system is used
83
- * @deprecated Use enableBillingProgramAndroid with BillingProgramAndroid instead.
84
- * Use USER_CHOICE_BILLING for user choice billing, EXTERNAL_OFFER for alternative only.
83
+ * Use the user-choice-billing program for user choice billing and external-offer
84
+ * for external digital-content offers.
85
+ * @deprecated Use enableBillingProgramAndroid with BillingProgramAndroid instead. Scheduled for removal in OpenIAP 3.0.
85
86
  */
86
87
  export type AlternativeBillingModeAndroid = 'none' | 'user-choice' | 'alternative-only';
87
88
  export interface AndroidSubscriptionOfferInput {
@@ -298,8 +299,8 @@ export interface DiscountDisplayInfoAndroid {
298
299
  }
299
300
  /**
300
301
  * Discount information returned from the store.
301
- * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility.
302
- * @see https://openiap.dev/docs/types#subscription-offer
302
+ * @see https://openiap.dev/docs/types/subscription-offer
303
+ * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0.
303
304
  */
304
305
  export interface DiscountIOS {
305
306
  identifier: string;
@@ -313,12 +314,13 @@ export interface DiscountIOS {
313
314
  }
314
315
  /**
315
316
  * Standardized one-time product discount offer.
316
- * Provides a unified interface for one-time purchase discounts across platforms.
317
+ * Provides a platform-neutral OpenIAP shape for Google Play one-time product
318
+ * purchase options and offers.
317
319
  *
318
- * Currently supported on Android (Google Play Billing 8.0+).
319
- * iOS does not support one-time purchase discounts in the same way.
320
+ * Currently populated only on Android (Google Play Billing 8.0+).
321
+ * iOS does not populate this type.
320
322
  *
321
- * @see https://openiap.dev/docs/features/discount
323
+ * @see https://openiap.dev/docs/types/discount-offer
322
324
  */
323
325
  export interface DiscountOffer {
324
326
  /** Currency code (ISO 4217, e.g., "USD") */
@@ -330,7 +332,7 @@ export interface DiscountOffer {
330
332
  discountAmountMicrosAndroid?: (string | null);
331
333
  /** Formatted display price string (e.g., "$4.99") */
332
334
  displayPrice: string;
333
- /** [Android] Formatted discount amount string (e.g., "$5.00 OFF"). */
335
+ /** [Android] Formatted discount amount including its currency sign (e.g., "$5.00"). */
334
336
  formattedDiscountAmountAndroid?: (string | null);
335
337
  /**
336
338
  * [Android] Original full price in micro-units before discount.
@@ -376,7 +378,11 @@ export interface DiscountOffer {
376
378
  purchaseOptionIdAndroid?: (string | null);
377
379
  /** [Android] Rental details if this is a rental offer. */
378
380
  rentalDetailsAndroid?: (RentalDetailsAndroid | null);
379
- /** Type of discount offer */
381
+ /**
382
+ * Offer category. DiscountOffer currently represents Android one-time product
383
+ * offers and is populated as OneTime. Introductory and Promotional are used by
384
+ * SubscriptionOffer.
385
+ */
380
386
  type: DiscountOfferType;
381
387
  /**
382
388
  * [Android] Valid time window for the offer.
@@ -386,8 +392,8 @@ export interface DiscountOffer {
386
392
  }
387
393
  /**
388
394
  * iOS DiscountOffer (output type).
389
- * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility.
390
- * @see https://openiap.dev/docs/types#subscription-offer
395
+ * @see https://openiap.dev/docs/types/subscription-offer
396
+ * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0.
391
397
  */
392
398
  export interface DiscountOfferIOS {
393
399
  /** Discount identifier */
@@ -449,8 +455,11 @@ export declare enum ErrorCode {
449
455
  PurchaseVerificationFinishFailed = "purchase-verification-finish-failed",
450
456
  PurchaseVerificationFinished = "purchase-verification-finished",
451
457
  QueryProduct = "query-product",
458
+ /** @deprecated Use PurchaseVerificationFailed instead. Scheduled for removal in OpenIAP 3.0. */
452
459
  ReceiptFailed = "receipt-failed",
460
+ /** @deprecated Use PurchaseVerificationFinished instead. Scheduled for removal in OpenIAP 3.0. */
453
461
  ReceiptFinished = "receipt-finished",
462
+ /** @deprecated Use PurchaseVerificationFinishFailed instead. Scheduled for removal in OpenIAP 3.0. */
454
463
  ReceiptFinishedFailed = "receipt-finished-failed",
455
464
  RemoteError = "remote-error",
456
465
  ServiceDisconnected = "service-disconnected",
@@ -479,8 +488,8 @@ export type ExternalLinkLaunchModeAndroid = 'unspecified' | 'launch-in-external-
479
488
  export type ExternalLinkTypeAndroid = 'unspecified' | 'link-to-digital-content-offer' | 'link-to-app-download';
480
489
  /**
481
490
  * External offer availability result (Android)
482
- * @deprecated Use BillingProgramAvailabilityResultAndroid with isBillingProgramAvailableAsync instead
483
491
  * Available in Google Play Billing Library 6.2.0+, deprecated in 8.2.0
492
+ * @deprecated Use BillingProgramAvailabilityResultAndroid from isBillingProgramAvailableAndroid instead. Scheduled for removal in OpenIAP 3.0.
484
493
  */
485
494
  export interface ExternalOfferAvailabilityResultAndroid {
486
495
  /** Whether external offers are available for the user */
@@ -488,8 +497,8 @@ export interface ExternalOfferAvailabilityResultAndroid {
488
497
  }
489
498
  /**
490
499
  * External offer reporting details (Android)
491
- * @deprecated Use BillingProgramReportingDetailsAndroid with createBillingProgramReportingDetailsAsync instead
492
500
  * Available in Google Play Billing Library 6.2.0+, deprecated in 8.2.0
501
+ * @deprecated Use BillingProgramReportingDetailsAndroid from createBillingProgramReportingDetailsAndroid instead. Scheduled for removal in OpenIAP 3.0.
493
502
  */
494
503
  export interface ExternalOfferReportingDetailsAndroid {
495
504
  /** External transaction token for reporting external offer transactions */
@@ -616,8 +625,8 @@ export interface InitConnectionConfig {
616
625
  /**
617
626
  * Alternative billing mode for Android
618
627
  * If not specified, defaults to NONE (standard Google Play billing)
619
- * @deprecated Use enableBillingProgramAndroid instead.
620
628
  * Use USER_CHOICE_BILLING for user choice billing, EXTERNAL_OFFER for alternative only.
629
+ * @deprecated Use enableBillingProgramAndroid instead. Scheduled for removal in OpenIAP 3.0.
621
630
  */
622
631
  alternativeBillingModeAndroid?: (AlternativeBillingModeAndroid | null);
623
632
  /**
@@ -710,6 +719,7 @@ export interface Mutation {
710
719
  * Returns true if available, false otherwise.
711
720
  * Throws OpenIapError.NotPrepared if billing client not ready.
712
721
  * See: https://openiap.dev/docs/apis/android/check-alternative-billing-availability-android
722
+ * @deprecated Use isBillingProgramAvailableAndroid with the external-offer BillingProgramAndroid value instead. Scheduled for removal in OpenIAP 3.0.
713
723
  */
714
724
  checkAlternativeBillingAvailabilityAndroid: Promise<boolean>;
715
725
  /**
@@ -729,6 +739,7 @@ export interface Mutation {
729
739
  * Returns token string, or null if creation failed.
730
740
  * Throws OpenIapError.NotPrepared if billing client not ready.
731
741
  * See: https://openiap.dev/docs/apis/android/create-alternative-billing-token-android
742
+ * @deprecated Use createBillingProgramReportingDetailsAndroid with the external-offer BillingProgramAndroid value instead. Scheduled for removal in OpenIAP 3.0.
732
743
  */
733
744
  createAlternativeBillingTokenAndroid?: Promise<(string | null)>;
734
745
  /**
@@ -796,7 +807,7 @@ export interface Mutation {
796
807
  * purchase while the app is running with an active billing connection; always
797
808
  * reconcile with getAvailablePurchases when the app resumes.
798
809
  * Does not require the billing client to be initialized (no Play Billing version requirement).
799
- * Planned OpenIAP availability: Spec 2.5.0 / openiap-google 2.5.0.
810
+ * Available in OpenIAP Spec 2.4.2 / openiap-google 2.5.0.
800
811
  * Android counterpart of presentCodeRedemptionSheetIOS.
801
812
  * Returns true when the redemption flow was launched, or false when the current
802
813
  * store flavor does not provide an equivalent redemption flow.
@@ -828,11 +839,8 @@ export interface Mutation {
828
839
  /**
829
840
  * Buy the currently promoted product.
830
841
  *
831
- * @deprecated Use promotedProductListenerIOS to receive the productId,
832
- * then call requestPurchase with that SKU instead. In StoreKit 2,
833
- * promoted products can be purchased directly via the standard purchase flow.
834
842
  * See: https://openiap.dev/docs/apis/ios/request-purchase-on-promoted-product-ios
835
- * @deprecated Use promotedProductListenerIOS + requestPurchase instead
843
+ * @deprecated Use the promoted-product listener or callback exposed by your SDK to receive the productId, then call requestPurchase with that SKU instead. In StoreKit 2, promoted products can be purchased directly via the standard purchase flow. Scheduled for removal in OpenIAP 3.0.
836
844
  */
837
845
  requestPurchaseOnPromotedProductIOS: Promise<boolean>;
838
846
  /**
@@ -846,6 +854,7 @@ export interface Mutation {
846
854
  * Returns true if user accepted, false if user canceled.
847
855
  * Throws OpenIapError.NotPrepared if billing client not ready.
848
856
  * See: https://openiap.dev/docs/apis/android/show-alternative-billing-dialog-android
857
+ * @deprecated Use launchExternalLinkAndroid instead. Scheduled for removal in OpenIAP 3.0.
849
858
  */
850
859
  showAlternativeBillingDialogAndroid: Promise<boolean>;
851
860
  /**
@@ -885,7 +894,7 @@ export interface Mutation {
885
894
  /**
886
895
  * Deprecated. Validate purchase receipts with the configured providers — use verifyPurchase instead.
887
896
  * See: https://openiap.dev/docs/features/validation#verify-purchase
888
- * @deprecated Use verifyPurchase
897
+ * @deprecated Use verifyPurchase. Scheduled for removal in OpenIAP 3.0.
889
898
  */
890
899
  validateReceipt: Promise<VerifyPurchaseResult>;
891
900
  /**
@@ -921,19 +930,7 @@ export type MutationInitConnectionArgs = (InitConnectionConfig | null) | undefin
921
930
  export type MutationIsBillingProgramAvailableAndroidArgs = BillingProgramAndroid;
922
931
  export type MutationLaunchExternalLinkAndroidArgs = LaunchExternalLinkParamsAndroid;
923
932
  export type MutationPresentExternalPurchaseLinkIosArgs = string;
924
- export type MutationRequestPurchaseArgs = {
925
- /** Per-platform purchase request props */
926
- request: RequestPurchasePropsByPlatforms;
927
- type: 'in-app';
928
- /** Use alternative billing (Google Play alternative billing, Apple external purchase link) */
929
- useAlternativeBilling?: boolean | null;
930
- } | {
931
- /** Per-platform subscription request props */
932
- request: RequestSubscriptionPropsByPlatforms;
933
- type: 'subs';
934
- /** Use alternative billing (Google Play alternative billing, Apple external purchase link) */
935
- useAlternativeBilling?: boolean | null;
936
- };
933
+ export type MutationRequestPurchaseArgs = RequestPurchaseProps;
937
934
  export type MutationShowBillingProgramInformationDialogAndroidArgs = BillingProgramInformationDialogParamsAndroid;
938
935
  export type MutationShowExternalPurchaseCustomLinkNoticeIosArgs = ExternalPurchaseCustomLinkNoticeTypeIOS;
939
936
  export type MutationShowInAppMessagesAndroidArgs = (InAppMessageParamsAndroid | null) | undefined;
@@ -998,9 +995,9 @@ export interface ProductAndroid extends ProductCommon {
998
995
  debugDescription?: (string | null);
999
996
  description: string;
1000
997
  /**
1001
- * Standardized discount offers for one-time products.
1002
- * Cross-platform type with Android-specific fields using suffix.
1003
- * @see https://openiap.dev/docs/types#discount-offer
998
+ * Standardized Android one-time product purchase options and offers.
999
+ * Native metadata uses Android-suffixed fields.
1000
+ * @see https://openiap.dev/docs/types/discount-offer
1004
1001
  */
1005
1002
  discountOffers?: (DiscountOffer[] | null);
1006
1003
  displayName?: (string | null);
@@ -1010,8 +1007,7 @@ export interface ProductAndroid extends ProductCommon {
1010
1007
  /**
1011
1008
  * One-time purchase offer details including discounts (Android)
1012
1009
  * Returns all eligible offers. Available in Google Play Billing Library 8.0+
1013
- * @deprecated Use discountOffers instead for cross-platform compatibility.
1014
- * @deprecated Use discountOffers instead
1010
+ * @deprecated Use the standardized discountOffers field instead. Scheduled for removal in OpenIAP 3.0.
1015
1011
  */
1016
1012
  oneTimePurchaseOfferDetailsAndroid?: (ProductAndroidOneTimePurchaseOfferDetail[] | null);
1017
1013
  platform: 'android';
@@ -1024,15 +1020,12 @@ export interface ProductAndroid extends ProductCommon {
1024
1020
  * Available in Google Play Billing Library 8.0.0+
1025
1021
  */
1026
1022
  productStatusAndroid?: (ProductStatusAndroid | null);
1027
- /**
1028
- * @deprecated Use subscriptionOffers instead for cross-platform compatibility.
1029
- * @deprecated Use subscriptionOffers instead
1030
- */
1023
+ /** @deprecated Use subscriptionOffers instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0. */
1031
1024
  subscriptionOfferDetailsAndroid?: (ProductSubscriptionAndroidOfferDetails[] | null);
1032
1025
  /**
1033
1026
  * Standardized subscription offers.
1034
1027
  * Cross-platform type with Android-specific fields using suffix.
1035
- * @see https://openiap.dev/docs/types#subscription-offer
1028
+ * @see https://openiap.dev/docs/types/subscription-offer
1036
1029
  */
1037
1030
  subscriptionOffers?: (SubscriptionOffer[] | null);
1038
1031
  title: string;
@@ -1041,8 +1034,8 @@ export interface ProductAndroid extends ProductCommon {
1041
1034
  /**
1042
1035
  * One-time purchase offer details (Android).
1043
1036
  * Available in Google Play Billing Library 8.0+
1044
- * @deprecated Use the standardized DiscountOffer type instead for cross-platform compatibility.
1045
- * @see https://openiap.dev/docs/types#discount-offer
1037
+ * @see https://openiap.dev/docs/types/discount-offer
1038
+ * @deprecated Use the standardized DiscountOffer type for Android one-time offers. Scheduled for removal in OpenIAP 3.0.
1046
1039
  */
1047
1040
  export interface ProductAndroidOneTimePurchaseOfferDetail {
1048
1041
  /**
@@ -1111,16 +1104,13 @@ export interface ProductIOS extends ProductCommon {
1111
1104
  * monthly subscriptions with a 12-month commitment.
1112
1105
  */
1113
1106
  pricingTermsIOS?: (SubscriptionPricingTermsIOS[] | null);
1114
- /**
1115
- * @deprecated Use subscriptionOffers instead for cross-platform compatibility.
1116
- * @deprecated Use subscriptionOffers instead
1117
- */
1107
+ /** @deprecated Use subscriptionOffers instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0. */
1118
1108
  subscriptionInfoIOS?: (SubscriptionInfoIOS | null);
1119
1109
  /**
1120
1110
  * Standardized subscription offers.
1121
1111
  * Cross-platform type with iOS-specific fields using suffix.
1122
1112
  * Note: iOS does not support one-time product discounts.
1123
- * @see https://openiap.dev/docs/types#subscription-offer
1113
+ * @see https://openiap.dev/docs/types/subscription-offer
1124
1114
  */
1125
1115
  subscriptionOffers?: (SubscriptionOffer[] | null);
1126
1116
  title: string;
@@ -1146,9 +1136,8 @@ export interface ProductSubscriptionAndroid extends ProductCommon {
1146
1136
  debugDescription?: (string | null);
1147
1137
  description: string;
1148
1138
  /**
1149
- * Standardized discount offers for one-time products.
1150
- * Cross-platform type with Android-specific fields using suffix.
1151
- * @see https://openiap.dev/docs/types#discount-offer
1139
+ * Nullable compatibility field. Google Play does not return one-time purchase
1140
+ * offer details for subscription products; use subscriptionOffers below.
1152
1141
  */
1153
1142
  discountOffers?: (DiscountOffer[] | null);
1154
1143
  displayName?: (string | null);
@@ -1156,10 +1145,9 @@ export interface ProductSubscriptionAndroid extends ProductCommon {
1156
1145
  id: string;
1157
1146
  nameAndroid: string;
1158
1147
  /**
1159
- * One-time purchase offer details including discounts (Android)
1160
- * Returns all eligible offers. Available in Google Play Billing Library 8.0+
1161
- * @deprecated Use discountOffers instead for cross-platform compatibility.
1162
- * @deprecated Use discountOffers instead
1148
+ * Legacy nullable compatibility field. Google Play does not populate one-time
1149
+ * purchase offer details for subscription products.
1150
+ * @deprecated One-time offers belong to ProductAndroid.discountOffers; subscriptions use subscriptionOffers. Scheduled for removal in OpenIAP 3.0.
1163
1151
  */
1164
1152
  oneTimePurchaseOfferDetailsAndroid?: (ProductAndroidOneTimePurchaseOfferDetail[] | null);
1165
1153
  platform: 'android';
@@ -1172,15 +1160,12 @@ export interface ProductSubscriptionAndroid extends ProductCommon {
1172
1160
  * Available in Google Play Billing Library 8.0.0+
1173
1161
  */
1174
1162
  productStatusAndroid?: (ProductStatusAndroid | null);
1175
- /**
1176
- * @deprecated Use subscriptionOffers instead for cross-platform compatibility.
1177
- * @deprecated Use subscriptionOffers instead
1178
- */
1163
+ /** @deprecated Use subscriptionOffers instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0. */
1179
1164
  subscriptionOfferDetailsAndroid: ProductSubscriptionAndroidOfferDetails[];
1180
1165
  /**
1181
1166
  * Standardized subscription offers.
1182
1167
  * Cross-platform type with Android-specific fields using suffix.
1183
- * @see https://openiap.dev/docs/types#subscription-offer
1168
+ * @see https://openiap.dev/docs/types/subscription-offer
1184
1169
  */
1185
1170
  subscriptionOffers: SubscriptionOffer[];
1186
1171
  title: string;
@@ -1188,8 +1173,8 @@ export interface ProductSubscriptionAndroid extends ProductCommon {
1188
1173
  }
1189
1174
  /**
1190
1175
  * Subscription offer details (Android).
1191
- * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility.
1192
- * @see https://openiap.dev/docs/types#subscription-offer
1176
+ * @see https://openiap.dev/docs/types/subscription-offer
1177
+ * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0.
1193
1178
  */
1194
1179
  export interface ProductSubscriptionAndroidOfferDetails {
1195
1180
  basePlanId: string;
@@ -1208,10 +1193,7 @@ export interface ProductSubscriptionIOS extends ProductCommon {
1208
1193
  currency: string;
1209
1194
  debugDescription?: (string | null);
1210
1195
  description: string;
1211
- /**
1212
- * @deprecated Use subscriptionOffers instead for cross-platform compatibility.
1213
- * @deprecated Use subscriptionOffers instead
1214
- */
1196
+ /** @deprecated Use subscriptionOffers instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0. */
1215
1197
  discountsIOS?: (DiscountIOS[] | null);
1216
1198
  displayName?: (string | null);
1217
1199
  displayNameIOS: string;
@@ -1233,15 +1215,12 @@ export interface ProductSubscriptionIOS extends ProductCommon {
1233
1215
  pricingTermsIOS?: (SubscriptionPricingTermsIOS[] | null);
1234
1216
  /** App Store subscription group identifier for intro-offer eligibility checks. */
1235
1217
  subscriptionGroupIdIOS?: (string | null);
1236
- /**
1237
- * @deprecated Use subscriptionOffers for offer metadata and subscriptionGroupIdIOS for the App Store subscription group identifier.
1238
- * @deprecated Use subscriptionOffers for offers and subscriptionGroupIdIOS for group ID
1239
- */
1218
+ /** @deprecated Use subscriptionOffers for offer metadata and subscriptionGroupIdIOS for the App Store subscription group identifier. Scheduled for removal in OpenIAP 3.0. */
1240
1219
  subscriptionInfoIOS?: (SubscriptionInfoIOS | null);
1241
1220
  /**
1242
1221
  * Standardized subscription offers.
1243
1222
  * Cross-platform type with iOS-specific fields using suffix.
1244
- * @see https://openiap.dev/docs/types#subscription-offer
1223
+ * @see https://openiap.dev/docs/types/subscription-offer
1245
1224
  */
1246
1225
  subscriptionOffers?: (SubscriptionOffer[] | null);
1247
1226
  subscriptionPeriodNumberIOS?: (string | null);
@@ -1296,7 +1275,7 @@ export interface PurchaseAndroid extends PurchaseCommon {
1296
1275
  * Available in Google Play Billing Library 5.0+
1297
1276
  */
1298
1277
  pendingPurchaseUpdateAndroid?: (PendingPurchaseUpdateAndroid | null);
1299
- /** @deprecated Use store instead */
1278
+ /** @deprecated Use store instead. Scheduled for removal in OpenIAP 3.0. */
1300
1279
  platform: IapPlatform;
1301
1280
  productId: string;
1302
1281
  purchaseState: PurchaseState;
@@ -1320,7 +1299,7 @@ export interface PurchaseCommon {
1320
1299
  id: string;
1321
1300
  ids?: (string[] | null);
1322
1301
  isAutoRenewing: boolean;
1323
- /** @deprecated Use store instead */
1302
+ /** @deprecated Use store instead. Scheduled for removal in OpenIAP 3.0. */
1324
1303
  platform: IapPlatform;
1325
1304
  productId: string;
1326
1305
  purchaseState: PurchaseState;
@@ -1370,7 +1349,7 @@ export interface PurchaseIOS extends PurchaseCommon {
1370
1349
  originalTransactionDateIOS?: (number | null);
1371
1350
  originalTransactionIdentifierIOS?: (string | null);
1372
1351
  ownershipTypeIOS?: (string | null);
1373
- /** @deprecated Use store instead */
1352
+ /** @deprecated Use store instead. Scheduled for removal in OpenIAP 3.0. */
1374
1353
  platform: IapPlatform;
1375
1354
  productId: string;
1376
1355
  purchaseState: PurchaseState;
@@ -1501,7 +1480,7 @@ export interface Query {
1501
1480
  * Deprecated. Get the current App Store storefront ISO 3166-1 alpha-3 country
1502
1481
  * code — use cross-platform getStorefront instead.
1503
1482
  * See: https://openiap.dev/docs/apis/ios/get-storefront-ios
1504
- * @deprecated Use getStorefront
1483
+ * @deprecated Use getStorefront. Scheduled for removal in OpenIAP 3.0.
1505
1484
  */
1506
1485
  getStorefrontIOS: Promise<string>;
1507
1486
  /**
@@ -1544,7 +1523,7 @@ export interface Query {
1544
1523
  /**
1545
1524
  * Deprecated. Legacy App Store receipt validation — use verifyPurchase instead.
1546
1525
  * See: https://openiap.dev/docs/apis/ios/validate-receipt-ios
1547
- * @deprecated Use verifyPurchase
1526
+ * @deprecated Use verifyPurchase. Scheduled for removal in OpenIAP 3.0.
1548
1527
  */
1549
1528
  validateReceiptIOS: Promise<VerifyPurchaseResultIOS>;
1550
1529
  }
@@ -1688,14 +1667,22 @@ export interface RequestPurchaseIosProps {
1688
1667
  export type RequestPurchaseProps = {
1689
1668
  /** Per-platform purchase request props */
1690
1669
  request: RequestPurchasePropsByPlatforms;
1670
+ /** Explicit purchase type hint (defaults to in-app) */
1691
1671
  type: 'in-app';
1692
- /** Use alternative billing (Google Play alternative billing, Apple external purchase link) */
1672
+ /**
1673
+ * This flag only logs debug info and has no effect on the purchase flow.
1674
+ * @deprecated Use enableBillingProgramAndroid in InitConnectionConfig instead. Scheduled for removal in OpenIAP 3.0.
1675
+ */
1693
1676
  useAlternativeBilling?: boolean | null;
1694
1677
  } | {
1695
1678
  /** Per-platform subscription request props */
1696
1679
  request: RequestSubscriptionPropsByPlatforms;
1680
+ /** Explicit purchase type hint (defaults to in-app) */
1697
1681
  type: 'subs';
1698
- /** Use alternative billing (Google Play alternative billing, Apple external purchase link) */
1682
+ /**
1683
+ * This flag only logs debug info and has no effect on the purchase flow.
1684
+ * @deprecated Use enableBillingProgramAndroid in InitConnectionConfig instead. Scheduled for removal in OpenIAP 3.0.
1685
+ */
1699
1686
  useAlternativeBilling?: boolean | null;
1700
1687
  };
1701
1688
  /**
@@ -1708,13 +1695,13 @@ export type RequestPurchaseProps = {
1708
1695
  * (determined at build time, not runtime)
1709
1696
  */
1710
1697
  export interface RequestPurchasePropsByPlatforms {
1711
- /** @deprecated Use google instead */
1698
+ /** @deprecated Use google instead. Scheduled for removal in OpenIAP 3.0. */
1712
1699
  android?: (RequestPurchaseAndroidProps | null);
1713
1700
  /** Apple-specific purchase parameters */
1714
1701
  apple?: (RequestPurchaseIosProps | null);
1715
1702
  /** Google-specific purchase parameters */
1716
1703
  google?: (RequestPurchaseAndroidProps | null);
1717
- /** @deprecated Use apple instead */
1704
+ /** @deprecated Use apple instead. Scheduled for removal in OpenIAP 3.0. */
1718
1705
  ios?: (RequestPurchaseIosProps | null);
1719
1706
  }
1720
1707
  export type RequestPurchaseResult = Purchase | Purchase[] | null;
@@ -1744,7 +1731,7 @@ export interface RequestSubscriptionAndroidProps {
1744
1731
  purchaseToken?: (string | null);
1745
1732
  /**
1746
1733
  * Replacement mode for subscription changes
1747
- * @deprecated Use subscriptionProductReplacementParams instead for item-level replacement (8.1.0+)
1734
+ * @deprecated Use subscriptionProductReplacementParams instead for item-level replacement (8.1.0+). Scheduled for removal in OpenIAP 3.0.
1748
1735
  */
1749
1736
  replacementMode?: (number | null);
1750
1737
  /** List of subscription SKUs */
@@ -1813,13 +1800,13 @@ export interface RequestSubscriptionIosProps {
1813
1800
  * (determined at build time, not runtime)
1814
1801
  */
1815
1802
  export interface RequestSubscriptionPropsByPlatforms {
1816
- /** @deprecated Use google instead */
1803
+ /** @deprecated Use google instead. Scheduled for removal in OpenIAP 3.0. */
1817
1804
  android?: (RequestSubscriptionAndroidProps | null);
1818
1805
  /** Apple-specific subscription parameters */
1819
1806
  apple?: (RequestSubscriptionIosProps | null);
1820
1807
  /** Google-specific subscription parameters */
1821
1808
  google?: (RequestSubscriptionAndroidProps | null);
1822
- /** @deprecated Use apple instead */
1809
+ /** @deprecated Use apple instead. Scheduled for removal in OpenIAP 3.0. */
1823
1810
  ios?: (RequestSubscriptionIosProps | null);
1824
1811
  }
1825
1812
  export interface RequestVerifyPurchaseWithIapkitAmazonProps {
@@ -1962,8 +1949,7 @@ export interface SubscriptionInfoIOS {
1962
1949
  * - iOS: Introductory offers, promotional offers with server-side signatures
1963
1950
  * - Android: Offer tokens with pricing phases
1964
1951
  *
1965
- * @see https://openiap.dev/docs/types/ios#discount-offer
1966
- * @see https://openiap.dev/docs/types/android#subscription-offer
1952
+ * @see https://openiap.dev/docs/types/subscription-offer
1967
1953
  */
1968
1954
  export interface SubscriptionOffer {
1969
1955
  /**
@@ -2036,8 +2022,8 @@ export interface SubscriptionOffer {
2036
2022
  }
2037
2023
  /**
2038
2024
  * iOS subscription offer details.
2039
- * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility.
2040
- * @see https://openiap.dev/docs/types#subscription-offer
2025
+ * @see https://openiap.dev/docs/types/subscription-offer
2026
+ * @deprecated Use the standardized SubscriptionOffer type instead for cross-platform compatibility. Scheduled for removal in OpenIAP 3.0.
2041
2027
  */
2042
2028
  export interface SubscriptionOfferIOS {
2043
2029
  displayPrice: string;
@@ -2088,7 +2074,6 @@ export interface SubscriptionProductReplacementParamsAndroid {
2088
2074
  * Available in Google Play Billing Library 8.1.0+
2089
2075
  */
2090
2076
  export type SubscriptionReplacementModeAndroid = 'unknown-replacement-mode' | 'with-time-proration' | 'charge-prorated-price' | 'charge-full-price' | 'without-proration' | 'deferred' | 'keep-existing';
2091
- export type SubscriptionState = 'active' | 'expired' | 'in-billing-retry' | 'in-grace-period' | 'paused' | 'refunded' | 'revoked' | 'unknown';
2092
2077
  export interface SubscriptionStatusIOS {
2093
2078
  renewalInfo?: (RenewalInfoIOS | null);
2094
2079
  state: string;
@@ -2254,62 +2239,6 @@ export interface VerifyPurchaseWithProviderResult {
2254
2239
  provider: PurchaseVerificationProvider;
2255
2240
  }
2256
2241
  export type VoidResult = void;
2257
- export type WebhookCancellationReason = 'billing-error' | 'other' | 'price-increase-declined' | 'product-unavailable' | 'refunded' | 'user-canceled';
2258
- export interface WebhookEvent {
2259
- /** Reason for cancellation, when applicable. */
2260
- cancellationReason?: (WebhookCancellationReason | null);
2261
- /** Localized currency code (ISO 4217) at event time, when available. */
2262
- currency?: (string | null);
2263
- environment: WebhookEventEnvironment;
2264
- /** When the current subscription period ends. Epoch milliseconds. */
2265
- expiresAt?: (number | null);
2266
- /**
2267
- * Stable identifier suitable for idempotency. Derived from the source notification
2268
- * UUID where the store provides one (ASN v2 `notificationUUID`, RTDN message id);
2269
- * otherwise hashed from the canonicalized payload.
2270
- */
2271
- id: string;
2272
- /** Time the underlying event occurred at the store. Epoch milliseconds. */
2273
- occurredAt: number;
2274
- platform: IapPlatform;
2275
- /**
2276
- * Price in micros (1/1,000,000 of the currency unit) at event time, when available.
2277
- * Matches Google Play's `priceAmountMicros` convention; iOS values are converted.
2278
- */
2279
- priceAmountMicros?: (number | null);
2280
- /** Product the event pertains to. May be null for account-level events. */
2281
- productId?: (string | null);
2282
- /** kit project that owns the subscription / purchase this event refers to. */
2283
- projectId: string;
2284
- /**
2285
- * Cross-platform purchase identity used to correlate this event with an existing
2286
- * purchase record. iOS: `originalTransactionId`. Android: `purchaseToken`.
2287
- * Null for `TestNotification` events (Apple ASN v2 / Google RTDN test
2288
- * payloads carry no transaction); always present for every other event type.
2289
- */
2290
- purchaseToken?: (string | null);
2291
- /**
2292
- * Original signed payload from the store. ASN v2 events expose the JWS string;
2293
- * RTDN events expose the base64-decoded Pub/Sub message JSON. Provided so that
2294
- * consumers can independently verify or extract platform-specific fields. kit
2295
- * always validates this payload before emitting the event.
2296
- */
2297
- rawSignedPayload?: (string | null);
2298
- /** Time kit ingested and normalized this event. Epoch milliseconds. */
2299
- receivedAt: number;
2300
- /** When auto-renewal will charge again. Epoch milliseconds. */
2301
- renewsAt?: (number | null);
2302
- source: WebhookEventSource;
2303
- /**
2304
- * Normalized subscription state at the time of event, when the event refers to
2305
- * a subscription. Null for one-time purchase events.
2306
- */
2307
- subscriptionState?: (SubscriptionState | null);
2308
- type: WebhookEventType;
2309
- }
2310
- export type WebhookEventEnvironment = 'production' | 'sandbox' | 'xcode';
2311
- export type WebhookEventSource = 'apple-app-store-server-notifications-v2' | 'google-play-real-time-developer-notifications' | 'meta-horizon-reconciler';
2312
- export type WebhookEventType = 'purchase-consumption-request' | 'purchase-refunded' | 'subscription-canceled' | 'subscription-expired' | 'subscription-in-billing-retry' | 'subscription-in-grace-period' | 'subscription-paused' | 'subscription-price-change' | 'subscription-product-changed' | 'subscription-recovered' | 'subscription-renewed' | 'subscription-resumed' | 'subscription-revoked' | 'subscription-started' | 'subscription-uncanceled' | 'test-notification';
2313
2242
  /**
2314
2243
  * Win-back offer input for iOS 18+ (StoreKit 2)
2315
2244
  * Win-back offers are used to re-engage churned subscribers.
@@ -2320,34 +2249,6 @@ export interface WinBackOfferInputIOS {
2320
2249
  /** The win-back offer ID from App Store Connect */
2321
2250
  offerId: string;
2322
2251
  }
2323
- export type QueryArgsMap = {
2324
- canPresentExternalPurchaseNoticeIOS: never;
2325
- currentEntitlementIOS: QueryCurrentEntitlementIosArgs;
2326
- fetchProducts: QueryFetchProductsArgs;
2327
- getActiveSubscriptions: QueryGetActiveSubscriptionsArgs;
2328
- getAllTransactionsIOS: never;
2329
- getAppTransactionIOS: never;
2330
- getAvailablePurchases: QueryGetAvailablePurchasesArgs;
2331
- getBillingChoiceInfoAndroid: QueryGetBillingChoiceInfoAndroidArgs;
2332
- getExternalPurchaseCustomLinkTokenIOS: QueryGetExternalPurchaseCustomLinkTokenIosArgs;
2333
- getPendingTransactionsIOS: never;
2334
- getPromotedProductIOS: never;
2335
- getReceiptDataIOS: never;
2336
- getStorefront: never;
2337
- getStorefrontIOS: never;
2338
- getTransactionJwsIOS: QueryGetTransactionJwsIosArgs;
2339
- hasActiveSubscriptions: QueryHasActiveSubscriptionsArgs;
2340
- isEligibleForExternalPurchaseCustomLinkIOS: never;
2341
- isEligibleForIntroOfferIOS: QueryIsEligibleForIntroOfferIosArgs;
2342
- isTransactionVerifiedIOS: QueryIsTransactionVerifiedIosArgs;
2343
- latestTransactionIOS: QueryLatestTransactionIosArgs;
2344
- subscriptionStatusIOS: QuerySubscriptionStatusIosArgs;
2345
- validateReceiptIOS: QueryValidateReceiptIosArgs;
2346
- };
2347
- export type QueryField<K extends keyof Query> = QueryArgsMap[K] extends never ? () => NonNullable<Query[K]> : undefined extends QueryArgsMap[K] ? (args?: QueryArgsMap[K]) => NonNullable<Query[K]> : (args: QueryArgsMap[K]) => NonNullable<Query[K]>;
2348
- export type QueryFieldMap = {
2349
- [K in keyof Query]?: QueryField<K>;
2350
- };
2351
2252
  export type MutationArgsMap = {
2352
2253
  acknowledgePurchaseAndroid: MutationAcknowledgePurchaseAndroidArgs;
2353
2254
  beginRefundRequestIOS: MutationBeginRefundRequestIosArgs;
@@ -2383,6 +2284,34 @@ export type MutationField<K extends keyof Mutation> = MutationArgsMap[K] extends
2383
2284
  export type MutationFieldMap = {
2384
2285
  [K in keyof Mutation]?: MutationField<K>;
2385
2286
  };
2287
+ export type QueryArgsMap = {
2288
+ canPresentExternalPurchaseNoticeIOS: never;
2289
+ currentEntitlementIOS: QueryCurrentEntitlementIosArgs;
2290
+ fetchProducts: QueryFetchProductsArgs;
2291
+ getActiveSubscriptions: QueryGetActiveSubscriptionsArgs;
2292
+ getAllTransactionsIOS: never;
2293
+ getAppTransactionIOS: never;
2294
+ getAvailablePurchases: QueryGetAvailablePurchasesArgs;
2295
+ getBillingChoiceInfoAndroid: QueryGetBillingChoiceInfoAndroidArgs;
2296
+ getExternalPurchaseCustomLinkTokenIOS: QueryGetExternalPurchaseCustomLinkTokenIosArgs;
2297
+ getPendingTransactionsIOS: never;
2298
+ getPromotedProductIOS: never;
2299
+ getReceiptDataIOS: never;
2300
+ getStorefront: never;
2301
+ getStorefrontIOS: never;
2302
+ getTransactionJwsIOS: QueryGetTransactionJwsIosArgs;
2303
+ hasActiveSubscriptions: QueryHasActiveSubscriptionsArgs;
2304
+ isEligibleForExternalPurchaseCustomLinkIOS: never;
2305
+ isEligibleForIntroOfferIOS: QueryIsEligibleForIntroOfferIosArgs;
2306
+ isTransactionVerifiedIOS: QueryIsTransactionVerifiedIosArgs;
2307
+ latestTransactionIOS: QueryLatestTransactionIosArgs;
2308
+ subscriptionStatusIOS: QuerySubscriptionStatusIosArgs;
2309
+ validateReceiptIOS: QueryValidateReceiptIosArgs;
2310
+ };
2311
+ export type QueryField<K extends keyof Query> = QueryArgsMap[K] extends never ? () => NonNullable<Query[K]> : undefined extends QueryArgsMap[K] ? (args?: QueryArgsMap[K]) => NonNullable<Query[K]> : (args: QueryArgsMap[K]) => NonNullable<Query[K]>;
2312
+ export type QueryFieldMap = {
2313
+ [K in keyof Query]?: QueryField<K>;
2314
+ };
2386
2315
  export type SubscriptionArgsMap = {
2387
2316
  developerProvidedBillingAndroid: never;
2388
2317
  promotedProductIOS: never;