react-native-nami-sdk 3.3.0-beta.7 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.prettierrc +4 -0
  2. package/README.md +9 -9
  3. package/android/README.md +3 -2
  4. package/android/build.gradle +27 -19
  5. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  6. package/android/gradlew +0 -0
  7. package/android/src/main/AndroidManifest.xml +1 -1
  8. package/android/src/main/java/com/namiml/reactnative/Constants.kt +3 -0
  9. package/android/src/main/java/com/namiml/reactnative/NamiBridgeModule.kt +91 -0
  10. package/android/src/main/java/com/namiml/reactnative/NamiBridgePackage.java +140 -0
  11. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiCampaignManagerBridge.kt +24 -30
  12. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiCustomerManagerBridge.kt +14 -6
  13. package/android/src/main/java/com/{nami/reactlibrary/NamiEntitlementManagerBridgeModule.kt → namiml/reactnative/NamiEntitlementManagerBridge.kt} +18 -8
  14. package/android/src/main/java/com/namiml/reactnative/NamiFlowManagerBridge.kt +67 -0
  15. package/android/src/main/java/com/namiml/reactnative/NamiPaywallManagerBridgeModule.kt +196 -0
  16. package/android/src/main/java/com/namiml/reactnative/NamiPurchaseManagerBridge.kt +114 -0
  17. package/android/src/main/java/com/{nami/reactlibrary → namiml/reactnative}/NamiUtil.kt +26 -23
  18. package/{index.d.ts → dist/index.d.ts} +0 -2
  19. package/dist/specs/NativeNami.d.ts +15 -0
  20. package/dist/specs/NativeNamiCampaignManager.d.ts +82 -0
  21. package/dist/specs/NativeNamiCustomerManager.d.ts +29 -0
  22. package/dist/specs/NativeNamiEntitlementManager.d.ts +45 -0
  23. package/dist/specs/NativeNamiFlowManager.d.ts +8 -0
  24. package/dist/specs/NativeNamiPaywallManager.d.ts +71 -0
  25. package/dist/specs/NativeNamiPurchaseManager.d.ts +28 -0
  26. package/dist/src/Nami.d.ts +5 -0
  27. package/dist/src/NamiCampaignManager.d.ts +29 -0
  28. package/{src → dist/src}/NamiCustomerManager.d.ts +11 -13
  29. package/dist/src/NamiEntitlementManager.d.ts +13 -0
  30. package/dist/src/NamiFlowManager.d.ts +11 -0
  31. package/dist/src/NamiPaywallManager.d.ts +30 -0
  32. package/dist/src/NamiPurchaseManager.d.ts +17 -0
  33. package/dist/src/transformers.d.ts +3 -0
  34. package/{src → dist/src}/types.d.ts +35 -6
  35. package/dist/src/version.d.ts +5 -0
  36. package/index.ts +0 -2
  37. package/ios/Nami.m +8 -88
  38. package/ios/Nami.swift +85 -0
  39. package/ios/NamiCampaignManagerBridge.m +3 -3
  40. package/ios/NamiCampaignManagerBridge.swift +49 -61
  41. package/ios/NamiCustomerManager.m +2 -2
  42. package/ios/NamiCustomerManager.swift +13 -3
  43. package/ios/NamiEntitlementManagerBridge.m +2 -3
  44. package/ios/NamiEntitlementManagerBridge.swift +48 -39
  45. package/ios/NamiFlowManagerBridge.m +2 -2
  46. package/ios/NamiFlowManagerBridge.swift +10 -6
  47. package/ios/NamiPaywallManagerBridge.m +3 -3
  48. package/ios/NamiPaywallManagerBridge.swift +16 -6
  49. package/ios/NamiPurchaseManagerBridge.m +3 -2
  50. package/ios/NamiPurchaseManagerBridge.swift +15 -10
  51. package/ios/RNNami-Bridging-Header.h +1 -3
  52. package/package.json +20 -8
  53. package/react-native-config.js +9 -0
  54. package/react-native-nami-sdk.podspec +11 -3
  55. package/scripts/generate-version.ts +18 -0
  56. package/specs/NativeNami.ts +16 -0
  57. package/specs/NativeNamiCampaignManager.ts +94 -0
  58. package/specs/NativeNamiCustomerManager.ts +37 -0
  59. package/specs/NativeNamiEntitlementManager.ts +54 -0
  60. package/specs/NativeNamiFlowManager.ts +12 -0
  61. package/specs/NativeNamiPaywallManager.ts +85 -0
  62. package/specs/NativeNamiPurchaseManager.ts +33 -0
  63. package/src/Nami.ts +28 -18
  64. package/src/NamiCampaignManager.ts +57 -53
  65. package/src/NamiCustomerManager.ts +55 -81
  66. package/src/NamiEntitlementManager.ts +49 -36
  67. package/src/NamiFlowManager.ts +35 -45
  68. package/src/NamiPaywallManager.ts +84 -139
  69. package/src/NamiPurchaseManager.ts +69 -70
  70. package/src/transformers.ts +21 -0
  71. package/src/types.ts +39 -7
  72. package/src/version.ts +5 -0
  73. package/tsconfig.json +24 -22
  74. package/.eslintignore +0 -3
  75. package/.eslintrc.js +0 -52
  76. package/.github/workflows/CI.yaml +0 -341
  77. package/.github/workflows/app_prod.yaml +0 -387
  78. package/.github/workflows/app_stg.yaml +0 -398
  79. package/.github/workflows/build.yml +0 -70
  80. package/.pre-commit-config.yaml +0 -24
  81. package/.prettierrc.js +0 -7
  82. package/android/src/main/java/com/nami/reactlibrary/Constants.kt +0 -3
  83. package/android/src/main/java/com/nami/reactlibrary/NamiBridgeModule.kt +0 -141
  84. package/android/src/main/java/com/nami/reactlibrary/NamiBridgePackage.java +0 -51
  85. package/android/src/main/java/com/nami/reactlibrary/NamiFlowManagerBridge.kt +0 -58
  86. package/android/src/main/java/com/nami/reactlibrary/NamiMLManagerBridgeModule.kt +0 -58
  87. package/android/src/main/java/com/nami/reactlibrary/NamiManagerBridge.kt +0 -26
  88. package/android/src/main/java/com/nami/reactlibrary/NamiPaywallManagerBridgeModule.kt +0 -258
  89. package/android/src/main/java/com/nami/reactlibrary/NamiPurchaseManagerBridge.kt +0 -108
  90. package/build-utils/get_version_code.py +0 -140
  91. package/build-utils/preflight.py +0 -46
  92. package/ios/NamiMLManagerBridge.m +0 -93
  93. package/ios/NamiManager.m +0 -18
  94. package/ios/NamiManager.swift +0 -30
  95. package/ios/RNNami.h +0 -10
  96. package/ios/RNNami.m +0 -13
  97. package/src/Nami.d.ts +0 -8
  98. package/src/NamiCampaignManager.d.ts +0 -18
  99. package/src/NamiEntitlementManager.d.ts +0 -15
  100. package/src/NamiFlowManager.d.ts +0 -32
  101. package/src/NamiMLManager.d.ts +0 -7
  102. package/src/NamiMLManager.ts +0 -13
  103. package/src/NamiManager.d.ts +0 -5
  104. package/src/NamiManager.ts +0 -14
  105. package/src/NamiPaywallManager.d.ts +0 -34
  106. package/src/NamiPurchaseManager.d.ts +0 -20
