expo-iap 6.4.0 → 6.4.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.
package/AGENTS.md CHANGED
@@ -21,15 +21,17 @@ with the `expo` scope, e.g. `fix(expo): resolve purchase crash`.
21
21
  - Changing iOS to `15.0` can cause expo prebuild to exclude the module in certain Expo SDKs (known bug)
22
22
  - See issue: [#168](https://github.com/hyochan/expo-iap/issues/168)
23
23
  - This is kept at `13.4` for compatibility with affected Expo SDKs
24
- - The actual iOS 15.0+ requirement is enforced at build time via @available annotations
24
+ - The OpenIAP Swift package's iOS 15.0 minimum enforces the real requirement at build time
25
25
  - Users must follow the deployment target required by their Expo SDK. The validated Expo SDK 57 example uses iOS 16.4; older supported SDKs must never go below the module's iOS 15.0 runtime requirement.
26
26
 
27
27
  **tvOS Exception**: tvOS platform version MUST be `16.0` (not `13.4`) because:
28
28
 
29
- - The `openiap` CocoaPods dependency requires tvOS 16.0 minimum
29
+ - The OpenIAP Swift package requires tvOS 16.0 minimum
30
30
  - Setting tvOS to `13.4` causes build failure due to dependency mismatch
31
31
  - This is a hard requirement from the dependency, not subject to the iOS workaround
32
32
 
33
+ **OpenIAP source**: the example's prebuild points ExpoIap at this checkout's `packages/apple`. `OPENIAP_APPLE_PATH='' bunx expo prebuild --platform ios --clean` builds the published Swift package an installed app gets instead; `scripts/verify-ios-swiftpm-consumer.sh` checks that build end to end, as the release does.
34
+
33
35
  ### Pre-Commit Checks
34
36
 
35
37
  Before committing any changes:
package/build/index.d.ts CHANGED
@@ -442,7 +442,7 @@ export type { KitApiOptions, KitClientPayloadCache, KitClientPayloadOptions, Kit
442
442
  export { describePurchaseFlowStatus, toPurchaseConfirmationRequest, } from './purchase-flow-core';
443
443
  export type { PurchaseConfirmation, PurchaseConfirmationRequest, PurchaseFlow, PurchaseFlowGuidance, PurchaseFlowGuidanceKey, PurchaseFlowOptions, PurchaseFlowOutcome, PurchaseFlowPurchase, PurchaseFlowStatus, RecoverPurchasesOptions, } from './purchase-flow-core';
444
444
  export type { IapkitConfirmationOptions } from './purchase-flow-confirmers';
445
- export { ErrorCodeUtils, ErrorCodeMapping, createPurchaseError, createPurchaseErrorFromPlatform, getUserFriendlyErrorMessage, isUserCancelledError, } from './utils/errorMapping';
445
+ export { ErrorCodeUtils, ErrorCodeMapping, createPurchaseError, createPurchaseErrorFromPlatform, getUserFriendlyErrorMessage, isRecoverableError, isUserCancelledError, } from './utils/errorMapping';
446
446
  export type { PurchaseError as ExpoPurchaseError, PurchaseErrorProps, } from './utils/errorMapping';
447
447
  export { ExpoIapConsole } from './utils/debug';
448
448
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -1031,7 +1031,8 @@ export const verifyPurchaseWithProvider = async (options) => {
1031
1031
  };
1032
1032
  const purchaseFlowSdk = {
1033
1033
  finishTransaction: (args) => finishTransaction(args),
1034
- getAvailablePurchases: () => getAvailablePurchases(),
1034
+ // The active-only iOS list drops subscriptions in billing grace.
1035
+ getAvailablePurchases: () => getAvailablePurchases({ onlyIncludeActiveItemsIOS: false }),
1035
1036
  getPendingTransactionsIOS: Platform.OS === 'ios' ? () => getPendingTransactionsIOS() : undefined,
1036
1037
  purchaseUpdatedListener: (listener) => purchaseUpdatedListener(listener, { dedupeTransactionIOS: false }),
1037
1038
  purchaseErrorListener: (listener) => purchaseErrorListener(listener),
@@ -1058,6 +1059,6 @@ export function confirmOnDeviceIOS(options = {}) {
1058
1059
  export * from './useIAP';
1059
1060
  export { kitApi, KitApiError, resolveLocalizedPayload } from './kit-api';
1060
1061
  export { describePurchaseFlowStatus, toPurchaseConfirmationRequest, } from './purchase-flow-core';
1061
- export { ErrorCodeUtils, ErrorCodeMapping, createPurchaseError, createPurchaseErrorFromPlatform, getUserFriendlyErrorMessage, isUserCancelledError, } from './utils/errorMapping';
1062
+ export { ErrorCodeUtils, ErrorCodeMapping, createPurchaseError, createPurchaseErrorFromPlatform, getUserFriendlyErrorMessage, isRecoverableError, isUserCancelledError, } from './utils/errorMapping';
1062
1063
  export { ExpoIapConsole } from './utils/debug';
1063
1064
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// External dependencies\nimport {Platform} from 'react-native';\n\n// Internal modules\nimport ExpoIapModule, {getNativeModule} from './ExpoIapModule';\nimport {isVegaOS} from './vega';\nimport {\n deepLinkToSubscriptionsIOS,\n getPendingTransactionsIOS,\n isProductIOS,\n} from './modules/ios';\nimport {\n type PurchaseFlow,\n type PurchaseFlowOptions,\n type PurchaseFlowPurchase,\n} from './purchase-flow-core';\nimport {\n createDeviceConfirmationIOS,\n createIapkitConfirmation,\n type IapkitConfirmationOptions,\n} from './purchase-flow-confirmers';\nimport {\n clearRequested,\n createSdkPurchaseFlow,\n markRequested,\n type PurchaseFlowSdk,\n type SdkPurchaseFlowOptions,\n} from './utils/purchaseFlowBinding';\nimport {\n isProductAndroid,\n deepLinkToSubscriptionsAndroid,\n} from './modules/android';\nimport {ExpoIapConsole} from './utils/debug';\nimport {showFirstPurchaseNotice} from './utils/firstPurchaseNotice';\nimport {restorePurchasesNative} from './utils/restorePurchases';\nimport {\n decodeAndroidPurchases,\n decodeApplePurchases,\n} from './utils/availablePurchases';\n\n// Types\nimport type {\n ActiveSubscription,\n DeepLinkOptions,\n DeveloperProvidedBillingDetailsAndroid,\n IapPlatform,\n MutationField,\n MutationRequestPurchaseArgs,\n Product,\n ProductQueryType,\n ProductSubscription,\n Purchase,\n PurchaseOptions,\n PurchaseUpdatedListenerOptions,\n QueryField,\n RequestPurchasePropsByPlatforms,\n RequestPurchaseAndroidProps,\n RequestPurchaseIosProps,\n RequestSubscriptionPropsByPlatforms,\n RequestSubscriptionAndroidProps,\n RequestSubscriptionIosProps,\n UserChoiceBillingDetails,\n} from './types';\nimport {ErrorCode, resolveStoreId} from './types';\nimport {\n createPurchaseError,\n normalizeErrorCodeFromNative,\n type PurchaseError,\n} from './utils/errorMapping';\nimport {\n createPurchaseErrorFromNativeException,\n invokeNativeWithPurchaseError,\n} from './utils/nativeError';\n\nexport * from './types';\nexport * from './modules/android';\nexport * from './modules/ios';\nexport * from './onside';\nexport * from './vega';\n\nexport enum OpenIapEvent {\n PurchaseUpdated = 'purchase-updated',\n PurchaseError = 'purchase-error',\n PromotedProductIOS = 'promoted-product-ios',\n UserChoiceBillingAndroid = 'user-choice-billing-android',\n /**\n * Fired for External Payments (8.3.0+) and Billing Choice (9.1.0+)\n * developer billing flows. Nullable fields depend on the selected flow.\n */\n DeveloperProvidedBillingAndroid = 'developer-provided-billing-android',\n /** Fired when a subscription enters a billing-issue state; see `subscriptionBillingIssueListener`. */\n SubscriptionBillingIssue = 'subscription-billing-issue',\n}\n\ntype ExpoIapEventPayloads = {\n [OpenIapEvent.PurchaseUpdated]: Purchase;\n [OpenIapEvent.PurchaseError]: PurchaseError;\n [OpenIapEvent.PromotedProductIOS]:\n | Product\n | string\n | {id?: string; productId?: string};\n [OpenIapEvent.UserChoiceBillingAndroid]: UserChoiceBillingDetails;\n [OpenIapEvent.DeveloperProvidedBillingAndroid]: DeveloperProvidedBillingDetailsAndroid;\n [OpenIapEvent.SubscriptionBillingIssue]: Purchase;\n};\n\ntype ExpoIapEventListener<E extends OpenIapEvent> = (\n payload: ExpoIapEventPayloads[E],\n) => void;\n\ntype ExpoIapEmitter = {\n addListener<E extends OpenIapEvent>(\n eventName: E,\n listener: ExpoIapEventListener<E>,\n ): {remove: () => void};\n removeListener<E extends OpenIapEvent>(\n eventName: E,\n listener: ExpoIapEventListener<E>,\n ): void;\n};\n\nconst isStorePlatform = (): boolean =>\n Platform.OS === 'ios' || Platform.OS === 'android';\n\nconst isStoreRuntime = (): boolean =>\n Platform.OS === 'ios' || isAndroidStoreRuntime();\n\nconst unsupportedPlatformError = (): Error =>\n new Error(`Unsupported platform: ${Platform.OS}`);\n\n// Platform tag for PurchaseErrors built from native rejections.\nconst nativePlatform = (): IapPlatform =>\n Platform.OS === 'ios' ? 'ios' : 'android';\n\n// Listener calls go to the raw native module (see getNativeModule), resolved\n// lazily so importing this module doesn't throw on unsupported platforms.\nexport const emitter: ExpoIapEmitter = {\n addListener(eventName, listener) {\n const nativeModule = getNativeModule();\n const nativeSubscription = nativeModule.addListener(eventName, listener);\n let removed = false;\n\n return {\n remove: () => {\n if (removed) {\n return;\n }\n removed = true;\n\n if (typeof nativeSubscription?.remove === 'function') {\n nativeSubscription.remove();\n return;\n }\n\n nativeModule.removeListener?.(eventName, listener);\n },\n };\n },\n removeListener(eventName, listener) {\n return getNativeModule().removeListener?.(eventName, listener);\n },\n};\n\nlet nonDedupingPurchaseUpdatedListenerCountIOS = 0;\nconst purchaseUpdatedDedupeHistoryLimitIOS = 512;\nconst purchaseUpdatedDedupeHistoryIOS = {\n ids: new Set<string>(),\n order: [] as string[],\n start: 0,\n};\nlet purchaseUpdatedDedupeGenerationIOS = 0;\n\ntype PurchaseUpdatedDedupeHistoryIOS = {\n ids: Set<string>;\n order: string[];\n start: number;\n};\n\nconst purchaseUpdatedTransactionIdIOS = (purchase: Purchase) => {\n if (typeof purchase.id === 'string' && purchase.id.length > 0) {\n return purchase.id;\n }\n return null;\n};\n\nconst rememberPurchaseUpdatedTransactionIOS = (\n transactionId: string,\n history: PurchaseUpdatedDedupeHistoryIOS,\n) => {\n if (history.ids.has(transactionId)) {\n return;\n }\n\n history.ids.add(transactionId);\n history.order.push(transactionId);\n if (\n history.order.length - history.start >\n purchaseUpdatedDedupeHistoryLimitIOS\n ) {\n const evicted = history.order[history.start];\n history.start += 1;\n if (evicted != null) {\n history.ids.delete(evicted);\n }\n if (history.start > 128 && history.start * 2 > history.order.length) {\n history.order = history.order.slice(history.start);\n history.start = 0;\n }\n }\n};\n\nconst clearPurchaseUpdatedDedupeHistoryIOS = (\n history: PurchaseUpdatedDedupeHistoryIOS,\n) => {\n history.ids.clear();\n history.order.length = 0;\n history.start = 0;\n};\n\nconst resetPurchaseUpdatedDedupeHistoryIOS = () => {\n clearPurchaseUpdatedDedupeHistoryIOS(purchaseUpdatedDedupeHistoryIOS);\n purchaseUpdatedDedupeGenerationIOS += 1;\n};\n\nconst configurePurchaseUpdatedListenerOptionsIOS = (\n dedupeTransactionIOS: boolean,\n) => {\n if (Platform.OS !== 'ios') return;\n\n const promise = getNativeModule().setPurchaseUpdatedListenerOptions?.({\n dedupeTransactionIOS,\n });\n void promise?.catch((error: unknown) => {\n ExpoIapConsole.warn(\n 'Failed to configure purchase updated listener options:',\n error,\n );\n });\n};\n\nexport type ProductTypeInput = ProductQueryType;\n\nconst normalizeProductType = (type?: ProductTypeInput) => {\n if (!type || type === 'in-app') {\n return {\n canonical: 'in-app' as ProductQueryType,\n native: 'in-app' as const,\n };\n }\n if (type === 'subs') {\n return {\n canonical: 'subs' as ProductQueryType,\n native: 'subs' as const,\n };\n }\n if (type === 'all') {\n return {\n canonical: 'all' as ProductQueryType,\n native: 'all' as const,\n };\n }\n throw new Error(`Unsupported product type: ${type}`);\n};\n\nconst isAndroidStoreRuntime = (): boolean => {\n return Platform.OS === 'android' || isVegaOS();\n};\n\nexport const purchaseUpdatedListener = (\n listener: (event: Purchase) => void,\n options?: PurchaseUpdatedListenerOptions | null,\n) => {\n const receiveDuplicateTransactionUpdatesIOS =\n Platform.OS === 'ios' && options?.dedupeTransactionIOS === false;\n const listenerDedupeHistoryIOS: PurchaseUpdatedDedupeHistoryIOS = {\n ids: new Set(purchaseUpdatedDedupeHistoryIOS.ids),\n order: purchaseUpdatedDedupeHistoryIOS.order.slice(\n purchaseUpdatedDedupeHistoryIOS.start,\n ),\n start: 0,\n };\n let listenerDedupeGenerationIOS = purchaseUpdatedDedupeGenerationIOS;\n\n const wrappedListener = (event: Purchase) => {\n const normalized = event;\n if (Platform.OS === 'ios') {\n if (listenerDedupeGenerationIOS !== purchaseUpdatedDedupeGenerationIOS) {\n clearPurchaseUpdatedDedupeHistoryIOS(listenerDedupeHistoryIOS);\n listenerDedupeGenerationIOS = purchaseUpdatedDedupeGenerationIOS;\n }\n const transactionId = purchaseUpdatedTransactionIdIOS(normalized);\n if (transactionId != null) {\n const isDuplicateForListener =\n listenerDedupeHistoryIOS.ids.has(transactionId);\n rememberPurchaseUpdatedTransactionIOS(\n transactionId,\n listenerDedupeHistoryIOS,\n );\n rememberPurchaseUpdatedTransactionIOS(\n transactionId,\n purchaseUpdatedDedupeHistoryIOS,\n );\n if (!receiveDuplicateTransactionUpdatesIOS && isDuplicateForListener) {\n return;\n }\n }\n }\n listener(normalized);\n };\n const emitterSubscription = emitter.addListener(\n OpenIapEvent.PurchaseUpdated,\n wrappedListener,\n );\n\n if (!receiveDuplicateTransactionUpdatesIOS) {\n return emitterSubscription;\n }\n\n nonDedupingPurchaseUpdatedListenerCountIOS += 1;\n configurePurchaseUpdatedListenerOptionsIOS(false);\n let removed = false;\n\n return {\n remove: () => {\n if (removed) {\n return;\n }\n removed = true;\n try {\n emitterSubscription?.remove?.();\n } finally {\n nonDedupingPurchaseUpdatedListenerCountIOS = Math.max(\n 0,\n nonDedupingPurchaseUpdatedListenerCountIOS - 1,\n );\n configurePurchaseUpdatedListenerOptionsIOS(\n nonDedupingPurchaseUpdatedListenerCountIOS === 0,\n );\n }\n },\n };\n};\n\nexport const purchaseErrorListener = (\n listener: (error: PurchaseError) => void,\n) => {\n // Native events may carry codes outside ErrorCode; deliver canonical codes.\n const wrappedListener = (error: PurchaseError) => {\n listener({...error, code: normalizeErrorCodeFromNative(error.code)});\n };\n const emitterSubscription = emitter.addListener(\n OpenIapEvent.PurchaseError,\n wrappedListener,\n );\n return emitterSubscription;\n};\n\n/**\n * iOS-only listener for App Store promoted product events.\n * This fires when a user taps on a promoted product in the App Store.\n *\n * @param listener - Callback function that receives the promoted product details\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = promotedProductListenerIOS((product) => {\n * console.log('Promoted product:', product);\n * // Handle the promoted product\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform iOS\n */\nexport const promotedProductListenerIOS = (\n listener: (product: Product) => void,\n) => {\n if (Platform.OS !== 'ios') {\n ExpoIapConsole.warn(\n 'promotedProductListenerIOS: This listener is only available on iOS',\n );\n return {remove: () => {}};\n }\n\n let deliveredProductId: string | undefined;\n const deliver = (product: Product) => {\n const productId =\n product.id ?? (product as Product & {productId?: string}).productId;\n if (productId && productId === deliveredProductId) {\n return;\n }\n deliveredProductId = productId;\n listener(product);\n };\n\n const replayPendingProduct = () => {\n let pendingProduct: Promise<Product | null> | undefined;\n try {\n pendingProduct = ExpoIapModule.getPromotedProductIOS() as\n | Promise<Product | null>\n | undefined;\n } catch {\n return Promise.resolve();\n }\n\n if (!pendingProduct || typeof pendingProduct.then !== 'function') {\n return Promise.resolve();\n }\n\n return pendingProduct\n .then((product: Product | null) => {\n if (product) {\n deliver(product);\n }\n })\n .catch(() => {});\n };\n\n const subscription = emitter.addListener(\n OpenIapEvent.PromotedProductIOS,\n (payload) => {\n if (typeof payload === 'string') {\n void replayPendingProduct();\n return;\n }\n\n deliver(payload as Product);\n },\n );\n\n void replayPendingProduct();\n\n return subscription;\n};\n\n/**\n * Android-only listener for User Choice Billing events.\n * This fires when a user selects alternative billing instead of Google Play billing\n * in the User Choice Billing dialog (only in 'user-choice' mode).\n *\n * @param listener - Callback function that receives the external transaction token and product IDs\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = userChoiceBillingListenerAndroid((details) => {\n * console.log('User selected alternative billing');\n * console.log('External transaction token received; send it to your backend without logging it.');\n * console.log('Products:', details.products);\n *\n * // Process payment in your system, then report token to Google\n * await processPaymentAndReportToken(details);\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform Android\n */\nexport const userChoiceBillingListenerAndroid = (\n listener: (details: UserChoiceBillingDetails) => void,\n) => {\n if (Platform.OS !== 'android') {\n ExpoIapConsole.warn(\n 'userChoiceBillingListenerAndroid: This listener is only available on Android',\n );\n return {remove: () => {}};\n }\n return emitter.addListener(OpenIapEvent.UserChoiceBillingAndroid, listener);\n};\n\n/**\n * Android-only listener for Developer Provided Billing events.\n * This fires when a user selects the developer's option in an External Payments\n * or Billing Choice purchase flow.\n *\n * @param listener - Callback that receives selected products and flow details\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = developerProvidedBillingListenerAndroid(async (details) => {\n * await processPaymentWithYourGateway(details.products, details.linkUri);\n * if (details.externalTransactionToken) {\n * await reportExternalTransactionToGoogle(details.externalTransactionToken);\n * }\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform Android (Play Billing Library 8.3.0+; Billing Choice 9.1.0+)\n */\nexport const developerProvidedBillingListenerAndroid = (\n listener: (details: DeveloperProvidedBillingDetailsAndroid) => void,\n) => {\n if (Platform.OS !== 'android') {\n ExpoIapConsole.warn(\n 'developerProvidedBillingListenerAndroid: This listener is only available on Android',\n );\n return {remove: () => {}};\n }\n return emitter.addListener(\n OpenIapEvent.DeveloperProvidedBillingAndroid,\n listener,\n );\n};\n\n/**\n * Listen for subscription billing-issue events (cross-platform).\n *\n * Fires when a user's active subscription enters a state that needs attention\n * for a payment problem. Unifies:\n * - iOS / Mac Catalyst 16.4+ and visionOS 1.0+: StoreKit 2 `Message.Reason.billingIssue`.\n * - Android (Play Billing 8.1+): when `Purchase.isSuspendedAndroid === true`.\n * - Meta Horizon, Amazon, macOS, tvOS, watchOS, and iOS before 16.4: never fires.\n *\n * Recommended UX: call `deepLinkToSubscriptions()` when this fires so the user\n * can update their payment method in the platform subscription center.\n *\n * @example\n * ```typescript\n * const subscription = subscriptionBillingIssueListener((purchase) => {\n * console.warn('Needs attention:', purchase.productId);\n * deepLinkToSubscriptions({\n * skuAndroid: purchase.productId,\n * packageNameAndroid: 'com.example.app',\n * });\n * });\n * ```\n */\nexport const subscriptionBillingIssueListener = (\n listener: (purchase: Purchase) => void,\n) => {\n const wrappedListener = (event: Purchase) => {\n listener(event);\n };\n return emitter.addListener(\n OpenIapEvent.SubscriptionBillingIssue,\n wrappedListener,\n );\n};\n\n/**\n * Initialize the store connection. Must be called before any other IAP API.\n *\n * @param config Optional connection config. Use `enableBillingProgramAndroid` (Android,\n * Play Billing 8.2.0+) to opt into a billing program. For Billing Choice 9.1.0+, set\n * `billingChoiceScreenTypeAndroid` to the renderer configured in Play Console.\n * iOS ignores Android-specific fields.\n * @returns Promise resolving to `true` when the platform billing client is connected.\n * @throws When the platform billing client fails to initialize.\n *\n * @example\n * ```ts\n * await initConnection();\n * await initConnection({ enableBillingProgramAndroid: 'external-offer' });\n * await initConnection({\n * enableBillingProgramAndroid: 'billing-choice',\n * billingChoiceScreenTypeAndroid: 'developer-rendered',\n * });\n * ```\n *\n * @remarks When using `useIAP()`, connection is auto-managed on mount/unmount —\n * pass options to the hook instead of calling this directly.\n *\n * @see {@link https://openiap.dev/docs/apis/init-connection}\n */\nexport const initConnection: MutationField<'initConnection'> = async (\n config,\n) => {\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.initConnection(config ?? null),\n nativePlatform(),\n );\n if (\n result === true &&\n Platform.OS === 'ios' &&\n nonDedupingPurchaseUpdatedListenerCountIOS > 0\n ) {\n configurePurchaseUpdatedListenerOptionsIOS(false);\n }\n return result;\n};\n\n/**\n * Close the store connection and release resources.\n *\n * @see {@link https://openiap.dev/docs/apis/end-connection}\n */\nexport const endConnection: MutationField<'endConnection'> = async () => {\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.endConnection(),\n nativePlatform(),\n );\n if (result === true && Platform.OS === 'ios') {\n resetPurchaseUpdatedDedupeHistoryIOS();\n }\n return result;\n};\n\n/**\n * Retrieve products or subscriptions from the store by SKU.\n *\n * @param request `ProductRequest` — `skus` (string[]) and optional `type`\n * (`'in-app' | 'subs' | 'all'`, defaults to `'in-app'`).\n * @returns Promise resolving to a `FetchProductsResult` union — `Product[]` for `'in-app'`,\n * `ProductSubscription[]` for `'subs'`, or a mixed array for `'all'`.\n * @throws When the store rejects the request (empty `skus`, not connected,\n * network/store error). Unknown SKUs are omitted from the result, not thrown.\n *\n * @example\n * ```ts\n * const products = await fetchProducts({\n * skus: ['com.app.coins_100', 'com.app.premium'],\n * type: 'in-app',\n * });\n * ```\n *\n * @remarks Promise-based, unlike the event-based `request*` APIs such as `requestPurchase`.\n *\n * @see {@link https://openiap.dev/docs/apis/fetch-products}\n */\nexport const fetchProducts: QueryField<'fetchProducts'> = async (request) => {\n ExpoIapConsole.debug('fetchProducts called with:', request);\n const {skus, type} = request ?? {};\n\n if (!Array.isArray(skus) || skus.length === 0) {\n throw createPurchaseError({\n message: 'No SKUs provided',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {canonical, native} = normalizeProductType(\n type as ProductTypeInput | undefined,\n );\n const skuSet = new Set(skus);\n\n const filterIosItems = (\n items: unknown[],\n ): (Product | ProductSubscription)[] =>\n items.filter((item): item is Product | ProductSubscription => {\n if (!isProductIOS(item)) {\n return false;\n }\n const candidate = item as Product | ProductSubscription;\n return typeof candidate.id === 'string' && skuSet.has(candidate.id);\n });\n\n const filterAndroidItems = (\n items: unknown[],\n ): (Product | ProductSubscription)[] =>\n items.filter((item): item is Product | ProductSubscription => {\n if (!isProductAndroid(item)) {\n return false;\n }\n const candidate = item as Product | ProductSubscription;\n return typeof candidate.id === 'string' && skuSet.has(candidate.id);\n });\n\n const castResult = (\n items: (Product | ProductSubscription)[],\n ):\n | (Product | ProductSubscription)[]\n | Product[]\n | ProductSubscription[]\n | null => {\n if (canonical === 'in-app') {\n return items as Product[];\n }\n if (canonical === 'subs') {\n return items as ProductSubscription[];\n }\n // 'all' mixes products and subscriptions; returned as-is to keep the discriminated union.\n return items;\n };\n\n if (Platform.OS === 'ios') {\n const rawItems = await invokeNativeWithPurchaseError<unknown[]>(\n () => ExpoIapModule.fetchProducts({skus, type: native}),\n 'ios',\n {\n code: ErrorCode.QueryProduct,\n message: 'Failed to query products',\n productIds: skus,\n productType: canonical,\n },\n );\n return castResult(filterIosItems(rawItems));\n }\n\n if (isAndroidStoreRuntime()) {\n const rawItems = await invokeNativeWithPurchaseError<unknown[]>(\n () => ExpoIapModule.fetchProducts(native, skus),\n 'android',\n {\n code: ErrorCode.QueryProduct,\n message: 'Failed to query products',\n productIds: skus,\n productType: canonical,\n },\n );\n return castResult(filterAndroidItems(rawItems));\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * List the user's unfinished purchases: non-consumables, active subscriptions,\n * and pending transactions.\n *\n * @param options Optional `PurchaseOptions`. iOS-only flags:\n * `alsoPublishToEventListenerIOS`, `onlyIncludeActiveItemsIOS`.\n * @returns Promise resolving to an array of `Purchase` currently held by the store.\n * @throws When the platform query fails.\n *\n * @example\n * ```ts\n * const purchases = await getAvailablePurchases();\n * for (const p of purchases) {\n * if (await verifyOnServer(p)) await finishTransaction({ purchase: p, isConsumable: false });\n * }\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/get-available-purchases}\n */\nexport const getAvailablePurchases: QueryField<\n 'getAvailablePurchases'\n> = async (options) => {\n const normalizedOptions = {\n alsoPublishToEventListenerIOS:\n options?.alsoPublishToEventListenerIOS ?? false,\n onlyIncludeActiveItemsIOS: options?.onlyIncludeActiveItemsIOS ?? true,\n includeSuspendedAndroid: options?.includeSuspendedAndroid ?? false,\n } satisfies PurchaseOptions;\n\n if (isVegaOS()) {\n const purchases = await ExpoIapModule.getAvailableItems(normalizedOptions);\n return decodeAndroidPurchases(purchases);\n }\n\n let purchases: Purchase[];\n\n if (Platform.OS === 'ios') {\n purchases = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.getAvailableItems(\n normalizedOptions.alsoPublishToEventListenerIOS,\n normalizedOptions.onlyIncludeActiveItemsIOS,\n ),\n 'ios',\n )) as Purchase[];\n } else if (Platform.OS === 'android') {\n purchases = (await invokeNativeWithPurchaseError(\n () => ExpoIapModule.getAvailableItems(normalizedOptions),\n 'android',\n )) as Purchase[];\n } else {\n throw unsupportedPlatformError();\n }\n\n return Platform.OS === 'ios'\n ? decodeApplePurchases(purchases)\n : decodeAndroidPurchases(purchases);\n};\n\n/**\n * Get all active subscriptions. On iOS each entry carries `renewalInfoIOS`\n * (e.g. pendingUpgradeProductId, willAutoRenew, autoRenewPreference); on\n * Android they are filtered from the available purchases.\n *\n * @param subscriptionIds - Optional array of subscription product IDs to filter. If not provided, returns all active subscriptions.\n * @returns Promise resolving to array of active subscriptions with details\n *\n * @example\n * ```typescript\n * // Get all active subscriptions\n * const subs = await getActiveSubscriptions();\n *\n * // Get specific subscriptions\n * const premiumSubs = await getActiveSubscriptions(['premium', 'premium_year']);\n *\n * // Check for pending upgrades (iOS)\n * subs.forEach(sub => {\n * if (sub.renewalInfoIOS?.pendingUpgradeProductId) {\n * console.log(`Upgrade pending to: ${sub.renewalInfoIOS.pendingUpgradeProductId}`);\n * }\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/get-active-subscriptions}\n */\nexport const getActiveSubscriptions: QueryField<\n 'getActiveSubscriptions'\n> = async (subscriptionIds) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.getActiveSubscriptions(subscriptionIds ?? null),\n nativePlatform(),\n );\n return (result ?? []) as ActiveSubscription[];\n};\n\n/**\n * Check if user has any active subscriptions.\n *\n * @param subscriptionIds - Optional array of subscription product IDs to check. If not provided, checks all subscriptions.\n * @returns Promise resolving to true if user has at least one active subscription\n *\n * @example\n * ```typescript\n * // Check any active subscription\n * const hasAny = await hasActiveSubscriptions();\n *\n * // Check specific subscriptions\n * const hasPremium = await hasActiveSubscriptions(['premium', 'premium_year']);\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/has-active-subscriptions}\n */\nexport const hasActiveSubscriptions: QueryField<\n 'hasActiveSubscriptions'\n> = async (subscriptionIds) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n return !!(await invokeNativeWithPurchaseError(\n () => ExpoIapModule.hasActiveSubscriptions(subscriptionIds ?? null),\n nativePlatform(),\n ));\n};\n\n/**\n * Return the user's storefront country code.\n *\n * @see {@link https://openiap.dev/docs/apis/get-storefront}\n */\nexport const getStorefront: QueryField<'getStorefront'> = async () => {\n if (Platform.OS !== 'ios' && !isAndroidStoreRuntime()) {\n throw createPurchaseError({\n code: ErrorCode.FeatureNotSupported,\n message: `Storefront lookup is not supported on ${Platform.OS}.`,\n });\n }\n\n const platform = nativePlatform();\n if (typeof ExpoIapModule.getStorefront !== 'function') {\n throw createPurchaseError({\n code: ErrorCode.FeatureNotSupported,\n message: 'Native getStorefront is not available on this build.',\n platform,\n });\n }\n\n let storefront: unknown;\n try {\n storefront = await ExpoIapModule.getStorefront();\n } catch (error) {\n throw createPurchaseErrorFromNativeException(error, platform, {\n code: ErrorCode.ServiceError,\n message: 'Failed to get storefront.',\n debugMessage: error instanceof Error ? error.message : String(error),\n });\n }\n\n if (typeof storefront !== 'string' || storefront.trim().length === 0) {\n throw createPurchaseError({\n code: ErrorCode.ServiceError,\n message: 'Storefront lookup returned no country code.',\n platform,\n });\n }\n return storefront;\n};\n\nfunction normalizeRequestProps(\n request: RequestPurchasePropsByPlatforms,\n platform: 'ios',\n): RequestPurchaseIosProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestPurchasePropsByPlatforms,\n platform: 'android',\n): RequestPurchaseAndroidProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestSubscriptionPropsByPlatforms,\n platform: 'ios',\n): RequestSubscriptionIosProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestSubscriptionPropsByPlatforms,\n platform: 'android',\n): RequestSubscriptionAndroidProps | null | undefined;\nfunction normalizeRequestProps(\n request:\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms,\n platform: 'ios' | 'android',\n) {\n if (platform === 'ios') {\n return request.apple;\n }\n return request.google;\n}\n\nfunction validateAndroidPurchaseBranchOptions(\n request: unknown,\n type: ProductQueryType,\n): void {\n if (request == null || typeof request !== 'object') return;\n const fields = request as Record<string, unknown>;\n const subscriptionOnlyFields = [\n 'subscriptionOffers',\n 'subscriptionProductReplacementParams',\n 'purchaseToken',\n 'originalExternalTransactionId',\n ];\n if (\n (type === 'in-app' &&\n subscriptionOnlyFields.some((field) => fields[field] != null)) ||\n (type === 'subs' && fields.offerToken != null)\n ) {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message:\n 'Invalid request for Android. Purchase options must match the selected product type.',\n });\n }\n}\n\n/** Verify app acquisition; send Android integrity tokens to your backend. */\nexport const verifyAppOwnership: QueryField<'verifyAppOwnership'> = async (\n options,\n) => {\n if (\n isVegaOS() ||\n ExpoIapModule.USING_ONSIDE_SDK ||\n (Platform.OS !== 'ios' && Platform.OS !== 'android')\n ) {\n return {\n status: 'unknown',\n reason: 'unsupported',\n storeId: isVegaOS()\n ? 'amazon'\n : ExpoIapModule.USING_ONSIDE_SDK\n ? 'onside'\n : 'unknown',\n };\n }\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyAppOwnership(options ?? {}),\n nativePlatform(),\n {\n code: ErrorCode.ServiceError,\n },\n );\n};\n\n/**\n * Initiate a purchase or subscription flow. The result arrives through\n * `purchaseUpdatedListener` / `purchaseErrorListener` (or `useIAP`'s\n * `onPurchaseSuccess` / `onPurchaseError`), not the return value.\n *\n * @param args `RequestPurchaseProps`, discriminated by `type`:\n * - `type: 'in-app'` — pass `request.apple.sku` (iOS) and/or `request.google.skus` (Android).\n * - `type: 'subs'` — same shape, plus `request.google.subscriptionOffers: [{ sku, offerToken }]`.\n * @returns The dispatched purchase payload; do not rely on it for the outcome.\n * @throws Synchronous rejection from the store (e.g. `ErrorCode.NotPrepared`, validation failure).\n *\n * @example\n * ```ts\n * await requestPurchase({\n * request: {\n * apple: { sku: 'com.app.premium' },\n * google: { skus: ['com.app.premium'] },\n * },\n * type: 'in-app',\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/request-purchase}\n */\nexport const requestPurchase: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const {request} = args;\n markRequested([request.apple?.sku, ...(request.google?.skus ?? [])]);\n try {\n return await requestPurchaseFromStore(args);\n } catch (error) {\n clearRequested();\n throw error;\n }\n};\n\nconst requestPurchaseFromStore: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const {request, type} = args;\n const {canonical, native} = normalizeProductType(type as ProductTypeInput);\n if (canonical === 'all') {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message: 'Product type all is only supported for product queries.',\n });\n }\n const isInAppPurchase = canonical === 'in-app';\n\n if (Platform.OS === 'ios') {\n const normalizedRequest = normalizeRequestProps(request, 'ios');\n\n if (!normalizedRequest?.sku) {\n throw createPurchaseError({\n message:\n 'Invalid request for Apple. The `sku` property is required and must be a string.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"product_id\" },\\n' +\n ' google: { skus: [\"product_id\"] }\\n' +\n ' },\\n' +\n ' type: \"in-app\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n if (canonical !== 'in-app' && canonical !== 'subs') {\n throw new Error(`Unsupported product type: ${canonical}`);\n }\n\n const payload: MutationRequestPurchaseArgs = {\n type: canonical === 'in-app' ? 'in-app' : 'subs',\n request: {apple: normalizedRequest},\n };\n\n const purchase = (await invokeNativeWithPurchaseError(\n () => ExpoIapModule.requestPurchase(payload),\n 'ios',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: normalizedRequest.sku,\n productIds: [normalizedRequest.sku],\n productType: canonical,\n },\n )) as Purchase | Purchase[] | null;\n\n if (Array.isArray(purchase)) {\n return purchase;\n }\n\n if (purchase) {\n return purchase;\n }\n\n return canonical === 'subs' ? [] : null;\n }\n\n if (isAndroidStoreRuntime()) {\n validateAndroidPurchaseBranchOptions(\n (\n request as\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms\n )?.google,\n canonical,\n );\n if (isInAppPurchase) {\n const normalizedRequest = normalizeRequestProps(\n request as RequestPurchasePropsByPlatforms,\n 'android',\n ) as RequestPurchaseAndroidProps | null | undefined;\n\n if (!normalizedRequest?.skus?.length) {\n throw createPurchaseError({\n message:\n 'Invalid request for Google. The `skus` property is required and must be a non-empty array.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"product_id\" },\\n' +\n ' google: { skus: [\"product_id\"] }\\n' +\n ' },\\n' +\n ' type: \"in-app\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {\n skus,\n obfuscatedAccountId,\n obfuscatedProfileId,\n isOfferPersonalized,\n offerToken,\n developerBillingOption,\n } = normalizedRequest;\n\n const result = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.requestPurchase({\n type: native,\n skus,\n purchaseToken: undefined,\n obfuscatedAccountId: obfuscatedAccountId,\n obfuscatedProfileId: obfuscatedProfileId,\n offerToken: offerToken,\n developerBillingOption: developerBillingOption ?? undefined,\n isOfferPersonalized: isOfferPersonalized ?? false,\n }),\n 'android',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: skus[0],\n productIds: skus,\n productType: canonical,\n },\n )) as Purchase[];\n\n return result;\n }\n\n if (canonical === 'subs') {\n const normalizedRequest = normalizeRequestProps(\n request as RequestSubscriptionPropsByPlatforms,\n 'android',\n ) as RequestSubscriptionAndroidProps | null | undefined;\n\n if (!normalizedRequest?.skus?.length) {\n throw createPurchaseError({\n message:\n 'Invalid request for Google. The `skus` property is required and must be a non-empty array.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"subscription_id\" },\\n' +\n ' google: { skus: [\"subscription_id\"] }\\n' +\n ' },\\n' +\n ' type: \"subs\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {\n skus,\n obfuscatedAccountId,\n obfuscatedProfileId,\n isOfferPersonalized,\n subscriptionOffers,\n purchaseToken: purchaseTokenInput,\n originalExternalTransactionId,\n developerBillingOption,\n subscriptionProductReplacementParams,\n } = normalizedRequest;\n\n const normalizedOffers = subscriptionOffers ?? [];\n const purchaseToken = purchaseTokenInput ?? undefined;\n\n const result = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.requestPurchase({\n type: native,\n skus,\n purchaseToken,\n originalExternalTransactionId:\n originalExternalTransactionId ?? undefined,\n obfuscatedAccountId: obfuscatedAccountId,\n obfuscatedProfileId: obfuscatedProfileId,\n subscriptionOffers: normalizedOffers,\n isOfferPersonalized: isOfferPersonalized ?? false,\n developerBillingOption: developerBillingOption ?? undefined,\n subscriptionProductReplacementParams:\n subscriptionProductReplacementParams ?? undefined,\n }),\n 'android',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: skus[0],\n productIds: skus,\n productType: canonical,\n },\n )) as Purchase[];\n\n return result;\n }\n\n throw new Error(\n \"Invalid request for Android: Expected a valid request object with 'skus' array.\",\n );\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * Complete a purchase transaction. Call after server-side verification to remove it\n * from the queue.\n *\n * @param args.purchase The `Purchase` to finalize.\n * @param args.isConsumable `true` for consumables (consumes the token so the SKU can be\n * re-bought, e.g. coins); `false` (default) for non-consumables and subscriptions.\n * @returns Promise that resolves once the platform finalizes the transaction.\n * @throws When the platform finalize call fails.\n *\n * @example\n * ```ts\n * // Inside purchaseUpdatedListener:\n * if (await verifyOnServer(purchase)) {\n * await finishTransaction({ purchase, isConsumable: false });\n * }\n * ```\n *\n * @remarks Android purchases must be finalized within 3 days or Google\n * auto-refunds. iOS unfinished transactions replay on every app launch.\n *\n * @see {@link https://openiap.dev/docs/apis/finish-transaction}\n */\nexport const finishTransaction: MutationField<'finishTransaction'> = async ({\n purchase,\n isConsumable,\n}) => {\n // The schema allows explicit null; the native boolean cannot take it.\n const consumable = isConsumable ?? false;\n const platform = nativePlatform();\n if (\n Platform.OS === 'ios' ||\n (isAndroidStoreRuntime() && purchase.store === 'unknown')\n ) {\n await invokeNativeWithPurchaseError(\n () => ExpoIapModule.finishTransaction(purchase, consumable),\n platform,\n {productId: purchase.productId},\n );\n } else if (isAndroidStoreRuntime()) {\n const token = purchase.purchaseToken ?? undefined;\n\n if (!token) {\n throw createPurchaseError({\n message: 'Purchase token is required to finish transaction',\n code: ErrorCode.DeveloperError,\n productId: purchase.productId,\n platform: 'android',\n });\n }\n\n // Native rejects when the store refuses the token, so a failure cannot pass as finished.\n await invokeNativeWithPurchaseError(\n () =>\n consumable\n ? ExpoIapModule.consumePurchaseAndroid(token)\n : ExpoIapModule.acknowledgePurchaseAndroid(token),\n 'android',\n {productId: purchase.productId},\n );\n } else {\n throw unsupportedPlatformError();\n }\n\n showFirstPurchaseNotice(purchase);\n};\n\n/**\n * Restore completed transactions. Returns nothing; read the restored items with\n * `getAvailablePurchases` or from hook state.\n *\n * - iOS: sync (or Onside restore when OnsideKit is active), then fetch available purchases.\n * - Android: run the provider's restore, then fetch available purchases.\n *\n * @see {@link https://openiap.dev/docs/apis/restore-purchases}\n */\nexport const restorePurchases: MutationField<'restorePurchases'> = async () => {\n await restorePurchasesNative();\n\n await getAvailablePurchases({\n alsoPublishToEventListenerIOS: false,\n onlyIncludeActiveItemsIOS: true,\n });\n};\n\n/**\n * Deeplinks to native interface that allows users to manage their subscriptions\n * @param options.skuAndroid - Required for Android to locate specific subscription (ignored on iOS)\n * @param options.packageNameAndroid - Required for Android to identify your app (ignored on iOS)\n *\n * @returns Promise that resolves when the deep link is successfully opened\n *\n * @throws {Error} When called on unsupported platform or when required Android parameters are missing\n *\n * @example\n * import { deepLinkToSubscriptions } from 'expo-iap';\n *\n * // Works on both iOS and Android\n * await deepLinkToSubscriptions({\n * skuAndroid: 'your_subscription_sku',\n * packageNameAndroid: 'com.example.app'\n * });\n *\n * @see {@link https://openiap.dev/docs/apis/deep-link-to-subscriptions}\n */\nexport const deepLinkToSubscriptions: MutationField<\n 'deepLinkToSubscriptions'\n> = async (options) => {\n if (Platform.OS === 'ios') {\n await deepLinkToSubscriptionsIOS();\n return;\n }\n\n if (Platform.OS === 'android') {\n await deepLinkToSubscriptionsAndroid((options as DeepLinkOptions) ?? null);\n return;\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * Open the platform's offer/promo code redemption flow.\n *\n * Resolves the redeemed purchase only when the store reports it synchronously;\n * every other path resolves null, so reconcile with `getAvailablePurchases`\n * when the app resumes.\n *\n * @returns Promise resolving to the redeemed purchase, or null\n * @throws Error when a redemption flow exists but cannot be opened\n *\n * @see {@link https://openiap.dev/docs/apis/open-redeem-offer-code}\n */\nexport const openRedeemOfferCode: MutationField<\n 'openRedeemOfferCode'\n> = async () => {\n if (isVegaOS()) return null;\n if (Platform.OS !== 'ios' && !isAndroidStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.openRedeemOfferCode(),\n nativePlatform(),\n {code: ErrorCode.PurchaseError, message: 'Failed to redeem offer code.'},\n );\n};\n\n/**\n * Verify purchase with the configured providers.\n *\n * @param options - Receipt validation options containing the SKU\n * @returns Promise resolving to receipt validation result\n *\n * @see {@link https://openiap.dev/docs/features/validation#verify-purchase}\n */\nexport const verifyPurchase: MutationField<'verifyPurchase'> = async (\n options,\n) => {\n if (!isStorePlatform()) {\n throw unsupportedPlatformError();\n }\n\n // The native result is already the flat union member, with `__typename`.\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyPurchase(options),\n nativePlatform(),\n );\n};\n\n/**\n * Verify purchase with a specific provider (e.g., IAPKit).\n *\n * @param options - Verification options including provider and credentials\n * @returns Promise resolving to provider-specific verification result\n *\n * @example\n * ```typescript\n * const result = await verifyPurchaseWithProvider({\n * provider: 'iapkit',\n * iapkit: {\n * apiKey: 'your-api-key',\n * // Choose exactly one store payload.\n * // apple: { jws: purchase.purchaseToken },\n * // google: { purchaseToken: purchase.purchaseToken },\n * amazon: {\n * expectedProductId: purchase.productId,\n * userId: amazonUserId,\n * receiptId: purchase.purchaseToken,\n * // Enable only for App Tester after the IAPKit project opt-in.\n * sandbox: amazonSandboxEnabled,\n * }\n * }\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/features/validation#verify-purchase-with-provider}\n */\nexport const verifyPurchaseWithProvider: MutationField<\n 'verifyPurchaseWithProvider'\n> = async (options) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n let resolvedOptions = options;\n\n if (\n resolvedOptions.provider === 'iapkit' &&\n resolvedOptions.iapkit &&\n !resolvedOptions.iapkit.apiKey\n ) {\n let configApiKey: unknown;\n try {\n // Dynamically import expo-constants to avoid hard dependency\n const {default: Constants} = await import('expo-constants');\n configApiKey = Constants.expoConfig?.extra?.iapkitApiKey;\n } catch (error) {\n throw new Error(\n 'Could not read iapkitApiKey from expo-constants. Install it with ' +\n '`npx expo install expo-constants`, or pass apiKey in ' +\n 'verifyPurchaseWithProvider options.',\n {cause: error},\n );\n }\n if (typeof configApiKey === 'string' && configApiKey.length > 0) {\n resolvedOptions = {\n ...resolvedOptions,\n iapkit: {\n ...resolvedOptions.iapkit,\n apiKey: configApiKey,\n },\n };\n }\n }\n\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyPurchaseWithProvider(resolvedOptions),\n nativePlatform(),\n );\n if (result.iapkit == null) {\n return result;\n }\n\n const {clientPayload, productId, ...iapkit} = result.iapkit;\n return {\n ...result,\n iapkit: {\n ...iapkit,\n storeId: resolveStoreId(iapkit.storeId, iapkit.store),\n ...(clientPayload == null ? {} : {clientPayload}),\n ...(productId == null ? {} : {productId}),\n },\n };\n};\n\nexport type {SdkPurchaseFlowOptions} from './utils/purchaseFlowBinding';\n\nconst purchaseFlowSdk: PurchaseFlowSdk = {\n finishTransaction: (args) => finishTransaction(args),\n getAvailablePurchases: () => getAvailablePurchases(),\n getPendingTransactionsIOS:\n Platform.OS === 'ios' ? () => getPendingTransactionsIOS() : undefined,\n purchaseUpdatedListener: (listener) =>\n purchaseUpdatedListener(listener, {dedupeTransactionIOS: false}),\n purchaseErrorListener: (listener) => purchaseErrorListener(listener),\n};\n\n/**\n * Creates the app's purchase flow. It confirms and finishes every purchase the\n * store delivers, and recovers unfinished ones, through this SDK. Create one\n * per signed-in account, dispose it when the account changes, and pass it to\n * `useIAP({purchaseFlow})`.\n * @see {@link https://kit.openiap.dev/docs/purchase-flow}\n */\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase>;\nexport function createPurchaseFlow<P extends PurchaseFlowPurchase>(\n options: PurchaseFlowOptions<P>,\n): PurchaseFlow<P>;\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase> {\n return createSdkPurchaseFlow(purchaseFlowSdk, options);\n}\n\n/**\n * Confirms purchases with IAPKit from the app, for apps without a backend:\n * pass it as `confirmWithBackend` with a publishable key. Credit consumables\n * in `grant`, which runs before the purchase is consumed.\n */\nexport function confirmWithIapkit(\n options: IapkitConfirmationOptions<Purchase>,\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createIapkitConfirmation(verifyPurchaseWithProvider, options);\n}\n\n/**\n * Confirms App Store purchases on the device, for apps with neither a backend\n * nor IAPKit: StoreKit must still list the transaction as unfinished and\n * valid. Credit consumables in `grant`.\n */\nexport function confirmOnDeviceIOS(\n options: {\n /** Required for consumables; credit each purchase.id only once. */\n grant?: (\n purchase: Purchase,\n context: {isConsumable: boolean},\n ) => Promise<void>;\n } = {},\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createDeviceConfirmationIOS<Purchase>(\n () => getPendingTransactionsIOS(),\n options,\n );\n}\n\nexport * from './useIAP';\nexport {kitApi, KitApiError, resolveLocalizedPayload} from './kit-api';\nexport type {\n KitApiOptions,\n KitClientPayloadCache,\n KitClientPayloadOptions,\n KitClientPayloadResponse,\n KitLocalizedClientPayload,\n KitLocalizedClientPayloadOptions,\n KitLocalizedPayloadOptions,\n KitProduct,\n KitProductClientPayload,\n KitProductOffer,\n KitProductPlatform,\n KitProductsOptions,\n KitProductsResponse,\n KitSubscription,\n EntitlementsResponse,\n StatusResponse,\n} from './kit-api';\nexport {\n describePurchaseFlowStatus,\n toPurchaseConfirmationRequest,\n} from './purchase-flow-core';\nexport type {\n PurchaseConfirmation,\n PurchaseConfirmationRequest,\n PurchaseFlow,\n PurchaseFlowGuidance,\n PurchaseFlowGuidanceKey,\n PurchaseFlowOptions,\n PurchaseFlowOutcome,\n PurchaseFlowPurchase,\n PurchaseFlowStatus,\n RecoverPurchasesOptions,\n} from './purchase-flow-core';\nexport type {IapkitConfirmationOptions} from './purchase-flow-confirmers';\nexport {\n ErrorCodeUtils,\n ErrorCodeMapping,\n createPurchaseError,\n createPurchaseErrorFromPlatform,\n getUserFriendlyErrorMessage,\n isUserCancelledError,\n} from './utils/errorMapping';\nexport type {\n PurchaseError as ExpoPurchaseError,\n PurchaseErrorProps,\n} from './utils/errorMapping';\nexport {ExpoIapConsole} from './utils/debug';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// External dependencies\nimport {Platform} from 'react-native';\n\n// Internal modules\nimport ExpoIapModule, {getNativeModule} from './ExpoIapModule';\nimport {isVegaOS} from './vega';\nimport {\n deepLinkToSubscriptionsIOS,\n getPendingTransactionsIOS,\n isProductIOS,\n} from './modules/ios';\nimport {\n type PurchaseFlow,\n type PurchaseFlowOptions,\n type PurchaseFlowPurchase,\n} from './purchase-flow-core';\nimport {\n createDeviceConfirmationIOS,\n createIapkitConfirmation,\n type IapkitConfirmationOptions,\n} from './purchase-flow-confirmers';\nimport {\n clearRequested,\n createSdkPurchaseFlow,\n markRequested,\n type PurchaseFlowSdk,\n type SdkPurchaseFlowOptions,\n} from './utils/purchaseFlowBinding';\nimport {\n isProductAndroid,\n deepLinkToSubscriptionsAndroid,\n} from './modules/android';\nimport {ExpoIapConsole} from './utils/debug';\nimport {showFirstPurchaseNotice} from './utils/firstPurchaseNotice';\nimport {restorePurchasesNative} from './utils/restorePurchases';\nimport {\n decodeAndroidPurchases,\n decodeApplePurchases,\n} from './utils/availablePurchases';\n\n// Types\nimport type {\n ActiveSubscription,\n DeepLinkOptions,\n DeveloperProvidedBillingDetailsAndroid,\n IapPlatform,\n MutationField,\n MutationRequestPurchaseArgs,\n Product,\n ProductQueryType,\n ProductSubscription,\n Purchase,\n PurchaseOptions,\n PurchaseUpdatedListenerOptions,\n QueryField,\n RequestPurchasePropsByPlatforms,\n RequestPurchaseAndroidProps,\n RequestPurchaseIosProps,\n RequestSubscriptionPropsByPlatforms,\n RequestSubscriptionAndroidProps,\n RequestSubscriptionIosProps,\n UserChoiceBillingDetails,\n} from './types';\nimport {ErrorCode, resolveStoreId} from './types';\nimport {\n createPurchaseError,\n normalizeErrorCodeFromNative,\n type PurchaseError,\n} from './utils/errorMapping';\nimport {\n createPurchaseErrorFromNativeException,\n invokeNativeWithPurchaseError,\n} from './utils/nativeError';\n\nexport * from './types';\nexport * from './modules/android';\nexport * from './modules/ios';\nexport * from './onside';\nexport * from './vega';\n\nexport enum OpenIapEvent {\n PurchaseUpdated = 'purchase-updated',\n PurchaseError = 'purchase-error',\n PromotedProductIOS = 'promoted-product-ios',\n UserChoiceBillingAndroid = 'user-choice-billing-android',\n /**\n * Fired for External Payments (8.3.0+) and Billing Choice (9.1.0+)\n * developer billing flows. Nullable fields depend on the selected flow.\n */\n DeveloperProvidedBillingAndroid = 'developer-provided-billing-android',\n /** Fired when a subscription enters a billing-issue state; see `subscriptionBillingIssueListener`. */\n SubscriptionBillingIssue = 'subscription-billing-issue',\n}\n\ntype ExpoIapEventPayloads = {\n [OpenIapEvent.PurchaseUpdated]: Purchase;\n [OpenIapEvent.PurchaseError]: PurchaseError;\n [OpenIapEvent.PromotedProductIOS]:\n | Product\n | string\n | {id?: string; productId?: string};\n [OpenIapEvent.UserChoiceBillingAndroid]: UserChoiceBillingDetails;\n [OpenIapEvent.DeveloperProvidedBillingAndroid]: DeveloperProvidedBillingDetailsAndroid;\n [OpenIapEvent.SubscriptionBillingIssue]: Purchase;\n};\n\ntype ExpoIapEventListener<E extends OpenIapEvent> = (\n payload: ExpoIapEventPayloads[E],\n) => void;\n\ntype ExpoIapEmitter = {\n addListener<E extends OpenIapEvent>(\n eventName: E,\n listener: ExpoIapEventListener<E>,\n ): {remove: () => void};\n removeListener<E extends OpenIapEvent>(\n eventName: E,\n listener: ExpoIapEventListener<E>,\n ): void;\n};\n\nconst isStorePlatform = (): boolean =>\n Platform.OS === 'ios' || Platform.OS === 'android';\n\nconst isStoreRuntime = (): boolean =>\n Platform.OS === 'ios' || isAndroidStoreRuntime();\n\nconst unsupportedPlatformError = (): Error =>\n new Error(`Unsupported platform: ${Platform.OS}`);\n\n// Platform tag for PurchaseErrors built from native rejections.\nconst nativePlatform = (): IapPlatform =>\n Platform.OS === 'ios' ? 'ios' : 'android';\n\n// Listener calls go to the raw native module (see getNativeModule), resolved\n// lazily so importing this module doesn't throw on unsupported platforms.\nexport const emitter: ExpoIapEmitter = {\n addListener(eventName, listener) {\n const nativeModule = getNativeModule();\n const nativeSubscription = nativeModule.addListener(eventName, listener);\n let removed = false;\n\n return {\n remove: () => {\n if (removed) {\n return;\n }\n removed = true;\n\n if (typeof nativeSubscription?.remove === 'function') {\n nativeSubscription.remove();\n return;\n }\n\n nativeModule.removeListener?.(eventName, listener);\n },\n };\n },\n removeListener(eventName, listener) {\n return getNativeModule().removeListener?.(eventName, listener);\n },\n};\n\nlet nonDedupingPurchaseUpdatedListenerCountIOS = 0;\nconst purchaseUpdatedDedupeHistoryLimitIOS = 512;\nconst purchaseUpdatedDedupeHistoryIOS = {\n ids: new Set<string>(),\n order: [] as string[],\n start: 0,\n};\nlet purchaseUpdatedDedupeGenerationIOS = 0;\n\ntype PurchaseUpdatedDedupeHistoryIOS = {\n ids: Set<string>;\n order: string[];\n start: number;\n};\n\nconst purchaseUpdatedTransactionIdIOS = (purchase: Purchase) => {\n if (typeof purchase.id === 'string' && purchase.id.length > 0) {\n return purchase.id;\n }\n return null;\n};\n\nconst rememberPurchaseUpdatedTransactionIOS = (\n transactionId: string,\n history: PurchaseUpdatedDedupeHistoryIOS,\n) => {\n if (history.ids.has(transactionId)) {\n return;\n }\n\n history.ids.add(transactionId);\n history.order.push(transactionId);\n if (\n history.order.length - history.start >\n purchaseUpdatedDedupeHistoryLimitIOS\n ) {\n const evicted = history.order[history.start];\n history.start += 1;\n if (evicted != null) {\n history.ids.delete(evicted);\n }\n if (history.start > 128 && history.start * 2 > history.order.length) {\n history.order = history.order.slice(history.start);\n history.start = 0;\n }\n }\n};\n\nconst clearPurchaseUpdatedDedupeHistoryIOS = (\n history: PurchaseUpdatedDedupeHistoryIOS,\n) => {\n history.ids.clear();\n history.order.length = 0;\n history.start = 0;\n};\n\nconst resetPurchaseUpdatedDedupeHistoryIOS = () => {\n clearPurchaseUpdatedDedupeHistoryIOS(purchaseUpdatedDedupeHistoryIOS);\n purchaseUpdatedDedupeGenerationIOS += 1;\n};\n\nconst configurePurchaseUpdatedListenerOptionsIOS = (\n dedupeTransactionIOS: boolean,\n) => {\n if (Platform.OS !== 'ios') return;\n\n const promise = getNativeModule().setPurchaseUpdatedListenerOptions?.({\n dedupeTransactionIOS,\n });\n void promise?.catch((error: unknown) => {\n ExpoIapConsole.warn(\n 'Failed to configure purchase updated listener options:',\n error,\n );\n });\n};\n\nexport type ProductTypeInput = ProductQueryType;\n\nconst normalizeProductType = (type?: ProductTypeInput) => {\n if (!type || type === 'in-app') {\n return {\n canonical: 'in-app' as ProductQueryType,\n native: 'in-app' as const,\n };\n }\n if (type === 'subs') {\n return {\n canonical: 'subs' as ProductQueryType,\n native: 'subs' as const,\n };\n }\n if (type === 'all') {\n return {\n canonical: 'all' as ProductQueryType,\n native: 'all' as const,\n };\n }\n throw new Error(`Unsupported product type: ${type}`);\n};\n\nconst isAndroidStoreRuntime = (): boolean => {\n return Platform.OS === 'android' || isVegaOS();\n};\n\nexport const purchaseUpdatedListener = (\n listener: (event: Purchase) => void,\n options?: PurchaseUpdatedListenerOptions | null,\n) => {\n const receiveDuplicateTransactionUpdatesIOS =\n Platform.OS === 'ios' && options?.dedupeTransactionIOS === false;\n const listenerDedupeHistoryIOS: PurchaseUpdatedDedupeHistoryIOS = {\n ids: new Set(purchaseUpdatedDedupeHistoryIOS.ids),\n order: purchaseUpdatedDedupeHistoryIOS.order.slice(\n purchaseUpdatedDedupeHistoryIOS.start,\n ),\n start: 0,\n };\n let listenerDedupeGenerationIOS = purchaseUpdatedDedupeGenerationIOS;\n\n const wrappedListener = (event: Purchase) => {\n const normalized = event;\n if (Platform.OS === 'ios') {\n if (listenerDedupeGenerationIOS !== purchaseUpdatedDedupeGenerationIOS) {\n clearPurchaseUpdatedDedupeHistoryIOS(listenerDedupeHistoryIOS);\n listenerDedupeGenerationIOS = purchaseUpdatedDedupeGenerationIOS;\n }\n const transactionId = purchaseUpdatedTransactionIdIOS(normalized);\n if (transactionId != null) {\n const isDuplicateForListener =\n listenerDedupeHistoryIOS.ids.has(transactionId);\n rememberPurchaseUpdatedTransactionIOS(\n transactionId,\n listenerDedupeHistoryIOS,\n );\n rememberPurchaseUpdatedTransactionIOS(\n transactionId,\n purchaseUpdatedDedupeHistoryIOS,\n );\n if (!receiveDuplicateTransactionUpdatesIOS && isDuplicateForListener) {\n return;\n }\n }\n }\n listener(normalized);\n };\n const emitterSubscription = emitter.addListener(\n OpenIapEvent.PurchaseUpdated,\n wrappedListener,\n );\n\n if (!receiveDuplicateTransactionUpdatesIOS) {\n return emitterSubscription;\n }\n\n nonDedupingPurchaseUpdatedListenerCountIOS += 1;\n configurePurchaseUpdatedListenerOptionsIOS(false);\n let removed = false;\n\n return {\n remove: () => {\n if (removed) {\n return;\n }\n removed = true;\n try {\n emitterSubscription?.remove?.();\n } finally {\n nonDedupingPurchaseUpdatedListenerCountIOS = Math.max(\n 0,\n nonDedupingPurchaseUpdatedListenerCountIOS - 1,\n );\n configurePurchaseUpdatedListenerOptionsIOS(\n nonDedupingPurchaseUpdatedListenerCountIOS === 0,\n );\n }\n },\n };\n};\n\nexport const purchaseErrorListener = (\n listener: (error: PurchaseError) => void,\n) => {\n // Native events may carry codes outside ErrorCode; deliver canonical codes.\n const wrappedListener = (error: PurchaseError) => {\n listener({...error, code: normalizeErrorCodeFromNative(error.code)});\n };\n const emitterSubscription = emitter.addListener(\n OpenIapEvent.PurchaseError,\n wrappedListener,\n );\n return emitterSubscription;\n};\n\n/**\n * iOS-only listener for App Store promoted product events.\n * This fires when a user taps on a promoted product in the App Store.\n *\n * @param listener - Callback function that receives the promoted product details\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = promotedProductListenerIOS((product) => {\n * console.log('Promoted product:', product);\n * // Handle the promoted product\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform iOS\n */\nexport const promotedProductListenerIOS = (\n listener: (product: Product) => void,\n) => {\n if (Platform.OS !== 'ios') {\n ExpoIapConsole.warn(\n 'promotedProductListenerIOS: This listener is only available on iOS',\n );\n return {remove: () => {}};\n }\n\n let deliveredProductId: string | undefined;\n const deliver = (product: Product) => {\n const productId =\n product.id ?? (product as Product & {productId?: string}).productId;\n if (productId && productId === deliveredProductId) {\n return;\n }\n deliveredProductId = productId;\n listener(product);\n };\n\n const replayPendingProduct = () => {\n let pendingProduct: Promise<Product | null> | undefined;\n try {\n pendingProduct = ExpoIapModule.getPromotedProductIOS() as\n | Promise<Product | null>\n | undefined;\n } catch {\n return Promise.resolve();\n }\n\n if (!pendingProduct || typeof pendingProduct.then !== 'function') {\n return Promise.resolve();\n }\n\n return pendingProduct\n .then((product: Product | null) => {\n if (product) {\n deliver(product);\n }\n })\n .catch(() => {});\n };\n\n const subscription = emitter.addListener(\n OpenIapEvent.PromotedProductIOS,\n (payload) => {\n if (typeof payload === 'string') {\n void replayPendingProduct();\n return;\n }\n\n deliver(payload as Product);\n },\n );\n\n void replayPendingProduct();\n\n return subscription;\n};\n\n/**\n * Android-only listener for User Choice Billing events.\n * This fires when a user selects alternative billing instead of Google Play billing\n * in the User Choice Billing dialog (only in 'user-choice' mode).\n *\n * @param listener - Callback function that receives the external transaction token and product IDs\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = userChoiceBillingListenerAndroid((details) => {\n * console.log('User selected alternative billing');\n * console.log('External transaction token received; send it to your backend without logging it.');\n * console.log('Products:', details.products);\n *\n * // Process payment in your system, then report token to Google\n * await processPaymentAndReportToken(details);\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform Android\n */\nexport const userChoiceBillingListenerAndroid = (\n listener: (details: UserChoiceBillingDetails) => void,\n) => {\n if (Platform.OS !== 'android') {\n ExpoIapConsole.warn(\n 'userChoiceBillingListenerAndroid: This listener is only available on Android',\n );\n return {remove: () => {}};\n }\n return emitter.addListener(OpenIapEvent.UserChoiceBillingAndroid, listener);\n};\n\n/**\n * Android-only listener for Developer Provided Billing events.\n * This fires when a user selects the developer's option in an External Payments\n * or Billing Choice purchase flow.\n *\n * @param listener - Callback that receives selected products and flow details\n * @returns EventSubscription that can be used to unsubscribe\n *\n * @example\n * ```typescript\n * const subscription = developerProvidedBillingListenerAndroid(async (details) => {\n * await processPaymentWithYourGateway(details.products, details.linkUri);\n * if (details.externalTransactionToken) {\n * await reportExternalTransactionToGoogle(details.externalTransactionToken);\n * }\n * });\n *\n * // Later, clean up\n * subscription.remove();\n * ```\n *\n * @platform Android (Play Billing Library 8.3.0+; Billing Choice 9.1.0+)\n */\nexport const developerProvidedBillingListenerAndroid = (\n listener: (details: DeveloperProvidedBillingDetailsAndroid) => void,\n) => {\n if (Platform.OS !== 'android') {\n ExpoIapConsole.warn(\n 'developerProvidedBillingListenerAndroid: This listener is only available on Android',\n );\n return {remove: () => {}};\n }\n return emitter.addListener(\n OpenIapEvent.DeveloperProvidedBillingAndroid,\n listener,\n );\n};\n\n/**\n * Listen for subscription billing-issue events (cross-platform).\n *\n * Fires when a user's active subscription enters a state that needs attention\n * for a payment problem. Unifies:\n * - iOS / Mac Catalyst 16.4+ and visionOS 1.0+: StoreKit 2 `Message.Reason.billingIssue`.\n * - Android (Play Billing 8.1+): when `Purchase.isSuspendedAndroid === true`.\n * - Meta Horizon, Amazon, macOS, tvOS, watchOS, and iOS before 16.4: never fires.\n *\n * Recommended UX: call `deepLinkToSubscriptions()` when this fires so the user\n * can update their payment method in the platform subscription center.\n *\n * @example\n * ```typescript\n * const subscription = subscriptionBillingIssueListener((purchase) => {\n * console.warn('Needs attention:', purchase.productId);\n * deepLinkToSubscriptions({\n * skuAndroid: purchase.productId,\n * packageNameAndroid: 'com.example.app',\n * });\n * });\n * ```\n */\nexport const subscriptionBillingIssueListener = (\n listener: (purchase: Purchase) => void,\n) => {\n const wrappedListener = (event: Purchase) => {\n listener(event);\n };\n return emitter.addListener(\n OpenIapEvent.SubscriptionBillingIssue,\n wrappedListener,\n );\n};\n\n/**\n * Initialize the store connection. Must be called before any other IAP API.\n *\n * @param config Optional connection config. Use `enableBillingProgramAndroid` (Android,\n * Play Billing 8.2.0+) to opt into a billing program. For Billing Choice 9.1.0+, set\n * `billingChoiceScreenTypeAndroid` to the renderer configured in Play Console.\n * iOS ignores Android-specific fields.\n * @returns Promise resolving to `true` when the platform billing client is connected.\n * @throws When the platform billing client fails to initialize.\n *\n * @example\n * ```ts\n * await initConnection();\n * await initConnection({ enableBillingProgramAndroid: 'external-offer' });\n * await initConnection({\n * enableBillingProgramAndroid: 'billing-choice',\n * billingChoiceScreenTypeAndroid: 'developer-rendered',\n * });\n * ```\n *\n * @remarks When using `useIAP()`, connection is auto-managed on mount/unmount —\n * pass options to the hook instead of calling this directly.\n *\n * @see {@link https://openiap.dev/docs/apis/init-connection}\n */\nexport const initConnection: MutationField<'initConnection'> = async (\n config,\n) => {\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.initConnection(config ?? null),\n nativePlatform(),\n );\n if (\n result === true &&\n Platform.OS === 'ios' &&\n nonDedupingPurchaseUpdatedListenerCountIOS > 0\n ) {\n configurePurchaseUpdatedListenerOptionsIOS(false);\n }\n return result;\n};\n\n/**\n * Close the store connection and release resources.\n *\n * @see {@link https://openiap.dev/docs/apis/end-connection}\n */\nexport const endConnection: MutationField<'endConnection'> = async () => {\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.endConnection(),\n nativePlatform(),\n );\n if (result === true && Platform.OS === 'ios') {\n resetPurchaseUpdatedDedupeHistoryIOS();\n }\n return result;\n};\n\n/**\n * Retrieve products or subscriptions from the store by SKU.\n *\n * @param request `ProductRequest` — `skus` (string[]) and optional `type`\n * (`'in-app' | 'subs' | 'all'`, defaults to `'in-app'`).\n * @returns Promise resolving to a `FetchProductsResult` union — `Product[]` for `'in-app'`,\n * `ProductSubscription[]` for `'subs'`, or a mixed array for `'all'`.\n * @throws When the store rejects the request (empty `skus`, not connected,\n * network/store error). Unknown SKUs are omitted from the result, not thrown.\n *\n * @example\n * ```ts\n * const products = await fetchProducts({\n * skus: ['com.app.coins_100', 'com.app.premium'],\n * type: 'in-app',\n * });\n * ```\n *\n * @remarks Promise-based, unlike the event-based `request*` APIs such as `requestPurchase`.\n *\n * @see {@link https://openiap.dev/docs/apis/fetch-products}\n */\nexport const fetchProducts: QueryField<'fetchProducts'> = async (request) => {\n ExpoIapConsole.debug('fetchProducts called with:', request);\n const {skus, type} = request ?? {};\n\n if (!Array.isArray(skus) || skus.length === 0) {\n throw createPurchaseError({\n message: 'No SKUs provided',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {canonical, native} = normalizeProductType(\n type as ProductTypeInput | undefined,\n );\n const skuSet = new Set(skus);\n\n const filterIosItems = (\n items: unknown[],\n ): (Product | ProductSubscription)[] =>\n items.filter((item): item is Product | ProductSubscription => {\n if (!isProductIOS(item)) {\n return false;\n }\n const candidate = item as Product | ProductSubscription;\n return typeof candidate.id === 'string' && skuSet.has(candidate.id);\n });\n\n const filterAndroidItems = (\n items: unknown[],\n ): (Product | ProductSubscription)[] =>\n items.filter((item): item is Product | ProductSubscription => {\n if (!isProductAndroid(item)) {\n return false;\n }\n const candidate = item as Product | ProductSubscription;\n return typeof candidate.id === 'string' && skuSet.has(candidate.id);\n });\n\n const castResult = (\n items: (Product | ProductSubscription)[],\n ):\n | (Product | ProductSubscription)[]\n | Product[]\n | ProductSubscription[]\n | null => {\n if (canonical === 'in-app') {\n return items as Product[];\n }\n if (canonical === 'subs') {\n return items as ProductSubscription[];\n }\n // 'all' mixes products and subscriptions; returned as-is to keep the discriminated union.\n return items;\n };\n\n if (Platform.OS === 'ios') {\n const rawItems = await invokeNativeWithPurchaseError<unknown[]>(\n () => ExpoIapModule.fetchProducts({skus, type: native}),\n 'ios',\n {\n code: ErrorCode.QueryProduct,\n message: 'Failed to query products',\n productIds: skus,\n productType: canonical,\n },\n );\n return castResult(filterIosItems(rawItems));\n }\n\n if (isAndroidStoreRuntime()) {\n const rawItems = await invokeNativeWithPurchaseError<unknown[]>(\n () => ExpoIapModule.fetchProducts(native, skus),\n 'android',\n {\n code: ErrorCode.QueryProduct,\n message: 'Failed to query products',\n productIds: skus,\n productType: canonical,\n },\n );\n return castResult(filterAndroidItems(rawItems));\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * List the user's unfinished purchases: non-consumables, active subscriptions,\n * and pending transactions.\n *\n * @param options Optional `PurchaseOptions`. iOS-only flags:\n * `alsoPublishToEventListenerIOS`, `onlyIncludeActiveItemsIOS`.\n * @returns Promise resolving to an array of `Purchase` currently held by the store.\n * @throws When the platform query fails.\n *\n * @example\n * ```ts\n * const purchases = await getAvailablePurchases();\n * for (const p of purchases) {\n * if (await verifyOnServer(p)) await finishTransaction({ purchase: p, isConsumable: false });\n * }\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/get-available-purchases}\n */\nexport const getAvailablePurchases: QueryField<\n 'getAvailablePurchases'\n> = async (options) => {\n const normalizedOptions = {\n alsoPublishToEventListenerIOS:\n options?.alsoPublishToEventListenerIOS ?? false,\n onlyIncludeActiveItemsIOS: options?.onlyIncludeActiveItemsIOS ?? true,\n includeSuspendedAndroid: options?.includeSuspendedAndroid ?? false,\n } satisfies PurchaseOptions;\n\n if (isVegaOS()) {\n const purchases = await ExpoIapModule.getAvailableItems(normalizedOptions);\n return decodeAndroidPurchases(purchases);\n }\n\n let purchases: Purchase[];\n\n if (Platform.OS === 'ios') {\n purchases = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.getAvailableItems(\n normalizedOptions.alsoPublishToEventListenerIOS,\n normalizedOptions.onlyIncludeActiveItemsIOS,\n ),\n 'ios',\n )) as Purchase[];\n } else if (Platform.OS === 'android') {\n purchases = (await invokeNativeWithPurchaseError(\n () => ExpoIapModule.getAvailableItems(normalizedOptions),\n 'android',\n )) as Purchase[];\n } else {\n throw unsupportedPlatformError();\n }\n\n return Platform.OS === 'ios'\n ? decodeApplePurchases(purchases)\n : decodeAndroidPurchases(purchases);\n};\n\n/**\n * Get all active subscriptions. On iOS each entry carries `renewalInfoIOS`\n * (e.g. pendingUpgradeProductId, willAutoRenew, autoRenewPreference); on\n * Android they are filtered from the available purchases.\n *\n * @param subscriptionIds - Optional array of subscription product IDs to filter. If not provided, returns all active subscriptions.\n * @returns Promise resolving to array of active subscriptions with details\n *\n * @example\n * ```typescript\n * // Get all active subscriptions\n * const subs = await getActiveSubscriptions();\n *\n * // Get specific subscriptions\n * const premiumSubs = await getActiveSubscriptions(['premium', 'premium_year']);\n *\n * // Check for pending upgrades (iOS)\n * subs.forEach(sub => {\n * if (sub.renewalInfoIOS?.pendingUpgradeProductId) {\n * console.log(`Upgrade pending to: ${sub.renewalInfoIOS.pendingUpgradeProductId}`);\n * }\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/get-active-subscriptions}\n */\nexport const getActiveSubscriptions: QueryField<\n 'getActiveSubscriptions'\n> = async (subscriptionIds) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.getActiveSubscriptions(subscriptionIds ?? null),\n nativePlatform(),\n );\n return (result ?? []) as ActiveSubscription[];\n};\n\n/**\n * Check if user has any active subscriptions.\n *\n * @param subscriptionIds - Optional array of subscription product IDs to check. If not provided, checks all subscriptions.\n * @returns Promise resolving to true if user has at least one active subscription\n *\n * @example\n * ```typescript\n * // Check any active subscription\n * const hasAny = await hasActiveSubscriptions();\n *\n * // Check specific subscriptions\n * const hasPremium = await hasActiveSubscriptions(['premium', 'premium_year']);\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/has-active-subscriptions}\n */\nexport const hasActiveSubscriptions: QueryField<\n 'hasActiveSubscriptions'\n> = async (subscriptionIds) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n return !!(await invokeNativeWithPurchaseError(\n () => ExpoIapModule.hasActiveSubscriptions(subscriptionIds ?? null),\n nativePlatform(),\n ));\n};\n\n/**\n * Return the user's storefront country code.\n *\n * @see {@link https://openiap.dev/docs/apis/get-storefront}\n */\nexport const getStorefront: QueryField<'getStorefront'> = async () => {\n if (Platform.OS !== 'ios' && !isAndroidStoreRuntime()) {\n throw createPurchaseError({\n code: ErrorCode.FeatureNotSupported,\n message: `Storefront lookup is not supported on ${Platform.OS}.`,\n });\n }\n\n const platform = nativePlatform();\n if (typeof ExpoIapModule.getStorefront !== 'function') {\n throw createPurchaseError({\n code: ErrorCode.FeatureNotSupported,\n message: 'Native getStorefront is not available on this build.',\n platform,\n });\n }\n\n let storefront: unknown;\n try {\n storefront = await ExpoIapModule.getStorefront();\n } catch (error) {\n throw createPurchaseErrorFromNativeException(error, platform, {\n code: ErrorCode.ServiceError,\n message: 'Failed to get storefront.',\n debugMessage: error instanceof Error ? error.message : String(error),\n });\n }\n\n if (typeof storefront !== 'string' || storefront.trim().length === 0) {\n throw createPurchaseError({\n code: ErrorCode.ServiceError,\n message: 'Storefront lookup returned no country code.',\n platform,\n });\n }\n return storefront;\n};\n\nfunction normalizeRequestProps(\n request: RequestPurchasePropsByPlatforms,\n platform: 'ios',\n): RequestPurchaseIosProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestPurchasePropsByPlatforms,\n platform: 'android',\n): RequestPurchaseAndroidProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestSubscriptionPropsByPlatforms,\n platform: 'ios',\n): RequestSubscriptionIosProps | null | undefined;\nfunction normalizeRequestProps(\n request: RequestSubscriptionPropsByPlatforms,\n platform: 'android',\n): RequestSubscriptionAndroidProps | null | undefined;\nfunction normalizeRequestProps(\n request:\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms,\n platform: 'ios' | 'android',\n) {\n if (platform === 'ios') {\n return request.apple;\n }\n return request.google;\n}\n\nfunction validateAndroidPurchaseBranchOptions(\n request: unknown,\n type: ProductQueryType,\n): void {\n if (request == null || typeof request !== 'object') return;\n const fields = request as Record<string, unknown>;\n const subscriptionOnlyFields = [\n 'subscriptionOffers',\n 'subscriptionProductReplacementParams',\n 'purchaseToken',\n 'originalExternalTransactionId',\n ];\n if (\n (type === 'in-app' &&\n subscriptionOnlyFields.some((field) => fields[field] != null)) ||\n (type === 'subs' && fields.offerToken != null)\n ) {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message:\n 'Invalid request for Android. Purchase options must match the selected product type.',\n });\n }\n}\n\n/** Verify app acquisition; send Android integrity tokens to your backend. */\nexport const verifyAppOwnership: QueryField<'verifyAppOwnership'> = async (\n options,\n) => {\n if (\n isVegaOS() ||\n ExpoIapModule.USING_ONSIDE_SDK ||\n (Platform.OS !== 'ios' && Platform.OS !== 'android')\n ) {\n return {\n status: 'unknown',\n reason: 'unsupported',\n storeId: isVegaOS()\n ? 'amazon'\n : ExpoIapModule.USING_ONSIDE_SDK\n ? 'onside'\n : 'unknown',\n };\n }\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyAppOwnership(options ?? {}),\n nativePlatform(),\n {\n code: ErrorCode.ServiceError,\n },\n );\n};\n\n/**\n * Initiate a purchase or subscription flow. The result arrives through\n * `purchaseUpdatedListener` / `purchaseErrorListener` (or `useIAP`'s\n * `onPurchaseSuccess` / `onPurchaseError`), not the return value.\n *\n * @param args `RequestPurchaseProps`, discriminated by `type`:\n * - `type: 'in-app'` — pass `request.apple.sku` (iOS) and/or `request.google.skus` (Android).\n * - `type: 'subs'` — same shape, plus `request.google.subscriptionOffers: [{ sku, offerToken }]`.\n * @returns The dispatched purchase payload; do not rely on it for the outcome.\n * @throws Synchronous rejection from the store (e.g. `ErrorCode.NotPrepared`, validation failure).\n *\n * @example\n * ```ts\n * await requestPurchase({\n * request: {\n * apple: { sku: 'com.app.premium' },\n * google: { skus: ['com.app.premium'] },\n * },\n * type: 'in-app',\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/apis/request-purchase}\n */\nexport const requestPurchase: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const {request} = args;\n markRequested([request.apple?.sku, ...(request.google?.skus ?? [])]);\n try {\n return await requestPurchaseFromStore(args);\n } catch (error) {\n clearRequested();\n throw error;\n }\n};\n\nconst requestPurchaseFromStore: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const {request, type} = args;\n const {canonical, native} = normalizeProductType(type as ProductTypeInput);\n if (canonical === 'all') {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message: 'Product type all is only supported for product queries.',\n });\n }\n const isInAppPurchase = canonical === 'in-app';\n\n if (Platform.OS === 'ios') {\n const normalizedRequest = normalizeRequestProps(request, 'ios');\n\n if (!normalizedRequest?.sku) {\n throw createPurchaseError({\n message:\n 'Invalid request for Apple. The `sku` property is required and must be a string.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"product_id\" },\\n' +\n ' google: { skus: [\"product_id\"] }\\n' +\n ' },\\n' +\n ' type: \"in-app\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n if (canonical !== 'in-app' && canonical !== 'subs') {\n throw new Error(`Unsupported product type: ${canonical}`);\n }\n\n const payload: MutationRequestPurchaseArgs = {\n type: canonical === 'in-app' ? 'in-app' : 'subs',\n request: {apple: normalizedRequest},\n };\n\n const purchase = (await invokeNativeWithPurchaseError(\n () => ExpoIapModule.requestPurchase(payload),\n 'ios',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: normalizedRequest.sku,\n productIds: [normalizedRequest.sku],\n productType: canonical,\n },\n )) as Purchase | Purchase[] | null;\n\n if (Array.isArray(purchase)) {\n return purchase;\n }\n\n if (purchase) {\n return purchase;\n }\n\n return canonical === 'subs' ? [] : null;\n }\n\n if (isAndroidStoreRuntime()) {\n validateAndroidPurchaseBranchOptions(\n (\n request as\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms\n )?.google,\n canonical,\n );\n if (isInAppPurchase) {\n const normalizedRequest = normalizeRequestProps(\n request as RequestPurchasePropsByPlatforms,\n 'android',\n ) as RequestPurchaseAndroidProps | null | undefined;\n\n if (!normalizedRequest?.skus?.length) {\n throw createPurchaseError({\n message:\n 'Invalid request for Google. The `skus` property is required and must be a non-empty array.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"product_id\" },\\n' +\n ' google: { skus: [\"product_id\"] }\\n' +\n ' },\\n' +\n ' type: \"in-app\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {\n skus,\n obfuscatedAccountId,\n obfuscatedProfileId,\n isOfferPersonalized,\n offerToken,\n developerBillingOption,\n } = normalizedRequest;\n\n const result = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.requestPurchase({\n type: native,\n skus,\n purchaseToken: undefined,\n obfuscatedAccountId: obfuscatedAccountId,\n obfuscatedProfileId: obfuscatedProfileId,\n offerToken: offerToken,\n developerBillingOption: developerBillingOption ?? undefined,\n isOfferPersonalized: isOfferPersonalized ?? false,\n }),\n 'android',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: skus[0],\n productIds: skus,\n productType: canonical,\n },\n )) as Purchase[];\n\n return result;\n }\n\n if (canonical === 'subs') {\n const normalizedRequest = normalizeRequestProps(\n request as RequestSubscriptionPropsByPlatforms,\n 'android',\n ) as RequestSubscriptionAndroidProps | null | undefined;\n\n if (!normalizedRequest?.skus?.length) {\n throw createPurchaseError({\n message:\n 'Invalid request for Google. The `skus` property is required and must be a non-empty array.\\n\\n' +\n 'Expected format:\\n' +\n ' requestPurchase({\\n' +\n ' request: {\\n' +\n ' apple: { sku: \"subscription_id\" },\\n' +\n ' google: { skus: [\"subscription_id\"] }\\n' +\n ' },\\n' +\n ' type: \"subs\"\\n' +\n ' })\\n\\n' +\n 'See: https://openiap.dev/docs/apis/request-purchase',\n code: ErrorCode.EmptySkuList,\n });\n }\n\n const {\n skus,\n obfuscatedAccountId,\n obfuscatedProfileId,\n isOfferPersonalized,\n subscriptionOffers,\n purchaseToken: purchaseTokenInput,\n originalExternalTransactionId,\n developerBillingOption,\n subscriptionProductReplacementParams,\n } = normalizedRequest;\n\n const normalizedOffers = subscriptionOffers ?? [];\n const purchaseToken = purchaseTokenInput ?? undefined;\n\n const result = (await invokeNativeWithPurchaseError(\n () =>\n ExpoIapModule.requestPurchase({\n type: native,\n skus,\n purchaseToken,\n originalExternalTransactionId:\n originalExternalTransactionId ?? undefined,\n obfuscatedAccountId: obfuscatedAccountId,\n obfuscatedProfileId: obfuscatedProfileId,\n subscriptionOffers: normalizedOffers,\n isOfferPersonalized: isOfferPersonalized ?? false,\n developerBillingOption: developerBillingOption ?? undefined,\n subscriptionProductReplacementParams:\n subscriptionProductReplacementParams ?? undefined,\n }),\n 'android',\n {\n code: ErrorCode.PurchaseError,\n message: 'Failed to request purchase',\n productId: skus[0],\n productIds: skus,\n productType: canonical,\n },\n )) as Purchase[];\n\n return result;\n }\n\n throw new Error(\n \"Invalid request for Android: Expected a valid request object with 'skus' array.\",\n );\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * Complete a purchase transaction. Call after server-side verification to remove it\n * from the queue.\n *\n * @param args.purchase The `Purchase` to finalize.\n * @param args.isConsumable `true` for consumables (consumes the token so the SKU can be\n * re-bought, e.g. coins); `false` (default) for non-consumables and subscriptions.\n * @returns Promise that resolves once the platform finalizes the transaction.\n * @throws When the platform finalize call fails.\n *\n * @example\n * ```ts\n * // Inside purchaseUpdatedListener:\n * if (await verifyOnServer(purchase)) {\n * await finishTransaction({ purchase, isConsumable: false });\n * }\n * ```\n *\n * @remarks Android purchases must be finalized within 3 days or Google\n * auto-refunds. iOS unfinished transactions replay on every app launch.\n *\n * @see {@link https://openiap.dev/docs/apis/finish-transaction}\n */\nexport const finishTransaction: MutationField<'finishTransaction'> = async ({\n purchase,\n isConsumable,\n}) => {\n // The schema allows explicit null; the native boolean cannot take it.\n const consumable = isConsumable ?? false;\n const platform = nativePlatform();\n if (\n Platform.OS === 'ios' ||\n (isAndroidStoreRuntime() && purchase.store === 'unknown')\n ) {\n await invokeNativeWithPurchaseError(\n () => ExpoIapModule.finishTransaction(purchase, consumable),\n platform,\n {productId: purchase.productId},\n );\n } else if (isAndroidStoreRuntime()) {\n const token = purchase.purchaseToken ?? undefined;\n\n if (!token) {\n throw createPurchaseError({\n message: 'Purchase token is required to finish transaction',\n code: ErrorCode.DeveloperError,\n productId: purchase.productId,\n platform: 'android',\n });\n }\n\n // Native rejects when the store refuses the token, so a failure cannot pass as finished.\n await invokeNativeWithPurchaseError(\n () =>\n consumable\n ? ExpoIapModule.consumePurchaseAndroid(token)\n : ExpoIapModule.acknowledgePurchaseAndroid(token),\n 'android',\n {productId: purchase.productId},\n );\n } else {\n throw unsupportedPlatformError();\n }\n\n showFirstPurchaseNotice(purchase);\n};\n\n/**\n * Restore completed transactions. Returns nothing; read the restored items with\n * `getAvailablePurchases` or from hook state.\n *\n * - iOS: sync (or Onside restore when OnsideKit is active), then fetch available purchases.\n * - Android: run the provider's restore, then fetch available purchases.\n *\n * @see {@link https://openiap.dev/docs/apis/restore-purchases}\n */\nexport const restorePurchases: MutationField<'restorePurchases'> = async () => {\n await restorePurchasesNative();\n\n await getAvailablePurchases({\n alsoPublishToEventListenerIOS: false,\n onlyIncludeActiveItemsIOS: true,\n });\n};\n\n/**\n * Deeplinks to native interface that allows users to manage their subscriptions\n * @param options.skuAndroid - Required for Android to locate specific subscription (ignored on iOS)\n * @param options.packageNameAndroid - Required for Android to identify your app (ignored on iOS)\n *\n * @returns Promise that resolves when the deep link is successfully opened\n *\n * @throws {Error} When called on unsupported platform or when required Android parameters are missing\n *\n * @example\n * import { deepLinkToSubscriptions } from 'expo-iap';\n *\n * // Works on both iOS and Android\n * await deepLinkToSubscriptions({\n * skuAndroid: 'your_subscription_sku',\n * packageNameAndroid: 'com.example.app'\n * });\n *\n * @see {@link https://openiap.dev/docs/apis/deep-link-to-subscriptions}\n */\nexport const deepLinkToSubscriptions: MutationField<\n 'deepLinkToSubscriptions'\n> = async (options) => {\n if (Platform.OS === 'ios') {\n await deepLinkToSubscriptionsIOS();\n return;\n }\n\n if (Platform.OS === 'android') {\n await deepLinkToSubscriptionsAndroid((options as DeepLinkOptions) ?? null);\n return;\n }\n\n throw unsupportedPlatformError();\n};\n\n/**\n * Open the platform's offer/promo code redemption flow.\n *\n * Resolves the redeemed purchase only when the store reports it synchronously;\n * every other path resolves null, so reconcile with `getAvailablePurchases`\n * when the app resumes.\n *\n * @returns Promise resolving to the redeemed purchase, or null\n * @throws Error when a redemption flow exists but cannot be opened\n *\n * @see {@link https://openiap.dev/docs/apis/open-redeem-offer-code}\n */\nexport const openRedeemOfferCode: MutationField<\n 'openRedeemOfferCode'\n> = async () => {\n if (isVegaOS()) return null;\n if (Platform.OS !== 'ios' && !isAndroidStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.openRedeemOfferCode(),\n nativePlatform(),\n {code: ErrorCode.PurchaseError, message: 'Failed to redeem offer code.'},\n );\n};\n\n/**\n * Verify purchase with the configured providers.\n *\n * @param options - Receipt validation options containing the SKU\n * @returns Promise resolving to receipt validation result\n *\n * @see {@link https://openiap.dev/docs/features/validation#verify-purchase}\n */\nexport const verifyPurchase: MutationField<'verifyPurchase'> = async (\n options,\n) => {\n if (!isStorePlatform()) {\n throw unsupportedPlatformError();\n }\n\n // The native result is already the flat union member, with `__typename`.\n return invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyPurchase(options),\n nativePlatform(),\n );\n};\n\n/**\n * Verify purchase with a specific provider (e.g., IAPKit).\n *\n * @param options - Verification options including provider and credentials\n * @returns Promise resolving to provider-specific verification result\n *\n * @example\n * ```typescript\n * const result = await verifyPurchaseWithProvider({\n * provider: 'iapkit',\n * iapkit: {\n * apiKey: 'your-api-key',\n * // Choose exactly one store payload.\n * // apple: { jws: purchase.purchaseToken },\n * // google: { purchaseToken: purchase.purchaseToken },\n * amazon: {\n * expectedProductId: purchase.productId,\n * userId: amazonUserId,\n * receiptId: purchase.purchaseToken,\n * // Enable only for App Tester after the IAPKit project opt-in.\n * sandbox: amazonSandboxEnabled,\n * }\n * }\n * });\n * ```\n *\n * @see {@link https://openiap.dev/docs/features/validation#verify-purchase-with-provider}\n */\nexport const verifyPurchaseWithProvider: MutationField<\n 'verifyPurchaseWithProvider'\n> = async (options) => {\n if (!isStoreRuntime()) {\n throw unsupportedPlatformError();\n }\n\n let resolvedOptions = options;\n\n if (\n resolvedOptions.provider === 'iapkit' &&\n resolvedOptions.iapkit &&\n !resolvedOptions.iapkit.apiKey\n ) {\n let configApiKey: unknown;\n try {\n // Dynamically import expo-constants to avoid hard dependency\n const {default: Constants} = await import('expo-constants');\n configApiKey = Constants.expoConfig?.extra?.iapkitApiKey;\n } catch (error) {\n throw new Error(\n 'Could not read iapkitApiKey from expo-constants. Install it with ' +\n '`npx expo install expo-constants`, or pass apiKey in ' +\n 'verifyPurchaseWithProvider options.',\n {cause: error},\n );\n }\n if (typeof configApiKey === 'string' && configApiKey.length > 0) {\n resolvedOptions = {\n ...resolvedOptions,\n iapkit: {\n ...resolvedOptions.iapkit,\n apiKey: configApiKey,\n },\n };\n }\n }\n\n const result = await invokeNativeWithPurchaseError(\n () => ExpoIapModule.verifyPurchaseWithProvider(resolvedOptions),\n nativePlatform(),\n );\n if (result.iapkit == null) {\n return result;\n }\n\n const {clientPayload, productId, ...iapkit} = result.iapkit;\n return {\n ...result,\n iapkit: {\n ...iapkit,\n storeId: resolveStoreId(iapkit.storeId, iapkit.store),\n ...(clientPayload == null ? {} : {clientPayload}),\n ...(productId == null ? {} : {productId}),\n },\n };\n};\n\nexport type {SdkPurchaseFlowOptions} from './utils/purchaseFlowBinding';\n\nconst purchaseFlowSdk: PurchaseFlowSdk = {\n finishTransaction: (args) => finishTransaction(args),\n // The active-only iOS list drops subscriptions in billing grace.\n getAvailablePurchases: () =>\n getAvailablePurchases({onlyIncludeActiveItemsIOS: false}),\n getPendingTransactionsIOS:\n Platform.OS === 'ios' ? () => getPendingTransactionsIOS() : undefined,\n purchaseUpdatedListener: (listener) =>\n purchaseUpdatedListener(listener, {dedupeTransactionIOS: false}),\n purchaseErrorListener: (listener) => purchaseErrorListener(listener),\n};\n\n/**\n * Creates the app's purchase flow. It confirms and finishes every purchase the\n * store delivers, and recovers unfinished ones, through this SDK. Create one\n * per signed-in account, dispose it when the account changes, and pass it to\n * `useIAP({purchaseFlow})`.\n * @see {@link https://kit.openiap.dev/docs/purchase-flow}\n */\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase>;\nexport function createPurchaseFlow<P extends PurchaseFlowPurchase>(\n options: PurchaseFlowOptions<P>,\n): PurchaseFlow<P>;\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase> {\n return createSdkPurchaseFlow(purchaseFlowSdk, options);\n}\n\n/**\n * Confirms purchases with IAPKit from the app, for apps without a backend:\n * pass it as `confirmWithBackend` with a publishable key. Credit consumables\n * in `grant`, which runs before the purchase is consumed.\n */\nexport function confirmWithIapkit(\n options: IapkitConfirmationOptions<Purchase>,\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createIapkitConfirmation(verifyPurchaseWithProvider, options);\n}\n\n/**\n * Confirms App Store purchases on the device, for apps with neither a backend\n * nor IAPKit: StoreKit must still list the transaction as unfinished and\n * valid. Credit consumables in `grant`.\n */\nexport function confirmOnDeviceIOS(\n options: {\n /** Required for consumables; credit each purchase.id only once. */\n grant?: (\n purchase: Purchase,\n context: {isConsumable: boolean},\n ) => Promise<void>;\n } = {},\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createDeviceConfirmationIOS<Purchase>(\n () => getPendingTransactionsIOS(),\n options,\n );\n}\n\nexport * from './useIAP';\nexport {kitApi, KitApiError, resolveLocalizedPayload} from './kit-api';\nexport type {\n KitApiOptions,\n KitClientPayloadCache,\n KitClientPayloadOptions,\n KitClientPayloadResponse,\n KitLocalizedClientPayload,\n KitLocalizedClientPayloadOptions,\n KitLocalizedPayloadOptions,\n KitProduct,\n KitProductClientPayload,\n KitProductOffer,\n KitProductPlatform,\n KitProductsOptions,\n KitProductsResponse,\n KitSubscription,\n EntitlementsResponse,\n StatusResponse,\n} from './kit-api';\nexport {\n describePurchaseFlowStatus,\n toPurchaseConfirmationRequest,\n} from './purchase-flow-core';\nexport type {\n PurchaseConfirmation,\n PurchaseConfirmationRequest,\n PurchaseFlow,\n PurchaseFlowGuidance,\n PurchaseFlowGuidanceKey,\n PurchaseFlowOptions,\n PurchaseFlowOutcome,\n PurchaseFlowPurchase,\n PurchaseFlowStatus,\n RecoverPurchasesOptions,\n} from './purchase-flow-core';\nexport type {IapkitConfirmationOptions} from './purchase-flow-confirmers';\nexport {\n ErrorCodeUtils,\n ErrorCodeMapping,\n createPurchaseError,\n createPurchaseErrorFromPlatform,\n getUserFriendlyErrorMessage,\n isRecoverableError,\n isUserCancelledError,\n} from './utils/errorMapping';\nexport type {\n PurchaseError as ExpoPurchaseError,\n PurchaseErrorProps,\n} from './utils/errorMapping';\nexport {ExpoIapConsole} from './utils/debug';\n"]}
@@ -3,6 +3,7 @@ import { type IapkitConfirmationOptions } from './purchase-flow-confirmers';
3
3
  import { type SdkPurchaseFlowOptions } from './utils/purchaseFlowBinding';
4
4
  import type { MutationField, ProductQueryType, ProductRequest, Purchase, PurchaseError, PurchaseUpdatedListenerOptions, QueryField } from './types';
5
5
  export * from './types';
6
+ export { isRecoverableError } from './utils/errorMapping';
6
7
  export * from './vega';
7
8
  export * from './useIAP';
8
9
  export { kitApi, KitApiError, resolveLocalizedPayload } from './kit-api';
@@ -1 +1 @@
1
- {"version":3,"file":"index.kepler.d.ts","sourceRoot":"","sources":["../src/index.kepler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.kepler.d.ts","sourceRoot":"","sources":["../src/index.kepler.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { clearRequested, createSdkPurchaseFlow, markRequested, } from './utils/p
6
6
  import { decodeAndroidPurchases } from './utils/availablePurchases';
7
7
  import { createPurchaseError } from './utils/errorMapping';
8
8
  export * from './types';
9
+ export { isRecoverableError } from './utils/errorMapping';
9
10
  export * from './vega';
10
11
  export * from './useIAP';
11
12
  export { kitApi, KitApiError, resolveLocalizedPayload } from './kit-api';
@@ -1 +1 @@
1
- {"version":3,"file":"index.kepler.js","sourceRoot":"","sources":["../src/index.kepler.ts"],"names":[],"mappings":"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","sourcesContent":["import {getVegaIapModule} from './vega';\nimport {ErrorCode} from './types';\nimport {\n type PurchaseFlow,\n type PurchaseFlowOptions,\n type PurchaseFlowPurchase,\n} from './purchase-flow-core';\nimport {\n createIapkitConfirmation,\n type IapkitConfirmationOptions,\n} from './purchase-flow-confirmers';\nimport {\n clearRequested,\n createSdkPurchaseFlow,\n markRequested,\n type PurchaseFlowSdk,\n type SdkPurchaseFlowOptions,\n} from './utils/purchaseFlowBinding';\nimport type {\n MutationField,\n ProductQueryType,\n ProductRequest,\n Purchase,\n PurchaseError,\n PurchaseOptions,\n PurchaseUpdatedListenerOptions,\n QueryField,\n RequestPurchasePropsByPlatforms,\n RequestSubscriptionPropsByPlatforms,\n} from './types';\nimport {decodeAndroidPurchases} from './utils/availablePurchases';\nimport {createPurchaseError} from './utils/errorMapping';\n\nexport * from './types';\nexport * from './vega';\nexport * from './useIAP';\nexport {kitApi, KitApiError, resolveLocalizedPayload} from './kit-api';\nexport type {\n EntitlementsResponse,\n KitApiOptions,\n KitClientPayloadCache,\n KitClientPayloadOptions,\n KitClientPayloadResponse,\n KitLocalizedClientPayload,\n KitLocalizedClientPayloadOptions,\n KitLocalizedPayloadOptions,\n KitProduct,\n KitProductClientPayload,\n KitProductOffer,\n KitProductPlatform,\n KitProductsOptions,\n KitProductsResponse,\n KitSubscription,\n StatusResponse,\n} from './kit-api';\nexport {\n describePurchaseFlowStatus,\n toPurchaseConfirmationRequest,\n} from './purchase-flow-core';\nexport type {\n PurchaseConfirmation,\n PurchaseConfirmationRequest,\n PurchaseFlow,\n PurchaseFlowGuidance,\n PurchaseFlowGuidanceKey,\n PurchaseFlowOptions,\n PurchaseFlowOutcome,\n PurchaseFlowPurchase,\n PurchaseFlowStatus,\n RecoverPurchasesOptions,\n} from './purchase-flow-core';\nexport type {IapkitConfirmationOptions} from './purchase-flow-confirmers';\nexport type {SdkPurchaseFlowOptions} from './utils/purchaseFlowBinding';\n\nexport enum OpenIapEvent {\n PurchaseUpdated = 'purchase-updated',\n PurchaseError = 'purchase-error',\n PromotedProductIOS = 'promoted-product-ios',\n UserChoiceBillingAndroid = 'user-choice-billing-android',\n DeveloperProvidedBillingAndroid = 'developer-provided-billing-android',\n SubscriptionBillingIssue = 'subscription-billing-issue',\n}\n\nexport type ProductTypeInput = ProductQueryType;\n\nexport interface EventSubscription {\n remove(): void;\n}\n\nconst getModule = () => {\n const module = getVegaIapModule();\n if (!module) {\n throw new Error(\n 'Amazon Vega IAP module is unavailable. Install @amazon-devices/keplerscript-appstore-iap-lib in the Vega app target and build with the React Native for Vega kepler platform.',\n );\n }\n return module;\n};\n\nconst unsupported = (feature: string): never => {\n throw new Error(`${feature} is not supported on Amazon Vega.`);\n};\n\nconst normalizeProductType = (\n type?: ProductTypeInput | null,\n): ProductQueryType => {\n if (type == null || type === 'in-app') return 'in-app';\n if (type === 'subs' || type === 'all') return type;\n throw new Error(\n `Unsupported product type: ${String(type)}. Use in-app, subs, or all.`,\n );\n};\n\nconst normalizePurchaseArray = (purchases: Purchase[]): Purchase[] =>\n decodeAndroidPurchases(purchases);\n\nconst getAndroidRequest = (\n request?:\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms\n | null,\n) => {\n return request?.google;\n};\n\nconst createPurchaseTokenError = (purchase: Purchase): Error => {\n const error = new Error(\n 'Purchase token is required to finish Amazon Vega transaction',\n ) as Error & PurchaseError;\n error.code = ErrorCode.DeveloperError;\n error.productId = purchase.productId;\n return error;\n};\n\nexport const emitter = {\n addListener(\n eventName: OpenIapEvent,\n listener: (payload: Purchase | PurchaseError) => void,\n ): EventSubscription {\n return getModule().addListener(eventName, listener);\n },\n removeListener(\n eventName: OpenIapEvent,\n listener: (payload: Purchase | PurchaseError) => void,\n ): void {\n return getModule().removeListener(eventName, listener);\n },\n};\n\nexport const purchaseUpdatedListener = (\n listener: (event: Purchase) => void,\n options?: PurchaseUpdatedListenerOptions | null,\n): EventSubscription => {\n return getModule().addListener(OpenIapEvent.PurchaseUpdated, (purchase) => {\n listener(purchase as Purchase);\n });\n};\n\nexport const purchaseErrorListener = (\n listener: (error: PurchaseError) => void,\n): EventSubscription => {\n return getModule().addListener(OpenIapEvent.PurchaseError, (error) => {\n listener(error as PurchaseError);\n });\n};\n\nexport const initConnection: MutationField<'initConnection'> = async (\n config,\n) => {\n return getModule().initConnection(config ?? null);\n};\n\nexport const endConnection: MutationField<'endConnection'> = async () => {\n return getModule().endConnection();\n};\n\nexport const fetchProducts = async (\n request: Omit<ProductRequest, 'type'> & {\n type?: ProductTypeInput | null;\n },\n): ReturnType<QueryField<'fetchProducts'>> => {\n const {skus, type} = request;\n return getModule().fetchProducts(normalizeProductType(type), skus);\n};\n\nexport const requestPurchase: MutationField<'requestPurchase'> = async (\n args,\n) => {\n markRequested(args.request.google?.skus ?? []);\n try {\n return await requestPurchaseFromStore(args);\n } catch (error) {\n clearRequested();\n throw error;\n }\n};\n\nconst requestPurchaseFromStore: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const type = normalizeProductType(args.type);\n if (type === 'all') {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message: 'Product type all is only supported for product queries.',\n });\n }\n const androidRequest = getAndroidRequest(args.request);\n if (!androidRequest?.skus?.length) {\n throw new Error(\n 'Invalid request for Amazon Vega. The `request.google.skus` property is required and must be a non-empty array.',\n );\n }\n\n return normalizePurchaseArray(\n await getModule().requestPurchase({\n skus: androidRequest.skus,\n type,\n }),\n );\n};\n\nexport const getAvailablePurchases: QueryField<\n 'getAvailablePurchases'\n> = async (options) => {\n return normalizePurchaseArray(\n await getModule().getAvailableItems((options ?? {}) as PurchaseOptions),\n );\n};\n\nexport const finishTransaction: MutationField<'finishTransaction'> = async ({\n purchase,\n isConsumable = false,\n}) => {\n const token = purchase.purchaseToken ?? undefined;\n if (!token) {\n throw createPurchaseTokenError(purchase);\n }\n\n if (isConsumable) {\n await getModule().consumePurchaseAndroid(token);\n return;\n }\n\n await getModule().acknowledgePurchaseAndroid(token);\n};\n\nexport const restorePurchases: MutationField<'restorePurchases'> = async () => {\n await getAvailablePurchases({\n includeSuspendedAndroid: false,\n });\n};\n\nexport const getActiveSubscriptions: QueryField<\n 'getActiveSubscriptions'\n> = async (subscriptionIds) => {\n return getModule().getActiveSubscriptions(subscriptionIds ?? null);\n};\n\nexport const hasActiveSubscriptions: QueryField<\n 'hasActiveSubscriptions'\n> = async (subscriptionIds) => {\n return getModule().hasActiveSubscriptions(subscriptionIds ?? null);\n};\n\nexport const getStorefront: QueryField<'getStorefront'> = async () => {\n return getModule().getStorefront();\n};\n\nexport const verifyPurchaseWithProvider: MutationField<\n 'verifyPurchaseWithProvider'\n> = async (options) => {\n return getModule().verifyPurchaseWithProvider(options);\n};\n\nexport const verifyPurchase: MutationField<'verifyPurchase'> = async () =>\n unsupported('verifyPurchase');\n\nexport const acknowledgePurchaseAndroid: MutationField<\n 'acknowledgePurchaseAndroid'\n> = async (purchaseToken) => {\n await getModule().acknowledgePurchaseAndroid(purchaseToken);\n return true;\n};\n\nexport const consumePurchaseAndroid: MutationField<\n 'consumePurchaseAndroid'\n> = async (purchaseToken) => {\n await getModule().consumePurchaseAndroid(purchaseToken);\n return true;\n};\n\nexport const syncIOS: MutationField<'syncIOS'> = async () =>\n unsupported('syncIOS');\nexport const verifyAppOwnership: QueryField<\n 'verifyAppOwnership'\n> = async () => ({status: 'unknown', reason: 'unsupported', storeId: 'amazon'});\n\nexport const getAppTransactionIOS: QueryField<\n 'getAppTransactionIOS'\n> = async () => null;\nexport const getPromotedProductIOS: QueryField<\n 'getPromotedProductIOS'\n> = async () => null;\n\nexport const showManageSubscriptionsIOS: MutationField<\n 'showManageSubscriptionsIOS'\n> = async () => [];\nexport const presentExternalPurchaseLinkIOS: MutationField<\n 'presentExternalPurchaseLinkIOS'\n> = async () => unsupported('presentExternalPurchaseLinkIOS');\n\nexport const deepLinkToSubscriptions: MutationField<\n 'deepLinkToSubscriptions'\n> = async () => unsupported('deepLinkToSubscriptions');\n// Vega has no offer-code redemption surface; resolve null without launching.\nexport const openRedeemOfferCode: MutationField<\n 'openRedeemOfferCode'\n> = async () => null;\n\nexport const promotedProductListenerIOS = (): EventSubscription => ({\n remove: () => {},\n});\nexport const userChoiceBillingListenerAndroid = (): EventSubscription => ({\n remove: () => {},\n});\nexport const developerProvidedBillingListenerAndroid =\n (): EventSubscription => ({\n remove: () => {},\n });\nexport const subscriptionBillingIssueListener = (): EventSubscription => ({\n remove: () => {},\n});\n\nexport const isBillingProgramAvailableAndroid: MutationField<\n 'isBillingProgramAvailableAndroid'\n> = async () => unsupported('isBillingProgramAvailableAndroid');\nexport const getBillingChoiceInfoAndroid: QueryField<\n 'getBillingChoiceInfoAndroid'\n> = async () => unsupported('getBillingChoiceInfoAndroid');\nexport const launchExternalLinkAndroid: MutationField<\n 'launchExternalLinkAndroid'\n> = async () => unsupported('launchExternalLinkAndroid');\nexport const createBillingProgramReportingDetailsAndroid: MutationField<\n 'createBillingProgramReportingDetailsAndroid'\n> = async () => unsupported('createBillingProgramReportingDetailsAndroid');\nexport const showBillingProgramInformationDialogAndroid: MutationField<\n 'showBillingProgramInformationDialogAndroid'\n> = async () => unsupported('showBillingProgramInformationDialogAndroid');\nexport const showInAppMessagesAndroid: MutationField<\n 'showInAppMessagesAndroid'\n> = async () => unsupported('showInAppMessagesAndroid');\n\nconst purchaseFlowSdk: PurchaseFlowSdk = {\n finishTransaction: (args) => finishTransaction(args),\n getAvailablePurchases: () => getAvailablePurchases(),\n getPendingTransactionsIOS: undefined,\n purchaseUpdatedListener: (listener) => purchaseUpdatedListener(listener),\n purchaseErrorListener: (listener) => purchaseErrorListener(listener),\n};\n\n/**\n * Creates the app's purchase flow on Amazon Vega. Create one per signed-in\n * account, dispose it when the account changes, and pass it to\n * `useIAP({purchaseFlow})`.\n * @see {@link https://kit.openiap.dev/docs/purchase-flow}\n */\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase>;\nexport function createPurchaseFlow<P extends PurchaseFlowPurchase>(\n options: PurchaseFlowOptions<P>,\n): PurchaseFlow<P>;\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase> {\n return createSdkPurchaseFlow(purchaseFlowSdk, options);\n}\n\n/**\n * Confirms purchases with IAPKit from the app, for apps without a backend:\n * pass it as `confirmWithBackend` with a publishable key. Credit consumables\n * in `grant`, which runs before the purchase is consumed.\n */\nexport function confirmWithIapkit(\n options: IapkitConfirmationOptions<Purchase>,\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createIapkitConfirmation(verifyPurchaseWithProvider, options);\n}\n"]}
1
+ {"version":3,"file":"index.kepler.js","sourceRoot":"","sources":["../src/index.kepler.ts"],"names":[],"mappings":"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","sourcesContent":["import {getVegaIapModule} from './vega';\nimport {ErrorCode} from './types';\nimport {\n type PurchaseFlow,\n type PurchaseFlowOptions,\n type PurchaseFlowPurchase,\n} from './purchase-flow-core';\nimport {\n createIapkitConfirmation,\n type IapkitConfirmationOptions,\n} from './purchase-flow-confirmers';\nimport {\n clearRequested,\n createSdkPurchaseFlow,\n markRequested,\n type PurchaseFlowSdk,\n type SdkPurchaseFlowOptions,\n} from './utils/purchaseFlowBinding';\nimport type {\n MutationField,\n ProductQueryType,\n ProductRequest,\n Purchase,\n PurchaseError,\n PurchaseOptions,\n PurchaseUpdatedListenerOptions,\n QueryField,\n RequestPurchasePropsByPlatforms,\n RequestSubscriptionPropsByPlatforms,\n} from './types';\nimport {decodeAndroidPurchases} from './utils/availablePurchases';\nimport {createPurchaseError} from './utils/errorMapping';\n\nexport * from './types';\nexport {isRecoverableError} from './utils/errorMapping';\nexport * from './vega';\nexport * from './useIAP';\nexport {kitApi, KitApiError, resolveLocalizedPayload} from './kit-api';\nexport type {\n EntitlementsResponse,\n KitApiOptions,\n KitClientPayloadCache,\n KitClientPayloadOptions,\n KitClientPayloadResponse,\n KitLocalizedClientPayload,\n KitLocalizedClientPayloadOptions,\n KitLocalizedPayloadOptions,\n KitProduct,\n KitProductClientPayload,\n KitProductOffer,\n KitProductPlatform,\n KitProductsOptions,\n KitProductsResponse,\n KitSubscription,\n StatusResponse,\n} from './kit-api';\nexport {\n describePurchaseFlowStatus,\n toPurchaseConfirmationRequest,\n} from './purchase-flow-core';\nexport type {\n PurchaseConfirmation,\n PurchaseConfirmationRequest,\n PurchaseFlow,\n PurchaseFlowGuidance,\n PurchaseFlowGuidanceKey,\n PurchaseFlowOptions,\n PurchaseFlowOutcome,\n PurchaseFlowPurchase,\n PurchaseFlowStatus,\n RecoverPurchasesOptions,\n} from './purchase-flow-core';\nexport type {IapkitConfirmationOptions} from './purchase-flow-confirmers';\nexport type {SdkPurchaseFlowOptions} from './utils/purchaseFlowBinding';\n\nexport enum OpenIapEvent {\n PurchaseUpdated = 'purchase-updated',\n PurchaseError = 'purchase-error',\n PromotedProductIOS = 'promoted-product-ios',\n UserChoiceBillingAndroid = 'user-choice-billing-android',\n DeveloperProvidedBillingAndroid = 'developer-provided-billing-android',\n SubscriptionBillingIssue = 'subscription-billing-issue',\n}\n\nexport type ProductTypeInput = ProductQueryType;\n\nexport interface EventSubscription {\n remove(): void;\n}\n\nconst getModule = () => {\n const module = getVegaIapModule();\n if (!module) {\n throw new Error(\n 'Amazon Vega IAP module is unavailable. Install @amazon-devices/keplerscript-appstore-iap-lib in the Vega app target and build with the React Native for Vega kepler platform.',\n );\n }\n return module;\n};\n\nconst unsupported = (feature: string): never => {\n throw new Error(`${feature} is not supported on Amazon Vega.`);\n};\n\nconst normalizeProductType = (\n type?: ProductTypeInput | null,\n): ProductQueryType => {\n if (type == null || type === 'in-app') return 'in-app';\n if (type === 'subs' || type === 'all') return type;\n throw new Error(\n `Unsupported product type: ${String(type)}. Use in-app, subs, or all.`,\n );\n};\n\nconst normalizePurchaseArray = (purchases: Purchase[]): Purchase[] =>\n decodeAndroidPurchases(purchases);\n\nconst getAndroidRequest = (\n request?:\n | RequestPurchasePropsByPlatforms\n | RequestSubscriptionPropsByPlatforms\n | null,\n) => {\n return request?.google;\n};\n\nconst createPurchaseTokenError = (purchase: Purchase): Error => {\n const error = new Error(\n 'Purchase token is required to finish Amazon Vega transaction',\n ) as Error & PurchaseError;\n error.code = ErrorCode.DeveloperError;\n error.productId = purchase.productId;\n return error;\n};\n\nexport const emitter = {\n addListener(\n eventName: OpenIapEvent,\n listener: (payload: Purchase | PurchaseError) => void,\n ): EventSubscription {\n return getModule().addListener(eventName, listener);\n },\n removeListener(\n eventName: OpenIapEvent,\n listener: (payload: Purchase | PurchaseError) => void,\n ): void {\n return getModule().removeListener(eventName, listener);\n },\n};\n\nexport const purchaseUpdatedListener = (\n listener: (event: Purchase) => void,\n options?: PurchaseUpdatedListenerOptions | null,\n): EventSubscription => {\n return getModule().addListener(OpenIapEvent.PurchaseUpdated, (purchase) => {\n listener(purchase as Purchase);\n });\n};\n\nexport const purchaseErrorListener = (\n listener: (error: PurchaseError) => void,\n): EventSubscription => {\n return getModule().addListener(OpenIapEvent.PurchaseError, (error) => {\n listener(error as PurchaseError);\n });\n};\n\nexport const initConnection: MutationField<'initConnection'> = async (\n config,\n) => {\n return getModule().initConnection(config ?? null);\n};\n\nexport const endConnection: MutationField<'endConnection'> = async () => {\n return getModule().endConnection();\n};\n\nexport const fetchProducts = async (\n request: Omit<ProductRequest, 'type'> & {\n type?: ProductTypeInput | null;\n },\n): ReturnType<QueryField<'fetchProducts'>> => {\n const {skus, type} = request;\n return getModule().fetchProducts(normalizeProductType(type), skus);\n};\n\nexport const requestPurchase: MutationField<'requestPurchase'> = async (\n args,\n) => {\n markRequested(args.request.google?.skus ?? []);\n try {\n return await requestPurchaseFromStore(args);\n } catch (error) {\n clearRequested();\n throw error;\n }\n};\n\nconst requestPurchaseFromStore: MutationField<'requestPurchase'> = async (\n args,\n) => {\n const type = normalizeProductType(args.type);\n if (type === 'all') {\n throw createPurchaseError({\n code: ErrorCode.DeveloperError,\n message: 'Product type all is only supported for product queries.',\n });\n }\n const androidRequest = getAndroidRequest(args.request);\n if (!androidRequest?.skus?.length) {\n throw new Error(\n 'Invalid request for Amazon Vega. The `request.google.skus` property is required and must be a non-empty array.',\n );\n }\n\n return normalizePurchaseArray(\n await getModule().requestPurchase({\n skus: androidRequest.skus,\n type,\n }),\n );\n};\n\nexport const getAvailablePurchases: QueryField<\n 'getAvailablePurchases'\n> = async (options) => {\n return normalizePurchaseArray(\n await getModule().getAvailableItems((options ?? {}) as PurchaseOptions),\n );\n};\n\nexport const finishTransaction: MutationField<'finishTransaction'> = async ({\n purchase,\n isConsumable = false,\n}) => {\n const token = purchase.purchaseToken ?? undefined;\n if (!token) {\n throw createPurchaseTokenError(purchase);\n }\n\n if (isConsumable) {\n await getModule().consumePurchaseAndroid(token);\n return;\n }\n\n await getModule().acknowledgePurchaseAndroid(token);\n};\n\nexport const restorePurchases: MutationField<'restorePurchases'> = async () => {\n await getAvailablePurchases({\n includeSuspendedAndroid: false,\n });\n};\n\nexport const getActiveSubscriptions: QueryField<\n 'getActiveSubscriptions'\n> = async (subscriptionIds) => {\n return getModule().getActiveSubscriptions(subscriptionIds ?? null);\n};\n\nexport const hasActiveSubscriptions: QueryField<\n 'hasActiveSubscriptions'\n> = async (subscriptionIds) => {\n return getModule().hasActiveSubscriptions(subscriptionIds ?? null);\n};\n\nexport const getStorefront: QueryField<'getStorefront'> = async () => {\n return getModule().getStorefront();\n};\n\nexport const verifyPurchaseWithProvider: MutationField<\n 'verifyPurchaseWithProvider'\n> = async (options) => {\n return getModule().verifyPurchaseWithProvider(options);\n};\n\nexport const verifyPurchase: MutationField<'verifyPurchase'> = async () =>\n unsupported('verifyPurchase');\n\nexport const acknowledgePurchaseAndroid: MutationField<\n 'acknowledgePurchaseAndroid'\n> = async (purchaseToken) => {\n await getModule().acknowledgePurchaseAndroid(purchaseToken);\n return true;\n};\n\nexport const consumePurchaseAndroid: MutationField<\n 'consumePurchaseAndroid'\n> = async (purchaseToken) => {\n await getModule().consumePurchaseAndroid(purchaseToken);\n return true;\n};\n\nexport const syncIOS: MutationField<'syncIOS'> = async () =>\n unsupported('syncIOS');\nexport const verifyAppOwnership: QueryField<\n 'verifyAppOwnership'\n> = async () => ({status: 'unknown', reason: 'unsupported', storeId: 'amazon'});\n\nexport const getAppTransactionIOS: QueryField<\n 'getAppTransactionIOS'\n> = async () => null;\nexport const getPromotedProductIOS: QueryField<\n 'getPromotedProductIOS'\n> = async () => null;\n\nexport const showManageSubscriptionsIOS: MutationField<\n 'showManageSubscriptionsIOS'\n> = async () => [];\nexport const presentExternalPurchaseLinkIOS: MutationField<\n 'presentExternalPurchaseLinkIOS'\n> = async () => unsupported('presentExternalPurchaseLinkIOS');\n\nexport const deepLinkToSubscriptions: MutationField<\n 'deepLinkToSubscriptions'\n> = async () => unsupported('deepLinkToSubscriptions');\n// Vega has no offer-code redemption surface; resolve null without launching.\nexport const openRedeemOfferCode: MutationField<\n 'openRedeemOfferCode'\n> = async () => null;\n\nexport const promotedProductListenerIOS = (): EventSubscription => ({\n remove: () => {},\n});\nexport const userChoiceBillingListenerAndroid = (): EventSubscription => ({\n remove: () => {},\n});\nexport const developerProvidedBillingListenerAndroid =\n (): EventSubscription => ({\n remove: () => {},\n });\nexport const subscriptionBillingIssueListener = (): EventSubscription => ({\n remove: () => {},\n});\n\nexport const isBillingProgramAvailableAndroid: MutationField<\n 'isBillingProgramAvailableAndroid'\n> = async () => unsupported('isBillingProgramAvailableAndroid');\nexport const getBillingChoiceInfoAndroid: QueryField<\n 'getBillingChoiceInfoAndroid'\n> = async () => unsupported('getBillingChoiceInfoAndroid');\nexport const launchExternalLinkAndroid: MutationField<\n 'launchExternalLinkAndroid'\n> = async () => unsupported('launchExternalLinkAndroid');\nexport const createBillingProgramReportingDetailsAndroid: MutationField<\n 'createBillingProgramReportingDetailsAndroid'\n> = async () => unsupported('createBillingProgramReportingDetailsAndroid');\nexport const showBillingProgramInformationDialogAndroid: MutationField<\n 'showBillingProgramInformationDialogAndroid'\n> = async () => unsupported('showBillingProgramInformationDialogAndroid');\nexport const showInAppMessagesAndroid: MutationField<\n 'showInAppMessagesAndroid'\n> = async () => unsupported('showInAppMessagesAndroid');\n\nconst purchaseFlowSdk: PurchaseFlowSdk = {\n finishTransaction: (args) => finishTransaction(args),\n getAvailablePurchases: () => getAvailablePurchases(),\n getPendingTransactionsIOS: undefined,\n purchaseUpdatedListener: (listener) => purchaseUpdatedListener(listener),\n purchaseErrorListener: (listener) => purchaseErrorListener(listener),\n};\n\n/**\n * Creates the app's purchase flow on Amazon Vega. Create one per signed-in\n * account, dispose it when the account changes, and pass it to\n * `useIAP({purchaseFlow})`.\n * @see {@link https://kit.openiap.dev/docs/purchase-flow}\n */\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase>;\nexport function createPurchaseFlow<P extends PurchaseFlowPurchase>(\n options: PurchaseFlowOptions<P>,\n): PurchaseFlow<P>;\nexport function createPurchaseFlow(\n options: SdkPurchaseFlowOptions,\n): PurchaseFlow<Purchase> {\n return createSdkPurchaseFlow(purchaseFlowSdk, options);\n}\n\n/**\n * Confirms purchases with IAPKit from the app, for apps without a backend:\n * pass it as `confirmWithBackend` with a publishable key. Credit consumables\n * in `grant`, which runs before the purchase is consumed.\n */\nexport function confirmWithIapkit(\n options: IapkitConfirmationOptions<Purchase>,\n): PurchaseFlowOptions<Purchase>['confirmWithBackend'] {\n return createIapkitConfirmation(verifyPurchaseWithProvider, options);\n}\n"]}
@@ -23,6 +23,10 @@ export interface PurchaseFlowPurchase {
23
23
  revocationDateIOS?: number | null;
24
24
  isUpgradedIOS?: boolean | null;
25
25
  expirationDateIOS?: number | null;
26
+ /** Shared by an Apple subscription's renewals, so a restore reads only the newest. */
27
+ originalTransactionIdentifierIOS?: string | null;
28
+ /** Milliseconds since the epoch. */
29
+ transactionDate?: number;
26
30
  }
27
31
  /** Body the app sends its backend, which takes the user from its own session. */
28
32
  export interface PurchaseConfirmationRequest {