@@ -1,46 +0,0 @@
1
- import os
2
- import json
3
- import sys
4
- import re
5
- import subprocess
6
-
7
- # Regex to validate version numbers
8
- PROD_VERSION_RE = re.compile(r"^\d+\.\d+\.\d+$")
9
- PROD_VERSION_EXT_RE = re.compile(r"^\d+\.\d+\.\d+-\d$")
10
- PRERELEASE_VERSION_RE = re.compile(r"^\d+\.\d+\.\d+-(alpha|beta|rc)\.\d+$")
11
-
12
- early_access = str(os.getenv("EARLY_ACCESS"))
13
-
14
- # get the version out of source of truth
15
- with open("package.json", "r") as f:
16
- package = json.load(f)
17
- nami_sdk_version = package["version"]
18
-
19
- # Get git version
20
- git_long_hash = (
21
- subprocess.check_output(["git", "log", "-1", "--format=%H"]).decode("utf-8").strip()
22
- )
23
-
24
- # Check what kind of release this is and guard against non-conforming version numbers
25
- if PROD_VERSION_RE.match(nami_sdk_version) or PROD_VERSION_EXT_RE.match(nami_sdk_version):
26
- if early_access == "true":
27
- print(f"Early access value ('{early_access}') is not compatible with production version format '{nami_sdk_version}'")
28
- sys.exit(1)
29
- type_mods = ""
30
- elif PRERELEASE_VERSION_RE.match(nami_sdk_version):
31
- if early_access == "false":
32
- print(f"Early access value ('{early_access}') is not compatible with early access version format '{nami_sdk_version}'")
33
- sys.exit(1)
34
- type_mods = "--prerelease"
35
- else:
36
- print(f"SDK version '{nami_sdk_version}' does not conform to version spec")
37
- sys.exit(1)
38
-
39
- # generate a shell command to create a release later
40
- with open("gh-release-command.sh", "w") as f:
41
- f.write(
42
- f"gh release create --generate-notes --title v{nami_sdk_version} {type_mods} --target {git_long_hash} v{nami_sdk_version}"
43
- )
44
-
45
- # report our status
46
- print(f"Identified Version: {nami_sdk_version}")
@@ -1,93 +0,0 @@
1
- //
2
- // NamiMLManagerBridge.m
3
- // RNNami
4
- //
5
- // Copyright © 2020-2023 Nami ML Inc. All rights reserved.
6
- //
7
- #import <Foundation/Foundation.h>
8
- #import <NamiApple/NamiApple.h>
9
-
10
- #import <React/RCTBridgeModule.h>
11
- #import <React/RCTEventEmitter.h>
12
-
13
- #import "React/RCTViewManager.h"
14
-
15
-
16
-
17
- @interface NamiMLManagerBridge : NSObject <RCTBridgeModule>
18
- @end
19
- @implementation NamiMLManagerBridge (RCTExternModule)
20
-
21
-
22
- RCT_EXTERN_METHOD(enterCoreContentWithLabel:(NSString)label)
23
- - (void)enterCoreContentWithLabel: (NSString *)label {
24
- [NamiMLManager enterCoreContentWithLabel:label];
25
- }
26
-
27
- RCT_EXTERN_METHOD(enterCoreContentWithLabels:(NSArray) label)
28
- - (void)enterCoreContentWithLabels: (NSArray *)labels {
29
- NSMutableArray <NSString *>*sendLabels = [NSMutableArray array];
30
- for (NSObject *labelItem in labels) {
31
- if ([labelItem isKindOfClass:[NSString class]]) {
32
- [sendLabels addObject:(NSString *)labelItem];
33
- } else if ([labelItem respondsToSelector:@selector(stringValue)]) {
34
- [sendLabels addObject:(NSString *)[labelItem performSelector:@selector(stringValue)]];
35
- }
36
- }
37
- [NamiMLManager enterCoreContentWithLabels: sendLabels];
38
- }
39
-
40
- RCT_EXTERN_METHOD(exitCoreContentWithLabel:(NSString)label)
41
- - (void)exitCoreContentWithLabel: (NSString *)label {
42
- [NamiMLManager exitCoreContentWithLabel:label];
43
- }
44
-
45
- RCT_EXTERN_METHOD(exitCoreContentWithLabels:(NSArray) label)
46
- - (void)exitCoreContentWithLabels: (NSArray *)labels {
47
- NSMutableArray <NSString *>*sendLabels = [NSMutableArray array];
48
- for (NSObject *labelItem in labels) {
49
- if ([labelItem isKindOfClass:[NSString class]]) {
50
- [sendLabels addObject:(NSString *)labelItem];
51
- } else if ([labelItem respondsToSelector:@selector(stringValue)]) {
52
- [sendLabels addObject:(NSString *)[labelItem performSelector:@selector(stringValue)]];
53
- }
54
- }
55
- [NamiMLManager exitCoreContentWithLabels: sendLabels];
56
- }
57
-
58
- RCT_EXTERN_METHOD(coreActionWithLabel:(NSString)label)
59
- - (void)coreActionWithLabel: (NSString *)label {
60
- [NamiMLManager coreActionWithLabel:label];
61
- }
62
-
63
- RCT_EXTERN_METHOD(coreActionWithLabels:(NSArray) label)
64
- - (void)coreActionWithLabels: (NSArray *)labels {
65
- NSMutableArray <NSString *>*sendLabels = [NSMutableArray array];
66
- for (NSObject *labelItem in labels) {
67
- if ([labelItem isKindOfClass:[NSString class]]) {
68
- [sendLabels addObject:(NSString *)labelItem];
69
- } else if ([labelItem respondsToSelector:@selector(stringValue)]) {
70
- [sendLabels addObject:(NSString *)[labelItem performSelector:@selector(stringValue)]];
71
- }
72
- }
73
- // TODO: Add core action with labels to Nami SDK
74
- for (NSString *label in sendLabels) {
75
- [NamiMLManager coreActionWithLabel:label];
76
- }
77
- }
78
-
79
- @end
80
-
81
-
82
- @implementation NamiMLManagerBridge
83
- RCT_EXPORT_MODULE_NO_LOAD(NamiMLManagerBridge, NamiMLManagerBridge)
84
-
85
- - (dispatch_queue_t)methodQueue
86
- {
87
- return dispatch_get_main_queue();
88
- }
89
-
90
- + (BOOL)requiresMainQueueSetup {
91
- return YES;
92
- }
93
- @end
package/ios/NamiManager.m DELETED
@@ -1,18 +0,0 @@
1
- //
2
- // NamiManager.m
3
- // RNNami
4
- //
5
- // Copyright © 2020-2023 Nami ML Inc. All rights reserved.
6
- //
7
-
8
- #import <React/RCTBridgeModule.h>
9
-
10
- @interface RCT_EXTERN_MODULE(RNNamiManager, NSObject)
11
-
12
- RCT_EXTERN_METHOD(sdkConfigured:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
13
-
14
- + (BOOL)requiresMainQueueSetup {
15
- return YES;
16
- }
17
-
18
- @end
@@ -1,30 +0,0 @@
1
- //
2
- // NamiManager.swift
3
- // RNNami
4
- //
5
- // Copyright © 2023 Nami ML INc.. All rights reserved.
6
- //
7
-
8
- import Foundation
9
- import NamiApple
10
- import React
11
-
12
- @objc(RNNamiManager)
13
- class RNNamiManager: RCTEventEmitter {
14
- public static var shared: RNNamiManager?
15
-
16
- override init() {
17
- super.init()
18
- RNNamiManager.shared = self
19
- }
20
-
21
- override func supportedEvents() -> [String]! {
22
- return []
23
- }
24
-
25
- @objc(sdkConfigured:rejecter:)
26
- func sdkConfigured(resolve: @escaping RCTPromiseResolveBlock, reject _: @escaping RCTPromiseRejectBlock) {
27
- let sdkConfigured = Nami.sdkConfigured()
28
- resolve(sdkConfigured)
29
- }
30
- }
package/ios/RNNami.h DELETED
@@ -1,10 +0,0 @@
1
-
2
- #if __has_include("RCTBridgeModule.h")
3
- #import "RCTBridgeModule.h"
4
- #else
5
- #import <React/RCTBridgeModule.h>
6
- #endif
7
-
8
- @interface RNNami : NSObject <RCTBridgeModule>
9
-
10
- @end
package/ios/RNNami.m DELETED
@@ -1,13 +0,0 @@
1
-
2
- #import "RNNami.h"
3
- #import <NamiApple/NamiApple.h>
4
-
5
- @implementation RNNami
6
-
7
- - (dispatch_queue_t)methodQueue
8
- {
9
- return dispatch_get_main_queue();
10
- }
11
- RCT_EXPORT_MODULE()
12
-
13
- @end
package/src/Nami.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { NamiConfiguration } from './types';
2
- export declare const NamiBridge: any, NamiManager: any;
3
- export interface INami {
4
- configure: (config: NamiConfiguration) => Promise<{
5
- success: boolean;
6
- }>;
7
- }
8
- export declare const Nami: INami;
@@ -1,18 +0,0 @@
1
- import { NativeEventEmitter, EmitterSubscription } from 'react-native';
2
- import { LaunchCampaignError, NamiCampaign, NamiPaywallActionHandler, PaywallLaunchContext } from './types';
3
- export declare const RNNamiCampaignManager: any;
4
- export declare enum NamiCampaignManagerEvents {
5
- ResultCampaign = "ResultCampaign",
6
- AvailableCampaignsChanged = "AvailableCampaignsChanged"
7
- }
8
- interface ICampaignManager {
9
- launchSubscription: EmitterSubscription | undefined;
10
- emitter: NativeEventEmitter;
11
- allCampaigns: () => Promise<Array<NamiCampaign>>;
12
- isCampaignAvailable(campaignSource: string | null): Promise<boolean>;
13
- launch: (label?: string, withUrl?: string, context?: PaywallLaunchContext, resultCallback?: (success: boolean, error?: LaunchCampaignError) => void, actionCallback?: NamiPaywallActionHandler) => void;
14
- refresh: () => Promise<Array<NamiCampaign>>;
15
- registerAvailableCampaignsHandler: (callback: (availableCampaigns: NamiCampaign[]) => void) => EmitterSubscription['remove'];
16
- }
17
- export declare const NamiCampaignManager: ICampaignManager;
18
- export {};
@@ -1,15 +0,0 @@
1
- import { NativeEventEmitter, EmitterSubscription } from 'react-native';
2
- import { NamiEntitlement } from './types';
3
- export declare const RNNamiEntitlementManager: any;
4
- export declare enum NamiEntitlementManagerEvents {
5
- EntitlementsChanged = "EntitlementsChanged"
6
- }
7
- export interface INamiEntitlementManager {
8
- emitter: NativeEventEmitter;
9
- active: () => Promise<Array<NamiEntitlement>>;
10
- isEntitlementActive: (label?: string) => boolean;
11
- refresh: (resultCallback?: (entitlements?: NamiEntitlement[]) => void) => void;
12
- registerActiveEntitlementsHandler: (callback: (activeEntitlements: NamiEntitlement[]) => void) => EmitterSubscription['remove'];
13
- clearProvisionalEntitlementGrants: () => void;
14
- }
15
- export declare const NamiEntitlementManager: INamiEntitlementManager;
@@ -1,32 +0,0 @@
1
- export declare enum NamiFlowManagerEvents {
2
- RegisterStepHandoff = "RegisterStepHandoff"
3
- }
4
-
5
- export interface INamiFlowManager {
6
- /**
7
- * Registers a callback to receive handoff step events.
8
- * @param callback - Called with handoffTag and optional handoffData object.
9
- * @returns Unsubscribe function.
10
- */
11
- registerStepHandoff: (
12
- callback: (handoffTag: string, handoffData?: { [key: string]: any }) => void
13
- ) => () => void;
14
-
15
- /**
16
- * Resumes the flow manager.
17
- */
18
- resume: () => void;
19
-
20
- /**
21
- * Registers an event handler for custom payload events.
22
- * @param handler - Called with the payload object sent from native.
23
- */
24
- registerEventHandler: (
25
- handler: (payload: { [key: string]: any }) => void
26
- ) => void;
27
- }
28
-
29
- /**
30
- * Nami Flow Manager instance for interacting with the native SDK.
31
- */
32
- export declare const NamiFlowManager: INamiFlowManager;
@@ -1,7 +0,0 @@
1
- export declare const NamiMLManagerBridge: any;
2
- export interface INamiMLManager {
3
- coreAction: (label: string) => void;
4
- enterCoreContent: (label: string | string[]) => void;
5
- exitCoreContent: (label: string | string[]) => void;
6
- }
7
- export declare const NamiMLManager: INamiMLManager;
@@ -1,13 +0,0 @@
1
- import { NativeModules } from 'react-native';
2
-
3
- export const { NamiMLManagerBridge } = NativeModules;
4
-
5
- export interface INamiMLManager {
6
- coreAction: (label: string) => void;
7
- enterCoreContent: (label: string | string[]) => void;
8
- exitCoreContent: (label: string | string[]) => void;
9
- }
10
-
11
- export const NamiMLManager: INamiMLManager = {
12
- ...NamiMLManagerBridge,
13
- };
@@ -1,5 +0,0 @@
1
- export declare const RNNamiManager: any;
2
- export interface INamiManager {
3
- sdkConfigured: () => Promise<boolean>;
4
- }
5
- export declare const NamiManager: INamiManager;
@@ -1,14 +0,0 @@
1
- import { NativeModules } from 'react-native';
2
-
3
- export const { RNNamiManager } = NativeModules;
4
-
5
- export interface INamiManager {
6
- sdkConfigured: () => Promise<boolean>;
7
- }
8
-
9
- export const NamiManager: INamiManager = {
10
- ...RNNamiManager,
11
- sdkConfigured: () => {
12
- return RNNamiManager.sdkConfigured();
13
- },
14
- };
@@ -1,34 +0,0 @@
1
- import { NativeEventEmitter, EmitterSubscription } from 'react-native';
2
- import { NamiPurchaseSuccessAmazon, NamiPurchaseSuccessApple, NamiPurchaseSuccessGooglePlay, NamiSKU } from './types';
3
- export declare enum NamiPaywallManagerEvents {
4
- RegisterBuySKU = "RegisterBuySKU",
5
- PaywallCloseRequested = "PaywallCloseRequested",
6
- PaywallSignInRequested = "PaywallSignInRequested",
7
- PaywallRestoreRequested = "PaywallRestoreRequested",
8
- PaywallDeeplinkAction = "PaywallDeeplinkAction"
9
- }
10
- export declare enum ServicesEnum {
11
- Amazon = "Amazon",
12
- GooglePlay = "GooglePlay"
13
- }
14
- export interface INamiPaywallManager {
15
- paywallEmitter: NativeEventEmitter;
16
- buySkuCompleteApple: (purchaseSuccess: NamiPurchaseSuccessApple) => void;
17
- buySkuCompleteAmazon: (purchaseSuccess: NamiPurchaseSuccessAmazon) => void;
18
- buySkuCompleteGooglePlay: (purchaseSuccess: NamiPurchaseSuccessGooglePlay) => void;
19
- buySkuCancel: () => void;
20
- registerBuySkuHandler: (callback: (sku: NamiSKU) => void) => EmitterSubscription['remove'];
21
- registerCloseHandler: (callback: () => void) => EmitterSubscription['remove'];
22
- registerSignInHandler: (callback: () => void) => EmitterSubscription['remove'];
23
- registerRestoreHandler: (callback: () => void) => EmitterSubscription['remove'];
24
- registerDeeplinkActionHandler: (callback: (url: string) => void) => EmitterSubscription['remove'];
25
- dismiss: () => Promise<boolean>;
26
- show: () => void;
27
- hide: () => void;
28
- isHidden: () => Promise<boolean>;
29
- isPaywallOpen: () => Promise<boolean>;
30
- setProductDetails: (productDetails: string, allowOffers: boolean) => void;
31
- setAppSuppliedVideoDetails: (url: string, name?: string) => void;
32
- allowUserInteraction: (allowed: boolean) => void;
33
- }
34
- export declare const NamiPaywallManager: INamiPaywallManager;
@@ -1,20 +0,0 @@
1
- import { NativeEventEmitter } from 'react-native';
2
- import { EmitterSubscription } from 'react-native';
3
- import { NamiPurchase, NamiPurchasesState, NamiRestorePurchasesState } from './types';
4
- export declare const NamiPurchaseManagerBridge: any, RNNamiPurchaseManager: any;
5
- export declare enum NamiPurchaseManagerEvents {
6
- PurchasesChanged = "PurchasesChanged",
7
- RestorePurchasesStateChanged = "RestorePurchasesStateChanged"
8
- }
9
- export interface INamiPurchaseManager {
10
- emitter: NativeEventEmitter;
11
- allPurchases: () => NamiPurchase[];
12
- anySkuPurchased: (skuIds: string[]) => boolean;
13
- consumePurchasedSku: (skuId: string) => void;
14
- presentCodeRedemptionSheet: () => void;
15
- restorePurchases: (callback: (purchaseState: NamiPurchasesState, purchases: NamiPurchase[], error: string) => void) => EmitterSubscription['remove'];
16
- skuPurchased: (skuId: string) => boolean;
17
- registerPurchasesChangedHandler: (callback: (purchaseState: NamiPurchasesState, purchases: NamiPurchase[], error: string) => void) => EmitterSubscription['remove'];
18
- registerRestorePurchasesHandler: (callback: (state: NamiRestorePurchasesState, newPurchases: NamiPurchase[], oldPurchases: NamiPurchase[]) => void) => EmitterSubscription['remove'];
19
- }
20
- export declare const NamiPurchaseManager: INamiPurchaseManager;